diff --git a/business/jxutils/tasks/configrefresh.go b/business/jxutils/tasks/configrefresh.go index fdb9b596d..2ae2629f8 100644 --- a/business/jxutils/tasks/configrefresh.go +++ b/business/jxutils/tasks/configrefresh.go @@ -32,7 +32,7 @@ type ElmTokenForCompatible struct { Success bool `json:"success"` } -func RefreshConfig(configKey string, expiresTime time.Duration, configGetter func() string, configSetter func(value string)) error { +func RefreshConfig(configKey string, expiresTime time.Duration, configGetter func() (string, string), configSetter func(value string)) error { sleepGap := expiresTime / 10 needRefreshGap := expiresTime * 8 / 10 if sleepGap > maxRefreshGap { @@ -58,7 +58,7 @@ func RefreshConfig(configKey string, expiresTime time.Duration, configGetter fun } } if handleType != 0 { - if curConfig.Token = configGetter(); curConfig.Token == "" { + if curConfig.Token, curConfig.Date = configGetter(); curConfig.Token == "" { if beego.BConfig.RunMode == "prod" { globals.SugarLogger.Errorf("RefreshConfig %s get empty token", configKey) } else { @@ -68,7 +68,9 @@ func RefreshConfig(configKey string, expiresTime time.Duration, configGetter fun } globals.SugarLogger.Debugf("RefreshConfig refresh %s, value:%s", configKey, curConfig.Token) - curConfig.Date = utils.GetCurTimeStr() + if curConfig.Date == "" { + curConfig.Date = utils.GetCurTimeStr() + } var num int64 var err error @@ -101,20 +103,20 @@ func RefreshConfig(configKey string, expiresTime time.Duration, configGetter fun } func RefreshWeixinToken() error { - return RefreshConfig("wechat", weixinTokenExpires, func() string { + return RefreshConfig("wechat", weixinTokenExpires, func() (string, string) { if beego.BConfig.RunMode == "prod" { if tokenInfo, err := api.WeixinAPI.RefreshToken(); err == nil { - return tokenInfo.AccessToken + return tokenInfo.AccessToken, "" } } - return "" + return "", "" }, func(value string) { api.WeixinAPI.SetToken(value) }) } func RefreshElmToken() error { - return RefreshConfig("eleme", elmTokenExpires, func() string { + return RefreshConfig("eleme", elmTokenExpires, func() (string, string) { if beego.BConfig.RunMode == "prod" { if tokenInfo, err := api.ElmAPI.RefreshTokenIndividual(); err == nil { tokenInfo2 := &ElmTokenForCompatible{ @@ -126,10 +128,10 @@ func RefreshElmToken() error { RefreshToken: "", Success: true, } - return string(utils.MustMarshal(tokenInfo2)) + return string(utils.MustMarshal(tokenInfo2)), "" } } - return "" + return "", "" }, func(value string) { var tokenInfo ElmTokenForCompatible err := utils.UnmarshalUseNumber([]byte(value), &tokenInfo) @@ -140,13 +142,13 @@ func RefreshElmToken() error { } func RefreshWeimobToken() error { - return RefreshConfig("weimob", weimobTokenExpires, func() string { + return RefreshConfig("weimob", weimobTokenExpires, func() (string, string) { if true { //beego.BConfig.RunMode == "prod" { if tokenInfo, err := api.WeimobAPI.RefreshTokenByRefreshToken(); err == nil { - return string(utils.MustMarshal(tokenInfo)) + return string(utils.MustMarshal(tokenInfo)), utils.Time2Str(time.Now().Add((time.Duration(tokenInfo.ExpiresIn) - weimobTokenExpires/time.Second) * time.Second)) } } - return "" + return "", "" }, func(value string) { var tokenInfo *weimobapi.TokenInfo err := utils.UnmarshalUseNumber([]byte(value), &tokenInfo) @@ -161,7 +163,7 @@ func SaveWeimobToken(token *weimobapi.TokenInfo) (err error) { config := &legacymodel.Config{ Thirdparty: "weimob", Token: string(utils.MustMarshal(token)), - Date: utils.GetCurTimeStr(), + Date: utils.Time2Str(time.Now().Add((time.Duration(token.ExpiresIn) - weimobTokenExpires/time.Second) * time.Second)), LastOperator: "admin", } return dao.CreateOrUpdate(db, config)