diff --git a/src/main/java/com/supervision/police/controller/ChatController.java b/src/main/java/com/supervision/police/controller/ChatController.java index e40b054..4fa95fa 100644 --- a/src/main/java/com/supervision/police/controller/ChatController.java +++ b/src/main/java/com/supervision/police/controller/ChatController.java @@ -1,16 +1,19 @@ package com.supervision.police.controller; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.supervision.common.domain.R; import com.supervision.police.service.ChatService; import com.supervision.police.vo.ChatReqVO; import com.supervision.police.vo.ChatResVO; +import com.supervision.police.vo.ConversationResVo; +import com.supervision.utils.UserUtil; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.List; @Slf4j @RestController @@ -27,4 +30,34 @@ public class ChatController { return R.ok(chatResVO); } + /** + * 查询用户会话列表 + * @param pageNum + * @param pageSize + * @return + */ + @GetMapping("/conversation/list") + public R> queryUserConversationList(@RequestParam(defaultValue = "1") @Parameter(name = "pageNum",description = "页码") Integer pageNum, + @RequestParam(defaultValue = "10") @Parameter(name = "pageSize",description = "每页数量") Integer pageSize){ + + IPage conversationResVoIPage = chatService.queryUserConversationList(UserUtil.getUser().getId(),pageNum, pageSize); + + return R.ok(conversationResVoIPage); + } + + @GetMapping("/conversation/infoList") + public R> queryConversationInfoList(@RequestParam String conversationId, + @RequestParam(defaultValue = "1") @Parameter(name = "pageNum",description = "页码") Integer pageNum, + @RequestParam(defaultValue = "10") @Parameter(name = "pageSize",description = "每页数量") Integer pageSize){ + + IPage chatResVOIPage = chatService.queryConversationInfoList(conversationId, pageNum, pageSize); + + return R.ok(chatResVOIPage); + } + + @PostMapping("/conversation/delete") + public R deleteConversation(@RequestBody List conversationIdList) { + chatService.deleteConversation(conversationIdList); + return R.ok(true); + } } diff --git a/src/main/java/com/supervision/police/service/ChatService.java b/src/main/java/com/supervision/police/service/ChatService.java index a596d0f..158dc9c 100644 --- a/src/main/java/com/supervision/police/service/ChatService.java +++ b/src/main/java/com/supervision/police/service/ChatService.java @@ -5,6 +5,8 @@ import com.supervision.police.vo.ChatReqVO; import com.supervision.police.vo.ChatResVO; import com.supervision.police.vo.ConversationResVo; +import java.util.List; + public interface ChatService { ChatResVO chat(ChatReqVO chatReqVO); ChatResVO chatNew(ChatReqVO chatReqVO); @@ -14,4 +16,7 @@ public interface ChatService { IPage queryUserConversationList(String userId, int page, int size); + + + void deleteConversation(List conversationIdList); } diff --git a/src/main/java/com/supervision/police/service/impl/ChatServiceImpl.java b/src/main/java/com/supervision/police/service/impl/ChatServiceImpl.java index 462118a..eaaadad 100644 --- a/src/main/java/com/supervision/police/service/impl/ChatServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/ChatServiceImpl.java @@ -1,5 +1,6 @@ package com.supervision.police.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -201,6 +202,20 @@ public class ChatServiceImpl implements ChatService { return conversationService.queryUserConversationList(userId, new Page<>(page,size)); } + @Override + @Transactional(rollbackFor = Exception.class, transactionManager = "dataSourceTransactionManager") + public void deleteConversation(List conversationIdList) { + if (CollUtil.isEmpty(conversationIdList)){ + return; + } + for (String conversationId : conversationIdList) { + boolean success = conversationService.removeById(conversationId); + if (success){ + conversationQaService.lambdaUpdate().eq(ConversationQa::getConversationId, conversationId).remove(); + } + } + } + /** * 处理指标结果问答 * diff --git a/src/main/java/com/supervision/police/vo/ChatResVO.java b/src/main/java/com/supervision/police/vo/ChatResVO.java index d3812b7..f33728f 100644 --- a/src/main/java/com/supervision/police/vo/ChatResVO.java +++ b/src/main/java/com/supervision/police/vo/ChatResVO.java @@ -1,5 +1,7 @@ package com.supervision.police.vo; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; import com.supervision.chat.client.dto.chat.ChatResDTO; import com.supervision.police.domain.ConversationQa; import com.supervision.police.vo.dify.KnowledgeBaseSegmentVO; @@ -47,6 +49,9 @@ public class ChatResVO { this.setId(conversationQa.getId()); this.setQuestion(conversationQa.getQuestion()); this.setAnswer(conversationQa.getAnswer()); + if (StrUtil.isNotEmpty(conversationQa.getAnswer())){ + this.answwerMap = JSONUtil.toBean(conversationQa.getAnswer(), Map.class); + } this.setType(conversationQa.getType()); this.setQuestionTime(conversationQa.getQuestionTime()); this.setIntentType(conversationQa.getIntentType());