多商户商城的库存,为什么不能挂在订单上
商城的第一版,库存通常长在商品表上,结算状态挂在订单上。二十个商户、几百个 SKU 能跑过验收,第一次大促就会同时出现超卖和对不上账——锁救不了它,根子在五个域被压进了同一两张表。这篇按商品、库存、订单、履约、结算的顺序,讲每个域该拥有什么,边界又该落在哪几张表上。
商城的第一版,库存通常长在商品表上,结算状态挂在订单上。二十个商户、几百个 SKU 能跑过验收,第一次大促就会同时出现超卖和对不上账——锁救不了它,根子在五个域被压进了同一两张表。这篇按商品、库存、订单、履约、结算的顺序,讲每个域该拥有什么,边界又该落在哪几张表上。
订单状态那一列管得住“现在是什么”,管不住“谁把它改成的”“当时能不能改”“同一件事收到两次会怎样”。把 updateStatus(id, 3) 换成事件加守卫,改动量就是那十几处调用各自想清楚自己发的是哪个事件。