From c7d0e9337ad62ca2776464c0b8ab3ba2d7a652df Mon Sep 17 00:00:00 2001
From: ageer <ageerle@163.com>
Date: 星期六, 17 五月 2025 12:51:29 +0800
Subject: [PATCH] fix: 修复聊天记录保存异常

---
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatMessageBo.java            |    1 +
 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java      |    1 +
 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/ChatCostServiceImpl.java |   18 +++++++++++-------
 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 012d526..ee93c13 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 @@
     /**
      * 浼氳瘽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 be99044..5c51af7 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 @@
         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());
+
         // 璁$畻鎬籺oken鏁�
         ChatToken chatToken = chatTokenService.queryByUserId(chatMessageBo.getUserId(), modelName);
         if (chatToken == null) {
@@ -95,7 +99,7 @@
                 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 5c1e5ea..741e5ce 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 @@
                 chatSessionService.insertByBo(chatSessionBo);
                 chatRequest.setSessionId(chatSessionBo.getId());
             }
+            LocalCache.CACHE.put("sessionId", chatRequest.getSessionId());
             // 淇濆瓨娑堟伅璁板綍 骞舵墸闄よ垂鐢�
             chatCostService.deductToken(chatRequest);
             // 鏍规嵁妯″瀷鍒嗙被璋冪敤涓嶅悓鐨勫鐞嗛�昏緫

--
Gitblit v1.9.3