feat(ai): 新增题目轮播接口- 在 AiTalkService 中添加 questionListV2 方法定义
- 实现 questionListV2 接口逻辑,支持按公司ID查询题目
- 添加 ApiQuestionListDto 请求参数类
- 更新 controller 层,增加 /questionListV2 接口
- 使用通配符导入优化包引用方式
3 files modified
1 files added
62 ■■■■ changed files
src/main/java/cc/mrbird/febs/ai/controller/talk/ApiAiTalkController.java 15 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/req/talk/ApiQuestionListDto.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/AiTalkService.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/impl/AiTalkServiceImpl.java 27 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/controller/talk/ApiAiTalkController.java
@@ -1,9 +1,6 @@
package cc.mrbird.febs.ai.controller.talk;
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.req.talk.*;
import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkStreamVoOld;
import cc.mrbird.febs.ai.res.talk.ApiTalkItemPageVo;
import cc.mrbird.febs.ai.res.talk.ApiTalkPageVo;
@@ -42,6 +39,16 @@
        return aiTalkService.questionList();
    }
    @ApiOperation(value = "题目轮播", notes = "题目轮播")
    @ApiResponses({
            @ApiResponse(code = 200, message = "success", response = ApiTalkQuestionVo.class)
    })
    @PostMapping(value = "/questionListV2")
    public FebsResponse questionListV2(@RequestBody @Validated ApiQuestionListDto dto) {
        return aiTalkService.questionListV2(dto);
    }
    @ApiOperation(value = "用户AI问答", notes = "用户AI问答")
    @ApiResponses({
            @ApiResponse(code = 200, message = "success", response = ApiTalkVo.class)
src/main/java/cc/mrbird/febs/ai/req/talk/ApiQuestionListDto.java
New file
@@ -0,0 +1,13 @@
package cc.mrbird.febs.ai.req.talk;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "ApiQuestionListDto", description = "参数")
public class ApiQuestionListDto {
    @ApiModelProperty(value = "公司ID", example = "1")
    private String companyId;
}
src/main/java/cc/mrbird/febs/ai/service/AiTalkService.java
@@ -1,10 +1,7 @@
package cc.mrbird.febs.ai.service;
import cc.mrbird.febs.ai.entity.AiTalk;
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.req.talk.*;
import cc.mrbird.febs.common.entity.FebsResponse;
import com.baomidou.mybatisplus.extension.service.IService;
import reactor.core.publisher.Flux;
@@ -15,6 +12,8 @@
    FebsResponse questionList();
    FebsResponse questionListV2(ApiQuestionListDto dto);
    FebsResponse talkOpen(ApiTalkDto dto);
    AiTalk add(String memberUuid,String companyId, String question, Date date);
src/main/java/cc/mrbird/febs/ai/service/impl/AiTalkServiceImpl.java
@@ -4,10 +4,7 @@
import cc.mrbird.febs.ai.entity.AiTalk;
import cc.mrbird.febs.ai.enumerates.AiPromptEnum;
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.req.talk.*;
import cc.mrbird.febs.ai.res.talk.ApiTalkPageVo;
import cc.mrbird.febs.ai.res.talk.ApiTalkQuestionVo;
import cc.mrbird.febs.ai.res.talk.ApiTalkVo;
@@ -70,6 +67,28 @@
    }
    @Override
    public FebsResponse questionListV2(ApiQuestionListDto dto) {
        List<ApiTalkQuestionVo> list = new ArrayList<>();
        LambdaQueryWrapper<AiProductQuestion> queryWrapper = Wrappers.lambdaQuery(AiProductQuestion.class);
        if (StrUtil.isNotEmpty(dto.getCompanyId())){
            queryWrapper.eq(AiProductQuestion::getCompanyId,dto.getCompanyId());
        }else{
            queryWrapper.isNull(AiProductQuestion::getCompanyId);
        }
        queryWrapper.orderByDesc(AiProductQuestion::getCreatedTime);
        queryWrapper.last("limit 30");
        List<AiProductQuestion> listByQuery = aiProductQuestionService.getListByQuery(queryWrapper);
        if (CollUtil.isNotEmpty(listByQuery)){
            for (AiProductQuestion aiProductQuestion : listByQuery){
                ApiTalkQuestionVo apiTalkQuestionVo = new ApiTalkQuestionVo();
                apiTalkQuestionVo.setContext(aiProductQuestion.getTitle());
                list.add(apiTalkQuestionVo);
            }
        }
        return new FebsResponse().success().data(list);
    }
    @Override
    public FebsResponse talkOpen(ApiTalkDto dto) {
        String talkId = dto.getTalkId();
        String context = dto.getContext();