我的客户有一个销售电子产品的电子商务网站,在某些情况下,产品的销售次数超过了库存。这是因为如果两个用户同时购买一个产品,而库存只剩下一个产品,一个会话在另一个会话开始之前没有完成将产品注册为售罄(所以它继续正常,认为有一个左)即使在流程开始时进行了检查。这显然会花费金钱(退款费用、退款等)并给消费者带来不便。
所以我想知道是否有办法解决这个问题?我想在流程开始时创建一个“标记”,即它会检查库存,如果售罄,它会将产品标记为这样,从而防止其他会话购买它。但这也产生了更多问题:如果客户方面发生某些事情会导致他们取消中间流程(断电等),那么即使产品被标记为已售出,它在结帐后实际上并没有售出过程没有完成。如果这种情况继续发生,就会出现产品库存过剩。其次,一个会话也可以在另一个会话将其标记为已售出时检查库存,因此即使第二个会话已经购买了它,第一个会话也会继续。这使我们回到了最初的问题。
我正在查看数据库端的表锁定,但我不确定这是否是最好的主意。任何建议将不胜感激!
谢谢,迪普