初始化参股

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

254
后端/README.md Normal file
View 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
---
*优艺家沙发翻新 - 让老沙发焕然一新*