123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. package models
  2. import (
  3. "time"
  4. "wechat-conf/models/model"
  5. "wechat-conf/utils"
  6. "github.com/astaxie/beego"
  7. )
  8. // ComponentInit 初始化第三方
  9. func ComponentInit() {
  10. var conf = model.SysComponentConf{}
  11. _, err := DBEngine.Get(&conf)
  12. if err != nil {
  13. utils.LogError("初始化第三方失败:", err)
  14. return
  15. }
  16. utils.LogError("获取第三方信息:", conf)
  17. if conf.Appid == "" {
  18. utils.LogError("初始化第三方数据失败,数据为空")
  19. return
  20. }
  21. d := "0"
  22. if !conf.ExpiresDate.IsZero() {
  23. now := time.Now()
  24. subd := conf.ExpiresDate.Sub(now)
  25. d = string(subd)
  26. }
  27. var cert = map[string]string{
  28. "appid": conf.Appid,
  29. "aeskey": conf.Aeskey,
  30. "secret": conf.Secret,
  31. "componentVerifyTicket": conf.Ticket,
  32. "token": conf.Token,
  33. "expires_in": d,
  34. }
  35. utils.ComponentInit(cert, UpdateComponentToken)
  36. }
  37. // UpdateComponentToken 更新第三方token
  38. func UpdateComponentToken(token map[string]interface{}) {
  39. beego.Error("更新第三方token:", token)
  40. if token["accessToken"].(string) == "" {
  41. return
  42. }
  43. var conf = model.SysComponentConf{
  44. Token: token["accessToken"].(string),
  45. }
  46. expire := token["expire_in"].(int64)
  47. if expire > 0 {
  48. expriesTime := time.Now().Local().Add(time.Duration(expire) * time.Second)
  49. conf.ExpiresDate = expriesTime
  50. sql := `update sys_component_conf set token=?,expires_date=?`
  51. _, err := DBEngine.Exec(sql, conf.Token, conf.ExpiresDate)
  52. if err != nil {
  53. utils.LogError("更新第三方token失败:", err)
  54. }
  55. } else {
  56. sql := `update sys_component_conf set token=?`
  57. _, err := DBEngine.Exec(sql, conf.Token, conf.ExpiresDate)
  58. if err != nil {
  59. utils.LogError("更新第三方token失败:", err)
  60. }
  61. }
  62. }
  63. // InitWechat 初始化微信
  64. func InitWechat() {
  65. var wxconfs []model.SysWechatConf
  66. err := DBEngine.Where("status>?", STATUS_DEL).Find(&wxconfs)
  67. if err != nil {
  68. utils.LogError("初始化微信失败:", err)
  69. return
  70. }
  71. for _, conf := range wxconfs {
  72. var cert = map[string]string{
  73. "authorizer_access_token": conf.Token,
  74. "authorizer_refresh_token": conf.RefreshToken,
  75. "authorization_code": conf.AuthorizationCode,
  76. "appid": conf.Appid,
  77. "wxid": conf.UserName,
  78. }
  79. client := utils.WechatInit(cert, UpdateToken)
  80. utils.AppendWxClient(client)
  81. }
  82. }
  83. // UpdateToken 更新微信token
  84. func UpdateToken(token map[string]interface{}) {
  85. var conf = model.SysWechatConf{
  86. Token: token["token"].(string),
  87. RefreshToken: token["refreshToken"].(string),
  88. Appid: token["appid"].(string),
  89. }
  90. expire := token["expire_in"].(int64)
  91. if expire > 0 {
  92. expriesTime := time.Now().Local().Add(time.Duration(expire) * time.Second)
  93. conf.ExpiresDate = expriesTime
  94. sql := `update sys_wechat_conf
  95. set token='` + conf.Token + `',
  96. refresh_token='` + conf.RefreshToken + `',
  97. expires_date='` + expriesTime.Format("2006-01-02 15:04:05") + `'
  98. where appid='` + conf.Appid + `'`
  99. _, err := DBEngine.Exec(sql)
  100. if err != nil {
  101. utils.LogError("更新微信token失败:", err)
  102. }
  103. } else {
  104. sql := `update sys_wechat_conf set token=?,refresh_token=? where appid=?`
  105. _, err := DBEngine.Exec(sql, conf.Token, conf.RefreshToken, conf.Appid)
  106. if err != nil {
  107. utils.LogError("更新微信token失败:", err)
  108. }
  109. }
  110. }