| | |
| | | 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.member.ApiMemberAnswerPageDto; |
| | | import cc.mrbird.febs.ai.req.memberAnswer.*; |
| | | import cc.mrbird.febs.ai.res.member.ApiMemberAnswerPageVo; |
| | | import cc.mrbird.febs.ai.res.memberAnswer.*; |
| | | import cc.mrbird.febs.ai.res.product.ApiProductVo; |
| | | import cc.mrbird.febs.ai.res.productQuestionItem.ApiMemberAnswerItemVo; |
| | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Set; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * AI用户答题记录 Service实现类 |
| | |
| | | private final AiProductService aiProductService; |
| | | private final AiProductQuestionService aiProductQuestionService; |
| | | private final AiProductQuestionItemService aiProductQuestionItemService; |
| | | private final AiProductDependencyService aiProductDependencyService; |
| | | private final AiMemberProductUnlockService aiMemberProductUnlockService; |
| | | |
| | | |
| | | @Override |
| | |
| | | throw new FebsException("答题记录不存在"); |
| | | } |
| | | |
| | | String companyId = aiMemberAnswer.getCompanyId(); |
| | | Date nowTime = new Date(); |
| | | |
| | | Date createdTime = 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); |
| | | } |
| | | aiMemberAnswerItem.setCompanyId(companyId); |
| | | aiMemberAnswerItemService.updateById(aiMemberAnswerItem); |
| | | |
| | | aiMemberAnswer.setDoneCnt(aiMemberAnswer.getDoneCnt() + 1); |
| | | if (aiMemberAnswerItem.getMemberAnswerState() == 1){ |
| | | aiMemberAnswer.setCorrectCnt(aiMemberAnswer.getCorrectCnt() + 1); |
| | | } |
| | | aiMemberAnswerItem.setCompanyId(companyId); |
| | | aiMemberAnswer.setUpdatedTime(createdTime); |
| | | aiMemberAnswer.setUpdatedTime(nowTime); |
| | | aiMemberAnswerMapper.updateById(aiMemberAnswer); |
| | | |
| | | apiQuestionItemInfoVo.setAnswerAnalysis(aiMemberAnswerItem.getAnswerAnalysis()); |
| | |
| | | @Override |
| | | public FebsResponse insure(ApiMemberAnswerInsureDto dto) { |
| | | String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid(); |
| | | String companyId = LoginUserUtil.getLoginUser().getCompanyId(); |
| | | |
| | | ApiMemberAnswerInsureVo apiMemberAnswerInsureVo = new ApiMemberAnswerInsureVo(); |
| | | String memberAnswerId = dto.getMemberAnswerId(); |
| | |
| | | .set(AiMemberAnswer::getScore, percentage.intValue()) |
| | | .eq(AiMemberAnswer::getId, memberAnswerId) |
| | | ); |
| | | |
| | | //如果有升级规则,则解锁 |
| | | List<AiProductDependency> aiProductDependencies = aiProductDependencyService.selectListByProductId(aiMemberAnswer.getProductId(),percentage.intValue()); |
| | | if (CollUtil.isNotEmpty(aiProductDependencies)){ |
| | | //stream流操作aiProductDependencies,获取全部的targetProductId |
| | | Set<String> targetProductIds = aiProductDependencies.stream().map(AiProductDependency::getTargetProductId).collect(Collectors.toSet()); |
| | | |
| | | List<AiMemberProductUnlock> aiMemberProductUnlocks = aiMemberProductUnlockService.selectListByProductIds(targetProductIds, memberUuid); |
| | | Set<String> doneProductIds = aiMemberProductUnlocks.stream().map(AiMemberProductUnlock::getProductId).collect(Collectors.toSet()); |
| | | |
| | | //获取在targetProductIds集合中,并且不在doneProductIds集合中的productId |
| | | Set<String> unlockProductIds = targetProductIds.stream().filter(productId -> !doneProductIds.contains(productId)).collect(Collectors.toSet()); |
| | | if (CollUtil.isNotEmpty(unlockProductIds)){ |
| | | aiMemberProductUnlockService.insertList(companyId,unlockProductIds, memberUuid,percentage.intValue()); |
| | | } |
| | | } |
| | | return new FebsResponse().success().data(apiMemberAnswerInsureVo); |
| | | } |
| | | |
| | |
| | | |
| | | 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()) |
| | | ); |
| | | } |
| | | |
| | | @Override |
| | | public Page<ApiMemberAnswerPageVo> getAnswerPage(Page<ApiMemberAnswerPageVo> page, ApiMemberAnswerPageDto dto) { |
| | | |
| | | return aiMemberAnswerMapper.getAnswerPage(page,dto); |
| | | } |
| | | } |