From 840f2b754f901d7e2a6d8bcbd77275bed5060eb5 Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Mon, 14 Jul 2025 17:15:31 +0800 Subject: [PATCH 1/3] =?UTF-8?q?##=20=E9=9B=A8=E6=B1=90=E4=BD=93=E7=B3=BBV4?= =?UTF-8?q?=E3=80=81V5=E5=8D=87=E7=BA=A7=E7=9B=92=E6=95=B0=E5=8D=95?= =?UTF-8?q?=E7=8B=AC=E5=A4=84=E7=90=86=EF=BC=9B=20V4:=E6=80=BB500=EF=BC=8C?= =?UTF-8?q?=E5=B0=8F100=EF=BC=9B=20V5=EF=BC=9A=E6=80=BB2000=EF=BC=8C?= =?UTF-8?q?=E5=B0=8F400=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/BonusSettleRangeHandle.java | 53 +++++++++++++++++-- 1 file changed, 49 insertions(+), 4 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 e89fe4d3..397937c8 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 @@ -65,6 +65,17 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { @DubboReference ICuMemberServiceLogServiceApi iCuMemberServiceLogServiceApi; + /** + * 特殊体系PK_ID: 150 + * V4:总 500,小 100 + * V5:总 2000,小 400 + */ + public static final Long VERTEX_PK_ID = 150L; + public static final BigDecimal VERTEX_V4_TOTAL_BOX = new BigDecimal("500"); + public static final BigDecimal VERTEX_V4_SMALL_BOX = new BigDecimal("100"); + public static final BigDecimal VERTEX_V5_TOTAL_BOX = new BigDecimal("2000"); + public static final BigDecimal VERTEX_V5_SMALL_BOX = new BigDecimal("400"); + /** * 秒结: * 实时计算秒结数据(业绩、盒数、等级、奖衔、日奖) @@ -723,10 +734,27 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 遍历团队等级map(V4,V5) for (Integer gradeValue : retailTeamGradeMap.keySet()) { BdGrade bdGrade = retailTeamGradeMap.get(gradeValue); + // 等级总盒数 + BigDecimal boxTotal = bdGrade.getBoxTotal(); + // 等级小市场盒数 + BigDecimal boxSmallTotal = bdGrade.getBoxSmallTotal(); + + if (VERTEX_PK_ID.equals(targetMemberRangeExt.getPkVertex())) { + // TODO 需要根据配置写死的体系,进行单独处理 + // V4: 总 500,小 100 + // V5: 总 2000,小 400 + if (EGrade.VIP.getValue() == bdGrade.getGradeValue()) { + boxTotal = VERTEX_V4_TOTAL_BOX; + boxSmallTotal = VERTEX_V4_SMALL_BOX; + } else if (EGrade.S_VIP.getValue() == bdGrade.getGradeValue()) { + boxTotal = VERTEX_V5_TOTAL_BOX; + boxSmallTotal = VERTEX_V5_SMALL_BOX; + } + } // 如果等级值 大于 当前会员等级值 并且 等级要求累计盒数 小于等于 团队累计盒数 + 累计消费盒数 + 大区注水 + 小区注水,则可以进行升级 if (bdGrade.getGradeValue() > targetMemberRangeExt.getGradeValue() - && bdGrade.getBoxTotal().compareTo( + && boxTotal.compareTo( targetMemberRangeExt.getTeamBoxNum().add(targetMemberRangeExt.getConsumeBoxNum()).add(targetMemberRangeExt.getBigBoxNum()).add(targetMemberRangeExt.getSmallBoxNum()) ) <= 0 ) { @@ -766,7 +794,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 小区盒数(团队累计盒数 + 自消费累计盒数 + 两个注水虚拟盒数 - 大市场盒数) BigDecimal smallBoxNum = targetMemberRangeExt.getAllTeamBoxNum().add(targetMemberRangeExt.getConsumeBoxNum()).add(targetMemberRangeExt.getBigBoxNum()).add(targetMemberRangeExt.getSmallBoxNum()).subtract(bigBoxNum); - if (smallBoxNum.compareTo(bdGrade.getBoxSmallTotal()) >= 0) { + if (smallBoxNum.compareTo(boxSmallTotal) >= 0) { // 小区盒数 大于等于 升级小区盒数 CuMemberGrade cuMemberGrade = getCuMemberGrade(period, targetMemberRangeExt, bdGrade); cuMemberGradeList.add(cuMemberGrade); @@ -955,8 +983,25 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 遍历团队等级map(V4,V5) for (Integer gradeValue : retailTeamGradeMap.keySet()) { BdGrade bdGrade = retailTeamGradeMap.get(gradeValue); + // 等级总盒数 + BigDecimal boxTotal = bdGrade.getBoxTotal(); + // 等级小市场盒数 + BigDecimal boxSmallTotal = bdGrade.getBoxSmallTotal(); - if (bdGrade.getBoxTotal().compareTo(targetMemberRangeExt.getTeamBoxNum().add(targetMemberRangeExt.getConsumeBoxNum()).add(targetMemberRangeExt.getBigBoxNum()).add(targetMemberRangeExt.getSmallBoxNum())) <= 0) { + if (VERTEX_PK_ID.equals(targetMemberRangeExt.getPkVertex())) { + // TODO 需要根据配置写死的体系,进行单独处理 + // V4: 总 500,小 100 + // V5: 总 2000,小 400 + if (EGrade.VIP.getValue() == bdGrade.getGradeValue()) { + boxTotal = VERTEX_V4_TOTAL_BOX; + boxSmallTotal = VERTEX_V4_SMALL_BOX; + } else if (EGrade.S_VIP.getValue() == bdGrade.getGradeValue()) { + boxTotal = VERTEX_V5_TOTAL_BOX; + boxSmallTotal = VERTEX_V5_SMALL_BOX; + } + } + + if (boxTotal.compareTo(targetMemberRangeExt.getTeamBoxNum().add(targetMemberRangeExt.getConsumeBoxNum()).add(targetMemberRangeExt.getBigBoxNum()).add(targetMemberRangeExt.getSmallBoxNum())) <= 0) { // 验证小区,计算小区累计盒数 查询伞下会员 List cuMemberRangeExtList; if (secondRangeTableName != null) { @@ -993,7 +1038,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 小区盒数(团队累计盒数 + 自消费累计盒数 + 两个注水虚拟盒数 - 大市场盒数) BigDecimal smallBoxNum = targetMemberRangeExt.getAllTeamBoxNum().add(targetMemberRangeExt.getConsumeBoxNum()).add(targetMemberRangeExt.getBigBoxNum()).add(targetMemberRangeExt.getSmallBoxNum()).subtract(bigBoxNum); - if (smallBoxNum.compareTo(bdGrade.getBoxSmallTotal()) >= 0) { + if (smallBoxNum.compareTo(boxSmallTotal) >= 0) { // 小区盒数 大于等于 升级小区盒数 CuMemberGrade cuMemberGrade = getCuMemberGrade(period, targetMemberRangeExt, bdGrade); cuMemberGradeMap.put(cuMemberGrade.getPkMember() + "_" + cuMemberGrade.getNewLevel(), cuMemberGrade); From 4bd21b995030a7dbbe92518b9b19141d9c017fc8 Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Tue, 15 Jul 2025 09:09:44 +0800 Subject: [PATCH 2/3] =?UTF-8?q?##=20=E7=9B=B4=E6=8E=A8=E6=94=B6=E7=9B=8A?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC10%?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/BonusSettleRangeHandle.java | 24 +++++++++---------- .../common/core/constant/RetailConstants.java | 4 ++-- 2 files changed, 14 insertions(+), 14 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 397937c8..415319fa 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 @@ -1169,7 +1169,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // // 直推级差收益 // BigDecimal calBonusIncome = BigDecimal.ZERO; - // 商品最终价格 + // 商品最终价格(总价,带数量的价格) BigDecimal waresPrice = saOrderItems.getWaresPrice(); // 商品数量 BigDecimal waresQuantityBig = saOrderItems.getWaresQuantity(); @@ -1213,20 +1213,20 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { if (beforeGradeValue == 0) { // 前一个会员等级为0,肯定为第一次处理,直接处理直推级差收益 if (EGrade.HAI_FAN.getValue() == calGradeValue) { - // VIP,拿1份40 - rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig); + // VIP,拿 1 份 10% + rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresPrice); } else if (EGrade.YOU_KE.getValue() == calGradeValue) { - // SVIP,拿2份40 - rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig).multiply(new BigDecimal("2")); + // SVIP,拿 2 份 10% + rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresPrice).multiply(new BigDecimal("2")); } else if (EGrade.MAKER.getValue() == calGradeValue) { - // 卓越,拿3份40 - rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig).multiply(new BigDecimal("3")); + // 卓越,拿 3 份 10% + rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresPrice).multiply(new BigDecimal("3")); } else if (EGrade.VIP.getValue() == calGradeValue) { - // 首席,拿4份40 - rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig).multiply(new BigDecimal("4")); + // 首席,拿 4 份 10% + rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresPrice).multiply(new BigDecimal("4")); } else if (EGrade.S_VIP.getValue() == calGradeValue) { - // 合伙人,拿5份40 - rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig).multiply(new BigDecimal("5")); + // 合伙人,拿 5 份 10% + rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresPrice).multiply(new BigDecimal("5")); } // 赋值前一个会员等级 beforeGradeValue = calGradeValue; @@ -1255,7 +1255,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { int tmpGradeVal = (calGradeValue - beforeGradeValue) / 10; // 新等级的直推级差收益 - rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig).multiply(new BigDecimal(tmpGradeVal)); + rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresPrice).multiply(new BigDecimal(tmpGradeVal)); // 直推级差收益 = 新等级的直推级差收益 - 上一等级的平级收益 rangeBonusIncome = rangeBonusIncome.subtract(beforeSameBonus); 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 6882a5e5..bc755a59 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 @@ -10,9 +10,9 @@ import java.util.List; public class RetailConstants { /** - * 直推级差等级收益(每个等级为40元) + * 直推级差等级收益(每个等级差为百分之十) */ - public static final BigDecimal RANGE_BONUS = new BigDecimal("40"); + public static final BigDecimal RANGE_BONUS = new BigDecimal("0.1"); /** * 直推平级收益比例(每代拿商品价格的千分之五) */ From 3a772ee9d8c0189529f4b5bbafe6f4f5074620d3 Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Tue, 15 Jul 2025 13:30:29 +0800 Subject: [PATCH 3/3] =?UTF-8?q?##=20=E6=92=A4=E5=8D=95=E9=87=8D=E6=B6=88?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=8E=A8=E9=80=81=E7=A7=92=E7=BB=93=E5=A4=84?= =?UTF-8?q?=E7=90=86=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/hzs/sale/order/service/impl/SaOrderServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderServiceImpl.java index fadb6922..2930ae75 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderServiceImpl.java @@ -2461,7 +2461,8 @@ public class SaOrderServiceImpl extends ServiceImpl impl try { if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType() - || EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) { + || EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType() + || EOrderType.RETAIL_CONSUME.getValue() == saOrderExt.getOrderType()) { // 撤单标记为 true saOrderExt.setCancelBool(Boolean.TRUE); // 计算奖金,通过mq分发消息,异步处理