From ead88a0b6c9948a1072512e0e3b17036fb26a258 Mon Sep 17 00:00:00 2001 From: chen-xin-zhi <3588068430@qq.com> Date: Thu, 5 Jun 2025 11:13:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E6=8E=A5=E5=8F=A3=EF=BC=88=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E4=BA=86=E9=A1=B9=E7=9B=AE=E6=98=8E=E7=BB=86=E7=9A=84=E6=9C=80?= =?UTF-8?q?=E5=B0=8F=E7=BB=93=E7=AE=97=E4=BB=B7=E6=A0=BC=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../userInfo/impl/UserInfoServiceImpl.java | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) 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());