| | |
| | | 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.res.product.ApiProductVo; |
| | | 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; |
| | | |
| | |
| | | |
| | | 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, String companyId, int type, String resContext,Date createdTime) { |
| | | AiMemberTalkItem aiMemberTalkItem = new AiMemberTalkItem(); |
| | | aiMemberTalkItem.setId(UUID.getSimpleUUIDString()); |
| | | aiMemberTalkItem.setCompanyId(companyId); |
| | | aiMemberTalkItem.setCreatedTime(createdTime); |
| | | aiMemberTalkItem.setMemberId(memberUuid); |
| | | aiMemberTalkItem.setMemberTalkId(id); |
| | | aiMemberTalkItem.setType(type); |
| | | aiMemberTalkItem.setContext(resContext); |
| | | aiMemberTalkItemMapper.insert(aiMemberTalkItem); |
| | | |
| | | return aiMemberTalkItem; |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse historyPage(ApiMemberTalkItemPageDto dto) { |
| | | public IPage<ApiMemberTalkItemVo> 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); |
| | | 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; |
| | | } |
| | | |
| | | } |