Files
zyt/server/test_tracking_query.php
T
2026-04-07 18:13:03 +08:00

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";