项目概述
这是一个完整的预约管理系统,适用于美容院、理发店、诊所、健身房等需要预约的场景。
核心功能:
- 用户端:浏览服务项目、选择时间段、在线预约、查看预约记录
- 商家端:管理预约、设置服务项目和时间段、查看统计数据
- 支付:微信支付(支持预付款和到店付)
- 通知:预约成功/取消的微信模板消息推送
技术架构
前端:UniApp(一套代码编译微信小程序)
后端:Node.js + Express
数据库:MySQL
部署:微信云托管 / 自有服务器数据库设计
核心表结构
-- 服务项目表
CREATE TABLE services (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL, -- 服务名称
description TEXT, -- 服务描述
price DECIMAL(10,2) NOT NULL, -- 价格
duration INT NOT NULL, -- 服务时长(分钟)
image_url VARCHAR(500),
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 时间段配置表
CREATE TABLE time_slots (
id INT PRIMARY KEY AUTO_INCREMENT,
date DATE NOT NULL, -- 日期
start_time TIME NOT NULL, -- 开始时间
end_time TIME NOT NULL, -- 结束时间
max_capacity INT DEFAULT 1, -- 最大预约数
current_count INT DEFAULT 0, -- 当前预约数
is_available BOOLEAN DEFAULT TRUE
);
-- 预约表
CREATE TABLE appointments (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
service_id INT NOT NULL,
time_slot_id INT NOT NULL,
status ENUM('pending','confirmed','completed','cancelled') DEFAULT 'pending',
total_price DECIMAL(10,2),
payment_status ENUM('unpaid','paid','refunded') DEFAULT 'unpaid',
remark TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (service_id) REFERENCES services(id),
FOREIGN KEY (time_slot_id) REFERENCES time_slots(id)
);关键提示词
提示词 1:生成预约接口
你是一位 Node.js 后端工程师。
需求:创建预约接口 POST /api/appointments
业务逻辑:
1. 验证时间段是否还有余量(current_count < max_capacity)
2. 创建预约记录,状态为 pending
3. 更新时间段的 current_count +1
4. 以上操作需要在事务中执行,避免并发问题
5. 返回预约详情
技术栈:Express + Prisma + MySQL
请包含完整的错误处理和事务处理。提示词 2:生成时间段选择组件
用 UniApp 写一个时间段选择组件:
- 展示未来 7 天的日期选择
- 选中日期后,展示当天可用的时间段
- 时间段显示剩余名额,满员的显示灰色不可点击
- 选中时间段后高亮显示
- 组件通过 emit 向父组件传递选中的时间段 ID部署说明
微信云托管部署(推荐新手)
- 在微信开发者工具开通云托管
- 创建服务,选择 Node.js 环境
- 上传代码,配置环境变量
- 绑定自定义域名
自有服务器部署
参考《零基础用 AI 把 Node.js 项目部署到服务器》教程。
预计工作量
| 模块 | 提示词数 | 预计时间 |
|---|---|---|
| 数据库设计 | 3 | 0.5天 |
| 后端接口 | 12 | 2天 |
| 用户端小程序 | 15 | 2.5天 |
| 商家端管理 | 8 | 1.5天 |
| 支付集成 | 5 | 0.5天 |
| 合计 | 38 | 7天 |