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 e07aedfa..369b21bf 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 @@ -323,13 +323,21 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 直推级差收益 BigDecimal rangeBonusIncome = BigDecimal.ZERO; - if (EGrade.HAI_FAN.getValue() == targetGradeValue) { + if (EGrade.HAI_FAN.getValue() == targetGradeValue && targetGradeValue > beforeGradeValue) { // 推荐人是 会员 rangeBonusIncome = orderAmount.multiply(RetailConstants.RECOMMEND_HAI_FAN).setScale(4, BigDecimal.ROUND_HALF_UP); - } else if (EGrade.YOU_KE.getValue() == targetGradeValue) { + // 已经算完级差等级的累计奖金 + totalBonus = totalBonus.add(rangeBonusIncome); + // 前一级会员等级 + beforeGradeValue = targetGradeValue; + } else if (EGrade.YOU_KE.getValue() == targetGradeValue && targetGradeValue > beforeGradeValue) { // 推荐人是 VIP rangeBonusIncome = orderAmount.multiply(RetailConstants.RECOMMEND_YOU_KE).subtract(totalBonus).setScale(4, BigDecimal.ROUND_HALF_UP); - } else if (EGrade.MAKER.getValue() == targetGradeValue) { + // 已经算完级差等级的累计奖金 + totalBonus = totalBonus.add(rangeBonusIncome); + // 前一级会员等级 + beforeGradeValue = targetGradeValue; + } else if (EGrade.MAKER.getValue() == targetGradeValue && targetGradeValue >= beforeGradeValue) { // 推荐人是 合伙人 if (v3Count == 1) { rangeBonusIncome = orderAmount.multiply(RetailConstants.RECOMMEND_MAKER_1).subtract(totalBonus).setScale(4, BigDecimal.ROUND_HALF_UP); @@ -339,26 +347,46 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { rangeBonusIncome = orderAmount.multiply(RetailConstants.RECOMMEND_MAKER_3).subtract(totalBonus).setScale(4, BigDecimal.ROUND_HALF_UP); } v3Count++; - } else if (EGrade.VIP.getValue() == targetGradeValue) { + // 已经算完级差等级的累计奖金 + totalBonus = totalBonus.add(rangeBonusIncome); + // 前一级会员等级 + beforeGradeValue = targetGradeValue; + } else if (EGrade.VIP.getValue() == targetGradeValue && targetGradeValue > beforeGradeValue) { // 推荐人是 博羚店主 rangeBonusIncome = orderAmount.multiply(RetailConstants.RECOMMEND_VIP).subtract(totalBonus).setScale(4, BigDecimal.ROUND_HALF_UP); - } else if (EGrade.S_VIP.getValue() == targetGradeValue) { + // 已经算完级差等级的累计奖金 + totalBonus = totalBonus.add(rangeBonusIncome); + // 前一级会员等级 + beforeGradeValue = targetGradeValue; + } else if (EGrade.S_VIP.getValue() == targetGradeValue && targetGradeValue > beforeGradeValue) { // 推荐人是 高级店主 rangeBonusIncome = orderAmount.multiply(RetailConstants.RECOMMEND_S_VIP).subtract(totalBonus).setScale(4, BigDecimal.ROUND_HALF_UP); - } else if (EGrade.REGION.getValue() == targetGradeValue) { + // 已经算完级差等级的累计奖金 + totalBonus = totalBonus.add(rangeBonusIncome); + // 前一级会员等级 + beforeGradeValue = targetGradeValue; + } else if (EGrade.REGION.getValue() == targetGradeValue && targetGradeValue > beforeGradeValue) { // 推荐人是 区域代理 rangeBonusIncome = orderAmount.multiply(RetailConstants.RECOMMEND_REGION).subtract(totalBonus).setScale(4, BigDecimal.ROUND_HALF_UP); - } else if (EGrade.DIRECTOR.getValue() == targetGradeValue) { + // 已经算完级差等级的累计奖金 + totalBonus = totalBonus.add(rangeBonusIncome); + // 前一级会员等级 + beforeGradeValue = targetGradeValue; + } else if (EGrade.DIRECTOR.getValue() == targetGradeValue && targetGradeValue > beforeGradeValue) { // 推荐人是 董事代理 rangeBonusIncome = orderAmount.multiply(RetailConstants.RECOMMEND_DIRECTOR).subtract(totalBonus).setScale(4, BigDecimal.ROUND_HALF_UP); - } else if (EGrade.COMPANY.getValue() == targetGradeValue) { + // 已经算完级差等级的累计奖金 + totalBonus = totalBonus.add(rangeBonusIncome); + // 前一级会员等级 + beforeGradeValue = targetGradeValue; + } else if (EGrade.COMPANY.getValue() == targetGradeValue && targetGradeValue > beforeGradeValue) { // 推荐人是 总公司 rangeBonusIncome = orderAmount.multiply(RetailConstants.RECOMMEND_COMPANY).subtract(totalBonus).setScale(4, BigDecimal.ROUND_HALF_UP); + // 已经算完级差等级的累计奖金 + totalBonus = totalBonus.add(rangeBonusIncome); + // 前一级会员等级 + beforeGradeValue = targetGradeValue; } - // 已经算完级差等级的累计奖金 - totalBonus = totalBonus.add(rangeBonusIncome); - // 前一级会员等级 - beforeGradeValue = targetGradeValue; if (rangeBonusIncome.compareTo(BigDecimal.ZERO) > 0) { // 处理直推级差收益 diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/RetailConstants.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/RetailConstants.java index f9d9d0ff..96de960a 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/RetailConstants.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/RetailConstants.java @@ -33,7 +33,7 @@ public class RetailConstants { public static final BigDecimal RECOMMEND_MAKER_2 = new BigDecimal("0.3"); public static final BigDecimal RECOMMEND_MAKER_3 = new BigDecimal("0.325"); public static final BigDecimal RECOMMEND_VIP = new BigDecimal("0.5"); - public static final BigDecimal RECOMMEND_S_VIP = new BigDecimal("0.5"); + public static final BigDecimal RECOMMEND_S_VIP = new BigDecimal("0.52"); public static final BigDecimal RECOMMEND_REGION = new BigDecimal("0.55"); public static final BigDecimal RECOMMEND_DIRECTOR = new BigDecimal("0.55"); public static final BigDecimal RECOMMEND_COMPANY = new BigDecimal("0.6"); diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/msg/BonusMsgConstants.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/msg/BonusMsgConstants.java index 5b5c01d2..89ef5aaf 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/msg/BonusMsgConstants.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/msg/BonusMsgConstants.java @@ -13,7 +13,7 @@ public class BonusMsgConstants { /** * 直推级差收益说明 */ - public static String RANGE = "订单编号%s,%s为%s贡献了直推级差收益,计算金额%f,前一级差等级名称%s,当前级差等级名称%s。"; + public static String RANGE = "订单编号%s,%s为%s贡献了直推级差收益,计算金额%f,来源等级名称%s,当前级差等级名称%s。"; /** * 复购级差收益说明