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 java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; /** * AI用户答题记录子表 Service实现类 * * @author yourname * @date 2025-07-29 */ @Slf4j @Service @RequiredArgsConstructor public class AiMemberAnswerItemServiceImpl extends ServiceImpl implements AiMemberAnswerItemService { private final AiMemberAnswerItemMapper aiMemberAnswerItemMapper; private final AiProductQuestionItemService aiProductQuestionItemService; @Override public Page getPageListByQuery(Page page, ApiMemberAnswerPreviousDto dto) { return aiMemberAnswerItemMapper.selectPageListByQuery(page, dto); } @Override public FebsResponse wrongPage(ApiMemberAnswerWrongPageDto dto) { // 创建分页对象,传入当前页和每页大小 Page page = new Page<>(dto.getPageNow(), dto.getPageSize()); Page pageListByQuery = aiMemberAnswerItemMapper.getWrongPageListByQuery(page, dto); List records = pageListByQuery.getRecords(); if (CollUtil.isNotEmpty(records)){ Set collect = records.stream().map(ApiMemberAnswerWrongVo::getProductQuestionId).collect(Collectors.toSet()); LambdaQueryWrapper questionItemQuery = Wrappers.lambdaQuery(AiProductQuestionItem.class); questionItemQuery.in(AiProductQuestionItem::getProductQuestionId,collect); List listByQuery = aiProductQuestionItemService.getListByQuery(questionItemQuery); if (CollUtil.isNotEmpty(listByQuery)){ //利用stream流,操作集合listByQuery,返回一个map对象,key为productQuestionId,value为List对象 Map> questionItemMap = listByQuery.stream().collect(Collectors.groupingBy(AiProductQuestionItem::getProductQuestionId)); for (ApiMemberAnswerWrongVo record : records){ String productQuestionId = record.getProductQuestionId(); List questionItemList = questionItemMap.get(productQuestionId); List 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); } }