购物车和库存管理

Posted

技术标签:

【中文标题】购物车和库存管理【英文标题】:Shopping cart and stock management 【发布时间】:2010-11-24 08:03:57 【问题描述】:

我目前正在使用 php/mysql 构建电子商务网站。最近,我一直在研究购物车集成。客户希望确保潜在买家可以使用库存,因此我创建了一个库存管理系统。购物车的工作原理如下:

客户将一个项目的数量添加到 他的购物车。 项目数量保留自 数据库中的可用库存。 没有其他人可以购买保留 库存。 库存在客户之前一直保留 处理订单 - 库存在哪里 从数据库中删除。 如果客户放弃他的购物车,库存仍然保留。 如果另一个客户想要购买某件商品,但另一个客户只保留了可用库存,那么如果该库存已闲置 20 分钟,则该客户可以窃取该保留的库存。

我的问题是,这种情况的最佳做法是什么?我这样做正确吗?最主要的是客户不想出售他没有的股票。

我希望讨论如何改进功能,或者其他人正在做什么来实现这一点。

【问题讨论】:

【参考方案1】:

另一种方法可能是在将库存放入购物车时不保留库存。每次重新加载页面时执行检查,如果该商品不再可用,请显示一条消息,例如“您要购买的商品刚刚售罄。很快就会有货”。然后您将产品从购物车中移除。

现在,您绝对必须在开始付款操作之前保留购物车内容,然后根据付款的成功/失败将其从库存中删除或删除保留。您在一次代码运行中做得更好,以便保留尽可能短的时间。

ProcessOrder ()

    bool reserved = ReserveShoppingCartContents ();
    if (reserved)
    
        bool paymentStatus = ProcessPayment ();
        if (paymentStatus)
            RemoveShoppingCartContentsFromStock ();
        else
            ReleaseShoppingCartReserve ();
    
    else
    
        RefreshShoppingCartContents (); // Remove positions or adjust quantities
        MessageBox ("Could not reserve your shopping cart contents. Please check out your selection");
    

您的保留时间越短,您的商品实际售出的机会就越高。您将发生冲突的可能性降到最低:客户A 从购物车开始,商品被预订,客户B 来了,看到商品没有库存并离开,客户A 决定他不喜欢这个价格并取消操作。您有两个潜在客户,但都不能卖给任何一个。

【讨论】:

感谢您的建议。我将重新设计功能。我知道这不是最好的方法。冻结库存可能不是一个好主意,除非您销售独特的产品,例如音乐会门票。 是的,与源代码控制和数据库事务一样,默认为乐观锁定,除非您有充分的理由不这样做。【参考方案2】:

我在结账过程中每次重新加载页面时都会检查库存,如果在结账过程中商品已售罄,则会将它们重定向到购物车页面并显示错误消息。 仅在确认订单时才减少库存 如果订单被取消,我也会恢复库存。

【讨论】:

以上是关于购物车和库存管理的主要内容,如果未能解决你的问题,请参考以下文章

HTTP会话的使用和管理

java ssm springboot女士电商平台10(源码+sql+论文可运行《精品毕设》)登录注册商品浏览分类管理模糊查找轮播图热销商品购物车订单订单流程控制用户管理

JavaWeb SSM SpringBoot女士电商平台10(源码+sql+论文可运行《精品毕设》)登录注册商品浏览分类管理模糊查找轮播图热销商品购物车订单订单流程控制用户管理

JavaWeb SpringBoot美容院预约管理系统《精品毕设》(源码 + 论文)实现登录注册主页项目管理购物车订单支付订单新增用户权限角色新闻公告项目列表项目列别管理等

Javaweb(SpringBoot)网上家具商城项目(数据库+源码+论文《精品毕设》)家具商品的浏览分类家具查看订单管理加入购物车以及后台管理员对用户商品信息订单的管理操作

JavaWeb SSM 《精品毕设》酒店管理系统(豪华毕设) 前台 + 后台(源码 + 论文)主要实现的登录注册酒店信息管理酒店类别管理酒店地址管酒店详情购物车订单管理支付管理等功能