抽奖活动小程序按人头开奖技术分析
~
本文场景
其实前几天就实现了这个功能,今天回顾下技术细节,该开奖模式采用了云开发的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
夜深了,就酱