From 2e6aac61fb60722799383112099971f566f0a4fc Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 26 Jan 2026 10:56:47 +0800
Subject: [PATCH] feat(ai): 优化AI产品问答功能实现
---
src/main/java/cc/mrbird/febs/ai/service/AiProductQuestionService.java | 1 +
src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java | 29 +++++++++++++++++++++++++----
src/main/java/cc/mrbird/febs/ai/service/impl/AiProductQuestionServiceImpl.java | 20 ++++++++++++++++++++
3 files changed, 46 insertions(+), 4 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/ai/service/AiProductQuestionService.java b/src/main/java/cc/mrbird/febs/ai/service/AiProductQuestionService.java
index 499c11b..7fa6c9d 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/AiProductQuestionService.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/AiProductQuestionService.java
@@ -23,4 +23,5 @@
* @return
*/
AiProductQuestion createQuestion(String productId);
+ List<AiProductQuestion> createQuestionList(String productId, int questionCount);
}
diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java
index afbfb9a..8975ee5 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java
@@ -112,9 +112,30 @@
aiMemberAnswer.setCorrectCnt(0);
aiMemberAnswerMapper.insert(aiMemberAnswer);
List<AiMemberAnswerItem> aiMemberAnswerItems = new ArrayList<>();
- for (int i = 1; i <= questionCount; i++){
- //初始化答题记录
- AiProductQuestion aiProductQuestion = aiProductQuestionService.createQuestion(aiProduct.getId());
+// for (int i = 1; i <= questionCount; i++){
+// //初始化答题记录
+// AiProductQuestion aiProductQuestion = aiProductQuestionService.createQuestion(aiProduct.getId());
+// AiMemberAnswerItem aiMemberAnswerItem = new AiMemberAnswerItem();
+// aiMemberAnswerItem.setId(UUID.getSimpleUUIDString());
+// aiMemberAnswerItem.setCompanyId(companyId);
+// aiMemberAnswerItem.setCreatedTime(createdTime);
+// aiMemberAnswerItem.setAnswerId(aiMemberAnswer.getId());
+// aiMemberAnswerItem.setProductId(aiMemberAnswer.getProductId());
+// aiMemberAnswerItem.setMemberId(memberUuid);
+// aiMemberAnswerItem.setProductQuestionId(aiProductQuestion.getId());
+// aiMemberAnswerItem.setTitle(aiProductQuestion.getTitle());
+// aiMemberAnswerItem.setDifficulty(aiProductQuestion.getDifficulty());
+// aiMemberAnswerItem.setMemberAnswerState(0);
+// aiMemberAnswerItem.setSort( i );
+// aiMemberAnswerItems.add(aiMemberAnswerItem);
+// }
+
+ List<AiProductQuestion> questionList = aiProductQuestionService.createQuestionList(aiProduct.getId(), questionCount);
+ if (CollUtil.isEmpty(questionList)){
+ throw new FebsException("产品没有题目");
+ }
+ for (int i = 0; i <= questionList.size(); i++){
+ AiProductQuestion aiProductQuestion = questionList.get(i);
AiMemberAnswerItem aiMemberAnswerItem = new AiMemberAnswerItem();
aiMemberAnswerItem.setId(UUID.getSimpleUUIDString());
aiMemberAnswerItem.setCompanyId(companyId);
@@ -126,7 +147,7 @@
aiMemberAnswerItem.setTitle(aiProductQuestion.getTitle());
aiMemberAnswerItem.setDifficulty(aiProductQuestion.getDifficulty());
aiMemberAnswerItem.setMemberAnswerState(0);
- aiMemberAnswerItem.setSort( i );
+ aiMemberAnswerItem.setSort( i +1);
aiMemberAnswerItems.add(aiMemberAnswerItem);
}
aiMemberAnswerItemService.saveBatch(aiMemberAnswerItems);
diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductQuestionServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductQuestionServiceImpl.java
index 5a577b8..54c85fc 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductQuestionServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductQuestionServiceImpl.java
@@ -15,6 +15,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@@ -60,4 +61,23 @@
}
return aiProductQuestion;
}
+
+ @Override
+ public List<AiProductQuestion> createQuestionList(String productId, int questionCount) {
+ List<AiProductQuestion> list = new ArrayList<>();
+ LambdaQueryWrapper<AiProductQuestionLink> aiProductQuestionLinkLambdaQueryWrapper = Wrappers.lambdaQuery(AiProductQuestionLink.class);
+ aiProductQuestionLinkLambdaQueryWrapper.eq(AiProductQuestionLink::getProductId, productId);
+ List<AiProductQuestionLink> linkList = aiProductQuestionLinkService.getListByQuery(aiProductQuestionLinkLambdaQueryWrapper);
+ if(CollUtil.isNotEmpty(linkList)){
+ List<String> collect = linkList.stream().map(AiProductQuestionLink::getProductQuestionId).collect(Collectors.toList());
+ if(CollUtil.isNotEmpty( collect)){
+ Set<String> randomEleSet = RandomUtil.randomEleSet(collect, questionCount);
+
+ LambdaQueryWrapper<AiProductQuestion> questionLambdaQueryWrapper = Wrappers.lambdaQuery(AiProductQuestion.class);
+ questionLambdaQueryWrapper.in(AiProductQuestion::getId,randomEleSet);
+ list = this.getListByQuery(questionLambdaQueryWrapper);
+ }
+ }
+ return list;
+ }
}
--
Gitblit v1.9.1