## 設計
### 系統
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