package chatrecord import ( "fmt" "mini_server/internal/dao" "mini_server/internal/server/help" "mini_server/internal/server/httpreply" "net/http" "github.com/gin-gonic/gin" "github.com/sirupsen/logrus" ) type UploadRequest struct { RoleId int32 `json:"role_id" binding:"required,gt=0"` Direction *int `json:"direction" binding:"required,oneof=0 1"` // 整数required时,无法接收0值,会报错。需要定义为指针类型 Message string `json:"message" binding:"required,min=1"` } // 上传聊天记录 func Upload(c *gin.Context) { reply := httpreply.NewDefaultReplyData() defer httpreply.Reply(c, reply) userId, ok := help.GetUserId(c) if !ok { reply.Status = http.StatusNotFound reply.Message = "无法获取用户信息" return } var info UploadRequest if err := c.ShouldBindJSON(&info); err != nil { reply.Status = http.StatusBadRequest reply.Message = fmt.Sprintf("invalid json data:%v", err) return } data := dao.ChatRecord{ UserId: userId, CharacterId: info.RoleId, Direction: int8(*info.Direction), Message: info.Message, } if err := dao.ChatRecord_Insert(&data); err != nil { logrus.Errorf("保存聊天记录失败,info:%v,err:%v", info, err) reply.Status = http.StatusInternalServerError reply.Message = "聊天记录保存失败" return } }