104 lines
3.2 KiB
PHP
104 lines
3.2 KiB
PHP
<?php
|
|
/**
|
|
* 测试物流追踪查询(从数据库)
|
|
*/
|
|
|
|
// 数据库配置
|
|
$host = '39.97.232.35';
|
|
$port = '3306';
|
|
$database = 'cs_zyt';
|
|
$username = 'root';
|
|
$password = '749b460091647766';
|
|
$charset = 'utf8mb4';
|
|
|
|
// 连接数据库
|
|
$dsn = "mysql:host={$host};port={$port};charset={$charset}";
|
|
$pdo = new PDO($dsn, $username, $password);
|
|
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
|
$pdo->exec("USE `{$database}`");
|
|
|
|
echo "========================================\n";
|
|
echo "测试物流追踪查询(从数据库)\n";
|
|
echo "========================================\n\n";
|
|
|
|
$trackingNumber = 'JD0230761381812';
|
|
|
|
// 1. 查询追踪主记录
|
|
echo "[1] 查询追踪主记录...\n";
|
|
$stmt = $pdo->prepare("
|
|
SELECT * FROM zyt_express_tracking
|
|
WHERE tracking_number = :tracking_number
|
|
AND delete_time IS NULL
|
|
");
|
|
$stmt->execute(['tracking_number' => $trackingNumber]);
|
|
$tracking = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
|
|
if (!$tracking) {
|
|
echo "❌ 未找到追踪记录\n";
|
|
exit(1);
|
|
}
|
|
|
|
echo "✓ 找到追踪记录\n";
|
|
echo " 快递公司: {$tracking['express_company_name']}\n";
|
|
echo " 当前状态: {$tracking['current_state_text']}\n";
|
|
echo " 是否签收: " . ($tracking['is_signed'] ? '是' : '否') . "\n";
|
|
echo " 查询次数: {$tracking['query_count']}\n";
|
|
echo " 最后查询: " . date('Y-m-d H:i:s', $tracking['last_query_time']) . "\n\n";
|
|
|
|
// 2. 查询轨迹明细
|
|
echo "[2] 查询轨迹明细...\n";
|
|
$stmt = $pdo->prepare("
|
|
SELECT * FROM zyt_express_trace
|
|
WHERE tracking_number = :tracking_number
|
|
ORDER BY trace_time_stamp DESC
|
|
");
|
|
$stmt->execute(['tracking_number' => $trackingNumber]);
|
|
$traces = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
echo "✓ 找到 " . count($traces) . " 条轨迹记录\n\n";
|
|
|
|
if (!empty($traces)) {
|
|
echo "最新3条轨迹:\n";
|
|
foreach (array_slice($traces, 0, 3) as $trace) {
|
|
echo " [{$trace['trace_time']}] {$trace['trace_context']}\n";
|
|
if ($trace['location']) {
|
|
echo " 位置: {$trace['location']}\n";
|
|
}
|
|
}
|
|
echo "\n";
|
|
}
|
|
|
|
// 3. 模拟API返回格式
|
|
echo "[3] 模拟API返回格式...\n";
|
|
$payload = [
|
|
'carrier' => $tracking['express_company'],
|
|
'carrier_label' => $tracking['express_company_name'],
|
|
'kuaidi_com' => $tracking['express_company'],
|
|
'traces' => array_map(function($trace) {
|
|
return [
|
|
'time' => $trace['trace_time'],
|
|
'ftime' => $trace['trace_time'],
|
|
'context' => $trace['trace_context'],
|
|
'location' => $trace['location'],
|
|
'status' => $trace['status'],
|
|
'statusCode' => $trace['status_code'],
|
|
];
|
|
}, $traces),
|
|
'state' => $tracking['current_state'],
|
|
'state_text' => $tracking['current_state_text'],
|
|
'source' => 'database',
|
|
'hint' => '',
|
|
'last_query_time' => date('Y-m-d H:i:s', $tracking['last_query_time']),
|
|
'query_count' => $tracking['query_count'],
|
|
];
|
|
|
|
echo json_encode($payload, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
|
|
echo "\n\n";
|
|
|
|
echo "========================================\n";
|
|
echo "测试完成!\n";
|
|
echo "========================================\n";
|
|
echo "✓ 数据库查询正常\n";
|
|
echo "✓ 数据格式兼容API\n";
|
|
echo "✓ 可以直接返回给前端\n";
|