From e135b3e5f614f3b1a71f5c2dcdd5e964ec46e7b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 24 Feb 2020 15:31:01 +0800 Subject: [PATCH] =?UTF-8?q?getwx2token=E4=B8=80=E5=A5=97=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eventhub/syseventhub/syseventhub.go | 18 +++++++++- business/jxutils/tasks/configrefresh.go | 36 +++++++++++++++++++ conf/app.conf | 4 +++ controllers/event.go | 2 +- controllers/sys.go | 17 +++++++++ globals/globals.go | 10 +++--- main.go | 4 +++ routers/commentsRouter_controllers.go | 9 +++++ 8 files changed, 94 insertions(+), 6 deletions(-) diff --git a/business/jxutils/eventhub/syseventhub/syseventhub.go b/business/jxutils/eventhub/syseventhub/syseventhub.go index 528c76973..a99d35e02 100644 --- a/business/jxutils/eventhub/syseventhub/syseventhub.go +++ b/business/jxutils/eventhub/syseventhub/syseventhub.go @@ -13,7 +13,9 @@ import ( const ( EventCategory = "sys" - EventTypeWXToken = "wxToken" + EventTypeWXToken = "wxToken" + EventTypeWX2Token = "wx2Token" + EventTypeYLYToken = "ylyToken" EventTypeWeimobToken = "weimobToken" ) @@ -57,6 +59,13 @@ func (h *Hub) OnNewWXToken(token string) { }) } +func (h *Hub) OnNewWX2Token(token string) { + h.eventHub.PostNewEvent(EventCategory, &eventhub.EventInfo{ + Type: EventTypeWX2Token, + Data: token, + }) +} + func (h *Hub) OnNewYLYToken(token string) { h.eventHub.PostNewEvent(EventCategory, &eventhub.EventInfo{ Type: EventTypeYLYToken, @@ -82,7 +91,10 @@ func (h *Hub) GetToken(tokenType, oldToken string, waitTime time.Duration) (toke if weimobToken := api.WeimobAPI.GetToken(); weimobToken != nil { token = string(utils.MustMarshal(weimobToken)) } + case EventTypeWX2Token: + token = api.WeixinMiniAPI2.CBGetToken() } + if token != oldToken { tokenInfo = &TokenInfo{ IsNew: false, @@ -105,6 +117,10 @@ func (h *Hub) GetWXToken(oldToken string, waitTime time.Duration) (tokenInfo *To return h.GetToken(EventTypeWXToken, oldToken, waitTime) } +func (h *Hub) GetWX2Token(oldToken string, waitTime time.Duration) (tokenInfo *TokenInfo) { + return h.GetToken(EventTypeWX2Token, oldToken, waitTime) +} + func (h *Hub) GetYLYToken(oldToken string, waitTime time.Duration) (tokenInfo *TokenInfo) { return h.GetToken(EventTypeYLYToken, oldToken, waitTime) } diff --git a/business/jxutils/tasks/configrefresh.go b/business/jxutils/tasks/configrefresh.go index 323783a9e..be687df7e 100644 --- a/business/jxutils/tasks/configrefresh.go +++ b/business/jxutils/tasks/configrefresh.go @@ -138,6 +138,33 @@ func RefreshWeixinToken() (err error) { return err } +func RefreshWeixin2Token() (err error) { + if api.WeixinMiniAPI2 != nil { + err = RefreshConfig("wechat2", weixinTokenExpires, func() (token string, expireTimeStr string) { + globals.SugarLogger.Debugf("RefreshWeixin2Token RunMode:%s", beego.BConfig.RunMode) + if globals.IsMainProductEnv() { + if tokenInfo, err := api.WeixinMiniAPI2.CBRetrieveToken(); err == nil { + globals.SugarLogger.Debugf("RefreshWeixin2Token tokenInfo:%s", utils.Format4Output(tokenInfo, true)) + token = tokenInfo.AccessToken + } else { + globals.SugarLogger.Errorf("RefreshWeixin2Token RefreshToken failed with error:%v", err) + } + } else { + if tokenInfo := getWX2TokenFromRemote(api.WeixinMiniAPI2.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.OnNewWX2Token(value) + api.WeixinMiniAPI2.CBSetToken(value) + }) + } + return err +} + func RefreshWeimobToken() (err error) { if api.WeimobAPI != nil { err = RefreshConfig("weimob", weimobTokenExpires, func() (token string, expireTimeStr string) { @@ -279,6 +306,15 @@ func getWXTokenFromRemote(oldToken string) (tokenInfo *syseventhub.TokenInfo) { return tokenInfo } +func getWX2TokenFromRemote(oldToken string) (tokenInfo *syseventhub.TokenInfo) { + if !globals.IsMainProductEnv() && globals.GetWeixinTokenKey != "" && globals.GetWeixin2TokenURL != "" { + tokenInfo = PollingRemotEvent(globals.GetWeixin2TokenURL, 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/conf/app.conf b/conf/app.conf index 21cafe9ef..554a79ec2 100644 --- a/conf/app.conf +++ b/conf/app.conf @@ -316,6 +316,9 @@ dadaSourceID = "73753" weixinAppID = "wx2bb99eb5d2c9b82c" weixinSecret = "6bbbed1443cc062c20a015a64c07a531" getWeixinTokenURL = "http://www.jxc4.com/v2/sys/GetWXToken" +getWeixin2TokenURL = "http://www.jxc4.com/v2/sys/GetWX2Token" +weixinMiniAppID2 = "wx4b5930c13f8b1170" +weixinMiniSecret2 = "2a57228a716ce991a52739f0ff41111d" mtwmCallbackURL = "http://callback.alpha.jxc4.com" @@ -367,6 +370,7 @@ weixinMiniSecret2 = "2a57228a716ce991a52739f0ff41111d" disableWeimob = false getWeixinTokenURL = "http://www.jxc4.com/v2/sys/GetWXToken" +getWeixin2TokenURL = "http://www.jxc4.com/v2/sys/GetWX2Token" getWeimobTokenURL = "http://www.jxc4.com/v2/sys/GetWeimobToken" dbConnectStr = "root:WebServer@1@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true" diff --git a/controllers/event.go b/controllers/event.go index 6618627f9..2a70b7a52 100644 --- a/controllers/event.go +++ b/controllers/event.go @@ -72,7 +72,7 @@ func (c *EventController) GetCheckVendorCookie() { func (c *EventController) GetWeixinUnlimited() { c.callGetWeixinUnlimited(func(params *tEventGetWeixinUnlimitedParams) (retVal interface{}, errCode string, err error) { // api.WeixinMiniAPI2.CBRetrieveToken() - result, err := api.WeixinAPI.GetUnlimited(params.Scene, params.Page) + result, err := api.WeixinMiniAPI2.GetUnlimited(params.Scene, params.Page) fileName := "wxcode" + utils.Int64ToStr(time.Now().Unix()) + ".jpg" retVal, err = jxutils.UploadExportContent([]byte(result["fakeData"].(string)), fileName) // tasks.RefreshWeixinToken() diff --git a/controllers/sys.go b/controllers/sys.go index 4e4b66a0e..6c7160961 100644 --- a/controllers/sys.go +++ b/controllers/sys.go @@ -37,6 +37,23 @@ func (c *SysController) GetWXToken() { }) } +// @Title 得到微信小程序2token +// @Description 得到微信小程序2token +// @Param accessKey query string true "假token" +// @Param oldToken query string false "之前的token" +// @Param waitSecond query int false "等待秒数" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /GetWX2Token [get] +func (c *SysController) GetWX2Token() { + c.callGetWX2Token(func(params *tSysGetWX2TokenParams) (retVal interface{}, errCode string, err error) { + if params.AccessKey == globals.GetWeixinTokenKey { + retVal = syseventhub.SysEventHub.GetWX2Token(params.OldToken, time.Duration(params.WaitSecond)*time.Second) + } + return retVal, "", err + }) +} + // @Title 得到易联云token // @Description 得到易联云token // @Param accessKey query string true "假token" diff --git a/globals/globals.go b/globals/globals.go index 85cc2ea0a..4a8ab712c 100644 --- a/globals/globals.go +++ b/globals/globals.go @@ -32,10 +32,11 @@ var ( BackstageHost string WxBackstageHost string - GetWeixinTokenURL string - GetWeixinTokenKey string - GetYLYTokenURL string - GetWeimobTokenURL string + GetWeixinTokenURL string + GetWeixin2TokenURL string + GetWeixinTokenKey string + GetYLYTokenURL string + GetWeimobTokenURL string StoreName string StoreNameMtwm string @@ -99,6 +100,7 @@ func Init() { WxBackstageHost = beego.AppConfig.DefaultString("wxBackstageHost", "") GetWeixinTokenURL = beego.AppConfig.DefaultString("getWeixinTokenURL", "") + GetWeixin2TokenURL = beego.AppConfig.DefaultString("getWeixin2TokenURL", "") GetYLYTokenURL = beego.AppConfig.DefaultString("getYLYTokenURL", "") GetWeimobTokenURL = beego.AppConfig.DefaultString("getWeimobTokenURL", "") GetWeixinTokenKey = beego.AppConfig.DefaultString("getWeixinTokenKey", "") diff --git a/main.go b/main.go index a642bdbb0..15feef3f3 100644 --- a/main.go +++ b/main.go @@ -126,6 +126,10 @@ func main() { globals.SugarLogger.Errorf("RefreshWeixinToken failed with error:%s", err) return } + if err := tasks.RefreshWeixin2Token(); 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 diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index a735ecf86..43f8f4417 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -2133,6 +2133,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SysController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SysController"], + beego.ControllerComments{ + Method: "GetWX2Token", + Router: `/GetWX2Token`, + AllowHTTPMethods: []string{"get"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SysController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SysController"], beego.ControllerComments{ Method: "GetWXToken",