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