|
@@ -1,7 +1,7 @@
|
|
|
package services
|
|
|
|
|
|
import (
|
|
|
- "errors"
|
|
|
+ "eta/eta_mini_bridge/models"
|
|
|
"eta/eta_mini_bridge/utils"
|
|
|
"fmt"
|
|
|
"time"
|
|
@@ -36,27 +36,48 @@ func GetWxChat() (officialAccount *officialaccount.OfficialAccount) {
|
|
|
|
|
|
// GetAccessToken 获取accessToken
|
|
|
func (wechat WechatAccessToken) GetAccessToken() (accessToken string, err error) {
|
|
|
- accessToken, err = utils.Rc.RedisString(utils.CACHE_WX_ACCESS_TOKEN_HZ)
|
|
|
- if accessToken != "" {
|
|
|
+ //如果300s就要过期了,那么就去刷新accessToken
|
|
|
+ wxToken, err := models.GetWxTokenById()
|
|
|
+ if err != nil {
|
|
|
return
|
|
|
}
|
|
|
+ //如果300s就要过期了,那么就去刷新accessToken
|
|
|
+ if wxToken.ExpiresIn < time.Now().Unix()+300 {
|
|
|
+ tmpAccessToken, expires, tmpErr := getTokenFromServer(utils.DW_WX_APPID, utils.DW_WX_APP_SECRET)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
- // 缓存中没有取到数据,那么就需要强制刷新的accessToken
|
|
|
- tmpAccessToken, expires, tmpErr := getTokenFromServer(utils.DW_WX_APPID, utils.DW_WX_APP_SECRET)
|
|
|
- if tmpAccessToken == "" {
|
|
|
- err = errors.New("获取微信token失败,Err:" + tmpErr.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- redisTimeExpire := time.Duration(expires-600) * time.Second
|
|
|
- err = utils.Rc.Put(utils.CACHE_WX_ACCESS_TOKEN_HZ, tmpAccessToken, redisTimeExpire)
|
|
|
- if err != nil {
|
|
|
- err = errors.New("更新微信token失败")
|
|
|
- return
|
|
|
+ var updateCols = []string{"access_token", "expires_in"}
|
|
|
+ wxToken.AccessToken = tmpAccessToken
|
|
|
+ wxToken.ExpiresIn = time.Now().Unix() + expires - 600 //快过期前10分钟就刷新掉
|
|
|
+ wxToken.Update(updateCols)
|
|
|
}
|
|
|
- accessToken = tmpAccessToken
|
|
|
+ accessToken = wxToken.AccessToken
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+// accessToken, err = utils.Rc.RedisString(utils.CACHE_WX_ACCESS_TOKEN_DW)
|
|
|
+// if accessToken != "" {
|
|
|
+// return
|
|
|
+// }
|
|
|
+
|
|
|
+// // 缓存中没有取到数据,那么就需要强制刷新的accessToken
|
|
|
+// tmpAccessToken, _, tmpErr := getTokenFromServer(utils.DW_WX_APPID, utils.DW_WX_APP_SECRET)
|
|
|
+// if tmpAccessToken == "" {
|
|
|
+// err = errors.New("获取微信token失败,Err:" + tmpErr.Error())
|
|
|
+// return
|
|
|
+// }
|
|
|
+
|
|
|
+// redisTimeExpire := time.Duration(expires-600) * time.Second
|
|
|
+// err = utils.Rc.Put(utils.CACHE_WX_ACCESS_TOKEN_HZ, tmpAccessToken, redisTimeExpire)
|
|
|
+// if err != nil {
|
|
|
+// err = errors.New("更新微信token失败")
|
|
|
+// return
|
|
|
+// }
|
|
|
+// accessToken = tmpAccessToken
|
|
|
+// return
|
|
|
// //如果300s就要过期了,那么就去刷新accessToken
|
|
|
// if wxToken.ExpiresIn < time.Now().Unix()+300 {
|
|
|
// tmpAccessToken, expires, tmpErr := getTokenFromServer(WxAppId, WxAppSecret)
|