我正在开展一个项目,当用户转向某个年龄时,我需要执行某项操作。
当用户年满12岁时,需要创建一个帐户,当用户满18岁时,需要禁用家长监督。
检查用户数据库中的用户是否达到特定年龄的最佳方法是什么。我是否创建了一个服务,检查特定年龄的所有用户并每天早上运行。或者是否有其他解决方案可以解决这个问题。
注意:
程序在服务器上运行,因此它日夜运行。
答案 0 :(得分:2)
创建一个存储过程,该过程返回今天生日为X岁的用户列表。然后,您每天都可以将年龄参数(X)传递给存储过程,以获取在该日转换该年龄的用户列表。
然后,您只需要一个日常工作来运行具有不同参数的存储过程(例如12和18),并使用返回的用户列表执行任何操作。
答案 1 :(得分:1)
检查每个用户年龄会花费太多资源。所以我认为更好的设计是创建一个单独的表:
ID | UserID | Date | Age
1 | 32 | 1.1.2024 | 12
2 | 32 | 1.1.2030 | 18
3 | 42 | 2.2.2021 | 18
创建用户后,他的第12个和第18个生日的日期将记录到此表中。然后,该服务每隔2小时运行一次,并检查此表是否已通过日期。如果找到,则调用事件并删除记录。
答案 2 :(得分:1)
如果根据技术任务,客户帐户的活动并不重要 - 意味着您无论如何都需要监控年龄 - 我建议您使用字段whatever PrimaryKey, CustomerID ..., CreateAccountDate, ParentalSupervisionDate
创建新表(添加到数据库)。
然后创建一个新任务和2个新stored procedure(SP):...Add...
和...Check...
其中
...Add...
SP将针对年龄小于18岁的人创建帐户,并在您需要采取行动时填写相应字段和日期。
实施例。客户生日是... 2010年。你填写字段" CreateAccountDate"与... 2022和字段" ParentalSupervisionDate"与...... 2028。
...Check...
SP每晚会检查适当的日期(与当前日期进行比较)和返回您应修改的客户帐户。
创建运行一次的temp SP
以填充新表,其中包含年龄未满18岁的现有客户的数据。
然后将temp SP
和...Check...
SP添加到该新任务,运行任务,并在完成后从任务中删除临时SP。首先应该运行temp SP
。
(不要修改现有的表 - 非常糟糕的做法 - 在你的情况下不需要)
最后,您将获得一项服务,该服务将在帐户创建时运行...Add...
SP,以及将每晚运行的任务...Check...
SP将返回第二项服务(或其他)的列表客户(客户账户 - 更好)必须修改(通常使用DataSet)。
当然不需要删除任何东西 - 这也是一个好方法。
答案 3 :(得分:0)
那里;没有足够的信息。如果没有什么特别的事情要做 - 我的意思是,从某个年龄开始,你不需要用钱或任何涉及金钱操作的任何特定金融业务 - 无需一直检查年龄。 我想你最好创建一个
使用事件处理程序的服务
客户的任何(行为)“活动”(不包括客户刚刚检查他的账户,发生了什么),检查客户的年龄和相应的响应。客户年龄超过18岁后取消订阅。
也可能发生客户在任何行动之前更改银行 - 并自动为此类客户做smth - 是一项不必要的工作。此外,每天检查所有客户都不是正确的事。