From 57bac51bf475a960236fc35c92c82fb7e640c72d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E5=B1=95=E9=B9=8F?= Date: Wed, 19 Nov 2025 02:08:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0VIP=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=AA=8C=E8=AF=81=E8=84=9A=E6=9C=AC=E5=92=8C?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E8=B0=83=E8=AF=95=E5=B7=A5=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加verify_vip_data.php脚本用于验证VIP客户数据完整性 创建vip_search_debug.html调试工具用于测试搜索功能 --- verify_vip_data.php | 245 +++++++++++++++++++++ vip_search_debug.html | 490 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 735 insertions(+) create mode 100644 verify_vip_data.php create mode 100644 vip_search_debug.html diff --git a/verify_vip_data.php b/verify_vip_data.php new file mode 100644 index 0000000..bb6329f --- /dev/null +++ b/verify_vip_data.php @@ -0,0 +1,245 @@ +setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + return $pdo; + } catch(PDOException $e) { + die("数据库连接失败: " . $e->getMessage()); + } +} + +$pdo = connectDatabase(); + +echo " + + + + VIP客户数据验证 + + + +
+

🔍 VIP客户数据验证报告

"; + +// 1. 检查VIP客户表是否存在 +echo "

1. 数据库表检查

"; +try { + $stmt = $pdo->query("SHOW TABLES LIKE 'vip_customers'"); + $tableExists = $stmt->rowCount() > 0; + + if ($tableExists) { + echo "

✅ vip_customers 表存在

"; + + // 获取表结构 + $stmt = $pdo->query("DESCRIBE vip_customers"); + $columns = $stmt->fetchAll(PDO::FETCH_ASSOC); + + echo "

表结构:

"; + echo ""; + echo ""; + foreach ($columns as $column) { + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + } + echo "
字段名类型是否为空默认值额外
{$column['Field']}{$column['Type']}{$column['Null']}{$column['Key']}{$column['Default']}{$column['Extra']}
"; + + } else { + echo "

❌ vip_customers 表不存在

"; + } +} catch (Exception $e) { + echo "

❌ 表检查失败: " . $e->getMessage() . "

"; +} + +// 2. VIP客户总数统计 +echo "

2. VIP客户统计

"; +try { + // 总数 + $stmt = $pdo->query("SELECT COUNT(*) as total FROM vip_customers"); + $totalResult = $stmt->fetch(PDO::FETCH_ASSOC); + $totalCount = $totalResult['total']; + + echo "
"; + echo "

VIP客户总数

"; + echo "
$totalCount
"; + echo "
"; + + // 活跃状态统计 + $stmt = $pdo->query("SELECT is_active, COUNT(*) as count FROM vip_customers GROUP BY is_active"); + $activeStats = $stmt->fetchAll(PDO::FETCH_ASSOC); + + echo "

按状态统计:

"; + echo ""; + echo ""; + foreach ($activeStats as $stat) { + $status = $stat['is_active'] ? '活跃' : '非活跃'; + $class = $stat['is_active'] ? 'success' : 'warning'; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + } + echo "
状态数量说明
$status{$stat['count']}" . ($stat['is_active'] ? '可搜索' : '不可搜索') . "
"; + +} catch (Exception $e) { + echo "

❌ 统计查询失败: " . $e->getMessage() . "

"; +} + +// 3. 活跃VIP客户详细数据 +echo "

3. 活跃VIP客户详细数据

"; +try { + $stmt = $pdo->query("SELECT * FROM vip_customers WHERE is_active = 1 ORDER BY created_at DESC"); + $vipCustomers = $stmt->fetchAll(PDO::FETCH_ASSOC); + + if (count($vipCustomers) > 0) { + echo "

✅ 找到 " . count($vipCustomers) . " 个活跃VIP客户

"; + + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + + foreach ($vipCustomers as $customer) { + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + } + echo "
ID客户姓名手机号邮箱车型车牌号注册时间
{$customer['id']}{$customer['customer_name']}{$customer['phone']}{$customer['email']}{$customer['car_model']}{$customer['car_number']}{$customer['created_at']}
"; + + // 显示原始JSON数据 + echo "

原始JSON数据 (API返回格式):

"; + echo "
"; + echo "
" . json_encode($vipCustomers, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . "
"; + echo "
"; + + } else { + echo "

⚠️ 没有找到活跃的VIP客户

"; + } + +} catch (Exception $e) { + echo "

❌ 查询VIP客户失败: " . $e->getMessage() . "

"; +} + +// 4. 搜索功能测试 +echo "

4. 搜索功能测试

"; +if (isset($vipCustomers) && count($vipCustomers) > 0) { + echo "

基于实际数据进行搜索测试:

"; + + // 测试各种搜索词 + $testQueries = [ + '姓名首字' => substr($vipCustomers[0]['customer_name'], 0, 1), + '姓名中字' => mb_substr($vipCustomers[0]['customer_name'], 1, 1, 'UTF-8'), + '手机前3位' => substr($vipCustomers[0]['phone'], 0, 3), + '手机后4位' => substr($vipCustomers[0]['phone'], -4), + '姓氏' => '张', + '号段' => '139' + ]; + + foreach ($testQueries as $description => $query) { + echo "
"; + echo "测试: $description (搜索词: '$query')
"; + + $results = []; + foreach ($vipCustomers as $customer) { + $nameMatch = mb_stripos($customer['customer_name'], $query, 0, 'UTF-8') !== false; + $phoneMatch = stripos($customer['phone'], $query) !== false; + + if ($nameMatch || $phoneMatch) { + $results[] = $customer['customer_name'] . ' (' . $customer['phone'] . ')'; + } + } + + if (count($results) > 0) { + echo "✅ 找到 " . count($results) . " 个结果:
"; + foreach ($results as $result) { + echo "• $result
"; + } + } else { + echo "⚠️ 未找到匹配结果"; + } + echo "
"; + } + +} else { + echo "

⚠️ 没有VIP客户数据可供测试

"; +} + +// 5. API端点测试 +echo "

5. API端点测试

"; +echo "

测试 get_vip_customers.php 接口:

"; + +if (file_exists('get_vip_customers.php')) { + echo "

✅ get_vip_customers.php 文件存在

"; + + // 模拟API调用 + ob_start(); + include 'get_vip_customers.php'; + $apiOutput = ob_get_clean(); + + echo "
"; + echo "API输出:
"; + echo "
" . htmlspecialchars($apiOutput) . "
"; + echo "
"; + + // 尝试解析JSON + try { + $apiData = json_decode($apiOutput, true); + if (json_last_error() === JSON_ERROR_NONE) { + echo "

✅ API返回有效JSON数据

"; + echo "

数据记录数: " . (is_array($apiData) ? count($apiData) : 'N/A') . "

"; + } else { + echo "

❌ API返回无效JSON: " . json_last_error_msg() . "

"; + } + } catch (Exception $e) { + echo "

❌ JSON解析失败: " . $e->getMessage() . "

"; + } + +} else { + echo "

❌ get_vip_customers.php 文件不存在

"; +} + +echo "
"; +?> \ No newline at end of file diff --git a/vip_search_debug.html b/vip_search_debug.html new file mode 100644 index 0000000..250ee13 --- /dev/null +++ b/vip_search_debug.html @@ -0,0 +1,490 @@ + + + + + + VIP客户搜索调试工具 + + + +
+
🔧 VIP客户搜索调试工具
+ + +
+

数据库连接测试

+ + +
+ + +
+

VIP数据加载测试

+ + + +
+ + +
+

搜索功能测试

+
+ + + +
+ + +
+ + +
+

完整流程测试

+ + +
+ + +
+

实时监控

+
+
+
+ + + + \ No newline at end of file