5

我正在构建一个售票应用程序,用于跟踪门票库存,并在特定门票售罄时停用它们。

我想知道在中途放弃订单时将库存放回商店的最佳做法是什么。

当前流量:

  • 用户添加itemsorderasline_itemsorder在成功付款时标记为已完成
  • items有一个quantity_available根据他们的更新line_items
  • 我定期扫荡orders,超过 20 分钟没有任何动作,删除这些订单line_item并更新quantity_available

感觉就像我错过了一些东西。一方面,我失去了详细查看放弃订单的能力(我仍然有任何付款/拒绝等......但没有订单项)。如果用户在 21 分钟后尝试恢复旧订单,他们将不得不重新开始。

相反,它会占用 20 分钟的库存,这可能会在节目几乎售罄时失去我们的销售。

任何见解将不胜感激。谢谢。

4

3 回答 3

6

如何引入不同的标签:保留或其他东西。在处理订单时,您可以标记保留的票证,这会减少总库存计数。但是您现在确切地知道有多少票处于不确定状态。

在您长达 20 分钟的订单期间,如果现有商品数量非常少或为空,您可以向用户发送更新。“订单停滞了5分钟。售票速度很快,请尽快完成订单,以确保您的票仍然可用。”

您还可以告诉潜在买家有 x 数量的预订门票可能可用,所以他们应该回来查看或其他什么。如果预订的票重新进入系统,也许他们可以注册接收电子邮件。

于 2011-02-25T18:23:07.320 回答
1

我想知道您为什么要根据未处理的订单来占用库存?我正在考虑像 Newegg 和 Amazon 这样的流行网站的工作方式。我可以创建一个购物车,它会无限期地存在。但它对我的库存没有任何作用,它只是数据库中的一条记录。使用 Newegg,我可以在几个月后回到该网站,而我废弃的购物车仍然在那里(过去这对我来说非常方便)。

您仅在用户完成订单时才修改库存。这还允许您对废弃的购物车运行报告,因为您只需使用最后修改日期和订单完成来确定哪些购物车被废弃。

于 2011-02-25T18:25:18.517 回答
0

如果我理解正确,听起来您应该将不同的步骤封装到一个回滚或暂停的单个事务中,如果没有及时完成 - 即您提到的 20 分钟。这样您就可以锁定和解锁 line_items 记录,而无需来回添加它们。

听起来您还需要考虑如何定义“订单”。您可能需要引入更多步骤。处理订单的过程是“预订”,只有在付款时才会确认。这样,您可以将库存释放到“保留”(过度保留是可以的)并且第一个付款的人得到订单。其他人失败了——他们应该更快!

于 2011-02-25T18:35:08.443 回答