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 java.util.ArrayList; import java.util.Date; import java.util.List; /** * AI用户对话训练记录子表 Service实现类 * * @author yourname * @date 2025-07-29 */ @Slf4j @Service @RequiredArgsConstructor public class AiMemberTalkItemServiceImpl extends ServiceImpl implements AiMemberTalkItemService { private final AiMemberTalkItemMapper aiMemberTalkItemMapper; @Override 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 AiMemberTalkItem getByQuery(LambdaQueryWrapper memberTalkItemQuery) { return aiMemberTalkItemMapper.selectOne(memberTalkItemQuery); } @Override public FebsResponse historyPage(ApiMemberTalkItemPageDto dto) { // 创建分页对象,传入当前页和每页大小 Page page = new Page<>(dto.getPageNow(), dto.getPageSize()); Page pageListByQuery = aiMemberTalkItemMapper.getPageListByQuery(page, dto); return new FebsResponse().success().data(pageListByQuery); } @Override public List getQuestionUpDownContext(String memberTalkId, int code) { List aiMessages = new ArrayList<>(); LambdaQueryWrapper 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 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 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; } }