From d00a36b69873837114a926c1a7b62f105b4f0ada Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Tue, 30 Sep 2025 11:15:31 +0800 Subject: [PATCH] =?UTF-8?q?##=20=E5=A5=96=E8=A1=94=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=E5=A4=84=E7=90=86=E6=96=B9=E5=BC=8F=E4=BC=98=E5=8C=96=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/CuMemberRetailRangeMapper.java | 11 ++- .../service/ICuMemberRetailRangeService.java | 8 +- .../impl/CuMemberRetailRangeServiceImpl.java | 10 ++- .../service/impl/BonusSettleRangeHandle.java | 26 ++---- .../service/ICuMemberAwardsService.java | 3 +- .../impl/CuMemberAwardsServiceImpl.java | 87 +++++++++++-------- .../achieve/CuMemberRetailRangeMapper.xml | 29 ++++++- 7 files changed, 110 insertions(+), 64 deletions(-) diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberRetailRangeMapper.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberRetailRangeMapper.java index 34944456..19d5e8b6 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberRetailRangeMapper.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberRetailRangeMapper.java @@ -133,7 +133,16 @@ public interface CuMemberRetailRangeMapper extends BaseMapper queryEnoughAwardMember(@Param("rangeTableName") String rangeTableName, @Param("totalCheck") BigDecimal totalCheck, - @Param("pkAwards") Integer pkAwards); + @Param("awardsValue") Integer awardsValue); + + /** + * 查询符合奖衔业绩、安置条件会员 + */ + List queryEnoughAwardPlaceMember(@Param("rangeTableName") String rangeTableName, + @Param("awardsValue") Integer awardsValue, + @Param("totalCheck") BigDecimal totalCheck, + @Param("placeDeptNum") Integer placeDeptNum, + @Param("checkAwardsValue") Integer checkAwardsValue); /** * 查询会员血缘下达标奖衔会员 diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberRetailRangeService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberRetailRangeService.java index 3215d569..5d0f7e43 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberRetailRangeService.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberRetailRangeService.java @@ -91,7 +91,13 @@ public interface ICuMemberRetailRangeService extends IService queryEnoughAwardMember(String settleTableName, BigDecimal totalCheck, Integer pkAwards); + List queryEnoughAwardMember(String rangeTableName, BigDecimal totalCheck, Integer awardsValue); + + /** + * 查询符合奖衔业绩、安置条件会员 + */ + List queryEnoughAwardPlaceMember(String rangeTableName, Integer awardsValue, BigDecimal totalCheck, Integer placeDeptNum, + Integer checkAwardsValue); /** * 查询会员血缘下达标奖衔会员 diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRetailRangeServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRetailRangeServiceImpl.java index 3c8f706a..8afe98de 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRetailRangeServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRetailRangeServiceImpl.java @@ -187,8 +187,14 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl queryEnoughAwardMember(String settleTableName, BigDecimal totalCheck, Integer pkAwards) { - return baseMapper.queryEnoughAwardMember(settleTableName, totalCheck, pkAwards); + public List queryEnoughAwardMember(String rangeTableName, BigDecimal totalCheck, Integer awardsValue) { + return baseMapper.queryEnoughAwardMember(rangeTableName, totalCheck, awardsValue); + } + + @Override + public List queryEnoughAwardPlaceMember(String rangeTableName, Integer awardsValue, BigDecimal totalCheck, Integer placeDeptNum, + Integer checkAwardsValue) { + return baseMapper.queryEnoughAwardPlaceMember(rangeTableName, awardsValue, totalCheck, placeDeptNum, checkAwardsValue); } @Override diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java index 1a251c45..9d911b55 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java @@ -290,8 +290,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { List awardsList = bonusConfigDTO.getAwardsList(); awardsList.forEach(bdAwards -> awardsMap.put(bdAwards.getAwardsValue(), bdAwards)); - // 会员奖衔升级记录 - List cuMemberAwardsList = new ArrayList<>(); // 直推收益、见点收益 List cuMemberBonusPushList = new ArrayList<>(); // 领导奖收益、平级奖收益 @@ -306,7 +304,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 更新血缘上业绩、金额 iCuMemberRetailRangeService.updateMemberParentDate(rangeTableName, memberAchieveHashMap); // 处理奖衔 - iCuMemberAwardsService.calculateCuMemberAwards(rangeTableName, awardsList, awardsMap, settleStartDate, period); + iCuMemberAwardsService.calculateCuMemberAwards(rangeTableName, awardsList, settleStartDate, period); // 按照血缘,查询该会员所有伞上会员 List memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, orderList); @@ -337,8 +335,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { sourceMember.setMonthConsumeAmount(sourceMember.getMonthConsumeAmount().add(orderAmount)); // // 自己计算奖衔,目前业绩都只往下传,所以此处暂时不需要处理订单会员的奖衔 // this.calculateAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailAwardsMap, cuMemberAwardsList, sourceMember); - // 累计团队业绩、金额 + 计算奖衔 - cuMemberAwardsList.addAll(this.calculateParentAwards(period, memberRangeExtMap, rangeTableName, sourceMember, saOrderExt, awardsMap)); + // 累计团队业绩、金额 + this.calculateParentDate(memberRangeExtMap, sourceMember, saOrderExt); if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) { @@ -413,12 +411,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { if (cuMemberBonusStageList.size() > 0) { bonusRecordDetailVO.setCuMemberBonusStageList(cuMemberBonusStageList); } -// if (cuMemberAwardsList.size() > 0) { -// // 批量插入会员奖衔记录 -// iCuMemberAwardsService.saveBatchCuMemberAwards(cuMemberAwardsList); -// // 更新会员表奖衔数据 -// iCuMemberService.updateCuMemberAwardsByPeriod(period); -// } // 更新日结数据 iCuMemberRetailRangeService.updateCuMemberRetailRange(rangeTableName, memberRangeExtMap); // 更新日结明细数据 @@ -1094,12 +1086,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // } /** - * 计算团队奖衔 + * 计算团队数据 */ - private List calculateParentAwards(Integer period, Map memberRangeExtMap, String rangeTableName, - CuMemberRetailRangeExt sourceMember, SaOrderExt saOrderExt, Map retailAwardsMap) { - // 会员奖衔升级列表 - List cuMemberAwardsList = new ArrayList<>(); + private void calculateParentDate(Map memberRangeExtMap, CuMemberRetailRangeExt sourceMember, + SaOrderExt saOrderExt) { // 订单会员的推荐人 CuMemberRetailRangeExt targetMember = memberRangeExtMap.get(sourceMember.getPkParent()); @@ -1124,12 +1114,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { targetMember.setRepTeamNewPv(targetMember.getRepTeamNewPv().add(orderAchieve)); targetMember.setRepTeamNewAmount(targetMember.getRepTeamNewAmount().add(orderAmount)); } -// // 计算奖衔 -// calculateAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailAwardsMap, cuMemberAwardsList, targetMember); - targetMember = memberRangeExtMap.get(targetMember.getPkParent()); } - return cuMemberAwardsList; } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberAwardsService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberAwardsService.java index 150fdaf3..e46a11e4 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberAwardsService.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberAwardsService.java @@ -7,7 +7,6 @@ import com.hzs.common.domain.system.config.BdAwards; import java.util.Date; import java.util.List; -import java.util.Map; /** * 会员信息-奖衔升级记录 服务类 @@ -17,7 +16,7 @@ public interface ICuMemberAwardsService extends IService { /** * 计算奖衔 */ - void calculateCuMemberAwards(String rangeTableName, List awardsList, Map awardsMap, Date settleDate, Integer period); + void calculateCuMemberAwards(String rangeTableName, List awardsList, Date settleDate, Integer period); /** * 批量插入奖衔记录 diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberAwardsServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberAwardsServiceImpl.java index f98a0506..93fcad52 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberAwardsServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberAwardsServiceImpl.java @@ -19,7 +19,6 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.*; -import java.util.stream.Collectors; /** * 会员信息-奖衔升级记录 服务实现类 @@ -37,7 +36,7 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl awardsList, Map awardsMap, Date settleDate, Integer period) { + public void calculateCuMemberAwards(String rangeTableName, List awardsList, Date settleDate, Integer period) { // 回退结算表奖衔 iCuMemberTreeService.updateBackCuMemberRetailRangeAward(rangeTableName, period); // 回退会员表奖衔 @@ -56,7 +55,14 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl> cuMemberRangeExtMap = new HashMap<>(); for (BdAwards bdAwards : awardsList) { - List cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryEnoughAwardMember(rangeTableName, bdAwards.getTotalCheck(), bdAwards.getPkId()); + List cuMemberRetailRangeExtList; + if (bdAwards.getPlaceDeptNum() > 0) { + BdAwards checkAwards = awardsList.stream().filter(tmpDate -> tmpDate.getPkId().equals(bdAwards.getPkCheckAwardsLeft())).findFirst().get(); + cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryEnoughAwardPlaceMember(rangeTableName, bdAwards.getAwardsValue(), + bdAwards.getTotalCheck(), bdAwards.getPlaceDeptNum(), checkAwards.getAwardsValue()); + } else { + cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryEnoughAwardMember(rangeTableName, bdAwards.getTotalCheck(), bdAwards.getAwardsValue()); + } cuMemberAwardsList.addAll(this.calculateAwards(rangeTableName, bdAwards, period, cuMemberRetailRangeExtList, cuMemberRangeExtMap)); } if (cuMemberAwardsList.size() > 0) { @@ -70,7 +76,7 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl calculateAwards(String rangeTableName, BdAwards bdAwards, Integer period, - List cuMemberRetailRangeExtList, Map> cuMemberRangeExtMap) { + List cuMemberRetailRangeExtList, Map> cuMemberRangeExtMap) { // 只满足业绩的 List cuMemberAwardsList = new ArrayList<>(); @@ -78,41 +84,48 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl { - List cuMemberRangeExtList = cuMemberRangeExtMap.get(targetMember.getPkMember()); - if (null == cuMemberRangeExtList) { - cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMember.getPkMember()); - cuMemberRangeExtMap.put(targetMember.getPkMember(), cuMemberRangeExtList); - } - // 大区 - BigDecimal consumeBigPv = BigDecimal.ZERO; - for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) { - // 累计业绩 = 团队累计消费业绩 + 个人累计消费业绩 - BigDecimal consumePv = cuMemberRetailRangeExt.getTeamConsumePv().add(cuMemberRetailRangeExt.getConsumePv()); - if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) { - // 累计业绩 > 大区业绩,则累计就成为大区 - consumeBigPv = consumePv; + if (bdAwards.getPlaceDeptNum() > 0 && bdAwards.getCommunityCheck().compareTo(BigDecimal.ZERO) == 0) { + // 需要校验部门奖衔并且小区业绩为0的 + cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, bdAwards, EAwardsType.RANGE_TYPE.getValue(), targetMember.getPkAwards(), nowDate)); + targetMember.setPkAwards(bdAwards.getPkId()); + targetMember.setAwardsValue(bdAwards.getAwardsValue()); + } else { + List cuMemberRangeExtList = cuMemberRangeExtMap.get(targetMember.getPkMember()); + if (null == cuMemberRangeExtList) { + cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMember.getPkMember()); + cuMemberRangeExtMap.put(targetMember.getPkMember(), cuMemberRangeExtList); } - } - // 小区业绩 = 团队累计业绩 - 大区业绩 - BigDecimal smallAreaPv = ComputeUtil.computeSubtract(targetMember.getTeamConsumePv(), consumeBigPv); - if (smallAreaPv.compareTo(bdAwards.getCommunityCheck()) >= 0) { - // 小区业绩 >= 考核小区业绩 - if (bdAwards.getPlaceDeptNum() > 0) { - if (CollectionUtil.isNotEmpty(cuMemberRangeExtList)) { - // 验证每条血缘下,满足达标数量 - List checkList = iCuMemberRetailRangeService.listChildAwards(rangeTableName, bdAwards.getPkCheckAwardsLeft(), - cuMemberRangeExtList.stream().map(CuMemberRetailRangeExt::getPkMember).collect(Collectors.toList())); - if (CollectionUtil.isNotEmpty(checkList) && checkList.size() >= bdAwards.getPlaceDeptNum()) { - cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, bdAwards, EAwardsType.RANGE_TYPE.getValue(), targetMember.getPkAwards(), nowDate)); - targetMember.setPkAwards(bdAwards.getPkId()); - targetMember.setAwardsValue(bdAwards.getAwardsValue()); - } + // 大区 + BigDecimal consumeBigPv = BigDecimal.ZERO; + for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) { + // 累计业绩 = 团队累计消费业绩 + 个人累计消费业绩 + BigDecimal consumePv = cuMemberRetailRangeExt.getTeamConsumePv().add(cuMemberRetailRangeExt.getConsumePv()); + if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) { + // 累计业绩 > 大区业绩,则累计就成为大区 + consumeBigPv = consumePv; + } + } + // 小区业绩 = 团队累计业绩 - 大区业绩 + BigDecimal smallAreaPv = ComputeUtil.computeSubtract(targetMember.getTeamConsumePv(), consumeBigPv); + if (smallAreaPv.compareTo(bdAwards.getCommunityCheck()) >= 0) { + // 小区业绩 >= 考核小区业绩 + if (bdAwards.getPlaceDeptNum() > 0) { + if (CollectionUtil.isNotEmpty(cuMemberRangeExtList)) { + // 验证每条血缘下,满足达标数量 + List checkList = iCuMemberRetailRangeService.listChildAwards(rangeTableName, bdAwards.getPkCheckAwardsLeft(), + Collections.singletonList(targetMember.getPkMember())); + if (CollectionUtil.isNotEmpty(checkList) && checkList.size() >= bdAwards.getPlaceDeptNum()) { + cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, bdAwards, EAwardsType.RANGE_TYPE.getValue(), targetMember.getPkAwards(), nowDate)); + targetMember.setPkAwards(bdAwards.getPkId()); + targetMember.setAwardsValue(bdAwards.getAwardsValue()); + } + } + } else { + // 不需要考核血缘达标,直接给奖衔 + cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, bdAwards, EAwardsType.RANGE_TYPE.getValue(), targetMember.getPkAwards(), nowDate)); + targetMember.setPkAwards(bdAwards.getPkId()); + targetMember.setAwardsValue(bdAwards.getAwardsValue()); } - } else { - // 不需要考核血缘达标,直接给奖衔 - cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, bdAwards, EAwardsType.RANGE_TYPE.getValue(), targetMember.getPkAwards(), nowDate)); - targetMember.setPkAwards(bdAwards.getPkId()); - targetMember.setAwardsValue(bdAwards.getAwardsValue()); } } }); diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRetailRangeMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRetailRangeMapper.xml index 7393201f..1210480f 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRetailRangeMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRetailRangeMapper.xml @@ -980,9 +980,36 @@ + + +