背景:
一、電商促銷方案:
1、滿減-指定專區商品
例如:300元減30元,500元減60元
2、X件Y元-指定專區商品
例如:A區2件398元,B區2件199元
3、直降-指定商品
4、限時特賣
二、優惠券:
1、全場卷
2、專場卷
3、指定商品卷
4、秒殺卷
分析:
假設:一個商品只可以屬於一個促銷活動,即一個專區。
計算哪些優惠券是很煩的以一件事情,而且卷的金額還要均攤給可以用卷的商品,退貨后會扣除相應的價格。
突然發現和權限系統特別像:
A、購物車的每件商品=用戶,一個用戶可以屬於一個角色(上面的假設)
B、優惠券就想時被授權的功能
C、功能可以直接對用戶授權,也可以直接對角色授權。
那我們可以用二進制表示
// 專場 combination int c = 1;// ...00001 // 商品 good int g = 2;// ...00010 // 特賣 sale int s = 4;// ...00100 // 秒殺 Seckill int k = 8;// ...01000 //全場 all int a = 16;//...10000
購物車 G1:專場006 A1 A2 A3 A4 G2:專場007 B1 B2 B3 B4 G3:未參加活動 C1 C2 C3 貨號 權限 價格 專題 類型 組 A1 a|g 199 0 A1 a|g 199 A2 a|g 199 A3 a|g 199 A4 a|g 199 B1 a|g 199 B2 a|g 199 B3 a|g 199 C1 a|g 199 C2 a|g 199 C3 a|g 199 G1 c 799 6 G2 c 699 4 G3 a 399
CouponSelect couponSelect=new CouponSelect(); //我的優惠券列表 List<Coupon> myCoupons=couponSelect.getMyCoupon(); //我的購物車 List<Good> cardGoods=couponSelect.getCartGoods(); //可用卷 List<Coupon> availableCoupons=new ArrayList<Coupon>(); for (Coupon coupon:myCoupons){ for (Good good:cardGoods){ //優惠券類型 int coupon_type= coupon.get_type(); int good_auth=good.getAuthorized(); //優惠券能用 if ((good_auth & coupon_type)!=coupon_type){ //優惠券不能用 continue; } switch (coupon_type){ case 2: //商品卷 //貨號匹配 && 價格大於門檻 if (coupon.getItemNo().equals(good.getItemNo()) && coupon.getThreshold()<=good.getPrice()) availableCoupons.add(coupon); break; } //指定全場卷驗證 } }
從結構上來說分三個部分:限制條件,促銷范圍,促銷結果。然后從每個維度上都有若干玩法,例如:
限制條件:時間,訂單金額,購買數量,購買人數,支付方式,收貨地址,運輸方式,用戶類型,積分等等
促銷范圍:單個商品,一組商品,品類,整單,以及例外品
促銷結果:折扣,扣減,返券,買搭,買贈等等
然后,把三個維度再做一下組合。。。有的玩呢~
還需要有一個促銷效果匯總的功能,用來記錄分析每一個促銷活動的實際花費、帶來的銷售、毛利、轉化率等等。用於持續調整促銷活動的效果。