Files
zyt/server/test_appointment_api.php
2026-03-04 15:32:30 +08:00

166 lines
5.7 KiB
PHP

<?php
/**
* 预约API测试脚本
* 使用方法: php test_appointment_api.php
*/
// 测试配置
$baseUrl = 'http://localhost/adminapi'; // 修改为你的实际地址
$token = 'your_admin_token_here'; // 修改为实际的管理员token
// 测试数据
$doctorId = 1;
$patientId = 1;
$testDate = date('Y-m-d', strtotime('+1 day'));
echo "=== 医生预约API测试 ===\n\n";
// 测试1: 获取可用时间段
echo "测试1: 获取可用时间段\n";
echo "URL: {$baseUrl}/doctor.appointment/availableSlots\n";
echo "参数: doctor_id={$doctorId}, appointment_date={$testDate}, period=morning\n";
$url = "{$baseUrl}/doctor.appointment/availableSlots?doctor_id={$doctorId}&appointment_date={$testDate}&period=morning";
$response = makeRequest($url, 'GET', null, $token);
echo "响应: " . json_encode($response, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT) . "\n\n";
if (isset($response['data']['slots']) && count($response['data']['slots']) > 0) {
echo "✓ 获取时间段成功\n";
$firstSlot = $response['data']['slots'][0];
$appointmentTime = $firstSlot['time'];
echo " 可用时间段数量: " . count($response['data']['slots']) . "\n";
echo " 第一个时间段: {$appointmentTime}\n\n";
// 测试2: 创建预约
echo "测试2: 创建预约\n";
$createData = [
'patient_id' => $patientId,
'doctor_id' => $doctorId,
'appointment_date' => $testDate,
'period' => 'morning',
'appointment_time' => $appointmentTime,
'appointment_type' => 'video',
'remark' => '测试预约'
];
echo "URL: {$baseUrl}/doctor.appointment/create\n";
echo "数据: " . json_encode($createData, JSON_UNESCAPED_UNICODE) . "\n";
$url = "{$baseUrl}/doctor.appointment/create";
$response = makeRequest($url, 'POST', $createData, $token);
echo "响应: " . json_encode($response, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT) . "\n\n";
if (isset($response['data']['id'])) {
$appointmentId = $response['data']['id'];
echo "✓ 创建预约成功, ID: {$appointmentId}\n\n";
// 测试3: 获取预约详情
echo "测试3: 获取预约详情\n";
$url = "{$baseUrl}/doctor.appointment/detail?id={$appointmentId}";
$response = makeRequest($url, 'GET', null, $token);
echo "响应: " . json_encode($response, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT) . "\n\n";
if (isset($response['data']['id'])) {
echo "✓ 获取详情成功\n\n";
} else {
echo "✗ 获取详情失败\n\n";
}
// 测试4: 取消预约
echo "测试4: 取消预约\n";
$url = "{$baseUrl}/doctor.appointment/cancel";
$response = makeRequest($url, 'POST', ['id' => $appointmentId], $token);
echo "响应: " . json_encode($response, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT) . "\n\n";
if ($response['code'] == 1) {
echo "✓ 取消预约成功\n\n";
} else {
echo "✗ 取消预约失败\n\n";
}
} else {
echo "✗ 创建预约失败: " . ($response['msg'] ?? '未知错误') . "\n\n";
}
} else {
echo "✗ 获取时间段失败或无可用时间段\n";
echo " 请确保:\n";
echo " 1. 数据库表已创建\n";
echo " 2. 医生ID={$doctorId}存在\n";
echo " 3. 该医生在{$testDate}有排班\n\n";
}
// 测试5: 获取医生可用号源数
echo "测试5: 获取医生可用号源数\n";
$url = "{$baseUrl}/doctor.appointment/doctorAvailability?doctor_id={$doctorId}&date={$testDate}";
$response = makeRequest($url, 'GET', null, $token);
echo "响应: " . json_encode($response, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT) . "\n\n";
if (isset($response['data']['available_count'])) {
echo "✓ 获取可用号源数成功: " . $response['data']['available_count'] . "\n\n";
} else {
echo "✗ 获取可用号源数失败\n\n";
}
// 测试6: 获取预约列表
echo "测试6: 获取预约列表\n";
$url = "{$baseUrl}/doctor.appointment/lists?page_no=1&page_size=10";
$response = makeRequest($url, 'GET', null, $token);
echo "响应: " . json_encode($response, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT) . "\n\n";
if (isset($response['data']['lists'])) {
echo "✓ 获取列表成功, 记录数: " . count($response['data']['lists']) . "\n\n";
} else {
echo "✗ 获取列表失败\n\n";
}
echo "=== 测试完成 ===\n";
/**
* 发送HTTP请求
*/
function makeRequest($url, $method = 'GET', $data = null, $token = null)
{
$ch = curl_init();
if ($method == 'GET' && $data) {
$url .= '?' . http_build_query($data);
}
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$headers = ['Content-Type: application/json'];
if ($token) {
$headers[] = 'token: ' . $token;
}
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
if ($method == 'POST') {
curl_setopt($ch, CURLOPT_POST, true);
if ($data) {
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
}
}
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch)) {
echo "CURL错误: " . curl_error($ch) . "\n";
curl_close($ch);
return ['code' => 0, 'msg' => 'CURL错误'];
}
curl_close($ch);
$result = json_decode($response, true);
if (!$result) {
echo "响应解析失败, HTTP状态码: {$httpCode}\n";
echo "原始响应: {$response}\n";
return ['code' => 0, 'msg' => '响应解析失败'];
}
return $result;
}