初始化参股

This commit is contained in:
2026-01-27 18:06:04 +08:00
commit 2774a539bf
254 changed files with 33255 additions and 0 deletions

394
前端/docs/backend-plan.md Normal file
View 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我将为你生成完整的后端代码。