From 831266f9fb822599f210792063c54d44e1a67e82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=85=89=E6=98=A5?= Date: Wed, 29 Mar 2023 17:33:36 +0800 Subject: [PATCH] - update wechatopen - update wechatminiprogram --- CHANGELOG.md | 2 +- library.go | 2 +- service/wechatminiprogram/client.go | 22 ++++++------------- service/wechatminiprogram/config.go | 19 +++++++++++++++- service/wechatminiprogram/get.go | 3 +++ service/wechatminiprogram/set.go | 11 ++++++++++ .../wechatminiprogram/wxa.getuserriskrank.go | 13 ++++++----- .../wxa.media_check_async.go | 12 +++++----- .../wechatminiprogram/wxa.msg_sec_check.go | 12 +++++----- service/wechatopen/wxa.getuserriskrank.go | 13 ++++++----- service/wechatopen/wxa.media_check_async.go | 12 +++++----- service/wechatopen/wxa.msg_sec_check.go | 12 +++++----- 12 files changed, 85 insertions(+), 48 deletions(-) create mode 100644 service/wechatminiprogram/set.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 82629202..e17a415b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## v1.0.111 +## v1.0.111-v1.0.112 - update [wechatopen](service%2Fwechatopen) - update [wechatminiprogram](service%2Fwechatminiprogram) diff --git a/library.go b/library.go index d2b9fb40..ae644646 100644 --- a/library.go +++ b/library.go @@ -1,5 +1,5 @@ package go_library func Version() string { - return "1.0.111" + return "1.0.112" } diff --git a/service/wechatminiprogram/client.go b/service/wechatminiprogram/client.go index f15de25a..d08732a3 100644 --- a/service/wechatminiprogram/client.go +++ b/service/wechatminiprogram/client.go @@ -12,20 +12,19 @@ type redisCachePrefixFun func() (wechatAccessToken string) // ClientConfig 实例配置 type ClientConfig struct { - AppId string // 小程序唯一凭证,即 appId - AppSecret string // 小程序唯一凭证密钥,即 appSecret - RedisClient *dorm.RedisClient // 缓存数据库 - RedisCachePrefixFun redisCachePrefixFun // 缓存前缀 + AppId string // 小程序唯一凭证,即 appId + AppSecret string // 小程序唯一凭证密钥,即 appSecret } // Client 实例 type Client struct { requestClient *gorequest.App // 请求服务 config struct { - appId string // 小程序唯一凭证,即 appId - appSecret string // 小程序唯一凭证密钥,即 appSecret - accessToken string // 接口调用凭证 - jsapiTicket string // 签名凭证 + appId string // 小程序唯一凭证,即 appId + appSecret string // 小程序唯一凭证密钥,即 appSecret + accessToken string // 接口调用凭证 + jsapiTicket string // 签名凭证 + selfAccessToken bool // 自己设置接口调用凭证 } cache struct { redisClient *dorm.RedisClient // 缓存数据库 @@ -47,12 +46,5 @@ func NewClient(config *ClientConfig) (*Client, error) { c.requestClient = gorequest.NewHttp() - c.cache.redisClient = config.RedisClient - - c.cache.wechatAccessTokenPrefix = config.RedisCachePrefixFun() - if c.cache.wechatAccessTokenPrefix == "" { - return nil, redisCachePrefixNoConfig - } - return c, nil } diff --git a/service/wechatminiprogram/config.go b/service/wechatminiprogram/config.go index a2a81c93..8c8f6feb 100644 --- a/service/wechatminiprogram/config.go +++ b/service/wechatminiprogram/config.go @@ -1,6 +1,9 @@ package wechatminiprogram -import "github.com/dtapps/go-library/utils/golog" +import ( + "github.com/dtapps/go-library/utils/dorm" + "github.com/dtapps/go-library/utils/golog" +) // ConfigApp 配置 func (c *Client) ConfigApp(appId, appSecret string) *Client { @@ -17,3 +20,17 @@ func (c *Client) ConfigApiClientFun(apiClientFun golog.ApiClientFun) { c.log.status = true } } + +// ConfigRedisClient 缓存数据库 +func (c *Client) ConfigRedisClient(client *dorm.RedisClient) { + c.cache.redisClient = client +} + +// ConfigRedisCachePrefixFunWechatAccessToken 缓存前缀 +func (c *Client) ConfigRedisCachePrefixFunWechatAccessToken(config string) error { + c.cache.wechatAccessTokenPrefix = config + if c.cache.wechatAccessTokenPrefix == "" { + return redisCachePrefixNoConfig + } + return nil +} diff --git a/service/wechatminiprogram/get.go b/service/wechatminiprogram/get.go index a6e364d1..18ab44bd 100644 --- a/service/wechatminiprogram/get.go +++ b/service/wechatminiprogram/get.go @@ -14,6 +14,9 @@ func (c *Client) GetAppSecret() string { } func (c *Client) getAccessToken(ctx context.Context) string { + if c.config.selfAccessToken { + return c.config.accessToken + } c.config.accessToken = c.GetAccessToken(ctx) return c.config.accessToken } diff --git a/service/wechatminiprogram/set.go b/service/wechatminiprogram/set.go new file mode 100644 index 00000000..f0a372a5 --- /dev/null +++ b/service/wechatminiprogram/set.go @@ -0,0 +1,11 @@ +package wechatminiprogram + +import ( + "context" +) + +func (c *Client) SetAccessToken(ctx context.Context, accessToken string) string { + c.config.accessToken = accessToken + c.config.selfAccessToken = true + return c.config.accessToken +} diff --git a/service/wechatminiprogram/wxa.getuserriskrank.go b/service/wechatminiprogram/wxa.getuserriskrank.go index 87fe61d7..a5aa9c76 100644 --- a/service/wechatminiprogram/wxa.getuserriskrank.go +++ b/service/wechatminiprogram/wxa.getuserriskrank.go @@ -19,22 +19,25 @@ type WxaGetUserRiskRankResult struct { Result WxaGetUserRiskRankResponse // 结果 Body []byte // 内容 Http gorequest.Response // 请求 - Err error // 错误 } -func newWxaGetUserRiskRankResult(result WxaGetUserRiskRankResponse, body []byte, http gorequest.Response, err error) *WxaGetUserRiskRankResult { - return &WxaGetUserRiskRankResult{Result: result, Body: body, Http: http, Err: err} +func newWxaGetUserRiskRankResult(result WxaGetUserRiskRankResponse, body []byte, http gorequest.Response) *WxaGetUserRiskRankResult { + return &WxaGetUserRiskRankResult{Result: result, Body: body, Http: http} } // WxaGetUserRiskRank 获取用户安全等级 // https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/sec-center/safety-control-capability/getUserRiskRank.html -func (c *Client) WxaGetUserRiskRank(ctx context.Context, notMustParams ...gorequest.Params) *WxaGetUserRiskRankResult { +func (c *Client) WxaGetUserRiskRank(ctx context.Context, notMustParams ...gorequest.Params) (*WxaGetUserRiskRankResult, error) { // 参数 params := gorequest.NewParamsWith(notMustParams...) + params.Set("appid", c.GetAppId()) // 请求 request, err := c.request(ctx, fmt.Sprintf(apiUrl+"/wxa/getuserriskrank?access_token=%s", c.getAccessToken(ctx)), params, http.MethodPost) + if err != nil { + return newWxaGetUserRiskRankResult(WxaGetUserRiskRankResponse{}, request.ResponseBody, request), err + } // 定义 var response WxaGetUserRiskRankResponse err = gojson.Unmarshal(request.ResponseBody, &response) - return newWxaGetUserRiskRankResult(response, request.ResponseBody, request, err) + return newWxaGetUserRiskRankResult(response, request.ResponseBody, request), err } diff --git a/service/wechatminiprogram/wxa.media_check_async.go b/service/wechatminiprogram/wxa.media_check_async.go index 886ba198..87872336 100644 --- a/service/wechatminiprogram/wxa.media_check_async.go +++ b/service/wechatminiprogram/wxa.media_check_async.go @@ -36,22 +36,24 @@ type WxaMediaCheckAsyncResult struct { Result WxaMediaCheckAsyncResponse // 结果 Body []byte // 内容 Http gorequest.Response // 请求 - Err error // 错误 } -func newWxaMediaCheckAsyncResult(result WxaMediaCheckAsyncResponse, body []byte, http gorequest.Response, err error) *WxaMediaCheckAsyncResult { - return &WxaMediaCheckAsyncResult{Result: result, Body: body, Http: http, Err: err} +func newWxaMediaCheckAsyncResult(result WxaMediaCheckAsyncResponse, body []byte, http gorequest.Response) *WxaMediaCheckAsyncResult { + return &WxaMediaCheckAsyncResult{Result: result, Body: body, Http: http} } // WxaMediaCheckAsync 音视频内容安全识别 // https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/sec-center/sec-check/mediaCheckAsync.html -func (c *Client) WxaMediaCheckAsync(ctx context.Context, notMustParams ...gorequest.Params) *WxaMediaCheckAsyncResult { +func (c *Client) WxaMediaCheckAsync(ctx context.Context, notMustParams ...gorequest.Params) (*WxaMediaCheckAsyncResult, error) { // 参数 params := gorequest.NewParamsWith(notMustParams...) // 请求 request, err := c.request(ctx, fmt.Sprintf(apiUrl+"/wxa/media_check_async?access_token=%s", c.getAccessToken(ctx)), params, http.MethodPost) + if err != nil { + return newWxaMediaCheckAsyncResult(WxaMediaCheckAsyncResponse{}, request.ResponseBody, request), err + } // 定义 var response WxaMediaCheckAsyncResponse err = gojson.Unmarshal(request.ResponseBody, &response) - return newWxaMediaCheckAsyncResult(response, request.ResponseBody, request, err) + return newWxaMediaCheckAsyncResult(response, request.ResponseBody, request), err } diff --git a/service/wechatminiprogram/wxa.msg_sec_check.go b/service/wechatminiprogram/wxa.msg_sec_check.go index bbe488fd..bdbd06d6 100644 --- a/service/wechatminiprogram/wxa.msg_sec_check.go +++ b/service/wechatminiprogram/wxa.msg_sec_check.go @@ -31,22 +31,24 @@ type WxaMsgSecCheckResult struct { Result WxaMsgSecCheckResponse // 结果 Body []byte // 内容 Http gorequest.Response // 请求 - Err error // 错误 } -func newWxaMsgSecCheckResult(result WxaMsgSecCheckResponse, body []byte, http gorequest.Response, err error) *WxaMsgSecCheckResult { - return &WxaMsgSecCheckResult{Result: result, Body: body, Http: http, Err: err} +func newWxaMsgSecCheckResult(result WxaMsgSecCheckResponse, body []byte, http gorequest.Response) *WxaMsgSecCheckResult { + return &WxaMsgSecCheckResult{Result: result, Body: body, Http: http} } // WxaMsgSecCheck 文本内容安全识别 // https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html -func (c *Client) WxaMsgSecCheck(ctx context.Context, notMustParams ...gorequest.Params) *WxaMsgSecCheckResult { +func (c *Client) WxaMsgSecCheck(ctx context.Context, notMustParams ...gorequest.Params) (*WxaMsgSecCheckResult, error) { // 参数 params := gorequest.NewParamsWith(notMustParams...) // 请求 request, err := c.request(ctx, fmt.Sprintf(apiUrl+"/wxa/msg_sec_check?access_token=%s", c.getAccessToken(ctx)), params, http.MethodPost) + if err != nil { + return newWxaMsgSecCheckResult(WxaMsgSecCheckResponse{}, request.ResponseBody, request), err + } // 定义 var response WxaMsgSecCheckResponse err = gojson.Unmarshal(request.ResponseBody, &response) - return newWxaMsgSecCheckResult(response, request.ResponseBody, request, err) + return newWxaMsgSecCheckResult(response, request.ResponseBody, request), err } diff --git a/service/wechatopen/wxa.getuserriskrank.go b/service/wechatopen/wxa.getuserriskrank.go index 8d6b2a5b..2348c94c 100644 --- a/service/wechatopen/wxa.getuserriskrank.go +++ b/service/wechatopen/wxa.getuserriskrank.go @@ -19,22 +19,25 @@ type WxaGetUserRiskRankResult struct { Result WxaGetUserRiskRankResponse // 结果 Body []byte // 内容 Http gorequest.Response // 请求 - Err error // 错误 } -func newWxaGetUserRiskRankResult(result WxaGetUserRiskRankResponse, body []byte, http gorequest.Response, err error) *WxaGetUserRiskRankResult { - return &WxaGetUserRiskRankResult{Result: result, Body: body, Http: http, Err: err} +func newWxaGetUserRiskRankResult(result WxaGetUserRiskRankResponse, body []byte, http gorequest.Response) *WxaGetUserRiskRankResult { + return &WxaGetUserRiskRankResult{Result: result, Body: body, Http: http} } // WxaGetUserRiskRank 获取用户安全等级 // https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/sec-center/safety-control-capability/getUserRiskRank.html -func (c *Client) WxaGetUserRiskRank(ctx context.Context, notMustParams ...gorequest.Params) *WxaGetUserRiskRankResult { +func (c *Client) WxaGetUserRiskRank(ctx context.Context, notMustParams ...gorequest.Params) (*WxaGetUserRiskRankResult, error) { // 参数 params := gorequest.NewParamsWith(notMustParams...) + params.Set("appid", c.GetAuthorizerAppid()) // 请求 request, err := c.request(ctx, fmt.Sprintf(apiUrl+"/wxa/getuserriskrank?access_token=%s", c.GetAuthorizerAccessToken(ctx)), params, http.MethodPost) + if err != nil { + return newWxaGetUserRiskRankResult(WxaGetUserRiskRankResponse{}, request.ResponseBody, request), err + } // 定义 var response WxaGetUserRiskRankResponse err = gojson.Unmarshal(request.ResponseBody, &response) - return newWxaGetUserRiskRankResult(response, request.ResponseBody, request, err) + return newWxaGetUserRiskRankResult(response, request.ResponseBody, request), err } diff --git a/service/wechatopen/wxa.media_check_async.go b/service/wechatopen/wxa.media_check_async.go index eb4cf5a9..658adf4b 100644 --- a/service/wechatopen/wxa.media_check_async.go +++ b/service/wechatopen/wxa.media_check_async.go @@ -36,22 +36,24 @@ type WxaMediaCheckAsyncResult struct { Result WxaMediaCheckAsyncResponse // 结果 Body []byte // 内容 Http gorequest.Response // 请求 - Err error // 错误 } -func newWxaMediaCheckAsyncResult(result WxaMediaCheckAsyncResponse, body []byte, http gorequest.Response, err error) *WxaMediaCheckAsyncResult { - return &WxaMediaCheckAsyncResult{Result: result, Body: body, Http: http, Err: err} +func newWxaMediaCheckAsyncResult(result WxaMediaCheckAsyncResponse, body []byte, http gorequest.Response) *WxaMediaCheckAsyncResult { + return &WxaMediaCheckAsyncResult{Result: result, Body: body, Http: http} } // WxaMediaCheckAsync 音视频内容安全识别 // https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/sec-center/sec-check/mediaCheckAsync.html -func (c *Client) WxaMediaCheckAsync(ctx context.Context, notMustParams ...gorequest.Params) *WxaMediaCheckAsyncResult { +func (c *Client) WxaMediaCheckAsync(ctx context.Context, notMustParams ...gorequest.Params) (*WxaMediaCheckAsyncResult, error) { // 参数 params := gorequest.NewParamsWith(notMustParams...) // 请求 request, err := c.request(ctx, fmt.Sprintf(apiUrl+"/wxa/media_check_async?access_token=%s", c.GetAuthorizerAccessToken(ctx)), params, http.MethodPost) + if err != nil { + return newWxaMediaCheckAsyncResult(WxaMediaCheckAsyncResponse{}, request.ResponseBody, request), err + } // 定义 var response WxaMediaCheckAsyncResponse err = gojson.Unmarshal(request.ResponseBody, &response) - return newWxaMediaCheckAsyncResult(response, request.ResponseBody, request, err) + return newWxaMediaCheckAsyncResult(response, request.ResponseBody, request), err } diff --git a/service/wechatopen/wxa.msg_sec_check.go b/service/wechatopen/wxa.msg_sec_check.go index 3ae85a7a..1be6ec3c 100644 --- a/service/wechatopen/wxa.msg_sec_check.go +++ b/service/wechatopen/wxa.msg_sec_check.go @@ -31,22 +31,24 @@ type WxaMsgSecCheckResult struct { Result WxaMsgSecCheckResponse // 结果 Body []byte // 内容 Http gorequest.Response // 请求 - Err error // 错误 } -func newWxaMsgSecCheckResult(result WxaMsgSecCheckResponse, body []byte, http gorequest.Response, err error) *WxaMsgSecCheckResult { - return &WxaMsgSecCheckResult{Result: result, Body: body, Http: http, Err: err} +func newWxaMsgSecCheckResult(result WxaMsgSecCheckResponse, body []byte, http gorequest.Response) *WxaMsgSecCheckResult { + return &WxaMsgSecCheckResult{Result: result, Body: body, Http: http} } // WxaMsgSecCheck 文本内容安全识别 // https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html -func (c *Client) WxaMsgSecCheck(ctx context.Context, notMustParams ...gorequest.Params) *WxaMsgSecCheckResult { +func (c *Client) WxaMsgSecCheck(ctx context.Context, notMustParams ...gorequest.Params) (*WxaMsgSecCheckResult, error) { // 参数 params := gorequest.NewParamsWith(notMustParams...) // 请求 request, err := c.request(ctx, fmt.Sprintf(apiUrl+"/wxa/msg_sec_check?access_token=%s", c.GetAuthorizerAccessToken(ctx)), params, http.MethodPost) + if err != nil { + return newWxaMsgSecCheckResult(WxaMsgSecCheckResponse{}, request.ResponseBody, request), err + } // 定义 var response WxaMsgSecCheckResponse err = gojson.Unmarshal(request.ResponseBody, &response) - return newWxaMsgSecCheckResult(response, request.ResponseBody, request, err) + return newWxaMsgSecCheckResult(response, request.ResponseBody, request), err }