From a01ef141b18dd249df9adc93612501d782c466a7 Mon Sep 17 00:00:00 2001 From: houzhongjian <houzhongyi@126.com> Date: 星期四, 12 六月 2025 11:29:15 +0800 Subject: [PATCH] ai服务代码更新 --- iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/chat/AiChatMessageController.java | 81 ++++++++++++++++++++++++++-------------- 1 files changed, 52 insertions(+), 29 deletions(-) diff --git a/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/chat/AiChatMessageController.java b/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/chat/AiChatMessageController.java index ee38df8..21ee08d 100644 --- a/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/chat/AiChatMessageController.java +++ b/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/chat/AiChatMessageController.java @@ -7,10 +7,7 @@ import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.common.util.collection.MapUtils; import com.iailab.framework.common.util.object.BeanUtils; -import com.iailab.module.ai.controller.admin.chat.vo.message.AiChatMessagePageReqVO; -import com.iailab.module.ai.controller.admin.chat.vo.message.AiChatMessageRespVO; -import com.iailab.module.ai.controller.admin.chat.vo.message.AiChatMessageSendReqVO; -import com.iailab.module.ai.controller.admin.chat.vo.message.AiChatMessageSendRespVO; +import com.iailab.module.ai.controller.admin.chat.vo.message.*; import com.iailab.module.ai.dal.dataobject.chat.AiChatConversationDO; import com.iailab.module.ai.dal.dataobject.chat.AiChatMessageDO; import com.iailab.module.ai.dal.dataobject.knowledge.AiKnowledgeDocumentDO; @@ -33,6 +30,7 @@ import org.springframework.web.bind.annotation.*; import reactor.core.publisher.Flux; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; @@ -70,6 +68,29 @@ return chatMessageService.sendChatMessageStream(sendReqVO, getLoginUserId()); } + @Operation(summary = "获得指定对话的消息列表(分页)") + @GetMapping("/page-list-by-conversation-id") + public CommonResult<PageResult<AiChatMessageRespVO>> getChatMessagePageListByConversationId(AiChatMessageReqVO queryReqVO) { + PageResult<AiChatMessageRespVO> pageResult = new PageResult<>(); + AiChatConversationDO conversation = chatConversationService.getChatConversation(queryReqVO.getConversationId()); + if (conversation == null || ObjUtil.notEqual(conversation.getUserId(), getLoginUserId())) { + return success(pageResult); + } + // 1. 获取消息列表 + PageResult<AiChatMessageDO> pageList = chatMessageService.getChatMessagePageByConversationId(queryReqVO); + List<AiChatMessageDO> messageList = pageList.getList(); + if (CollUtil.isEmpty(messageList)) { + pageResult.setList(new ArrayList<>()); + pageResult.setTotal(0L); + return success(pageResult); + } + List<AiChatMessageRespVO> messageVOList = BeanUtils.toBean(messageList, AiChatMessageRespVO.class); + dealKnowledge(messageList, messageVOList); + pageResult.setList(messageVOList); + pageResult.setTotal(pageList.getTotal()); + return success(pageResult); + } + @Operation(summary = "获得指定对话的消息列表") @GetMapping("/list-by-conversation-id") @Parameter(name = "conversationId", required = true, description = "对话编号", example = "1024") @@ -84,32 +105,8 @@ if (CollUtil.isEmpty(messageList)) { return success(Collections.emptyList()); } - - // 2. 拼接数据,主要是知识库段落信息 - Map<Long, AiKnowledgeSegmentDO> segmentMap = knowledgeSegmentService.getKnowledgeSegmentMap(convertListByFlatMap(messageList, - message -> CollUtil.isEmpty(message.getSegmentIds()) ? null : message.getSegmentIds().stream())); - Map<Long, AiKnowledgeDocumentDO> documentMap = knowledgeDocumentService.getKnowledgeDocumentMap( - convertList(segmentMap.values(), AiKnowledgeSegmentDO::getDocumentId)); List<AiChatMessageRespVO> messageVOList = BeanUtils.toBean(messageList, AiChatMessageRespVO.class); - for (int i = 0; i < messageList.size(); i++) { - AiChatMessageDO message = messageList.get(i); - if (CollUtil.isEmpty(message.getSegmentIds())) { - continue; - } - // 设置知识库段落信息 - messageVOList.get(i).setSegments(convertList(message.getSegmentIds(), segmentId -> { - AiKnowledgeSegmentDO segment = segmentMap.get(segmentId); - if (segment == null) { - return null; - } - AiKnowledgeDocumentDO document = documentMap.get(segment.getDocumentId()); - if (document == null) { - return null; - } - return new AiChatMessageRespVO.KnowledgeSegment().setId(segment.getId()).setContent(segment.getContent()) - .setDocumentId(segment.getDocumentId()).setDocumentName(document.getName()); - })); - } + dealKnowledge(messageList, messageVOList); return success(messageVOList); } @@ -180,4 +177,30 @@ return success(true); } + private void dealKnowledge(List<AiChatMessageDO> messageList, List<AiChatMessageRespVO> messageVOList) { + // 拼接数据,主要是知识库段落信息 + Map<Long, AiKnowledgeSegmentDO> segmentMap = knowledgeSegmentService.getKnowledgeSegmentMap(convertListByFlatMap(messageList, + message -> CollUtil.isEmpty(message.getSegmentIds()) ? null : message.getSegmentIds().stream())); + Map<Long, AiKnowledgeDocumentDO> documentMap = knowledgeDocumentService.getKnowledgeDocumentMap( + convertList(segmentMap.values(), AiKnowledgeSegmentDO::getDocumentId)); + for (int i = 0; i < messageList.size(); i++) { + AiChatMessageDO message = messageList.get(i); + if (CollUtil.isEmpty(message.getSegmentIds())) { + continue; + } + // 设置知识库段落信息 + messageVOList.get(i).setSegments(convertList(message.getSegmentIds(), segmentId -> { + AiKnowledgeSegmentDO segment = segmentMap.get(segmentId); + if (segment == null) { + return null; + } + AiKnowledgeDocumentDO document = documentMap.get(segment.getDocumentId()); + if (document == null) { + return null; + } + return new AiChatMessageRespVO.KnowledgeSegment().setId(segment.getId()).setContent(segment.getContent()) + .setDocumentId(segment.getDocumentId()).setDocumentName(document.getName()); + })); + } + } } -- Gitblit v1.9.3