# 数据模型：闪送配送服务

## `flash_delivery_order`

核心字段：`id`、唯一 `order_no`、与用户联合唯一的 `client_request_id`、创建人 `user_id`、创建时按收件手机号唯一匹配并固化的可空 `receiver_user_id`、`rider_id`、帮送/帮取 `service_type`、普通/加急 `delivery_type`、`status`；`package_type`、正整数 `quantity`、两位小数 `total_weight_kg`、可空 `specification`、服务端生成的 `package_size`；`delivery_mode`、预约开始/结束时间；`pin_required`、四位交付 PIN；取件/收件联系人、电话、市/区、交付方式、地址、详细地址和经纬度快照；`distance_meters`、`distance_source`、`estimated_duration_seconds`；整数 `amount`、`currency`、`pricing_id`、`pricing_version`、`pricing_start_time`、`pricing_end_time`、`starting_distance`、`starting_fare`、`distance`、`freight`、`distance_fee`、`base_delivery_fee`、`urgent_rate`、`minimum_urgent_fee`、`urgent_fee`、`tip_amount` 计价快照；`user_note`、`version`、关键状态时间、取消审计及创建/更新时间。

索引：订单号唯一、用户幂等号唯一、待抢排序、创建人列表、收件人列表、骑手列表、自动完成扫描。`receiver_user_id` 只保存创建当时唯一匹配的普通用户；空值和历史订单不补写，用户手机号变更也不回写。

## `flash_delivery_pricing`

帮送与帮取共享多个统一运价时段，不再保存 `service_type`。字段为 `start_time`、`end_time`、`starting_distance`、整数 `starting_fare`、`distance`、整数 `freight`、非负两位小数百分比 `urgent_rate`、非负整数 `minimum_urgent_fee`、`config_version`、`updated_by` 和创建/更新时间。配置保存即生效，不保存 `enabled`；全部时间段不得重叠，索引支持按时间匹配目标时刻。有效修改后版本加一，历史订单不回写。时段查询不使用 `LIMIT 1` 隐藏异常数据；若匹配到多条则明确返回配置重叠错误。

## `flash_delivery_pricing_lock`

改为只保存一行全局运价锁，例如固定主键 `GLOBAL`。新增、修改和删除运价时，事务先通过 `SELECT ... FOR UPDATE` 取得该锁，再检查全部时间段重叠并写入，避免并发请求同时通过“先查重、后写入”。

## `flash_delivery_order_image`

保存 `order_id`、`proof_type`（SENDER/PICKUP/DELIVERY）、`image_url`、`sort_order`、`operator_type`、`operator_id`、`create_time`。

## `flash_delivery_order_log`

保存 `order_id`、`from_status`、`to_status`、`operator_type`（USER/RIDER/ADMIN/SYSTEM）、`operator_id`、`reason`、`create_time`。

## `info_address` 增量

新增 `is_top tinyint(1) not null default 0` 和 `top_time datetime null`。列表按 `is_top desc, top_time desc, id desc`。

## 状态转换

| 当前 | 操作/角色 | 下一状态 |
|---|---|---|
| WAITING_ACCEPTANCE | 抢单/RIDER | ACCEPTED |
| WAITING_ACCEPTANCE | 取消/USER、ADMIN | CANCELLED |
| ACCEPTED | 取件且含图片/指定 RIDER | PICKED_UP |
| ACCEPTED | 取消/USER、ADMIN | CANCELLED |
| PICKED_UP | 送达且含图片/指定 RIDER | DELIVERED |
| PICKED_UP | 异常取消/ADMIN | CANCELLED |
| DELIVERED | 签收或自动/USER、SYSTEM、ADMIN | COMPLETED |
| DELIVERED | 异常取消/ADMIN | CANCELLED |

`COMPLETED`、`CANCELLED` 是终态。
