Files

217 lines
5.4 KiB
Markdown
Raw Permalink Normal View History

2026-06-22 22:41:08 +08:00
# BackManager Server
企业信息管理系统后端服务,提供用户认证、客户(加盟商)管理、员工管理、合同管理、售后服务和产品管理等 RESTful API。
## 技术栈
- **运行时:** Node.js v18+
- **框架:** Express.js 5
- **数据库:** MySQL 5.7+ / MariaDB 10.2+
- **认证:** JWTjsonwebtoken + 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