This commit is contained in:
Your Name
2026-06-05 17:15:15 +08:00
parent b9d36d8d04
commit 5a235280a1
10 changed files with 328 additions and 54 deletions
@@ -1525,6 +1525,48 @@ class PrescriptionOrderLogic
return $payload;
}
/**
* 直接调用京东官方物流接口刷新轨迹并落库(后台「京东接口更新」按钮)。
*
* @return array{success:bool, message:string, traces_count:int, state:string}|null
*/
public static function logisticsJdUpdate(int $id, int $adminId, array $adminInfo): ?array
{
self::$error = '';
$row = PrescriptionOrder::where('id', $id)->whereNull('delete_time')->find();
if (!$row) {
self::$error = '订单不存在';
return null;
}
if (!self::canAccessOrder($row, $adminId, $adminInfo)) {
self::$error = '无权限操作';
return null;
}
$num = trim((string) ($row->tracking_number ?? ''));
if ($num === '') {
self::$error = '未填写快递单号';
return null;
}
$ret = \app\common\service\ExpressTrackingService::queryJdOfficialAndUpdate($num);
if (empty($ret['success'])) {
self::$error = (string) ($ret['message'] ?? '京东物流更新失败');
return null;
}
return [
'success' => true,
'message' => (string) ($ret['message'] ?? '京东物流轨迹已更新'),
'traces_count' => (int) ($ret['traces_count'] ?? 0),
'state' => (string) ($ret['state'] ?? ''),
];
}
/**
* @param array<string,mixed> $params
* @return array<string,mixed>|false