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