背景:

一、电商促销方案:

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;
}
//指定全场卷验证
}
}


  

 



从结构上来说分三个部分:限制条件,促销范围,促销结果。然后从每个维度上都有若干玩法,例如:




限制条件:时间,订单金额,购买数量,购买人数,支付方式,收货地址,运输方式,用户类型,积分等等

促销范围:单个商品,一组商品,品类,整单,以及例外品

促销结果:折扣,扣减,返券,买搭,买赠等等

然后,把三个维度再做一下组合。。。有的玩呢~

还需要有一个促销效果汇总的功能,用来记录分析每一个促销活动的实际花费、带来的销售、毛利、转化率等等。用于持续调整促销活动的效果。