Files
ShaFaFanXin/前端/docs/backend-plan.md
2026-01-27 18:06:04 +08:00

395 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 后端开发规划
## 一、技术选型
| 项目 | 技术方案 | 说明 |
|------|----------|------|
| 框架 | 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我将为你生成完整的后端代码。