| 知乎專欄 | 多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者” |
設計思想是,在購物車結算前匹配促銷規則計算出最終優惠金額
+-----------------------+
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建立關係。
另外在購物車中會同時出現多種促銷規則,也是要考慮的。