From c2f6a8321a0fa9296818ca89d0f2ab9a53cc93fe Mon Sep 17 00:00:00 2001
From: ageer <ageerle@163.com>
Date: 星期六, 03 五月 2025 10:41:50 +0800
Subject: [PATCH] feat: 会话管理

---
 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java |   31 +++++++++++++++++++++++++++++++
 1 files changed, 31 insertions(+), 0 deletions(-)

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 b6759f5..ccf9f3a 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
@@ -24,9 +24,12 @@
 import org.ruoyi.common.core.utils.file.FileUtils;
 import org.ruoyi.common.core.utils.file.MimeTypeUtils;
 import org.ruoyi.common.redis.utils.RedisUtils;
+import org.ruoyi.domain.ChatSession;
+import org.ruoyi.domain.bo.ChatSessionBo;
 import org.ruoyi.domain.vo.ChatModelVo;
 import org.ruoyi.service.EmbeddingService;
 import org.ruoyi.service.IChatModelService;
+import org.ruoyi.service.IChatSessionService;
 import org.ruoyi.service.VectorStoreService;
 import org.springframework.core.io.InputStreamResource;
 import org.springframework.core.io.Resource;
@@ -65,6 +68,8 @@
 
     private final OllamaServiceImpl ollamaService;
 
+    private final IChatSessionService chatSessionService;
+
     private ChatModelVo chatModelVo;
 
 
@@ -80,6 +85,15 @@
             }else {
                 LocalCache.CACHE.put("userId", chatCostService.getUserId());
                 chatRequest.setUserId(chatCostService.getUserId());
+                // 淇濆瓨浼氳瘽淇℃伅
+                if(chatRequest.getSessionId()==null){
+                    ChatSessionBo chatSessionBo = new ChatSessionBo();
+                    chatSessionBo.setUserId(chatCostService.getUserId());
+                    chatSessionBo.setSessionTitle(getFirst10Characters(chatRequest.getPrompt()));
+                    chatSessionBo.setSessionContent(chatRequest.getPrompt());
+                    chatSessionService.insertByBo(chatSessionBo);
+                    chatRequest.setSessionId(chatSessionBo.getId());
+                }
                 // 淇濆瓨娑堟伅璁板綍 骞舵墸闄よ垂鐢�
                 chatCostService.deductToken(chatRequest);
             }
@@ -93,6 +107,23 @@
     }
 
     /**
+     * 鑾峰彇瀵硅瘽鏍囬
+     *
+     * @param str 鍘熷瓧绗�
+     * @return 鎴彇鍚庣殑瀛楃
+     */
+    public static String getFirst10Characters(String str) {
+        // 鍒ゆ柇瀛楃涓查暱搴�
+        if (str.length() > 10) {
+            // 濡傛灉闀垮害澶т簬10锛屾埅鍙栧墠10涓瓧绗�
+            return str.substring(0, 10);
+        } else {
+            // 濡傛灉闀垮害涓嶈冻10锛岃繑鍥炴暣涓瓧绗︿覆
+            return str;
+        }
+    }
+
+    /**
      * 妫�鏌ユ湭鐧诲綍鐢ㄦ埛鏄惁瓒呰繃褰撴棩瀵硅瘽娆℃暟闄愬埗
      *
      * @param request 褰撳墠璇锋眰

--
Gitblit v1.9.3