Home | 简体中文 | 繁体中文 | 杂文 | Search | ITEYE 博客 | OSChina 博客 | Facebook | Linkedin | 知乎专栏 | Email

25.3. 促销优惠组件设计

设计思想是,在购物车结算前匹配促销规则计算出最终优惠金额

		
                                     +-----------------------+
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建立关系。

另外在购物车中会同时出现多种促销规则,也是要考虑的。