feat():learning后台管理项目初始化
This commit is contained in:
134
internal/api/handlers/message_push_handler.go
Normal file
134
internal/api/handlers/message_push_handler.go
Normal file
@@ -0,0 +1,134 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"goalfymax-admin/internal/models"
|
||||
"goalfymax-admin/internal/services"
|
||||
"goalfymax-admin/pkg/utils"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// MessagePushHandler 消息推送处理器
|
||||
type MessagePushHandler struct {
|
||||
service services.MessagePushService
|
||||
response *utils.Response
|
||||
}
|
||||
|
||||
// NewMessagePushHandler 创建消息推送处理器
|
||||
func NewMessagePushHandler(service services.MessagePushService) *MessagePushHandler {
|
||||
return &MessagePushHandler{
|
||||
service: service,
|
||||
response: utils.NewResponse(),
|
||||
}
|
||||
}
|
||||
|
||||
// SendMessage 发送消息
|
||||
func (h *MessagePushHandler) SendMessage(c *gin.Context) {
|
||||
var req models.MessagePushRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
h.response.ValidateError(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
// 获取当前用户信息
|
||||
userID, exists := c.Get("user_id")
|
||||
if !exists {
|
||||
h.response.Unauthorized(c, "无法获取用户信息")
|
||||
return
|
||||
}
|
||||
|
||||
// 处理用户ID类型
|
||||
var senderID int
|
||||
switch v := userID.(type) {
|
||||
case int:
|
||||
senderID = v
|
||||
case uint:
|
||||
senderID = int(v)
|
||||
case string:
|
||||
var err error
|
||||
senderID, err = strconv.Atoi(v)
|
||||
if err != nil {
|
||||
h.response.InternalServerError(c, "用户ID格式错误")
|
||||
return
|
||||
}
|
||||
default:
|
||||
h.response.InternalServerError(c, "用户ID格式错误")
|
||||
return
|
||||
}
|
||||
|
||||
// 获取发送人姓名(从用户信息中获取)
|
||||
senderName := "系统管理员"
|
||||
if user, exists := c.Get("user"); exists {
|
||||
if userInfo, ok := user.(map[string]interface{}); ok {
|
||||
if name, ok := userInfo["name"].(string); ok {
|
||||
senderName = name
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
result, err := h.service.SendMessage(c.Request.Context(), &req, senderID, senderName)
|
||||
if err != nil {
|
||||
h.response.InternalServerError(c, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
h.response.Success(c, result)
|
||||
}
|
||||
|
||||
// GetPushLogs 获取推送记录列表
|
||||
func (h *MessagePushHandler) GetPushLogs(c *gin.Context) {
|
||||
var req models.MessagePushListRequest
|
||||
if err := c.ShouldBindQuery(&req); err != nil {
|
||||
h.response.ValidateError(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.GetPushLogs(c.Request.Context(), &req)
|
||||
if err != nil {
|
||||
h.response.InternalServerError(c, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
h.response.Success(c, result)
|
||||
}
|
||||
|
||||
// GetPushLogByID 根据ID获取推送记录
|
||||
func (h *MessagePushHandler) GetPushLogByID(c *gin.Context) {
|
||||
idStr := c.Param("id")
|
||||
id, err := strconv.ParseInt(idStr, 10, 64)
|
||||
if err != nil {
|
||||
h.response.BadRequest(c, "无效的推送记录ID")
|
||||
return
|
||||
}
|
||||
|
||||
log, err := h.service.GetPushLogByID(c.Request.Context(), id)
|
||||
if err != nil {
|
||||
if err.Error() == "推送记录不存在" {
|
||||
h.response.NotFound(c, "推送记录不存在")
|
||||
return
|
||||
}
|
||||
h.response.InternalServerError(c, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
h.response.Success(c, log)
|
||||
}
|
||||
|
||||
// SearchUsers 搜索用户
|
||||
func (h *MessagePushHandler) SearchUsers(c *gin.Context) {
|
||||
var req models.UserSearchRequest
|
||||
if err := c.ShouldBindQuery(&req); err != nil {
|
||||
h.response.ValidateError(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.SearchUsers(c.Request.Context(), &req)
|
||||
if err != nil {
|
||||
h.response.InternalServerError(c, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
h.response.Success(c, result)
|
||||
}
|
||||
Reference in New Issue
Block a user