|
@@ -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
|