$isIn==4){ returnview(activity.test.preview);}elseif($isIn==3){ returnview(activity.test.over);} returnview(activity.test.main);} 在判断的时候,为了保证判断时间的准确性,我们还是建议增加多一行记录:date_default_timezone_set(Asia/Shanghai);3活动规则的实现这是整个助力活动比较关键的一个部分。助力值 1、首先说说助力值的确定问题。一般来说,助力的规则里面有每助力一次增加1,或者增加随机值,或者根据特定的比例,增加特定的值等等的方式。我们需要做一个方式是普遍适用的,并且是可以通过配置来确定规则的。 我们用了一个json数据格式来保存规则,如下:{值1:比例1,值2:比例2,值3:比例3,………………值N:比例N} 一般来说,比例1+2+3+……+N= ,表示%,但是就算不等于%也没有关系,最终会依据%来转换。 写一段代码,根据比例来产生对应的值,并且封装为一个类,很方便就可以达成了,可以随意调用。助力关系 2、助力关系问题。一般来说,助力关系的判定,是对自己和帮助的人的相互帮忙的关系的判定。无非也就是有以下的几点: (1)已经帮过忙,一次就算; (2)还没有帮过忙; (3)特定的时间段内帮忙的判定,比如每天可以帮一次等等。 我们需要一个表,来记录所有人之间相互帮忙的过程:support:id,act_id,sponsor,supporter,create_at,create_ip,update_at,support_value 如果你喜欢,还可以加入memo字段等。Create_at和update_at是laravel管理固定需要的字段,其实update_at可以不需要的。助力权利 3、助力权利判定。所谓助力权利的判定,就是助力者对于自己的助力的关系的判定。无非就是: (1)你有资格继续帮忙助力; (2)你没有资格继续帮忙助力,可能是你的总的次数用完了。 同样是利用support表进行必要的判定,只是此时此刻,需要确定的是自己的一些关系。 值得说明的是,2和3点,都建议使用一个配置库来进行某些规则的配置。 比如:Max_Support_Cnt=5等,表示最多可以帮5个人助力等。3互动信息的呈现 实际上,我们在互动游戏玩的过程中,会发现,互动信息呈现出来,将会比较有效地拉动大家玩的兴趣。 一般来说,需要包括最少几个信息: 1、英雄榜、排行榜信息,就是把当前助力人数或者助力值较高的人排行列出来,激励大家积极向上。这个因为涉及到自己的排名,以及其他人的排名,所以比较复杂。 我这里贴一段SQL,给大家参考,就是如何直接从数据库里面获取排名的:selecta.*,b.openid,b.nickname,b.headimgurl,
rownum:=rownum+1asrankingfromcf_task_sponsoraleftjoinusr_userinfobona.sponsor=b.idjoin(selectrownum:=0)rorderbya.support_valuedesc,a.last_updatetimeasclimit 看到了rownum:=rownum+1这个吗? keypoint 2、爱心榜、助力榜等,就是显示帮忙的好友信息,以及帮忙的数量。这个比较简单,直接从support表去取就好了。4安全考量 安全的角度,除了程序本身要健壮之外,还必须要考虑其他的辅助的模式。 1、IP的限制。 IP范围,可以从 IP数量:还有另外一个就是,限定同一个IP只能帮忙助力多少次。这样,有好有不好,也因为这样比较容易误伤。不过这个点,我们认为是必须的。 涉及的数据库表,我们叫: 2、黑名单库。 你不要跟我说你没有遇到过活动*。 如果有,你完全可以把他们拉进来黑名单库,每次他们发起活动或者他们帮忙助力的时候,你都首先去判定一下,他们是否在库里面,如果在,就直接跟他们Ciao了。 别误会,Ciao据说是意大利语的再见的意思, 不是国内的某意思哦。涉及数据库表:blacklist,字段包括:id,content,type,memo,create_at,update_at,desc等。 每次判定的时候就直接用content+type去判定即可,毕竟放入里面的Openid、userid、IP地址等,都是完全不同的内容形式,放在一个位置即可。 3、助力提交模式,还是要用到laravel的跨域验证。这个是基本的了。 4、提交辅助验证。在做POST提交的时候,尤其是Ajax提交的时候,需要注意做好其他验证码的防伪,一般来说,在每次装载页面的时候,都产生一个当前页面的验证码,写入session,提交的时候进行验证即可。跟前一步laravel的机制很一致。 5、助力/砍价过程,使用数据库的事务处理,可以 限度保证数据的一致性。又到了要总结的时候又写那么长……又没有我的梗……我就喜欢长……还喜欢你的大宝剑……程序猿安慰师小林写到快结束的时候,才发现写得太长了,而且还不够特别的细致。以后有时间就专门抽一个个的点出来详细写吧。我们提倡的做法是尽可能通用一些,这样后续的类似活动才有可能更好更快地开发出来。Ciao不点赞的程序员不是好程序员。新疆治疗白癜风的医院治白癜风南京哪家医院好