217 lines
5.4 KiB
Markdown
217 lines
5.4 KiB
Markdown
|
|
# BackManager Server
|
|||
|
|
|
|||
|
|
企业信息管理系统后端服务,提供用户认证、客户(加盟商)管理、员工管理、合同管理、售后服务和产品管理等 RESTful API。
|
|||
|
|
|
|||
|
|
## 技术栈
|
|||
|
|
|
|||
|
|
- **运行时:** Node.js v18+
|
|||
|
|
- **框架:** Express.js 5
|
|||
|
|
- **数据库:** MySQL 5.7+ / MariaDB 10.2+
|
|||
|
|
- **认证:** JWT(jsonwebtoken + bcryptjs)
|
|||
|
|
|
|||
|
|
## 快速开始
|
|||
|
|
|
|||
|
|
### 环境准备
|
|||
|
|
|
|||
|
|
- Node.js >= 18
|
|||
|
|
- MySQL 或 MariaDB
|
|||
|
|
|
|||
|
|
### 安装
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
git clone https://chochox.asia/ChoChoX/backmanager-server.git
|
|||
|
|
cd backmanager-server
|
|||
|
|
npm install
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 配置
|
|||
|
|
|
|||
|
|
复制环境变量模板并填写:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cp .env.example .env
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
编辑 `.env` 文件:
|
|||
|
|
|
|||
|
|
```env
|
|||
|
|
PORT=3000
|
|||
|
|
DB_HOST=127.0.0.1
|
|||
|
|
DB_PORT=3306
|
|||
|
|
DB_USER=root
|
|||
|
|
DB_PASSWORD=your_password
|
|||
|
|
DB_NAME=backmanager
|
|||
|
|
JWT_SECRET=your_jwt_secret
|
|||
|
|
JWT_EXPIRES_IN=2h
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 启动
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 生产环境
|
|||
|
|
npm start
|
|||
|
|
|
|||
|
|
# 开发环境(文件变更自动重启)
|
|||
|
|
npm run dev
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
服务默认运行在 `http://localhost:3000`。
|
|||
|
|
|
|||
|
|
### 数据库初始化
|
|||
|
|
|
|||
|
|
无需手动执行迁移。服务启动时会自动:
|
|||
|
|
|
|||
|
|
1. 创建数据库(如不存在)
|
|||
|
|
2. 创建所有数据表(如不存在)
|
|||
|
|
3. 插入默认管理员账户
|
|||
|
|
|
|||
|
|
**默认管理员:** `admin` / `123456`
|
|||
|
|
|
|||
|
|
> 也可以使用 `enterprise_management.sql` 手动初始化数据库,其中包含建表语句和测试数据。
|
|||
|
|
|
|||
|
|
## 项目结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
backmanager-server/
|
|||
|
|
├── server.js # 入口文件,Express 应用和中间件配置
|
|||
|
|
├── db.js # 数据库连接池和自动初始化
|
|||
|
|
├── routes/
|
|||
|
|
│ ├── users.js # 用户认证与管理
|
|||
|
|
│ ├── customers.js # 客户(加盟商)管理
|
|||
|
|
│ ├── employees.js # 员工管理
|
|||
|
|
│ ├── contracts.js # 合同管理
|
|||
|
|
│ ├── afterSales.js # 售后服务管理
|
|||
|
|
│ └── products.js # 产品管理
|
|||
|
|
├── test-all.js # 集成测试脚本
|
|||
|
|
├── enterprise_management.sql # 数据库建表及测试数据
|
|||
|
|
├── .env.example # 环境变量模板
|
|||
|
|
└── package.json
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## API 接口
|
|||
|
|
|
|||
|
|
### 认证
|
|||
|
|
|
|||
|
|
所有接口(除登录外)需要在请求头中携带 JWT Token:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
Authorization: Bearer <token>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 用户管理 `/api/user`
|
|||
|
|
|
|||
|
|
| 方法 | 路径 | 说明 | 权限 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| POST | `/api/user/login` | 用户登录 | 公开 |
|
|||
|
|
| GET | `/api/user/info` | 获取当前用户信息 | 登录 |
|
|||
|
|
| POST | `/api/user/logout` | 退出登录 | 登录 |
|
|||
|
|
| PUT | `/api/user/password` | 修改自身密码 | 登录 |
|
|||
|
|
| GET | `/api/users` | 用户列表(分页/搜索) | 管理员 |
|
|||
|
|
| POST | `/api/users` | 创建用户 | 管理员 |
|
|||
|
|
| GET | `/api/users/:id` | 获取用户详情 | 管理员 |
|
|||
|
|
| PUT | `/api/users/:id` | 更新用户 | 管理员 |
|
|||
|
|
| DELETE | `/api/users/:id` | 删除用户 | 管理员 |
|
|||
|
|
|
|||
|
|
### 客户管理 `/api/customers`
|
|||
|
|
|
|||
|
|
| 方法 | 路径 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| GET | `/api/customers` | 客户列表(分页/搜索) |
|
|||
|
|
| POST | `/api/customers` | 创建客户 |
|
|||
|
|
| GET | `/api/customers/:id` | 获取客户详情 |
|
|||
|
|
| PUT | `/api/customers/:id` | 更新客户 |
|
|||
|
|
| DELETE | `/api/customers/:id` | 删除客户 |
|
|||
|
|
|
|||
|
|
### 员工管理 `/api/employees`
|
|||
|
|
|
|||
|
|
| 方法 | 路径 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| GET | `/api/employees` | 员工列表(分页/搜索) |
|
|||
|
|
| POST | `/api/employees` | 创建员工 |
|
|||
|
|
| GET | `/api/employees/:id` | 获取员工详情 |
|
|||
|
|
| PUT | `/api/employees/:id` | 更新员工 |
|
|||
|
|
| DELETE | `/api/employees/:id` | 删除员工 |
|
|||
|
|
|
|||
|
|
### 合同管理 `/api/contracts`
|
|||
|
|
|
|||
|
|
| 方法 | 路径 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| GET | `/api/contracts` | 合同列表(分页/搜索) |
|
|||
|
|
| POST | `/api/contracts` | 创建合同 |
|
|||
|
|
| GET | `/api/contracts/:id` | 获取合同详情 |
|
|||
|
|
| PUT | `/api/contracts/:id` | 更新合同 |
|
|||
|
|
| DELETE | `/api/contracts/:id` | 删除合同 |
|
|||
|
|
|
|||
|
|
### 售后服务 `/api/after-sales`
|
|||
|
|
|
|||
|
|
| 方法 | 路径 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| GET | `/api/after-sales` | 售后记录列表(分页/搜索) |
|
|||
|
|
| POST | `/api/after-sales` | 创建售后记录 |
|
|||
|
|
| GET | `/api/after-sales/:id` | 获取售后记录详情 |
|
|||
|
|
| PUT | `/api/after-sales/:id` | 更新售后记录 |
|
|||
|
|
| DELETE | `/api/after-sales/:id` | 删除售后记录 |
|
|||
|
|
|
|||
|
|
### 产品管理 `/api/products`
|
|||
|
|
|
|||
|
|
| 方法 | 路径 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| GET | `/api/products` | 产品列表(分页/搜索) |
|
|||
|
|
| POST | `/api/products` | 创建产品 |
|
|||
|
|
| GET | `/api/products/:id` | 获取产品详情 |
|
|||
|
|
| PUT | `/api/products/:id` | 更新产品 |
|
|||
|
|
| DELETE | `/api/products/:id` | 删除产品 |
|
|||
|
|
|
|||
|
|
### 通用参数
|
|||
|
|
|
|||
|
|
分页列表接口支持以下查询参数:
|
|||
|
|
|
|||
|
|
| 参数 | 说明 | 默认值 |
|
|||
|
|
|------|------|--------|
|
|||
|
|
| `page` | 页码 | 1 |
|
|||
|
|
| `pageSize` | 每页条数 | 10(最大 100) |
|
|||
|
|
|
|||
|
|
### 响应格式
|
|||
|
|
|
|||
|
|
所有接口返回统一 JSON 格式:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "操作成功",
|
|||
|
|
"data": { }
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 测试
|
|||
|
|
|
|||
|
|
运行集成测试脚本,覆盖所有模块的 CRUD 接口:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
node test-all.js
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 数据库设计
|
|||
|
|
|
|||
|
|
系统包含 6 张核心表:
|
|||
|
|
|
|||
|
|
| 表名 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| `users` | 系统用户(角色:admin / user) |
|
|||
|
|
| `customers` | 客户/加盟商(类型:VIP / 普通) |
|
|||
|
|
| `employees` | 员工信息 |
|
|||
|
|
| `products` | 产品/库存 |
|
|||
|
|
| `contracts` | 合同(关联客户和员工) |
|
|||
|
|
| `after_sales` | 售后服务记录(关联客户和员工) |
|
|||
|
|
|
|||
|
|
ER 关系概览:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
customers ─┬──< contracts >──┬── employees
|
|||
|
|
└──< after_sales >┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 许可证
|
|||
|
|
|
|||
|
|
MIT
|