From 33a883b0d7edbf633dcf142d2e3c5bf2e334b121 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Mon, 25 Aug 2025 16:10:09 +0800 Subject: [PATCH] feat(ai): 添加 AI 灵通相关功能 --- src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkItemServiceImpl.java | 133 +++++++++++++++++++------------------------ 1 files changed, 59 insertions(+), 74 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkItemServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkItemServiceImpl.java index 4810016..85db5b3 100644 --- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkItemServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkItemServiceImpl.java @@ -1,15 +1,26 @@ package cc.mrbird.febs.ai.service.impl; +import cc.mrbird.febs.ai.enumerates.AiTypeEnum; import cc.mrbird.febs.ai.entity.AiMemberTalkItem; import cc.mrbird.febs.ai.mapper.AiMemberTalkItemMapper; +import cc.mrbird.febs.ai.req.ai.AiMessage; +import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkItemPageDto; +import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkItemVo; import cc.mrbird.febs.ai.service.AiMemberTalkItemService; +import cc.mrbird.febs.ai.utils.UUID; +import cc.mrbird.febs.common.entity.FebsResponse; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.volcengine.ark.runtime.model.completion.chat.ChatMessageRole; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.Date; import java.util.List; /** @@ -26,88 +37,62 @@ private final AiMemberTalkItemMapper aiMemberTalkItemMapper; @Override - public AiMemberTalkItem getById(String id) { - return this.getById(id); + public void add(String memberUuid, String id, int type, String resContext,Date createdTime) { + AiMemberTalkItem aiMemberTalkItem = new AiMemberTalkItem(); + aiMemberTalkItem.setId(UUID.getSimpleUUIDString()); + aiMemberTalkItem.setCreatedTime(createdTime); + aiMemberTalkItem.setMemberId(memberUuid); + aiMemberTalkItem.setMemberTalkId(id); + aiMemberTalkItem.setType(type); + aiMemberTalkItem.setContext(resContext); + aiMemberTalkItemMapper.insert(aiMemberTalkItem); } @Override - public List<AiMemberTalkItem> getByMemberTalkId(String memberTalkId) { - LambdaQueryWrapper<AiMemberTalkItem> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(AiMemberTalkItem::getMemberTalkId, memberTalkId); - queryWrapper.orderByAsc(AiMemberTalkItem::getCreatedTime); - return this.list(queryWrapper); + public AiMemberTalkItem getByQuery(LambdaQueryWrapper<AiMemberTalkItem> memberTalkItemQuery) { + return aiMemberTalkItemMapper.selectOne(memberTalkItemQuery); } @Override - public List<AiMemberTalkItem> getByMemberId(String memberId) { - LambdaQueryWrapper<AiMemberTalkItem> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(AiMemberTalkItem::getMemberId, memberId); - queryWrapper.orderByAsc(AiMemberTalkItem::getCreatedTime); - return this.list(queryWrapper); + public FebsResponse historyPage(ApiMemberTalkItemPageDto dto) { + // 创建分页对象,传入当前页和每页大小 + Page<ApiMemberTalkItemVo> page = new Page<>(dto.getPageNow(), dto.getPageSize()); + Page<ApiMemberTalkItemVo> pageListByQuery = aiMemberTalkItemMapper.getPageListByQuery(page, dto); + return new FebsResponse().success().data(pageListByQuery); } @Override - public List<AiMemberTalkItem> getByType(Integer type) { - LambdaQueryWrapper<AiMemberTalkItem> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(AiMemberTalkItem::getType, type); - queryWrapper.orderByAsc(AiMemberTalkItem::getCreatedTime); - return this.list(queryWrapper); + public List<AiMessage> getQuestionUpDownContext(String memberTalkId, int code) { + List<AiMessage> aiMessages = new ArrayList<>(); + + LambdaQueryWrapper<AiMemberTalkItem> query = Wrappers.lambdaQuery(AiMemberTalkItem.class); + if (AiTypeEnum.QUESTION.getCode() == code){ + query.eq(AiMemberTalkItem::getType,AiTypeEnum.QUESTION_ANSWER.getCode()); + query.eq(AiMemberTalkItem::getMemberTalkId,memberTalkId); + query.orderByDesc(AiMemberTalkItem::getCreatedTime); + query.last("limit 1"); + List<AiMemberTalkItem> aiMemberTalkItems = aiMemberTalkItemMapper.selectList(query); + if (CollUtil.isNotEmpty(aiMemberTalkItems)){ + AiMessage assistantMessage = new AiMessage(); + assistantMessage.setRole(ChatMessageRole.ASSISTANT); + assistantMessage.setContent(aiMemberTalkItems.get(0).getContext()); + aiMessages.add(assistantMessage); + } + } + if (AiTypeEnum.ANSWER.getCode() == code){ + query.eq(AiMemberTalkItem::getType,AiTypeEnum.ANSWER_ANALYSIS.getCode()); + query.eq(AiMemberTalkItem::getMemberTalkId,memberTalkId); + query.orderByDesc(AiMemberTalkItem::getCreatedTime); + query.last("limit 1"); + List<AiMemberTalkItem> aiMemberTalkItems = aiMemberTalkItemMapper.selectList(query); + if (CollUtil.isNotEmpty(aiMemberTalkItems)){ + AiMessage assistantMessage = new AiMessage(); + assistantMessage.setRole(ChatMessageRole.ASSISTANT); + assistantMessage.setContent(aiMemberTalkItems.get(0).getContext()); + aiMessages.add(assistantMessage); + } + } + return aiMessages; } - @Override - @Transactional(rollbackFor = Exception.class) - public boolean saveTalkItem(AiMemberTalkItem aiMemberTalkItem) { - try { - return this.save(aiMemberTalkItem); - } catch (Exception e) { - log.error("保存对话项失败: ", e); - return false; - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public boolean saveBatchTalkItems(List<AiMemberTalkItem> talkItems) { - try { - return this.saveBatch(talkItems); - } catch (Exception e) { - log.error("批量保存对话项失败: ", e); - return false; - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public boolean updateTalkItem(AiMemberTalkItem aiMemberTalkItem) { - try { - return this.updateById(aiMemberTalkItem); - } catch (Exception e) { - log.error("更新对话项失败: ", e); - return false; - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public boolean deleteById(String id) { - try { - return this.removeById(id); - } catch (Exception e) { - log.error("删除对话项失败: ", e); - return false; - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public boolean deleteByMemberTalkId(String memberTalkId) { - try { - LambdaQueryWrapper<AiMemberTalkItem> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(AiMemberTalkItem::getMemberTalkId, memberTalkId); - return this.remove(queryWrapper); - } catch (Exception e) { - log.error("根据对话ID删除对话项失败: ", e); - return false; - } - } } -- Gitblit v1.9.1