From 18fdf89338e84e1cab48c2795631777e22b05b81 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Wed, 03 Sep 2025 14:37:54 +0800 Subject: [PATCH] feat(ai): 添加灵通角色设定PROMPT功能 --- src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkItemServiceImpl.java | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 56 insertions(+), 3 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 c3dc6d5..2b93ccc 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,16 +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.metadata.IPage; +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; @@ -27,9 +37,8 @@ private final AiMemberTalkItemMapper aiMemberTalkItemMapper; - @Override - public void add(String memberUuid, String id, int type, String resContext,Date createdTime) { + public AiMemberTalkItem add(String memberUuid, String id, int type, String resContext,Date createdTime) { AiMemberTalkItem aiMemberTalkItem = new AiMemberTalkItem(); aiMemberTalkItem.setId(UUID.getSimpleUUIDString()); aiMemberTalkItem.setCreatedTime(createdTime); @@ -38,10 +47,54 @@ aiMemberTalkItem.setType(type); aiMemberTalkItem.setContext(resContext); aiMemberTalkItemMapper.insert(aiMemberTalkItem); + + return aiMemberTalkItem; } @Override public AiMemberTalkItem getByQuery(LambdaQueryWrapper<AiMemberTalkItem> memberTalkItemQuery) { return aiMemberTalkItemMapper.selectOne(memberTalkItemQuery); } + + @Override + public IPage<ApiMemberTalkItemVo> historyPage(ApiMemberTalkItemPageDto dto) { + // 创建分页对象,传入当前页和每页大小 + Page<ApiMemberTalkItemVo> page = new Page<>(dto.getPageNow(), dto.getPageSize()); + return aiMemberTalkItemMapper.getPageListByQuery(page, dto); + } + + @Override + 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; + } + } -- Gitblit v1.9.1