From 3a93ef5d91cbb3b1335bf73d4f259a8ec6db63e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=98=8A=E5=A4=A9?= <442384644@qq.com> Date: Wed, 14 Oct 2026 18:04:39 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E8=AE=A2=E5=8D=95=E5=8F=96=E6=B6=88):=20?= =?UTF-8?q?=E5=AE=9E=E7=89=A9=E5=8F=96=E6=B6=88=E7=9B=91=E5=90=AC=E5=99=A8?= =?UTF-8?q?=E5=B9=82=E7=AD=89=E6=94=B9=E6=9F=A5=E6=89=A9=E5=B1=95=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 中台在事件触发前已标记 canceled,幂等检查改查 normal 扩展表状态(同卡密口径),禁查中台 status_code --- .../product/normal/listener/OrderCancelListener.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/backend/modules/product/normal/listener/OrderCancelListener.php b/backend/modules/product/normal/listener/OrderCancelListener.php index f98776cd7..e294444a8 100644 --- a/backend/modules/product/normal/listener/OrderCancelListener.php +++ b/backend/modules/product/normal/listener/OrderCancelListener.php @@ -17,6 +17,7 @@ use app\services\order\OrderCenterServices; use app\services\order\OrderLifecycleServices; use crmeb\trade\order\type\OrderTypeAdapterInterface; use crmeb\trade\order\type\OrderTypeRegistry; +use modules\product\normal\dao\NormalOrderDao; use modules\product\normal\handler\NormalOrderAdapter; /** @@ -33,13 +34,14 @@ class OrderCancelListener return; } - // 确认 normal 类型 + 幂等 - $centerDao = app(OrderCenterDao::class); - $meta = $centerDao->get(['order_no' => $orderNo], ['source_type', 'status_code']); + // 确认 normal 类型 + $meta = app(OrderCenterDao::class)->get(['order_no' => $orderNo], ['source_type']); if (!$meta || ($meta['source_type'] ?? '') !== NormalOrderAdapter::getSourceType()) { return; } - if ($meta['status_code'] === 'canceled') { + // 中台在事件触发前已标记 canceled,幂等必须检查扩展表(同卡密口径) + $source = app(NormalOrderDao::class)->search([], false)->where('order_no', $orderNo)->find(); + if (!$source || $source['status'] === NormalOrderAdapter::EXT_STATUS_CANCELED) { return; }