目标:沿用现有商家订单控制器和权限,提供结构化打印数据,不接入打印设备。
MerchantOrderPrintView 和 MerchantOrderPrintService,按订单快照装配;控制器新增小票 GET 接口,复用订单权限与商家身份检查。备选:直接返回 PosOrder 会暴露无关信息并要求 App 解析 JSON;复刻 CTE 的 Map 会丢失本系统运费契约。采用明确 DTO 和快照转换,不引入新表或新的订单状态。
前端改传完整订单号 ddId;控制器先按 pos_order.dd_id 查询、再用所得订单主键执行现有商家权限检查,服务层复用已查出的订单快照装配小票。响应字段保持不变。
小票响应保留支付方式原始码值,新增 payTypeName,根据订单已保存的 payType 映射为台湾繁体名称。未知或空码值给出「未知付款方式」,不改变支付流程。
状态:未开始(规则与代码现状已核对,生产代码尚未修改)。规格以同目录 spec.md 的本日追加规则为准。
PosOrderShOprateController.createOrder/createOrderChild:仅对成功保存的商家现金单注册事务提交后通知,复用 runNotificationAfterCommit 和 MerchantNotificationRouter.sendStoreNewOrder。通知异常不得把已提交订单返回为创建失败;不改变支付或履约状态。LinePayOrderNotificationService、OmgPaymentNotifyService 的首次支付成功路径:商家代客外送、自取、堂食均能收到一次新单;创建未付款不提前通知。现有外送分流优先按 type=0 处理,而商家创建单初始 state=1,需避免因此漏掉商家提醒。自配送已有商家通知的路径不得再重复发送。ddId 用于读取小票,App 管理打印去重与失败恢复;后端测试不宣称已验证真机打印。不新增分支、数据库字段、SQL、字典或用户可见文案;复用现有消息国际化和声音场景。当前工作区 specs/010-order-invoice 的既有变更与本任务分开保留。