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