Files
ShaFaFanXin/后端/README.md
2026-01-27 18:06:04 +08:00

254 lines
5.4 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 + 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
---
*优艺家沙发翻新 - 让老沙发焕然一新*