即时配送主线为 下单 → 支付 → 调度(抢/派)→ 取件 → 在途 → 送达 → 结算/评价。数据按限界上下文切分,实施时可单体分模块或逐步拆服务;外键与 tenant_id 保证多租户隔离。
| 业务域 | 职责 | 代表表 | 与订单关系 |
|---|---|---|---|
| 订单履约 | 状态机、地址、物品、轨迹 | ot_order, ot_order_address, ot_order_item, ot_order_trace | 核心聚合根 |
| 运力 | 骑手档案、实时位置、任务轨迹 | ot_courier, ot_courier_location, ot_courier_trace | order.courier_id |
| 会员营销 | 等级、积分、券模板与用户券 | ot_user_member, ot_point_*, ot_coupon, ot_user_coupon | 下单试算核销 |
| 资金 | 用户钱包、骑手账户、提现 | ot_wallet, ot_courier_account, ot_withdraw | 支付/分账流水 |
| 站点仓储 | 站点、暂存、入出库 | ot_station, ot_station_storage, ot_warehouse_* | 可选履约节点 |
| 物流扩展 | 干支线运单与节点 | ot_shipment, ot_shipment_trace | 可与订单并行关联 |
所有业务表建议带 tenant_id;站点业态加强 station_id;加盟体系加 agent_id;审计 created_at/updated_at/created_by/updated_by;软删 deleted_at;高并发写表可加 version 乐观锁。
| 字段 | 说明 |
|---|---|
| tenant_id | 租户隔离,默认 1 |
| station_id / agent_id | 数据范围(站点/代理),可空 |
| updated_at + deleted_at | 列表排序、伪删除过滤 |
| 表 | 关键字段 / 关系 | 备注 |
|---|---|---|
| ot_order | order_no UK, user_id, courier_id, status, amount, pay_* , tenant_id | 状态与支付字段与财务对账对齐 |
| ot_order_address | order_id FK, type 发/收, lat/lng, snapshot | 建议存快照防用户改址扯皮 |
| ot_courier | user_id UK, status, rating, tenant_id | 与 C 端账号一对一 |
| ot_courier_location | courier_id FK, lat, lng, reported_at | 高频写,后期可迁时序库 |
| ot_user_coupon | user_id, coupon_id, order_id, status | 核销写幂等 |
逐表全字段以 database_schema.html 与 database_schema_detail.md 为准;本页仅保留与业务流程强相关的骨架。
下图覆盖 index 原摘要图并补充 钱包 与 用户 关联;站点/仓储/物流为 Phase 4~5 扩展域。
需要打印级静态图可使用 database_er.html 中的 SVG(文件名为历史 exp-er-core.svg,语义与上表一致,实施以 ot_ 为准)。
推荐:用户端 Bearer(小程序 session / appJwt);骑手端 独立 scope;管理端 adminJwt + RBAC + 数据范围(tenant/station)。路径示例可与网关统一为 /app/ot/...、/admin/ot/...(与历史 /app/exp/... 文档可并行,迁移时做别名)。
| 端 | 模块 | 典型能力 | 幂等/注意 |
|---|---|---|---|
| 用户 | 订单 | quote 试算、create 下单、page、detail、cancel | create 带 clientRequestId |
| 用户 | 支付 | 预下单、回调通知、查单 | 回调验签 + 业务幂等 |
| 用户 | 会员/券 | 可用券列表、积分流水、兑换 | 券状态机与订单绑定 |
| 骑手 | 大厅/任务 | hall、grab、pickup、deliver | 抢单分布式锁 |
| 骑手 | 位置 | location/update 批量或单点 | 限频 + 异步落库 |
| 管理 | 调度 | monitor、dispatch/assign、撤回 | 与订单状态事务一致 |
| 管理 | 运营 | 订单导出、骑手审核、红包配置、提现审核 | 导出异步任务 |
完整路径清单见 api_list.html / api_list.md。
| 场景 | 备选方案 | 触发条件 |
|---|---|---|
| 订单表过大 | 按 tenant_id + 时间分表 / 分库;冷数据归档 | 单表行数或索引膨胀 |
| 位置写入过高 | Redis Geo + 批量刷盘;或独立时序库(TSDB) | 骑手规模与上报频率上升 |
| 报表拖慢 OLTP | 只读副本、CDC 到 ClickHouse/ES | 复杂统计与检索需求 |
| 强一致事件 | Outbox 表 + MQ,避免双写 | 拆微服务后域间协作 |
| 场景 | 备选方案 | 说明 |
|---|---|---|
| 兼容旧客户端 | 网关 /v1 /v2 路由 + 适配层 | 字段只增不减,废弃走版本 |
| 开放生态 | OAuth2 + scope,BFF 聚合 | 第三方站点接入 |
| 峰值下单 | 排队、限流、库存预占与超时释放 | 与营销叠加时尤需注意 |
使用 Flyway/Liquibase 等迁移工具;大表加列优先在线 DDL;deleted_at 与物理删除策略在归档任务中单独立规。多租户从「单库 tenant 列」演进到「分库 per tenant」时,需配套连接路由与备份策略。