Administrator
2 days ago 968b4dc669cf723bdb9e077b3a83b6569992475b
refactor(ai): 重构AI成员答题服务中的题目初始化逻辑

- 移除原有的单个题目创建循环逻辑
- 集成批量题目获取方法createQuestionList替代逐个创建
- 优化题目列表遍历方式,统一使用questionList进行处理
- 修正题目排序索引计算逻辑,确保正确性
- 添加产品题目为空时的异常处理机制
- 简化代码结构,提高可读性和维护性
1 files modified
50 ■■■■ changed files
src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java 50 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java
@@ -112,30 +112,9 @@
            aiMemberAnswer.setCorrectCnt(0);
            aiMemberAnswerMapper.insert(aiMemberAnswer);
            List<AiMemberAnswerItem> aiMemberAnswerItems = new ArrayList<>();
            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);
//            for (int i = 1; i <= questionCount; i++){
//                //初始化答题记录
//                AiProductQuestion aiProductQuestion = aiProductQuestionService.createQuestion(aiProduct.getId());
//                AiMemberAnswerItem aiMemberAnswerItem = new AiMemberAnswerItem();
//                aiMemberAnswerItem.setId(UUID.getSimpleUUIDString());
//                aiMemberAnswerItem.setCompanyId(companyId);
@@ -147,9 +126,30 @@
//                aiMemberAnswerItem.setTitle(aiProductQuestion.getTitle());
//                aiMemberAnswerItem.setDifficulty(aiProductQuestion.getDifficulty());
//                aiMemberAnswerItem.setMemberAnswerState(0);
//                aiMemberAnswerItem.setSort( i +1);
//                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);
                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 +1);
                aiMemberAnswerItems.add(aiMemberAnswerItem);
            }
            aiMemberAnswerItemService.saveBatch(aiMemberAnswerItems);
            apiMemberAnswerVoV2.setCurrent(1);
        }else{