This commit is contained in:
@@ -0,0 +1,175 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"github.com/flipped-aurora/gin-vue-admin/server/global"
|
||||
"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
|
||||
"github.com/flipped-aurora/gin-vue-admin/server/plugin/wechat-integration/model/request"
|
||||
wechatResponse "github.com/flipped-aurora/gin-vue-admin/server/plugin/wechat-integration/model/response"
|
||||
"github.com/flipped-aurora/gin-vue-admin/server/plugin/wechat-integration/service"
|
||||
"github.com/gin-gonic/gin"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type MpMessageApi struct{}
|
||||
|
||||
var mpMessageService = service.ServiceGroupApp.MpMessageService
|
||||
|
||||
// GetMessageList 获取消息列表
|
||||
// @Tags MpMessage
|
||||
// @Summary 获取消息列表
|
||||
// @Description 获取公众号消息记录列表
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param page query int false "页码"
|
||||
// @Param pageSize query int false "每页数量"
|
||||
// @Param msgType query string false "消息类型"
|
||||
// @Param openid query string false "用户openid"
|
||||
// @Success 200 {object} response.Response{data=response.PageResult} "获取成功"
|
||||
// @Router /wechat/mp/messages [get]
|
||||
func (m *MpMessageApi) GetMessageList(c *gin.Context) {
|
||||
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
|
||||
pageSize, _ := strconv.Atoi(c.DefaultQuery("pageSize", "10"))
|
||||
msgType := c.Query("msgType")
|
||||
openid := c.Query("openid")
|
||||
|
||||
if page <= 0 {
|
||||
page = 1
|
||||
}
|
||||
if pageSize <= 0 || pageSize > 100 {
|
||||
pageSize = 10
|
||||
}
|
||||
|
||||
messages, total, err := mpMessageService.GetMessageList(page, pageSize, msgType, openid)
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("获取消息列表失败!", zap.Error(err))
|
||||
response.FailWithMessage("获取失败: "+err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
response.OkWithDetailed(wechatResponse.PageResult{
|
||||
List: messages,
|
||||
Total: total,
|
||||
Page: page,
|
||||
PageSize: pageSize,
|
||||
}, "获取成功", c)
|
||||
}
|
||||
|
||||
// SendTextMessage 发送文本消息
|
||||
// @Tags MpMessage
|
||||
// @Summary 发送文本消息
|
||||
// @Description 向指定用户发送文本消息
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param data body request.SendTextMessageRequest true "发送参数"
|
||||
// @Success 200 {object} response.Response "发送成功"
|
||||
// @Router /wechat/mp/message/text [post]
|
||||
func (m *MpMessageApi) SendTextMessage(c *gin.Context) {
|
||||
var req request.SendTextMessageRequest
|
||||
err := c.ShouldBindJSON(&req)
|
||||
if err != nil {
|
||||
response.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
if req.OpenID == "" || req.Content == "" {
|
||||
response.FailWithMessage("openid和消息内容不能为空", c)
|
||||
return
|
||||
}
|
||||
|
||||
err = mpMessageService.SendTextMessage(req.OpenID, req.Content)
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("发送文本消息失败!", zap.Error(err))
|
||||
response.FailWithMessage("发送失败: "+err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
response.OkWithMessage("发送成功", c)
|
||||
}
|
||||
|
||||
// SendImageMessage 发送图片消息
|
||||
// @Tags MpMessage
|
||||
// @Summary 发送图片消息
|
||||
// @Description 向指定用户发送图片消息
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param data body request.SendImageMessageRequest true "发送参数"
|
||||
// @Success 200 {object} response.Response "发送成功"
|
||||
// @Router /wechat/mp/message/image [post]
|
||||
func (m *MpMessageApi) SendImageMessage(c *gin.Context) {
|
||||
var req request.SendImageMessageRequest
|
||||
err := c.ShouldBindJSON(&req)
|
||||
if err != nil {
|
||||
response.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
if req.OpenID == "" || req.MediaID == "" {
|
||||
response.FailWithMessage("openid和媒体ID不能为空", c)
|
||||
return
|
||||
}
|
||||
|
||||
err = mpMessageService.SendImageMessage(req.OpenID, req.MediaID)
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("发送图片消息失败!", zap.Error(err))
|
||||
response.FailWithMessage("发送失败: "+err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
response.OkWithMessage("发送成功", c)
|
||||
}
|
||||
|
||||
// GetMessageByID 获取消息详情
|
||||
// @Tags MpMessage
|
||||
// @Summary 获取消息详情
|
||||
// @Description 根据ID获取消息详细信息
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param id path int true "消息ID"
|
||||
// @Success 200 {object} response.Response{data=model.MpMessage} "获取成功"
|
||||
// @Router /wechat/mp/message/{id} [get]
|
||||
func (m *MpMessageApi) GetMessageByID(c *gin.Context) {
|
||||
idStr := c.Param("id")
|
||||
id, err := strconv.ParseUint(idStr, 10, 32)
|
||||
if err != nil {
|
||||
response.FailWithMessage("无效的消息ID", c)
|
||||
return
|
||||
}
|
||||
|
||||
message, err := mpMessageService.GetMessageByID(uint(id))
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("获取消息详情失败!", zap.Error(err))
|
||||
response.FailWithMessage("获取失败: "+err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
response.OkWithData(message, c)
|
||||
}
|
||||
|
||||
// DeleteMessage 删除消息
|
||||
// @Tags MpMessage
|
||||
// @Summary 删除消息
|
||||
// @Description 删除指定的消息记录
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param id path int true "消息ID"
|
||||
// @Success 200 {object} response.Response "删除成功"
|
||||
// @Router /wechat/mp/message/{id} [delete]
|
||||
func (m *MpMessageApi) DeleteMessage(c *gin.Context) {
|
||||
idStr := c.Param("id")
|
||||
id, err := strconv.ParseUint(idStr, 10, 32)
|
||||
if err != nil {
|
||||
response.FailWithMessage("无效的消息ID", c)
|
||||
return
|
||||
}
|
||||
|
||||
err = mpMessageService.DeleteMessage(uint(id))
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("删除消息失败!", zap.Error(err))
|
||||
response.FailWithMessage("删除失败: "+err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
response.OkWithMessage("删除成功", c)
|
||||
}
|
||||
Reference in New Issue
Block a user