背景:blog
1、電商促銷方案:get
一、滿減-指定專區商品it
例如:300元減30元,500元減60元io
二、X件Y元-指定專區商品電商
例如:A區2件398元,B區2件199元class
三、直降-指定商品import
四、限時特賣List
2、優惠券:權限
一、全場卷二進制
二、專場卷
三、指定商品卷
四、秒殺卷
分析:
假設:一個商品只能夠屬於一個促銷活動,即一個專區。
計算哪些優惠券是很煩的以一件事情,並且卷的金額還要均攤給能夠用卷的商品,退貨後會扣除相應的價格。
忽然發現和權限系統特別像:
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; } //指定全場卷驗證 } }
從結構上來講分三個部分:限制條件,促銷範圍,促銷結果。而後從每一個維度上都有若干玩法,例如:
限制條件:時間,訂單金額,購買數量,購買人數,支付方式,收貨地址,運輸方式,用戶類型,積分等等
促銷範圍:單個商品,一組商品,品類,整單,以及例外品
促銷結果:折扣,扣減,返券,買搭,買贈等等
而後,把三個維度再作一下組合。。。有的玩呢~
還須要有一個促銷效果彙總的功能,用來記錄分析每個促銷活動的實際花費、帶來的銷售、毛利、轉化率等等。用於持續調整促銷活動的效果。