本文件记录 2026-08-31 已经逐项确认的设计决策,作为后续 plan.md、tasks.md 和接口契约的输入。
蓝湖“闪送”分组共 7 个页面,均已通过蓝湖 MCP 读取图片、设计标注、颜色与图层:
最初的蓝湖 7 页明确展示三种服务、取件与收件地址、联系人和电话、地址簿、起步价格及下单入口,未展示重量和类别;2026-08-24 用户端/骑手端补充原型进一步明确包裹类别、重量档、预约配送、交付 PIN、寄件图片和费用明细。两套设计均未明确支付、代购、精确重量或件数规则。
采用独立闪送订单模块,不复用 pos_order 或 taxi_order。
用户端 / 骑手端 / 平台端
|
v
ruoyi-admin
- 用户、骑手、平台 Controller
- 报价编排与地图路线适配器
- 闪送状态流转与自动完成任务
- 通知编排
|
v
ruoyi-system
- 闪送领域实体、Mapper、Service
- 计价配置、配送凭证、状态日志
- 共享地址所有权数据访问
外部地图 HTTP 集成位于 ruoyi-admin,保持 ruoyi-admin -> ruoyi-system 的模块依赖方向。SQL 只写入 updatesql/sql.md,由开发者手动执行。
GET /system/flashDelivery/homePOST /system/flashDelivery/quotePOST /system/flashDelivery/ordersGET /system/flashDelivery/ordersGET /system/flashDelivery/orders/{id}POST /system/flashDelivery/orders/{id}/cancelPOST /system/flashDelivery/orders/{id}/confirmReceiptGET /system/flashDelivery/rider/orders/availableGET /system/flashDelivery/rider/orders/mineGET /system/flashDelivery/rider/orders/{id}POST /system/flashDelivery/rider/orders/{id}/acceptPOST /system/flashDelivery/rider/orders/{id}/pickupPOST /system/flashDelivery/rider/orders/{id}/deliverGET /system/flashDelivery/admin/pricingPOST /system/flashDelivery/admin/pricingPUT /system/flashDelivery/admin/pricing/{id}DELETE /system/flashDelivery/admin/pricing/{id}GET /system/flashDelivery/admin/ordersGET /system/flashDelivery/admin/orders/{id}POST /system/flashDelivery/admin/orders/{id}/cancelPOST /system/flashDelivery/admin/orders/{id}/complete平台管理前端沿用 foodie-admin-vue 的 Vue 2、Element UI、动态菜单和权限指令,不额外引入 UI 或状态管理依赖:
src/api/flashDelivery/index.js 集中封装平台接口,页面不直接拼接请求。v-hasPermi 控制可见性,后端权限与状态机仍是最终安全边界。flashDelivery 对象中,key 集合保持一致。GET /system/address/getaddressGET /system/address/getaddressxqPOST /system/address/addressDELETE /system/address/{id}POST /system/address/{id}/top地址接口继续由现有收货与闪送场景共用,但所有用户接口都必须携带 token;后端按当前登录用户限制详情、保存、删除和置顶范围。
flash_delivery_order保存订单号、客户端请求号、用户、骑手、服务类型、包裹类别、重量档、配送方式、预约时段、交付 PIN、取件与收件信息快照、路线距离、距离来源、预计时长、报价金额、匹配时段的起送与里程计价快照、币种、计价配置版本、备注、状态、并发版本号、关键操作时间与取消信息。
flash_delivery_pricing按服务类型保存多个不重叠的运价时段;每个时段保存开始时间、结束时间、起送距离、起送价格、计价距离、计价金额、配置版本、修改人和修改时间。保存即生效,删除即失效,不设置启停字段。
flash_delivery_order_image保存订单、凭证类型、图片 URL、排序、操作人类型、操作人和创建时间。凭证类型包括 SENDER、PICKUP 与 DELIVERY。
flash_delivery_order_log保存变更前状态、变更后状态、操作人类型、操作人 ID、原因和时间。
info_address增加置顶标记和置顶时间;列表按置顶时间与既有排序规则返回。
当前配置 = 按服务类型和当前时间匹配唯一运价时段
超出公里 = max(0, 路线距离公里 - 起送距离)
计费公里 = 超出公里 < 0.5 ? 0 : 超出公里 < 1 ? 1 : 超出公里
里程费用 = 计费公里 * (计价金额 / 计价距离)
价格 = 起送价格 + 四舍五入到整数元的里程费用
计价规则与现有外卖订单一致,但闪送使用自己的时段配置表。起送价格和计价金额为正整数新台币;距离与除法过程使用十进制定点数,里程费用采用 HALF_UP 四舍五入到整数元,最终价格不显示小数,也不执行外卖旧实现中金额达到 1000 后的千位特殊取整。帮送、帮取和加急送分别拥有多个互不重叠的时段;当前时间没有匹配时段时拒绝报价和创建。路线预计时长继续返回和保存,仅用于履约展示,不参与计价。报价优先使用地图路线距离,失败时降级为直线距离;创建订单时服务端必须重新匹配时段、计算价格并固化配置快照。
WAITING_ACCEPTANCE
|
| 骑手原子抢单
v
ACCEPTED
|
| 订单骑手 + 取件图片
v
PICKED_UP
|
| 订单骑手 + 送达图片
v
DELIVERED
|
| 用户确认 / 24小时自动完成 / 平台完成
v
COMPLETED
WAITING_ACCEPTANCE 和 ACCEPTED 允许订单用户取消。PICKED_UP 和 DELIVERED 只有平台能够介入取消。任一允许取消状态进入 CANCELLED。COMPLETED 与 CANCELLED 为终态。
order_id + user_id 校验。order_id + rider_id + expected_status 校验。address_id + user_id 校验,客户端 userId 不参与归属判断。@RequestBody、@RequestParam、@PathVariable 和 @RequestHeader,不接收 Map。支付、退款、分账、骑手收入、代购、垫付、商品金额、精确重量、件数、自动派单、动态附近骑手数、预计接单时间以及用户端、骑手端和商家端页面均不在本期范围。