我正在开发一个练级系统,每当用户达到一定数量的分数时,他们就会被提升,当他/她获得100分时,他们会被提升到2级。
为此,我能够“实时”进行调平,因为我将检查是否有任何新点添加到表中,系统将计算他/她是否符合标准。
但是现在,有一个降级的情况,如果用户在当前级别到期之前未能升级到下一级别(用到期日期和时间表示),则用户将被降级。如果我将所有级别的到期时间设置为午夜(早上12点)并运行一个作业来扫描所有用户以检查是否有任何一个必须降级,我就能做到这一点。
我的问题是,如果我允许等级到期时间不仅是午夜而是跟随他/她升级的时间,则表示如果用户在2016/3/24 9:30上升到等级2,则等级到期时间为2016/4/24 9:30 am。
在这种情况下,如果此用户此时未登录或获得任何新积分,我该如何检查此用户是否应该平稳?由于所有用户都可以有不同的到期时间,因此无法为此调整设置任何工作。
提前致谢。
答案 0 :(得分:3)
使用多种技术组合:
1)您确实需要一个定期安排的工作(经常运行,比如说每10分钟甚至每小时运行一次),扫描自上次运行作业以来已过去的新到期时间可以将作业执行时间存储在单独的表中。顺便说一下,这个预定作业还可以处理任何其他需要无人值守处理的事件(即无需用户登录)
2)当用户登录时,明确检查他们的级别,到期时间以及您需要的任何其他内容。这将确保即使作业最近没有运行,也可以对其状态进行同步(近实时)准确检查。
这些技术的组合应该允许您处理任何这样的场景。
答案 1 :(得分:2)
我在商业配置系统中遇到类似情况,用户应在30/60/90天不活动后被标记。对于每个标志我在数据库中创建了Computed Column(s),当扫描记录时(对表选择),它将返回一个布尔(位)计算当时当前日期是否用户已在这些不同时间段内登录。
您可以通过将最后一个级别的运行时间作为列包含来提供类似的逻辑,然后使用单独的列应用业务逻辑以查看它们是否已经升级......等等。