Files
backmanager-server/README.md
2026-06-22 22:41:08 +08:00

217 lines
5.4 KiB
Markdown
Raw Permalink 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.
# 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