## 等级处理;

This commit is contained in:
cabbage 2025-10-27 16:22:28 +08:00
parent 0cb856ebd0
commit b6d95d2be8
2 changed files with 32 additions and 67 deletions

View File

@ -519,6 +519,8 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
// 处理会员激活 // 处理会员激活
this.handleMemberActivate(newMember, saOrderExt); this.handleMemberActivate(newMember, saOrderExt);
processMemberLevel(newMember, saOrderExt);
// 保存会员信息扣减账户等 // 保存会员信息扣减账户等
// 调用其他服务保存会员信息会员注册信息 // 调用其他服务保存会员信息会员注册信息
R<?> saveResult = iMemberServiceApi.saveRetailMember(newMember, saOrderExt, memberAccountExt); R<?> saveResult = iMemberServiceApi.saveRetailMember(newMember, saOrderExt, memberAccountExt);
@ -526,7 +528,6 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
log.error("新零售 payRegSaOrder 会员注册失败,{}", saveResult.getMsg()); log.error("新零售 payRegSaOrder 会员注册失败,{}", saveResult.getMsg());
throw new RuntimeException("会员注册失败"); throw new RuntimeException("会员注册失败");
} }
processMemberLevel(newMember, saOrderExt);
// 发送会员注册成功短信 // 发送会员注册成功短信
iSmsServiceApi.sendMemberRegister(newMember.getPhone(), EAliSmsTemplate.MEMBER_REGISTER, iSmsServiceApi.sendMemberRegister(newMember.getPhone(), EAliSmsTemplate.MEMBER_REGISTER,
@ -573,6 +574,8 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
// 处理会员激活 // 处理会员激活
Boolean activateFlag = this.handleMemberActivate(buyMember, saOrderExt); Boolean activateFlag = this.handleMemberActivate(buyMember, saOrderExt);
processMemberLevel(buyMember, saOrderExt);
// 扣减账户等 // 扣减账户等
// 调用其他服务保存更新会员账户等 // 调用其他服务保存更新会员账户等
R<?> saveResult = iMemberServiceApi.otherRetailMember(buyMember, saOrderExt, memberAccountExt, activateFlag); R<?> saveResult = iMemberServiceApi.otherRetailMember(buyMember, saOrderExt, memberAccountExt, activateFlag);
@ -580,7 +583,6 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
log.error("新零售 payOtherOrder 会员其它订单失败,{}", saveResult.getMsg()); log.error("新零售 payOtherOrder 会员其它订单失败,{}", saveResult.getMsg());
throw new RuntimeException("下单支付失败"); throw new RuntimeException("下单支付失败");
} }
processMemberLevel(buyMember, saOrderExt);
this.pushOrderMq(saOrderExt); this.pushOrderMq(saOrderExt);
return null; return null;
} }
@ -633,7 +635,6 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
RetailOrderRegisterParam registerParam = redisService.getCacheObject(CacheConstants.RETAIL_TEMP_REG_PARAM + pkMember + orderCode); RetailOrderRegisterParam registerParam = redisService.getCacheObject(CacheConstants.RETAIL_TEMP_REG_PARAM + pkMember + orderCode);
boolean isShared = ObjectUtil.isNotEmpty(registerParam) && ObjectUtil.isNotEmpty(registerParam.getCuMemberShare()); boolean isShared = ObjectUtil.isNotEmpty(registerParam) && ObjectUtil.isNotEmpty(registerParam.getCuMemberShare());
CuMember gradeMember = null;
if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|| (isShared && EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) || (isShared && EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType())
) { ) {
@ -676,51 +677,24 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
} }
return resultStr; return resultStr;
} }
public void processMemberLevel(CuMember gradeMember, SaOrderExt saOrderExt) { public void processMemberLevel(CuMember gradeMember, SaOrderExt saOrderExt) {
if(EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()){ if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
// 处理等级 // 处理等级
GradeDTO bdGrade = iGradeServiceApi.getGrade(gradeMember.getPkSettleGrade()).getData(); GradeDTO bdGrade = iGradeServiceApi.getGrade(gradeMember.getPkSettleGrade()).getData();
List<BdGrade> gradeDTOList = iGradeServiceApi.getRetailGradeList().getData();
CuMemberLevel memberLevel = null;
if (bdGrade.getGradeValue() < EGrade.YOU_KE.getValue()) { if (bdGrade.getGradeValue() < EGrade.YOU_KE.getValue()) {
if(saOrderExt.getOrderAchieve().compareTo(RetailConstants.GOLD_CARD_PV) >= 0){ List<BdGrade> tmpGradeList = iGradeServiceApi.getRetailGradeList().getData();
// 拿金牌等级 // 等级值倒序
BdGrade goldGrade = gradeDTOList.stream().filter(item -> item.getGradeValue().equals(EGrade.YOU_KE.getValue())).findFirst().get(); List<BdGrade> gradeList = tmpGradeList.stream().sorted(Comparator.comparingInt(BdGrade::getGradeValue).reversed()).collect(Collectors.toList());
memberLevel = getCuMemberLevel(gradeMember, saOrderExt, goldGrade.getPkId()); gradeList.forEach(tmpGrade -> {
gradeMember.setPkSettleGrade(goldGrade.getPkId()); if (saOrderExt.getOrderAchieve().compareTo(tmpGrade.getStartValue()) >= 0) {
gradeMember.setPkSettleGradeValue(goldGrade.getGradeValue()); gradeMember.setPkSettleGrade(tmpGrade.getPkId());
}else if(saOrderExt.getOrderAchieve().compareTo(RetailConstants.SILVER_CARD_PV) >= 0){ gradeMember.setPkSettleGradeValue(tmpGrade.getGradeValue());
// 拿银牌等级 }
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;
} }

View File

@ -48,13 +48,4 @@ public class RetailConstants {
*/ */
public static final boolean LIMIT_TO_REG_PHONE_NUMBER = false; 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");
} }