【问题标题】:Shopping carts and concurrency in ASP.NET MVCASP.NET MVC 中的购物车和并发
【发布时间】:2012-04-13 11:41:15
【问题描述】:

我刚开始考虑构建一个购物车,设计它时遇到的一个问题是在这种情况下该怎么做 - 假设产品 A 的剩余库存水平为 5。然后客户 A 到达他们可以选择他们需要的数量的页面,他们选择了 3。但是他们还没有确认订单/付款等。然后客户 B 来到现场并选择了 4 的数量。然后出现的问题是,如果两个客户然后确认他们的订单,其中一个人会遇到错误,因为他们做出选择后库存水平会降低。处理这个问题的标准方法是什么?是否可能创建一个“保留”字段并在每次用户选择数量时添加到其中,以便在他们确认或取消之前保留该库存?如果他们不取消而只是离开网站怎么办?

只是从可能已经处理过这个问题的任何人那里寻找一些建议。

【问题讨论】:

  • 我会避免使用暂停标志,因为系统中的任何错误都可能使您的许多产品错误地暂停(您可能会超时,但这只是额外的复杂性)。我会在确认购买后选择简单的检查,并发送一条简单的消息,例如:“抱歉,我们不再有此商品的库存 - 下次尽量快一点!”
  • 您考虑过现有产品吗?一个例子nopcommerce.codeplex.com也许你可以从那里得到一些东西。

标签: c# asp.net-mvc


【解决方案1】:

在计算特定产品的可用库存时,您应该考虑“库存预留”。您决定何时将某个购物车行置于“预订”模式以及何时再次“释放”它。

我已经实现了一个商店,其中在用户开始付款时“保留”库存,并且在用户取消付款时“释放”支付成功时“发出”

不要忘记在预订时仔细检查可用库存。

【讨论】:

    【解决方案2】:

    嗯,

    在用户没有确认订单之前,您不应该保留库存。 如果我在您之前购买了产品,您应该会收到一条消息,告诉您有人已经购买了它,或者只是库存不足

    它会让你摆脱很多头痛

    【讨论】:

      【解决方案3】:

      我理解的是 您想实施购物卡,但在一个以上的用户登录和托盘购物时遇到问题:)

      这是解决方案.. 出现问题是因为购物卡是用户之间共享的。 您可以只为登录用户维护一个购物卡的 tmp 列表。 当他们准备付款时,将其添加到购物卡中并显示详细信息。

      注意:您必须在执行此操作时处理库存。

      【讨论】:

        【解决方案4】:

        我可以建议您不要锁定用户项目,直到他到达订单确认页面,并使用适当的锁定持续时间标记项目保留了特定持续时间,在此之前订单应该完成,否则项目将被反射回来在库存中。如果您查看Amazon Cart help page,它是这样写的

        将商品放入购物车不会为您保留该商品。 只有在您点击 Place your 订购按钮并接收电子邮件确认我们已收到您的 顺序。

        一个极端的情况是在最终订单完成之前不预订,或者只有在您到达付款页面时才预订。

        您需要最小化阻止窗口并处理存在冲突的情况(通过提供延期交货选项)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-05
          • 2013-06-07
          • 1970-01-01
          相关资源
          最近更新 更多