Browse Source

fix:修改公众号token获取方式

zqbao 9 months ago
parent
commit
f972a685a6
3 changed files with 49 additions and 18 deletions
  1. 39 16
      services/wechat/wechat.go
  2. 5 2
      utils/config.go
  3. 5 0
      utils/constants.go

+ 39 - 16
services/wechat/wechat.go

@@ -1,7 +1,9 @@
 package wechat
 
 import (
+	"context"
 	"encoding/json"
+	"errors"
 	"eta/eta_mini_api/models"
 	"eta/eta_mini_api/utils"
 	"fmt"
@@ -30,8 +32,8 @@ func GetWxChat() (officialAccount *officialaccount.OfficialAccount) {
 	wc := wechat.NewWechat()
 	memory := cache.NewMemory()
 	conf := &config.Config{
-		AppID:          utils.DW_WX_APPID,
-		AppSecret:      utils.DW_WX_APP_SECRET,
+		AppID:          utils.HZ_WX_APPID,
+		AppSecret:      utils.HZ_WX_APP_SECRET,
 		Token:          "",
 		EncodingAESKey: "",
 		Cache:          memory,
@@ -42,27 +44,48 @@ func GetWxChat() (officialAccount *officialaccount.OfficialAccount) {
 	return
 }
 
+var DefaultKey = "zcmRedis"
+
 // GetAccessToken 获取accessToken
 func (wechat WechatAccessToken) GetAccessToken() (accessToken string, err error) {
-	wxToken, err := models.GetWxTokenById()
+	accessToken, err = utils.Redis.Get(context.TODO(), utils.CACHE_WX_ACCESS_TOKEN_HZ).Result()
+	// wxToken, err := models.GetWxTokenById()
+	if err != nil {
+		return
+	}
+	// 缓存中没有取到数据,那么就需要强制刷新的accessToken
+	tmpAccessToken, expires, tmpErr := getTokenFromServer(utils.WX_APPID, utils.WX_APP_SECRET)
+	if tmpAccessToken == "" {
+		err = errors.New("获取微信token失败,Err:" + tmpErr.Error())
+		return
+	}
+	redisTimeExpire := time.Duration(expires-600) * time.Second
+	err = utils.Redis.SetEX(context.TODO(), utils.CACHE_WX_ACCESS_TOKEN_HZ, tmpAccessToken, redisTimeExpire).Err()
 	if err != nil {
 		return
 	}
-	//如果300s就要过期了,那么就去刷新accessToken
-	if wxToken.ExpiresIn < time.Now().Unix()+300 {
-		tmpAccessToken, expires, tmpErr := getTokenFromServer(WxAppId, WxAppSecret)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-
-		var updateCols = []string{"access_token", "expires_in"}
-		wxToken.AccessToken = tmpAccessToken
-		wxToken.ExpiresIn = expires - 600 //快过期前10分钟就刷新掉
-		wxToken.Update(updateCols)
+	err = utils.Redis.HSet(context.TODO(), DefaultKey, true).Err()
+	// err = utils.Redis.Put(utils.CACHE_WX_ACCESS_TOKEN_HZ, tmpAccessToken, redisTimeExpire)
+	if err != nil {
+		err = errors.New("更新微信token失败")
+		return
 	}
-	accessToken = wxToken.AccessToken
 	return
+	// //如果300s就要过期了,那么就去刷新accessToken
+	// if wxToken.ExpiresIn < time.Now().Unix()+300 {
+	// 	tmpAccessToken, expires, tmpErr := getTokenFromServer(utils.HZ_WX_APPID, utils.HZ_WX_APP_SECRET)
+	// 	if tmpErr != nil {
+	// 		err = tmpErr
+	// 		return
+	// 	}
+
+	// 	var updateCols = []string{"access_token", "expires_in"}
+	// 	wxToken.AccessToken = tmpAccessToken
+	// 	wxToken.ExpiresIn = expires - 600 //快过期前10分钟就刷新掉
+	// 	wxToken.Update(updateCols)
+	// }
+	// accessToken = wxToken.AccessToken
+	// return
 }
 
 // getTokenFromServer 服务端获取accessToken

+ 5 - 2
utils/config.go

@@ -95,8 +95,10 @@ func init() {
 	ETA_MINI_BRIDGE_URL = config["eta_mini_bridge_url"]
 	ETA_MINI_APPID = config["eta_mini_appid"]
 	ETA_MINI_APP_SECRET = config["eta_mini_app_secret"]
-	HZ_WX_APPID = config["hz_wx_appid"]
-	HZ_WX_APP_SECRET = config["hz_wx_app_secret"]
+	// HZ_WX_APPID = config["hz_wx_appid"]
+	// HZ_WX_APP_SECRET = config["hz_wx_app_secret"]
+	HZ_WX_APPID = "wx9b5d7291e581233a"
+	HZ_WX_APP_SECRET = "f4d52e34021eee262dce9682b31f8861"
 
 	initRedis(config)
 }
@@ -131,6 +133,7 @@ func initRedis(config map[string]string) {
 	if err != nil {
 		panic("redis 链接失败:" + err.Error())
 	}
+	client.SetEX(context.TODO(), "dfs", "dfsa", 321)
 
 	//全局赋值redis链接
 	Redis = client

+ 5 - 0
utils/constants.go

@@ -66,3 +66,8 @@ const (
 	CACHE_ACCESS_TOKEN_LOGIN_NO_TRUST = "pc_eta_min_crm:login:no_trust:" //管理后台登录(不可信登录态)
 	CACHE_ACCESS_WX_BIND              = "eta_mini_api:phone:email:"      //管理后台登录(不可信登录态)
 )
+
+// 缓存key
+const (
+	CACHE_WX_ACCESS_TOKEN_HZ = "wx:accesstoken:hzyj" //弘则研究公众号 微信accessToken
+)