Administrator
5 days ago e3f9f30e2f814e39157017e7f9bf2be886335877
src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java
@@ -4,8 +4,10 @@
import cc.mrbird.febs.ai.enumerates.AiTypeEnum;
import cc.mrbird.febs.ai.mapper.AiMemberAnswerMapper;
import cc.mrbird.febs.ai.req.member.ApiCompanyStudyDto;
import cc.mrbird.febs.ai.req.member.ApiCompanyStudyRecordDto;
import cc.mrbird.febs.ai.req.member.ApiMemberAnswerPageDto;
import cc.mrbird.febs.ai.req.memberAnswer.*;
import cc.mrbird.febs.ai.res.member.ApiCompanyStudyRecordVo;
import cc.mrbird.febs.ai.res.member.ApiCompanyStudyVo;
import cc.mrbird.febs.ai.res.member.ApiMemberAnswerPageVo;
import cc.mrbird.febs.ai.res.memberAnswer.*;
@@ -32,10 +34,7 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -65,6 +64,7 @@
    }
    @Override
    @Transactional
    public FebsResponse startAnswerV2(ApiMemberAnswerDto dto) {
        String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid();
        ApiMemberAnswerVoV2 apiMemberAnswerVoV2 = new ApiMemberAnswerVoV2();
@@ -109,9 +109,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);
@@ -123,7 +144,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);
@@ -387,9 +408,10 @@
            List<ApiMemberAnswerPreviousItemVo> answerList = new ArrayList<>();
            LambdaQueryWrapper<AiProductQuestionItem> productQuestionItemLambdaQueryWrapper = Wrappers.lambdaQuery(AiProductQuestionItem.class);
            productQuestionItemLambdaQueryWrapper.eq(AiProductQuestionItem::getProductQuestionId,productQuestionId);
            productQuestionItemLambdaQueryWrapper.orderByAsc(AiProductQuestionItem::getCreatedTime);
            List<AiProductQuestionItem> listByQuery = aiProductQuestionItemService.getListByQuery(productQuestionItemLambdaQueryWrapper);
            if(CollUtil.isNotEmpty(listByQuery)){
                //让listByQuery随机排序一次
                Collections.shuffle(listByQuery);
                for (AiProductQuestionItem aiProductQuestionItem : listByQuery){
                    ApiMemberAnswerPreviousItemVo apiMemberAnswerPreviousItemVo = new ApiMemberAnswerPreviousItemVo();
                    apiMemberAnswerPreviousItemVo.setId(aiProductQuestionItem.getId());
@@ -463,4 +485,20 @@
    public IPage<ApiCompanyStudyVo> selectListPage(ApiCompanyStudyDto dto, Page<ApiCompanyStudyVo> page) {
        return aiMemberAnswerMapper.selectProductListPage(page,dto);
    }
    @Override
    public IPage<ApiCompanyStudyRecordVo> getStudyRecordList(Page<ApiCompanyStudyRecordVo> page, ApiCompanyStudyRecordDto dto) {
        return aiMemberAnswerMapper.getStudyRecordList(page,dto);
    }
    @Override
    public List<AiMemberAnswer> getIdListByCompanyIdAndProductId(String companyId, Set<String> collect) {
        return aiMemberAnswerMapper.selectList(
                Wrappers.lambdaQuery(AiMemberAnswer.class)
                        .select(AiMemberAnswer::getId,AiMemberAnswer::getProductId)
                        .eq(AiMemberAnswer::getCompanyId, companyId)
                        .in(AiMemberAnswer::getProductId, collect)
                        .eq(AiMemberAnswer::getState, AiTypeEnum.AI_MEMBER_ANSWER_STATE_DONE.getCode())
        );
    }
}