plan.md 3.0 KB

商家小票接口实现计划

目标:沿用现有商家订单控制器和权限,提供结构化打印数据,不接入打印设备。

  1. 小票功能始终提供,不添加开关接口、字典或 SQL。
  2. 新增 MerchantOrderPrintView 和 MerchantOrderPrintService,按订单快照装配;控制器新增小票 GET 接口,复用订单权限与商家身份检查。
  3. 覆盖商品规格/备注、运费优惠、自取堂食空地址、坏快照及越权;不增加 SQL,新增错误同步所有后端语言文件。
  4. 更新 App 接入文档,执行 JDK21 定向测试及模块打包、差异检查。设备绑定、自动打印和真机出纸不在本轮验证范围。

备选:直接返回 PosOrder 会暴露无关信息并要求 App 解析 JSON;复刻 CTE 的 Map 会丢失本系统运费契约。采用明确 DTO 和快照转换,不引入新表或新的订单状态。

2026-10-29 查询参数调整

前端改传完整订单号 ddId;控制器先按 pos_order.dd_id 查询、再用所得订单主键执行现有商家权限检查,服务层复用已查出的订单快照装配小票。响应字段保持不变。

2026-10-30 支付方式文字

小票响应保留支付方式原始码值,新增 payTypeName,根据订单已保存的 payType 映射为台湾繁体名称。未知或空码值给出「未知付款方式」,不改变支付流程。

2026-11-03 商家代客新单推送与小票触发计划

状态:未开始(规则与代码现状已核对,生产代码尚未修改)。规格以同目录 spec.md 的本日追加规则为准。

  1. PosOrderShOprateController.createOrder/createOrderChild:仅对成功保存的商家现金单注册事务提交后通知,复用 runNotificationAfterCommit 和 MerchantNotificationRouter.sendStoreNewOrder。通知异常不得把已提交订单返回为创建失败;不改变支付或履约状态。
  2. 核对 LinePayOrderNotificationService、OmgPaymentNotifyService 的首次支付成功路径:商家代客外送、自取、堂食均能收到一次新单;创建未付款不提前通知。现有外送分流优先按 type=0 处理,而商家创建单初始 state=1,需避免因此漏掉商家提醒。自配送已有商家通知的路径不得再重复发送。
  3. 保持普通用户外送单在骑手接单后通知商家的规则,保留多店批次的统一通知入口;不改骑手派单、取消、退款或开票逻辑。
  4. 先补可复现测试,再完成最小代码改动及注释;覆盖现金提交/回滚、线上创建无推送、首次支付/重复支付和普通订单路由。统一执行 JDK21 定向测试、受影响模块构建和差异检查。
  5. 更新 App 接入说明:通知中的完整 ddId 用于读取小票,App 管理打印去重与失败恢复;后端测试不宣称已验证真机打印。

不新增分支、数据库字段、SQL、字典或用户可见文案;复用现有消息国际化和声音场景。当前工作区 specs/010-order-invoice 的既有变更与本任务分开保留。