order-processing-workflow.md 4.9 KB

订单处理流程文档

版本信息

版本 日期 描述 作者
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 通知服务

    系统定时器->>订单服务: 检查待出发订单
    订单服务->>数据库: 查询出发时间到达的订单
    数据库-->>订单服务: 返回待处理订单列表
    订单服务->>数据库: 批量更新状态为"行程中"
    订单服务->>通知服务: 发送行程开始通知

    系统定时器->>订单服务: 检查行程中订单
    订单服务->>数据库: 查询行程结束的订单
    数据库-->>订单服务: 返回待完成订单列表
    订单服务->>数据库: 批量更新状态为"已完成"
    订单服务->>通知服务: 发送行程完成通知

关键业务规则

订单创建规则

  1. 路线验证: 检查路线是否有效且未过期
  2. 座位验证: 检查剩余座位是否足够
  3. 乘客验证: 验证乘客信息的完整性和有效性
  4. 价格计算: 基于路线价格和乘客数量计算总金额

支付规则

  1. 支付超时: 订单创建后30分钟内未支付自动取消
  2. 支付重试: 支付失败后可重新发起支付
  3. 支付状态同步: 定期与微信支付同步支付状态

取消规则

  1. 用户取消: 用户可在出发前2小时取消订单
  2. 系统取消: 超时未支付、路线取消等情况自动取消
  3. 退款处理: 已支付的订单取消后自动退款

数据快照机制

快照内容

  • 路线快照: 保存下单时的路线信息(上车点、下车点、出发时间、价格等)
  • 乘客快照: 保存下单时的乘客信息(姓名、证件类型、证件号码等)
  • 活动快照: 保存下单时的活动信息(活动名称、类型等)

快照目的

  • 确保历史订单数据完整性
  • 防止路线信息变更影响历史订单
  • 支持订单追溯和争议处理

异常处理

常见异常场景

  1. 支付异常: 支付失败、支付超时、重复支付
  2. 库存异常: 座位不足、路线已满
  3. 数据异常: 乘客信息错误、路线信息变更
  4. 系统异常: 服务不可用、数据库连接失败

异常处理策略

  1. 重试机制: 临时性错误自动重试
  2. 降级处理: 非关键功能降级处理
  3. 人工干预: 复杂异常转人工处理
  4. 监控告警: 异常情况实时告警

性能优化

数据库优化

  • 订单表按时间分区
  • 常用查询字段添加索引
  • 定期归档历史订单

缓存策略

  • 热门路线信息缓存
  • 用户常用乘客信息缓存
  • 订单状态变更记录缓存

异步处理

  • 支付结果异步处理
  • 状态更新异步处理
  • 通知发送异步处理

监控指标

业务指标

  • 订单创建成功率
  • 支付成功率
  • 订单取消率
  • 平均订单完成时间

技术指标

  • API响应时间
  • 数据库查询性能
  • 缓存命中率
  • 系统可用性