一、系统介绍
餐饮行业竞争十分激烈,实施有效的营销活动对于吸引顾客、提高销售和增加品牌认知非常重要。
二、系统设计
1.系统架构
营销整个系统分为活动、权益、规则三个模块。
活动包括像新用户注册、支付返、抽奖。活动流程包括投放、参与活动、完成活动发奖。
权益包括礼品卡、积分、卡券。流程包括获取可用权益、核销和冲正。
规则包括活动投放、玩法、发放规则。权益核销和冲正规则。
2.系统流程
活动策略:
1.先发放后使用: 例如迎新活动、抽奖活动、支付返券包。
活动推荐是在各个资源位,如个人中心。
活动完成后会发放权益。
下单去使用对应权益。算价会根据用户权益计算。使用权益后核销权益。
2.发放后立刻使用
主要是提单场景,如一分购、订单满减、单品满减、换购等活动。
活动推荐一般是在提单时候,涉及购物车、结算页、收银台等场景。
活动算价根据权益规则计算(不是用户已有权益)。
活动完成(用户提单/支付后)会发放对应的权益,并把奖励给直接核销掉。
3.活动数据模型
4.权益中心模型
5.权益模型
优惠券权益
6.简单类图
三、技术方案
1.如何实现商家给百万用户发券
1.用户文件上传到文件服务器
2.设计发券任务,包括文件地址,发放的用户券奖励。
3.解析文件内容,构建mq消息(分批、重试),记录读取行数。
2.库存扣减。
方式一: 基于mysql
a. 有事务
1.更新库存
2.落变更流水
b.无事务
1.获取库存版本
2.基于版本更新库存
3.异步落库存流水
方式二: 基于redis lua
a、 lua具体逻辑:
1、前置防重幂等校验
2、库存扣减
3、落库存流水
方式三: 基于mysql,库存分片
3.优惠叠加与共享如何设计
1.计算所有优惠组合的全排列。
算法 -> 递归 & 回溯
2.在计算某个优惠时候,通过CartLocker保存前置优惠计算结果。
CartLocker -> 记录当前的购物车对应活动锁定商品
CartLocker -> Locker list; Locker记录sku与活动的锁定关系。
Locker -> sku, lock-quantity,promotionAmount,price_unit,promotionId,promotion-type
目前是一件商品只能用一个优惠,所以商品被某个优惠锁定后,则直接跳过。
tips: 算价有组合,订单满减,阶梯等,每种策略算的核心是已最小代价获取最多优惠,一般都是贪心的思想。
3.选择优惠粒度最大的一个组合。
4.优惠互斥
所有规则互
四、业务指标
1、活动拉新、留存。
2、活动曝光和点击转换率。
3、ROI
roi = 回报 / 成本。