fix: 修复聊天记录保存异常

This commit is contained in:
ageer
2025-05-17 12:51:29 +08:00
parent 158a0190b5
commit c7d0e9337a
3 changed files with 13 additions and 7 deletions

View File

@@ -43,6 +43,7 @@ public class ChatMessageBo extends BaseEntity {
/** /**
* 会话id * 会话id
*/ */
@NotBlank(message = "会话id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long sessionId; private Long sessionId;
/** /**

View File

@@ -54,14 +54,18 @@ public class ChatCostServiceImpl implements IChatCostService {
String modelName = chatRequest.getModel(); String modelName = chatRequest.getModel();
ChatMessageBo chatMessageBo = new ChatMessageBo(); ChatMessageBo chatMessageBo = new ChatMessageBo();
chatMessageBo.setSessionId(chatRequest.getSessionId());
if(chatRequest.getSessionId() == null){
Object sessionId = LocalCache.CACHE.get("sessionId");
chatRequest.setSessionId((Long) sessionId);
}
Object userId = LocalCache.CACHE.get("userId"); Object userId = LocalCache.CACHE.get("userId");
if(userId!=null){ chatMessageBo.setUserId((Long) userId);
chatMessageBo.setUserId((Long) userId);
}else { chatMessageBo.setSessionId(chatRequest.getSessionId());
chatMessageBo.setUserId(getUserId()); chatMessageBo.setContent(chatRequest.getPrompt());
}
// 计算总token数 // 计算总token数
ChatToken chatToken = chatTokenService.queryByUserId(chatMessageBo.getUserId(), modelName); ChatToken chatToken = chatTokenService.queryByUserId(chatMessageBo.getUserId(), modelName);
if (chatToken == null) { if (chatToken == null) {
@@ -95,7 +99,7 @@ public class ChatCostServiceImpl implements IChatCostService {
deductUserBalance(chatMessageBo.getUserId(), numberCost); deductUserBalance(chatMessageBo.getUserId(), numberCost);
chatMessageBo.setDeductCost(numberCost); chatMessageBo.setDeductCost(numberCost);
} }
chatMessageBo.setContent(chatRequest.getPrompt());
} else { } else {
deductUserBalance(chatMessageBo.getUserId(), 0.0); deductUserBalance(chatMessageBo.getUserId(), 0.0);
chatMessageBo.setDeductCost(0d); chatMessageBo.setDeductCost(0d);

View File

@@ -89,6 +89,7 @@ public class SseServiceImpl implements ISseService {
chatSessionService.insertByBo(chatSessionBo); chatSessionService.insertByBo(chatSessionBo);
chatRequest.setSessionId(chatSessionBo.getId()); chatRequest.setSessionId(chatSessionBo.getId());
} }
LocalCache.CACHE.put("sessionId", chatRequest.getSessionId());
// 保存消息记录 并扣除费用 // 保存消息记录 并扣除费用
chatCostService.deductToken(chatRequest); chatCostService.deductToken(chatRequest);
// 根据模型分类调用不同的处理逻辑 // 根据模型分类调用不同的处理逻辑