初始化参股
This commit is contained in:
254
后端/README.md
Normal file
254
后端/README.md
Normal file
@@ -0,0 +1,254 @@
|
||||
# 优艺家沙发翻新小程序后端
|
||||
|
||||
基于 Node.js + NestJS + TypeORM 构建的沙发翻新服务小程序后端系统。
|
||||
|
||||
## 技术栈
|
||||
|
||||
- **框架**: NestJS v11.x
|
||||
- **数据库**: MySQL
|
||||
- **ORM**: TypeORM v0.3.x
|
||||
- **认证**: JWT (JSON Web Token)
|
||||
- **验证**: class-validator + class-transformer
|
||||
- **文档**: Swagger/OpenAPI
|
||||
- **开发语言**: TypeScript
|
||||
|
||||
## 功能模块
|
||||
|
||||
### 🔐 认证模块 (Auth)
|
||||
- 用户注册/登录
|
||||
- JWT Token 认证
|
||||
- 角色权限控制 (admin/customer/worker)
|
||||
- 刷新 Token 机制
|
||||
|
||||
### 👤 用户管理 (User)
|
||||
- 用户信息管理
|
||||
- 个人资料修改
|
||||
- 用户状态管理
|
||||
- 管理员用户操作
|
||||
|
||||
### 📸 案例管理 (Case)
|
||||
- 案例展示 (翻新前后对比)
|
||||
- 按服务类型筛选
|
||||
- 案例点赞功能
|
||||
- 我的案例管理
|
||||
|
||||
### 🔧 服务管理 (Service)
|
||||
- 服务项目配置
|
||||
- 价格管理
|
||||
- 服务状态控制
|
||||
- 排序管理
|
||||
|
||||
### 📅 预约管理 (Booking)
|
||||
- 在线预约服务
|
||||
- 预约状态跟踪
|
||||
- 工人分配
|
||||
- 价格报价
|
||||
|
||||
## 项目结构
|
||||
|
||||
```
|
||||
src/
|
||||
├── auth/ # 认证模块
|
||||
│ ├── dto/ # 数据传输对象
|
||||
│ ├── guards/ # 路由守卫
|
||||
│ ├── strategies/ # 认证策略
|
||||
│ └── decorators/ # 装饰器
|
||||
├── user/ # 用户管理
|
||||
├── case/ # 案例管理
|
||||
├── service/ # 服务管理
|
||||
├── booking/ # 预约管理 (待开发)
|
||||
├── entities/ # 数据库实体
|
||||
├── config/ # 配置文件
|
||||
└── main.ts # 应用入口
|
||||
```
|
||||
|
||||
## 环境要求
|
||||
|
||||
- Node.js >= 18.x
|
||||
- MySQL >= 8.0
|
||||
- npm >= 9.x
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 1. 安装依赖
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
### 2. 环境配置
|
||||
|
||||
复制环境配置文件并填写配置信息:
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
配置 `.env` 文件中的数据库连接信息:
|
||||
|
||||
```env
|
||||
# 数据库配置
|
||||
DB_HOST=localhost
|
||||
DB_PORT=3306
|
||||
DB_USER=root
|
||||
DB_PASS=your_password
|
||||
DB_NAME=sofa_renovation
|
||||
|
||||
# JWT 配置
|
||||
JWT_SECRET=your-super-secret-key
|
||||
JWT_EXPIRES_IN=7d
|
||||
JWT_REFRESH_SECRET=your-refresh-secret
|
||||
JWT_REFRESH_EXPIRES_IN=30d
|
||||
|
||||
# 服务器配置
|
||||
PORT=3000
|
||||
NODE_ENV=development
|
||||
|
||||
# 文件上传配置
|
||||
UPLOAD_DIR=uploads
|
||||
MAX_FILE_SIZE=5242880
|
||||
FRONTEND_URL=http://localhost:3000
|
||||
```
|
||||
|
||||
### 3. 数据库准备
|
||||
|
||||
确保 MySQL 服务运行,并创建数据库:
|
||||
|
||||
```sql
|
||||
CREATE DATABASE sofa_renovation CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
```
|
||||
|
||||
### 4. 启动应用
|
||||
|
||||
```bash
|
||||
# 开发模式
|
||||
npm run start:dev
|
||||
|
||||
# 生产模式
|
||||
npm run start:prod
|
||||
```
|
||||
|
||||
应用启动后访问:
|
||||
- 应用地址: http://localhost:3000
|
||||
- API 文档: http://localhost:3000/docs
|
||||
|
||||
## API 文档
|
||||
|
||||
项目集成了 Swagger,启动服务后可以通过以下地址访问 API 文档:
|
||||
|
||||
```
|
||||
http://localhost:3000/docs
|
||||
```
|
||||
|
||||
### 主要 API 端点
|
||||
|
||||
#### 认证相关
|
||||
- `POST /api/auth/register` - 用户注册
|
||||
- `POST /api/auth/login` - 用户登录
|
||||
- `POST /api/auth/refresh` - 刷新令牌
|
||||
|
||||
#### 用户管理
|
||||
- `GET /api/users/profile` - 获取个人信息
|
||||
- `PATCH /api/users/profile` - 更新个人信息
|
||||
- `GET /api/users` - 获取用户列表 (管理员)
|
||||
|
||||
#### 案例管理
|
||||
- `GET /api/cases` - 获取案例列表
|
||||
- `GET /api/cases/:id` - 获取案例详情
|
||||
- `POST /api/cases` - 创建案例 (工人/管理员)
|
||||
- `POST /api/cases/:id/like` - 点赞案例
|
||||
|
||||
#### 服务管理
|
||||
- `GET /api/services` - 获取服务列表
|
||||
- `GET /api/services/active` - 获取有效服务
|
||||
- `POST /api/services` - 创建服务 (管理员)
|
||||
|
||||
## 数据库设计
|
||||
|
||||
### 用户表 (users)
|
||||
- 支持多角色:admin(管理员)、customer(客户)、worker(工人)
|
||||
- 用户状态管理:active、inactive、banned
|
||||
|
||||
### 案例表 (cases)
|
||||
- 翻新前后图片对比
|
||||
- 按服务类型分类
|
||||
- 浏览量和点赞统计
|
||||
|
||||
### 服务表 (services)
|
||||
- 服务类型:面料翻新、皮革翻新、清洁、维修、定制
|
||||
- 基础价格和预估工期
|
||||
- 排序和状态管理
|
||||
|
||||
### 预约表 (bookings)
|
||||
- 预约流程状态跟踪
|
||||
- 客户信息和服务需求
|
||||
- 工人分配和价格管理
|
||||
|
||||
## 开发指南
|
||||
|
||||
### 添加新的 API 接口
|
||||
|
||||
1. 在对应模块的 `dto` 文件夹中定义数据传输对象
|
||||
2. 在 `service` 中实现业务逻辑
|
||||
3. 在 `controller` 中定义路由和接口
|
||||
4. 添加适当的权限控制和验证
|
||||
|
||||
### 权限控制
|
||||
|
||||
使用装饰器进行权限控制:
|
||||
|
||||
```typescript
|
||||
// 公开接口 (无需认证)
|
||||
@Public()
|
||||
|
||||
// 需要特定角色
|
||||
@Roles('admin', 'worker')
|
||||
|
||||
// 获取当前用户信息
|
||||
@CurrentUser() user: CurrentUserData
|
||||
```
|
||||
|
||||
## 部署说明
|
||||
|
||||
### 生产环境配置
|
||||
|
||||
1. 设置 `NODE_ENV=production`
|
||||
2. 配置安全的 JWT 密钥
|
||||
3. 关闭数据库同步 `synchronize: false`
|
||||
4. 使用数据库迁移管理数据结构变更
|
||||
|
||||
### Docker 部署 (可选)
|
||||
|
||||
```dockerfile
|
||||
FROM node:18-alpine
|
||||
WORKDIR /app
|
||||
COPY package*.json ./
|
||||
RUN npm install
|
||||
COPY . .
|
||||
RUN npm run build
|
||||
EXPOSE 3000
|
||||
CMD ["npm", "run", "start:prod"]
|
||||
```
|
||||
|
||||
## 贡献指南
|
||||
|
||||
1. Fork 项目
|
||||
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
|
||||
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
|
||||
4. 推送到分支 (`git push origin feature/AmazingFeature`)
|
||||
5. 打开 Pull Request
|
||||
|
||||
## 许可证
|
||||
|
||||
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
|
||||
|
||||
## 联系方式
|
||||
|
||||
如有问题或建议,请通过以下方式联系:
|
||||
|
||||
- 项目 Issues: [GitHub Issues](https://github.com/your-username/sofa-renovation-backend/issues)
|
||||
- 邮箱: your-email@example.com
|
||||
|
||||
---
|
||||
|
||||
*优艺家沙发翻新 - 让老沙发焕然一新* ✨
|
||||
Reference in New Issue
Block a user