prepare("SELECT * FROM wps_form_submissions WHERE id = ?"); $stmt->execute([$submission_id]); $submission = $stmt->fetch(); if (!$submission) { throw new Exception("表单提交数据不存在"); } // 获取套餐信息 $stmt = $pdo->prepare("SELECT * FROM packages WHERE id = ?"); $stmt->execute([$selected_package]); $package = $stmt->fetch(); if (!$package) { throw new Exception("选择的套餐不存在"); } // 计算开始和结束时间 $start_time = $selected_date . ' ' . $selected_time; $end_time = date('Y-m-d H:i:s', strtotime($start_time) + $duration * 60); // 将数据插入到正式预约表 // 对于0元订单,自动标记为已付款 $payment_status = ($total_price <= 0) ? '已付款' : '未付款'; $stmt = $pdo->prepare("INSERT INTO bookings ( customer_name, phone, car_model, car_number, package_id, custom_services, start_time, end_time, duration, total_price, notes, status, member_type, source, payment_status ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )"); $stmt->execute([ $submission['name'], $submission['mobile'], $submission['car_type'], $submission['license_plate'], $selected_package, $custom_notes, $start_time, $end_time, $duration, $total_price, $submission['remarks'], '已确认', // 默认设置为已确认 '普通客户', // 默认普通客户,可根据需要调整 '其他', // 默认来源,可根据需要调整 $payment_status // 根据总价自动设置付款状态 ]); $booking_id = $pdo->lastInsertId(); // 更新WPS表单提交状态为已处理 $stmt = $pdo->prepare("UPDATE wps_form_submissions SET status = 'processed' WHERE id = ?"); $stmt->execute([$submission_id]); // 生成预约成功信息 $booking_success_msg = "预约成功!\n\n客户:{$submission['name']}\n手机号:{$submission['mobile']}\n车牌号:{$submission['license_plate']}\n车型:{$submission['car_type']}\n\n预约时间:{$start_time}\n服务项目:{$package['package_name']}\n服务时长:{$duration}分钟\n总价:{$total_price}元\n\n感谢您的预约!"; $success_message = "预约转换成功!预约ID:{$booking_id}"; // 存储预约成功信息到会话,以便在页面上显示 $_SESSION['booking_success_msg'] = $booking_success_msg; } catch (Exception $e) { $error_message = '预约转换失败:' . $e->getMessage(); } } // 获取待处理的WPS表单提交 try { $stmt = $pdo->prepare("SELECT * FROM wps_form_submissions WHERE status = 'pending' ORDER BY create_time DESC"); $stmt->execute(); $pending_submissions = $stmt->fetchAll(); } catch (Exception $e) { $error_message = '获取待处理表单失败:' . $e->getMessage(); $pending_submissions = []; } // 获取所有套餐 try { $stmt = $pdo->prepare("SELECT * FROM packages WHERE is_active = true"); $stmt->execute(); $packages = $stmt->fetchAll(); } catch (Exception $e) { $error_message = '获取套餐信息失败:' . $e->getMessage(); $packages = []; } // 获取当前日期及未来7天的日期 $current_date = date('Y-m-d'); $available_dates = []; for ($i = 0; $i < 7; $i++) { $available_dates[] = date('Y-m-d', strtotime($current_date . " +$i days")); } // 获取所有预约数据,用于显示空闲时间段 $booking_schedule = []; $bookings_by_date = []; try { // 获取所有未来的预约(排除已取消的订单) $stmt = $pdo->prepare("SELECT * FROM bookings WHERE end_time > NOW() AND status != '已取消' ORDER BY start_time ASC"); $stmt->execute(); $all_bookings = $stmt->fetchAll(); // 处理预约数据 foreach ($all_bookings as $booking) { $start_date = date('Y-m-d', strtotime($booking['start_time'])); $end_date = date('Y-m-d', strtotime($booking['end_time'])); $start_time = date('H:i', strtotime($booking['start_time'])); $end_time = date('H:i', strtotime($booking['end_time'])); // 处理跨天预约 $is_cross_day = $start_date != $end_date; // 添加到预约日程 if (!isset($booking_schedule[$start_date])) { $booking_schedule[$start_date] = []; } if (!isset($bookings_by_date[$start_date])) { $bookings_by_date[$start_date] = []; } // 主预约记录 $bookings_by_date[$start_date][] = [ 'booking_id' => $booking['id'], 'customer_name' => $booking['customer_name'], 'car_model' => $booking['car_model'], 'car_number' => $booking['car_number'], 'status' => $booking['status'], 'start_time' => $start_time, 'end_time' => $end_time, 'is_cross_day' => $is_cross_day ]; // 如果是跨天预约,添加第二天的记录 if ($is_cross_day) { if (!isset($bookings_by_date[$end_date])) { $bookings_by_date[$end_date] = []; } $bookings_by_date[$end_date][] = [ 'booking_id' => $booking['id'], 'customer_name' => $booking['customer_name'], 'car_model' => $booking['car_model'], 'car_number' => $booking['car_number'], 'status' => $booking['status'], 'start_time' => $start_time, 'end_time' => $end_time, 'is_cross_day' => $is_cross_day ]; } } } catch (Exception $e) { $error_message = '获取预约数据失败:' . $e->getMessage(); } ?>