# 订单处理流程文档

## 版本信息
| 版本 | 日期 | 描述 | 作者 |
|------|------|------|------|
| 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响应时间
- 数据库查询性能
- 缓存命中率
- 系统可用性