设计思想是,在购物车结算前匹配促销规则计算出最终优惠金额
+-----------------------+
User -> Goods -> Cart -> Delivery -> | Promotions components | -> Checkout
+-----------------------+
| Promotion rule 1 |
| Promotion rule 2 |
| Promotion rule 3 |
| Promotion rule 4 |
| Promotion rule 5 |
+-----------------------+
数据库设计
+--------------+
| goods |
+--------------+
| id |o---+
| ... | |
| ... | |
+--------------+ | +----------------------+
| | goods_promotion_rule |
+--------------+ | +----------------------+
| promotion | | | id |
+--------------+ +--->| goods_id |
| id |o------->| promotion_id |
| name | | ... |
| plugin | | ... |
+--------------+ +----------------------+
goods_promotion_rule 负责将商品与促销规则关系建立起来
promotion 是促销脚本,我方案是使用 lua 编写促销脚本,plugin用于存储lua文件地址
这样做的好处是不用因为促销规则改变而重新修改程序,单独制作 lua脚本即可,
以上仅仅提供一个思路,你还可以建立一个goods_promotion_group将促销商品分组,然后再与goods_promotion_rule建立关系。
另外在购物车中会同时出现多种促销规则,也是要考虑的。
原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。