减库存有哪几种方式
下单 当买家下单后, 在商品的总库存中减去买家购买数量. 下单减库存是最简单的减库存方式, 也是控制最精确的一种, 下单时直接通过数据库的事务机制控制商品库存, 这样一定不会出现超卖的情况. 但是你要知道, 有些人下完单可能并不会付款.
付款减库存 即买家下单后, 并不立即减库存, 而是等到有用户付款后才真正减库存, 否则库存一直保留给其他买家. 但因为付款时才减库存, 如果并发比较高, 有可能出现买家下单后付不了款的情况, 因为可能商品已经被其他人买走了.
预扣库存 这种方式相对复杂一些, 买家下单后, 库存为其保留一定的时间 (如 10 分钟), 超过这个时间, 库存将会自动释放, 释放后其他买家就可以继续购买. 在买家付款前, 系统会校验该订单的库存是否还有保留: 如果没有保留, 则再次尝试预扣; 如果库存不足(也就是预扣失败) 则不允许继续付款; 如果预扣成功, 则完成付款并实际地减去库存.
以上减库存的几种方式存在的问题
由于购物过程中存在两步或者多步的操作, 因此在不同的操作步骤中减库存, 就会存在一些可能被恶意买家利用的漏洞, 例如发生恶意下单的情况.
假如我们采用 "下单减库存" 的方式, 即用户下单后就减去库存, 正常情况下, 买家下单后付款
的概率会很高, 所以不会有太大问题. 但是有一种场景例外, 就是当卖家参加某个活动时, 此
时活动的有效时间是商品的黄金售卖时间, 如果有竞争对手通过恶意下单的方式将该卖家的商
品全部下单, 让这款商品的库存减为零, 那么这款商品就不能正常售卖了. 要知道, 这些恶意
下单的人是不会真正付款的, 这正是 "下单减库存" 方式的不足之处.
付款减库存
既然 "下单减库存" 可能导致恶意下单, 从而影响卖家的商品销售, 那么有没有办法解决呢?
你可能会想, 采用 "付款减库存" 的方式是不是就可以了? 的确可以. 但是,"付款减库存" 又
会导致另外一个问题: 库存超卖.
既然 "下单减库存" 和 "付款减库存" 都有缺点, 我们能否把两者相结合, 将两次操作进行前后关联起来, 下单时先预扣, 在规定时间内不付款再释放库存, 即采用 "预扣库存" 这种方式呢?
这种方案确实可以在一定程度上缓解上面的问题. 但是否就彻底解决了呢? 其实没有! 针对恶
意下单这种情况, 虽然把有效的付款时间设置为 10 分钟, 但是恶意买家完全可以在 10 分钟
后再次下单, 或者采用一次下单很多件的方式把库存减完. 针对这种情况, 解决办法还是要结
合安全和反作弊的措施来制止.
如何解决下单库存问题
给经常下单不付款的买家进行识别打标(可以在被打标的买家下单时不减库存), 给某些类目
设置最大购买件数(例如, 参加活动的商品一人最多只能买 3 件), 以及对重复下单不付款的
操作进行次数限制等.
来源: http://www.bubuko.com/infodetail-3394401.html