diff --git a/backend/modules/product/normal/listener/OrderCenterDetailExtendListener.php b/backend/modules/product/normal/listener/OrderCenterDetailExtendListener.php index 65285946a..ccc1b2e31 100644 --- a/backend/modules/product/normal/listener/OrderCenterDetailExtendListener.php +++ b/backend/modules/product/normal/listener/OrderCenterDetailExtendListener.php @@ -90,7 +90,10 @@ class OrderCenterDetailExtendListener implements ListenerInterface } } - $deliveryType = (string)($extraInfo['delivery_type'] ?? ($extraInfo['delivery']['delivery_type'] ?? '')); + // 发货配送方式以 extra_info.delivery.delivery_type(发货时写入)为准; + // 顶层 extra_info.delivery_type 是下单收货方式(express/pickup/door), + // 存量订单发货后两者可能不一致,不能让顶层旧值覆盖实际发货方式 + $deliveryType = (string)(($extraInfo['delivery']['delivery_type'] ?? '') ?: ($extraInfo['delivery_type'] ?? '')); if ($deliveryType === '') { $shippingType = (int)($detail['shipping_type'] ?? 0); $deliveryType = $shippingType === 2 ? 'pickup' : ($shippingType === 3 ? 'door' : 'express'); diff --git a/backend/modules/product/normal/service/OrderServices.php b/backend/modules/product/normal/service/OrderServices.php index 80ccf3d27..2d5ef9fa6 100644 --- a/backend/modules/product/normal/service/OrderServices.php +++ b/backend/modules/product/normal/service/OrderServices.php @@ -174,6 +174,8 @@ class OrderServices extends BaseService 'delivery_id' => $deliveryId, 'delivery_uid' => $deliveryUid, ]; + // 顶层 delivery_type 为下单收货方式,发货后以实际发货配送方式为准,两处必须同步 + $extraInfo['delivery_type'] = $deliveryType; $this->centerServices->updateRecord($orderNo, [ 'extra_info' => json_encode($extraInfo, JSON_UNESCAPED_UNICODE), 'delivery_time' => time(),