544 lines
11 KiB
Markdown
544 lines
11 KiB
Markdown
|
|
# 牛商城后端系统 - API接口文档 (更新版)
|
|||
|
|
|
|||
|
|
## 版本历史
|
|||
|
|
| 版本 | 日期 | 作者 | 变更说明 |
|
|||
|
|
|------|------|------|----------|
|
|||
|
|
| v1.0 | 2024-12-20 | API架构师 | 初版API接口文档 |
|
|||
|
|
| v1.1 | 2025-01-20 | 系统工程师 | 基于实际代码实现更新文档 |
|
|||
|
|
|
|||
|
|
## 1. API概览
|
|||
|
|
|
|||
|
|
### 1.1 基础信息
|
|||
|
|
|
|||
|
|
- **Base URL**: `http://localhost:3000/api` (开发环境)
|
|||
|
|
- **协议**: HTTP/HTTPS
|
|||
|
|
- **数据格式**: JSON
|
|||
|
|
- **字符编码**: UTF-8
|
|||
|
|
- **API版本**: v1
|
|||
|
|
|
|||
|
|
### 1.2 认证方式
|
|||
|
|
|
|||
|
|
#### JWT Token认证
|
|||
|
|
```http
|
|||
|
|
Authorization: Bearer <access_token>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 认证流程
|
|||
|
|
1. 用户登录获取access_token
|
|||
|
|
2. 请求头携带access_token
|
|||
|
|
3. token过期需重新登录
|
|||
|
|
|
|||
|
|
### 1.3 通用响应格式
|
|||
|
|
|
|||
|
|
#### 成功响应
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"message": "操作成功",
|
|||
|
|
"data": {
|
|||
|
|
// 具体数据
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 分页响应
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"list": [],
|
|||
|
|
"total": 100,
|
|||
|
|
"page": 1,
|
|||
|
|
"pageSize": 10
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 错误响应
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": false,
|
|||
|
|
"message": "错误描述",
|
|||
|
|
"code": 400
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 1.4 状态码说明
|
|||
|
|
|
|||
|
|
| 状态码 | 说明 | 描述 |
|
|||
|
|
|--------|------|------|
|
|||
|
|
| 200 | OK | 请求成功 |
|
|||
|
|
| 400 | Bad Request | 请求参数错误 |
|
|||
|
|
| 401 | Unauthorized | 未授权,需要登录 |
|
|||
|
|
| 403 | Forbidden | 禁止访问,权限不足 |
|
|||
|
|
| 404 | Not Found | 资源不存在 |
|
|||
|
|
| 500 | Internal Server Error | 服务器内部错误 |
|
|||
|
|
|
|||
|
|
## 2. 认证模块 (AuthController)
|
|||
|
|
|
|||
|
|
### 2.1 用户登录
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/auth/login`
|
|||
|
|
- **Method**: `POST`
|
|||
|
|
- **描述**: 用户登录接口,支持用户名/邮箱登录
|
|||
|
|
- **认证**: 不需要
|
|||
|
|
|
|||
|
|
#### 请求参数
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"username": "admin",
|
|||
|
|
"password": "123456"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 参数说明
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| username | string | 是 | 用户名或邮箱 |
|
|||
|
|
| password | string | 是 | 密码 |
|
|||
|
|
|
|||
|
|
#### 响应示例
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"message": "登录成功",
|
|||
|
|
"data": {
|
|||
|
|
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
|
|||
|
|
"user": {
|
|||
|
|
"id": 1,
|
|||
|
|
"uuid": "550e8400-e29b-41d4-a716-446655440000",
|
|||
|
|
"username": "admin",
|
|||
|
|
"userType": "admin",
|
|||
|
|
"email": "admin@example.com"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2.2 小程序登录
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/auth/miniprogram-login`
|
|||
|
|
- **Method**: `POST`
|
|||
|
|
- **描述**: 微信小程序登录接口
|
|||
|
|
- **认证**: 不需要
|
|||
|
|
|
|||
|
|
#### 请求参数
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": "wx_code_from_miniprogram",
|
|||
|
|
"userInfo": {
|
|||
|
|
"nickName": "用户昵称",
|
|||
|
|
"avatarUrl": "头像URL"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2.3 获取当前用户信息
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/auth/current-user`
|
|||
|
|
- **Method**: `GET`
|
|||
|
|
- **描述**: 获取当前登录用户信息
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
#### 响应示例
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": 1,
|
|||
|
|
"uuid": "550e8400-e29b-41d4-a716-446655440000",
|
|||
|
|
"username": "admin",
|
|||
|
|
"userType": "admin",
|
|||
|
|
"email": "admin@example.com"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 3. 用户管理模块 (UserController)
|
|||
|
|
|
|||
|
|
### 3.1 获取用户列表
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/users`
|
|||
|
|
- **Method**: `GET`
|
|||
|
|
- **描述**: 获取用户列表,支持分页和筛选
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
#### 查询参数
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| page | integer | 否 | 页码,默认1 |
|
|||
|
|
| pageSize | integer | 否 | 每页数量,默认10 |
|
|||
|
|
| userType | string | 否 | 用户类型筛选 |
|
|||
|
|
| status | string | 否 | 用户状态筛选 |
|
|||
|
|
|
|||
|
|
#### 响应示例
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"list": [
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"uuid": "550e8400-e29b-41d4-a716-446655440000",
|
|||
|
|
"username": "admin",
|
|||
|
|
"realName": "管理员",
|
|||
|
|
"phone": "13800138000",
|
|||
|
|
"email": "admin@example.com",
|
|||
|
|
"userType": "admin",
|
|||
|
|
"status": "active",
|
|||
|
|
"avatar": "https://example.com/avatar.jpg",
|
|||
|
|
"createdAt": "2024-01-01T00:00:00.000Z"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"total": 1,
|
|||
|
|
"page": 1,
|
|||
|
|
"pageSize": 10
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3.2 获取用户详情
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/users/{id}`
|
|||
|
|
- **Method**: `GET`
|
|||
|
|
- **描述**: 根据用户ID获取用户详细信息
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
#### 路径参数
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | integer | 是 | 用户ID |
|
|||
|
|
|
|||
|
|
#### 响应示例
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": 1,
|
|||
|
|
"uuid": "550e8400-e29b-41d4-a716-446655440000",
|
|||
|
|
"username": "admin",
|
|||
|
|
"realName": "管理员",
|
|||
|
|
"phone": "13800138000",
|
|||
|
|
"email": "admin@example.com",
|
|||
|
|
"userType": "admin",
|
|||
|
|
"status": "active",
|
|||
|
|
"avatar": "https://example.com/avatar.jpg",
|
|||
|
|
"createdAt": "2024-01-01T00:00:00.000Z",
|
|||
|
|
"updatedAt": "2024-01-01T00:00:00.000Z"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3.3 更新用户信息
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/users/{id}`
|
|||
|
|
- **Method**: `PUT`
|
|||
|
|
- **描述**: 更新用户基本信息
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
#### 路径参数
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | integer | 是 | 用户ID |
|
|||
|
|
|
|||
|
|
#### 请求参数
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"realName": "新的真实姓名",
|
|||
|
|
"phone": "13900139000",
|
|||
|
|
"email": "newemail@example.com",
|
|||
|
|
"avatar": "https://example.com/new-avatar.jpg"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 响应示例
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"message": "更新成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": 1,
|
|||
|
|
"realName": "新的真实姓名",
|
|||
|
|
"phone": "13900139000",
|
|||
|
|
"email": "newemail@example.com",
|
|||
|
|
"avatar": "https://example.com/new-avatar.jpg",
|
|||
|
|
"updatedAt": "2024-01-20T10:30:00.000Z"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3.4 更新用户状态
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/users/{id}/status`
|
|||
|
|
- **Method**: `PUT`
|
|||
|
|
- **描述**: 更新用户状态(启用/禁用)
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
#### 路径参数
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | integer | 是 | 用户ID |
|
|||
|
|
|
|||
|
|
#### 请求参数
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"status": "inactive"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 参数说明
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| status | string | 是 | 用户状态:active(启用)、inactive(禁用) |
|
|||
|
|
|
|||
|
|
#### 响应示例
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"message": "状态更新成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": 1,
|
|||
|
|
"status": "inactive",
|
|||
|
|
"updatedAt": "2024-01-20T10:30:00.000Z"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 4. 运输管理模块 (TransportController)
|
|||
|
|
|
|||
|
|
### 4.1 获取运输列表
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/transports`
|
|||
|
|
- **Method**: `GET`
|
|||
|
|
- **描述**: 获取运输记录列表
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
### 4.2 获取运输详情
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/transports/{id}`
|
|||
|
|
- **Method**: `GET`
|
|||
|
|
- **描述**: 获取运输记录详情
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
### 4.3 更新运输状态
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/transports/{id}/status`
|
|||
|
|
- **Method**: `PUT`
|
|||
|
|
- **描述**: 更新运输状态
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
### 4.4 获取运输统计
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/transports/stats`
|
|||
|
|
- **Method**: `GET`
|
|||
|
|
- **描述**: 获取运输统计数据
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
## 5. 订单管理模块 (OrderController)
|
|||
|
|
|
|||
|
|
### 5.1 获取订单列表
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/orders`
|
|||
|
|
- **Method**: `GET`
|
|||
|
|
- **描述**: 获取订单列表
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
### 5.2 创建订单
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/orders`
|
|||
|
|
- **Method**: `POST`
|
|||
|
|
- **描述**: 创建新订单
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
### 5.3 获取订单详情
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/orders/{id}`
|
|||
|
|
- **Method**: `GET`
|
|||
|
|
- **描述**: 获取订单详情
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
### 5.4 更新订单状态
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/orders/{id}/status`
|
|||
|
|
- **Method**: `PUT`
|
|||
|
|
- **描述**: 更新订单状态
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
## 6. 供应商管理模块 (SupplierController)
|
|||
|
|
|
|||
|
|
### 6.1 获取供应商列表
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/suppliers`
|
|||
|
|
- **Method**: `GET`
|
|||
|
|
- **描述**: 获取供应商列表
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
### 6.2 获取供应商详情
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/suppliers/{id}`
|
|||
|
|
- **Method**: `GET`
|
|||
|
|
- **描述**: 获取供应商详情
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
### 6.3 获取供应商统计
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/suppliers/stats`
|
|||
|
|
- **Method**: `GET`
|
|||
|
|
- **描述**: 获取供应商统计数据
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
## 7. 司机管理模块 (DriverController)
|
|||
|
|
|
|||
|
|
### 7.1 获取司机列表
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/drivers`
|
|||
|
|
- **Method**: `GET`
|
|||
|
|
- **描述**: 获取司机列表
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
### 7.2 获取司机详情
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/drivers/{id}`
|
|||
|
|
- **Method**: `GET`
|
|||
|
|
- **描述**: 获取司机详情
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
### 7.3 获取司机统计
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/drivers/stats`
|
|||
|
|
- **Method**: `GET`
|
|||
|
|
- **描述**: 获取司机统计数据
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
## 8. 车辆管理模块 (VehicleController)
|
|||
|
|
|
|||
|
|
### 8.1 获取车辆列表
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/vehicles`
|
|||
|
|
- **Method**: `GET`
|
|||
|
|
- **描述**: 获取车辆列表
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
### 8.2 获取车辆详情
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/vehicles/{id}`
|
|||
|
|
- **Method**: `GET`
|
|||
|
|
- **描述**: 获取车辆详情
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
## 9. 支付管理模块 (PaymentController)
|
|||
|
|
|
|||
|
|
### 9.1 获取支付记录
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/payments`
|
|||
|
|
- **Method**: `GET`
|
|||
|
|
- **描述**: 获取支付记录列表
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
### 9.2 创建支付订单
|
|||
|
|
|
|||
|
|
#### 接口信息
|
|||
|
|
- **URL**: `/payments`
|
|||
|
|
- **Method**: `POST`
|
|||
|
|
- **描述**: 创建支付订单
|
|||
|
|
- **认证**: 需要
|
|||
|
|
|
|||
|
|
## 10. 错误码说明
|
|||
|
|
|
|||
|
|
### 10.1 通用错误码
|
|||
|
|
|
|||
|
|
| 错误码 | 说明 | 描述 |
|
|||
|
|
|--------|------|------|
|
|||
|
|
| 400 | 请求参数错误 | 请求参数格式不正确或缺少必要参数 |
|
|||
|
|
| 401 | 未授权 | 用户未登录或token无效 |
|
|||
|
|
| 403 | 权限不足 | 用户没有访问该资源的权限 |
|
|||
|
|
| 404 | 资源不存在 | 请求的资源不存在 |
|
|||
|
|
| 500 | 服务器内部错误 | 服务器处理请求时发生错误 |
|
|||
|
|
|
|||
|
|
### 10.2 业务错误码
|
|||
|
|
|
|||
|
|
| 错误码 | 说明 | 描述 |
|
|||
|
|
|--------|------|------|
|
|||
|
|
| 1001 | 用户不存在 | 指定的用户ID不存在 |
|
|||
|
|
| 1002 | 用户名或密码错误 | 登录时用户名或密码不正确 |
|
|||
|
|
| 1003 | 用户已被禁用 | 用户账户已被管理员禁用 |
|
|||
|
|
| 2001 | 订单不存在 | 指定的订单ID不存在 |
|
|||
|
|
| 2002 | 订单状态错误 | 订单当前状态不允许该操作 |
|
|||
|
|
|
|||
|
|
## 11. 开发指南
|
|||
|
|
|
|||
|
|
### 11.1 环境配置
|
|||
|
|
|
|||
|
|
#### 开发环境
|
|||
|
|
- Node.js 18+
|
|||
|
|
- MySQL 8.0+
|
|||
|
|
- Redis 6.0+
|
|||
|
|
|
|||
|
|
#### 环境变量
|
|||
|
|
```env
|
|||
|
|
NODE_ENV=development
|
|||
|
|
PORT=3000
|
|||
|
|
DB_HOST=localhost
|
|||
|
|
DB_PORT=3306
|
|||
|
|
DB_NAME=niumall
|
|||
|
|
DB_USER=root
|
|||
|
|
DB_PASSWORD=password
|
|||
|
|
JWT_SECRET=your-jwt-secret
|
|||
|
|
JWT_EXPIRES_IN=24h
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 11.2 测试指南
|
|||
|
|
|
|||
|
|
#### 单元测试
|
|||
|
|
```bash
|
|||
|
|
npm test -- tests/unit
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 集成测试
|
|||
|
|
```bash
|
|||
|
|
npm test -- tests/integration
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 11.3 API调试工具
|
|||
|
|
|
|||
|
|
推荐使用以下工具进行API测试:
|
|||
|
|
- Postman
|
|||
|
|
- Insomnia
|
|||
|
|
- curl
|
|||
|
|
- Thunder Client (VS Code插件)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**文档维护**:本文档基于实际代码实现编写,与系统保持同步更新。
|
|||
|
|
|
|||
|
|
**技术支持**:如有疑问,请联系开发团队。
|
|||
|
|
|
|||
|
|
**最后更新时间**:2025年1月20日
|