From 17d57f4ff80b640a8b9258a0567ea5cc8bc42992 Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Wed, 25 Jun 2025 16:21:00 +0800 Subject: [PATCH] =?UTF-8?q?##=20=E8=B5=A0=E9=80=81=E7=AD=89=E7=BA=A7?= =?UTF-8?q?=E4=B9=8B=E5=90=8E=E5=8F=AF=E4=BB=A5=E7=BB=A7=E7=BB=AD=E8=B4=AD?= =?UTF-8?q?=E4=B9=B0=E5=8D=87=E7=BA=A7=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SaOrderServiceImpl.java | 63 ++++++++++++------- 1 file changed, 40 insertions(+), 23 deletions(-) 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 ed92e149..b126df1a 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 @@ -2628,6 +2628,8 @@ public class SaOrderServiceImpl extends ServiceImpl impl if (ESpecialArea.RETAIL_REGISTER.getValue() == specialArea) { // 注册专区直接算等级 bdGrade = this.getGradeByBox(boxNum, gradeList, null, true); + // 特殊等级处理 + this.handleGradeEnd(gradeList, bdGrade); } else if (ESpecialArea.RETAIL_UPGRADE.getValue() == specialArea) { // 升级专区,一次性补差升级 if (boxNum == 0) { @@ -2651,31 +2653,18 @@ public class SaOrderServiceImpl extends ServiceImpl impl // 计算等级 bdGrade = this.getGradeByBox(boxNum + baseBoxNum, gradeList, memberGrade, true); - // 会员等级 大于等于 购买盒数等级,则不充足升级条件 - if (memberGrade.getGradeValue().compareTo(bdGrade.getGradeValue()) >= 0) { + // 特殊等级处理 + BdGrade tmpGrade = this.handleGradeEnd(gradeList, bdGrade); + if (null != isPay && EYesNo.YES.getIntValue() == isPay) { + // 支付时才进行处理 + bdGrade = tmpGrade; + } + + // 会员等级 大于等于 购买盒数等级,则不满足升级条件 + if (memberGrade.getGradeValue().compareTo(tmpGrade.getGradeValue()) >= 0) { return null; } } - - // TODO 2025.06.14 添加新需求,V1-V3,购买多给两级 - // new 2025.06.25 V1-V3升级多送两级 - if (null != isPay && EYesNo.YES.getIntValue() == isPay) { - // 支付时才进行处理 - if (null != bdGrade) { - if (EGrade.HAI_FAN.getValue() == bdGrade.getGradeValue()) { - // V1 给 V3 - bdGrade = gradeList.stream().filter(tmpData -> EGrade.MAKER.getValue() == tmpData.getGradeValue()).findFirst().get(); - } else if (EGrade.YOU_KE.getValue() == bdGrade.getGradeValue()) { - // V2 给 V4 - bdGrade = gradeList.stream().filter(tmpData -> EGrade.VIP.getValue() == tmpData.getGradeValue()).findFirst().get(); - } else if (EGrade.MAKER.getValue() == bdGrade.getGradeValue()) { - // V3 给 V5 - bdGrade = gradeList.stream().filter(tmpData -> EGrade.S_VIP.getValue() == tmpData.getGradeValue()).findFirst().get(); - } - } - } - - return bdGrade; } @@ -2738,7 +2727,7 @@ public class SaOrderServiceImpl extends ServiceImpl impl * @return */ private int handleBaseBoxNum(CuMember cuMember, BdGrade memberGrade, List gradeList, List boxProductList, - Integer systemType) { + Integer systemType) { // 升级盒数基数 int baseBoxNum = 0; // 会员所有升级记录 @@ -3498,4 +3487,32 @@ public class SaOrderServiceImpl extends ServiceImpl impl return cuMemberLevel; } + /** + * new 2025.06.25 V1-V3升级多送两级处理 + * + * @param gradeList + * @param bdGrade + * @return + */ + private BdGrade handleGradeEnd(List gradeList, BdGrade bdGrade) { + // new 2025.06.14 添加新需求,V1-V3,购买多给两级 + // new 2025.06.25 V1-V3升级多送两级,可以继续购买升级 + Integer pkGrade = bdGrade.getPkId(); + // 临时处理等级 + BdGrade tmpGrade = gradeList.stream().filter(tmpData -> tmpData.getPkId().equals(pkGrade)).findFirst().get(); + + if (EGrade.HAI_FAN.getValue() == tmpGrade.getGradeValue()) { + // V1 给 V3 + tmpGrade = gradeList.stream().filter(tmpData -> EGrade.MAKER.getValue() == tmpData.getGradeValue()).findFirst().get(); + } else if (EGrade.YOU_KE.getValue() == tmpGrade.getGradeValue()) { + // V2 给 V4 + tmpGrade = gradeList.stream().filter(tmpData -> EGrade.VIP.getValue() == tmpData.getGradeValue()).findFirst().get(); + } else if (EGrade.MAKER.getValue() == tmpGrade.getGradeValue()) { + // V3 给 V5 + tmpGrade = gradeList.stream().filter(tmpData -> EGrade.S_VIP.getValue() == tmpData.getGradeValue()).findFirst().get(); + } + + return tmpGrade; + } + }