初始化参股
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),我将为你生成完整的后端代码。
|
||||
82
前端/docs/后端对接报告.md
Normal file
82
前端/docs/后端对接报告.md
Normal file
@@ -0,0 +1,82 @@
|
||||
# 后端API对接完成报告
|
||||
|
||||
## 🎯 对接状态
|
||||
✅ **已成功对接后端API服务器**
|
||||
- 后端运行在:http://localhost:3000
|
||||
- API文档地址:http://localhost:3000/docs
|
||||
- API基础路径:http://localhost:3000/api
|
||||
|
||||
## 🔧 已完成的配置修改
|
||||
|
||||
### 1. 关闭Mock数据模式
|
||||
- 文件:`utils/config.uts`
|
||||
- 修改:`useMock = false`
|
||||
- 说明:已切换到真实后端API
|
||||
|
||||
### 2. 更新API接口调用
|
||||
- 文件:`api/index.uts`
|
||||
- 修改内容:
|
||||
- ✅ `getCaseList()` - 适配后端分页参数(page/limit)
|
||||
- ✅ `getHotCases()` - 使用案例列表API获取前4条数据
|
||||
- ✅ `getBanners()` - 临时使用固定数据(后端暂无此API)
|
||||
- ✅ `getServiceProcess()` - 改用服务列表API
|
||||
|
||||
### 3. 适配数据格式
|
||||
- 文件:`pages/cases/list.uvue`, `pages/index/index.uvue`
|
||||
- 修改:适应后端返回的数据结构
|
||||
- 后端格式:`{ items: [], total: 0, page: 1, limit: 10 }`
|
||||
- 前端适配:正确解析 `items` 字段
|
||||
|
||||
## 📊 API端点映射
|
||||
|
||||
| 功能 | 前端调用 | 后端端点 | 状态 |
|
||||
|------|----------|----------|------|
|
||||
| 案例列表 | `getCaseList()` | `GET /api/cases` | ✅ 已对接 |
|
||||
| 案例详情 | `getCaseDetail(id)` | `GET /api/cases/:id` | ✅ 已对接 |
|
||||
| 服务列表 | `getActiveServices()` | `GET /api/services/active` | ✅ 已对接 |
|
||||
| 轮播图 | `getBanners()` | - | ⚠️ 临时使用固定数据 |
|
||||
| 用户相关 | - | `GET /api/users/*` | ✅ 后端已准备 |
|
||||
| 预约管理 | `submitBooking()` | `POST /api/booking` | 🔄 需要确认端点 |
|
||||
|
||||
## 🧪 测试验证
|
||||
|
||||
### 已验证的API
|
||||
- ✅ `GET /api/cases` - 返回空列表(正常,暂无数据)
|
||||
- ✅ `GET /api/services` - 返回空列表(正常,暂无数据)
|
||||
- ✅ API文档页面 - 可正常访问
|
||||
|
||||
### 临时解决方案
|
||||
1. **轮播图**:使用硬编码数据,后续可添加后端API
|
||||
2. **空数据处理**:前端已正确处理空列表情况
|
||||
|
||||
## 📝 下一步工作
|
||||
|
||||
### 推荐优先级
|
||||
1. **高优先级**
|
||||
- 为后端添加示例数据(案例、服务)
|
||||
- 验证预约提交API端点
|
||||
- 添加轮播图管理API
|
||||
|
||||
2. **中优先级**
|
||||
- 添加用户认证功能测试
|
||||
- 完善错误处理机制
|
||||
- 添加图片上传功能
|
||||
|
||||
3. **低优先级**
|
||||
- API响应缓存机制
|
||||
- 离线数据支持
|
||||
|
||||
## 🚀 启动应用测试
|
||||
|
||||
现在您可以:
|
||||
1. 确保后端服务运行在 `http://localhost:3000`
|
||||
2. 启动前端应用(uni-app)
|
||||
3. 查看控制台API调用日志
|
||||
4. 验证数据正确显示(目前为空列表)
|
||||
|
||||
## 📞 技术支持
|
||||
|
||||
如遇到问题,请检查:
|
||||
- 后端服务是否正常运行
|
||||
- 网络连接是否正常
|
||||
- 控制台是否有错误信息
|
||||
Reference in New Issue
Block a user