1.背景
公司业务依托渠道价格优势,集中采购货品后,在各电商平台经营自营店面向C端销售,面向代理商做期货,现货大宗交易业务。需要一套自研订单管理,库存,仓库管理系统。

根据微服务思想划分出订单管理,库存管理,以及商品管理三块业务域。
B端业务单据从自有B2B交易平台管理,C端订单以及外部推送订单在OMS管理。
2.库存管理
库存划分为三部分,实物库存,渠道库存,销售库存。
渠道层库存可以灵活用于第三方对接,也可以将渠道库存和业务类型绑定映射,针对某业务类型做库存分析。
销售层库存即在平台方上显示的库存数量。
3.库存超卖
业务中不可避免的产生超卖问题。
超卖原因:
1.对于C端业务,支付电商平台,订单产生在电商平台,定时“收集”电商平台产生的订单,任务调度期间销售层库存无法实时更新,如果此期间大量下单,导致库存超卖。
2.实物库存和平台销售库存为 1:N 关系。即仓库1件货在TB,JD...显示的库存各10件,总计20件,超过实物库存。订单流转到公司OMS系统之后,发生库存锁定冻结后,才会异步推送销售层库存到平台,所以这里也会产生超卖。
站在业务角度上来看,如果需要保证库存准确性,支付扣款和减库存需要在一个分布式事务内完成。达到只要扣了款,则一定能扣减到库存,保证有货品可发。由于公司无自有C端平台,支付扣款和扣减库存是两个步骤,所以理论上无法避免库存超卖问题。
解决方案:
1.引入“安全库存”概念,即销售层库存达到阈值,向平台推送销售库存0。大促期间降低安全库存阈值,达到将超卖数量收敛到一个很小的范围内。
2.平台上支付产生订单,业务系统拉取到订单后会先锁库存,进而在后续的业务流程中减库存。但仍无法解决在“订单拉取”期间产生大量已支付订单导致库存超卖的问题。
3.若平台开放出回调接口,使用方将库存系统锁库接口配置在平台方,在平台上已支付的订单,同步通过接口“回调”到使用方的库存接口将库存锁定,基本可以解决上述的超卖问题,但是该种方案需要平台方支持。