| | |
| | | import cc.mrbird.febs.ai.mapper.AiMemberTalkMapper; |
| | | import cc.mrbird.febs.ai.req.ai.AiMessage; |
| | | import cc.mrbird.febs.ai.req.ai.AiRequest; |
| | | import cc.mrbird.febs.ai.req.member.ApiMemberTalkPageDto; |
| | | import cc.mrbird.febs.ai.req.memberTalk.*; |
| | | import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkListDto; |
| | | import cc.mrbird.febs.ai.res.ai.AiResponse; |
| | | import cc.mrbird.febs.ai.res.member.ApiMemberTalkPageVo; |
| | | import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkListVo; |
| | | import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkReloadVo; |
| | | import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkVo; |
| | | import cc.mrbird.febs.ai.res.memberTalk.ApiTalkMemberListVo; |
| | | import cc.mrbird.febs.ai.service.AiMemberTalkItemService; |
| | | import cc.mrbird.febs.ai.service.AiMemberTalkService; |
| | | import cc.mrbird.febs.ai.service.AiProductRoleLinkService; |
| | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.json.JSONUtil; |
| | | 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 lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | query.last("limit 1"); |
| | | AiMemberTalk aiMemberTalk = this.getByQuery(query); |
| | | if (ObjectUtil.isNull(aiMemberTalk)){ |
| | | aiMemberTalk = this.add(memberUuid,companyId,productId,nowTime); |
| | | aiMemberTalk = this.add(memberUuid,companyId,productId,nowTime,5); |
| | | } |
| | | |
| | | List<AiMessage> aiMessageDtoList = aiMemberTalkItemService.getQuestionUpDownContext(aiMemberTalk.getId(),AiTypeEnum.QUESTION.getCode()); |
| | |
| | | queryWrapper.eq(AiMemberTalkItem::getType,AiTypeEnum.QUESTION_ANSWER.getCode()); |
| | | queryWrapper.orderByDesc(AiMemberTalkItem::getCreatedTime); |
| | | queryWrapper.last("limit 1"); |
| | | AiMemberTalkItem byQuery = aiMemberTalkItemService.getByQuery(queryWrapper); |
| | | AiMemberTalkItem byQuery = aiMemberTalkItemService.getOneByQuery(queryWrapper); |
| | | if (ObjectUtil.isNotNull(byQuery)){ |
| | | apiMemberTalkReloadVo.setContext(byQuery.getContext()); |
| | | apiMemberTalkReloadVo.setMemberTalkId(memberTalkId); |
| | |
| | | query.last("limit 1"); |
| | | AiMemberTalk aiMemberTalk = this.getByQuery(query); |
| | | if (ObjectUtil.isNull(aiMemberTalk)) { |
| | | aiMemberTalk = this.add(memberUuid,companyId, productId, nowTime); |
| | | aiMemberTalk = this.add(memberUuid,companyId, productId, nowTime,5); |
| | | } |
| | | try { |
| | | if (aiResponse.getCode().equals("200")) { |
| | |
| | | memberTalkItemQuery.eq(AiMemberTalkItem::getType,1); |
| | | memberTalkItemQuery.orderByDesc(AiMemberTalkItem::getCreatedTime); |
| | | memberTalkItemQuery.last("limit 1"); |
| | | AiMemberTalkItem aiMemberTalkItem = aiMemberTalkItemService.getByQuery(memberTalkItemQuery); |
| | | AiMemberTalkItem aiMemberTalkItem = aiMemberTalkItemService.getOneByQuery(memberTalkItemQuery); |
| | | aiMemberTalkItemService.add(memberUuid,aiMemberTalk.getId(),companyId,2,reqContext,new Date()); |
| | | |
| | | String format = StrUtil.format(ANSWER_FORMAT, aiMemberTalkItem.getContext(), reqContext); |
| | |
| | | return new FebsResponse().success().data(apiMemberTalkVo); |
| | | } |
| | | @Override |
| | | public AiMemberTalk add(String memberUuid,String companyId, String productId, Date nowTime) { |
| | | public AiMemberTalk add(String memberUuid,String companyId, String productId, Date nowTime,Integer questionCount) { |
| | | AiMemberTalk aiMemberTalk = new AiMemberTalk(); |
| | | aiMemberTalk.setId(UUID.getSimpleUUIDString()); |
| | | aiMemberTalk.setCompanyId(companyId); |
| | | aiMemberTalk.setCreatedTime(nowTime); |
| | | aiMemberTalk.setMemberId(memberUuid); |
| | | aiMemberTalk.setProductId(productId); |
| | | aiMemberTalk.setQuestionCnt(questionCount); |
| | | aiMemberTalk.setDoneCnt(0); |
| | | aiMemberTalk.setState(AiTypeEnum.AI_MEMBER_TALK_STATE_ING.getCode()); |
| | | aiMemberTalkMapper.insert(aiMemberTalk); |
| | | return aiMemberTalk; |
| | | } |
| | |
| | | return aiService.answerStream(question); |
| | | } |
| | | |
| | | @Override |
| | | public List<AiMemberTalk> getListByCompanyId(String companyId) { |
| | | return aiMemberTalkMapper.selectList( |
| | | Wrappers.lambdaQuery(AiMemberTalk.class) |
| | | .eq(AiMemberTalk::getCompanyId, companyId) |
| | | .eq(AiMemberTalk::getState, AiTypeEnum.AI_MEMBER_TALK_STATE_DONE.getCode()) |
| | | ); |
| | | } |
| | | |
| | | @Override |
| | | public List<AiMemberTalk> getListByCompanyIdAndMemberUuid(String companyId, String memberUuid) { |
| | | return aiMemberTalkMapper.selectList( |
| | | Wrappers.lambdaQuery(AiMemberTalk.class) |
| | | .eq(AiMemberTalk::getCompanyId, companyId) |
| | | .eq(AiMemberTalk::getMemberId, memberUuid) |
| | | .eq(AiMemberTalk::getState, AiTypeEnum.AI_MEMBER_TALK_STATE_DONE.getCode()) |
| | | ); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<ApiMemberTalkListVo> getPageByDto(ApiMemberTalkListDto dto) { |
| | | // 创建分页对象,传入当前页和每页大小 |
| | | Page<ApiMemberTalkListVo> page = new Page<>(dto.getPageNow(), dto.getPageSize()); |
| | | return aiMemberTalkMapper.getPageByDto(page, dto); |
| | | } |
| | | |
| | | @Override |
| | | public Page<ApiMemberTalkPageVo> getTalkPage(Page<ApiMemberTalkPageVo> page, ApiMemberTalkPageDto dto) { |
| | | return aiMemberTalkMapper.getTalkPage(page, dto); |
| | | } |
| | | |
| | | } |