## 设计
### 系统
1. 统一生成二维码
2. 导出二维码,交给第三方印刷
3. 商家购买后给商家【发货】:1. 生成码段分配给商家;2. 二维码快递寄给商家
>[info] 系统维护着一个二维码库存,给商家【发货】时才生成码段并分配给商家,码段中的二维码就是使用的系统二维码库存。
### 商家
1. 商家购买码段 **(直接扫描支付)**,收到二维码印刷品
2. 可以选择对码段进行拆分
3. 创建活动,配置活动,投放金额 **(余额支付)**
4. 给码段绑定活动
### 用户
1. 扫描商家给的二维码印刷品
2. 进入活动页面
3. 检测活动状态、参与条件
4. 分享转发,参与活动
5. 检测活动状态、参与条件
6. 活动参与成功,奖励发放到用户账户(奖励金额从活动的投放金额中减)
7. 检测用户是否关注平台官方微信(检测调用接口做实时检测),如果关注了就直接发放金额到用户余额,没有关注就记录到待发放列表。
>[danger] 二维码被使用了就无效了,那么怎么才叫二维码被使用了呢,二维码被使用的标志就是扫描后成功参与了绑定的活动。
**用户进入个人中心就调用接口检测并更新是否关注字段,如果已关注,就处理待发放列表。**
当然每次实时调用获取用户信息,会有频率限制,可以加上缓存。(这样可能出现的问题就是,当开发者url接口不可用时,用户关注后,收到待收奖励会有延时,他要不断地进入个人中心,多次重试才有可能收到奖励)
### 公众号
接受用户关注和取消关注的事件。
如果检测到有人关注,则看他有没有成为用户,是用户就去更新他的是否关注的字段,并处理他的待发放列表。
检测到用户取消关注,则看他是不是用户,是用户就更新他的是否关注字段。
用户进入个人中心会自动检测,但是为了更好的实时性体验,所以这个接口也做,但是不能以这里为准。不能完全依赖这里。这种方式不是所有时候都是可用的,比如如果停用微信开发者url就不行了,所以还是要以个人中心获取用户信息的接口为准。
* * * * *
对用户信息,活动信息,敏感操作的地方,都会用锁的。
last update:2017-7-4 15:28:47