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