根据时间限制更改项目的状态

本文关键字:项目 状态 时间 | 更新日期: 2023-09-27 18:23:36

我为一个客户建立了一个竞价网站,用户在其中发布物品并设置拍卖持续时间。该物品首先处于Pending状态,直到管理员批准该物品或自用户首次发布该物品以来已过去12小时。从那时起,该物品将被Published,其他用户可以对其出价。一旦拍卖期结束,该物品应被关闭并且出价最高的人将赢得该物品。。。

除此之外,我还需要发送电子邮件通知。。。

  • 发布新项目后发送给管理员
  • 一旦获胜者赢得一个项目,他就会被授予
  • 拍卖结束后发给物品的所有者
  • 对于管理员来说,一旦拍卖结束,就会有赢家(即:人们真的出价)

目前,我正在做的是在我的业务层中调用一些方法,该方法检查是否有任何已超过12小时期限的待决项目可以发布,以及是否有已发布项目已超过拍卖期限可以关闭它们。这种方法是从几个地方调用的,比如网站的主页、项目的搜索页面和其他地方。。。这实际上给我带来了问题(请参阅此问题)。因此,我认为值得找到一个替代解决方案,帮助我摆脱所有这些最有可能是由于糟糕的设计造成的问题。

  1. 我应该通过从一个地方调用该方法并相应地发送电子邮件来集中这一点吗
  2. 我应该把这整件事委托给某种预定的任务吗?在这种情况下,运行此任务的合理时间框架是什么
  3. 还有其他建议吗

根据时间限制更改项目的状态

我应该把这整件事委托给某种预定的任务吗?在里面在这种情况下,运行此任务的合理时间框架是什么?

是的,这似乎是最好的方法。将发送到ASP.NET MVC应用程序之外的单独进程的电子邮件卸载。就时间框架而言,这将取决于您的业务需求。您可以看看Quartz.NET,它可以用作任务调度机制。

您肯定应该将其卸载到另一个进程,如计划任务或服务。你没有说你目前有多少用户,也没有说有多少用户可能同时在做一些事情,但如果你发现你的用户群在增长,通过网络请求发送大量电子邮件,最终会超时。

单独的任务/服务还可以让您更好地控制电子邮件的发送内容和时间。