我被要求开发一个解决方案,以便轻松地将折扣应用于电子商务商店中的产品,我尝试以最通用的方式进行。
我们说我们有以下产品:
我们有以下折扣:
为此,我建模了一个名为定价规则的类,其中包含以下数据:
使用此课程,2对1折扣将是
以类似的方式,产品B中的3个或更多项目的价格为19美元:
我建立了一个公式来确定总价格,公式为:
(忘记代码的正确性,想象一下我们在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或更多,......任何典型折扣)。
我得到的反馈似乎很复杂,但实际上我发现它非常简单。 将算法建模为以通用方式应用折扣的最佳方法是什么?