From 8294f82ed5ddf80883e69e988d066631b096187b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Wed, 12 Aug 2020 14:27:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E7=9A=84wexintoken?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eventhub/syseventhub/syseventhub.go | 8 +++++ business/jxutils/tasks/configrefresh.go | 36 +++++++++++++++++++ main.go | 4 +++ 3 files changed, 48 insertions(+) diff --git a/business/jxutils/eventhub/syseventhub/syseventhub.go b/business/jxutils/eventhub/syseventhub/syseventhub.go index a99d35e02..373d62240 100644 --- a/business/jxutils/eventhub/syseventhub/syseventhub.go +++ b/business/jxutils/eventhub/syseventhub/syseventhub.go @@ -15,6 +15,7 @@ const ( EventTypeWXToken = "wxToken" EventTypeWX2Token = "wx2Token" + EventTypeWX3Token = "wx3Token" EventTypeYLYToken = "ylyToken" EventTypeWeimobToken = "weimobToken" @@ -66,6 +67,13 @@ func (h *Hub) OnNewWX2Token(token string) { }) } +func (h *Hub) OnNewWX3Token(token string) { + h.eventHub.PostNewEvent(EventCategory, &eventhub.EventInfo{ + Type: EventTypeWX3Token, + Data: token, + }) +} + func (h *Hub) OnNewYLYToken(token string) { h.eventHub.PostNewEvent(EventCategory, &eventhub.EventInfo{ Type: EventTypeYLYToken, diff --git a/business/jxutils/tasks/configrefresh.go b/business/jxutils/tasks/configrefresh.go index abbff08c0..dc77418fa 100644 --- a/business/jxutils/tasks/configrefresh.go +++ b/business/jxutils/tasks/configrefresh.go @@ -165,6 +165,33 @@ func RefreshWeixin2Token() (err error) { return err } +func RefreshWeixin3Token() (err error) { + if api.WeixinMiniAPI3 != nil { + err = RefreshConfig("wechat3", weixinTokenExpires, func() (token string, expireTimeStr string) { + globals.SugarLogger.Debugf("RefreshWeixin3Token RunMode:%s", beego.BConfig.RunMode) + if globals.IsMainProductEnv() { + if tokenInfo, err := api.WeixinMiniAPI3.CBRetrieveToken(); err == nil { + globals.SugarLogger.Debugf("RefreshWeixin3Token tokenInfo:%s", utils.Format4Output(tokenInfo, true)) + token = tokenInfo.AccessToken + } else { + globals.SugarLogger.Errorf("RefreshWeixin3Token RefreshToken failed with error:%v", err) + } + } else { + if tokenInfo := getWX3TokenFromRemote(api.WeixinMiniAPI3.CBGetToken()); tokenInfo != nil { + expireTimeStr = utils.Time2Str(time.Now().Add(-weixinTokenExpires)) + token = tokenInfo.Token + } + } + return token, expireTimeStr + }, func(value string) { + globals.SugarLogger.Debugf("RefreshWeixinToken setter value:%s", value) + syseventhub.SysEventHub.OnNewWX3Token(value) + api.WeixinMiniAPI3.CBSetToken(value) + }) + } + return err +} + func RefreshWeimobToken() (err error) { if api.WeimobAPI != nil { err = RefreshConfig("weimob", weimobTokenExpires, func() (token string, expireTimeStr string) { @@ -315,6 +342,15 @@ func getWX2TokenFromRemote(oldToken string) (tokenInfo *syseventhub.TokenInfo) { return tokenInfo } +func getWX3TokenFromRemote(oldToken string) (tokenInfo *syseventhub.TokenInfo) { + if !globals.IsMainProductEnv() && globals.GetWeixinTokenKey != "" && globals.GetWeixinTokenURL != "" { + tokenInfo = PollingRemotEvent(globals.GetWeixinTokenURL, 0, map[string]interface{}{ + "oldToken": oldToken, + }) + } + return tokenInfo +} + func getYLYTokenFromRemote(oldToken string) (tokenInfo *syseventhub.TokenInfo) { if !globals.IsMainProductEnv() && globals.GetWeixinTokenKey != "" && globals.GetYLYTokenURL != "" { tokenInfo = PollingRemotEvent(globals.GetYLYTokenURL, 0, map[string]interface{}{ diff --git a/main.go b/main.go index 6d77b0f82..e0d208afd 100644 --- a/main.go +++ b/main.go @@ -136,6 +136,10 @@ func main() { globals.SugarLogger.Errorf("RefreshWeixin2Token failed with error:%s", err) return } + if err := tasks.RefreshWeixin3Token(); err != nil { + globals.SugarLogger.Errorf("RefreshWeixin2Token failed with error:%s", err) + return + } // if err := tasks.RefreshWeimobToken(); err != nil { // globals.SugarLogger.Errorf("RefreshWeimobToken failed with error:%s", err) // return