订单处理流程文档
版本信息
| 版本 |
日期 |
描述 |
作者 |
| 1.0 |
2025-10-15 |
创建订单处理流程文档 |
Winston |
订单状态机
订单状态流转
stateDiagram-v2
[*] --> 待支付
待支付 --> 待出发: 支付成功
待支付 --> 已取消: 取消订单
待出发 --> 行程中: 出发时间到达
行程中 --> 已完成: 行程结束
待出发 --> 已取消: 取消订单
行程中 --> 已取消: 取消订单
已完成 --> [*]
已取消 --> [*]
状态说明
- 待支付: 用户下单后,订单创建成功但尚未支付
- 待出发: 支付成功,等待出发时间到达
- 行程中: 出发时间到达,行程正在进行中
- 已完成: 行程正常结束
- 已取消: 用户或系统取消订单
订单处理流程
1. 下单流程
sequenceDiagram
participant 用户
participant 前端
participant API
participant 数据库
participant 支付服务
用户->>前端: 选择路线和乘客
前端->>API: 创建订单请求
API->>数据库: 验证路线可用性
API->>数据库: 创建订单记录
API-->>前端: 返回订单详情和支付信息
前端->>支付服务: 发起支付请求
支付服务-->>前端: 返回支付结果
前端->>用户: 显示支付结果
2. 支付流程
sequenceDiagram
participant 用户
participant 小程序
participant 后端
participant 微信支付
用户->>小程序: 确认支付
小程序->>后端: 请求支付参数
后端->>微信支付: 创建支付订单
微信支付-->>后端: 返回支付参数
后端-->>小程序: 返回支付参数
小程序->>微信支付: 调用支付接口
微信支付-->>小程序: 支付结果
小程序->>后端: 通知支付结果
后端->>数据库: 更新订单状态
后端-->>小程序: 确认支付成功
小程序->>用户: 显示支付成功
3. 状态更新流程
sequenceDiagram
participant 系统定时器
participant 订单服务
participant 数据库
participant 通知服务
系统定时器->>订单服务: 检查待出发订单
订单服务->>数据库: 查询出发时间到达的订单
数据库-->>订单服务: 返回待处理订单列表
订单服务->>数据库: 批量更新状态为"行程中"
订单服务->>通知服务: 发送行程开始通知
系统定时器->>订单服务: 检查行程中订单
订单服务->>数据库: 查询行程结束的订单
数据库-->>订单服务: 返回待完成订单列表
订单服务->>数据库: 批量更新状态为"已完成"
订单服务->>通知服务: 发送行程完成通知
关键业务规则
订单创建规则
- 路线验证: 检查路线是否有效且未过期
- 座位验证: 检查剩余座位是否足够
- 乘客验证: 验证乘客信息的完整性和有效性
- 价格计算: 基于路线价格和乘客数量计算总金额
支付规则
- 支付超时: 订单创建后30分钟内未支付自动取消
- 支付重试: 支付失败后可重新发起支付
- 支付状态同步: 定期与微信支付同步支付状态
取消规则
- 用户取消: 用户可在出发前2小时取消订单
- 系统取消: 超时未支付、路线取消等情况自动取消
- 退款处理: 已支付的订单取消后自动退款
数据快照机制
快照内容
- 路线快照: 保存下单时的路线信息(上车点、下车点、出发时间、价格等)
- 乘客快照: 保存下单时的乘客信息(姓名、证件类型、证件号码等)
- 活动快照: 保存下单时的活动信息(活动名称、类型等)
快照目的
- 确保历史订单数据完整性
- 防止路线信息变更影响历史订单
- 支持订单追溯和争议处理
异常处理
常见异常场景
- 支付异常: 支付失败、支付超时、重复支付
- 库存异常: 座位不足、路线已满
- 数据异常: 乘客信息错误、路线信息变更
- 系统异常: 服务不可用、数据库连接失败
异常处理策略
- 重试机制: 临时性错误自动重试
- 降级处理: 非关键功能降级处理
- 人工干预: 复杂异常转人工处理
- 监控告警: 异常情况实时告警
性能优化
数据库优化
- 订单表按时间分区
- 常用查询字段添加索引
- 定期归档历史订单
缓存策略
- 热门路线信息缓存
- 用户常用乘客信息缓存
- 订单状态变更记录缓存
异步处理
- 支付结果异步处理
- 状态更新异步处理
- 通知发送异步处理
监控指标
业务指标
- 订单创建成功率
- 支付成功率
- 订单取消率
- 平均订单完成时间
技术指标
- API响应时间
- 数据库查询性能
- 缓存命中率
- 系统可用性