diff --git a/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserInfoServiceImpl.java b/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserInfoServiceImpl.java index 19ee7fc..9d154ef 100644 --- a/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserInfoServiceImpl.java +++ b/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserInfoServiceImpl.java @@ -14,13 +14,11 @@ import com.greenorange.promotion.exception.ThrowUtils; import com.greenorange.promotion.mapper.UserInfoMapper; import com.greenorange.promotion.model.dto.projectCommission.ProjectCommissionAddRequest; import com.greenorange.promotion.model.dto.userInfo.*; -import com.greenorange.promotion.model.entity.ProjectCommission; -import com.greenorange.promotion.model.entity.SubUserProjectCommission; -import com.greenorange.promotion.model.entity.UserInfo; -import com.greenorange.promotion.model.entity.UserMainInfo; +import com.greenorange.promotion.model.entity.*; import com.greenorange.promotion.model.enums.UserRoleEnum; import com.greenorange.promotion.service.common.CommonService; import com.greenorange.promotion.service.project.ProjectCommissionService; +import com.greenorange.promotion.service.project.ProjectDetailService; import com.greenorange.promotion.service.project.SubUserProjectCommissionService; import com.greenorange.promotion.service.userInfo.UserInfoService; import com.greenorange.promotion.service.userInfo.UserMainInfoService; @@ -44,6 +42,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; +import java.util.function.Function; /** * @author 35880 @@ -86,6 +85,10 @@ public class UserInfoServiceImpl extends ServiceImpl private UserInfoMapper userInfoMapper; + @Resource + private ProjectDetailService projectDetailService; + + /** @@ -186,21 +189,30 @@ public class UserInfoServiceImpl extends ServiceImpl // 查询上级用户的项目抽佣记录 List projectCommissionList = commonService.findByFieldEqTargetField(ProjectCommission::getUserId, parentUserInfo.getId(), projectCommissionService); + // 封装Map集合(键:项目明细id, 值:项目最小价格) + Map projectDetailMinPriceMap = new HashMap<>(); + List projectDetailList = commonService.findByFieldInTargetField(projectCommissionList, projectDetailService, ProjectCommission::getProjectDetailId, ProjectDetail::getId); + for (ProjectDetail projectDetail : projectDetailList) { + projectDetailMinPriceMap.put(projectDetail.getId(), projectDetail.getProjectMinSettlementPrice()); + } // 插入当前用户的项目抽佣记录 List projectCommissions = new ArrayList<>(); for (ProjectCommission projectCommission : projectCommissionList) { ProjectCommissionAddRequest projectCommissionAddRequest = commonService.copyProperties(projectCommission, ProjectCommissionAddRequest.class); ProjectCommission proCommission = commonService.copyProperties(projectCommissionAddRequest, ProjectCommission.class); - proCommission.setMyUnitPrice(projectCommission.getMyUnitPrice().multiply(BigDecimal.ONE.subtract(projectCommission.getCurrentCommissionRate()))); + // 获取当前项目明细的最小结算价格 + BigDecimal projectMinSettlementPrice = projectDetailMinPriceMap.get(projectCommission.getProjectDetailId()); + BigDecimal currentSettlementPrice = projectCommission.getMyUnitPrice().multiply(BigDecimal.ONE.subtract(projectCommission.getCurrentCommissionRate().divide(BigDecimal.valueOf(100)))); + // 比较当前结算价格和项目明细最小结算价格,取出最大值 + proCommission.setMyUnitPrice(projectMinSettlementPrice.max(currentSettlementPrice)); proCommission.setCurrentCommissionRate(BigDecimal.ZERO); proCommission.setUserId(myUserInfo.getId()); projectCommissions.add(proCommission); } projectCommissionService.saveBatch(projectCommissions); // 插入下级用户的项目明细抽佣记录 - List proCommissionList = commonService.findByFieldEqTargetField(ProjectCommission::getUserId, parentUserInfo.getId(), projectCommissionService); List subUserProjectCommissionList = new ArrayList<>(); - for (ProjectCommission projectCommission : proCommissionList) { + for (ProjectCommission projectCommission : projectCommissionList) { ProjectCommissionAddRequest projectCommissionAddRequest = commonService.copyProperties(projectCommission, ProjectCommissionAddRequest.class); SubUserProjectCommission subUserProjectCommission = commonService.copyProperties(projectCommissionAddRequest, SubUserProjectCommission.class); subUserProjectCommission.setSubUserId(myUserInfo.getId());