261 lines
5.3 KiB
Markdown
261 lines
5.3 KiB
Markdown
# 后端API接口文档
|
||
|
||
## 概述
|
||
|
||
本文档描述了前端小程序需要后端提供的RESTful API接口。系统支持双模式运行:
|
||
- **模拟数据模式**:使用本地模拟数据进行开发和测试
|
||
- **真实API模式**:连接真实后端服务进行联调和生产
|
||
|
||
## 基础信息
|
||
|
||
- **基础URL**: `http://localhost:3000/api`
|
||
- **认证方式**: JWT Token(Bearer Token)
|
||
- **数据格式**: JSON
|
||
|
||
## 接口列表
|
||
|
||
### 1. 用户相关接口
|
||
|
||
|
||
|
||
#### 1.2 获取用户信息
|
||
- **URL**: `/user/info`
|
||
- **方法**: GET
|
||
- **认证**: 需要Token
|
||
- **响应**: 同登录接口的用户信息格式
|
||
|
||
#### 1.3 用户登出
|
||
- **URL**: `/user/logout`
|
||
- **方法**: POST
|
||
- **认证**: 需要Token
|
||
|
||
### 2. 仓库相关接口
|
||
|
||
#### 2.1 获取所有仓库列表
|
||
- **URL**: `/warehouses`
|
||
- **方法**: GET
|
||
- **响应**:
|
||
```json
|
||
[
|
||
{
|
||
"id": 1,
|
||
"name": "瓦尔塔蓄电池昆明总店",
|
||
"address": "昆明市五华区二环西路599号",
|
||
"contact": "刘经理",
|
||
"phone": "0871-65123456",
|
||
"description": "瓦尔塔蓄电池云南总代理,提供全系列蓄电池产品",
|
||
"status": "open",
|
||
"capacity": 2000
|
||
}
|
||
]
|
||
```
|
||
|
||
#### 2.2 获取指定仓库详情
|
||
- **URL**: `/warehouses/{id}`
|
||
- **方法**: GET
|
||
- **响应**: 单个仓库对象
|
||
|
||
#### 2.3 获取仓库相关订单
|
||
- **URL**: `/warehouses/{id}/orders`
|
||
- **方法**: GET
|
||
- **响应**: 订单列表(格式见订单接口)
|
||
|
||
### 3. 货运人员接口
|
||
|
||
#### 3.1 获取所有货运人员
|
||
- **URL**: `/delivery-persons`
|
||
- **方法**: GET
|
||
- **响应**:
|
||
```json
|
||
[
|
||
{
|
||
"id": 101,
|
||
"name": "张师傅",
|
||
"phone": "13812345678",
|
||
"avatarUrl": "/images/trucks.png",
|
||
"status": "idle",
|
||
"currentLocation": {
|
||
"longitude": 102.714585,
|
||
"latitude": 25.046321
|
||
},
|
||
"currentOrders": []
|
||
}
|
||
]
|
||
```
|
||
|
||
#### 3.2 获取指定货运人员详情
|
||
- **URL**: `/delivery-persons/{id}`
|
||
- **方法**: GET
|
||
- **响应**: 单个货运人员对象
|
||
|
||
#### 3.3 更新货运人员位置
|
||
- **URL**: `/delivery-persons/{id}/location`
|
||
- **方法**: PUT
|
||
- **请求体**:
|
||
```json
|
||
{
|
||
"longitude": 102.714585,
|
||
"latitude": 25.046321
|
||
}
|
||
```
|
||
|
||
### 4. 订单接口
|
||
|
||
#### 4.1 获取待指派订单
|
||
- **URL**: `/orders/pending`
|
||
- **方法**: GET
|
||
- **响应**:
|
||
```json
|
||
[
|
||
{
|
||
"id": 1001,
|
||
"startPoint": {
|
||
"id": 1,
|
||
"name": "瓦尔塔蓄电池昆明总店",
|
||
"longitude": 102.705745,
|
||
"latitude": 25.055281
|
||
},
|
||
"endPoint": {
|
||
"name": "昆明德众汽车销售服务有限公司",
|
||
"longitude": 102.714686,
|
||
"latitude": 25.047134
|
||
},
|
||
"status": "pending",
|
||
"goodsType": "瓦尔塔AGM蓄电池",
|
||
"goodsWeight": 50,
|
||
"createTime": 1640995200000
|
||
}
|
||
]
|
||
```
|
||
|
||
#### 4.2 指派订单给货运人员
|
||
- **URL**: `/orders/{id}/assign`
|
||
- **方法**: POST
|
||
- **请求体**:
|
||
```json
|
||
{
|
||
"deliveryPersonId": 101
|
||
}
|
||
```
|
||
|
||
#### 4.3 获取货运人员当前订单
|
||
- **URL**: `/delivery-persons/{id}/orders`
|
||
- **方法**: GET
|
||
- **响应**: 订单列表
|
||
|
||
## 数据格式说明
|
||
|
||
### 用户信息 (UserInfo)
|
||
```typescript
|
||
interface UserInfo {
|
||
id: number;
|
||
name: string;
|
||
role: 'admin' | 'delivery_person';
|
||
avatarUrl: string;
|
||
phone: string;
|
||
}
|
||
```
|
||
|
||
### 仓库信息 (WarehouseInfo)
|
||
```typescript
|
||
interface WarehouseInfo {
|
||
id: number;
|
||
name: string;
|
||
address: string;
|
||
contact: string;
|
||
phone: string;
|
||
description: string;
|
||
status: 'open' | 'closed' | 'maintenance';
|
||
capacity: number;
|
||
}
|
||
```
|
||
|
||
### 货运人员 (DeliveryPerson)
|
||
```typescript
|
||
interface DeliveryPerson {
|
||
id: number;
|
||
name: string;
|
||
phone: string;
|
||
avatarUrl: string;
|
||
status: 'idle' | 'busy';
|
||
currentLocation: {
|
||
longitude: number;
|
||
latitude: number;
|
||
};
|
||
currentOrders: Order[];
|
||
}
|
||
```
|
||
|
||
### 订单 (Order)
|
||
```typescript
|
||
interface Order {
|
||
id: number;
|
||
startPoint: {
|
||
id: number;
|
||
name: string;
|
||
longitude: number;
|
||
latitude: number;
|
||
};
|
||
endPoint: {
|
||
name: string;
|
||
longitude: number;
|
||
latitude: number;
|
||
};
|
||
status: 'pending' | 'assigned' | 'in_transit' | 'delivered';
|
||
goodsType: string;
|
||
goodsWeight: number;
|
||
createTime: number;
|
||
assignTime?: number;
|
||
deliveryTime?: number;
|
||
}
|
||
```
|
||
|
||
## 错误处理
|
||
|
||
所有接口应返回标准的HTTP状态码:
|
||
- 200: 成功
|
||
- 400: 请求参数错误
|
||
- 401: 未授权
|
||
- 403: 禁止访问
|
||
- 404: 资源不存在
|
||
- 500: 服务器内部错误
|
||
|
||
错误响应格式:
|
||
```json
|
||
{
|
||
"error": {
|
||
"code": "ERROR_CODE",
|
||
"message": "错误描述信息"
|
||
}
|
||
}
|
||
```
|
||
|
||
## 前端架构说明
|
||
|
||
前端采用双服务架构:
|
||
|
||
1. **桥接服务 (BridgeService)**: 统一的数据访问层,根据配置自动选择数据源
|
||
2. **API服务 (ApiService)**: 真实后端API调用
|
||
3. **模拟数据服务 (DataService/DeliveryService)**: 本地模拟数据提供
|
||
|
||
**切换模式**: 通过设置页面或代码配置可在两种模式间切换:
|
||
- 模拟数据模式:`USE_MOCK_DATA = true`
|
||
- 真实API模式:`USE_MOCK_DATA = false`
|
||
|
||
## 部署要求
|
||
|
||
1. 后端服务应运行在 `http://localhost:3000`
|
||
2. 支持CORS跨域请求
|
||
3. 提供稳定的API服务,响应时间控制在500ms以内
|
||
4. 支持HTTPS(生产环境)
|
||
|
||
## 开发建议
|
||
|
||
1. 先使用模拟数据模式进行前端功能开发
|
||
2. 开发完成后,切换到真实API模式进行联调测试
|
||
3. 确保接口数据格式与模拟数据保持一致
|
||
4. 提供详细的错误日志和调试信息
|
||
|
||
## 联系方式
|
||
|
||
如有接口相关问题,请联系前端开发团队。 |