背景: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; } //指定全场卷验证 } }
从结构上来讲分三个部分:限制条件,促销范围,促销结果。而后从每一个维度上都有若干玩法,例如:
限制条件:时间,订单金额,购买数量,购买人数,支付方式,收货地址,运输方式,用户类型,积分等等
促销范围:单个商品,一组商品,品类,整单,以及例外品
促销结果:折扣,扣减,返券,买搭,买赠等等
而后,把三个维度再作一下组合。。。有的玩呢~
还须要有一个促销效果汇总的功能,用来记录分析每个促销活动的实际花费、带来的销售、毛利、转化率等等。用于持续调整促销活动的效果。