wx-server/internal/server/chat_record/history.go

78 lines
2.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package chatrecord
import (
"fmt"
"mini_server/internal/dao"
"mini_server/internal/server/help"
"mini_server/internal/server/httpreply"
"net/http"
"time"
"github.com/gin-gonic/gin"
"github.com/sirupsen/logrus"
)
type ChatRecordInfo struct {
ChatRecordId uint64 `json:"chat_record_id"`
UserId int32 `json:"user_id"`
RoleId int32 `json:"role_id"`
Direction int8 `json:"direction"`
Message string `json:"message"`
CreatedAt string `json:"create_at"` // 使用string保存在设置时不带时区
}
type HistoryRequest struct {
RoleId int32 `form:"role_id" binding:"required,gt=0"`
StartTime time.Time `form:"start_time" binding:"required" time_format:"2006-01-02 15:04:05"`
StopTime time.Time `form:"stop_time" binding:"required,gtfield=StartTime" time_format:"2006-01-02 15:04:05"`
}
type HistoryReply struct {
List []*ChatRecordInfo `json:"list"`
}
// 聊天记录历史查询,支持分页查询
func History(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 request HistoryRequest
if err := c.ShouldBind(&request); err != nil {
reply.Status = http.StatusBadRequest
reply.Message = fmt.Sprintf("invalid query args, err:%v", err)
return
}
list, err := dao.ChatRecord_Query(userId, request.RoleId, request.StartTime, request.StopTime)
if err != nil {
logrus.Errorf("聊天记录查询失败request:%v,err:%v", request, err)
reply.Status = http.StatusInternalServerError
reply.Message = "聊天记录查询失败"
return
}
chatRecordList := make([]*ChatRecordInfo, len(list))
for i, data := range list {
var info ChatRecordInfo
copy_from_mysql(data, &info)
chatRecordList[i] = &info
}
reply.Data = &HistoryReply{List: chatRecordList}
}
func copy_from_mysql(data *dao.ChatRecord, info *ChatRecordInfo) {
info.ChatRecordId = data.ID
info.UserId = data.UserId
info.RoleId = data.CharacterId
info.Direction = data.Direction
info.Message = data.Message
info.CreatedAt = data.CreatedAt.Format(time.DateTime)
}