diff --git a/cgi-bin.token.monitor.go b/cgi-bin.token.monitor.go index 547ec0c..5e5ea83 100644 --- a/cgi-bin.token.monitor.go +++ b/cgi-bin.token.monitor.go @@ -6,14 +6,14 @@ import ( "time" ) -func (c *Client) GetAccessTokenMonitor() (string, error) { +func (c *Client) GetAccessTokenMonitor(ctx context.Context) (string, error) { if c.config.RedisClient.Db == nil { return "", errors.New("驱动没有初始化") } - result := c.GetCallBackIp() + result := c.GetCallBackIp(ctx) if len(result.Result.IpList) <= 0 { - token := c.CgiBinToken() - c.config.RedisClient.Db.Set(context.Background(), c.getAccessTokenCacheKeyName(), token.Result.AccessToken, time.Second*7000) + token := c.CgiBinToken(ctx) + c.config.RedisClient.Set(ctx, c.getAccessTokenCacheKeyName(), token.Result.AccessToken, time.Second*7000) return token.Result.AccessToken, nil } return c.config.AccessToken, nil diff --git a/cgi-bin.token.rdb.go b/cgi-bin.token.rdb.go index 4f64685..279cf71 100644 --- a/cgi-bin.token.rdb.go +++ b/cgi-bin.token.rdb.go @@ -1,17 +1,18 @@ package wechatunion import ( + "context" "fmt" "time" ) -func (c *Client) GetAccessToken() string { +func (c *Client) GetAccessToken(ctx context.Context) string { if c.config.RedisClient.Db == nil { return c.config.AccessToken } newCache := c.config.RedisClient.NewSimpleStringCache(c.config.RedisClient.NewStringOperation(), time.Second*7000) newCache.DBGetter = func() string { - token := c.CgiBinToken() + token := c.CgiBinToken(ctx) return token.Result.AccessToken } return newCache.GetCache(c.getAccessTokenCacheKeyName()) diff --git a/cgi_bin.token.go b/cgi_bin.token.go index 1dedddd..e7fd0be 100644 --- a/cgi_bin.token.go +++ b/cgi_bin.token.go @@ -1,6 +1,7 @@ package wechatunion import ( + "context" "encoding/json" "fmt" "go.dtapp.net/gorequest" @@ -28,9 +29,9 @@ func newCgiBinTokenResult(result CgiBinTokenResponse, byte []byte, http goreques // CgiBinToken // 接口调用凭证 // https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/access-token/auth.getAccessToken.html -func (c *Client) CgiBinToken() *CgiBinTokenResult { +func (c *Client) CgiBinToken(ctx context.Context) *CgiBinTokenResult { // 请求 - request, err := c.request(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s", c.getAppId(), c.getAppSecret()), map[string]interface{}{}, http.MethodGet) + request, err := c.request(ctx, fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s", c.getAppId(), c.getAppSecret()), map[string]interface{}{}, http.MethodGet) // 定义 var response CgiBinTokenResponse err = json.Unmarshal(request.ResponseBody, &response) diff --git a/const.go b/const.go index 9a5b073..e80fd89 100644 --- a/const.go +++ b/const.go @@ -8,4 +8,4 @@ const ( logTable = "wechatunion" ) -const Version = "1.0.2" +const Version = "1.0.3" diff --git a/get.go b/get.go index 8edda1c..cb9d938 100644 --- a/get.go +++ b/get.go @@ -1,5 +1,7 @@ package wechatunion +import "context" + func (c *Client) getAppId() string { return c.config.AppId } @@ -8,8 +10,8 @@ func (c *Client) getAppSecret() string { return c.config.AppSecret } -func (c *Client) getAccessToken() string { - c.config.AccessToken = c.GetAccessToken() +func (c *Client) getAccessToken(ctx context.Context) string { + c.config.AccessToken = c.GetAccessToken(ctx) return c.config.AccessToken } diff --git a/getcallbackip.go b/getcallbackip.go index 347a6a6..6b1aa11 100644 --- a/getcallbackip.go +++ b/getcallbackip.go @@ -1,6 +1,7 @@ package wechatunion import ( + "context" "encoding/json" "fmt" "go.dtapp.net/gorequest" @@ -24,9 +25,9 @@ func newGetCallBackIpResult(result GetCallBackIpResponse, byte []byte, http gore // GetCallBackIp 获取微信callback IP地址 // callback IP即微信调用开发者服务器所使用的出口IP。 // https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_the_WeChat_server_IP_address.html#2.%20%E8%8E%B7%E5%8F%96%E5%BE%AE%E4%BF%A1callback%20IP%E5%9C%B0%E5%9D%80 -func (c *Client) GetCallBackIp() *GetCallBackIpResult { +func (c *Client) GetCallBackIp(ctx context.Context) *GetCallBackIpResult { // 请求 - request, err := c.request(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=%s", c.getAccessToken()), map[string]interface{}{}, "GET") + request, err := c.request(ctx, fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=%s", c.getAccessToken(ctx)), map[string]interface{}{}, "GET") // 定义 var response GetCallBackIpResponse err = json.Unmarshal(request.ResponseBody, &response) diff --git a/go.mod b/go.mod index fbd3d7a..a4e072f 100644 --- a/go.mod +++ b/go.mod @@ -3,8 +3,8 @@ module go.dtapp.net/wechatunion go 1.19 require ( - go.dtapp.net/dorm v1.0.14 - go.dtapp.net/golog v1.0.21 + go.dtapp.net/dorm v1.0.17 + go.dtapp.net/golog v1.0.22 go.dtapp.net/gorequest v1.0.24 go.dtapp.net/gotime v1.0.5 gorm.io/gorm v1.23.8 @@ -68,14 +68,14 @@ require ( go.dtapp.net/gostring v1.0.6 // indirect go.dtapp.net/goxml v1.0.1 // indirect go.mongodb.org/mongo-driver v1.10.1 // indirect - go.uber.org/atomic v1.9.0 // indirect + go.uber.org/atomic v1.10.0 // indirect go.uber.org/multierr v1.8.0 // indirect go.uber.org/zap v1.22.0 // indirect golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa // indirect golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect - golang.org/x/net v0.0.0-20220809184613-07c6da5e1ced // indirect + golang.org/x/net v0.0.0-20220811182439-13a9a731de15 // indirect golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 // indirect - golang.org/x/sys v0.0.0-20220808155132-1c4a2a72c664 // indirect + golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab // indirect golang.org/x/text v0.3.7 // indirect google.golang.org/protobuf v1.28.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index 532feb3..62d97d4 100644 --- a/go.sum +++ b/go.sum @@ -499,14 +499,14 @@ github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a/go.mod h1:ul22v+Nro/ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= -go.dtapp.net/dorm v1.0.14 h1:HDsaMwKGlKFKt59Y3hPI9aVnSjfXOyjoHw2uoXErKEo= -go.dtapp.net/dorm v1.0.14/go.mod h1:bHG7BmgeLaAlc56myYF63lwZAIuMeWRAqHBb/L84dLM= +go.dtapp.net/dorm v1.0.17 h1:3VQKUl05CDxFg3T1c/M8wYf2I+H+oVGBDh4NCV30nn0= +go.dtapp.net/dorm v1.0.17/go.mod h1:bHG7BmgeLaAlc56myYF63lwZAIuMeWRAqHBb/L84dLM= go.dtapp.net/goip v1.0.24 h1:62k3xt9I/YLUwA5tLp7YC8XPskkswc4RJrvxRRxjwIY= go.dtapp.net/goip v1.0.24/go.mod h1:tps0yoq5kSykLGDb01vuai47hzAQ6nYUPFWLdlQA2Oo= go.dtapp.net/gojson v1.0.1 h1:MHeSGlq1KxzL7rCkm18fhwW4GNORHohdDMmxY5PupKY= go.dtapp.net/gojson v1.0.1/go.mod h1:TkkpTNxHBKxul0e7gC5MrL1K4ICFB9mQ7wHzjBah3/k= -go.dtapp.net/golog v1.0.21 h1:pSGmDz3SJTH7M/NvVLZb+YJd8uNl5g18aORibuaY2JU= -go.dtapp.net/golog v1.0.21/go.mod h1:Wxm2Kh77JN5zFDZ72el9E9c/YkoJnOvHVusB7SqvoC8= +go.dtapp.net/golog v1.0.22 h1:sOJr5f/iLk/6irT/RuwTQSTwvL2DR8SIhzMsKdHo0Ic= +go.dtapp.net/golog v1.0.22/go.mod h1:sbn2WQXmlukcZ4T3Kz9iWOSznL8H3RCkD+1nicZHMfI= go.dtapp.net/gorandom v1.0.1 h1:IWfMClh1ECPvyUjlqD7MwLq4mZdUusD1qAwAdsvEJBs= go.dtapp.net/gorandom v1.0.1/go.mod h1:ZPdgalKpvFV/ATQqR0k4ns/F/IpITAZpx6WkWirr5Y8= go.dtapp.net/gorequest v1.0.24 h1:N2RJOpCXPWbsjfQ8iYJI1EYC2se3I4QhK1l94DSJsuE= @@ -529,8 +529,8 @@ go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= -go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= +go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= @@ -601,8 +601,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220809184613-07c6da5e1ced h1:3dYNDff0VT5xj+mbj2XucFst9WKk6PdGOrb9n+SbIvw= -golang.org/x/net v0.0.0-20220809184613-07c6da5e1ced/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20220811182439-13a9a731de15 h1:cik0bxZUSJVDyaHf1hZPSDsU8SZHGQZQMeueXCE7yBQ= +golang.org/x/net v0.0.0-20220811182439-13a9a731de15/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -647,8 +647,8 @@ golang.org/x/sys v0.0.0-20210902050250-f475640dd07b/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220808155132-1c4a2a72c664 h1:v1W7bwXHsnLLloWYTVEdvGvA7BHMeBYsPcF0GLDxIRs= -golang.org/x/sys v0.0.0-20220808155132-1c4a2a72c664/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab h1:2QkjZIsXupsJbJIdSjjUOgWK3aEtzyuh2mPt3l/CkeU= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/order.go b/order.go index 5ef6b29..89107ae 100644 --- a/order.go +++ b/order.go @@ -1,6 +1,7 @@ package wechatunion import ( + "context" "errors" "go.dtapp.net/gorequest" ) @@ -51,7 +52,7 @@ type OrderSearchResult struct { } // OrderSearch 根据订单支付时间、订单分佣状态拉取订单详情 https://developers.weixin.qq.com/doc/ministore/union/access-guidelines/promoter/api/order/order-info.html -func (c *Client) OrderSearch(notMustParams ...gorequest.Params) (result OrderSearchResult, err error) { +func (c *Client) OrderSearch(ctx context.Context, notMustParams ...gorequest.Params) (result OrderSearchResult, err error) { if len(c.getAccessToken()) <= 0 { return result, errors.New("调用凭证异常") } diff --git a/promoter.order.info.go b/promoter.order.info.go index 9ff7ac5..371d67c 100644 --- a/promoter.order.info.go +++ b/promoter.order.info.go @@ -1,6 +1,7 @@ package wechatunion import ( + "context" "encoding/json" "fmt" "go.dtapp.net/gorequest" @@ -55,7 +56,7 @@ func newPromoterOrderInfoResult(result PromoterOrderInfoResponse, body []byte, h // PromoterOrderInfo 根据订单ID查询订单详情 // https://developers.weixin.qq.com/doc/ministore/union/access-guidelines/promoter/api/order/order-info.html#_1-%E6%A0%B9%E6%8D%AE%E8%AE%A2%E5%8D%95ID%E6%9F%A5%E8%AF%A2%E8%AE%A2%E5%8D%95%E8%AF%A6%E6%83%85 -func (c *Client) PromoterOrderInfo(orderId ...string) *PromoterOrderInfoResult { +func (c *Client) PromoterOrderInfo(ctx context.Context, orderId ...string) *PromoterOrderInfoResult { // 参数 params := gorequest.NewParamsWith() var orderIdList []any @@ -64,7 +65,7 @@ func (c *Client) PromoterOrderInfo(orderId ...string) *PromoterOrderInfoResult { } params.Set("orderIdList", orderIdList) // 请求 - request, err := c.request(apiUrl+fmt.Sprintf("/promoter/order/info?access_token=%s", c.getAccessToken()), params, http.MethodPost) + request, err := c.request(ctx, apiUrl+fmt.Sprintf("/promoter/order/info?access_token=%s", c.getAccessToken(ctx)), params, http.MethodPost) // 定义 var response PromoterOrderInfoResponse err = json.Unmarshal(request.ResponseBody, &response) diff --git a/promoter.order.search.go b/promoter.order.search.go index 38b065b..0acb0c8 100644 --- a/promoter.order.search.go +++ b/promoter.order.search.go @@ -1,6 +1,7 @@ package wechatunion import ( + "context" "encoding/json" "fmt" "go.dtapp.net/gorequest" @@ -57,11 +58,11 @@ func newPromoterOrderSearchResult(result PromoterOrderSearchResponse, body []byt // PromoterOrderSearch 根据订单支付时间、订单分佣状态拉取订单详情 // https://developers.weixin.qq.com/doc/ministore/union/access-guidelines/promoter/api/order/order-info.html#_2-%E6%A0%B9%E6%8D%AE%E8%AE%A2%E5%8D%95%E6%94%AF%E4%BB%98%E6%97%B6%E9%97%B4%E3%80%81%E8%AE%A2%E5%8D%95%E5%88%86%E4%BD%A3%E7%8A%B6%E6%80%81%E6%8B%89%E5%8F%96%E8%AE%A2%E5%8D%95%E8%AF%A6%E6%83%85 -func (c *Client) PromoterOrderSearch(notMustParams ...gorequest.Params) *PromoterOrderSearchResult { +func (c *Client) PromoterOrderSearch(ctx context.Context, notMustParams ...gorequest.Params) *PromoterOrderSearchResult { // 参数 params := gorequest.NewParamsWith(notMustParams...) // 请求 - request, err := c.request(apiUrl+fmt.Sprintf("/promoter/order/search?access_token=%s", c.getAccessToken()), params, http.MethodGet) + request, err := c.request(ctx, apiUrl+fmt.Sprintf("/promoter/order/search?access_token=%s", c.getAccessToken(ctx)), params, http.MethodGet) // 定义 var response PromoterOrderSearchResponse err = json.Unmarshal(request.ResponseBody, &response) diff --git a/promoter.product.category.go b/promoter.product.category.go index a0d12cb..6833f47 100644 --- a/promoter.product.category.go +++ b/promoter.product.category.go @@ -1,6 +1,7 @@ package wechatunion import ( + "context" "encoding/json" "fmt" "go.dtapp.net/gorequest" @@ -29,9 +30,9 @@ func newPromoterProductCategoryResult(result PromoterProductCategoryResponse, bo // PromoterProductCategory 获取联盟商品类目列表及类目ID // https://developers.weixin.qq.com/doc/ministore/union/access-guidelines/promoter/api/product/category.html#_1-%E8%8E%B7%E5%8F%96%E8%81%94%E7%9B%9F%E5%95%86%E5%93%81%E7%B1%BB%E7%9B%AE%E5%88%97%E8%A1%A8%E5%8F%8A%E7%B1%BB%E7%9B%AEID -func (c *Client) PromoterProductCategory() *PromoterProductCategoryResult { +func (c *Client) PromoterProductCategory(ctx context.Context) *PromoterProductCategoryResult { // 请求 - request, err := c.request(apiUrl+fmt.Sprintf("/promoter/product/category?access_token=%s", c.getAccessToken()), map[string]interface{}{}, http.MethodGet) + request, err := c.request(ctx, apiUrl+fmt.Sprintf("/promoter/product/category?access_token=%s", c.getAccessToken(ctx)), map[string]interface{}{}, http.MethodGet) // 定义 var response PromoterProductCategoryResponse err = json.Unmarshal(request.ResponseBody, &response) diff --git a/promoter.product.generate.go b/promoter.product.generate.go index b9663c4..7db79a5 100644 --- a/promoter.product.generate.go +++ b/promoter.product.generate.go @@ -1,6 +1,7 @@ package wechatunion import ( + "context" "encoding/json" "fmt" "go.dtapp.net/gorequest" @@ -55,12 +56,12 @@ func newPromoterProductGenerateResult(result PromoterProductGenerateResponse, bo // PromoterProductGenerate 获取商品推广素材 // https://developers.weixin.qq.com/doc/ministore/union/access-guidelines/promoter/api/product/category.html#_4-%E8%8E%B7%E5%8F%96%E5%95%86%E5%93%81%E6%8E%A8%E5%B9%BF%E7%B4%A0%E6%9D%90 -func (c *Client) PromoterProductGenerate(notMustParams ...gorequest.Params) *PromoterProductGenerateResult { +func (c *Client) PromoterProductGenerate(ctx context.Context, notMustParams ...gorequest.Params) *PromoterProductGenerateResult { // 参数 params := gorequest.NewParamsWith(notMustParams...) params.Set("pid", c.getPid()) // 请求 - request, err := c.request(apiUrl+fmt.Sprintf("/promoter/product/generate?access_token=%s", c.getAccessToken()), params, http.MethodPost) + request, err := c.request(ctx, apiUrl+fmt.Sprintf("/promoter/product/generate?access_token=%s", c.getAccessToken(ctx)), params, http.MethodPost) // 定义 var response PromoterProductGenerateResponse err = json.Unmarshal(request.ResponseBody, &response) diff --git a/promoter.product.list.go b/promoter.product.list.go index 32472be..4e9a25f 100644 --- a/promoter.product.list.go +++ b/promoter.product.list.go @@ -1,6 +1,7 @@ package wechatunion import ( + "context" "encoding/json" "fmt" "go.dtapp.net/gorequest" @@ -139,11 +140,11 @@ func newPromoterProductListResult(result PromoterProductListResponse, body []byt // PromoterProductList 查询全量商品 // https://developers.weixin.qq.com/doc/ministore/union/access-guidelines/promoter/api/product/category.html#_2-%E6%9F%A5%E8%AF%A2%E5%85%A8%E9%87%8F%E5%95%86%E5%93%81 -func (c *Client) PromoterProductList(notMustParams ...gorequest.Params) *PromoterProductListResult { +func (c *Client) PromoterProductList(ctx context.Context, notMustParams ...gorequest.Params) *PromoterProductListResult { // 参数 params := gorequest.NewParamsWith(notMustParams...) // 请求 - request, err := c.request(apiUrl+fmt.Sprintf("/promoter/product/list?access_token=%s", c.getAccessToken()), params, http.MethodGet) + request, err := c.request(ctx, apiUrl+fmt.Sprintf("/promoter/product/list?access_token=%s", c.getAccessToken(ctx)), params, http.MethodGet) // 定义 var response PromoterProductListResponse err = json.Unmarshal(request.ResponseBody, &response) diff --git a/promoter.product.select.go b/promoter.product.select.go index 0146f72..3a3572b 100644 --- a/promoter.product.select.go +++ b/promoter.product.select.go @@ -1,6 +1,7 @@ package wechatunion import ( + "context" "encoding/json" "fmt" "go.dtapp.net/gorequest" @@ -140,11 +141,11 @@ func newPromoterProductSelectResult(result PromoterProductSelectResponse, body [ // 查询联盟精选商品 // 支持开发者根据多种筛选条件获取联盟精选的商品列表及详情,筛选条件包括商品价格、商品佣金、商品累计销量、佣金比例、是否含有联盟券、配送方式、发货地区 // https://developers.weixin.qq.com/doc/ministore/union/access-guidelines/promoter/api/product/category.html#3.%E6%9F%A5%E8%AF%A2%E8%81%94%E7%9B%9F%E7%B2%BE%E9%80%89%E5%95%86%E5%93%81 -func (c *Client) PromoterProductSelect(notMustParams ...gorequest.Params) *PromoterProductSelectResult { +func (c *Client) PromoterProductSelect(ctx context.Context, notMustParams ...gorequest.Params) *PromoterProductSelectResult { // 参数 params := gorequest.NewParamsWith(notMustParams...) // 请求 - request, err := c.request(apiUrl+fmt.Sprintf("/promoter/product/select?access_token=%s", c.getAccessToken()), params, http.MethodGet) + request, err := c.request(ctx, apiUrl+fmt.Sprintf("/promoter/product/select?access_token=%s", c.getAccessToken(ctx)), params, http.MethodGet) // 定义 var response PromoterProductSelectResponse err = json.Unmarshal(request.ResponseBody, &response) diff --git a/promoter.promotion.add.go b/promoter.promotion.add.go index 01fb45a..1a3422d 100644 --- a/promoter.promotion.add.go +++ b/promoter.promotion.add.go @@ -1,6 +1,7 @@ package wechatunion import ( + "context" "encoding/json" "fmt" "go.dtapp.net/gorequest" @@ -26,12 +27,12 @@ func newPromotionAddResult(result PromotionAddResponse, body []byte, http gorequ // PromotionAdd 添加推广位 // https://developers.weixin.qq.com/doc/ministore/union/access-guidelines/promoter/api/promotion.html#_1-%E6%B7%BB%E5%8A%A0%E6%8E%A8%E5%B9%BF%E4%BD%8D -func (c *Client) PromotionAdd(promotionSourceName string) *PromotionAddResult { +func (c *Client) PromotionAdd(ctx context.Context, promotionSourceName string) *PromotionAddResult { // 参数 params := gorequest.NewParams() params.Set("promotionSourceName", promotionSourceName) // 推广位名称 // 请求 - request, err := c.request(apiUrl+fmt.Sprintf("/promoter/promotion/add?access_token%s", c.getAccessToken()), params, http.MethodPost) + request, err := c.request(ctx, apiUrl+fmt.Sprintf("/promoter/promotion/add?access_token%s", c.getAccessToken(ctx)), params, http.MethodPost) // 定义 var response PromotionAddResponse err = json.Unmarshal(request.ResponseBody, &response) diff --git a/promoter.promotion.del.go b/promoter.promotion.del.go index d661129..c32212d 100644 --- a/promoter.promotion.del.go +++ b/promoter.promotion.del.go @@ -1,6 +1,7 @@ package wechatunion import ( + "context" "encoding/json" "fmt" "go.dtapp.net/gorequest" @@ -25,13 +26,13 @@ func newPromotionDelResult(result PromotionDelResponse, body []byte, http gorequ // PromotionDel 删除某个推广位 // https://developers.weixin.qq.com/doc/ministore/union/access-guidelines/promoter/api/promotion.html#_3-%E7%BC%96%E8%BE%91%E6%8E%A8%E5%B9%BF%E4%BD%8D -func (c *Client) PromotionDel(promotionSourcePid, promotionSourceName string) *PromotionDelResult { +func (c *Client) PromotionDel(ctx context.Context, promotionSourcePid, promotionSourceName string) *PromotionDelResult { // 参数 params := gorequest.NewParams() params.Set("promotionSourcePid", promotionSourcePid) // 推广位PID params.Set("promotionSourceName", promotionSourceName) // 推广位名称 // 请求 - request, err := c.request(apiUrl+fmt.Sprintf("/promoter/promotion/del?access_token%s", c.getAccessToken()), params, http.MethodPost) + request, err := c.request(ctx, apiUrl+fmt.Sprintf("/promoter/promotion/del?access_token%s", c.getAccessToken(ctx)), params, http.MethodPost) // 定义 var response PromotionDelResponse err = json.Unmarshal(request.ResponseBody, &response) diff --git a/promoter.promotion.list.go b/promoter.promotion.list.go index cfb6870..d416800 100644 --- a/promoter.promotion.list.go +++ b/promoter.promotion.list.go @@ -1,6 +1,7 @@ package wechatunion import ( + "context" "encoding/json" "fmt" "go.dtapp.net/gorequest" @@ -33,13 +34,13 @@ func newPromotionListResult(result PromotionListResponse, body []byte, http gore // PromotionList 获取推广位列表 // https://developers.weixin.qq.com/doc/ministore/union/access-guidelines/promoter/api/promotion.html#_4-%E8%8E%B7%E5%8F%96%E6%8E%A8%E5%B9%BF%E4%BD%8D%E5%88%97%E8%A1%A8 -func (c *Client) PromotionList(start int, limit int) *PromotionListResult { +func (c *Client) PromotionList(ctx context.Context, start int, limit int) *PromotionListResult { // 参数 params := gorequest.NewParams() params.Set("start", start) // 偏移 params.Set("limit", limit) // 每页条数 // 请求 - request, err := c.request(apiUrl+fmt.Sprintf("/promoter/promotion/list?access_token%s", c.getAccessToken()), params, http.MethodGet) + request, err := c.request(ctx, apiUrl+fmt.Sprintf("/promoter/promotion/list?access_token%s", c.getAccessToken(ctx)), params, http.MethodGet) // 定义 var response PromotionListResponse err = json.Unmarshal(request.ResponseBody, &response) diff --git a/promoter.promotion.upd.go b/promoter.promotion.upd.go index a41a763..b4c88f9 100644 --- a/promoter.promotion.upd.go +++ b/promoter.promotion.upd.go @@ -1,6 +1,7 @@ package wechatunion import ( + "context" "encoding/json" "fmt" "go.dtapp.net/gorequest" @@ -25,11 +26,11 @@ func newPromotionUpdResult(result PromotionUpdResponse, body []byte, http gorequ // PromotionUpd 编辑推广位 // https://developers.weixin.qq.com/doc/ministore/union/access-guidelines/promoter/api/promotion.html#_3-%E7%BC%96%E8%BE%91%E6%8E%A8%E5%B9%BF%E4%BD%8D -func (c *Client) PromotionUpd(notMustParams ...gorequest.Params) *PromotionUpdResult { +func (c *Client) PromotionUpd(ctx context.Context, notMustParams ...gorequest.Params) *PromotionUpdResult { // 参数 params := gorequest.NewParamsWith(notMustParams...) // 请求 - request, err := c.request(apiUrl+fmt.Sprintf("/promoter/promotion/upd?access_token%s", c.getAccessToken()), params, http.MethodPost) + request, err := c.request(ctx, apiUrl+fmt.Sprintf("/promoter/promotion/upd?access_token%s", c.getAccessToken(ctx)), params, http.MethodPost) // 定义 var response PromotionUpdResponse err = json.Unmarshal(request.ResponseBody, &response) diff --git a/request.go b/request.go index fe34e92..9f0abc5 100644 --- a/request.go +++ b/request.go @@ -1,9 +1,12 @@ package wechatunion -import "go.dtapp.net/gorequest" +import ( + "context" + "go.dtapp.net/gorequest" +) // 请求 -func (c *Client) request(url string, params map[string]interface{}, method string) (gorequest.Response, error) { +func (c *Client) request(ctx context.Context, url string, params map[string]interface{}, method string) (gorequest.Response, error) { // 创建请求 client := c.client @@ -28,7 +31,7 @@ func (c *Client) request(url string, params map[string]interface{}, method strin // 日志 if c.config.PgsqlDb != nil { - go c.log.GormMiddleware(request, Version) + go c.log.GormMiddleware(ctx, request, Version) } if c.config.MongoDb != nil { go c.log.MongoMiddleware(request)