feat: add kuaidi100 logistics sync

This commit is contained in:
wushumin
2026-05-26 17:08:33 +08:00
parent 09d9fcbe69
commit a5f00d7e31
31 changed files with 2596 additions and 67 deletions

View File

@@ -17,6 +17,54 @@ class ExpressCompaniesController
]);
}
public function catalog(Request $request)
{
$keyword = trim((string)$request->input('keyword', ''));
$limit = max(1, min(100, (int)$request->input('limit', 30)));
return api_success([
'list' => $this->service()->catalogList($keyword, $limit),
'total' => $this->service()->catalogTotal(),
'synced_at' => $this->service()->catalogSyncedAt(),
]);
}
public function syncCatalog(Request $request)
{
try {
$result = $this->service()->syncCatalog();
} catch (\RuntimeException $e) {
return api_error($e->getMessage(), 422);
} catch (\Throwable $e) {
return api_error('快递100公司码表同步失败', 500, [
'detail' => $e->getMessage(),
]);
}
return api_success($result, '快递100公司码表已同步');
}
public function recognize(Request $request)
{
$trackingNo = trim((string)$request->input('tracking_no', ''));
$companyName = trim((string)$request->input('company_name', $request->input('company_code', '')));
if ($trackingNo === '') {
return api_error('运单号不能为空', 422);
}
try {
$result = $this->service()->recognizeCompany($companyName, $trackingNo);
} catch (\RuntimeException $e) {
return api_error($e->getMessage(), 422);
} catch (\Throwable $e) {
return api_error('快递公司识别失败', 500, [
'detail' => $e->getMessage(),
]);
}
return api_success($result);
}
public function save(Request $request)
{
$id = (int)$request->input('id', 0);