From 1536f1780b0f6832d26c5e1955ccd0629513a373 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Fri, 6 Feb 2026 02:27:56 +0800 Subject: [PATCH] =?UTF-8?q?feat(order):=20=E6=B7=BB=E5=8A=A0=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=BF=AB=E9=80=92=E5=8D=95=E5=8F=B7=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E5=88=B0=E5=8F=91=E8=B4=A7=E5=8D=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在订单更新时检查并同步快递单号到发货单表 - 使用LambdaQueryWrapper查询相关发货单记录 - 支持新增发货单或更新现有发货单的快递单号 - 添加异常处理避免同步失败影响主流程 - 实现手动录入和无需物流两种配送方式的处理 - 添加日志记录同步失败的情况便于排查问题 --- .../shop/controller/ShopOrderController.java | 42 ++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopOrderController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopOrderController.java index 1ebcb7c..550e220 100644 --- a/src/main/java/com/gxwebsoft/shop/controller/ShopOrderController.java +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopOrderController.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.gxwebsoft.common.core.config.ConfigProperties; import com.gxwebsoft.common.core.config.CertificateProperties; import com.gxwebsoft.common.core.utils.RedisUtil; @@ -316,10 +317,49 @@ public class ShopOrderController extends BaseController { ShopOrder orderForDelivery = shopOrderNow; orderForDelivery.setSendAddress(shopOrder.getSendAddress()); shopOrderDeliveryService.setExpress(getLoginUser(), shopOrderDelivery, orderForDelivery); - } + } } if (shopOrderService.updateById(shopOrder)) { + // 如果订单上带了快递单号(常见于后台手工修正/补录),同步到发货单表,避免发货单还是旧单号 + if (StrUtil.isNotBlank(shopOrder.getExpressNo()) && shopOrder.getOrderId() != null) { + try { + List deliveryList = shopOrderDeliveryService.list( + new LambdaQueryWrapper() + .eq(ShopOrderDelivery::getOrderId, shopOrder.getOrderId()) + ); + if (deliveryList == null || deliveryList.isEmpty()) { + ShopOrderDelivery delivery = new ShopOrderDelivery(); + delivery.setOrderId(shopOrder.getOrderId()); + delivery.setTenantId(ObjectUtil.defaultIfNull(shopOrder.getTenantId(), shopOrderNow.getTenantId())); + delivery.setExpressId(ObjectUtil.defaultIfNull(shopOrder.getExpressId(), shopOrderNow.getExpressId())); + delivery.setExpressNo(shopOrder.getExpressNo()); + // 10手动录入 / 20无需物流 + if (delivery.getExpressId() == null || delivery.getExpressId() == 0) { + delivery.setDeliveryMethod(20); + } else { + delivery.setDeliveryMethod(10); + } + delivery.setSendName(ObjectUtil.defaultIfNull(shopOrder.getSendName(), shopOrderNow.getSendName())); + delivery.setSendPhone(ObjectUtil.defaultIfNull(shopOrder.getSendPhone(), shopOrderNow.getSendPhone())); + delivery.setSendAddress(ObjectUtil.defaultIfNull(shopOrder.getSendAddress(), shopOrderNow.getSendAddress())); + shopOrderDeliveryService.save(delivery); + } else { + for (ShopOrderDelivery d : deliveryList) { + if (d == null || d.getDeliveryId() == null) { + continue; + } + ShopOrderDelivery patch = new ShopOrderDelivery(); + patch.setDeliveryId(d.getDeliveryId()); + patch.setExpressNo(shopOrder.getExpressNo()); + shopOrderDeliveryService.updateById(patch); + } + } + } catch (Exception e) { + logger.warn("同步更新发货单运单号失败 - orderId={}, expressNo={}", + shopOrder.getOrderId(), shopOrder.getExpressNo(), e); + } + } return success("修改成功"); } return fail("修改失败");