diff --git a/internal/api/wechat/miniprogram_login.go b/internal/api/wechat/miniprogram_login.go index 66b39da..0cccc40 100644 --- a/internal/api/wechat/miniprogram_login.go +++ b/internal/api/wechat/miniprogram_login.go @@ -5,6 +5,7 @@ import ( "encoding/hex" "encoding/json" "fmt" + "mini-chat/internal/pkg/miniprogram" "net/http" "time" @@ -117,6 +118,28 @@ func (h *handler) MiniprogramLogin() core.HandlerFunc { return } + // 发送模版消息 + accessToken, err := h.servicesMiniProgram.GetAccessToken(req.AppID, miniProgram.AppSecret, ctx) + if err != nil { + h.logger.Error(fmt.Sprintf("获取access_token失败: %s", err.Error())) + } else { + sendSubscribeMessageRequest := new(miniprogram.SendSubscribeMessageRequest) + sendSubscribeMessageRequest.Touser = openID + sendSubscribeMessageRequest.TemplateID = "9dCV3z7vRPBGm8iMtSXsD7ZVyUjld46w7HTH9zLnzWw" + sendSubscribeMessageRequest.Page = "pages/contact/index" + sendSubscribeMessageRequest.MiniprogramState = "trial" + sendSubscribeMessageRequest.Lang = "zh_CN" + sendSubscribeMessageRequest.Data.Thing1.Value = "测试(CC)" + sendSubscribeMessageRequest.Data.Time2.Value = "2025-10-27" + sendSubscribeMessageRequest.Data.Thing4.Value = "测试(CC)" + + sendSubscribeMessageResponse := new(miniprogram.SendSubscribeMessageResponse) + err = miniprogram.SendSubscribeMessage(accessToken, sendSubscribeMessageRequest, sendSubscribeMessageResponse) + if err != nil { + h.logger.Error(fmt.Sprintf("发送模版消息失败: %s", err.Error())) + } + } + res.Success = true res.Message = "登录成功" res.Token = token diff --git a/internal/api/wechat/wechat.go b/internal/api/wechat/wechat.go index 4545072..cac6b14 100644 --- a/internal/api/wechat/wechat.go +++ b/internal/api/wechat/wechat.go @@ -4,18 +4,21 @@ import ( "mini-chat/internal/pkg/logger" "mini-chat/internal/repository/mysql" "mini-chat/internal/repository/mysql/dao" + "mini-chat/internal/services/services_miniprogram" ) type handler struct { - logger logger.CustomLogger - writeDB *dao.Query - readDB *dao.Query + logger logger.CustomLogger + writeDB *dao.Query + readDB *dao.Query + servicesMiniProgram services_miniprogram.Service } func New(logger logger.CustomLogger, db mysql.Repo) *handler { return &handler{ - logger: logger, - writeDB: dao.Use(db.GetDbW()), - readDB: dao.Use(db.GetDbR()), + logger: logger, + writeDB: dao.Use(db.GetDbW()), + readDB: dao.Use(db.GetDbR()), + servicesMiniProgram: services_miniprogram.New(logger, db), } }