Date: 2026-09-20 | Status: 决策已与用户确认,无未解决 NEEDS CLARIFICATION
决策来源:头脑风暴对话(方案对比/滚动加载确认/收件视角确认)+ 代码探索报告(现有列表接口、状态字段全集、写入点清单、索引现状)。
时间毫秒_source_id;前端滚动加载透传 nextCursor。排序:createTime DESC → source 字典序(flash<takeaway) → id DESC。两表时间均为秒级 datetime,同秒跨源并列必须确定性决胜,否则翻页漏/重。all/unpaid/active/completed/cancelled/refund(与 UserOrderController.orderList 现有参数一致)。外卖侧条件照搬现有实现(unpaid: payStatus=0 且 payType∈{2,3} 且 state≠4 且无售后;active: state∈{0,1,2} 且无售后且已付或到付自取堂食;completed: state=3 无售后;cancelled: state=4 无售后;refund: 售后>0)。闪送侧映射:非终态(WAITING_ACCEPTANCE/ACCEPTED/PICKED_UP/DELIVERED)→active、COMPLETED→completed、CANCELLED→cancelled;unpaid/refund 闪送侧恒空。(user_id=? OR receiver_user_id=?) 单条 OR 查询;role 判定:user_id 命中→sender,否则 receiver;寄件人=收件人只出一条(判 sender)。列表项带 role 字段,前端渲染"我收的"标签。FlashDeliveryUserOrderListView 字段子集:status/serviceType/deliveryType/vehicleType/deliveryMode/预约窗/取收地址/packageType/quantity/tipAmount 等)。前端按 sourceType 复用现有两种卡片渲染。flash_delivery_order 现有索引仅 PK + uk(order_no) + uk(user_id, client_request_id),缺 (user_id, create_time) 与 (receiver_user_id) 索引;pos_order 建表 DDL 不在 sql.md(历史表),索引需在库上核实。补索引语句写入 updatesql/sql.md 并标注"核实后执行",不直接执行。WHERE user/角色 = ? AND 时间游标条件 ORDER BY 时间 DESC LIMIT n,有索引才是索引扫描;个人列表行数不大,无索引也能跑但属于隐患。备注:(user_id, client_request_id) 唯一索引的 user_id 前缀可部分复用,但不含 create_time 排序。Page<>(1, limit, false) 固定第一页new Page<>(1, size+1, false)(关闭 count 查询),取 size+1 行判定 hasMore。GET /system/userOrder/orderList(UserOrderController.java:536-601),tab 条件 555-582 行;返回 MP Page 原始实体。GET /system/flashDelivery/orders(FlashDeliveryUserController.java:55-62 → FlashDeliveryApplicationService.userOrders),无 tab,role=sender/receiver。state(0待处理1已接单2已出餐3已完成4已取消) + deliveryStatus(0/1/2/3) + payStatus(0未付1已付2已退) + afterSaleStatus(0-6);payType 常量 OrderLifecycleService.java:33-40(OFFLINE=1/OMG=2/LINE=3/CASH=4/APPLE_PAY=5/TRANSFER=6)。闪送 FlashDeliveryStatus 六态枚举。ddId 为客户端传入 String;闪送 orderNo 服务端生成(FD+UUID24)。cretim、闪送 create_time,均 Date(秒级)。