购物车和不同种类的折扣。在DB中存储折扣并将其应用于订单计算

时间:2011-04-28 22:08:24

标签: algorithm data-structures data-modeling shopping-cart

目前,我正在寻找“购物折扣”的最佳做法。 所以,我打算实施这样的折扣......

  • 固定用户的折扣(例如,我想给我最喜欢的客户提供10%的折扣)

  • 商品数量折扣(例如,您购买10支不同颜色的笔,您将获得1.5%的折扣)

  • 优惠券折扣(例如,在促销活动期间,我们制作了100张优惠券,每张优惠10%。优惠券仅适用于一个订单,并在yyyy-mm-dd到期)

  • 目前购买物品或物品组(例如,您正在购买笔,纸张清单和商店为您提供磨刀器)

  • 总订单价格折扣(例如,您购买10支笔并且没有折扣,那么您将再增加5支笔并获得5%的折扣)

只有一个折扣可以应用于特定商品。我们总是申请最大折扣。用户最赚钱的折扣。

除此之外,管理员应该能够按特定顺序修改商品价格并按此顺序取消折扣。

坦率地说,这是我的第一个电子商务应用程序,在我看来很难实现所有这些类型的解决方案。

好的,现在让我告诉你我将如何实施......

  • 固定用户的折扣这只是用户表中的一个字段,其中包含有关折扣的信息。它通过控制面板手动设置或由cron自动设置,用于总订单总和超过N的用途。

  • 项目数量的折扣我将创建额外的表存储项目的此类折扣组。此外,我还需要一张表来将这些组与商店中的商品联系起来。

  • 优惠券折扣只是一张包含优惠券的表格,其中包含过期日期,优惠券状态,优惠券折扣以及user_id(优惠券所有者)。也许我还会为物品类别实施优惠券。

  • 目前购买物品或物品组这是屁股的真正痛苦,我完全不知道如何实施。请帮忙!

  • 总订单价格折扣非常简单,imho。

好的,现在我正在寻找在数据库中存储此类折扣的最佳做法。另外,我正在寻找将此折扣应用于购物车的OOP做法。任何帮助表示赞赏!

PS:很抱歉这么长的帖子,但我认为这不仅对我有用。

谢谢。

1 个答案:

答案 0 :(得分:1)

目前购买物品或物品组要求的基本解决方案是使用捆绑包和bundleItem表。

bundle table.
id                     int   primary key
giftproductId          int   foreign key - product table

bundleitem table.
id                     int   primary key
bundleid               int   foreign key - bundle table
requiredproductid      int   foreign key - product table

您的捆绑表包含礼品项目ID,而捆绑项目表包含与捆绑包相关联的所有项目,用户必须订购这些项目才有资格获得礼品。

您的“捆绑”类将包含这些必需产品项目的数组,礼品和购买购物车对象的方法,并检查购物车是否包含此特定捆绑产品的所有必需产品 - 类似于在foreach循环中简单的foreach ...

这是一个简单的解决方案,根据这些礼品的规则,事情会变得复杂,例如如果我订购2笔和2张纸,我会得到2个磨刀器吗? - 祝你好运!