data-model.md 2.9 KB

数据模型:闪送配送服务

flash_delivery_order

核心字段:id、唯一 order_no、与用户联合唯一的 client_request_id、user_id、rider_id、service_type、status;package_type、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 计价快照;user_note、version、关键状态时间、取消审计及创建/更新时间。

索引:订单号唯一、用户幂等号唯一、待抢排序、用户列表、骑手列表、自动完成扫描。

flash_delivery_pricing

每个服务类型可保存多个运价时段。字段为 service_type、start_time、end_time、starting_distance、整数 starting_fare、distance、整数 freight、config_version、updated_by 和创建/更新时间。配置保存即生效,不保存 enabled;同一服务类型的时间段不得重叠,索引支持按服务类型和时间匹配当前时段。有效修改后版本加一,历史订单不回写。当前时段查询不使用 LIMIT 1 隐藏异常数据;若匹配到多条则明确返回配置重叠错误。

flash_delivery_pricing_lock

以 service_type 为主键,固定保存 HELP_SEND、HELP_PICKUP、URGENT 三行。新增、修改和删除运价时,事务先通过 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 是终态。