|
@@ -4,13 +4,17 @@ import (
|
|
|
"encoding/json"
|
|
|
"errors"
|
|
|
"fmt"
|
|
|
- "github.com/rdlucklib/rdluck_tools/http"
|
|
|
"hongze/hongze_mobile_admin/models/custom"
|
|
|
"hongze/hongze_mobile_admin/models/tables/wx_token"
|
|
|
+ "hongze/hongze_mobile_admin/services/alarm_msg"
|
|
|
"hongze/hongze_mobile_admin/utils"
|
|
|
+ "io/ioutil"
|
|
|
+ http2 "net/http"
|
|
|
"strconv"
|
|
|
"strings"
|
|
|
"time"
|
|
|
+
|
|
|
+ "github.com/rdlucklib/rdluck_tools/http"
|
|
|
)
|
|
|
|
|
|
type WxAccessToken struct {
|
|
@@ -126,29 +130,81 @@ func WxGetAccessToken() (accessToken string, err error) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-func WxGetRedisAccessToken(wxAppId, wxAppSecret string) (accessToken string, err error) {
|
|
|
-
|
|
|
- accessToken, err = utils.Rc.RedisString(utils.HZ_ADMIN_WX_ACCESS_TOEKN+wxAppId)
|
|
|
- if err != nil {
|
|
|
- err = nil
|
|
|
- token, tErr := WxGetToken(wxAppId, wxAppSecret)
|
|
|
- if tErr != nil {
|
|
|
- return "", tErr
|
|
|
- }
|
|
|
- if token.Errmsg != "" {
|
|
|
- err = errors.New("获取access_token 失败 errcode:" + token.Errmsg + " ;errmsg:" + token.Errmsg)
|
|
|
- return "", err
|
|
|
- }
|
|
|
- redisTimeExpire := time.Duration(token.ExpiresIn - 600) * time.Second
|
|
|
- err = utils.Rc.Put(utils.HZ_ADMIN_WX_ACCESS_TOEKN+wxAppId, token.AccessToken, redisTimeExpire)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+func WxGetRedisAccessTokenV2(wxAppId, wxAppSecret string) (accessToken string, err error) {
|
|
|
+ defer func() {
|
|
|
if err != nil {
|
|
|
- err = errors.New("保存access_token失败 " + err.Error())
|
|
|
- return accessToken, err
|
|
|
+ go alarm_msg.SendAlarmMsg("WxGetRedisAccessTokenV2 Err:"+err.Error(), 1)
|
|
|
}
|
|
|
- accessToken = token.AccessToken
|
|
|
- return
|
|
|
+ }()
|
|
|
+ postData, err := json.Marshal(map[string]string{
|
|
|
+ "WxAppId": wxAppId,
|
|
|
+ "WxAppSecret": wxAppSecret,
|
|
|
+ })
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("WxGetRedisAccessTokenV2 json.Marshal Err:%s", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ body := ioutil.NopCloser(strings.NewReader(string(postData)))
|
|
|
+ client := &http2.Client{}
|
|
|
+ requestUrl := utils.HongzePublicApiUrl + "/wechat/access_token"
|
|
|
+ req, err := http2.NewRequest("POST", requestUrl, body)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("WxGetRedisAccessTokenV2 http.NewRequest Err:%s", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ contentType := "application/json;charset=utf-8"
|
|
|
+ req.Header.Set("Content-Type", contentType)
|
|
|
+ req.Header.Set("Authorization", utils.SendTemplateMsgAuthorization)
|
|
|
+ resp, err := client.Do(req)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("WxGetRedisAccessTokenV2 http client.Do Err:%s", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer resp.Body.Close()
|
|
|
+ b, err := ioutil.ReadAll(resp.Body)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("WxGetRedisAccessTokenV2 ioutil.ReadAll Err:%s", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ result := new(GetAccessTokenResp)
|
|
|
+ err = json.Unmarshal(b, &result)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("WxGetRedisAccessTokenV2 json.Unmarshal Err:%s", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if result.Ret != 200 {
|
|
|
+ err = errors.New(string(b))
|
|
|
+ err = fmt.Errorf("WxGetRedisAccessTokenV2 result.Ret != 200 Err:%s", err.Error())
|
|
|
+ return
|
|
|
}
|
|
|
+ accessToken = result.Data.AccessToken
|
|
|
return
|
|
|
}
|
|
|
|
|
@@ -265,7 +321,7 @@ func WxUsersGet() (openIdStr string) {
|
|
|
}
|
|
|
|
|
|
func WxAdminOpenIdGet() (openIdStr string) {
|
|
|
- accessToken, err := WxGetRedisAccessToken(utils.AdminWxAppId, utils.AdminWxAppSecret)
|
|
|
+ accessToken, err := WxGetRedisAccessTokenV2(utils.AdminWxAppId, utils.AdminWxAppSecret)
|
|
|
if err != nil {
|
|
|
utils.FileLog.Info("GetWxAccessToken Err:%s", err.Error())
|
|
|
return
|