ai_scheduler/internal/services/chat_history.go

64 lines
1.3 KiB
Go

package services
import (
"ai_scheduler/internal/biz"
errors "ai_scheduler/internal/data/error"
"ai_scheduler/internal/entitys"
"ai_scheduler/internal/pkg/validate"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/log"
"strings"
)
type HistoryService struct {
chatRepo *biz.ChatHistoryBiz
}
func NewHistoryService(chatRepo *biz.ChatHistoryBiz) *HistoryService {
return &HistoryService{
chatRepo: chatRepo,
}
}
// GetHistoryService 获取会话历史
func (h *HistoryService) List(c *fiber.Ctx) error {
var query entitys.ChatHistQuery
if err := c.BodyParser(&query); err != nil {
return err
}
// 校验参数
if query.SessionID == "" {
return errors.SessionNotFound
}
if query.Page <= 0 {
query.Page = 1
}
if query.PageSize <= 0 {
query.PageSize = 10
}
// 查询历史
history, err := h.chatRepo.List(c.Context(), &query)
if err != nil {
return err
}
return c.JSON(history)
}
func (h *HistoryService) UpdateContent(c *fiber.Ctx) error {
var req entitys.UpdateContentRequest
if err := c.BodyParser(&req); err != nil {
return err
}
// 校验参数
msg, err := validate.Struct(req)
if err != nil {
log.Error(c.UserContext(), "参数错误 error: ", err)
return errors.NewBusinessErr(errors.InvalidParamCode, strings.Join(msg, ";"))
}
// 更新历史
return h.chatRepo.UpdateContent(c.Context(), &req)
}