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.ApiTalkDto;
|
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<AiTalkMapper, AiTalk> 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<FebsResponse> answerStream(String question) {
|
|
return aiService.answerStream(question);
|
}
|
|
@Override
|
public FebsResponse talkList(ApiTalkPageDto dto) {
|
String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid();
|
dto.setMemberUuid(memberUuid);
|
// 创建分页对象,传入当前页和每页大小
|
Page<ApiTalkPageVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
|
Page<ApiTalkPageVo> pageListByQuery = this.getBaseMapper().getPageTalkListByQuery(page, dto);
|
|
return new FebsResponse().success().data(pageListByQuery);
|
}
|
|
}
|