package cc.mrbird.febs.ai.service.impl; import cc.mrbird.febs.ai.entity.AiTalk; import cc.mrbird.febs.ai.mapper.AiTalkMapper; import cc.mrbird.febs.ai.req.talk.AiTalkAnswerStream; import cc.mrbird.febs.ai.req.talk.ApiTalkDto; import cc.mrbird.febs.ai.req.talk.ApiTalkItemPageDto; import cc.mrbird.febs.ai.req.talk.ApiTalkPageDto; import cc.mrbird.febs.ai.res.memberAnswer.ApiMemberProductWorkVo; import cc.mrbird.febs.ai.res.talk.ApiTalkPageVo; import cc.mrbird.febs.ai.res.talk.ApiTalkVo; import cc.mrbird.febs.ai.service.AiService; import cc.mrbird.febs.ai.service.AiTalkItemService; import cc.mrbird.febs.ai.service.AiTalkService; import cc.mrbird.febs.ai.utils.UUID; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.utils.LoginUserUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import reactor.core.publisher.Flux; import java.util.Date; @Slf4j @Service @RequiredArgsConstructor public class AiTalkServiceImpl extends ServiceImpl implements AiTalkService { private final AiTalkItemService aiTalkItemService; private final AiService aiService; @Override public FebsResponse talkOpen(ApiTalkDto dto) { String talkId = dto.getTalkId(); String context = dto.getContext(); Integer type = dto.getType(); String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid(); AiTalk aiTalk = this.getById(talkId); DateTime date = DateUtil.date(); if (StrUtil.isEmpty(talkId)){ aiTalk = this.add(memberUuid,context, date); } aiTalkItemService.add(aiTalk.getId(), type, context, memberUuid, date); ApiTalkVo apiTalkVo = new ApiTalkVo(); apiTalkVo.setTalkId(aiTalk.getId()); return new FebsResponse().success().data(apiTalkVo); } @Override public AiTalk add(String memberUuid, String question, Date date) { AiTalk aiTalk = new AiTalk(); aiTalk.setId(UUID.getSimpleUUIDString()); aiTalk.setQuestion(question); aiTalk.setCreatedTime(date); aiTalk.setMemberId(memberUuid); this.baseMapper.insert(aiTalk); return aiTalk; } @Override public Flux answerStream(String question) { return aiService.answerStream(question); } @Override public FebsResponse talkList(ApiTalkPageDto dto) { String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid(); dto.setMemberUuid(memberUuid); // 创建分页对象,传入当前页和每页大小 Page page = new Page<>(dto.getPageNow(), dto.getPageSize()); Page pageListByQuery = this.getBaseMapper().getPageTalkListByQuery(page, dto); return new FebsResponse().success().data(pageListByQuery); } @Override public FebsResponse historyPage(ApiTalkItemPageDto dto) { String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid(); dto.setMemberUuid(memberUuid); return aiTalkItemService.historyPage(dto); } @Override public Flux answerStreamV2(AiTalkAnswerStream dto) { return aiService.answerStreamV2(dto); } }