0

在过去的几周里,我的任务是开发一个专门针对我公司需求的票务系统。好吧,没什么大不了的……现在我要谈一个更棘手的话题,我只是无法完全理解。

基于票证最后更新时间的通知系统。

好吧,众所周知,在票务系统中,我们有很多票。我们的每张票都有一个票“状态”,例如“等待客户”、“待发货”等。这些状态具有不同的阈值 IE: 60分钟,120分钟..

基本上我有一个每两个小时运行一次的服务器应用程序。它遍历系统中所有打开的工单,检查它们的工单状态和阈值,如果 LastUpdate 时间超出了我的 60 分钟阈值,那么系统会发出通知,说这张工单没有被处理,有人需要克服它。好的,这意味着系统每运行两个小时就会检查一次时间,如果票证不符合其阈值,则会发出 2 级通知。相同的过程适用于通知 3。

这种情况的问题是,当星期五到来时会发生什么?可能只有 3 张门票需要在周五营业结束前发送通知。然而,当星期一到来并且该系统再次运行时,它将发现每张不合规的票,这意味着我们很可能在人们的邮箱中拥有超过 100 张票。这似乎是任何在日期时间之外运行的通知系统中的常见问题。

有什么建议么?

4

1 回答 1

1

编辑:现在我知道它是一个 C# 应用程序..

当您的应用程序决定是否发送通知时..首先,检查是否是周末:

if (DateTime.Now.DayOfWeek != DayOfWeek.Saturday && DateTime.Now.DayOfWeek != DayOfWeek.Sunday)
 // start sending notifications.

或者,您可以这样做:

if (TimeSpanElapsedToSendNotificationFor(thisItem)) {
    if (isWeekend()) {
        thisItem.LastUpdate.AddDays(2);
        persist(thisItem); // update the DB
        return;
    }
    // send notification here..
}

因此,首先检查是否已经过了所需的通知时间。如果有.. 仔细检查是否是周末.. 如果是.. 将 2 天添加到此项的 LastUpdate 属性,然后退出该功能。如果是工作日,它将继续处理。使用第二种方法,您的第一次检查将在所有工作的第二次运行中为假,除非它们是在周末添加的。

PS:为什么不直接使用定时任务,只在工作时间运行呢?

于 2012-11-13T00:57:16.540 回答