diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/api/ApiRetailOrderController.java b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/api/ApiRetailOrderController.java index 4837a0d9..3bf343e7 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/api/ApiRetailOrderController.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/api/ApiRetailOrderController.java @@ -98,6 +98,11 @@ public class ApiRetailOrderController { BdGrade bdGrade = iSaOrderService.calculateGrade(levelParam.getSpecialArea(), convertShoppingCarToSku(SecurityUtils.getUserId(), levelParam.getShopList()), null, levelParam.getUpgradeMember(), SecurityUtils.getSystemType(), EYesNo.NO.getIntValue()); if (null != bdGrade) { + if (ESpecialArea.RETAIL_REGISTER.getValue() == levelParam.getSpecialArea()) { + // 注册专区,校验会员等级推荐范围 + iRetailOrderService.checkMemberRegisterScope(iMemberServiceApi.getMember(SecurityUtils.getUserId()).getData(), bdGrade.getPkId()); + } + orderLevelVO.setIsEnough(true); orderLevelVO.setPkGradeVal(bdGrade.getGradeName()); orderLevelVO.setGradeValue(bdGrade.getGradeValue()); @@ -292,6 +297,9 @@ public class ApiRetailOrderController { // 封装订单信息 SaOrderExt saOrderExt = iRetailOrderService.createSaOrder(registerParam, gradeList, newMember); + // 校验会员等级推荐范围 + iRetailOrderService.checkMemberRegisterScope(registerParam.getCreatorMember(), newMember.getPkSettleGrade()); + // 校验会员账户状态等 R accountResult = iRetailOrderService.validMemberAccount(pkMember, payParam.getPayPwd()); if (!accountResult.isSuccess()) { @@ -700,7 +708,6 @@ public class ApiRetailOrderController { orderParam.setPkParent(orderParam.getPkCreator()); if (!creatorMember.getMemberCode().equals(orderParam.getParentCode())) { - CuMember parentMember = iMemberServiceApi.getRetailMember(null, orderParam.getParentCode()).getData(); if (null == parentMember) { return "推荐编号不存在"; @@ -718,7 +725,6 @@ public class ApiRetailOrderController { } orderParam.setPkParent(parentMember.getPkId()); } - return null; } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/service/IRetailOrderService.java b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/service/IRetailOrderService.java index bc915ada..05415476 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/service/IRetailOrderService.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/service/IRetailOrderService.java @@ -141,4 +141,12 @@ public interface IRetailOrderService { */ Long savePickOrder(SaOrder saOrder, List saOrderItemsList); + /** + * 校验会员注册范围 + * + * @param createMember + * @param newSettleGrade + */ + void checkMemberRegisterScope(CuMember createMember, Integer newSettleGrade); + } 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 352ee431..0d0fd79e 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 @@ -13,7 +13,6 @@ import com.hzs.common.core.config.BdConfig; import com.hzs.common.core.constant.*; import com.hzs.common.core.domain.R; import com.hzs.common.core.enums.*; -import com.hzs.common.core.enums.retail.ERetailWaresPrice; import com.hzs.common.core.exception.ServiceException; import com.hzs.common.core.service.RedisService; import com.hzs.common.core.utils.*; @@ -31,6 +30,7 @@ import com.hzs.common.domain.sale.product.BdProduct; import com.hzs.common.domain.sale.wares.BdWaresRange; import com.hzs.common.domain.system.base.BdStorehouse; import com.hzs.common.domain.system.config.BdGrade; +import com.hzs.common.domain.system.ext.BdGradeScopeExt; import com.hzs.common.security.utils.SecurityUtils; import com.hzs.member.account.IMemberAccountServiceApi; import com.hzs.member.base.IMemberServiceApi; @@ -120,6 +120,9 @@ public class RetailOrderServiceImpl implements IRetailOrderService { // 封装订单信息 SaOrderExt saOrderExt = this.createSaOrder(registerParam, gradeList, newMember); + // 校验会员等级推荐范围 + this.checkMemberRegisterScope(registerParam.getCreatorMember(), newMember.getPkSettleGrade()); + // 订单缓存(60分钟有效,防止在线支付回调慢) redisService.setCacheObject(CacheConstants.RETAIL_TEMP_ORDER + registerParam.getPkCreator() + registerParam.getOrderCode(), saOrderExt, CacheConstants.RETAIL_ORDER_EXPIRE_TIME * 2, TimeUnit.MINUTES); registerParam.setPkGrade(newMember.getPkSettleGrade()); @@ -990,4 +993,18 @@ public class RetailOrderServiceImpl implements IRetailOrderService { } } + @Override + public void checkMemberRegisterScope(CuMember createMember, Integer newSettleGrade) { + // 2025.08.21 店主及以下,只能推荐店主及以下 + List bdGradeScopeExtList = iGradeServiceApi.queryGradeConfigByCondition(createMember.getPkSettleCountry(), createMember.getPkSettleGrade()).getData().getBdGradeScopeExtList(); + if (CollectionUtil.isNotEmpty(bdGradeScopeExtList)) { + for (BdGradeScopeExt bdGradeScopeExt : bdGradeScopeExtList) { + if (bdGradeScopeExt.getPkScope().equals(newSettleGrade)) { + return; + } + } + } + throw new ServiceException("不能注册当前新会员等级"); + } + }