抽獎活動小程序按人頭開獎技術分析
~
本文場景
其實前幾天就實現了這個功能,今天回顧下技術細節,該開獎模式採用了雲開發的watch,用於監聽參與抽獎的人數變化,當參與抽獎的人數達到開獎人數時,更新抽獎活動標誌位
技術解析
雲開發watch是雲開發數據集基於webSocket的封裝,監聽集合中符合查詢條件的數據的更新事件,當所監聽的`doc`發生數據變化,觸發`onChange`事件回調,通過回調的數據切換相應的場景。
具體我記錄一些日誌信息,方便我驗證邏輯的正確性,我們具體分析下
先看下面截圖:
1
我一步步展開
具體的數據位於docChanges裏面
1
之所以這裏記錄了兩條變更是因爲後面的一個變更是由於抽獎活動狀態發生變更,由於當前抽獎爲滿15人開獎,而當前用戶參加後,正好滿15人,觸發 了抽獎活動狀態位的更新。
1
在上圖看到updatedFields了嗎,這就是更新的信息,本條更新了total,具體是將total更新爲15,
然後我們操作的時候也是根據這個total來判斷是否達到開獎的人頭數
今天在看細節的時候發現了幾個問題,一起做了優化,截止當下,我的抽獎活動小程序已實現按人頭和按時間二種抽獎模式
1
參考文檔
2)使用雲開發數據庫構建更生動的小程序? - 微信開放社區 https://developers.weixin.qq.com/community/develop/article/doc/000c4474a2845086709ad035359413
本文總結
當然按人頭開獎實現的方式很多,本文可以說是最優解決方案,本文在實現的過程中,參考了開源小程序單詞天天斗的挑戰答題模式的相關邏輯,
該技術方案同樣可用於二人及以上挑戰答題場景的技術實現。
1
1
夜深了,就醬