目的非常简单,就是比较客户订单可以享受的最大折扣,订单的折扣分布在几个不同规则的函数中 ,返回最大的折扣函数
promos=[]
def promotion(promo_func):
promos.append(promo_func)
return promo_func
@promotion
def fidelity(order):
return order.total()*.05 if order.customer.fidelity >=1000 else 0
@promotion
def bulk_item(order):
discount = 0
for item in order.cart:
if item.quantity>=20:
discount+=item.total()*0.1
return discount
@promotion
def larger_order(order):
distinct_items ={ item.product for item in order.cart}
if len(distinct_items)>=10:
return order.total()*0.07
return 0
def best_promo(order):
return max(promo(order) for promo in promos)