初始化参股
This commit is contained in:
394
前端/docs/backend-plan.md
Normal file
394
前端/docs/backend-plan.md
Normal file
@@ -0,0 +1,394 @@
|
||||
# 后端开发规划
|
||||
|
||||
## 一、技术选型
|
||||
|
||||
| 项目 | 技术方案 | 说明 |
|
||||
|------|----------|------|
|
||||
| 框架 | Node.js + Express / Koa | 或 Python FastAPI / Java Spring Boot |
|
||||
| 数据库 | MySQL / PostgreSQL | 关系型数据库存储业务数据 |
|
||||
| 缓存 | Redis | 缓存热点数据、会话管理 |
|
||||
| 文件存储 | 阿里云OSS / 腾讯云COS | 图片、文件存储 |
|
||||
| 认证 | JWT + 微信登录 | 用户身份认证 |
|
||||
|
||||
## 二、数据库设计
|
||||
|
||||
### 2.1 用户表 (users)
|
||||
|
||||
```sql
|
||||
CREATE TABLE users (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
open_id VARCHAR(64) UNIQUE NOT NULL COMMENT '微信openid',
|
||||
union_id VARCHAR(64) COMMENT '微信unionid',
|
||||
nick_name VARCHAR(64) COMMENT '昵称',
|
||||
avatar VARCHAR(255) COMMENT '头像URL',
|
||||
phone VARCHAR(20) COMMENT '手机号',
|
||||
gender TINYINT DEFAULT 0 COMMENT '性别 0未知 1男 2女',
|
||||
status TINYINT DEFAULT 1 COMMENT '状态 0禁用 1正常',
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
INDEX idx_open_id (open_id),
|
||||
INDEX idx_phone (phone)
|
||||
);
|
||||
```
|
||||
|
||||
### 2.2 案例分类表 (categories)
|
||||
|
||||
```sql
|
||||
CREATE TABLE categories (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
name VARCHAR(32) NOT NULL COMMENT '分类名称',
|
||||
code VARCHAR(32) UNIQUE NOT NULL COMMENT '分类编码',
|
||||
icon VARCHAR(255) COMMENT '图标URL',
|
||||
sort_order INT DEFAULT 0 COMMENT '排序',
|
||||
status TINYINT DEFAULT 1 COMMENT '状态 0禁用 1正常',
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 初始数据
|
||||
INSERT INTO categories (name, code, sort_order) VALUES
|
||||
('皮沙发', 'leather', 1),
|
||||
('布艺沙发', 'fabric', 2),
|
||||
('功能沙发', 'functional', 3),
|
||||
('古典沙发', 'antique', 4),
|
||||
('办公沙发', 'office', 5);
|
||||
```
|
||||
|
||||
### 2.3 案例表 (cases)
|
||||
|
||||
```sql
|
||||
CREATE TABLE cases (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
title VARCHAR(128) NOT NULL COMMENT '案例标题',
|
||||
category_id INT NOT NULL COMMENT '分类ID',
|
||||
cover_image VARCHAR(255) NOT NULL COMMENT '封面图',
|
||||
before_images JSON COMMENT '翻新前图片JSON数组',
|
||||
after_images JSON COMMENT '翻新后图片JSON数组',
|
||||
description TEXT COMMENT '案例描述',
|
||||
material VARCHAR(128) COMMENT '使用材质',
|
||||
duration VARCHAR(32) COMMENT '工期',
|
||||
price VARCHAR(32) COMMENT '参考价格',
|
||||
views INT DEFAULT 0 COMMENT '浏览量',
|
||||
likes INT DEFAULT 0 COMMENT '点赞数',
|
||||
is_hot TINYINT DEFAULT 0 COMMENT '是否热门 0否 1是',
|
||||
is_recommend TINYINT DEFAULT 0 COMMENT '是否推荐 0否 1是',
|
||||
status TINYINT DEFAULT 1 COMMENT '状态 0下架 1上架',
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
INDEX idx_category (category_id),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_hot (is_hot),
|
||||
INDEX idx_created (created_at)
|
||||
);
|
||||
```
|
||||
|
||||
### 2.4 预约表 (bookings)
|
||||
|
||||
```sql
|
||||
CREATE TABLE bookings (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
booking_no VARCHAR(32) UNIQUE NOT NULL COMMENT '预约编号',
|
||||
user_id BIGINT COMMENT '用户ID',
|
||||
user_name VARCHAR(32) NOT NULL COMMENT '客户姓名',
|
||||
phone VARCHAR(20) NOT NULL COMMENT '联系电话',
|
||||
address VARCHAR(255) NOT NULL COMMENT '地址',
|
||||
sofa_type VARCHAR(32) COMMENT '沙发类型',
|
||||
problem TEXT COMMENT '问题描述',
|
||||
images JSON COMMENT '上传图片JSON数组',
|
||||
status TINYINT DEFAULT 0 COMMENT '状态 0待确认 1已确认 2已上门 3已完成 4已取消',
|
||||
remark TEXT COMMENT '备注',
|
||||
assigned_to BIGINT COMMENT '指派给(员工ID)',
|
||||
visited_at DATETIME COMMENT '上门时间',
|
||||
completed_at DATETIME COMMENT '完成时间',
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
INDEX idx_user (user_id),
|
||||
INDEX idx_phone (phone),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_created (created_at)
|
||||
);
|
||||
```
|
||||
|
||||
### 2.5 收藏表 (favorites)
|
||||
|
||||
```sql
|
||||
CREATE TABLE favorites (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
user_id BIGINT NOT NULL COMMENT '用户ID',
|
||||
case_id BIGINT NOT NULL COMMENT '案例ID',
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_user_case (user_id, case_id),
|
||||
INDEX idx_user (user_id)
|
||||
);
|
||||
```
|
||||
|
||||
### 2.6 轮播图表 (banners)
|
||||
|
||||
```sql
|
||||
CREATE TABLE banners (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
title VARCHAR(64) COMMENT '标题',
|
||||
image VARCHAR(255) NOT NULL COMMENT '图片URL',
|
||||
link VARCHAR(255) COMMENT '跳转链接',
|
||||
sort_order INT DEFAULT 0 COMMENT '排序',
|
||||
status TINYINT DEFAULT 1 COMMENT '状态 0禁用 1正常',
|
||||
start_time DATETIME COMMENT '开始时间',
|
||||
end_time DATETIME COMMENT '结束时间',
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
```
|
||||
|
||||
### 2.7 系统配置表 (settings)
|
||||
|
||||
```sql
|
||||
CREATE TABLE settings (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
setting_key VARCHAR(64) UNIQUE NOT NULL COMMENT '配置键',
|
||||
setting_value TEXT COMMENT '配置值',
|
||||
description VARCHAR(255) COMMENT '说明',
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 初始配置
|
||||
INSERT INTO settings (setting_key, setting_value, description) VALUES
|
||||
('company_name', '优艺家沙发翻新', '公司名称'),
|
||||
('company_slogan', '让旧沙发焕发新生', '公司标语'),
|
||||
('company_description', '优艺家是一家专业从事沙发翻新、维修、改色的服务公司...', '公司介绍'),
|
||||
('contact_phone', '400-888-8888', '客服电话'),
|
||||
('contact_wechat', 'youyijia2026', '微信号'),
|
||||
('company_address', '上海市浦东新区张江高科技园区', '公司地址'),
|
||||
('work_time', '周一至周日 9:00-18:00', '营业时间');
|
||||
```
|
||||
|
||||
## 三、API接口设计
|
||||
|
||||
### 3.1 公共接口
|
||||
|
||||
| 接口 | 方法 | 说明 | 认证 |
|
||||
|------|------|------|------|
|
||||
| POST /api/auth/wxlogin | POST | 微信登录 | 否 |
|
||||
| GET /api/banners | GET | 获取轮播图 | 否 |
|
||||
| GET /api/categories | GET | 获取分类列表 | 否 |
|
||||
| GET /api/company/info | GET | 获取公司信息 | 否 |
|
||||
| GET /api/service/process | GET | 获取服务流程 | 否 |
|
||||
|
||||
### 3.2 案例接口
|
||||
|
||||
| 接口 | 方法 | 说明 | 认证 |
|
||||
|------|------|------|------|
|
||||
| GET /api/cases | GET | 获取案例列表 | 否 |
|
||||
| GET /api/cases/hot | GET | 获取热门案例 | 否 |
|
||||
| GET /api/cases/:id | GET | 获取案例详情 | 否 |
|
||||
| POST /api/cases/:id/view | POST | 增加浏览量 | 否 |
|
||||
| POST /api/cases/:id/like | POST | 点赞 | 是 |
|
||||
|
||||
### 3.3 用户接口
|
||||
|
||||
| 接口 | 方法 | 说明 | 认证 |
|
||||
|------|------|------|------|
|
||||
| GET /api/user/info | GET | 获取用户信息 | 是 |
|
||||
| PUT /api/user/info | PUT | 更新用户信息 | 是 |
|
||||
| GET /api/user/favorites | GET | 获取收藏列表 | 是 |
|
||||
| POST /api/user/favorites | POST | 添加收藏 | 是 |
|
||||
| DELETE /api/user/favorites/:caseId | DELETE | 取消收藏 | 是 |
|
||||
|
||||
### 3.4 预约接口
|
||||
|
||||
| 接口 | 方法 | 说明 | 认证 |
|
||||
|------|------|------|------|
|
||||
| POST /api/booking | POST | 提交预约 | 否 |
|
||||
| GET /api/user/bookings | GET | 获取我的预约 | 是 |
|
||||
| GET /api/user/bookings/:id | GET | 获取预约详情 | 是 |
|
||||
| PUT /api/user/bookings/:id/cancel | PUT | 取消预约 | 是 |
|
||||
|
||||
### 3.5 文件接口
|
||||
|
||||
| 接口 | 方法 | 说明 | 认证 |
|
||||
|------|------|------|------|
|
||||
| POST /api/upload/image | POST | 上传图片 | 是 |
|
||||
|
||||
## 四、接口详细定义
|
||||
|
||||
### 4.1 微信登录
|
||||
|
||||
```
|
||||
POST /api/auth/wxlogin
|
||||
|
||||
Request:
|
||||
{
|
||||
"code": "微信登录code",
|
||||
"userInfo": {
|
||||
"nickName": "昵称",
|
||||
"avatarUrl": "头像"
|
||||
}
|
||||
}
|
||||
|
||||
Response:
|
||||
{
|
||||
"code": 0,
|
||||
"message": "success",
|
||||
"data": {
|
||||
"token": "jwt_token_xxx",
|
||||
"userInfo": {
|
||||
"id": "1",
|
||||
"nickName": "昵称",
|
||||
"avatar": "头像URL",
|
||||
"phone": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 4.2 获取案例列表
|
||||
|
||||
```
|
||||
GET /api/cases?category=leather&page=1&pageSize=10&keyword=
|
||||
|
||||
Request Params:
|
||||
- category: 分类code,可选
|
||||
- page: 页码,默认1
|
||||
- pageSize: 每页数量,默认10
|
||||
- keyword: 搜索关键词,可选
|
||||
|
||||
Response:
|
||||
{
|
||||
"code": 0,
|
||||
"message": "success",
|
||||
"data": {
|
||||
"list": [
|
||||
{
|
||||
"id": "1",
|
||||
"title": "欧式真皮沙发翻新",
|
||||
"category": "leather",
|
||||
"categoryName": "皮沙发",
|
||||
"coverImage": "https://xxx/cover.jpg",
|
||||
"material": "进口头层牛皮",
|
||||
"duration": "7天",
|
||||
"price": "¥3800",
|
||||
"views": 1256,
|
||||
"likes": 89,
|
||||
"createTime": "2026-01-15"
|
||||
}
|
||||
],
|
||||
"total": 100,
|
||||
"page": 1,
|
||||
"pageSize": 10
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 4.3 获取案例详情
|
||||
|
||||
```
|
||||
GET /api/cases/:id
|
||||
|
||||
Response:
|
||||
{
|
||||
"code": 0,
|
||||
"message": "success",
|
||||
"data": {
|
||||
"id": "1",
|
||||
"title": "欧式真皮沙发翻新",
|
||||
"category": "leather",
|
||||
"categoryName": "皮沙发",
|
||||
"beforeImages": ["https://xxx/before1.jpg"],
|
||||
"afterImages": ["https://xxx/after1.jpg"],
|
||||
"description": "案例描述...",
|
||||
"material": "进口头层牛皮",
|
||||
"duration": "7天",
|
||||
"price": "¥3800",
|
||||
"views": 1256,
|
||||
"likes": 89,
|
||||
"createTime": "2026-01-15",
|
||||
"isFavorite": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 4.4 提交预约
|
||||
|
||||
```
|
||||
POST /api/booking
|
||||
|
||||
Request:
|
||||
{
|
||||
"userName": "张三",
|
||||
"phone": "13800138000",
|
||||
"address": "上海市浦东新区xxx",
|
||||
"sofaType": "leather",
|
||||
"problem": "皮面开裂、褪色",
|
||||
"images": ["https://xxx/1.jpg", "https://xxx/2.jpg"]
|
||||
}
|
||||
|
||||
Response:
|
||||
{
|
||||
"code": 0,
|
||||
"message": "success",
|
||||
"data": {
|
||||
"bookingId": "BK20260126001",
|
||||
"status": "pending",
|
||||
"message": "预约成功,我们会尽快与您联系"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 五、管理后台功能
|
||||
|
||||
### 5.1 功能模块
|
||||
|
||||
| 模块 | 功能 |
|
||||
|------|------|
|
||||
| 仪表盘 | 数据概览、预约统计、案例统计 |
|
||||
| 案例管理 | 案例列表、新增/编辑/删除、上下架 |
|
||||
| 分类管理 | 分类列表、新增/编辑/删除 |
|
||||
| 预约管理 | 预约列表、状态更新、指派处理 |
|
||||
| 用户管理 | 用户列表、状态管理 |
|
||||
| 轮播图管理 | 轮播图列表、新增/编辑/删除 |
|
||||
| 系统设置 | 公司信息、联系方式、服务流程 |
|
||||
|
||||
### 5.2 角色权限
|
||||
|
||||
| 角色 | 权限 |
|
||||
|------|------|
|
||||
| 超级管理员 | 所有权限 |
|
||||
| 运营人员 | 案例管理、轮播图、系统设置 |
|
||||
| 客服人员 | 预约管理、用户管理 |
|
||||
|
||||
## 六、部署架构
|
||||
|
||||
```
|
||||
┌─────────────┐
|
||||
│ Nginx │
|
||||
│ (反向代理) │
|
||||
└──────┬──────┘
|
||||
│
|
||||
┌───────────────┼───────────────┐
|
||||
│ │ │
|
||||
┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐
|
||||
│ 小程序API │ │ 管理后台 │ │ 静态资源 │
|
||||
│ Server │ │ Server │ │ CDN │
|
||||
└──────┬──────┘ └──────┬──────┘ └─────────────┘
|
||||
│ │
|
||||
└───────┬───────┘
|
||||
│
|
||||
┌───────▼───────┐
|
||||
│ MySQL │
|
||||
│ Redis │
|
||||
└───────────────┘
|
||||
```
|
||||
|
||||
## 七、开发计划
|
||||
|
||||
| 阶段 | 时间 | 任务 |
|
||||
|------|------|------|
|
||||
| 第一阶段 | 3天 | 数据库设计、项目搭建、基础接口 |
|
||||
| 第二阶段 | 3天 | 案例模块、分类模块、轮播图 |
|
||||
| 第三阶段 | 2天 | 用户模块、微信登录、收藏功能 |
|
||||
| 第四阶段 | 2天 | 预约模块、文件上传 |
|
||||
| 第五阶段 | 3天 | 管理后台开发 |
|
||||
| 第六阶段 | 2天 | 联调测试、部署上线 |
|
||||
|
||||
**总计:约15个工作日**
|
||||
|
||||
---
|
||||
|
||||
准备好开始后端开发时,告诉我你选择的技术栈(Node.js/Python/Java),我将为你生成完整的后端代码。
|
||||
Reference in New Issue
Block a user