package message import ( "fmt" "net/http" "time" "mini-chat/internal/code" "mini-chat/internal/pkg/core" "mini-chat/internal/pkg/validation" "mini-chat/internal/repository/mysql/model" ) type userSendMessageRequest struct { AppID string `json:"app_id" binding:"required"` // 小程序ID FormUserID string `json:"from_user_id" binding:"required"` // 发送用户的ID FormUserName string `json:"from_user_name" binding:"required"` // 发送用户的昵称 MsgType int32 `json:"msg_type" binding:"required"` // 消息类型(1:文本 2:图片) Content string `json:"content" binding:"required"` // 内容 } type userSendMessageResponse struct { Message string `json:"message"` // 提示信息 } // UserSendMessage 用户发送消息 // @Summary 用户发送消息 // @Description 用户发送消息 // @Tags 消息 // @Accept json // @Produce json // @Param RequestBody body userSendMessageRequest true "请求参数" // @Success 200 {object} userSendMessageResponse // @Failure 400 {object} code.Failure // @Router /app/send_message [post] func (h *handler) UserSendMessage() core.HandlerFunc { return func(ctx core.Context) { req := new(userSendMessageRequest) res := new(userSendMessageResponse) if err := ctx.ShouldBindJSON(req); err != nil { ctx.AbortWithError(core.Error( http.StatusBadRequest, code.ParamBindError, validation.Error(err)), ) return } createData := new(model.AppMessageLog) createData.AppID = req.AppID createData.SenderID = req.FormUserID createData.SenderName = req.FormUserName createData.Content = req.Content createData.ReceiverID = "888888" createData.MsgType = req.MsgType createData.SendTime = time.Now() createData.CreatedAt = time.Now() if err := h.writeDB.AppMessageLog.WithContext(ctx.RequestContext()).Create(createData); err != nil { ctx.AbortWithError(core.Error( http.StatusBadRequest, code.SendMessageError, fmt.Sprintf("%s: %s", code.Text(code.SendMessageError), err.Error()), )) } res.Message = "操作成功" ctx.Payload(res) } }