# 订单处理流程文档 ## 版本信息 | 版本 | 日期 | 描述 | 作者 | |------|------|------|------| | 1.0 | 2025-10-15 | 创建订单处理流程文档 | Winston | ## 订单状态机 ### 订单状态流转 ```mermaid stateDiagram-v2 [*] --> 待支付 待支付 --> 待出发: 支付成功 待支付 --> 已取消: 取消订单 待出发 --> 行程中: 出发时间到达 行程中 --> 已完成: 行程结束 待出发 --> 已取消: 取消订单 行程中 --> 已取消: 取消订单 已完成 --> [*] 已取消 --> [*] ``` ### 状态说明 - **待支付**: 用户下单后,订单创建成功但尚未支付 - **待出发**: 支付成功,等待出发时间到达 - **行程中**: 出发时间到达,行程正在进行中 - **已完成**: 行程正常结束 - **已取消**: 用户或系统取消订单 ## 订单处理流程 ### 1. 下单流程 ```mermaid sequenceDiagram participant 用户 participant 前端 participant API participant 数据库 participant 支付服务 用户->>前端: 选择路线和乘客 前端->>API: 创建订单请求 API->>数据库: 验证路线可用性 API->>数据库: 创建订单记录 API-->>前端: 返回订单详情和支付信息 前端->>支付服务: 发起支付请求 支付服务-->>前端: 返回支付结果 前端->>用户: 显示支付结果 ``` ### 2. 支付流程 ```mermaid sequenceDiagram participant 用户 participant 小程序 participant 后端 participant 微信支付 用户->>小程序: 确认支付 小程序->>后端: 请求支付参数 后端->>微信支付: 创建支付订单 微信支付-->>后端: 返回支付参数 后端-->>小程序: 返回支付参数 小程序->>微信支付: 调用支付接口 微信支付-->>小程序: 支付结果 小程序->>后端: 通知支付结果 后端->>数据库: 更新订单状态 后端-->>小程序: 确认支付成功 小程序->>用户: 显示支付成功 ``` ### 3. 状态更新流程 ```mermaid 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响应时间 - 数据库查询性能 - 缓存命中率 - 系统可用性