diff --git a/api/ai-agent/src/main/java/cn/qihangerp/erp/serviceImpl/SessionManager.java b/api/ai-agent/src/main/java/cn/qihangerp/erp/serviceImpl/SessionManager.java index f6d43171..7d759b73 100644 --- a/api/ai-agent/src/main/java/cn/qihangerp/erp/serviceImpl/SessionManager.java +++ b/api/ai-agent/src/main/java/cn/qihangerp/erp/serviceImpl/SessionManager.java @@ -1,10 +1,14 @@ package cn.qihangerp.erp.serviceImpl; +import java.util.List; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import cn.qihangerp.service.IAiConversationHistoryService; + /** * 会话管理服务,用于管理用户的会话ID */ @@ -12,6 +16,9 @@ import org.springframework.stereotype.Component; public class SessionManager { private static final Map userIdSessionMap = new ConcurrentHashMap<>(); private static final Map sessionUserIdMap = new ConcurrentHashMap<>(); + + @Autowired + private IAiConversationHistoryService aiConversationHistoryService; /** * 获取或创建用户的会话ID @@ -22,11 +29,28 @@ public class SessionManager { if (userId == null) { return null; } - return userIdSessionMap.computeIfAbsent(userId, k -> { - String sessionId = UUID.randomUUID().toString(); + + // 先从内存缓存中获取 + String sessionId = userIdSessionMap.get(userId); + if (sessionId != null) { + return sessionId; + } + + // 内存缓存中没有,从数据库中查找 + List sessionIds = aiConversationHistoryService.getSessionIdsByUserId(userId); + if (sessionIds != null && !sessionIds.isEmpty()) { + // 使用第一个会话ID + sessionId = sessionIds.get(0); + userIdSessionMap.put(userId, sessionId); sessionUserIdMap.put(sessionId, userId); return sessionId; - }); + } + + // 数据库中也没有,创建新的会话ID + sessionId = UUID.randomUUID().toString(); + userIdSessionMap.put(userId, sessionId); + sessionUserIdMap.put(sessionId, userId); + return sessionId; } /** diff --git a/mapper/src/main/resources/mapper/AiConversationHistoryMapper.xml b/mapper/src/main/resources/mapper/AiConversationHistoryMapper.xml index 8941b96a..8c74119c 100644 --- a/mapper/src/main/resources/mapper/AiConversationHistoryMapper.xml +++ b/mapper/src/main/resources/mapper/AiConversationHistoryMapper.xml @@ -37,10 +37,14 @@