【调整】调整AI聊天,message列表、删除message

This commit is contained in:
cherishsince 2024-05-07 10:54:56 +08:00
parent 424210066f
commit 8de98a15bb
8 changed files with 74 additions and 13 deletions

View File

@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.ai.controller.admin.chat;
import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.conversation.AiChatConversationCreateReqVO; import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.conversation.AiChatConversationCreateReqVO;
import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.conversation.AiChatConversationListReqVO;
import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.conversation.AiChatConversationRespVO; import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.conversation.AiChatConversationRespVO;
import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.conversation.AiChatConversationUpdateReqVO; import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.conversation.AiChatConversationUpdateReqVO;
import cn.iocoder.yudao.module.ai.service.AiChatConversationService; import cn.iocoder.yudao.module.ai.service.AiChatConversationService;
@ -47,8 +46,8 @@ public class AiChatConversationController {
// TODO done @fan实现一下 // TODO done @fan实现一下
@GetMapping("/list") @GetMapping("/list")
@Operation(summary = "获得聊天会话列表") @Operation(summary = "获得聊天会话列表")
public CommonResult<List<AiChatConversationRespVO>> getConversationList(@ModelAttribute AiChatConversationListReqVO listReqVO) { public CommonResult<List<AiChatConversationRespVO>> getConversationList() {
return success(aiChatConversationService.listConversation(listReqVO)); return success(aiChatConversationService.listConversation());
} }
// TODO @fan实现一下 // TODO @fan实现一下

View File

@ -31,7 +31,7 @@ public class AiChatMessageController {
@Operation(summary = "发送消息(段式)", description = "一次性返回,响应较慢") @Operation(summary = "发送消息(段式)", description = "一次性返回,响应较慢")
@PostMapping("/send") @PostMapping("/send")
public CommonResult<AiChatMessageRespVO> sendMessage(@Validated @ModelAttribute AiChatMessageSendReqVO sendReqVO) { public CommonResult<AiChatMessageRespVO> sendMessage(@Validated @ModelAttribute AiChatMessageSendReqVO sendReqVO) {
// TODO @fan使用 static import这样就 success 就行了 // TODO done @fan使用 static import这样就 success 就行了
return success(chatService.chat(sendReqVO)); return success(chatService.chat(sendReqVO));
} }
@ -49,14 +49,14 @@ public class AiChatMessageController {
@GetMapping("/list-by-conversation-id") @GetMapping("/list-by-conversation-id")
@Parameter(name = "conversationId", required = true, description = "会话编号", example = "1024") @Parameter(name = "conversationId", required = true, description = "会话编号", example = "1024")
public CommonResult<List<AiChatMessageRespVO>> getMessageListByConversationId(@RequestParam("conversationId") Long conversationId) { public CommonResult<List<AiChatMessageRespVO>> getMessageListByConversationId(@RequestParam("conversationId") Long conversationId) {
return success(null); return success(chatService.getMessageListByConversationId(conversationId));
} }
@Operation(summary = "删除消息") @Operation(summary = "删除消息")
@DeleteMapping("/delete") @DeleteMapping("/delete")
@Parameter(name = "id", required = true, description = "消息编号", example = "1024") @Parameter(name = "id", required = true, description = "消息编号", example = "1024")
public CommonResult<Boolean> delete(@RequestParam("id") Long id) { public CommonResult<Boolean> deleteMessage(@RequestParam("id") Long id) {
return success(null); return success(chatService.deleteMessage(id));
} }
} }

View File

@ -26,4 +26,12 @@ public interface AiChatMessageConvert {
* @return * @return
*/ */
List<AiChatMessageRespVO> convert(List<AiChatMessageDO> list); List<AiChatMessageRespVO> convert(List<AiChatMessageDO> list);
/**
* 转换 AiChatMessageRespVO
*
* @param aiChatMessageDOList
* @return
*/
List<AiChatMessageRespVO> convertAiChatMessageRespVOList(List<AiChatMessageDO> aiChatMessageDOList);
} }

View File

@ -6,6 +6,8 @@ import cn.iocoder.yudao.module.ai.dal.dataobject.chat.AiChatMessageDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
/** /**
* message mapper * message mapper
* *
@ -29,4 +31,12 @@ public interface AiChatMessageMapper extends BaseMapperX<AiChatMessageDO> {
); );
} }
/**
* 查询 - 根据 对话id查询
*
* @param conversationId
*/
default List<AiChatMessageDO> selectByConversationId(Long conversationId) {
return selectList()
}
} }

View File

@ -4,6 +4,8 @@ import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.conversation.AiChatCo
import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.conversation.AiChatConversationListReqVO; import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.conversation.AiChatConversationListReqVO;
import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.conversation.AiChatConversationRespVO; import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.conversation.AiChatConversationRespVO;
import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.conversation.AiChatConversationUpdateReqVO; import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.conversation.AiChatConversationUpdateReqVO;
import cn.iocoder.yudao.module.ai.dal.dataobject.chat.AiChatConversationDO;
import org.jetbrains.annotations.NotNull;
import java.util.List; import java.util.List;
@ -34,10 +36,9 @@ public interface AiChatConversationService {
/** /**
* 获取 - 对话列表 * 获取 - 对话列表
* *
* @param req
* @return * @return
*/ */
List<AiChatConversationRespVO> listConversation(AiChatConversationListReqVO req); List<AiChatConversationRespVO> listConversation();
/** /**
* 获取 - 对话 * 获取 - 对话
@ -54,4 +55,11 @@ public interface AiChatConversationService {
*/ */
Boolean deleteConversation(Long id); Boolean deleteConversation(Long id);
/**
* 校验 - 是否存在
*
* @param id
* @return
*/
AiChatConversationDO validateExists(Long id);
} }

View File

@ -4,6 +4,8 @@ import cn.iocoder.yudao.module.ai.controller.Utf8SseEmitter;
import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.message.AiChatMessageRespVO; import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.message.AiChatMessageRespVO;
import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.message.AiChatMessageSendReqVO; import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.message.AiChatMessageSendReqVO;
import java.util.List;
/** /**
* 聊天 chat * 聊天 chat
* *
@ -29,4 +31,21 @@ public interface AiChatService {
* @return * @return
*/ */
void chatStream(AiChatMessageSendReqVO req, Utf8SseEmitter sseEmitter); void chatStream(AiChatMessageSendReqVO req, Utf8SseEmitter sseEmitter);
/**
* 获取 - 获取对话 message list
*
* @param conversationId
* @return
*/
List<AiChatMessageRespVO> getMessageListByConversationId(Long conversationId);
/**
* 删除 - 删除message
*
* @param id
* @return
*/
Boolean deleteMessage(Long id);
} }

View File

@ -98,12 +98,12 @@ public class AiChatConversationServiceImpl implements AiChatConversationService
} }
@Override @Override
public List<AiChatConversationRespVO> listConversation(AiChatConversationListReqVO listReqVO) { public List<AiChatConversationRespVO> listConversation() {
// 获取用户id // 获取用户id
Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
// 查询前100对话 // 查询前100对话
List<AiChatConversationDO> top100Conversation List<AiChatConversationDO> top100Conversation
= aiChatConversationMapper.selectTop100Conversation(loginUserId, listReqVO.getTitle()); = aiChatConversationMapper.selectTop100Conversation(loginUserId, null);
return AiChatConversationConvert.INSTANCE.covnertChatConversationResList(top100Conversation); return AiChatConversationConvert.INSTANCE.covnertChatConversationResList(top100Conversation);
} }
@ -118,7 +118,7 @@ public class AiChatConversationServiceImpl implements AiChatConversationService
return aiChatConversationMapper.deleteById(id) > 0; return aiChatConversationMapper.deleteById(id) > 0;
} }
private @NotNull AiChatConversationDO validateExists(Long id) { public @NotNull AiChatConversationDO validateExists(Long id) {
AiChatConversationDO aiChatConversationDO = aiChatConversationMapper.selectById(id); AiChatConversationDO aiChatConversationDO = aiChatConversationMapper.selectById(id);
if (aiChatConversationDO == null) { if (aiChatConversationDO == null) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.AI_CONVERSATION_NOT_EXISTS); throw ServiceExceptionUtil.exception(ErrorCodeConstants.AI_CONVERSATION_NOT_EXISTS);

View File

@ -14,6 +14,7 @@ import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.conversation.AiChatCo
import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.message.AiChatMessageRespVO; import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.message.AiChatMessageRespVO;
import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.message.AiChatMessageSendReqVO; import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.message.AiChatMessageSendReqVO;
import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModalRes; import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModalRes;
import cn.iocoder.yudao.module.ai.convert.AiChatMessageConvert;
import cn.iocoder.yudao.module.ai.dal.dataobject.chat.AiChatMessageDO; import cn.iocoder.yudao.module.ai.dal.dataobject.chat.AiChatMessageDO;
import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatRoleDO; 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.AiChatConversationMapper;
@ -31,6 +32,7 @@ import org.springframework.transaction.annotation.Transactional;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import java.io.IOException; import java.io.IOException;
import java.util.List;
import java.util.function.Consumer; import java.util.function.Consumer;
/** /**
@ -187,4 +189,19 @@ public class AiChatServiceImpl implements AiChatService {
} }
); );
} }
@Override
public List<AiChatMessageRespVO> getMessageListByConversationId(Long conversationId) {
// 校验对话是否存在
chatConversationService.validateExists(conversationId);
// 获取对话所有 message
List<AiChatMessageDO> aiChatMessageDOList = aiChatMessageMapper.selectByConversationId(conversationId);
// 转换 AiChatMessageRespVO
return AiChatMessageConvert.INSTANCE.convertAiChatMessageRespVOList(aiChatMessageDOList);
}
@Override
public Boolean deleteMessage(Long id) {
return aiChatMessageMapper.deleteById(id) > 0;
}
} }