From d74ccdb898ad96f28d799ad13ca25796111e1412 Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Mon, 29 Sep 2025 10:54:44 +0800 Subject: [PATCH] =?UTF-8?q?##=20=E5=A5=96=E9=87=91=E6=9D=A5=E6=BA=90?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=A2=86=E5=AF=BC=E5=A5=96=E3=80=81=E5=B9=B3?= =?UTF-8?q?=E7=BA=A7=E5=A5=96=E7=AD=9B=E9=80=89=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/BonusSettleRangeHandle.java | 49 ++++++++++++++++--- 1 file changed, 42 insertions(+), 7 deletions(-) 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 b4e8d2c7..2487e393 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 @@ -563,8 +563,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } // 死点 或 停算收益 或 顾客 没有奖金 if (ECategory.NORMAL.getValue() != targetMember.getCategory() + || EIncomeStatus.STOP_INCOME.getValue() == targetMember.getIncomeStatus() || EAccountStatus.STOP_INCOME.getValue() == targetMember.getAccountStatus()) { - log.warn("直推收益:订单会员推荐人不满足计算奖金条件, memberCode: {}, category: {}, accountStatus: {}", targetMember.getMemberCode(), targetMember.getCategory(), targetMember.getAccountStatus()); + // 非正常会员、停止收益、停算收益,直接跳过 + log.warn("直推收益:订单会员推荐人不满足计算奖金条件, memberCode: {}", targetMember.getMemberCode()); return; } // 订单金额 @@ -616,8 +618,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } // 死点 或 停算收益 或 顾客 没有奖金 if (ECategory.NORMAL.getValue() != targetMember.getCategory() + || EIncomeStatus.STOP_INCOME.getValue() == targetMember.getIncomeStatus() || EAccountStatus.STOP_INCOME.getValue() == targetMember.getAccountStatus()) { - log.warn("见点收益:订单会员血缘上推荐人不满足计算奖金条件, memberCode: {}, category: {}, accountStatus: {}", targetMember.getMemberCode(), targetMember.getCategory(), targetMember.getAccountStatus()); + // 非正常会员、停止收益、停算收益,直接跳过 + log.warn("见点收益:订单会员血缘上推荐人不满足计算奖金条件, memberCode: {}", targetMember.getMemberCode()); return; } pkParent = targetMember.getPkParent(); @@ -846,6 +850,15 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { giftPayTime = keyDate; // 需要填充的直推会员 CuMemberRetailRangeExt targetMember = childRetailMap.get(keyDate); + + if (ECategory.NORMAL.getValue() != targetMember.getCategory() + || EIncomeStatus.STOP_INCOME.getValue() == targetMember.getIncomeStatus() + || EAccountStatus.STOP_INCOME.getValue() == targetMember.getAccountStatus()) { + // 非正常会员、停止收益、停算收益,直接跳过 + log.warn("阶段收益:订单会员推荐人不满足计算奖金条件, memberCode: {}", targetMember.getMemberCode()); + continue; + } + // 推荐人一阶段子点位列表 LinkedHashMap parentDetailList = targetMember.getOneDetailMap(); if (CollectionUtil.isEmpty(parentDetailList)) { @@ -894,6 +907,14 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } pkParent = targetMember.getPkParent(); + if (ECategory.NORMAL.getValue() != targetMember.getCategory() + || EIncomeStatus.STOP_INCOME.getValue() == targetMember.getIncomeStatus() + || EAccountStatus.STOP_INCOME.getValue() == targetMember.getAccountStatus()) { + // 非正常会员、停止收益、停算收益,直接跳过 + log.warn("阶段收益:订单会员推荐人不满足计算奖金条件, memberCode: {}", targetMember.getMemberCode()); + continue; + } + // 推荐人一阶段子点位列表 LinkedHashMap parentDetailList = null; if (EBonusStage.ONE.getValue() == eBonusStage.getValue()) { @@ -1132,15 +1153,17 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { while (true) { // 推荐人 CuMemberRetailRangeExt targetMember = memberRangeExtMap.get(pkParent); - if (targetMember == null) { + if (null == targetMember) { break; } // 推荐人的推荐人 pkParent = targetMember.getPkParent(); if (ECategory.NORMAL.getValue() != targetMember.getCategory() - || EIncomeStatus.STOP_INCOME.getValue() == targetMember.getIncomeStatus()) { - // 非正常会员、停止收益,直接跳过 + || EIncomeStatus.STOP_INCOME.getValue() == targetMember.getIncomeStatus() + || EAccountStatus.STOP_INCOME.getValue() == targetMember.getAccountStatus()) { + // 非正常会员、停止收益、停算收益,直接跳过 + log.warn("领导奖或平级奖收益:订单会员推荐人不满足计算奖金条件, memberCode: {}", targetMember.getMemberCode()); continue; } // 当前会员奖衔值 @@ -1155,8 +1178,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { if (calAwardsValue > beforeAwardsValue) { // 当前会员奖衔值大于前一个奖衔值,会有领导奖级差 - beforeRangeRatio = bdAwards.getRangeRatio().subtract(beforeRangeRatio); - rangeBonusIncome = orderAchieve.multiply(beforeRangeRatio); + rangeBonusIncome = orderAchieve.multiply(bdAwards.getRangeRatio().subtract(beforeRangeRatio)); + + beforeRangeRatio = bdAwards.getRangeRatio(); + beforeAwardsValue = calAwardsValue; } else if (EAwards.GLOBAL_CHAIRMAN.getValue() == beforeAwardsValue && beforeSameAlgebra < 3 && EOrderType.DISCOUNT_ORDER.getValue() != saOrderExt.getOrderType()) { // 前一个等级是皇冠大使,需要有3代平级(五折专区不走平级收益) @@ -1200,6 +1225,16 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } cuMemberBonusRangeList.add(sameLevelMemberBonusRange); } + + if (EOrderType.DISCOUNT_ORDER.getValue() != saOrderExt.getOrderType() + && EAwards.GLOBAL_CHAIRMAN.getValue() == beforeAwardsValue && beforeSameAlgebra >= 3) { + // 非五折专区,有领导奖、平级奖,本次奖衔是最高,并且已经拿满3次,直接退回 + break; + } else if (EOrderType.DISCOUNT_ORDER.getValue() == saOrderExt.getOrderType() + && EAwards.GLOBAL_CHAIRMAN.getValue() == beforeAwardsValue) { + // 五折专区,只有领导奖,本次奖衔是最高,直接退回 + break; + } } }