如何建模算法将折扣应用于价格?

时间:2017-12-29 18:33:21

标签: algorithm e-commerce

我被要求开发一个解决方案,以便轻松地将折扣应用于电子商务商店中的产品,我尝试以最通用的方式进行。

我们说我们有以下产品:

  • 产品A:$ 5
  • 产品B:$ 20
  • 产品C:$ 7.50

我们有以下折扣:

  • 产品A的2对1
  • 如果您购买3件或更多件产品B,则每件单价应为19.00欧元。

为此,我建模了一个名为定价规则的类,其中包含以下数据:

  • min_items :应用折扣所需的最小购买商品数量。
  • discounted_items_rate :受折扣影响的产品百分比。
  • price_reduction :适用于折扣商品的降价百分比。

使用此课程,2对1折扣将是

  • min_items:2。购物车中至少应有2件商品。
  • discounted_items_rate:0.5。一半的物品将获得折扣
  • price_reduction:1。这意味着,降价将是100%。

以类似的方式,产品B中的3个或更多项目的价格为19美元:

  • min_items:3
  • discounted_items_rate:1(全部)
  • price_reduction:0.05($ 19而不是20 $是5%的降价)。

我建立了一个公式来确定总价格,公式为:

(忘记代码的正确性,想象一下我们在CART上正确迭代并选择合适的PRICING_RULE。想象一下购物车如CART = {productA:10 items,productB:6 items,....})< / p>

if (CART.PRODUCT.ITEMS > PRICING_RULE.min_items) [It has a discount]
    var items_with_discount = floor(CART.PRODUCT.ITEMS * PRICING_RULE.discounted_items_rate)
    var with_discount = items_with_discount * price * (1 -PRICING_RULE.price_reduction)
    var without_discount = (CART.PRODUCT.ITEMS - items_with_discount) * price
    total += (with_discount + without_discount)
else [It does not have a discount]
    total += CART.PRODUCT.ITEMS * price

例如,如果我购买5件产品A,总价格为5 * 5 = 25美元,但我有2对1折扣,所以价格为15美元。

遵循算法:

items_with_discount = floor(5 * 0.5) = floor(2.5) = 2
with_discount = 2 * 5 * (1 - 1) = 0
without_discount = (5 - 2) * 5 = 15
total += 0 + 15 = $15

它适用于许多受欢迎的折扣(3对3,3对1,所有产品8%折扣,X价格3或更多,......任何典型折扣)。

我得到的反馈似乎很复杂,但实际上我发现它非常简单。 将算法建模为以通用方式应用折扣的最佳方法是什么?

0 个答案:

没有答案