- update taobao

master
李光春 2 years ago
parent e8245ea687
commit 0946817c78

@ -2,7 +2,7 @@ package sendcloud
import "go.dtapp.net/library/utils/gorequest"
func (c *Client) request(url string, params map[string]interface{}, method string) (resp gorequest.Response, err error) {
func (c *Client) request(url string, params map[string]interface{}, method string) (gorequest.Response, error) {
// 公共参数
//params["userid"] = c.userId
//params["pwd"] = c.pwd

@ -1,120 +0,0 @@
package taobao
import (
"fmt"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"go.dtapp.net/library/utils/gostring"
"gorm.io/gorm"
"regexp"
"strconv"
)
// App 公共请求参数
type App struct {
appKey string // 应用Key
appSecret string // 密钥
adzoneId int64 // mm_xxx_xxx_xxx的第三位
pgsql *gorm.DB // pgsql数据库
client *gorequest.App // 请求客户端
log *golog.Api // 日志服务
logTableName string // 日志表名
logStatus bool // 日志状态
}
func NewApp(appKey string, appSecret string, adzoneId int64, pgsql *gorm.DB) *App {
app := &App{appKey: appKey, appSecret: appSecret, adzoneId: adzoneId}
app.client = gorequest.NewHttp()
app.client.Uri = "https://eco.taobao.com/router/rest"
if pgsql != nil {
app.pgsql = pgsql
app.logStatus = true
app.logTableName = "taobao"
app.log = golog.NewApi(&golog.ApiConfig{
Db: pgsql,
TableName: app.logTableName,
})
}
return app
}
type ErrResp struct {
ErrorResponse struct {
Code int `json:"code"`
Msg string `json:"msg"`
SubCode string `json:"sub_code"`
SubMsg string `json:"sub_msg"`
RequestId string `json:"request_id"`
} `json:"error_response"`
}
func (app *App) request(params map[string]interface{}) (resp gorequest.Response, err error) {
// 签名
app.Sign(params)
// 创建请求
client := app.client
// 设置参数
client.SetParams(params)
// 发起请求
request, err := client.Get()
if err != nil {
return gorequest.Response{}, err
}
// 日志
if app.logStatus == true {
go app.postgresqlLog(gostring.ToString(params["method"]), request)
}
return request, err
}
func (app *App) ZkFinalPriceParseInt64(ZkFinalPrice string) int64 {
parseInt, err := strconv.ParseInt(ZkFinalPrice, 10, 64)
if err != nil {
re := regexp.MustCompile("[0-9]+")
SalesTipMap := re.FindAllString(ZkFinalPrice, -1)
if len(SalesTipMap) == 2 {
return gostring.ToInt64(fmt.Sprintf("%s%s", SalesTipMap[0], SalesTipMap[1])) * 10
} else {
return gostring.ToInt64(SalesTipMap[0]) * 100
}
} else {
return parseInt * 100
}
}
func (app *App) CommissionRateParseInt64(CommissionRate string) int64 {
parseInt, err := strconv.ParseInt(CommissionRate, 10, 64)
if err != nil {
re := regexp.MustCompile("[0-9]+")
SalesTipMap := re.FindAllString(CommissionRate, -1)
if len(SalesTipMap) == 2 {
return gostring.ToInt64(fmt.Sprintf("%s%s", SalesTipMap[0], SalesTipMap[1]))
} else {
return gostring.ToInt64(SalesTipMap[0])
}
} else {
return parseInt
}
}
func (app *App) CouponAmountToInt64(CouponAmount int64) int64 {
return CouponAmount * 100
}
func (app *App) CommissionIntegralToInt64(GoodsPrice, CouponProportion int64) int64 {
return (GoodsPrice * CouponProportion) / 100
}
func (app *App) GetAppKey() string {
return app.appKey
}
func (app *App) GetAdzoneId() int64 {
return app.adzoneId
}

@ -0,0 +1,94 @@
package taobao
import (
"fmt"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"go.dtapp.net/library/utils/gostring"
"gorm.io/gorm"
"regexp"
"strconv"
)
type ConfigClient struct {
AppKey string // 应用Key
AppSecret string // 密钥
AdzoneId int64 // mm_xxx_xxx_xxx的第三位
PgsqlDb *gorm.DB // pgsql数据库
}
type Client struct {
client *gorequest.App // 请求客户端
log *golog.ApiClient // 日志服务
logStatus bool // 日志状态
config *ConfigClient // 配置
}
func NewClient(config *ConfigClient) (*Client, error) {
var err error
c := &Client{config: config}
c.client = gorequest.NewHttp()
c.client.Uri = apiUrl
if c.config.PgsqlDb != nil {
c.logStatus = true
c.log, err = golog.NewApiClient(&golog.ConfigApiClient{
Db: c.config.PgsqlDb,
TableName: logTable,
})
if err != nil {
return nil, err
}
}
return c, nil
}
type ErrResp struct {
ErrorResponse struct {
Code int `json:"code"`
Msg string `json:"msg"`
SubCode string `json:"sub_code"`
SubMsg string `json:"sub_msg"`
RequestId string `json:"request_id"`
} `json:"error_response"`
}
func (c *Client) ZkFinalPriceParseInt64(ZkFinalPrice string) int64 {
parseInt, err := strconv.ParseInt(ZkFinalPrice, 10, 64)
if err != nil {
re := regexp.MustCompile("[0-9]+")
SalesTipMap := re.FindAllString(ZkFinalPrice, -1)
if len(SalesTipMap) == 2 {
return gostring.ToInt64(fmt.Sprintf("%s%s", SalesTipMap[0], SalesTipMap[1])) * 10
} else {
return gostring.ToInt64(SalesTipMap[0]) * 100
}
} else {
return parseInt * 100
}
}
func (c *Client) CommissionRateParseInt64(CommissionRate string) int64 {
parseInt, err := strconv.ParseInt(CommissionRate, 10, 64)
if err != nil {
re := regexp.MustCompile("[0-9]+")
SalesTipMap := re.FindAllString(CommissionRate, -1)
if len(SalesTipMap) == 2 {
return gostring.ToInt64(fmt.Sprintf("%s%s", SalesTipMap[0], SalesTipMap[1]))
} else {
return gostring.ToInt64(SalesTipMap[0])
}
} else {
return parseInt
}
}
func (c *Client) CouponAmountToInt64(CouponAmount int64) int64 {
return CouponAmount * 100
}
func (c *Client) CommissionIntegralToInt64(GoodsPrice, CouponProportion int64) int64 {
return (GoodsPrice * CouponProportion) / 100
}

@ -0,0 +1,9 @@
package taobao
const (
apiUrl = "https://eco.taobao.com/router/rest"
)
const (
logTable = "taobao"
)

@ -0,0 +1,13 @@
package taobao
func (c *Client) GetAppKey() string {
return c.config.AppKey
}
func (c *Client) GetAppSecret() string {
return c.config.AppSecret
}
func (c *Client) GetAdzoneId() int64 {
return c.config.AdzoneId
}

@ -32,19 +32,19 @@ func NewParamsWithType(_method string, params ...Params) Params {
return p
}
func (app *App) Sign(p Params) {
p["app_key"] = app.appKey
func (c *Client) Sign(p Params) {
p["app_key"] = c.GetAppKey()
// 排序所有的 key
var keys []string
for key := range p {
keys = append(keys, key)
}
sort.Strings(keys)
signStr := app.appSecret
signStr := c.GetAppSecret()
for _, key := range keys {
signStr += key + getString(p[key])
}
signStr += app.appSecret
signStr += c.GetAppSecret()
p["sign"] = createSign(signStr)
}

@ -8,15 +8,15 @@ import (
)
// 记录日志
func (app *App) postgresqlLog(api string, request gorequest.Response) {
app.log.Record(golog.ApiPostgresqlLog{
func (c *Client) postgresqlLog(api string, request gorequest.Response) {
c.log.Record(golog.ApiPostgresqlLog{
RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间
RequestUri: request.RequestUri, //【请求】链接
RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接
RequestApi: api, //【请求】接口
RequestMethod: request.RequestMethod, //【请求】方式
RequestParams: datatypes.JSON(gojson.JsonEncodeNoError(request.RequestParams)), //【请求】参数
RequestHeader: datatypes.JSON(gojson.JsonEncodeNoError(request.RequestHeader)), //【返回】头部
RequestHeader: datatypes.JSON(gojson.JsonEncodeNoError(request.RequestHeader)), //【请求】头部
ResponseHeader: datatypes.JSON(gojson.JsonEncodeNoError(request.ResponseHeader)), //【返回】头部
ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码
ResponseBody: request.ResponseBody, //【返回】内容

@ -0,0 +1,31 @@
package taobao
import (
"go.dtapp.net/library/utils/gorequest"
"go.dtapp.net/library/utils/gostring"
)
func (c *Client) request(params map[string]interface{}) (gorequest.Response, error) {
// 签名
c.Sign(params)
// 创建请求
client := c.client
// 设置参数
client.SetParams(params)
// 发起请求
request, err := client.Get()
if err != nil {
return gorequest.Response{}, err
}
// 日志
if c.logStatus == true {
go c.postgresqlLog(gostring.ToString(params["method"]), request)
}
return request, err
}

@ -22,19 +22,19 @@ type TbkDgNewuserOrderGetResult struct {
Err error // 错误
}
func NewTbkDgNewuserOrderGetResult(result TbkDgNewuserOrderGetResponse, body []byte, http gorequest.Response, err error) *TbkDgNewuserOrderGetResult {
func newTbkDgNewuserOrderGetResult(result TbkDgNewuserOrderGetResponse, body []byte, http gorequest.Response, err error) *TbkDgNewuserOrderGetResult {
return &TbkDgNewuserOrderGetResult{Result: result, Body: body, Http: http, Err: err}
}
// TbkDgNewuserOrderGet 淘宝客-推广者-新用户订单明细查询
// https://open.taobao.com/api.htm?docId=33892&docType=2
func (app *App) TbkDgNewuserOrderGet(notMustParams ...Params) *TbkDgNewuserOrderGetResult {
func (c *Client) TbkDgNewuserOrderGet(notMustParams ...Params) *TbkDgNewuserOrderGetResult {
// 参数
params := NewParamsWithType("taobao.tbk.dg.newuser.order.get", notMustParams...)
// 请求
request, err := app.request(params)
request, err := c.request(params)
// 定义
var response TbkDgNewuserOrderGetResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewTbkDgNewuserOrderGetResult(response, request.ResponseBody, request, err)
return newTbkDgNewuserOrderGetResult(response, request.ResponseBody, request, err)
}

@ -76,19 +76,19 @@ type TbkOrderDetailsGetResult struct {
Err error // 错误
}
func NewTbkOrderDetailsGetResult(result TbkOrderDetailsGetResponse, body []byte, http gorequest.Response, err error) *TbkOrderDetailsGetResult {
func newTbkOrderDetailsGetResult(result TbkOrderDetailsGetResponse, body []byte, http gorequest.Response, err error) *TbkOrderDetailsGetResult {
return &TbkOrderDetailsGetResult{Result: result, Body: body, Http: http, Err: err}
}
// TbkOrderDetailsGet 淘宝客-推广者-所有订单查询
// https://open.taobao.com/api.htm?docId=43328&docType=2&scopeId=16175
func (app *App) TbkOrderDetailsGet(notMustParams ...Params) *TbkOrderDetailsGetResult {
func (c *Client) TbkOrderDetailsGet(notMustParams ...Params) *TbkOrderDetailsGetResult {
// 参数
params := NewParamsWithType("taobao.tbk.order.details.get", notMustParams...)
// 请求
request, err := app.request(params)
request, err := c.request(params)
// 定义
var response TbkOrderDetailsGetResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewTbkOrderDetailsGetResult(response, request.ResponseBody, request, err)
return newTbkOrderDetailsGetResult(response, request.ResponseBody, request, err)
}

@ -28,20 +28,20 @@ type TbkActivityInfoGetResult struct {
Err error // 错误
}
func NewTbkActivityInfoGetResult(result TbkActivityInfoGetResponse, body []byte, http gorequest.Response, err error) *TbkActivityInfoGetResult {
func newTbkActivityInfoGetResult(result TbkActivityInfoGetResponse, body []byte, http gorequest.Response, err error) *TbkActivityInfoGetResult {
return &TbkActivityInfoGetResult{Result: result, Body: body, Http: http, Err: err}
}
// TbkActivityInfoGet 淘宝客-推广者-官方活动转链
// https://open.taobao.com/api.htm?spm=a219a.7386797.0.0.5a83669a7rURsF&source=search&docId=48340&docType=2
func (app *App) TbkActivityInfoGet(notMustParams ...Params) *TbkActivityInfoGetResult {
func (c *Client) TbkActivityInfoGet(notMustParams ...Params) *TbkActivityInfoGetResult {
// 参数
params := NewParamsWithType("taobao.tbk.activity.info.get", notMustParams...)
params.Set("adzone_id", app.adzoneId)
params.Set("adzone_id", c.GetAdzoneId())
// 请求
request, err := app.request(params)
request, err := c.request(params)
// 定义
var response TbkActivityInfoGetResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewTbkActivityInfoGetResult(response, request.ResponseBody, request, err)
return newTbkActivityInfoGetResult(response, request.ResponseBody, request, err)
}

@ -52,19 +52,19 @@ type TbkCouponGetResult struct {
Err error // 错误
}
func NewTbkCouponGetResult(result TbkCouponGetResponse, body []byte, http gorequest.Response, err error) *TbkCouponGetResult {
func newTbkCouponGetResult(result TbkCouponGetResponse, body []byte, http gorequest.Response, err error) *TbkCouponGetResult {
return &TbkCouponGetResult{Result: result, Body: body, Http: http, Err: err}
}
// TbkCouponGet 淘宝客-公用-阿里妈妈推广券详情查询
// https://open.taobao.com/api.htm?docId=31106&docType=2
func (app *App) TbkCouponGet(notMustParams ...Params) *TbkCouponGetResult {
func (c *Client) TbkCouponGet(notMustParams ...Params) *TbkCouponGetResult {
// 参数
params := NewParamsWithType("taobao.tbk.coupon.get", notMustParams...)
// 请求
request, err := app.request(params)
request, err := c.request(params)
// 定义
var response TbkCouponGetResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewTbkCouponGetResult(response, request.ResponseBody, request, err)
return newTbkCouponGetResult(response, request.ResponseBody, request, err)
}

@ -71,20 +71,20 @@ type TbkDgMaterialOptionalResult struct {
Err error // 错误
}
func NewTbkDgMaterialOptionalResult(result TbkDgMaterialOptionalResponse, body []byte, http gorequest.Response, err error) *TbkDgMaterialOptionalResult {
func newTbkDgMaterialOptionalResult(result TbkDgMaterialOptionalResponse, body []byte, http gorequest.Response, err error) *TbkDgMaterialOptionalResult {
return &TbkDgMaterialOptionalResult{Result: result, Body: body, Http: http, Err: err}
}
// TbkDgMaterialOptional 淘宝客-推广者-物料搜索
// https://open.taobao.com/api.htm?docId=35896&docType=2&source=search
func (app *App) TbkDgMaterialOptional(notMustParams ...Params) *TbkDgMaterialOptionalResult {
func (c *Client) TbkDgMaterialOptional(notMustParams ...Params) *TbkDgMaterialOptionalResult {
// 参数
params := NewParamsWithType("taobao.tbk.dg.material.optional", notMustParams...)
params.Set("adzone_id", app.adzoneId)
params.Set("adzone_id", c.GetAdzoneId())
// 请求
request, err := app.request(params)
request, err := c.request(params)
// 定义
var response TbkDgMaterialOptionalResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewTbkDgMaterialOptionalResult(response, request.ResponseBody, request, err)
return newTbkDgMaterialOptionalResult(response, request.ResponseBody, request, err)
}

@ -55,20 +55,20 @@ type TbkDgOptimusMaterialResult struct {
Err error // 错误
}
func NewTbkDgOptimusMaterialResult(result TbkDgOptimusMaterialResponse, body []byte, http gorequest.Response, err error) *TbkDgOptimusMaterialResult {
func newTbkDgOptimusMaterialResult(result TbkDgOptimusMaterialResponse, body []byte, http gorequest.Response, err error) *TbkDgOptimusMaterialResult {
return &TbkDgOptimusMaterialResult{Result: result, Body: body, Http: http, Err: err}
}
// TbkDgOptimusMaterial 淘宝客-推广者-物料精选
// https://open.taobao.com/api.htm?spm=a219a.7386797.0.0.5d67669aIeQeVI&source=search&docId=33947&docType=2
func (app *App) TbkDgOptimusMaterial(notMustParams ...Params) *TbkDgOptimusMaterialResult {
func (c *Client) TbkDgOptimusMaterial(notMustParams ...Params) *TbkDgOptimusMaterialResult {
// 参数
params := NewParamsWithType("taobao.tbk.dg.optimus.material", notMustParams...)
params.Set("adzone_id", app.adzoneId)
params.Set("adzone_id", c.GetAdzoneId())
// 请求
request, err := app.request(params)
request, err := c.request(params)
// 定义
var response TbkDgOptimusMaterialResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewTbkDgOptimusMaterialResult(response, request.ResponseBody, request, err)
return newTbkDgOptimusMaterialResult(response, request.ResponseBody, request, err)
}

@ -52,19 +52,19 @@ type TbkItemInfoGetResult struct {
Err error // 错误
}
func NewTbkItemInfoGetResult(result TbkItemInfoGetResponse, body []byte, http gorequest.Response, err error) *TbkItemInfoGetResult {
func newTbkItemInfoGetResult(result TbkItemInfoGetResponse, body []byte, http gorequest.Response, err error) *TbkItemInfoGetResult {
return &TbkItemInfoGetResult{Result: result, Body: body, Http: http, Err: err}
}
// TbkItemInfoGet 淘宝客-公用-淘宝客商品详情查询(简版)
// https://open.taobao.com/api.htm?docId=24518&docType=2&source=search
func (app *App) TbkItemInfoGet(notMustParams ...Params) *TbkItemInfoGetResult {
func (c *Client) TbkItemInfoGet(notMustParams ...Params) *TbkItemInfoGetResult {
// 参数
params := NewParamsWithType("taobao.tbk.item.info.get", notMustParams...)
// 请求
request, err := app.request(params)
request, err := c.request(params)
// 定义
var response TbkItemInfoGetResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewTbkItemInfoGetResult(response, request.ResponseBody, request, err)
return newTbkItemInfoGetResult(response, request.ResponseBody, request, err)
}

@ -29,19 +29,19 @@ type TbkShopGetResult struct {
Err error // 错误
}
func NewTbkShopGetResult(result TbkShopGetResponse, body []byte, http gorequest.Response, err error) *TbkShopGetResult {
func newTbkShopGetResult(result TbkShopGetResponse, body []byte, http gorequest.Response, err error) *TbkShopGetResult {
return &TbkShopGetResult{Result: result, Body: body, Http: http, Err: err}
}
// TbkShopGet 淘宝客-推广者-店铺搜索
// https://open.taobao.com/api.htm?docId=24521&docType=2
func (app *App) TbkShopGet(notMustParams ...Params) *TbkShopGetResult {
func (c *Client) TbkShopGet(notMustParams ...Params) *TbkShopGetResult {
// 参数
params := NewParamsWithType("taobao.tbk.shop.get", notMustParams...)
// 请求
request, err := app.request(params)
request, err := c.request(params)
// 定义
var response TbkShopGetResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewTbkShopGetResult(response, request.ResponseBody, request, err)
return newTbkShopGetResult(response, request.ResponseBody, request, err)
}

@ -27,19 +27,19 @@ type TbkShopRecommendGetResult struct {
Err error // 错误
}
func NewTbkShopRecommendGetResult(result TbkShopRecommendGetResponse, body []byte, http gorequest.Response, err error) *TbkShopRecommendGetResult {
func newTbkShopRecommendGetResult(result TbkShopRecommendGetResponse, body []byte, http gorequest.Response, err error) *TbkShopRecommendGetResult {
return &TbkShopRecommendGetResult{Result: result, Body: body, Http: http, Err: err}
}
// TbkShopRecommendGet 淘宝客-公用-店铺关联推荐
// https://open.taobao.com/api.htm?docId=24522&docType=2
func (app *App) TbkShopRecommendGet(notMustParams ...Params) *TbkShopRecommendGetResult {
func (c *Client) TbkShopRecommendGet(notMustParams ...Params) *TbkShopRecommendGetResult {
// 参数
params := NewParamsWithType("taobao.tbk.shop.recommend.get", notMustParams...)
// 请求
request, err := app.request(params)
request, err := c.request(params)
// 定义
var response TbkShopRecommendGetResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewTbkShopRecommendGetResult(response, request.ResponseBody, request, err)
return newTbkShopRecommendGetResult(response, request.ResponseBody, request, err)
}

@ -25,19 +25,19 @@ type TbkSpreadGetResult struct {
Err error // 错误
}
func NewTbkSpreadGetResult(result TbkSpreadGetResponse, body []byte, http gorequest.Response, err error) *TbkSpreadGetResult {
func newTbkSpreadGetResult(result TbkSpreadGetResponse, body []byte, http gorequest.Response, err error) *TbkSpreadGetResult {
return &TbkSpreadGetResult{Result: result, Body: body, Http: http, Err: err}
}
// TbkSpreadGet 淘宝客-公用-长链转短链
// https://open.taobao.com/api.htm?docId=27832&docType=2&source=search
func (app *App) TbkSpreadGet(notMustParams ...Params) *TbkSpreadGetResult {
func (c *Client) TbkSpreadGet(notMustParams ...Params) *TbkSpreadGetResult {
// 参数
params := NewParamsWithType("taobao.tbk.spread.get", notMustParams...)
// 请求
request, err := app.request(params)
request, err := c.request(params)
// 定义
var response TbkSpreadGetResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewTbkSpreadGetResult(response, request.ResponseBody, request, err)
return newTbkSpreadGetResult(response, request.ResponseBody, request, err)
}

@ -22,19 +22,19 @@ type TbkTPwdCreateResult struct {
Err error // 错误
}
func NewTbkTPwdCreateResult(result TbkTPwdCreateResponse, body []byte, http gorequest.Response, err error) *TbkTPwdCreateResult {
func newTbkTPwdCreateResult(result TbkTPwdCreateResponse, body []byte, http gorequest.Response, err error) *TbkTPwdCreateResult {
return &TbkTPwdCreateResult{Result: result, Body: body, Http: http, Err: err}
}
// TbkTPwdCreate 淘宝客-公用-淘口令生成
// https://open.taobao.com/api.htm?docId=31127&docType=2&source=search
func (app *App) TbkTPwdCreate(notMustParams ...Params) *TbkTPwdCreateResult {
func (c *Client) TbkTPwdCreate(notMustParams ...Params) *TbkTPwdCreateResult {
// 参数
params := NewParamsWithType("taobao.tbk.tpwd.create", notMustParams...)
// 请求
request, err := app.request(params)
request, err := c.request(params)
// 定义
var response TbkTPwdCreateResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewTbkTPwdCreateResult(response, request.ResponseBody, request, err)
return newTbkTPwdCreateResult(response, request.ResponseBody, request, err)
}

Loading…
Cancel
Save