利用微信的受权,咱们获得咱们须要的信息,这边微信的公众平台开发者文档有较消息的文档,具体可见http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html
在鉴权这一块,主要是利用微信提供的接口,获得用户的openid,即用户惟一标识,用做用户的身份的断定和后续的操做。html
这里逻辑也不复杂,若是用户鉴权经过后,进入到公众号的活动页面,与微信平台接口的操做基本上就结束了(若是须要刷新access_token的话就是另一回事)。流程就进入到了整个活动的后台逻辑了,通常的活动,以抽奖类的居多,下面就以抽奖类的活动中的几个点谈一下想法。数据库
当用户屡次进入,就会对数据库用户表进行读或者写操做,若是并发量大的话,容易形成系统响应缓慢的问题,甚至出现进不去活动页面等极端状况。这时候,首先须要作的是就是对数据库进行优化,正确的设计设计库和数据库的查询和插入等语句。若是优化后的性能仍是不能满意,能够考虑使用NoSQL数据库,Redis或者Memcached,可较好的解决在用户登录时因为数据库读写瓶颈形成的登陆缓慢的问题。微信
这里主要设计抽奖逻辑的设计,抽奖活动,核心就是如何设计用户的中奖逻辑,能按照预期合理地将奖品发出去,实现起来大概有下面几种。
1.直接设计一个数字,好比100,当第100个用户进来进行游戏操做的时候直接中奖,原理很简单,实现起来极为方便,可是须要对用户的量和时间点有一个校准确的预期,否则若是数字过大,可能活动结束了都没能有人中奖,并且这种方法后期改变几率可能不是特别方便。
2.用户进入活动界面,直接获得一个随机数,好比Random random = new Random(100);
而后和预先设置的中奖的幸运数作比较,若是相等,则返回中奖。这种中奖逻辑设计起来也不复杂,主要问题是对几率的一个把控。
若是有具体的要求,可能还须要本身设计一种抽奖逻辑,两种方法混合起来用,最好能作到方便的进行几率的调整。并发
暂时只想到了这么多,之后有新的再补充吧,若是有什么说的不对的地方,请多多指教。dom