📱 1. 用户下单与支付时序图
sequenceDiagram
participant U as 用户
participant APP as 客户端
participant API as Midway后端
participant DB as 数据库
participant PAY as 支付服务
participant COURIER as 配送员
U->>APP: 1.选择服务类型(帮我送/买/办)
APP->>API: 2.请求费用试算
API->>DB: 3.查询计价规则
DB-->>API: 4.返回规则
API-->>APP: 5.返回报价
APP-->>U: 6.显示费用明细
U->>APP: 7.填写发件/收件信息
U->>APP: 8.选择优惠券
APP->>API: 9.校验优惠券
API-->>APP: 10.返回优惠金额
U->>APP: 11.确认下单
APP->>API: 12.创建订单
API->>DB: 13.写入订单
API-->>APP: 14.返回订单号
APP->>PAY: 15.发起支付
PAY->>U: 16.微信支付
U-->>PAY: 17.支付完成
PAY-->>API: 18.支付回调
API->>DB: 19.更新支付状态
API-->>APP: 20.支付成功
API->>COURIER: 21.推送新订单通知
Note over COURIER: 骑手可在订单大厅抢单
🏍️ 2. 配送员抢单与配送时序图
sequenceDiagram
participant C as 配送员
participant APP as 骑手APP
participant API as Midway后端
participant DB as 数据库
participant LOC as 位置服务
participant U as 用户
C->>APP: 1.打开订单大厅
APP->>API: 2.获取待抢订单列表
API->>DB: 3.查询可用订单
DB-->>API: 4.返回订单列表
API-->>APP: 5.返回订单
APP-->>C: 6.展示可抢订单
C->>APP: 7.点击抢单
APP->>API: 8.发起抢单请求
API->>DB: 9.检查订单状态
API->>DB: 10.锁定订单
API->>DB: 11.更新配送员
API-->>APP: 12.抢单成功
APP-->>C: 13.显示已接单
API-->>U: 14.推送接单通知
C->>APP: 15.点击确认取件
APP->>API: 16.确认取件
API->>DB: 17.更新状态为配送中
API-->>U: 18.推送取件通知
loop 实时位置上报
APP->>LOC: 19.获取当前位置
LOC-->>APP: 20.GPS坐标
APP->>API: 21.上报位置
API->>DB: 22.更新骑手位置
DB-->>API: 23.更新成功
API-->>U: 24.推送骑手位置
U->>APP: 25.查看骑手实时位置
end
C->>APP: 26.点击确认送达
APP->>API: 27.确认送达
API->>DB: 28.更新状态为已完成
API-->>U: 29.推送送达通知
U->>APP: 30.确认完成/评价
🖥️ 3. 管理后台调度时序图
sequenceDiagram
participant ADMIN as 运营/调度
participant BACK as 管理后台
participant API as Midway后端
participant DB as 数据库
participant MSG as 消息通知
ADMIN->>BACK: 1.进入调度中心
BACK->>API: 2.获取待调度订单
API->>DB: 3.查询未分配订单
DB-->>API: 4.返回订单列表
API-->>BACK: 5.展示待调度订单
ADMIN->>BACK: 6.选择订单
BACK->>API: 7.获取可用骑手
API->>DB: 8.查询附近空闲骑手
DB-->>API: 9.返回骑手列表
API-->>BACK: 10.展示骑手位置与状态
ADMIN->>BACK: 11.选择骑手并指派
BACK->>API: 12.发起指派请求
API->>DB: 13.更新订单配送员
API->>DB: 14.更新订单状态
API->>MSG: 15.推送接单通知
API-->>BACK: 16.指派成功
BACK-->>ADMIN: 17.显示指派结果
❌ 4. 取消订单时序图
sequenceDiagram
participant U as 用户
participant C as 配送员
participant APP as 客户端
participant API as Midway后端
participant DB as 数据库
participant PAY as 支付服务
participant ADMIN as 后台客服
alt 用户取消(未接单前)
U->>APP: 1.点击取消订单
APP->>API: 2.发送取消请求
API->>DB: 3.检查订单状态
alt 可以取消
API->>DB: 4.更新状态为已取消
API->>PAY: 5.申请退款
PAY-->>API: 6.退款成功
API-->>APP: 7.取消成功
APP-->>U: 8.显示取消结果
else 不可取消
API-->>APP: 返回错误
APP-->>U: 显示不可取消原因
end
alt 骑手取消(已接单后)
C->>APP: 1.点击取消订单
APP->>API: 2.发送取消请求
API->>DB: 3.检查状态
API->>DB: 4.更新状态为待调度
API->>MSG: 5.通知用户订单重新派单
API->>ADMIN: 6.记录取消原因
API-->>APP: 7.取消成功
APP-->>C: 8.返回订单列表
end
alt 后台取消
ADMIN->>BACK: 1.后台取消订单
BACK->>API: 2.发送取消请求
API->>DB: 3.更新状态
API->>PAY: 4.申请退款
PAY-->>API: 5.退款
API->>MSG: 6.通知双方
API-->>BACK: 7.完成
end
👤 5. 用户端交互流程
发单流程
↓
2
填写发件人 — 姓名、电话、地址(定位或手动输入)
↓
↓
↓
↓
↓
↓
查看订单流程
1
进入订单列表 — 查看全部/待支付/进行中/已完成
↓
↓
↓
↓
🏍️ 6. 配送员端交互流程
抢单流程
↓
2
查看订单详情 — 取件地址、送件地址、距离、费用
↓
↓
↓
配送执行流程
🔄 7. 订单状态流转图
stateDiagram-v2
[*] --> 待支付: 用户下单
待支付 --> 待接单: 支付成功
待支付 --> 已取消: 用户取消/超时
待接单 --> 已接单: 骑手抢单
待接单 --> 已取消: 后台取消
已接单 --> 配送中: 确认取件
已接单 --> 待接单: 骑手取消
配送中 --> 已送达: 确认送达
配送中 --> 配送中: 联系收件人修改地址
配送中 --> 待接单: 异常取消
已送达 --> 已完成: 用户确认
已送达 --> 已评价: 用户评价
已完成 --> 已评价: 用户评价
已取消 --> [*]
已评价 --> [*]
已完成 --> [*]
🗺️ 8. 页面跳转流程
flowchart TD
subgraph User[用户端]
U1[首页] --> U2[发单页]
U1 --> U3[订单列表]
U3 --> U4[订单详情]
U4 --> U5[地图追踪]
U1 --> U6[我的钱包]
U1 --> U7[优惠券]
U1 --> U8[地址管理]
U1 --> U9[帮助客服]
end
subgraph Courier[配送员端]
C1[骑手首页] --> C2[订单大厅]
C2 --> C3[订单详情]
C3 --> C4[导航取件]
C4 --> C5[确认取件]
C5 --> C6[导航送件]
C6 --> C7[确认送达]
C1 --> C8[我的钱包]
C1 --> C9[任务统计]
end
subgraph Admin[管理后台]
A1[调度中心] --> A2[订单管理]
A1 --> A3[配送员管理]
A1 --> A4[地图监控]
A2 --> A5[订单详情]
A3 --> A6[配送员详情]
A1 --> A7[财务管理]
A1 --> A8[优惠券管理]
end