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);