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
carwash_order/get_vip_last_booking.php
2025-11-19 18:49:46 +08:00

83 lines
2.3 KiB
PHP

<?php
// 获取VIP客户最近的预约记录
header('Content-Type: application/json');
// 连接数据库
require 'db_connect.php';
// 检查是否提供了VIP ID
if (!isset($_GET['vip_id']) || empty($_GET['vip_id'])) {
echo json_encode(['error' => '未提供VIP客户ID']);
exit;
}
$vipId = intval($_GET['vip_id']);
// 尝试从数据库获取数据
$lastBooking = null;
try {
// 首先获取VIP客户的电话号码
$getVipPhone = "SELECT phone FROM vip_customers WHERE id = :vipId";
$stmtPhone = $pdo->prepare($getVipPhone);
$stmtPhone->bindParam(':vipId', $vipId, PDO::PARAM_INT);
$stmtPhone->execute();
$vipInfo = $stmtPhone->fetch(PDO::FETCH_ASSOC);
if (!$vipInfo || !$vipInfo['phone']) {
echo json_encode(['has_booking' => false]);
exit;
}
$vipPhone = $vipInfo['phone'];
// 查询该VIP客户的最近一次预约
$sql = "SELECT
b.id,
b.start_time,
b.duration,
p.package_name
FROM
bookings b
LEFT JOIN
packages p ON b.package_id = p.id
WHERE
b.phone = :vipPhone
AND b.status != '已取消'
ORDER BY
b.start_time DESC
LIMIT 1";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':vipPhone', $vipPhone, PDO::PARAM_STR);
$stmt->execute();
$lastBooking = $stmt->fetch(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
// 数据库查询失败,返回错误但继续执行
echo json_encode(['error' => '数据库查询失败: ' . $e->getMessage()]);
exit;
}
// 如果没有找到记录,返回空结果
if (!$lastBooking) {
echo json_encode(['has_booking' => false]);
exit;
}
// 格式化返回数据
// 从start_time中提取日期和时间
$startTime = new DateTime($lastBooking['start_time']);
$response = [
'has_booking' => true,
'appointment_date' => $startTime->format('Y-m-d'),
'appointment_time' => $startTime->format('H:i'),
'package_name' => $lastBooking['package_name'] ? $lastBooking['package_name'] : '自定义服务',
'duration' => $lastBooking['duration']
];
echo json_encode($response);
// 关闭数据库连接
$pdo = null;
// 系统现在只返回实际数据库中的预约记录数据