我被要求创建一个在线支付的在线预订系统,我想知道在2个客户同时预订同一房间的情况下该怎么办。
例如:
同时:
客户1和客户2预订标准客房,仅提供1间客房。 (房间可用性将显示仍有1个房间可用)。然后他们同时点击了“确认”按钮。
答案 0 :(得分:4)
使用锁定构造(在这种情况下可能在数据库级别),以确保一次只能进行一次确认。如果可能出现这样的竞争条件,你应该总是这样做。这样你就会知道谁是谁,你可以告诉其他用户他们太慢而无法确认。
您可能想要添加的另一件事是付款时间限制。在许多系统中,当您确认某些内容时,您将有一定的时间来支付预订费用。如果您未在该时间内付款,确认将过期,房间将再次可用。
答案 1 :(得分:0)
有几种方法可以解决这个问题。
答案 2 :(得分:0)
使用“临时”系统将预订标记为临时,例如10分钟。然后,这些插槽将无法用于后续请求。如果预订未在时间范围内完成,则该插槽将再次释放。如果您在预订插槽之前获取所有客户详细信息,那么辍学率应保持较低。
您必须将时间范围和“临时状态”告知预订者。如果您有后续阶段,访问者可以停止,那么一个简单的JS计时器倒计时将有所帮助,并推动预订者顺利进行。
或者,允许双重预订,直到首次出现时按下最后的“付费”按钮。第二种方法转换得更好,第一种方法更“正确”。