| 
					
				 | 
			
			
				@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.ai.service.chat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.hutool.core.lang.Assert; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.hutool.core.util.ObjUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import cn.hutool.core.util.ObjectUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.iocoder.yudao.framework.common.util.object.BeanUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.conversation.AiChatConversationCreateMyReqVO; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -11,7 +12,7 @@ import cn.iocoder.yudao.module.ai.convert.AiChatConversationConvert; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.iocoder.yudao.module.ai.dal.dataobject.chat.AiChatConversationDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatModelDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatRoleDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import cn.iocoder.yudao.module.ai.dal.mysql.AiChatConversationMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import cn.iocoder.yudao.module.ai.dal.mysql.chat.AiChatConversationMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.iocoder.yudao.module.ai.service.model.AiChatModelService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.iocoder.yudao.module.ai.service.model.AiChatRoleService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import jakarta.annotation.Resource; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -22,6 +23,7 @@ import org.springframework.validation.annotation.Validated; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import static cn.iocoder.yudao.module.ai.ErrorCodeConstants.CHAT_CONVERSATION_MODEL_ERROR; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import static cn.iocoder.yudao.module.ai.ErrorCodeConstants.CHAT_CONVERSATION_NOT_EXISTS; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -49,9 +51,10 @@ public class AiChatConversationServiceImpl implements AiChatConversationService 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 : chatRoleService.getRequiredDefaultChatRole(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Assert.notNull(role, "必须找到聊天角色"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 1.2 获得 AiChatModelDO 聊天模型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        AiChatModelDO model = role.getModelId() != null ? chatModalService.validateChatModel(role.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        AiChatModelDO model = role.getModelId() != null ? chatModalService.validateChatModel(role.getModelId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 : chatModalService.getRequiredDefaultChatModel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Assert.notNull(role, "必须找到默认模型"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Assert.notNull(model, "必须找到默认模型"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        validateChatModel(model); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 2. 创建 AiChatConversationDO 聊天对话 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         AiChatConversationDO conversation = new AiChatConversationDO() 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -70,9 +73,10 @@ public class AiChatConversationServiceImpl implements AiChatConversationService 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw exception(CHAT_CONVERSATION_NOT_EXISTS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 1.2 校验模型是否存在 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        AiChatModelDO model = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        AiChatModelDO model; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (updateReqVO.getModelId() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             model = chatModalService.validateChatModel(updateReqVO.getModelId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Assert.notNull(model, "必须找到默认模型"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 1.3 校验温度参数、Token 数量、消息数量 TODO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -81,13 +85,15 @@ public class AiChatConversationServiceImpl implements AiChatConversationService 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public List<AiChatConversationRespVO> listConversation() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 获取用户id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 查询前100对话 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<AiChatConversationDO> top100Conversation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                = chatConversationMapper.selectTop100Conversation(loginUserId, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return AiChatConversationConvert.INSTANCE.covnertChatConversationResList(top100Conversation); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public List<AiChatConversationDO> getChatConversationListByUserId(Long userId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return chatConversationMapper.selectListByUserId(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void validateChatModel(AiChatModelDO model) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (ObjectUtil.isAllNotEmpty(model.getTemperature(), model.getMaxTokens(), model.getMaxContexts())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        throw exception(CHAT_CONVERSATION_MODEL_ERROR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 |