This repository has been archived on 2026-06-20. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
wsh5485 5bbb0877d5 feat: 添加WPS表单处理功能及相关测试
实现WPS表单Webhook接收端点,包括数据解析、验证和存储功能
添加数据库表创建脚本和测试用例
包含Webhook测试页面和日志功能
2025-12-05 13:58:57 +08:00

125 lines
4.9 KiB
PHP

<?php
// 测试数据库连接和表创建功能
require_once 'config.php';
// 记录日志的函数
function log_test_message($message, $type = 'info') {
$log_file = 'test_db.log';
$timestamp = date('Y-m-d H:i:s');
$log_entry = "[$timestamp] [$type] $message\n";
file_put_contents($log_file, $log_entry, FILE_APPEND);
echo $log_entry;
}
echo "=== 测试数据库连接和表创建功能 ===\n";
// 测试数据库连接
try {
$pdo = new PDO("mysql:host=$host;dbname=$database;charset=utf8mb4", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
log_test_message("数据库连接成功");
} catch(PDOException $e) {
log_test_message("数据库连接失败: " . $e->getMessage(), 'error');
exit(1);
}
// 测试创建表
try {
$sql = "CREATE TABLE IF NOT EXISTS wps_form_submissions (
id INT AUTO_INCREMENT PRIMARY KEY,
rid VARCHAR(50) NOT NULL COMMENT '表单提交ID',
form_id VARCHAR(50) NOT NULL COMMENT '表单ID',
form_title VARCHAR(255) NOT NULL COMMENT '表单标题',
creator_id VARCHAR(50) NOT NULL COMMENT '创建者ID',
create_time DATETIME NOT NULL COMMENT '创建时间',
update_time DATETIME NOT NULL COMMENT '更新时间',
mobile VARCHAR(20) COMMENT '请输入手机号',
name VARCHAR(255) COMMENT '怎么称呼您',
license_plate VARCHAR(20) COMMENT '车牌号',
date DATE COMMENT '日期',
time_slot VARCHAR(20) COMMENT '时间段',
car_type VARCHAR(50) COMMENT '车型',
wash_type VARCHAR(100) COMMENT '洗车类型',
wash_packages VARCHAR(255) COMMENT '洗车套餐',
wash_services TEXT COMMENT '洗车服务',
additional_services TEXT COMMENT '额外服务',
need_wax VARCHAR(10) COMMENT '是否需要打蜡',
wax_type VARCHAR(50) COMMENT '蜡的类型',
cleaning_needs TEXT COMMENT '清洁需求',
interior_cleaning VARCHAR(10) COMMENT '是否需要内饰清洁',
exterior_cleaning VARCHAR(10) COMMENT '是否需要外观清洁',
vip_member VARCHAR(10) COMMENT '是否为VIP会员',
vip_number VARCHAR(50) COMMENT 'VIP卡号',
payment_method VARCHAR(50) COMMENT '支付方式',
special_requests TEXT COMMENT '特殊要求',
technician VARCHAR(50) COMMENT '指定技师',
status VARCHAR(20) DEFAULT 'pending' COMMENT '状态',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间',
INDEX idx_rid (rid),
INDEX idx_license_plate (license_plate),
INDEX idx_date (date),
INDEX idx_mobile (mobile)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
$pdo->exec($sql);
log_test_message("表创建成功");
} catch(PDOException $e) {
log_test_message("表创建失败: " . $e->getMessage(), 'error');
exit(1);
}
// 测试插入数据
try {
$sql = "INSERT INTO wps_form_submissions (
rid, form_id, form_title, creator_id, create_time, update_time,
mobile, name, license_plate, date, time_slot, car_type
) VALUES (
:rid, :form_id, :form_title, :creator_id, :create_time, :update_time,
:mobile, :name, :license_plate, :date, :time_slot, :car_type
)";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':rid', 'test_rid_' . time());
$stmt->bindValue(':form_id', 'test_form_id');
$stmt->bindValue(':form_title', '测试表单');
$stmt->bindValue(':creator_id', 'test_creator_id');
$stmt->bindValue(':create_time', date('Y-m-d H:i:s'));
$stmt->bindValue(':update_time', date('Y-m-d H:i:s'));
$stmt->bindValue(':mobile', '13800138000');
$stmt->bindValue(':name', '测试用户');
$stmt->bindValue(':license_plate', '京A12345');
$stmt->bindValue(':date', date('Y-m-d'));
$stmt->bindValue(':time_slot', '14:00-15:00');
$stmt->bindValue(':car_type', '轿车');
$stmt->execute();
$insert_id = $pdo->lastInsertId();
log_test_message("测试数据插入成功,ID: " . $insert_id);
} catch(PDOException $e) {
log_test_message("测试数据插入失败: " . $e->getMessage(), 'error');
exit(1);
}
// 测试查询数据
try {
$sql = "SELECT * FROM wps_form_submissions ORDER BY id DESC LIMIT 1";
$stmt = $pdo->query($sql);
$row = $stmt->fetch();
if ($row) {
log_test_message("测试数据查询成功");
log_test_message("查询结果: " . print_r($row, true));
} else {
log_test_message("测试数据查询失败: 没有找到数据", 'error');
}
} catch(PDOException $e) {
log_test_message("测试数据查询失败: " . $e->getMessage(), 'error');
exit(1);
}
echo "\n=== 所有测试完成 ===\n";