一下观点都是小弟未经深思熟虑的考虑写的,如果不对的地方请指点。。。。

  抽奖系统 俗称 大转盘 或 九宫格抽奖功能,大转盘或九宫格的功能我就不说了,网上插件有很多,也很简单,这里就简单的讲解一下思路

  1:如果奖品设置的是一等奖、二等奖、三等奖等  让后每个级别的奖项有说明让用户知道每个级别的奖项对应的实物或虚拟物品是啥就行;

       如果奖品设置的是后端配置的数据,建议后端返回的数据用缓存保存起来,避免每次读取数据库中的数据,这样可以有效的提高效率,毕竟奖品修改的频率不是很高,维护缓存也不麻烦。

  2:前端抽奖流程: 

      a) 当用户点击抽奖按钮时,让转盘转起来(具体转多少秒,这个插件里面能控制),让后通过ajax请求后台的程序(期间转盘的指针是一直在变动或转动的)。

      b) 当后端返回数据后, 通过返回的数据来控制转盘指针最总停止的位置。

                      c) 具体用户能抽中什么奖品,这个不能由前端决定,是请求后端后,后端的程序来控制用户抽中的奖品,让后将抽中的奖品信息返回给用户端,用户端根据后端返回的信息对转盘进行控制。使用后端控制抽中的奖品可以有效的房子

       前端用户使用非法的手段来控制转盘最总定位的位置。 更简单的说当用户点击抽奖按钮时,此次抽中的奖品就已经确定了,指针的变动是给用户的一直遐想。

  3:后端控制抽奖流程:

      a) 后台需要对整个抽奖的控制 ,如中奖率(需控制)、每次抽奖的间隔(需控制)、每个用户每天运行抽奖的次数(可不控制)、抽奖系统的有效时间(可不控制) , 奖品允许抽中的总数量(可不控制)等等;

      b) 当后端接收到前端抽奖的请求时,首先要对抽奖控制的因素一一的验证;

      c) 当所有的的控制因素都通过后,在通过php在奖品列表中通过计算中奖率来抽取一个有效的奖品;

      d) 这里如果控制了允许抽中的总数量的话,需要验证一下当前抽中的奖品的总数量是否超出控制范围,如果超出可以重新抽取一次或返回一个异常的情况给前端让前端用户重新抽取(如果总量和中奖率没有控制好,这种情况出现的次数较多的话不建议);

      e) 将当前抽奖的信息、是否扣除用户积分或余额的信息记录带数据库或redis缓存中;

      f)  将抽中的奖品信息返回给客户端;

这就是我设计的一个也不算很简单的抽奖系统, 后端控制中奖率等因素时一定要适量, 本来抽奖系统就是吸粉的活动,弄得大家都不想玩了,那就没有意义了。  之前在网上看到一个后台还要控制指定用户抽中指定的奖品, 个人觉得这个已经完全失去了抽奖系统的乐趣了。  抽奖的具体流程大概就是这样。  抽奖系统比较有难度的一点就是计算中奖率的问题了 当然这个中奖率的计算方式我尽快的也弄出来给大家参考。