This commit is contained in:
Your Name
2026-04-18 11:08:44 +08:00
parent 91624bf3de
commit 7184640f8e
251 changed files with 1529 additions and 745 deletions
@@ -84,7 +84,7 @@ final class GancaoLogisticsRouteService
$tracking = self::ensureTracking($order, $trackingNumber, $spName);
// 回写订单的快递单号 / 物流公司(如果之前空着)
// 回写订单的快递单号 / 物流公司(如果之前空着)+ 签收时升级 fulfillment_status
$orderDirty = false;
if (trim((string) $order->tracking_number) === '') {
$order->tracking_number = mb_substr($trackingNumber, 0, 80);
@@ -94,6 +94,20 @@ final class GancaoLogisticsRouteService
$order->gancao_shipping_name = mb_substr($spName, 0, 50);
$orderDirty = true;
}
$tracesCount = self::saveRoutes($tracking, $routeList);
$newState = self::resolveCurrentState($routeList);
self::updateTrackingHead($tracking, $newState, $routeList, $result);
// 签收 → 订单 fulfillment_status = 6(已签收),仅在处于发货/履约中阶段时升级,避免覆盖已完成/已取消/已签收
if ($newState === ExpressTracking::STATE_SIGNED) {
$currentFs = (int) ($order->fulfillment_status ?? 0);
if (in_array($currentFs, [1, 2, 5], true)) {
$order->fulfillment_status = 6;
$orderDirty = true;
}
}
if ($orderDirty) {
try {
$order->save();
@@ -102,10 +116,6 @@ final class GancaoLogisticsRouteService
}
}
$tracesCount = self::saveRoutes($tracking, $routeList);
$newState = self::resolveCurrentState($routeList);
self::updateTrackingHead($tracking, $newState, $routeList, $result);
self::logQuery($order, $trackingNumber, 'auto', true, $resp['runtime_ms'], '', count($routeList));
return [
@@ -431,7 +441,8 @@ final class GancaoLogisticsRouteService
$w->whereIn('gancao_order_state', [110, 20, 30, 90])
->whereOr('tracking_number', '<>', '');
});
$q->whereNotIn('fulfillment_status', [4]); // 排除已取消;已完成(3)也跑一次以补齐路由
// 排除已取消(4)、已签收(6);已完成(3)仍跑一次以补齐路由
$q->whereNotIn('fulfillment_status', [4, 6]);
}
$orders = $q->order('id', 'desc')->limit($limit)->select();