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("修改失败");