用户连续签到7天 7天均有不同的奖励 如果有中间则会从第一天重新开始签到 7天一个周期完成后恢复到第一天开始重新签到考虑到用户数大概在200W,数据库如何设计更加合理?
最后一次签到时间和目前的连续签到天数
&div class=&highlight&&&pre&&code class=&language-text&&签到表(用户ID, 最近签到日期, 连续签到天数)
&/code&&/pre&&/div&当用户签到时,&br&&div class=&highlight&&&pre&&code class=&language-postgresql&&&span class=&k&&UPDATE&/span&
&span class=&err&&签到表&/span&
&span class=&k&&SET&/span&
&span class=&err&&连续签到天数&/span& &span class=&o&&=&/span&
&span class=&k&&CASE&/span& &span class=&k&&WHEN&/span& &span class=&err&&最近签到日期&/span& &span class=&o&&=&/span& &span class=&n&&Today&/span& &span class=&o&&-&/span& &span class=&mf&&1&/span& &span class=&k&&THEN&/span& &span class=&p&&(&/span&&span class=&err&&连续签到天数&/span& &span class=&o&&+&/span& &span class=&mf&&1&/span&&span class=&p&&)&/span& &span class=&n&&MOD&/span& &span class=&mf&&7&/span&
&span class=&k&&ELSE&/span& &span class=&mf&&0&/span& &span class=&k&&END&/span&
&span class=&k&&WHERE&/span&
&span class=&err&&用户&/span&&span class=&n&&ID&/span& &span class=&o&&=&/span& &span class=&err&&用户&/span&&span class=&n&&ID&/span&&span class=&p&&;&/span&
&span class=&k&&UPDATE&/span& &span class=&err&&签到表&/span& &span class=&k&&SET&/span& &span class=&err&&最近签到日期&/span& &span class=&o&&=&/span& &span class=&n&&Today&/span&&span class=&p&&;&/span&
&/code&&/pre&&/div&
签到表(用户ID, 最近签到日期, 连续签到天数)
当用户签到时, UPDATE
连续签到天数 =
CASE WHEN 最近签到日期 = Today - 1 THEN (连续签到天数 + 1) MOD 7
ELSE 0 END
用户ID = 用户ID;
UPDATE 签到表 SET 最近签到日期 = T
&p&&strong&1,连续签到&/strong&&/p&&p& 用户点击签到记录一次CheckTimes_YYMMDD&/p&&p& 记录CheckTimes_Last_YYMMDD&/p&&p& 然后记录一次 CheckLog&/p&&br&&p& 用户进行签到行为的时候:&/p&&p& 对比CheckTimes以及CheckTimes_Last&/p&&br&&p& 当YYMMDD_Last - YYMMDD 中 YYMM相同 且 DD=0 :请勿重复签到&br&&/p&&p& 当YYMMDD_Last - YYMMDD 中 YYMM相同 且 DD=1 :CheckLog+1&br&&/p&&p& 当YYMMDD_Last - YYMMDD 中 YYMM相同 且 DD&1 :CheckLOG=0&/p&&br&&p& 用来记录连续签到的次数。&/p&&br&&p&&strong&2,单位时间可重复操作限制&/strong&&/p&&p&&strong& 同理可进行使用的地方是用户单位时间内可执行操作次数限制。&/strong&&/p&&br&&p& 用户执行动作时进行记录:CheckTimes_STAR_YYMMDD&/p&&p& 用户执行后续执行动作操作:CheckTimes_YYMMDD&/p&&p& 记录CheckLog&/p&&br&&p& 用户每次执行操作的时候,进行对比CheckTime_STAR。&/p&&br&&p& 既:用户在30 执行操作记录为 STAR;&/p&&p& 1)
第二次执行时间为 &strong&16&/strong&30, CheckLog=2&/p&&p& 2)第三次执行时间为 &strong&17&/strong&30,CheckLog=3&/p&&p& 3)CheckLog 大于预设值,反馈您的操作过于频繁。&/p&&p&
4)第四次执行时间为 ,大于操作间隔。&/p&&p&
5)重置CheckStar=,CheckLog=1&/p&
1,连续签到 用户点击签到记录一次CheckTimes_YYMMDD 记录CheckTimes_Last_YYMMDD 然后记录一次 CheckLog 用户进行签到行为的时候: 对比CheckTimes以及CheckTimes_Last 当YYMMDD_Last - YYMMDD 中 YYMM相同 且 DD=0 :请勿重复签到 当YYMMDD_Last - YYMMDD…
已有帐号?
无法登录?
社交帐号登录 导读:DNF2015年签到活动什么时候结束呢?刚拿到一点材料,突然觉得这个活动简直是太棒了。不知道这个活动什么时候结束呢?
玩家问题:DNF2015年签到活动什么时候结束?
回答:2015年的签到活动时间是3月12日-4月9日。所以4月10日签到活动就没有了,大家4月9日一定要记得吧材料领到哦!
安游DNF交流群,一群(已满):或者点击二群:或者点击申请加群吧!
[][2730次]
[][2622次]
[][1752次]
[][1591次]
[][1386次]
[][1115次]
[][06-20]国服DNF决战者刷图加点 决战者觉醒刷图加点
Copyright ©
All Rights Reserved 安游在线 版权所有
经营许可证:皖ICP备号-1