类型:报告 · 建档:2026-05-14 | 时效性文档,引用前请核对正文的数据截止日
POST /api/crs/isv/order-form/create 接口处理流程
sip-mac-crs OrderFormController OrderFormServiceImpl.save()
经销商出货回传码与签收码接口 — ISV 调用,支持 4 种扫码场景的出货/退货入库
主流程 — save() 方法调用链
分支一 — processDailyOutbound() 日常开单出货
分支二 — processDealerOutbound() 大宗团购/BC营销出货
分支三 — processStoreReturn() 大宗团购/日常退货
外部依赖调用汇总
关键设计要点
注意
- 幂等控制:所有分支通过 Redis setNXEx(key, 2s) 实现同一批码 2 秒内只能提交一次
- 事务注解:save() 标注 @Transactional,但 MongoDB 操作不在 Spring 事务管理范围内,实际靠 Redis decr 手动回滚流水号
- 码加密:codeEncrypt() 通过 TagUtil.parseCode 解析码结构,提取 domain + digestCode 重新组装
- 唯一性 hash:将所有码排序后 hashCode 再 SHA256,拼接 scanScene 值,用于幂等 key 和签收码
- 退货特殊处理:退货时通过 updateReturnSignPENDING() 将待签收单中对应码标记为 PENDING,签收时再标记为 DONE