From 89b739503c1b4585e0fb831f7a2f8e11b8f033f6 Mon Sep 17 00:00:00 2001 From: sangelxiu1 <15781802@163.com> Date: Mon, 27 Oct 2025 14:26:23 +0800 Subject: [PATCH] =?UTF-8?q?##=20Opt=20-=20=E5=8D=95=E7=AC=94PV=E5=A4=A7?= =?UTF-8?q?=E4=BA=8E20000=E7=BB=99=E9=87=91=E7=89=8C,=E5=A4=A7=E4=BA=8E100?= =?UTF-8?q?00=E7=BB=99=E9=93=B6=E7=89=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hzs/member/base/IMemberServiceApi.java | 4 ++ .../base/provider/MemberServiceProvider.java | 9 ++++ .../service/impl/RetailOrderServiceImpl.java | 52 ++++++++++++++++++- .../common/core/constant/RetailConstants.java | 9 ++++ 4 files changed, 72 insertions(+), 2 deletions(-) diff --git a/bd-api/bd-api-member/src/main/java/com/hzs/member/base/IMemberServiceApi.java b/bd-api/bd-api-member/src/main/java/com/hzs/member/base/IMemberServiceApi.java index 4bed9fa0..76207e66 100644 --- a/bd-api/bd-api-member/src/main/java/com/hzs/member/base/IMemberServiceApi.java +++ b/bd-api/bd-api-member/src/main/java/com/hzs/member/base/IMemberServiceApi.java @@ -2,6 +2,7 @@ package com.hzs.member.base; import com.hzs.common.core.domain.R; import com.hzs.common.domain.member.base.CuMember; +import com.hzs.common.domain.member.detail.CuMemberLevel; import com.hzs.common.domain.member.ext.CuMemberAccountExt; import com.hzs.common.domain.member.ext.CuMemberExt; import com.hzs.common.domain.sale.ext.SaOrderExt; @@ -364,4 +365,7 @@ public interface IMemberServiceApi { * @return 返回为null则正常,否则则错误信息 */ R getMemberPhoneCount(String phone); + + + R saveMemberLevel(CuMemberLevel memberLevel); } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/provider/MemberServiceProvider.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/provider/MemberServiceProvider.java index cddd62da..451c251c 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/provider/MemberServiceProvider.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/provider/MemberServiceProvider.java @@ -6,6 +6,7 @@ import com.hzs.common.core.enums.ELoginType; import com.hzs.common.core.utils.StringUtils; import com.hzs.common.domain.member.base.CuMember; import com.hzs.common.domain.member.base.CuMemberShare; +import com.hzs.common.domain.member.detail.CuMemberLevel; import com.hzs.common.domain.member.ext.CuMemberAccountExt; import com.hzs.common.domain.member.ext.CuMemberExt; import com.hzs.common.domain.sale.ext.SaOrderExt; @@ -16,6 +17,7 @@ import com.hzs.member.base.dto.ShowWaresDTO; import com.hzs.member.base.dto.ZeroElementRevokeDTO; import com.hzs.member.base.service.*; import com.hzs.member.base.IMemberServiceApi; +import com.hzs.member.detail.service.ICuMemberLevelService; import com.hzs.member.empty.service.ICuMemberEmptyCodeService; import com.hzs.member.handlebusiness.dto.AnalysisBusinessAppealParam; import lombok.extern.slf4j.Slf4j; @@ -41,6 +43,8 @@ public class MemberServiceProvider implements IMemberServiceApi { private ICuMemberBusinessService iCuMemberBusinessService; @Autowired private ICuMemberEmptyCodeService iCuMemberEmptyCodeService; + @Autowired + private ICuMemberLevelService iCuMemberLevelService; @Override public R getMemberInfo(String memberCode) { @@ -356,4 +360,9 @@ public class MemberServiceProvider implements IMemberServiceApi { return R.ok(iCuMemberService.getMemberPhoneCount(phone)); } + @Override + public R saveMemberLevel(CuMemberLevel memberLevel) { + return R.ok(iCuMemberLevelService.save(memberLevel)); + } + } 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 632f0631..26785baf 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 @@ -19,6 +19,7 @@ import com.hzs.common.core.web.domain.AjaxResult; import com.hzs.common.domain.member.account.CuMemberAccount; import com.hzs.common.domain.member.base.CuMember; import com.hzs.common.domain.member.base.CuMemberShare; +import com.hzs.common.domain.member.detail.CuMemberLevel; import com.hzs.common.domain.member.ext.CuMemberAccountExt; import com.hzs.common.domain.sale.ext.BdWaresDetailExt; import com.hzs.common.domain.sale.ext.SaOrderExt; @@ -49,6 +50,7 @@ import com.hzs.system.base.ICurrencyServiceApi; import com.hzs.system.base.dto.CurrencyDTO; import com.hzs.system.config.IAwardsServiceApi; import com.hzs.system.config.IGradeServiceApi; +import com.hzs.system.config.dto.GradeDTO; import com.hzs.third.sms.ISmsServiceApi; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; @@ -524,7 +526,7 @@ public class RetailOrderServiceImpl implements IRetailOrderService { log.error("新零售 payRegSaOrder 会员注册失败,{}", saveResult.getMsg()); throw new RuntimeException("会员注册失败"); } - + processMemberLevel(newMember, saOrderExt); // 发送会员注册成功短信 iSmsServiceApi.sendMemberRegister(newMember.getPhone(), EAliSmsTemplate.MEMBER_REGISTER, @@ -578,7 +580,7 @@ public class RetailOrderServiceImpl implements IRetailOrderService { log.error("新零售 payOtherOrder 会员其它订单失败,{}", saveResult.getMsg()); throw new RuntimeException("下单支付失败"); } - + processMemberLevel(buyMember, saOrderExt); this.pushOrderMq(saOrderExt); return null; } @@ -631,6 +633,7 @@ 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()) ) { @@ -673,6 +676,51 @@ public class RetailOrderServiceImpl implements IRetailOrderService { } return resultStr; } + public void processMemberLevel(CuMember gradeMember, SaOrderExt saOrderExt){ + // 处理等级 + 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("更新用户结算等级异常!"); + } + } + } + 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 f7a8e7e4..3e3f7b81 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,4 +48,13 @@ 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"); + }