| | |
| | | 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; |
| | |
| | | return aiMemberAnswerMapper.selectOne(aiMemberAnswerLambdaQueryWrapper); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse startAnswerV2(ApiMemberAnswerDto dto) { |
| | | String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid(); |
| | | ApiMemberAnswerVoV2 apiMemberAnswerVoV2 = new ApiMemberAnswerVoV2(); |
| | | |
| | | String productId = dto.getId(); |
| | | AiProduct aiProduct = aiProductService.getById(productId); |
| | | if(ObjectUtil.isNull(aiProduct)){ |
| | | throw new FebsException("产品不存在"); |
| | | } |
| | | String companyId = aiProduct.getCompanyId(); |
| | | //验证产品分类下是否有题目 |
| | | String productCategoryId = aiProduct.getProductCategoryId(); |
| | | LambdaQueryWrapper<AiProductQuestion> questionLambdaQueryWrapper = Wrappers.lambdaQuery(AiProductQuestion.class); |
| | | questionLambdaQueryWrapper.eq(AiProductQuestion::getProductCategoryId,productCategoryId); |
| | | questionLambdaQueryWrapper.eq(AiProductQuestion::getState,1); |
| | | questionLambdaQueryWrapper.last("limit 1"); |
| | | List<AiProductQuestion> aiProductQuestions = aiProductQuestionService.getListByQuery(questionLambdaQueryWrapper); |
| | | if(CollUtil.isEmpty(aiProductQuestions)){ |
| | | // todo 没有题目采用AI生成题目 |
| | | throw new FebsException("产品没有题目"); |
| | | } |
| | | //判断该产品是否有正在进行的练习 |
| | | Date createdTime = new Date(); |
| | | LambdaQueryWrapper<AiMemberAnswer> aiMemberAnswerLambdaQueryWrapper = Wrappers.lambdaQuery(AiMemberAnswer.class); |
| | | aiMemberAnswerLambdaQueryWrapper.eq(AiMemberAnswer::getMemberId,memberUuid); |
| | | aiMemberAnswerLambdaQueryWrapper.eq(AiMemberAnswer::getProductId,aiProduct.getId()); |
| | | aiMemberAnswerLambdaQueryWrapper.eq(AiMemberAnswer::getState,0); |
| | | AiMemberAnswer aiMemberAnswer = this.getOneByQuery(aiMemberAnswerLambdaQueryWrapper); |
| | | if(ObjectUtil.isNull(aiMemberAnswer)){ |
| | | Integer questionCount = aiProduct.getQuestionCount(); |
| | | aiMemberAnswer = new AiMemberAnswer(); |
| | | aiMemberAnswer.setId(UUID.getSimpleUUIDString()); |
| | | aiMemberAnswer.setCompanyId(companyId); |
| | | aiMemberAnswer.setCreatedTime(createdTime); |
| | | aiMemberAnswer.setUpdatedTime(createdTime); |
| | | aiMemberAnswer.setProductId(aiProduct.getId()); |
| | | aiMemberAnswer.setMemberId(memberUuid); |
| | | aiMemberAnswer.setState(0); |
| | | aiMemberAnswer.setScore(0); |
| | | aiMemberAnswer.setQuestionCnt(questionCount); |
| | | aiMemberAnswer.setDoneCnt(0); |
| | | 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); |
| | | } |
| | | aiMemberAnswerItemService.saveBatch(aiMemberAnswerItems); |
| | | apiMemberAnswerVoV2.setCurrent(1); |
| | | }else{ |
| | | if (aiMemberAnswer.getQuestionCnt() > aiMemberAnswer.getDoneCnt()){ |
| | | apiMemberAnswerVoV2.setCurrent(aiMemberAnswer.getDoneCnt() + 1); |
| | | }else{ |
| | | apiMemberAnswerVoV2.setCurrent(aiMemberAnswer.getDoneCnt()); |
| | | } |
| | | } |
| | | apiMemberAnswerVoV2.setMemberAnswerId(aiMemberAnswer.getId()); |
| | | |
| | | return new FebsResponse().success().data(apiMemberAnswerVoV2); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public FebsResponse startAnswer(ApiMemberAnswerDto dto) { |
| | |
| | | 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("答题记录不存在"); |
| | | } |
| | | |
| | | String companyId = aiMemberAnswer.getCompanyId(); |
| | | |
| | | Date createdTime = new Date(); |
| | | AiMemberAnswerItem aiMemberAnswerItem = aiMemberAnswerItemService.getById(memberAnswerItemId); |
| | |
| | | }else{ |
| | | aiMemberAnswerItem.setIsCollected(0); |
| | | } |
| | | aiMemberAnswerItemService.save(aiMemberAnswerItem); |
| | | aiMemberAnswerItemService.updateById(aiMemberAnswerItem); |
| | | |
| | | aiMemberAnswer.setDoneCnt(aiMemberAnswer.getDoneCnt() + 1); |
| | | if (aiMemberAnswerItem.getMemberAnswerState() == 1){ |
| | | aiMemberAnswer.setCorrectCnt(aiMemberAnswer.getCorrectCnt() + 1); |
| | | } |
| | | aiMemberAnswerItem.setCompanyId(companyId); |
| | | aiMemberAnswer.setUpdatedTime(createdTime); |
| | | aiMemberAnswerMapper.updateById(aiMemberAnswer); |
| | | |
| | |
| | | |
| | | 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); |
| | | } |
| | | } |