feat(1.0):调整为实时获取 access_token

This commit is contained in:
summer 2025-11-05 14:48:39 +08:00
parent 23ce0e6982
commit 2e8eb69312

View File

@ -10,6 +10,7 @@ import (
"mini-chat/internal/pkg/miniprogram"
"mini-chat/internal/pkg/validation"
"go.uber.org/zap"
"gorm.io/gorm"
)
@ -132,33 +133,50 @@ func (h *handler) SendSubscribeMessage() core.HandlerFunc {
return
}
// 发送模版消息
accessToken, err := h.servicesMiniProgram.GetAccessToken(req.AppID, req.AppSecret, ctx)
if err != nil {
h.logger.Error(fmt.Sprintf("获取access_token失败: %s", err.Error()))
res.Success = false
res.Message = fmt.Sprintf("获取access_token失败: %s", err.Error())
} else {
sendSubscribeMessageReq := new(miniprogram.SendSubscribeMessageRequest)
sendSubscribeMessageReq.Touser = req.Touser
sendSubscribeMessageReq.TemplateID = req.TemplateID
sendSubscribeMessageReq.Page = "pages/index/detail?url=1"
sendSubscribeMessageReq.MiniprogramState = "developer" // 需要改成正式版 目前是体验版 跳转小程序类型developer 为开发版trial为体验版formal为正式版默认为正式版
sendSubscribeMessageReq.Lang = "zh_CN"
sendSubscribeMessageReq.Data.Thing1.Value = "留言提醒"
sendSubscribeMessageReq.Data.Time2.Value = time.Now().Format("2006-01-02 15:04:05")
sendSubscribeMessageReq.Data.Thing4.Value = "您有一条新的消息..."
// 调整为实时获取
accessTokenResponse := new(miniprogram.AccessTokenResponse)
if err := miniprogram.GetAccessToken(req.AppID, req.AppSecret, accessTokenResponse); err != nil {
h.logger.Error("GetAccessToken failed", zap.Error(err), zap.String("app_id", req.AppID), zap.String("app_secret", req.AppSecret))
ctx.AbortWithError(core.Error(
http.StatusBadRequest,
code.ParamBindError,
fmt.Sprintf("获取 access_token 失败: %s请稍后重试", err.Error()),
))
return
}
sendSubscribeMessageRes := new(miniprogram.SendSubscribeMessageResponse)
err = miniprogram.SendSubscribeMessage(accessToken, sendSubscribeMessageReq, sendSubscribeMessageRes)
if err != nil {
res.Success = false
res.Message = "发送订阅消息失败" + err.Error()
h.logger.Error(fmt.Sprintf("发送模版消息失败: %s", err.Error()))
} else {
res.Success = true
res.Message = "订阅消息发送成功"
}
if accessTokenResponse.AccessToken == "" {
ctx.AbortWithError(core.Error(
http.StatusBadRequest,
code.ParamBindError,
"未获得到 access_token请稍后重试",
))
return
}
sendSubscribeMessageReq := new(miniprogram.SendSubscribeMessageRequest)
sendSubscribeMessageReq.Touser = req.Touser
sendSubscribeMessageReq.TemplateID = req.TemplateID
sendSubscribeMessageReq.Page = "pages/index/detail?url=1"
sendSubscribeMessageReq.MiniprogramState = "developer" // 需要改成正式版 目前是体验版 跳转小程序类型developer 为开发版trial为体验版formal为正式版默认为正式版
sendSubscribeMessageReq.Lang = "zh_CN"
sendSubscribeMessageReq.Data.Thing1.Value = "留言提醒"
sendSubscribeMessageReq.Data.Time2.Value = time.Now().Format("2006-01-02 15:04:05")
sendSubscribeMessageReq.Data.Thing4.Value = "您有一条新的消息..."
sendSubscribeMessageRes := new(miniprogram.SendSubscribeMessageResponse)
err := miniprogram.SendSubscribeMessage(accessTokenResponse.AccessToken, sendSubscribeMessageReq, sendSubscribeMessageRes)
if err != nil {
res.Success = false
res.Message = "发送订阅消息失败" + err.Error()
h.logger.Error(fmt.Sprintf("发送模版消息失败: %s", err.Error()),
zap.String("app_id", req.AppID),
zap.String("app_secret", req.AppSecret),
zap.String("template_id", req.TemplateID),
)
} else {
res.Success = true
res.Message = "订阅消息发送成功"
}
ctx.Payload(res)