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

5.4 KiB
Raw Permalink Blame History

优艺家沙发翻新小程序后端

基于 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. 安装依赖

npm install

2. 环境配置

复制环境配置文件并填写配置信息:

cp .env.example .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 服务运行,并创建数据库:

CREATE DATABASE sofa_renovation CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

4. 启动应用

# 开发模式
npm run start:dev

# 生产模式  
npm run start:prod

应用启动后访问:

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. 添加适当的权限控制和验证

权限控制

使用装饰器进行权限控制:

// 公开接口 (无需认证)
@Public()

// 需要特定角色
@Roles('admin', 'worker')

// 获取当前用户信息  
@CurrentUser() user: CurrentUserData

部署说明

生产环境配置

  1. 设置 NODE_ENV=production
  2. 配置安全的 JWT 密钥
  3. 关闭数据库同步 synchronize: false
  4. 使用数据库迁移管理数据结构变更

Docker 部署 (可选)

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 文件了解详情。

联系方式

如有问题或建议,请通过以下方式联系:


优艺家沙发翻新 - 让老沙发焕然一新