From 1112033ed86cecbbcac836977010853e501ea5fc Mon Sep 17 00:00:00 2001 From: Jack <46790855@qq.com> Date: Wed, 22 Oct 2025 12:48:35 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=8B=A3=E8=B4=A7=E5=AE=8C=E6=88=90?= =?UTF-8?q?=EF=BC=8C=E6=9B=B4=E6=94=B9=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/service/impl/ShopOrderInfoServiceImpl.java | 2 +- .../service/impl/SFExpressApiServiceImpl.java | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderInfoServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderInfoServiceImpl.java index 81512aa7..bdd34815 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderInfoServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderInfoServiceImpl.java @@ -466,7 +466,7 @@ public class ShopOrderInfoServiceImpl extends BaseServiceImpl requestParams = new HashMap<>(); - requestParams.put("order_id", sfOrderId); + requestParams.put("order_id", sfOrderId); // 顺丰订单号 requestParams.put("store_id", storeId); ThirdApiRes response = sfExpressApiService.notifyProductReady(requestParams); diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/impl/SFExpressApiServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/impl/SFExpressApiServiceImpl.java index 072b6e86..cf0ada1a 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/impl/SFExpressApiServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/impl/SFExpressApiServiceImpl.java @@ -822,7 +822,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { params.put("order_type", 1); // 1表示顺丰订单号、2表示商家订单号 params.put("shop_id", shopStoreSameCityTransportBase.getShop_id()); - params.put("shop_type", 2);// 1表示顺丰店铺id、2表示接入方店铺id + params.put("shop_type", 1);// 1表示顺丰店铺id、2表示接入方店铺id params.put("notice_ready_time", System.currentTimeMillis() / 1000); params.putAll(buildCommonParams()); @@ -1017,14 +1017,14 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { //出库扣减思迅库存star // RMK 第三方数据同步相关:redis 给这个商品减去对应的库存 QueryWrapper itemQueryWrapper = new QueryWrapper<>(); - String order_id=shopStoreSfOrder.getShop_order_id(); + String order_id = shopStoreSfOrder.getShop_order_id(); itemQueryWrapper.eq("order_id", order_id); List order_item_rows = shopOrderItemService.find(itemQueryWrapper); - if(!order_item_rows.isEmpty()){ + if (!order_item_rows.isEmpty()) { for (ShopOrderItem shopOrderItem : order_item_rows) { Map stockDeltaMap = new HashMap<>(); - String item_src_id= shopOrderItem.getItem_src_id(); - Integer order_item_quantity=shopOrderItem.getOrder_item_quantity(); + String item_src_id = shopOrderItem.getItem_src_id(); + Integer order_item_quantity = shopOrderItem.getOrder_item_quantity(); stockDeltaMap.put(item_src_id + "-" + shopStoreSfOrder.getShop_order_id(), -order_item_quantity); syncThirdDataService.incrProductStockToRedis(stockDeltaMap); } From 20cab88cf9e2144e78e68e86d9b2462dd5668d05 Mon Sep 17 00:00:00 2001 From: liyj <1617420630@qq.com> Date: Wed, 22 Oct 2025 15:16:32 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=95=86=E5=AE=B6=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=89=8B=E5=8A=A8=E5=8F=91=E8=B4=A7=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/modules/order/ShopOrderBase.java | 3 + .../modules/order/dto/MchOrderInfoDTO.java | 2 + .../admin/ShopOrderBaseController.java | 3 +- .../mobile/SFExpressController.java | 12 +++ .../service/SFExpressApiService.java | 17 ++++ .../service/impl/SFExpressApiServiceImpl.java | 89 +++++++++++++++++++ .../mapper/order/ShopOrderBaseMapper.xml | 2 + sql/shop/dev/20251022_ddl.sql | 3 + 8 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 sql/shop/dev/20251022_ddl.sql diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/order/ShopOrderBase.java b/mall-common/src/main/java/com/suisung/mall/common/modules/order/ShopOrderBase.java index 0c58f553..cb38949c 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/order/ShopOrderBase.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/order/ShopOrderBase.java @@ -67,6 +67,9 @@ public class ShopOrderBase implements Serializable { @ApiModelProperty(value = "订单状态(LIST):2011-待订单审核;2013-待财务审核;2020-待配货/待出库审核;2030-待发货;2040-已发货/待收货确认;2060-已完成/已签收;2070-已取消/已作废;") private Integer order_state_id; + @ApiModelProperty(value = "异常订单操作流程,0-可操作自行发货,1-可操作订单完成,2-订单完成不可操作") + private String operate_flag; + // @ApiModelProperty(value = "easy支付id存储") // private String easy_pay_id; diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/order/dto/MchOrderInfoDTO.java b/mall-common/src/main/java/com/suisung/mall/common/modules/order/dto/MchOrderInfoDTO.java index cdfdf29b..16d9451d 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/order/dto/MchOrderInfoDTO.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/order/dto/MchOrderInfoDTO.java @@ -93,4 +93,6 @@ public class MchOrderInfoDTO implements Serializable { private Integer distance; @ApiModelProperty(value = "是否禁止退款:1-是;2-否;") private Integer is_deny_return; + @ApiModelProperty(value = "异常订单操作流程,0-可操作自行发货,1-可操作订单完成,2-订单完成不可操作") + private String operate_flag; } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/admin/ShopOrderBaseController.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/admin/ShopOrderBaseController.java index 6a7145d8..5738c57a 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/admin/ShopOrderBaseController.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/admin/ShopOrderBaseController.java @@ -15,6 +15,7 @@ import com.suisung.mall.common.modules.order.*; import com.suisung.mall.common.modules.order.dto.MchOrderInfoDTO; import com.suisung.mall.common.service.impl.BaseControllerImpl; import com.suisung.mall.common.utils.CheckUtil; +import com.suisung.mall.common.utils.ContextUtil; import com.suisung.mall.common.utils.I18nUtil; import com.suisung.mall.shop.order.service.*; import io.swagger.annotations.Api; @@ -308,7 +309,7 @@ public class ShopOrderBaseController extends BaseControllerImpl { @RequestMapping(value = "/mch/order/list", method = RequestMethod.POST) public CommonResult selectMchOrderPageList(@RequestBody JSONObject params) { // === 用户验证 === - UserDto userDto = getCurrentUser(); + UserDto userDto = ContextUtil.getCurrentUser(); if (userDto == null) { return CommonResult.failed(ResultCode.NEED_LOGIN); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/controller/mobile/SFExpressController.java b/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/controller/mobile/SFExpressController.java index e87ffe94..e9b7167d 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/controller/mobile/SFExpressController.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/controller/mobile/SFExpressController.java @@ -106,6 +106,18 @@ public class SFExpressController { return sfExpressApiService.notifyProductReady(params); } + @ApiOperation(value = "商家自行发货", notes = "商家自行发货,顺丰不接单导致异常订单之后商家自行配送,手动发货") + @RequestMapping(value = "/selDelivery", method = RequestMethod.POST) + public CommonResult selDelivery(@RequestParam(name = "order_id", defaultValue = "") String orderId) { + return sfExpressApiService.selDelivery(orderId); + } + + @ApiOperation(value = "商家配送完成", notes = "商家配送完成,顺丰不接单导致异常订单之后商家自行配送,手动配送完成") + @RequestMapping(value = "/selFinishOrder", method = RequestMethod.POST) + public CommonResult selFinishOrder(@RequestParam(name = "order_id", defaultValue = "") String orderId) { + return sfExpressApiService.selFinishOrder(orderId); + } + /** * 顺丰同城订单状态监听 SSE 服务 * diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/SFExpressApiService.java b/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/SFExpressApiService.java index 9cb6f0b7..7e67864a 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/SFExpressApiService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/SFExpressApiService.java @@ -8,6 +8,7 @@ package com.suisung.mall.shop.sfexpress.service; +import com.suisung.mall.common.api.CommonResult; import com.suisung.mall.common.pojo.res.ThirdApiRes; import org.springframework.data.util.Pair; @@ -186,4 +187,20 @@ public interface SFExpressApiService { // * @return // */ // void pushMessageToStoreEmployee(Integer storeId, String orderId, String message, String payloadJson); + + /** + * 商家自行配送发货 + * @param orderId + * @return + */ + CommonResult selDelivery( String orderId); + + /** + * 商家手动完成订单 + * @param shopOrderId + * @return + */ + CommonResult selFinishOrder(String shopOrderId); + + } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/impl/SFExpressApiServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/impl/SFExpressApiServiceImpl.java index cf0ada1a..9262529c 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/impl/SFExpressApiServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/impl/SFExpressApiServiceImpl.java @@ -16,10 +16,13 @@ import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.suisung.mall.common.api.CommonResult; import com.suisung.mall.common.api.StateCode; import com.suisung.mall.common.constant.CommonConstant; import com.suisung.mall.common.constant.SFExpressConstant; +import com.suisung.mall.common.domain.UserDto; import com.suisung.mall.common.exception.ApiException; +import com.suisung.mall.common.modules.order.ShopOrderBase; import com.suisung.mall.common.modules.order.ShopOrderItem; import com.suisung.mall.common.modules.store.ShopMchEntry; import com.suisung.mall.common.modules.store.ShopStoreSameCityTransportBase; @@ -1069,6 +1072,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { return new ThirdApiRes().success("success"); } + /** * 接收顺丰订单完成回调 * @@ -1160,9 +1164,92 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { return new ThirdApiRes().success("success"); } + /** + * 自行发货 + * @param orderId + * @return + */ + @Override + public CommonResult selDelivery(String orderId) { + ShopOrderBase shopOrderBase = checkedOrder(orderId); + if(!shopOrderBase.getOperate_flag().equals("0")){ + return CommonResult.failed("该状态不允许发货操作"); + } + Pair pair= wxOrderShippingService.uploadShippingInfoToWx(2,shopOrderBase.getOrder_id()); + if(pair.getFirst()){ + //完成订单后修改订单异常操作流程进入完成订单环节 + shopOrderBase.setOperate_flag("1"); + shopOrderBaseService.updateById(shopOrderBase); + //出库扣减思迅库存star + // RMK 第三方数据同步相关:redis 给这个商品减去对应的库存 + QueryWrapper itemQueryWrapper = new QueryWrapper<>(); + itemQueryWrapper.eq("order_id", orderId); + List order_item_rows = shopOrderItemService.find(itemQueryWrapper); + if(!order_item_rows.isEmpty()){ + for (ShopOrderItem shopOrderItem : order_item_rows) { + Map stockDeltaMap = new HashMap<>(); + String item_src_id= shopOrderItem.getItem_src_id(); + Integer order_item_quantity=shopOrderItem.getOrder_item_quantity(); + stockDeltaMap.put(item_src_id + "-" + shopOrderItem.getOrder_id(), -order_item_quantity); + syncThirdDataService.incrProductStockToRedis(stockDeltaMap); + } + } + //出库扣减思迅库存end + } + return CommonResult.success("操作成功"); + } + + /** + * 商家自行配送完成订单 + * @param shopOrderId + */ + public CommonResult selFinishOrder(String shopOrderId) { + Integer orderStatus = StateCode.ORDER_STATE_RECEIVED; //已签收 + ShopOrderBase shopOrderBase = checkedOrder(shopOrderId); + if(!shopOrderBase.getOperate_flag().equals("1")){ + return CommonResult.failed("该状态不允许完成订单操作"); + } + // 送达后,发出催促微信用户确认收货通知 (同城配送不能调用微信的确认收货) + wxOrderShippingService.notifyConfirmReceive(shopOrderBase.getOrder_id()); + shopOrderInfoService.changeOrderStatus(shopOrderId, orderStatus, 0, 0); + //完成订单后修改订单异常操作流程 + shopOrderBase.setOperate_flag("2"); + shopOrderBaseService.updateById(shopOrderBase); + return CommonResult.success("操作成功"); + } + // 私有方法 + /** + * 校验订单是否正确 + * @param shopOrderId + * @return + */ + private ShopOrderBase checkedOrder(String shopOrderId){ + if(StringUtils.isBlank(shopOrderId)){ + logger.info("订单号不能为空"); + throw new ApiException("订单号不能为空"); + } + UserDto userDto= ContextUtil.getCurrentUser(); + if(userDto==null){ + logger.info("用户不能为空"); + throw new ApiException("用户不能为空"); + } + if(userDto.getRole_id()!=2){ + throw new ApiException("用户无权限"); + } + QueryWrapper shopOrderBaseQueryWrapper = new QueryWrapper<>(); + shopOrderBaseQueryWrapper.eq("order_id", shopOrderId); + shopOrderBaseQueryWrapper.eq("store_id", Integer.valueOf(userDto.getStore_id())); + List shopOrderBaseList= shopOrderBaseService.list(shopOrderBaseQueryWrapper); + if(shopOrderBaseList.isEmpty()){ + logger.info("订单号不存在"); + throw new ApiException("订单号不存在"); + } + return shopOrderBaseList.get(0); + } + /** * 生成顺丰同城请求签名,参考官网:https://commit-openic.sf-express.com/#/apidoc * @@ -1218,4 +1305,6 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { return JSONUtil.toBean(resultJSON, ShopStoreSfOrder.class); } + + } diff --git a/mall-shop/src/main/resources/mapper/order/ShopOrderBaseMapper.xml b/mall-shop/src/main/resources/mapper/order/ShopOrderBaseMapper.xml index 0a7ab502..4c7e43f6 100644 --- a/mall-shop/src/main/resources/mapper/order/ShopOrderBaseMapper.xml +++ b/mall-shop/src/main/resources/mapper/order/ShopOrderBaseMapper.xml @@ -578,6 +578,7 @@ + @@ -769,6 +770,7 @@ ob.order_payment_amount, ob.currency_id, ob.order_state_id, + ob.operate_flag, ST_Distance_Sphere( POINT(sb.store_longitude, sb.store_latitude), POINT(oda.da_longitude, oda.da_latitude) diff --git a/sql/shop/dev/20251022_ddl.sql b/sql/shop/dev/20251022_ddl.sql new file mode 100644 index 00000000..eae42316 --- /dev/null +++ b/sql/shop/dev/20251022_ddl.sql @@ -0,0 +1,3 @@ +alter table shop_order_base add column operate_flag varchar(1) not null default '0' comment '异常订单操作流程,0-可操作自行发货,1-可操作订单完成,2-订单完成不可操作'; + +update shop_order_base set operate_flag='2'; \ No newline at end of file From cbed988f4a817d725230d2ed731275de6f4167a7 Mon Sep 17 00:00:00 2001 From: liyj <1617420630@qq.com> Date: Wed, 22 Oct 2025 17:33:03 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8F=91=E8=B4=A7?= =?UTF-8?q?=E5=90=8E=E7=9A=84=E8=93=9D=E9=A9=B0=E7=B3=BB=E7=BB=9F=E5=BA=93?= =?UTF-8?q?=E5=AD=98=E6=89=A3=E5=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SFExpressApiServiceImpl.java | 52 +++++++++++++++++-- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/impl/SFExpressApiServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/impl/SFExpressApiServiceImpl.java index 9262529c..72c559f3 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/impl/SFExpressApiServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/impl/SFExpressApiServiceImpl.java @@ -24,6 +24,7 @@ import com.suisung.mall.common.domain.UserDto; import com.suisung.mall.common.exception.ApiException; import com.suisung.mall.common.modules.order.ShopOrderBase; import com.suisung.mall.common.modules.order.ShopOrderItem; +import com.suisung.mall.common.modules.product.ShopProductItem; import com.suisung.mall.common.modules.store.ShopMchEntry; import com.suisung.mall.common.modules.store.ShopStoreSameCityTransportBase; import com.suisung.mall.common.modules.store.ShopStoreSfOrder; @@ -36,6 +37,7 @@ import com.suisung.mall.shop.order.service.ShopOrderBaseService; import com.suisung.mall.shop.order.service.ShopOrderInfoService; import com.suisung.mall.shop.order.service.ShopOrderItemService; import com.suisung.mall.shop.order.service.ShopOrderReturnService; +import com.suisung.mall.shop.product.service.ShopProductItemService; import com.suisung.mall.shop.sfexpress.service.SFExpressApiService; import com.suisung.mall.shop.store.service.ShopMchEntryService; import com.suisung.mall.shop.store.service.ShopStoreSameCityTransportBaseService; @@ -57,6 +59,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import static com.suisung.mall.common.utils.I18nUtil._; + @Service public class SFExpressApiServiceImpl implements SFExpressApiService { private static final Logger logger = LoggerFactory.getLogger(SFExpressApiServiceImpl.class); @@ -112,6 +116,9 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { @Autowired private ShopOrderItemService shopOrderItemService; + @Autowired + private ShopProductItemService shopProductItemService; + /** * 创建顺丰同店铺-连锁店铺 * @@ -1020,14 +1027,17 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { //出库扣减思迅库存star // RMK 第三方数据同步相关:redis 给这个商品减去对应的库存 QueryWrapper itemQueryWrapper = new QueryWrapper<>(); - String order_id = shopStoreSfOrder.getShop_order_id(); + String order_id=shopStoreSfOrder.getShop_order_id(); itemQueryWrapper.eq("order_id", order_id); List order_item_rows = shopOrderItemService.find(itemQueryWrapper); - if (!order_item_rows.isEmpty()) { + if(picking(order_item_rows)){ + logger.info("顺丰发货商品扣减库存成功"); + } + if(!order_item_rows.isEmpty()){ for (ShopOrderItem shopOrderItem : order_item_rows) { Map stockDeltaMap = new HashMap<>(); - String item_src_id = shopOrderItem.getItem_src_id(); - Integer order_item_quantity = shopOrderItem.getOrder_item_quantity(); + String item_src_id= shopOrderItem.getItem_src_id(); + Integer order_item_quantity=shopOrderItem.getOrder_item_quantity(); stockDeltaMap.put(item_src_id + "-" + shopStoreSfOrder.getShop_order_id(), -order_item_quantity); syncThirdDataService.incrProductStockToRedis(stockDeltaMap); } @@ -1185,6 +1195,9 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { QueryWrapper itemQueryWrapper = new QueryWrapper<>(); itemQueryWrapper.eq("order_id", orderId); List order_item_rows = shopOrderItemService.find(itemQueryWrapper); + if(picking(order_item_rows)){ + logger.info("自行发货商品扣减库存成功"); + } if(!order_item_rows.isEmpty()){ for (ShopOrderItem shopOrderItem : order_item_rows) { Map stockDeltaMap = new HashMap<>(); @@ -1203,6 +1216,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { * 商家自行配送完成订单 * @param shopOrderId */ + @Override public CommonResult selFinishOrder(String shopOrderId) { Integer orderStatus = StateCode.ORDER_STATE_RECEIVED; //已签收 ShopOrderBase shopOrderBase = checkedOrder(shopOrderId); @@ -1218,6 +1232,36 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { return CommonResult.success("操作成功"); } + /** + * 根据订单列表扣除商品库存 + * @param order_item_rows + * @return + */ + public boolean picking(List order_item_rows){ + logger.info("出库商品扣除库存--开始"); + List updateProductItems = new ArrayList<>(); + for (ShopOrderItem shopOrderItem : order_item_rows) { + Long item_id = Long.valueOf(shopOrderItem.getItem_src_id()); + ShopProductItem productItem = shopProductItemService.get(item_id); + if (productItem == null) { + throw new ApiException(String.format(_("SKU【%s】不存在!"), item_id)); + } + Integer item_change_quantity=shopOrderItem.getOrder_item_quantity()*-1; + Integer quantity = productItem.getItem_quantity() + item_change_quantity; + if (quantity.compareTo(0) < 0) { + quantity = 0; + } + productItem.setItem_quantity(quantity); + //防止负数 + Integer tmp_quantity = productItem.getItem_quantity_frozen() + item_change_quantity.intValue(); + if (tmp_quantity.compareTo(0) < 0) { + tmp_quantity = 0; + } + productItem.setItem_quantity_frozen(tmp_quantity); + updateProductItems.add(productItem); + } + return shopProductItemService.updateBatchById(updateProductItems,updateProductItems.size()); + } // 私有方法