This commit is contained in:
2025-08-15 18:13:13 +08:00
parent 8f44b85ec3
commit 5b43f99d9a
16 changed files with 102 additions and 101 deletions
@@ -2,13 +2,13 @@ package api
// ApiGroup 微信集成API组
type ApiGroup struct {
WechatMiniApi WechatMiniApi // 微信小程序API
MpUserApi MpUserApi // 公众号用户API
MpMessageApi MpMessageApi // 公众号消息API
MpAutoReplyApi MpAutoReplyApi // 公众号自动回复API
MpMenuApi MpMenuApi // 公众号菜单API
MpMaterialApi MpMaterialApi // 公众号素材API
WechatWebhookApi WechatWebhookApi // 微信Webhook API
MiniApi MiniApi // 微信小程序API
MpUserApi MpUserApi // 公众号用户API
MpMessageApi MpMessageApi // 公众号消息API
MpAutoReplyApi MpAutoReplyApi // 公众号自动回复API
MpMenuApi MpMenuApi // 公众号菜单API
MpMaterialApi MpMaterialApi // 公众号素材API
WebhookApi WebhookApi // 微信Webhook API
}
// ApiGroupApp API组实例
@@ -12,9 +12,9 @@ import (
"go.uber.org/zap"
)
type WechatMiniApi struct{}
type MiniApi struct{}
var wechatMiniService = service.ServiceGroupApp.WechatMiniService
var miniService = service.ServiceGroupApp.MiniService
// Login 小程序登录
// @Tags WechatMini
@@ -25,7 +25,7 @@ var wechatMiniService = service.ServiceGroupApp.WechatMiniService
// @Param data body request.MiniLoginRequest true "登录参数"
// @Success 200 {object} response.Response{data=response.MiniLoginResponse} "登录成功"
// @Router /wechat/mini/login [post]
func (w *WechatMiniApi) Login(c *gin.Context) {
func (w *MiniApi) Login(c *gin.Context) {
var req request.MiniLoginRequest
err := c.ShouldBindJSON(&req)
if err != nil {
@@ -38,7 +38,7 @@ func (w *WechatMiniApi) Login(c *gin.Context) {
return
}
user, err := wechatMiniService.Code2Session(req.Code)
user, err := miniService.Code2Session(req.Code)
if err != nil {
global.GVA_LOG.Error("小程序登录失败!", zap.Error(err))
response.FailWithMessage("登录失败: "+err.Error(), c)
@@ -64,14 +64,14 @@ func (w *WechatMiniApi) Login(c *gin.Context) {
// @Param openid query string true "用户openid"
// @Success 200 {object} response.Response{data=model.WechatMiniUser} "获取成功"
// @Router /wechat/mini/userinfo [get]
func (w *WechatMiniApi) GetUserInfo(c *gin.Context) {
func (w *MiniApi) GetUserInfo(c *gin.Context) {
openid := c.Query("openid")
if openid == "" {
response.FailWithMessage("openid不能为空", c)
return
}
user, err := wechatMiniService.GetUserInfo(openid)
user, err := miniService.GetUserInfo(openid)
if err != nil {
global.GVA_LOG.Error("获取用户信息失败!", zap.Error(err))
response.FailWithMessage("获取失败: "+err.Error(), c)
@@ -90,7 +90,7 @@ func (w *WechatMiniApi) GetUserInfo(c *gin.Context) {
// @Param data body request.UpdateUserInfoRequest true "用户信息"
// @Success 200 {object} response.Response "更新成功"
// @Router /wechat/mini/userinfo [put]
func (w *WechatMiniApi) UpdateUserInfo(c *gin.Context) {
func (w *MiniApi) UpdateUserInfo(c *gin.Context) {
var req request.UpdateUserInfoRequest
err := c.ShouldBindJSON(&req)
if err != nil {
@@ -103,7 +103,7 @@ func (w *WechatMiniApi) UpdateUserInfo(c *gin.Context) {
return
}
err = wechatMiniService.UpdateUserInfo(req.OpenID, req.UserInfo)
err = miniService.UpdateUserInfo(req.OpenID, req.UserInfo)
if err != nil {
global.GVA_LOG.Error("更新用户信息失败!", zap.Error(err))
response.FailWithMessage("更新失败: "+err.Error(), c)
@@ -122,7 +122,7 @@ func (w *WechatMiniApi) UpdateUserInfo(c *gin.Context) {
// @Param data body request.BindPhoneRequest true "绑定参数"
// @Success 200 {object} response.Response{data=model.WechatMiniUser} "绑定成功"
// @Router /wechat/mini/bind-phone [post]
func (w *WechatMiniApi) BindPhone(c *gin.Context) {
func (w *MiniApi) BindPhone(c *gin.Context) {
var req request.BindPhoneRequest
err := c.ShouldBindJSON(&req)
if err != nil {
@@ -135,7 +135,7 @@ func (w *WechatMiniApi) BindPhone(c *gin.Context) {
return
}
user, err := wechatMiniService.BindPhoneAndLinkUser(req.OpenID, req.Phone)
user, err := miniService.BindPhoneAndLinkUser(req.OpenID, req.Phone)
if err != nil {
global.GVA_LOG.Error("绑定手机号失败!", zap.Error(err))
response.FailWithMessage("绑定失败: "+err.Error(), c)
@@ -155,7 +155,7 @@ func (w *WechatMiniApi) BindPhone(c *gin.Context) {
// @Param pageSize query int false "每页数量"
// @Success 200 {object} response.Response{data=response.PageResult} "获取成功"
// @Router /wechat/mini/users [get]
func (w *WechatMiniApi) GetUserList(c *gin.Context) {
func (w *MiniApi) GetUserList(c *gin.Context) {
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
pageSize, _ := strconv.Atoi(c.DefaultQuery("pageSize", "10"))
@@ -166,7 +166,7 @@ func (w *WechatMiniApi) GetUserList(c *gin.Context) {
pageSize = 10
}
users, total, err := wechatMiniService.GetUserList(page, pageSize)
users, total, err := miniService.GetUserList(page, pageSize)
if err != nil {
global.GVA_LOG.Error("获取用户列表失败!", zap.Error(err))
response.FailWithMessage("获取失败: "+err.Error(), c)
@@ -190,14 +190,14 @@ func (w *WechatMiniApi) GetUserList(c *gin.Context) {
// @Param unionid query string true "UnionID"
// @Success 200 {object} response.Response{data=model.WechatMiniUser} "检查成功"
// @Router /wechat/mini/check-unionid [get]
func (w *WechatMiniApi) CheckUnionID(c *gin.Context) {
func (w *MiniApi) CheckUnionID(c *gin.Context) {
unionid := c.Query("unionid")
if unionid == "" {
response.FailWithMessage("unionid不能为空", c)
return
}
user, err := wechatMiniService.CheckUnionIDExists(unionid)
user, err := miniService.CheckUnionIDExists(unionid)
if err != nil {
global.GVA_LOG.Error("检查UnionID失败!", zap.Error(err))
response.FailWithMessage("检查失败: "+err.Error(), c)
@@ -301,7 +301,7 @@ func (m *MpConfigApi) ValidateConfig(c *gin.Context) {
}
// 使用微信公众号服务验证配置
wechatMpService := service.ServiceGroupApp.WechatMpService
wechatMpService := service.ServiceGroupApp.MpService
err = wechatMpService.ValidateConfig(config)
if err != nil {
global.GVA_LOG.Error("配置连通性测试失败!", zap.Error(err))
@@ -16,7 +16,7 @@ import (
"go.uber.org/zap"
)
type WechatWebhookApi struct{}
type WebhookApi struct{}
var webhookMessageService = service.ServiceGroupApp.MpMessageService
@@ -32,7 +32,7 @@ var webhookMessageService = service.ServiceGroupApp.MpMessageService
// @Param echostr query string false "随机字符串"
// @Success 200 {string} string "success"
// @Router /wechat/official/webhook [get,post]
func (w *WechatWebhookApi) OfficialAccountWebhook(c *gin.Context) {
func (w *WebhookApi) OfficialAccountWebhook(c *gin.Context) {
startTime := time.Now()
// 获取参数
@@ -133,7 +133,7 @@ func (w *WechatWebhookApi) OfficialAccountWebhook(c *gin.Context) {
}
// verifySignature 验证微信签名
func (w *WechatWebhookApi) verifySignature(signature, timestamp, nonce string) bool {
func (w *WebhookApi) verifySignature(signature, timestamp, nonce string) bool {
// 从数据库获取微信公众号配置
var mpConfig model.MpConfig
err := global.GVA_DB.Where("config_type = ?", model.ConfigTypeMP).First(&mpConfig).Error
@@ -167,7 +167,7 @@ func (w *WechatWebhookApi) verifySignature(signature, timestamp, nonce string) b
}
// saveWebhookLog 保存Webhook日志到数据库
func (w *WechatWebhookApi) saveWebhookLog(log *model.MpWebhookLog) {
func (w *WebhookApi) saveWebhookLog(log *model.MpWebhookLog) {
if err := global.GVA_DB.Create(log).Error; err != nil {
global.GVA_LOG.Error("保存Webhook日志失败", zap.Error(err))
// 数据库记录失败不影响webhook正常响应