319 行
7.6 KiB
Markdown
319 行
7.6 KiB
Markdown
# 骑手订单分配系统
|
||
|
||
## 系统概述
|
||
|
||
本系统是在现有电商系统基础上扩展的骑手订单分配功能,实现了智能订单分配、位置追踪、状态同步等核心功能,确保不影响原系统的正常运行。
|
||
|
||
## 功能特性
|
||
|
||
### 1. 智能订单分配
|
||
- **自动分配算法**:基于距离、骑手状态、负载均衡等多因素智能分配
|
||
- **手动分配**:支持后台管理员手动指定骑手
|
||
- **批量分配**:支持批量处理多个订单
|
||
- **重新分配**:订单被拒绝后自动重新分配
|
||
|
||
### 2. 骑手管理
|
||
- **骑手注册**:支持骑手信息注册和审核
|
||
- **状态管理**:工作状态、在线状态实时管理
|
||
- **评分系统**:基于服务质量的评分机制
|
||
- **权限控制**:不同级别骑手的权限管理
|
||
|
||
### 3. 位置追踪
|
||
- **实时定位**:骑手位置实时更新
|
||
- **轨迹记录**:完整的配送轨迹记录
|
||
- **范围查询**:查找指定范围内的可用骑手
|
||
- **到达提醒**:自动检测到达门店和客户位置
|
||
|
||
### 4. 订单状态同步
|
||
- **双向同步**:骑手端和原系统订单状态实时同步
|
||
- **状态一致性**:确保数据一致性检查和修复
|
||
- **操作日志**:完整的操作日志记录
|
||
- **异常处理**:同步失败自动重试机制
|
||
|
||
## 系统架构
|
||
|
||
### 数据表结构
|
||
|
||
#### 1. 骑手信息表 (ls_rider_info)
|
||
```sql
|
||
- id: 骑手ID
|
||
- real_name: 真实姓名
|
||
- phone: 手机号
|
||
- id_card: 身份证号
|
||
- store_id: 所属门店ID
|
||
- status: 账号状态 (0禁用 1启用)
|
||
- work_status: 工作状态 (0休息 1工作中)
|
||
- rating: 评分
|
||
- max_orders: 最大接单数
|
||
- last_location_lat/lng: 最后位置
|
||
- created_at/updated_at: 创建/更新时间
|
||
```
|
||
|
||
#### 2. 骑手订单表 (ls_rider_order)
|
||
```sql
|
||
- id: 记录ID
|
||
- rider_id: 骑手ID
|
||
- bill_id: 原系统订单ID
|
||
- order_status: 订单状态 (0待接单 1已接单 2已取货 3配送中 4已完成 5已拒绝 6已取消)
|
||
- assign_time: 分配时间
|
||
- accept_time: 接单时间
|
||
- pickup_time: 取货时间
|
||
- delivery_time: 配送完成时间
|
||
- estimated_time: 预计送达时间
|
||
- delivery_fee: 配送费
|
||
```
|
||
|
||
#### 3. 骑手位置表 (ls_rider_location)
|
||
```sql
|
||
- id: 记录ID
|
||
- rider_id: 骑手ID
|
||
- lat/lng: 经纬度
|
||
- accuracy: GPS精度
|
||
- speed: 速度
|
||
- bearing: 方向角
|
||
- record_time: 记录时间
|
||
```
|
||
|
||
#### 4. 订单同步日志表 (ls_rider_order_sync_log)
|
||
```sql
|
||
- id: 日志ID
|
||
- rider_order_id: 骑手订单ID
|
||
- bill_id: 原系统订单ID
|
||
- action: 操作类型
|
||
- description: 操作描述
|
||
- sync_time: 同步时间
|
||
```
|
||
|
||
### 核心业务类
|
||
|
||
#### 1. RiderOrderDispatch (订单分配)
|
||
- `autoDispatch()`: 自动分配订单
|
||
- `manualDispatch()`: 手动分配订单
|
||
- `getAvailableRiders()`: 获取可用骑手
|
||
- `calculateBestRider()`: 计算最佳骑手
|
||
|
||
#### 2. OrderMatching (订单匹配)
|
||
- `smartMatch()`: 智能匹配算法
|
||
- `batchMatch()`: 批量匹配
|
||
- `calculateMatchScores()`: 计算匹配分数
|
||
|
||
#### 3. OrderStatusSync (状态同步)
|
||
- `syncOrderStatus()`: 同步订单状态
|
||
- `checkStatusConsistency()`: 检查状态一致性
|
||
- `fixStatusInconsistency()`: 修复状态不一致
|
||
|
||
#### 4. RiderLocationModel (位置管理)
|
||
- `addLocation()`: 添加位置记录
|
||
- `getRidersInRange()`: 获取范围内骑手
|
||
- `calculateDistance()`: 计算距离
|
||
- `predictArrivalTime()`: 预测到达时间
|
||
|
||
## API接口
|
||
|
||
### 骑手端接口 (Api/Controller/RiderOrderController)
|
||
|
||
#### 1. 获取订单列表
|
||
```
|
||
POST /Api/RiderOrder/getOrderList
|
||
参数: token, status, page, limit
|
||
返回: 订单列表数据
|
||
```
|
||
|
||
#### 2. 接受订单
|
||
```
|
||
POST /Api/RiderOrder/acceptOrder
|
||
参数: token, rider_order_id
|
||
返回: 操作结果
|
||
```
|
||
|
||
#### 3. 开始配送
|
||
```
|
||
POST /Api/RiderOrder/startDelivery
|
||
参数: token, rider_order_id
|
||
返回: 操作结果
|
||
```
|
||
|
||
#### 4. 完成配送
|
||
```
|
||
POST /Api/RiderOrder/completeDelivery
|
||
参数: token, rider_order_id
|
||
返回: 操作结果
|
||
```
|
||
|
||
### 位置追踪接口 (Api/Controller/RiderLocationController)
|
||
|
||
#### 1. 更新位置
|
||
```
|
||
POST /Api/RiderLocation/updateLocation
|
||
参数: token, lat, lng, accuracy, speed
|
||
返回: 操作结果
|
||
```
|
||
|
||
#### 2. 获取位置轨迹
|
||
```
|
||
POST /Api/RiderLocation/getLocationTrack
|
||
参数: token, start_time, end_time
|
||
返回: 位置轨迹数据
|
||
```
|
||
|
||
### 后台管理接口 (Admin/Controller/RiderManageController)
|
||
|
||
#### 1. 订单分配页面
|
||
```
|
||
GET /Admin/RiderManage/orderDispatch
|
||
返回: 分配页面
|
||
```
|
||
|
||
#### 2. 获取待分配订单
|
||
```
|
||
POST /Admin/RiderManage/getPendingOrders
|
||
参数: page, limit, store_id
|
||
返回: 待分配订单列表
|
||
```
|
||
|
||
#### 3. 手动分配订单
|
||
```
|
||
POST /Admin/RiderManage/manualDispatch
|
||
参数: bill_id, rider_id
|
||
返回: 分配结果
|
||
```
|
||
|
||
## 安装部署
|
||
|
||
### 1. 数据库初始化
|
||
执行 `client/rider_tables.sql` 文件创建相关数据表:
|
||
```bash
|
||
mysql -u username -p database_name < client/rider_tables.sql
|
||
```
|
||
|
||
### 2. 文件部署
|
||
将以下文件复制到对应目录:
|
||
- 业务逻辑类:`Application/Common/Business/`
|
||
- 模型类:`Application/Common/Model/`
|
||
- 控制器类:`Application/Api/Controller/` 和 `Application/Admin/Controller/`
|
||
|
||
### 3. 配置检查
|
||
确保以下配置正确:
|
||
- 数据库连接配置
|
||
- 缓存配置
|
||
- 日志配置
|
||
|
||
### 4. 功能测试
|
||
运行测试脚本验证功能:
|
||
```bash
|
||
php test_rider_system.php
|
||
```
|
||
|
||
## 使用流程
|
||
|
||
### 1. 骑手注册流程
|
||
1. 骑手提交注册信息
|
||
2. 后台管理员审核
|
||
3. 审核通过后激活账号
|
||
4. 骑手登录开始工作
|
||
|
||
### 2. 订单分配流程
|
||
1. 客户下单(原系统)
|
||
2. 订单进入待分配状态
|
||
3. 系统自动匹配最佳骑手
|
||
4. 骑手接收订单通知
|
||
5. 骑手确认接单
|
||
|
||
### 3. 配送流程
|
||
1. 骑手前往门店取货
|
||
2. 系统检测到达门店
|
||
3. 骑手确认取货
|
||
4. 开始配送到客户
|
||
5. 系统检测到达客户位置
|
||
6. 骑手完成配送
|
||
|
||
### 4. 状态同步流程
|
||
1. 骑手端状态变更
|
||
2. 触发同步机制
|
||
3. 更新原系统订单状态
|
||
4. 记录同步日志
|
||
5. 发送状态通知
|
||
|
||
## 配置参数
|
||
|
||
### 分配算法参数
|
||
```php
|
||
// 最大分配距离(公里)
|
||
'max_dispatch_distance' => 10,
|
||
|
||
// 骑手最大接单数
|
||
'max_orders_per_rider' => 3,
|
||
|
||
// 分配超时时间(秒)
|
||
'dispatch_timeout' => 300,
|
||
|
||
// 自动重新分配次数
|
||
'max_reassign_times' => 3,
|
||
```
|
||
|
||
### 位置追踪参数
|
||
```php
|
||
// 位置更新间隔(秒)
|
||
'location_update_interval' => 30,
|
||
|
||
// 位置记录保留天数
|
||
'location_retention_days' => 30,
|
||
|
||
// GPS精度要求(米)
|
||
'gps_accuracy_threshold' => 50,
|
||
```
|
||
|
||
## 监控和维护
|
||
|
||
### 1. 日志监控
|
||
- 订单分配日志:`ls_rider_order_sync_log`
|
||
- 系统错误日志:ThinkPHP日志系统
|
||
- 位置追踪日志:`ls_rider_location`
|
||
|
||
### 2. 性能监控
|
||
- 分配响应时间
|
||
- 同步成功率
|
||
- 骑手在线率
|
||
- 订单完成率
|
||
|
||
### 3. 数据维护
|
||
- 定期清理过期位置数据
|
||
- 清理过期同步日志
|
||
- 备份重要业务数据
|
||
- 检查数据一致性
|
||
|
||
## 常见问题
|
||
|
||
### Q1: 订单分配失败怎么办?
|
||
A: 系统会自动重试分配,如果多次失败会记录日志,管理员可以手动分配。
|
||
|
||
### Q2: 位置追踪不准确怎么办?
|
||
A: 检查GPS精度设置,确保骑手端开启高精度定位,调整精度阈值参数。
|
||
|
||
### Q3: 状态同步失败怎么办?
|
||
A: 系统有自动重试机制,可以查看同步日志定位问题,必要时手动修复数据。
|
||
|
||
### Q4: 如何优化分配算法?
|
||
A: 根据实际业务数据调整各项权重参数,可以通过A/B测试验证效果。
|
||
|
||
## 技术支持
|
||
|
||
如有技术问题,请查看:
|
||
1. 系统日志文件
|
||
2. 数据库错误日志
|
||
3. 测试报告文件
|
||
4. 本文档常见问题部分
|
||
|
||
## 版本更新
|
||
|
||
### v1.0.0 (当前版本)
|
||
- 基础订单分配功能
|
||
- 位置追踪功能
|
||
- 状态同步机制
|
||
- 后台管理界面
|
||
|
||
### 后续规划
|
||
- 推送通知功能
|
||
- 数据统计分析
|
||
- 移动端APP
|
||
- 第三方配送平台对接 |