From 50e115e0161091385286ab2462b09018b4f18456 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Wed, 13 Aug 2025 11:16:25 +0800 Subject: [PATCH] feat(ai): 新增错题集功能 --- src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerItemServiceImpl.java | 61 ++++++++++++++++++++++++++++++ 1 files changed, 60 insertions(+), 1 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerItemServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerItemServiceImpl.java index 9c74cec..47ccb3b 100644 --- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerItemServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerItemServiceImpl.java @@ -1,16 +1,31 @@ package cc.mrbird.febs.ai.service.impl; import cc.mrbird.febs.ai.entity.AiMemberAnswerItem; +import cc.mrbird.febs.ai.entity.AiProductQuestionItem; import cc.mrbird.febs.ai.mapper.AiMemberAnswerItemMapper; +import cc.mrbird.febs.ai.req.memberAnswer.ApiMemberAnswerPreviousDto; +import cc.mrbird.febs.ai.req.memberAnswer.ApiMemberAnswerWrongPageDto; +import cc.mrbird.febs.ai.res.memberAnswer.ApiMemberAnswerPreviousItemVo; +import cc.mrbird.febs.ai.res.memberAnswer.ApiMemberAnswerPreviousVo; +import cc.mrbird.febs.ai.res.memberAnswer.ApiMemberAnswerWrongVo; +import cc.mrbird.febs.ai.res.product.ApiProductVo; import cc.mrbird.febs.ai.service.AiMemberAnswerItemService; +import cc.mrbird.febs.ai.service.AiProductQuestionItemService; +import cc.mrbird.febs.common.entity.FebsResponse; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; /** * AI用户答题记录子表 Service实现类 @@ -24,6 +39,50 @@ public class AiMemberAnswerItemServiceImpl extends ServiceImpl<AiMemberAnswerItemMapper, AiMemberAnswerItem> implements AiMemberAnswerItemService { private final AiMemberAnswerItemMapper aiMemberAnswerItemMapper; + private final AiProductQuestionItemService aiProductQuestionItemService; + @Override + public Page<ApiMemberAnswerPreviousVo> getPageListByQuery(Page<ApiMemberAnswerPreviousVo> page, ApiMemberAnswerPreviousDto dto) { + return aiMemberAnswerItemMapper.selectPageListByQuery(page, dto); + } + @Override + public FebsResponse wrongPage(ApiMemberAnswerWrongPageDto dto) { + // 创建分页对象,传入当前页和每页大小 + Page<ApiMemberAnswerWrongVo> page = new Page<>(dto.getPageNow(), dto.getPageSize()); + Page<ApiMemberAnswerWrongVo> pageListByQuery = aiMemberAnswerItemMapper.getWrongPageListByQuery(page, dto); + List<ApiMemberAnswerWrongVo> records = pageListByQuery.getRecords(); + if (CollUtil.isNotEmpty(records)){ + Set<String> collect = records.stream().map(ApiMemberAnswerWrongVo::getProductQuestionId).collect(Collectors.toSet()); + + LambdaQueryWrapper<AiProductQuestionItem> questionItemQuery = Wrappers.lambdaQuery(AiProductQuestionItem.class); + questionItemQuery.in(AiProductQuestionItem::getProductQuestionId,collect); + List<AiProductQuestionItem> listByQuery = aiProductQuestionItemService.getListByQuery(questionItemQuery); + + if (CollUtil.isNotEmpty(listByQuery)){ + //利用stream流,操作集合listByQuery,返回一个map对象,key为productQuestionId,value为List<AiProductQuestionItem>对象 + Map<String, List<AiProductQuestionItem>> questionItemMap = + listByQuery.stream().collect(Collectors.groupingBy(AiProductQuestionItem::getProductQuestionId)); + + for (ApiMemberAnswerWrongVo record : records){ + String productQuestionId = record.getProductQuestionId(); + + List<AiProductQuestionItem> questionItemList = questionItemMap.get(productQuestionId); + List<ApiMemberAnswerPreviousItemVo> answerList = new ArrayList<>(); + if (CollUtil.isNotEmpty(questionItemList)){ + for (AiProductQuestionItem questionItem : questionItemList){ + ApiMemberAnswerPreviousItemVo itemVo = new ApiMemberAnswerPreviousItemVo(); + itemVo.setId(questionItem.getId()); + itemVo.setAnswer(questionItem.getAnswer()); + itemVo.setAnswerAnalysis(questionItem.getAnswerAnalysis()); + itemVo.setCorrectAnswer(questionItem.getCorrectAnswer()); + answerList.add(itemVo); + } + } + record.setAnswerList(answerList); + } + } + } + return new FebsResponse().success().data(pageListByQuery); + } } -- Gitblit v1.9.1