首页 > 代码库 > 关于年会抽奖那些事

关于年会抽奖那些事

http://blog.chinaunix.net/uid-11121450-id-3480134.html快春节了,各个公司都陆续举办年会,ipad作为年会抽奖的大奖都卖脱销了,在年会抽奖出现尴尬的是:抽奖抽多了,没有奖品可发。

我昨天总结了在开发过程中遇到的抽奖问题

1.抽奖类型

 

1.1 即开型
提交后立即知道是否中奖:大转盘,老hu机

1.2 公证型

由公证处公证,现场抽奖

1.3投票型

根据投票数最高排名,选出中奖者
1.4 评选型
由客户根据作品质量选取

 

这四种类型中出现错误时,最难处理的顺序是:危险性:即开型>公证型>投票型>评选型

2.抽奖要素

 

2.1 即开型
奖品、概率、中奖时段、中奖规则(微博粉丝数,是否可以重复中奖,…)、如何获取中奖用户信息、通知中奖方式
2.2 公证型
奖品、概率 、如何获取中奖用户信息、通知中奖方式,中奖规则(微博粉丝数,是否可以重复中奖,…)
2.3 投票型
奖品、投票限制(每天每人或者ip每个作品只能投票10次…)、防止刷票(验证码) 、如何获取中奖用户信息、通知中奖方式
2.4 评选型

奖品、如何获取中奖用户信息、通知中奖方式

 

3.抽奖流程

 

4.注意事项

 

1)奖品不能够发多
2)奖品类型不能混淆
3)尽量在一次请求内完成抽奖
4)多步即时开奖时,每一步之间用uuid关联(或者session),不能够使用用户id或者别的自增的id,必须保证id不能够被猜出来。
5)投票一定得考虑刷票现象,最好使用中文验证码
6)抽奖过程中若是出现异常,一定得有返回值,返回值一定是“不中奖”
7)若是出现数据库错误,一定回滚
8)抽奖的每一步最好记录到日志文件中,以备检查
9)抽奖程序里的时间必须是一个,应该是在程序开始时记录一个时间戳,所有涉及到时间的地方都用这个时间,不能够在不同的sql语句中使用now,否则出现在同一个程序里跨天的问题
10)一定得使用POST方式提交数据
11)数据库里的中奖标志只能是一个字段

12)中奖名单页面中查询一般是中奖标志加上时间段或者奖品分类

 

5.抽奖概率算法

 

假设 一等奖几率:1/1000,二等奖几率:1/100
1)设定基数是1000
2)产生一个0…999的随机数
3)若是这个数小于1则中一等奖
4)若是这个数小于1+10,则中二等奖
5)否则不中奖

 

 

 

关于年会抽奖那些事