fix: 优化负利润分析报表处理逻辑

This commit is contained in:
renzhiyuan 2026-01-13 18:10:21 +08:00
parent 289ac1de7a
commit c91e7bc95b
3 changed files with 52 additions and 19 deletions

View File

@ -35,41 +35,31 @@ func NewSessionBiz(conf *config.Config, sessionImpl *impl.SessionImpl, sysImpl *
func (s *SessionBiz) SessionInit(ctx context.Context, req *entitys.SessionInitRequest) (result *entitys.SessionInitResponse, err error) {
// 获取系统配置
sysConfig, has, err := s.sysRepo.FindOne(s.sysRepo.WithSysId(req.SysId))
sysConfig, err := s.GetSysConfig(req.SysId)
if err != nil {
return
} else if !has {
err = errorcode.SysNotFound
return
}
result = &entitys.SessionInitResponse{
Chat: make([]entitys.ChatHistory, 0),
}
// 获取 当天的session
// 获取 当天的最新session
t := time.Now().Truncate(24 * time.Hour)
session, has, err := s.sessionRepo.FindOne(
s.sessionRepo.WithUserId(req.UserId), // 条件用户ID
s.sessionRepo.WithStartTime(t), // 条件:会话开始时间
s.sysRepo.WithSysId(sysConfig.SysID), // 条件系统ID
s.sysRepo.WithSysId(sysConfig.SysID),
s.sessionRepo.OrderByDesc("create_at"), // 条件系统ID
)
if err != nil {
return
} else if !has {
}
if !has {
// 不存在,创建一个
session = model.AiSession{
SysID: sysConfig.SysID,
SessionID: utils.UUID(),
UserID: req.UserId,
UserName: req.UserName,
DingUserId: req.DingUserId,
}
err = s.sessionRepo.Create(&session)
session, err = s.CreateNew(sysConfig.SysID, req)
if err != nil {
return
return nil, err
}
chat := entitys.ChatHistory{
SessionID: session.SessionID,
Role: constants.RoleSystem,
@ -122,6 +112,32 @@ func (s *SessionBiz) SessionInit(ctx context.Context, req *entitys.SessionInitRe
return
}
func (s *SessionBiz) GetSysConfig(sysId string) (model.AiSy, error) {
sysConfig, has, err := s.sysRepo.FindOne(s.sysRepo.WithSysId(sysId))
if err != nil {
return sysConfig, err
} else if !has {
err = errorcode.SysNotFound
return sysConfig, err
}
return sysConfig, nil
}
func (s *SessionBiz) CreateNew(sysID int32, req *entitys.SessionInitRequest) (model.AiSession, error) {
session := model.AiSession{
SysID: sysID,
SessionID: utils.UUID(),
UserID: req.UserId,
UserName: req.UserName,
DingUserId: req.DingUserId,
}
err := s.sessionRepo.Create(&session)
if err != nil {
return session, err
}
return session, nil
}
// SessionList 会话列表
func (s *SessionBiz) SessionList(ctx context.Context, req *entitys.SessionListRequest) (list []model.AiSession, err error) {

View File

@ -56,7 +56,7 @@ func SetupRoutes(app *fiber.App, ChatService *services.ChatService, sessionServi
c.Response().SetBody([]byte("1"))
return nil
})
r.Post("/session/new", sessionService.NewSession)
r.Post("/session/init", sessionService.SessionInit) // 会话初始化,不存在则创建,存在则返回会话ID和默认条数会话历史
r.Post("/session/list", sessionService.SessionList)

View File

@ -35,6 +35,23 @@ func (s *SessionService) SessionInit(c *fiber.Ctx) error {
return c.JSON(result)
}
// NewSession 新会话
func (s *SessionService) NewSession(c *fiber.Ctx) error {
req := &entitys.SessionInitRequest{}
if err := c.BodyParser(req); err != nil {
return err
}
sysConfig, err := s.sessionBiz.GetSysConfig(req.SysId)
if err != nil {
return err
}
session, err := s.sessionBiz.CreateNew(sysConfig.SysID, req)
return c.JSON(session)
}
// SessionList 获取会话列表
func (s *SessionService) SessionList(c *fiber.Ctx) error {
req := &entitys.SessionListRequest{}