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 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<AiMemberTalkItemMapper, AiMemberTalkItem> 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<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;
|
}
|
|
}
|