更新
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user