| | |
| | | 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 |
| | |
| | | @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); |
| | | } |
| | | |