feat: add kuaidi100 logistics sync
This commit is contained in:
@@ -501,6 +501,7 @@ class FulfillmentFlowService
|
||||
'tracking_no' => $trackingNo,
|
||||
'shipped_at' => $now,
|
||||
]);
|
||||
(new OrderLogisticsSyncService())->subscribeAsync($logisticsId);
|
||||
|
||||
return $this->formatOrderContext($orderId);
|
||||
}
|
||||
@@ -535,6 +536,9 @@ class FulfillmentFlowService
|
||||
$product = Db::name('order_products')->where('order_id', $orderId)->find() ?: [];
|
||||
$sendLogistics = Db::name('order_logistics')->where('order_id', $orderId)->where('logistics_type', 'send_to_center')->order('id', 'desc')->find();
|
||||
$returnLogistics = Db::name('order_logistics')->where('order_id', $orderId)->where('logistics_type', 'return_to_user')->order('id', 'desc')->find();
|
||||
$syncService = new OrderLogisticsSyncService();
|
||||
$sendSyncStatus = $sendLogistics ? $syncService->formatSyncStatus((int)$sendLogistics['id']) : ['provider_status_text' => '', 'sync_status_text' => '未同步', 'sync_error' => ''];
|
||||
$returnSyncStatus = $returnLogistics ? $syncService->formatSyncStatus((int)$returnLogistics['id']) : ['provider_status_text' => '', 'sync_status_text' => '未同步', 'sync_error' => ''];
|
||||
$flow = Db::name('order_transfer_flows')->where('order_id', $orderId)->order('id', 'desc')->find();
|
||||
$report = $this->latestReport($orderId);
|
||||
$content = $report ? Db::name('report_contents')->where('report_id', (int)$report['id'])->find() : null;
|
||||
@@ -570,6 +574,17 @@ class FulfillmentFlowService
|
||||
'express_company' => (string)$sendLogistics['express_company'],
|
||||
'tracking_no' => (string)$sendLogistics['tracking_no'],
|
||||
'tracking_status' => (string)$sendLogistics['tracking_status'],
|
||||
'tracking_status_text' => $this->trackingStatusText((string)$sendLogistics['tracking_status'], 'send_to_center'),
|
||||
'provider_status_text' => $sendSyncStatus['provider_status_text'],
|
||||
'sync_status_text' => $sendSyncStatus['sync_status_text'],
|
||||
'sync_error' => $sendSyncStatus['sync_error'],
|
||||
'latest_desc' => (string)($sendLogistics['latest_desc'] ?? ''),
|
||||
'latest_time' => (string)($sendLogistics['latest_time'] ?? ''),
|
||||
'nodes' => array_map(fn (array $item) => [
|
||||
'node_time' => (string)$item['node_time'],
|
||||
'node_desc' => (string)$item['node_desc'],
|
||||
'node_location' => (string)$item['node_location'],
|
||||
], $syncService->nodesForLogistics((int)$sendLogistics['id'])),
|
||||
] : null,
|
||||
'return_address' => $returnAddress ? [
|
||||
'consignee' => (string)($returnAddress['consignee'] ?? ''),
|
||||
@@ -580,6 +595,17 @@ class FulfillmentFlowService
|
||||
'express_company' => (string)$returnLogistics['express_company'],
|
||||
'tracking_no' => (string)$returnLogistics['tracking_no'],
|
||||
'tracking_status' => (string)$returnLogistics['tracking_status'],
|
||||
'tracking_status_text' => $this->trackingStatusText((string)$returnLogistics['tracking_status'], 'return_to_user'),
|
||||
'provider_status_text' => $returnSyncStatus['provider_status_text'],
|
||||
'sync_status_text' => $returnSyncStatus['sync_status_text'],
|
||||
'sync_error' => $returnSyncStatus['sync_error'],
|
||||
'latest_desc' => (string)($returnLogistics['latest_desc'] ?? ''),
|
||||
'latest_time' => (string)($returnLogistics['latest_time'] ?? ''),
|
||||
'nodes' => array_map(fn (array $item) => [
|
||||
'node_time' => (string)$item['node_time'],
|
||||
'node_desc' => (string)$item['node_desc'],
|
||||
'node_location' => (string)$item['node_location'],
|
||||
], $syncService->nodesForLogistics((int)$returnLogistics['id'])),
|
||||
] : null,
|
||||
'transfer_flow' => $flow ? $this->formatFlow($flow) : null,
|
||||
'report_info' => $report ? [
|
||||
@@ -994,6 +1020,25 @@ class FulfillmentFlowService
|
||||
};
|
||||
}
|
||||
|
||||
private function trackingStatusText(string $status, string $logisticsType): string
|
||||
{
|
||||
if ($logisticsType === 'return_to_user') {
|
||||
return match ($status) {
|
||||
'submitted' => '已登记回寄运单',
|
||||
'in_transit' => '回寄途中',
|
||||
'received' => '用户已签收',
|
||||
default => $status === '' ? '待回寄' : $status,
|
||||
};
|
||||
}
|
||||
|
||||
return match ($status) {
|
||||
'submitted' => '用户已提交运单',
|
||||
'in_transit' => '用户已寄出,运输中',
|
||||
'received' => '鉴定中心已签收',
|
||||
default => $status === '' ? '待提交' : $status,
|
||||
};
|
||||
}
|
||||
|
||||
private function decodeJsonArray(mixed $value): array
|
||||
{
|
||||
if (is_array($value)) {
|
||||
|
||||
Reference in New Issue
Block a user