Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 购物车和各种折扣。在DB中存储折扣并将其应用于订单计算_Algorithm_Data Structures_Data Modeling_Shopping Cart - Fatal编程技术网

Algorithm 购物车和各种折扣。在DB中存储折扣并将其应用于订单计算

Algorithm 购物车和各种折扣。在DB中存储折扣并将其应用于订单计算,algorithm,data-structures,data-modeling,shopping-cart,Algorithm,Data Structures,Data Modeling,Shopping Cart,目前,我正在寻找对购物车/订单“应用折扣”的最佳实践。 所以,我计划实施这样的折扣 固定用户折扣(例如,我想给我最喜欢的客户打10%的折扣) 商品数量折扣(例如,您购买10支不同颜色的钢笔,将获得1.5%的折扣) 优惠券折扣(例如,在促销活动期间,我们制作了100张优惠券,每张都有10%的折扣。优惠券仅适用于一个订单,并于yyyy-mm-dd到期) 购买物品或物品组的礼品(例如,您正在购买笔、纸张清单和商店赠送给您的卷笔刀) 订单总价的折扣(例如,您购买了10支钢笔,但没有折扣,然后您又增加了

目前,我正在寻找对购物车/订单“应用折扣”的最佳实践。 所以,我计划实施这样的折扣

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

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

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

  • 购买物品或物品组的礼品(例如,您正在购买笔、纸张清单和商店赠送给您的卷笔刀)

  • 订单总价的折扣(例如,您购买了10支钢笔,但没有折扣,然后您又增加了5支钢笔,并获得5%的折扣)

只能对特定项目应用一个折扣。我们总是申请最大的折扣。为用户提供最有利可图的折扣

除此之外,管理员应该能够修改特定订单中的项目价格,并取消此订单中的折扣

坦率地说,这是我的第一个电子商务应用程序,在我看来,实现所有这些类型的拒绝似乎是一项相当困难的任务

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

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

  • 项目数量折扣我将创建额外的表来存储此类折扣的项目组。另外,我还需要一个表来连接这些组和商店中的物品

  • 优惠券折扣只有一个包含优惠券的表,其中包含过期日期、优惠券状态、优惠券折扣以及可能的用户id(优惠券所有者)字段。可能我也会为不同类别的物品提供优惠券

  • 购买物品或一组物品时赠送礼物这真是让人头疼,我完全不知道如何实施。请帮忙

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

好的,现在我正在寻找在DB中存储此类折扣的最佳实践。另外,我正在寻找OOP实践,以将此折扣应用于购物车。感谢您的帮助

PS:很抱歉这么长的帖子,但我认为它不仅对我来说是有趣的


谢谢。

目前购买物品或物品组需求的基本解决方案是有一个bundle和一个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
bundle表包含礼品项目id,bundleitem表包含与用户必须订购才能获得礼品的bundle相关联的所有项目

您的“Bundle”类将包含这些必需产品项的数组、礼品项和一个方法,该方法接受一个购物车对象并检查购物车是否包含此特定Bundle提供的每个必需产品-类似于foreach循环中的简单foreach


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

假设你有20种钢笔。您需要多少个包来指定某个人可能拥有的所有不同类型的笔组合?假设可以应用多个bundle,但它们不能同时应用所有bundle。如何选择利润最高的捆绑包?“角案可能会变得复杂。”B我同意。上面的解决方案只是一种机制,能够识别购物车何时包含符合am报价的合格产品-您可以明显地扩展它,以容纳大量的标志和参数,以覆盖您的完全有效的上述假设,或者您可以执行我所做的操作-使用参数将规则硬编码到客户端规范,以打开或关闭规则关您可以有一个抽象规则类,该类在运行时注入特定于客户端的具体实现,以保持代码库和客户端规则干净地分开。rules类基本上有一个要实现的“applyRules”方法。