1

我正在重新设计我们的订阅模型,想知道什么是最好的设计模式:

型号 1:

用户有一个计费日期。

在计费日期之上,用户被分配了一个特定的到期日期。到期日期 = signup_date + subscription_length 。

如果 current_time() 小于 expiry_date,则授权系统授权访问。

型号 2:

用户有一个计费日期。

如果用户订阅状态=活动,则授权系统授权访问。

使用 Cronjob,如果 current_time > billing_date,用户的订阅状态将从活动更改为过期

4

3 回答 3

2

模型 1 有一个修改更好:expiry date = subscription_date + subscription_length- 不是signup_date因为注册日期总是用户第一次注册(通常)。但他们会反复重新订阅(希望如此)。用户重新订阅到期后也可能存在间隙,因此如果您仅将订阅长度添加到注册日期,他们将失去新订阅的时间。

正如@Will 所指出的,模型 2 是一种查找哪些用户的订阅即将到期的好方法。

于 2013-04-29T07:54:08.900 回答
1

我个人觉得Model 1是一个更好的方法。
即使用户在两者之间延长了订阅,您也可以安全地应用回调并设置适当的expiry_date. 这将对模型 2
中的 cron 预期的后台作业没有任何瓶颈。

我很想了解更多有经验的开发人员在这个问题上的观点。:)

于 2013-04-28T22:40:28.327 回答
1

模型 1 很好,因为您只在需要时才进行评估,即当有人试图访问某些东西时,它非常有效并且节省了 cron 工作。Cron 作业管理起来很麻烦,并且可能会产生扩展问题,

模型 2 的优点是您可以发现会话何时到期(或不久之后),即在到期时有一个保证事件。这可能是一件好事,例如,如果您想发送一封电子邮件说订阅已过期,或者您想知道有多少订阅仍然处于活动状态。当然,还有其他型号也可以获得这些功能。

于 2013-04-28T22:46:22.987 回答