package models import ( "time" "wechat-conf/models/model" "wechat-conf/utils" "github.com/astaxie/beego" ) // ComponentInit 初始化第三方 func ComponentInit() { var conf = model.SysComponentConf{} _, err := DBEngine.Get(&conf) if err != nil { utils.LogError("初始化第三方失败:", err) return } utils.LogError("获取第三方信息:", conf) if conf.Appid == "" { utils.LogError("初始化第三方数据失败,数据为空") return } d := "0" if !conf.ExpiresDate.IsZero() { now := time.Now() subd := conf.ExpiresDate.Sub(now) beego.Error(d) d = string(subd) } beego.Error("过期时间:", d) var cert = map[string]string{ "appid": conf.Appid, "aeskey": conf.Aeskey, "secret": conf.Secret, "componentVerifyTicket": conf.Ticket, "token": conf.Token, "expires_in": d, } utils.ComponentInit(cert, UpdateComponentToken) } // UpdateComponentToken 更新第三方token func UpdateComponentToken(token map[string]interface{}) { beego.Error("更新第三方token:", token) if token["accessToken"].(string) == "" { return } var conf = model.SysComponentConf{ Token: token["accessToken"].(string), } expire := token["expire_in"].(int64) if expire > 0 { beego.Error(time.Now()) expriesTime := time.Now().Local().Add(time.Duration(expire) * time.Second) beego.Error(expriesTime) conf.ExpiresDate = expriesTime sql := `update sys_component_conf set token=?,expires_date=?` _, err := DBEngine.Exec(sql, conf.Token, conf.ExpiresDate) if err != nil { utils.LogError("更新第三方token失败:", err) } } else { sql := `update sys_component_conf set token=?` _, err := DBEngine.Exec(sql, conf.Token, conf.ExpiresDate) if err != nil { utils.LogError("更新第三方token失败:", err) } } } // InitWechat 初始化微信 func InitWechat() { var wxconfs []model.SysWechatConf err := DBEngine.Where("status=1").Find(&wxconfs) if err != nil { utils.LogError("初始化微信失败:", err) return } for _, conf := range wxconfs { var cert = map[string]string{ "authorizer_access_token": conf.Token, "authorizer_refresh_token": conf.RefreshToken, "authorization_code": conf.AuthorizationCode, "appid": conf.Appid, } client := utils.WechatInit(cert, UpdateToken) utils.AppendWxClient(client) } } // UpdateToken 更新微信token func UpdateToken(token map[string]interface{}) { var conf = model.SysWechatConf{ Token: token["token"].(string), RefreshToken: token["refreshToken"].(string), Appid: token["appid"].(string), } expire := token["expire_in"].(int64) if expire > 0 { beego.Error(time.Now()) expriesTime := time.Now().Local().Add(time.Duration(expire) * time.Second) beego.Error(expriesTime) conf.ExpiresDate = expriesTime sql := `update sys_wechat_conf set token=?,refresh_token=?,expires_date=? where appid=?` _, err := DBEngine.Exec(sql, conf.Token, conf.RefreshToken, expriesTime, conf.Appid) if err != nil { utils.LogError("更新微信token失败:", err) } } else { sql := `update sys_wechat_conf set token=?,refresh_token=? where appid=?` _, err := DBEngine.Exec(sql, conf.Token, conf.RefreshToken, conf.Appid) if err != nil { utils.LogError("更新微信token失败:", err) } } }