From b6d95d2be8a1978047cb6e248ee6565b663d2f83 Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Mon, 27 Oct 2025 16:22:28 +0800 Subject: [PATCH] =?UTF-8?q?##=20=E7=AD=89=E7=BA=A7=E5=A4=84=E7=90=86?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/RetailOrderServiceImpl.java | 90 +++++++------------ .../common/core/constant/RetailConstants.java | 9 -- 2 files changed, 32 insertions(+), 67 deletions(-) diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/service/impl/RetailOrderServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/service/impl/RetailOrderServiceImpl.java index 5d53691e..c0645288 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/service/impl/RetailOrderServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/service/impl/RetailOrderServiceImpl.java @@ -227,10 +227,10 @@ public class RetailOrderServiceImpl implements IRetailOrderService { // } // } } - }else if(ESpecialArea.RETAIL_REPURCHASE.getValue() == orderParam.getSpecialArea()){ + } else if (ESpecialArea.RETAIL_REPURCHASE.getValue() == orderParam.getSpecialArea()) { // saOrderExt.setOrderAmount(saOrderExt.getOrderAmount().add(orderParam.getPostage())); saOrderExt.setPostage(orderParam.getPostage()); - }else if(ESpecialArea.RETAIL_UPGRADE.getValue() == orderParam.getSpecialArea()){ + } else if (ESpecialArea.RETAIL_UPGRADE.getValue() == orderParam.getSpecialArea()) { saOrderExt.setSpecialArea(ESpecialArea.RETAIL_UPGRADE.getValue()); saOrderExt.setOrderType(ESpecialArea.RETAIL_UPGRADE.getValue()); } @@ -242,7 +242,7 @@ public class RetailOrderServiceImpl implements IRetailOrderService { public List createSaOrderItems(RetailOrderParam orderParam, List gradeList, CuMember cuMember, SaOrderExt saOrderExt, CurrencyDTO currency) { boolean isCopy41List = false; - if(ESpecialArea.RETAIL_UPGRADE.getValue() == orderParam.getSpecialArea()){ + if (ESpecialArea.RETAIL_UPGRADE.getValue() == orderParam.getSpecialArea()) { orderParam.setSpecialArea(ESpecialArea.RETAIL_REGISTER.getValue()); isCopy41List = true; } @@ -292,7 +292,7 @@ public class RetailOrderServiceImpl implements IRetailOrderService { saOrderExt.setPostage(orderParam.getPostage()); // 订单指定商品盒数 saOrderExt.setBoxNum(boxNum); - if(isCopy41List){ + if (isCopy41List) { saOrderExt.setOrderType(ESpecialArea.RETAIL_UPGRADE.getValue()); } } @@ -478,11 +478,11 @@ public class RetailOrderServiceImpl implements IRetailOrderService { boolean isShared = false; if (null == orderParam.getCreatorMember()) { - if(ObjectUtil.isNotEmpty(orderParam.getCuMemberShare())){ + if (ObjectUtil.isNotEmpty(orderParam.getCuMemberShare())) { orderParam.setCreatorMember(iMemberServiceApi.getRetailMember(orderParam.getCuMemberShare().getPkParent(), null).getData()); cuMember.setPkParent(orderParam.getCuMemberShare().getPkParent()); isShared = true; - }else{ + } else { orderParam.setCreatorMember(iMemberServiceApi.getRetailMember(orderParam.getPkCreator(), null).getData()); } } @@ -492,10 +492,10 @@ public class RetailOrderServiceImpl implements IRetailOrderService { cuMember.setSystemType(orderParam.getCreatorMember().getSystemType()); // 获取会员编号、会员主键 - if(isShared){ + if (isShared) { cuMember.setPkId(orderParam.getCuMemberShare().getPkId()); cuMember.setMemberCode(orderParam.getCuMemberShare().getMemberCode()); - }else{ + } else { cuMember = iMemberServiceApi.createRetailMemberIdAndCode(cuMember).getData(); } @@ -519,6 +519,8 @@ public class RetailOrderServiceImpl implements IRetailOrderService { // 处理会员激活 this.handleMemberActivate(newMember, saOrderExt); + + processMemberLevel(newMember, saOrderExt); // 保存会员信息,扣减账户等 // 调用其他服务保存会员信息、会员注册信息 R saveResult = iMemberServiceApi.saveRetailMember(newMember, saOrderExt, memberAccountExt); @@ -526,7 +528,6 @@ public class RetailOrderServiceImpl implements IRetailOrderService { log.error("新零售 payRegSaOrder 会员注册失败,{}", saveResult.getMsg()); throw new RuntimeException("会员注册失败"); } - processMemberLevel(newMember, saOrderExt); // 发送会员注册成功短信 iSmsServiceApi.sendMemberRegister(newMember.getPhone(), EAliSmsTemplate.MEMBER_REGISTER, @@ -562,9 +563,9 @@ public class RetailOrderServiceImpl implements IRetailOrderService { @Override public String payOtherOrder(SaOrderExt saOrderExt, CuMember buyMember, CuMemberAccountExt memberAccountExt) { - if(ESpecialArea.DISCOUNT_AREA.getValue() == saOrderExt.getOrderType()){ + if (ESpecialArea.DISCOUNT_AREA.getValue() == saOrderExt.getOrderType()) { // 验证是否买过41/42 - if(!iSaOrderService.showDiscountArea()){ + if (!iSaOrderService.showDiscountArea()) { throw new RuntimeException("不满足购买五折专区的条件!"); } } @@ -573,6 +574,8 @@ public class RetailOrderServiceImpl implements IRetailOrderService { // 处理会员激活 Boolean activateFlag = this.handleMemberActivate(buyMember, saOrderExt); + + processMemberLevel(buyMember, saOrderExt); // 扣减账户等 // 调用其他服务保存更新会员账户等 R saveResult = iMemberServiceApi.otherRetailMember(buyMember, saOrderExt, memberAccountExt, activateFlag); @@ -580,7 +583,6 @@ public class RetailOrderServiceImpl implements IRetailOrderService { log.error("新零售 payOtherOrder 会员其它订单失败,{}", saveResult.getMsg()); throw new RuntimeException("下单支付失败"); } - processMemberLevel(buyMember, saOrderExt); this.pushOrderMq(saOrderExt); return null; } @@ -633,9 +635,8 @@ public class RetailOrderServiceImpl implements IRetailOrderService { RetailOrderRegisterParam registerParam = redisService.getCacheObject(CacheConstants.RETAIL_TEMP_REG_PARAM + pkMember + orderCode); boolean isShared = ObjectUtil.isNotEmpty(registerParam) && ObjectUtil.isNotEmpty(registerParam.getCuMemberShare()); - CuMember gradeMember = null; if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() - || (isShared && EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) + || (isShared && EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) ) { // 注册订单 // 获取缓存参数 @@ -651,10 +652,10 @@ public class RetailOrderServiceImpl implements IRetailOrderService { newMember.setPkSettleGrade(registerParam.getPkGrade()); newMember.setPkAwards(registerParam.getPkAwards()); saOrderExt.setPkMember(newMember.getPkId()); - if(ObjectUtil.isNotEmpty(registerParam.getCuMemberShare())){ - saOrderExt.setPkReference(registerParam.getCuMemberShare().getPkParent()); + if (ObjectUtil.isNotEmpty(registerParam.getCuMemberShare())) { + saOrderExt.setPkReference(registerParam.getCuMemberShare().getPkParent()); // saOrderExt.setOrderType(EOrderType.RETAIL_REGISTER.getValue()); - saOrderExt.setOrderType(registerParam.getSpecialArea()); + saOrderExt.setOrderType(registerParam.getSpecialArea()); } resultStr = this.payRegOrder(saOrderExt, newMember, null); @@ -676,52 +677,25 @@ public class RetailOrderServiceImpl implements IRetailOrderService { } return resultStr; } - public void processMemberLevel(CuMember gradeMember, SaOrderExt saOrderExt){ - if(EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()){ + + public void processMemberLevel(CuMember gradeMember, SaOrderExt saOrderExt) { + if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() + || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) { // 处理等级 GradeDTO bdGrade = iGradeServiceApi.getGrade(gradeMember.getPkSettleGrade()).getData(); - List gradeDTOList = iGradeServiceApi.getRetailGradeList().getData(); - CuMemberLevel memberLevel = null; - if(bdGrade.getGradeValue() < EGrade.YOU_KE.getValue()){ - if(saOrderExt.getOrderAchieve().compareTo(RetailConstants.GOLD_CARD_PV) >= 0){ - // 拿金牌等级 - BdGrade goldGrade = gradeDTOList.stream().filter(item -> item.getGradeValue().equals(EGrade.YOU_KE.getValue())).findFirst().get(); - memberLevel = getCuMemberLevel(gradeMember, saOrderExt, goldGrade.getPkId()); - gradeMember.setPkSettleGrade(goldGrade.getPkId()); - gradeMember.setPkSettleGradeValue(goldGrade.getGradeValue()); - }else if(saOrderExt.getOrderAchieve().compareTo(RetailConstants.SILVER_CARD_PV) >= 0){ - // 拿银牌等级 - BdGrade silverGrade = gradeDTOList.stream().filter(item -> item.getGradeValue().equals(EGrade.HAI_FAN.getValue())).findFirst().get(); - memberLevel = getCuMemberLevel(gradeMember, saOrderExt, silverGrade.getPkId()); - gradeMember.setPkSettleGrade(silverGrade.getPkId()); - gradeMember.setPkSettleGradeValue(silverGrade.getGradeValue()); - } - } - if(ObjectUtil.isNotEmpty(memberLevel)){ - Boolean saveMemberLevelFlag = iMemberServiceApi.saveMemberLevel(memberLevel).getData(); - if(!saveMemberLevelFlag){ - throw new ServiceException("记录用户升级信息异常!"); - } - Boolean saveMemberFlag = iMemberServiceApi.saveMember(gradeMember).getData(); - if(!saveMemberFlag){ - throw new ServiceException("更新用户结算等级异常!"); - } + if (bdGrade.getGradeValue() < EGrade.YOU_KE.getValue()) { + List tmpGradeList = iGradeServiceApi.getRetailGradeList().getData(); + // 等级值倒序 + List gradeList = tmpGradeList.stream().sorted(Comparator.comparingInt(BdGrade::getGradeValue).reversed()).collect(Collectors.toList()); + gradeList.forEach(tmpGrade -> { + if (saOrderExt.getOrderAchieve().compareTo(tmpGrade.getStartValue()) >= 0) { + gradeMember.setPkSettleGrade(tmpGrade.getPkId()); + gradeMember.setPkSettleGradeValue(tmpGrade.getGradeValue()); + } + }); } } } - public CuMemberLevel getCuMemberLevel(CuMember cuMember, SaOrderExt saOrder, Integer newLevel){ - CuMemberLevel cuMemberLevel = CuMemberLevel.builder() - .pkMember(cuMember.getPkId()) - .upType(EUpgradeType.BUY_UPGRADE.getValue()) - .oldLevel(cuMember.getPkSettleGrade()) - .newLevel(newLevel) - .upgradeTime(saOrder.getPayTime()) - .pkOrder(saOrder.getPkId()) - .build(); - cuMemberLevel.setPkCountry(cuMember.getPkSettleCountry()); - cuMemberLevel.setPkCreator(cuMember.getPkId()); - return cuMemberLevel; - } /** 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 3e3f7b81..f7a8e7e4 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 @@ -48,13 +48,4 @@ public class RetailConstants { */ public static final boolean LIMIT_TO_REG_PHONE_NUMBER = false; - /** - * 银卡PV - */ - public static final BigDecimal SILVER_CARD_PV = new BigDecimal("10000"); - /** - * 金卡PV - */ - public static final BigDecimal GOLD_CARD_PV = new BigDecimal("20000"); - }