5bbb0877d5
实现WPS表单Webhook接收端点,包括数据解析、验证和存储功能 添加数据库表创建脚本和测试用例 包含Webhook测试页面和日志功能
125 lines
4.9 KiB
PHP
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";
|