diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/orders/OrdersServiceImpl.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/orders/OrdersServiceImpl.java index c66f717b96..b4778dd659 100644 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/orders/OrdersServiceImpl.java +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/orders/OrdersServiceImpl.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.haoka.service.orders; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.module.haoka.api.ApiFrom; import cn.iocoder.yudao.module.haoka.controller.admin.onsaleproduct.vo.OnSaleProductPreOrderRespVO; @@ -34,6 +35,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.haoka.dal.mysql.orders.OrdersMapper; import java.util.List; +import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.invalidParamException; @@ -161,7 +163,43 @@ public class OrdersServiceImpl extends ServiceImpl imple String idCardNum = oldOrderDo.getIdCardNum(); List productLimitCardRespVO = productLimit.getProductLimitCardRespVO(); List productLimitAreaVos = productLimit.getProductLimitAreaVos(); + + + + // 地区限制检查 + if (CollectionUtil.isNotEmpty(productLimitAreaVos)){ + + // 允许的地区编码 + List allowedAreaCode = productLimitAreaVos + .stream() + .filter(ProductLimitAreaRespVO::getAllowed) + .map(ProductLimitAreaRespVO::getAddressCode) + .toList(); + // 不在允许的地区编码 + if (CollectionUtil.isNotEmpty(allowedAreaCode) && !allowedAreaCode.contains(addressProvinceCode)){ + updateObj.setStatus(125L); + } + + List notAllowedAreaCode = productLimitAreaVos + .stream() + .filter(o->!o.getAllowed()) + .map(ProductLimitAreaRespVO::getAddressCode) + .toList(); + // 在不发货的地区编码中 + if (CollectionUtil.isNotEmpty(notAllowedAreaCode) && notAllowedAreaCode.contains(addressProvinceCode)){ + updateObj.setStatus(125L); + } + + } + + + + } + + + + // 保证下面字段信息不会变化 updateObj.setOnSaleProductId(oldOrderDo.getOnSaleProductId()); updateObj.setProducerId(oldOrderDo.getProducerId());