From b6c60c2cc32576cf2b0a80052d2f06e90c4a3fea Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 24 Apr 2019 14:21:43 +0800 Subject: [PATCH] =?UTF-8?q?-=20refresh=20token=E7=9A=84=E6=97=B6=E5=80=99?= =?UTF-8?q?=E8=A6=81=E5=88=A4=E6=96=AD=E7=9B=B8=E5=BA=94API=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E5=AD=98=E5=9C=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxutils/tasks/configrefresh.go | 119 +++++++++++++----------- 1 file changed, 64 insertions(+), 55 deletions(-) diff --git a/business/jxutils/tasks/configrefresh.go b/business/jxutils/tasks/configrefresh.go index 025dac7a7..aa4b9ba76 100644 --- a/business/jxutils/tasks/configrefresh.go +++ b/business/jxutils/tasks/configrefresh.go @@ -106,67 +106,76 @@ func RefreshConfig(configKey string, expiresTime time.Duration, configGetter fun return err } -func RefreshWeixinToken() error { - return RefreshConfig("wechat", weixinTokenExpires, func() (string, string) { - globals.SugarLogger.Debugf("RefreshWeixinToken RunMode:%s", beego.BConfig.RunMode) - if beego.BConfig.RunMode == "prod" { - if tokenInfo, err := api.WeixinAPI.CBRetrieveToken(); err == nil { - globals.SugarLogger.Debugf("RefreshWeixinToken tokenInfo:%s", utils.Format4Output(tokenInfo, true)) - return tokenInfo.AccessToken, "" - } else { - globals.SugarLogger.Errorf("RefreshWeixinToken RefreshToken failed with error:%v", err) - } - } - return "", "" - }, func(value string) { - api.WeixinAPI.CBSetToken(value) - }) -} - -func RefreshElmToken() error { - return RefreshConfig("eleme", elmTokenExpires, func() (string, string) { - if beego.BConfig.RunMode == "prod" { - if tokenInfo, err := api.ElmAPI.RefreshTokenIndividual(); err == nil { - tokenInfo2 := &ElmTokenForCompatible{ - Error: "", - ErrorDescription: "", - AccessToken: tokenInfo.AccessToken, - TokenType: tokenInfo.TokenType, - Expires: tokenInfo.ExpiresIn, - RefreshToken: "", - Success: true, +func RefreshWeixinToken() (err error) { + if api.WeixinAPI != nil { + err = RefreshConfig("wechat", weixinTokenExpires, func() (string, string) { + globals.SugarLogger.Debugf("RefreshWeixinToken RunMode:%s", beego.BConfig.RunMode) + if beego.BConfig.RunMode == "prod" { + if tokenInfo, err := api.WeixinAPI.CBRetrieveToken(); err == nil { + globals.SugarLogger.Debugf("RefreshWeixinToken tokenInfo:%s", utils.Format4Output(tokenInfo, true)) + return tokenInfo.AccessToken, "" + } else { + globals.SugarLogger.Errorf("RefreshWeixinToken RefreshToken failed with error:%v", err) } - return string(utils.MustMarshal(tokenInfo2)), "" } - } - return "", "" - }, func(value string) { - var tokenInfo ElmTokenForCompatible - err := utils.UnmarshalUseNumber([]byte(value), &tokenInfo) - if err == nil { - api.ElmAPI.SetToken(tokenInfo.AccessToken) - } - }) + return "", "" + }, func(value string) { + api.WeixinAPI.CBSetToken(value) + }) + } + return err } -func RefreshWeimobToken() error { - return RefreshConfig("weimob", weimobTokenExpires, func() (string, string) { - if beego.BConfig.RunMode == "prod" { - if tokenInfo, err := api.WeimobAPI.RefreshTokenByRefreshToken(); err == nil { - return string(utils.MustMarshal(tokenInfo)), utils.Time2Str(time.Now().Add((time.Duration(tokenInfo.ExpiresIn) - weimobTokenExpires/time.Second) * time.Second)) +func RefreshElmToken() (err error) { + if api.ElmAPI != nil { + err = RefreshConfig("eleme", elmTokenExpires, func() (string, string) { + if beego.BConfig.RunMode == "prod" { + if tokenInfo, err := api.ElmAPI.RefreshTokenIndividual(); err == nil { + tokenInfo2 := &ElmTokenForCompatible{ + Error: "", + ErrorDescription: "", + AccessToken: tokenInfo.AccessToken, + TokenType: tokenInfo.TokenType, + Expires: tokenInfo.ExpiresIn, + RefreshToken: "", + Success: true, + } + return string(utils.MustMarshal(tokenInfo2)), "" + } } - } - return "", "" - }, func(value string) { - var tokenInfo *weimobapi.TokenInfo - err := utils.UnmarshalUseNumber([]byte(value), &tokenInfo) - if err == nil { - api.WeimobAPI.SetToken(tokenInfo) - } - }) + return "", "" + }, func(value string) { + var tokenInfo ElmTokenForCompatible + err := utils.UnmarshalUseNumber([]byte(value), &tokenInfo) + if err == nil { + api.ElmAPI.SetToken(tokenInfo.AccessToken) + } + }) + } + return err } -func RefreshDingDingToken() error { +func RefreshWeimobToken() (err error) { + if api.WeimobAPI != nil { + err = RefreshConfig("weimob", weimobTokenExpires, func() (string, string) { + if beego.BConfig.RunMode == "prod" { + if tokenInfo, err := api.WeimobAPI.RefreshTokenByRefreshToken(); err == nil { + return string(utils.MustMarshal(tokenInfo)), utils.Time2Str(time.Now().Add((time.Duration(tokenInfo.ExpiresIn) - weimobTokenExpires/time.Second) * time.Second)) + } + } + return "", "" + }, func(value string) { + var tokenInfo *weimobapi.TokenInfo + err := utils.UnmarshalUseNumber([]byte(value), &tokenInfo) + if err == nil { + api.WeimobAPI.SetToken(tokenInfo) + } + }) + } + return err +} + +func RefreshDingDingToken() (err error) { api.DingDingAPI.RetrieveToken() return RefreshConfig("dingding", dingdingTokenExpires, func() (string, string) { globals.SugarLogger.Debugf("RefreshDingDingToken RunMode:%s", beego.BConfig.RunMode) @@ -195,7 +204,7 @@ func SaveWeimobToken(token *weimobapi.TokenInfo) (err error) { return dao.CreateOrUpdate(db, config) } -func RefreshYilianyunToken() error { +func RefreshYilianyunToken() (err error) { return RefreshConfig("yilianyun", yilianyunTokenExpires, func() (string, string) { globals.SugarLogger.Debugf("RefreshYilianyunToken RunMode:%s", beego.BConfig.RunMode) if beego.BConfig.RunMode == "prod" {