From 6caa44d39e3417a91c81d9bf1eea610719837914 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Thu, 09 Oct 2025 15:44:22 +0800
Subject: [PATCH] feat(ai): 新增题目轮播接口- 在 AiTalkService 中添加 questionListV2 方法定义 - 实现 questionListV2 接口逻辑,支持按公司ID查询题目 - 添加 ApiQuestionListDto 请求参数类 - 更新 controller 层,增加 /questionListV2 接口 - 使用通配符导入优化包引用方式
---
src/main/java/cc/mrbird/febs/ai/controller/talk/ApiAiTalkController.java | 15 +++++--
src/main/java/cc/mrbird/febs/ai/service/impl/AiTalkServiceImpl.java | 27 +++++++++++--
src/main/java/cc/mrbird/febs/ai/req/talk/ApiQuestionListDto.java | 13 ++++++
src/main/java/cc/mrbird/febs/ai/service/AiTalkService.java | 7 +--
4 files changed, 50 insertions(+), 12 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/ai/controller/talk/ApiAiTalkController.java b/src/main/java/cc/mrbird/febs/ai/controller/talk/ApiAiTalkController.java
index 2cf5a30..6ece427 100644
--- a/src/main/java/cc/mrbird/febs/ai/controller/talk/ApiAiTalkController.java
+++ b/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)
diff --git a/src/main/java/cc/mrbird/febs/ai/req/talk/ApiQuestionListDto.java b/src/main/java/cc/mrbird/febs/ai/req/talk/ApiQuestionListDto.java
new file mode 100644
index 0000000..19044e1
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/ai/req/talk/ApiQuestionListDto.java
@@ -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;
+}
diff --git a/src/main/java/cc/mrbird/febs/ai/service/AiTalkService.java b/src/main/java/cc/mrbird/febs/ai/service/AiTalkService.java
index f8fb02b..44105a0 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/AiTalkService.java
+++ b/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);
diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiTalkServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiTalkServiceImpl.java
index 299d64c..1480379 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiTalkServiceImpl.java
+++ b/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();
--
Gitblit v1.9.1