From c7d0e9337ad62ca2776464c0b8ab3ba2d7a652df Mon Sep 17 00:00:00 2001 From: ageer Date: Sat, 17 May 2025 12:51:29 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E4=BF=9D=E5=AD=98=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/ruoyi/domain/bo/ChatMessageBo.java | 1 + .../service/chat/impl/ChatCostServiceImpl.java | 18 +++++++++++------- .../chat/service/chat/impl/SseServiceImpl.java | 1 + 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatMessageBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatMessageBo.java index 012d5268..ee93c13c 100644 --- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatMessageBo.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatMessageBo.java @@ -43,6 +43,7 @@ public class ChatMessageBo extends BaseEntity { /** * 会话id */ + @NotBlank(message = "会话id不能为空", groups = { AddGroup.class, EditGroup.class }) private Long sessionId; /** diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/ChatCostServiceImpl.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/ChatCostServiceImpl.java index be990442..5c51af7c 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/ChatCostServiceImpl.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/ChatCostServiceImpl.java @@ -54,14 +54,18 @@ public class ChatCostServiceImpl implements IChatCostService { String modelName = chatRequest.getModel(); 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"); - if(userId!=null){ - chatMessageBo.setUserId((Long) userId); - }else { - chatMessageBo.setUserId(getUserId()); - } + chatMessageBo.setUserId((Long) userId); + + chatMessageBo.setSessionId(chatRequest.getSessionId()); + chatMessageBo.setContent(chatRequest.getPrompt()); + // 计算总token数 ChatToken chatToken = chatTokenService.queryByUserId(chatMessageBo.getUserId(), modelName); if (chatToken == null) { @@ -95,7 +99,7 @@ public class ChatCostServiceImpl implements IChatCostService { deductUserBalance(chatMessageBo.getUserId(), numberCost); chatMessageBo.setDeductCost(numberCost); } - chatMessageBo.setContent(chatRequest.getPrompt()); + } else { deductUserBalance(chatMessageBo.getUserId(), 0.0); chatMessageBo.setDeductCost(0d); diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java index 5c1e5ea5..741e5ceb 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java @@ -89,6 +89,7 @@ public class SseServiceImpl implements ISseService { chatSessionService.insertByBo(chatSessionBo); chatRequest.setSessionId(chatSessionBo.getId()); } + LocalCache.CACHE.put("sessionId", chatRequest.getSessionId()); // 保存消息记录 并扣除费用 chatCostService.deductToken(chatRequest); // 根据模型分类调用不同的处理逻辑