src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java
@@ -32,6 +32,8 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
 * AI用户答题记录 Service实现类
@@ -49,6 +51,8 @@
    private final AiProductService aiProductService;
    private final AiProductQuestionService aiProductQuestionService;
    private final AiProductQuestionItemService aiProductQuestionItemService;
    private final AiProductDependencyService aiProductDependencyService;
    private final AiMemberProductUnlockService aiMemberProductUnlockService;
    @Override
@@ -305,6 +309,7 @@
    @Override
    public FebsResponse insure(ApiMemberAnswerInsureDto dto) {
        String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid();
        String companyId = LoginUserUtil.getLoginUser().getCompanyId();
        ApiMemberAnswerInsureVo apiMemberAnswerInsureVo = new ApiMemberAnswerInsureVo();
        String memberAnswerId = dto.getMemberAnswerId();
@@ -332,6 +337,22 @@
                .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);
    }