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.
wsh5485 6ffabd9384 fix: 修复会话启动位置以避免重复启动
将 session_start() 移到文件开头,避免在显示预约成功信息时重复启动会话
2025-12-05 18:12:41 +08:00
2025-11-19 18:49:46 +08:00

🚗 洗车店订单管理系统

一个功能完整的洗车店订单管理系统,支持VIP客户管理、预约处理、套餐管理等功能。

📋 目录

🎯 系统概述

本系统是一个专为洗车店设计的现代化订单管理平台,提供完整的客户管理、预约处理、VIP服务等功能。系统采用PHP + MySQL架构,界面简洁易用,功能完善稳定。

核心特性

  • 🏆 VIP客户管理 - 完整的VIP客户信息管理和历史预约查询功能
  • 📝 预约管理 - 完整的洗车预约生命周期管理
  • 📦 套餐管理 - 灵活的洗车服务套餐配置
  • 💾 数据持久化 - 可靠的MySQL数据库存储
  • 🔍 搜索功能 - 强大的客户搜索功能
  • 调试工具 - 完善的开发调试和监控工具

🚀 主要功能

1. 客户管理

  • 客户信息录入 - 姓名、手机号、车型、车牌号等基本信息
  • VIP客户管理 - 专门的VIP客户管理功能
  • 客户搜索 - 支持姓名、手机号模糊搜索
  • VIP客户预约记录 - 自动显示VIP客户最近一次预约信息

2. 预约管理

  • 预约创建 - 快速创建洗车预约
  • 预约状态 - 待确认、已确认、进行中、已完成、已取消等状态管理
  • 预约详情 - 完整的预约信息记录
  • VIP客户特殊处理 - 自动关联VIP客户信息和历史记录

3. 套餐管理

  • 服务套餐 - 预设洗车服务套餐
  • 价格管理 - 灵活的价格设置
  • 套餐配置 - 服务项目和时长配置

4. VIP专享功能

  • VIP预约历史查询 - 自动显示VIP客户最近一次预约详情
  • 首次到店提示 - 为首次预约的VIP客户提供特别提示
  • 客户信息自动填充 - 选择VIP客户后自动填充相关信息

🏗️ 技术架构

前端技术

  • HTML5 - 现代化的页面结构
  • CSS3 - 响应式样式设计
  • JavaScript - 动态交互和AJAX请求
  • Bootstrap - UI组件库(可选)

后端技术

  • PHP 7.4+ - 服务器端脚本语言
  • MySQL 5.7+ - 关系型数据库
  • PDO - 数据库抽象层
  • RESTful API - 标准API设计

核心组件

  • 数据库连接 (db_connect.php) - 统一的数据库连接管理
  • 配置管理 (config.php) - 系统配置参数
  • 主页面 (index.php) - 系统主入口和预约创建页面
  • VIP管理 (get_vip_customers.php, get_vip_last_booking.php) - VIP客户相关功能

💻 系统要求

服务器环境

  • PHP: 7.4 或更高版本
  • MySQL: 5.7 或更高版本
  • Web服务器: Apache 2.4+ 或 Nginx 1.18+
  • PHP扩展: PDO, PDO_MySQL, JSON

开发环境

  • 操作系统: Windows 10+, macOS 10.14+, Linux Ubuntu 18+
  • 推荐工具: XAMPP, WAMP, LAMP 或 Docker
  • 浏览器: Chrome 80+, Firefox 75+, Safari 13+

🔧 安装指南

1. 环境准备

使用XAMPP(推荐)

# 下载并安装XAMPP
# 启动Apache和MySQL服务

使用WAMPWindows用户)

# 下载并安装WAMP
# 启动WAMP服务

2. 项目部署

项目文件放置

# 将项目文件复制到Web服务器根目录
# Windows (XAMPP): C:\xampp\htdocs\carwash_order\
# Linux/macOS: /var/www/html/carwash_order/

数据库配置

-- 1. 创建数据库
CREATE DATABASE carwash_booking CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 2. 导入数据库结构
SOURCE carwash_db.sql;

-- 3. 验证表创建
SHOW TABLES;

配置文件设置

编辑 config.php

<?php
$host = 'localhost';        // 数据库主机
$username = 'root';         // 数据库用户名
$password = '';             // 数据库密码
$database = 'carwash_booking'; // 数据库名称
?>

3. 权限设置

Linux/macOS权限

# 设置目录权限
chmod -R 755 /var/www/html/carwash_order/
chown -R www-data:www-data /var/www/html/carwash_order/

Windows权限

确保IIS或Apache用户有读取项目文件的权限。

4. 访问测试

打开浏览器访问:

http://localhost/carwash_order/

📁 项目结构

carwash_order/
├── README.md                    # 项目说明文档
├── carwash_db.sql               # 数据库结构和初始数据
├── config.php                   # 系统配置文件
├── db_connect.php               # 数据库连接文件
├── index.php                    # 主页面入口
├── style.css                    # 样式文件
├── announcement.php             # 预约公告页面
├── bookings.php                 # 预约管理页面
├── packages.php                 # 套餐管理页面
├── vip.php                      # VIP客户管理页面
├── process_booking.php          # 预约处理API
├── get_bookings.php             # 获取预约列表API
├── get_vip_customers.php        # 获取VIP客户列表API
├── get_vip_customer.php         # 获取单个VIP客户信息API
├── get_vip_last_booking.php     # 获取VIP客户最近预约记录API
├── add_payment_status.php       # 支付状态添加API
├── update_booking.php           # 预约更新API
│
├── test/                        # 测试文件目录
│   ├── SOLUTIONS.md             # 解决方案文档
│   ├── VIP_Function_Fix_Report.md   # VIP功能修复报告
│   ├── VIP_Search_Fix_Report.md     # VIP搜索修复报告
│   ├── debug_vip.php            # VIP调试工具
│   ├── debug_vip_db.php         # VIP数据库调试工具
│   ├── test.php                 # 基础测试文件
│   ├── test_24hour_booking.php  # 24小时预约测试
│   ├── test_db_connection.php   # 数据库连接测试
│   ├── test_filters.php         # 过滤器测试
│   ├── test_update_booking.php  # 预约更新测试
│   ├── test_vip.php             # VIP功能测试
│   ├── test_vip_ajax.html       # VIP AJAX测试
│   ├── test_vip_booking_history.php  # VIP预约历史测试
│   ├── test_vip_debug_panel.html     # VIP调试面板
│   ├── test_vip_entries.php     # VIP条目测试
│   ├── test_vip_fix.html        # VIP修复测试
│   ├── test_vip_loading.php     # VIP加载测试
│   ├── test_vip_search.html     # VIP搜索测试
│   ├── test_vip_search_simple.html  # VIP简单搜索测试
│   ├── verify_vip_data.php      # VIP数据验证
│   ├── vip_debug_page.html      # VIP调试页面
│   ├── vip_functionality_test.html  # VIP功能测试
│   └── vip_search_debug.html    # VIP搜索调试页面

🗄️ 数据库结构

主要数据表

1. vip_customersVIP客户表)

CREATE TABLE vip_customers (
    id INT AUTO_INCREMENT PRIMARY KEY,
    customer_name VARCHAR(100) NOT NULL COMMENT '客户姓名',
    phone VARCHAR(20) NOT NULL COMMENT '联系电话',
    car_model VARCHAR(50) COMMENT '车型',
    car_number VARCHAR(20) COMMENT '车牌号',
    email VARCHAR(100) COMMENT '邮箱地址',
    birthday DATE COMMENT '生日',
    notes TEXT COMMENT '备注信息',
    is_active BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP NULL,
    -- 复合唯一索引:确保手机号和车牌号组合唯一
    UNIQUE INDEX idx_phone_car_number (phone, car_number)
);

2. bookings(预约表)

CREATE TABLE bookings (
    id INT AUTO_INCREMENT PRIMARY KEY,
    customer_name VARCHAR(100) NOT NULL,
    phone VARCHAR(20) NOT NULL,
    car_model VARCHAR(50) NOT NULL,
    car_number VARCHAR(20) NOT NULL,
    package_id INT,
    custom_services TEXT COMMENT '自定义服务内容',
    start_time DATETIME NOT NULL,
    end_time DATETIME NOT NULL,
    duration INT NOT NULL COMMENT '实际服务时长(分钟)',
    total_price DECIMAL(10,2) NOT NULL,
    notes TEXT,
    status ENUM('待确认', '已确认', '进行中', '已完成', '已取消') DEFAULT '待确认',
    member_type ENUM('普通客户', 'VIP会员') DEFAULT '普通客户' COMMENT '会员类型',
    source ENUM('抖音', '微信', '快手', '朋友介绍', '其他') DEFAULT '其他' COMMENT '客户来源',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP NULL,
    FOREIGN KEY (package_id) REFERENCES packages(id) ON DELETE SET NULL
);

3. packages(套餐表)

CREATE TABLE packages (
    id INT AUTO_INCREMENT PRIMARY KEY,
    package_name VARCHAR(100) NOT NULL,
    description TEXT,
    base_duration INT NOT NULL COMMENT '基础服务时长(分钟)',
    price DECIMAL(10,2) NOT NULL,
    services TEXT NOT NULL COMMENT '包含的服务项目(用逗号分隔)',
    is_active BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP NULL
);

🔌 API接口

VIP客户相关接口

1. 获取VIP客户列表

GET /get_vip_customers.php

参数: 无 返回: JSON格式的VIP客户列表

响应示例:

[
  {
    "id": 1,
    "customer_name": "张总",
    "phone": "13900139001",
    "car_model": "奔驰S500",
    "car_number": "京V88888",
    "email": "zhang@example.com",
    "birthday": "1980-05-15",
    "is_active": 1
  }
]

2. 获取单个VIP客户信息

GET /get_vip_customer.php?id=1

参数:

  • id: VIP客户ID

返回: JSON格式的单个VIP客户信息

3. 获取VIP客户最近预约记录

GET /get_vip_last_booking.php?vip_id=1

参数:

  • vip_id: VIP客户ID

返回: JSON格式的最近预约信息或首次到店标识

响应示例 (有预约记录):

{
  "has_booking": true,
  "appointment_date": "2024-12-21",
  "appointment_time": "14:00",
  "package_name": "VIP套餐",
  "duration": 180
}

响应示例 (首次到店):

{
  "has_booking": false
}

预约管理相关接口

4. 获取预约列表

GET /get_bookings.php

参数: 无 返回: JSON格式的预约列表

5. 处理预约创建

POST /process_booking.php

参数:

  • 客户信息(姓名、手机号、车型等)
  • 预约日期和时间
  • 选择的套餐

返回: JSON格式的预约处理结果

6. 更新预约信息

POST /update_booking.php

参数:

  • id: 预约ID
  • 其他需要更新的预约信息

返回: JSON格式的预约更新结果

7. 添加支付状态

POST /add_payment_status.php

参数:

  • booking_id: 预约ID
  • status: 支付状态
  • amount: 支付金额

返回: JSON格式的支付状态添加结果

使用指南

基础操作流程

1. VIP客户预约

1. 打开系统主页 (index.php)
2. 选择客户类型为"VIP客户"
3. 在VIP搜索框中输入关键词搜索客户
4. 选择目标VIP客户
5. 系统自动显示客户信息和最近一次预约记录(如有)
6. 选择服务套餐和预约时间
7. 提交预约

2. 普通客户预约

1. 打开系统主页 (index.php)
2. 选择客户类型为"普通客户"
3. 填写客户基本信息
4. 选择服务套餐和预约时间
5. 提交预约

VIP客户特殊功能

VIP客户最近预约显示

当选择VIP客户后,系统会自动查询并显示该客户的最近一次预约信息,包括:

  • 预约日期
  • 预约时间
  • 选择的套餐
  • 服务时长

如果是首次预约,则显示"该VIP首次到店"的提示信息。

🛠️ 调试工具

1. VIP预约历史测试

  • 文件: test/test_vip_booking_history.php
  • 功能: 测试VIP客户预约历史查询功能
  • 使用: 浏览器访问或命令行执行

2. VIP功能测试

  • 文件: test/test_vip.php
  • 功能: 测试VIP客户管理相关功能
  • 使用: 浏览器访问

3. 数据库连接测试

  • 文件: test/test_db_connection.php
  • 功能: 测试数据库连接是否正常
  • 使用: 命令行执行

4. 其他测试工具

  • VIP调试工具: test/debug_vip.php
  • VIP搜索调试: test/vip_search_debug.html
  • 数据验证工具: test/verify_vip_data.php
  • 功能测试页面: test/vip_functionality_test.html

常见问题

安装问题

Q: PHP版本不兼容怎么办?

A: 确保使用PHP 7.4或更高版本,检查php.ini配置是否启用PDO扩展。

Q: 数据库连接失败?

A: 检查config.php中的数据库配置,确保MySQL服务正在运行,用户权限正确。

功能问题

Q: VIP客户搜索不到?

A:

  1. 检查数据库中是否有VIP客户数据
  2. 查看浏览器控制台是否有JavaScript错误
  3. 使用调试工具验证数据加载

Q: VIP客户预约记录不显示?

A:

  1. 确认该VIP客户已有预约记录
  2. 检查get_vip_last_booking.php是否正常工作
  3. 查看数据库中bookings表与vip_customers表的phone字段是否匹配

Q: 页面显示错误"SQLSTATE[42S22]: Column not found"

A: 确保数据库结构与代码中的表结构一致,特别是bookings表使用start_time字段而不是appointment_date字段。

📝 版本历史

v3.0.0 (最新版)

  • 新增: VIP客户最近预约记录显示功能
  • 🐛 修复: 数据库查询错误,优化表结构匹配
  • 🔧 改进: VIP客户与预约记录的关联逻辑
  • 增强: 首次到店提示功能

v2.1.0 (2024-01-15)

  • 新增: VIP客户搜索功能优化
  • 🐛 修复: VIP客户数据加载时序问题
  • 🔧 改进: 异步处理机制优化

v2.0.0 (2024-01-10)

  • 新增: VIP客户管理系统
  • 新增: 订单状态管理
  • 新增: 套餐配置功能

v1.0.0 (2024-01-01)

  • 🎉 初始版本: 基础订单管理功能
  • 新增: 客户信息管理
  • 新增: 订单创建和处理

📄 许可证

本项目采用 MIT License 开源协议。

🙏 致谢

感谢所有为这个项目贡献代码、反馈问题和提出建议的开发者们!


洗车店订单管理系统 - 让洗车店管理更简单、更高效! 🚗

S
Description
No description provided
Readme 380 KiB
2025-12-12 01:08:15 +08:00
Languages
PHP 70.1%
HTML 18.4%
CSS 8.4%
Hack 2.6%
JavaScript 0.5%