| | |
| | | package cc.mrbird.febs.ai.service.impl; |
| | | |
| | | import cc.mrbird.febs.ai.entity.*; |
| | | import cc.mrbird.febs.ai.enumerates.AiTypeEnum; |
| | | import cc.mrbird.febs.ai.mapper.AiMemberAnswerMapper; |
| | | import cc.mrbird.febs.ai.req.memberAnswer.*; |
| | | import cc.mrbird.febs.ai.res.memberAnswer.*; |
| | |
| | | import cc.mrbird.febs.ai.service.*; |
| | | import cc.mrbird.febs.ai.utils.UUID; |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.common.exception.FebsException; |
| | | import cc.mrbird.febs.common.utils.LoginUserUtil; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateUnit; |
| | |
| | | public FebsResponse startAnswerV2(ApiMemberAnswerDto dto) { |
| | | String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid(); |
| | | ApiMemberAnswerVoV2 apiMemberAnswerVoV2 = new ApiMemberAnswerVoV2(); |
| | | Integer current = 1; |
| | | |
| | | String productId = dto.getId(); |
| | | AiProduct aiProduct = aiProductService.getById(productId); |
| | | if(ObjectUtil.isNull(aiProduct)){ |
| | | throw new RuntimeException("产品不存在"); |
| | | throw new FebsException("产品不存在"); |
| | | } |
| | | String companyId = aiProduct.getCompanyId(); |
| | | //验证产品分类下是否有题目 |
| | | String productCategoryId = aiProduct.getProductCategoryId(); |
| | | LambdaQueryWrapper<AiProductQuestion> questionLambdaQueryWrapper = Wrappers.lambdaQuery(AiProductQuestion.class); |
| | |
| | | List<AiProductQuestion> aiProductQuestions = aiProductQuestionService.getListByQuery(questionLambdaQueryWrapper); |
| | | if(CollUtil.isEmpty(aiProductQuestions)){ |
| | | // todo 没有题目采用AI生成题目 |
| | | throw new RuntimeException("产品没有题目"); |
| | | throw new FebsException("产品没有题目"); |
| | | } |
| | | //判断该产品是否有正在进行的练习 |
| | | Date createdTime = new Date(); |
| | |
| | | Integer questionCount = aiProduct.getQuestionCount(); |
| | | aiMemberAnswer = new AiMemberAnswer(); |
| | | aiMemberAnswer.setId(UUID.getSimpleUUIDString()); |
| | | aiMemberAnswer.setCompanyId(companyId); |
| | | aiMemberAnswer.setCreatedTime(createdTime); |
| | | aiMemberAnswer.setUpdatedTime(createdTime); |
| | | aiMemberAnswer.setProductId(aiProduct.getId()); |
| | |
| | | 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()); |
| | |
| | | aiMemberAnswerItems.add(aiMemberAnswerItem); |
| | | } |
| | | aiMemberAnswerItemService.saveBatch(aiMemberAnswerItems); |
| | | current = 1; |
| | | apiMemberAnswerVoV2.setCurrent(1); |
| | | }else{ |
| | | current = aiMemberAnswer.getDoneCnt(); |
| | | if (aiMemberAnswer.getQuestionCnt() > aiMemberAnswer.getDoneCnt()){ |
| | | apiMemberAnswerVoV2.setCurrent(aiMemberAnswer.getDoneCnt() + 1); |
| | | }else{ |
| | | apiMemberAnswerVoV2.setCurrent(aiMemberAnswer.getDoneCnt()); |
| | | } |
| | | } |
| | | apiMemberAnswerVoV2.setCurrent(current); |
| | | apiMemberAnswerVoV2.setMemberAnswerId(aiMemberAnswer.getId()); |
| | | |
| | | return new FebsResponse().success().data(apiMemberAnswerVoV2); |
| | | } |
| | |
| | | String productId = dto.getId(); |
| | | AiProduct aiProduct = aiProductService.getById(productId); |
| | | if(ObjectUtil.isNull(aiProduct)){ |
| | | throw new RuntimeException("产品不存在"); |
| | | throw new FebsException("产品不存在"); |
| | | } |
| | | //验证产品分类下是否有题目 |
| | | String productCategoryId = aiProduct.getProductCategoryId(); |
| | |
| | | List<AiProductQuestion> aiProductQuestions = aiProductQuestionService.getListByQuery(questionLambdaQueryWrapper); |
| | | if(CollUtil.isEmpty(aiProductQuestions)){ |
| | | // todo 没有题目采用AI生成题目 |
| | | throw new RuntimeException("产品没有题目"); |
| | | throw new FebsException("产品没有题目"); |
| | | } |
| | | //判断该产品是否有正在进行的练习 |
| | | Date createdTime = new Date(); |
| | |
| | | AiMemberAnswer aiMemberAnswer = this.getById(memberAnswerId); |
| | | |
| | | if(ObjectUtil.isNull(aiMemberAnswer)){ |
| | | throw new RuntimeException("答题记录不存在"); |
| | | throw new FebsException("答题记录不存在"); |
| | | } |
| | | |
| | | Date createdTime = new Date(); |
| | | Date nowTime = new Date(); |
| | | |
| | | String companyId = aiMemberAnswer.getCompanyId(); |
| | | AiMemberAnswerItem aiMemberAnswerItem = aiMemberAnswerItemService.getById(memberAnswerItemId); |
| | | aiMemberAnswerItem.setUpdatedTime(createdTime); |
| | | aiMemberAnswerItem.setUpdatedTime(nowTime); |
| | | AiProductQuestion aiProductQuestion = aiProductQuestionService.getById(productQuestionId); |
| | | |
| | | LambdaQueryWrapper<AiProductQuestionItem> productQuestionItemLambdaQueryWrapper = Wrappers.lambdaQuery(AiProductQuestionItem.class); |
| | |
| | | }else{ |
| | | aiMemberAnswerItem.setIsCollected(0); |
| | | } |
| | | aiMemberAnswerItemService.save(aiMemberAnswerItem); |
| | | aiMemberAnswerItem.setCompanyId(companyId); |
| | | aiMemberAnswerItemService.updateById(aiMemberAnswerItem); |
| | | |
| | | aiMemberAnswer.setDoneCnt(aiMemberAnswer.getDoneCnt() + 1); |
| | | if (aiMemberAnswerItem.getMemberAnswerState() == 1){ |
| | | aiMemberAnswer.setCorrectCnt(aiMemberAnswer.getCorrectCnt() + 1); |
| | | } |
| | | aiMemberAnswer.setUpdatedTime(createdTime); |
| | | aiMemberAnswer.setUpdatedTime(nowTime); |
| | | aiMemberAnswerMapper.updateById(aiMemberAnswer); |
| | | |
| | | apiQuestionItemInfoVo.setAnswerAnalysis(aiMemberAnswerItem.getAnswerAnalysis()); |
| | |
| | | |
| | | long between = DateUtil.between(createdTime, updatedTime, DateUnit.MINUTE); |
| | | apiMemberAnswerInsureVo.setUseTime(between); |
| | | apiMemberAnswerInsureVo.setProductId(aiMemberAnswer.getProductId()); |
| | | |
| | | aiMemberAnswerMapper.update(null, |
| | | Wrappers.lambdaUpdate(AiMemberAnswer.class) |
| | | .set(AiMemberAnswer::getUpdatedTime, new Date()) |
| | | .set(AiMemberAnswer::getState, 1) |
| | | .set(AiMemberAnswer::getScore, percentage.intValue()) |
| | | .eq(AiMemberAnswer::getId, memberAnswerId) |
| | | ); |
| | | return new FebsResponse().success().data(apiMemberAnswerInsureVo); |
| | | } |
| | | |
| | |
| | | dto.setMemberUuid(memberUuid); |
| | | return aiMemberAnswerItemService.wrongPage(dto); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse myWork(ApiMemberProductWorkPageDto dto) { |
| | | String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid(); |
| | | dto.setMemberUuid(memberUuid); |
| | | // 创建分页对象,传入当前页和每页大小 |
| | | Page<ApiMemberProductWorkVo> page = new Page<>(dto.getPageNow(), dto.getPageSize()); |
| | | Page<ApiMemberProductWorkVo> pageListByQuery = this.getBaseMapper().getPageMyWorkListByQuery(page, dto); |
| | | |
| | | return new FebsResponse().success().data(pageListByQuery); |
| | | } |
| | | |
| | | @Override |
| | | public void updateMemberAnswerUpdateTime(String memberAnswerId, Date updateTime) { |
| | | aiMemberAnswerMapper.update( |
| | | null, |
| | | Wrappers.lambdaUpdate(AiMemberAnswer.class) |
| | | .set(AiMemberAnswer::getUpdatedTime,updateTime) |
| | | .eq(AiMemberAnswer::getId,memberAnswerId) |
| | | ); |
| | | } |
| | | |
| | | @Override |
| | | public List<AiMemberAnswer> getListByCompanyId(String companyId) { |
| | | return aiMemberAnswerMapper.selectList( |
| | | Wrappers.lambdaQuery(AiMemberAnswer.class) |
| | | .eq(AiMemberAnswer::getCompanyId, companyId) |
| | | .eq(AiMemberAnswer::getState, AiTypeEnum.AI_MEMBER_ANSWER_STATE_DONE.getCode()) |
| | | ); |
| | | } |
| | | |
| | | @Override |
| | | public List<AiMemberAnswer> getListByCompanyIdAndMemberUuid(String companyId, String memberUuid) { |
| | | return aiMemberAnswerMapper.selectList( |
| | | Wrappers.lambdaQuery(AiMemberAnswer.class) |
| | | .eq(AiMemberAnswer::getCompanyId, companyId) |
| | | .eq(AiMemberAnswer::getMemberId, memberUuid) |
| | | .eq(AiMemberAnswer::getState, AiTypeEnum.AI_MEMBER_ANSWER_STATE_DONE.getCode()) |
| | | ); |
| | | } |
| | | } |