仅当订单状态改变时才执行该功能

问题描述 投票:0回答:3

我正在执行通知任务。当管理员在管理面板中更改订单状态时,我想执行通知功能。截至目前,它每 30 秒运行一次。我的主要任务是仅在订单状态发生变化时才执行通知功能。

例如订单号001的订单状态为待处理。现在,管理员将此订单状态更改为已接受。然后我想执行这个函数并在我的 Android 应用程序中显示通知。如果订单状态在 30 秒后仍保持不变,或者如果管理员没有更改状态,则不应执行。

这是代码

if (response != null) {
      String order_status = response.getString("order_status");
      String status_desc = response.getString("status_description");              
      createNotification(getActivity(), isLoggedIn, order_id, order_status, status_desc); // I want to execute this function only if the order status changes
}

如有帮助,我们将不胜感激

java android android-notifications
3个回答
0
投票

创建订单状态常量

final String PENDING = "pending"
    final String ACCEPTED = "accepted"
    final String DELIVERED = "delivered"

  //  Using IF
    if (order_status.equalsIgnoreCase(PENDING)){
      //execute your function according to your status
    }else if(order_status.equalsIgnoreCase(ACCEPTED)){

    }else if (order_status.equalsIgnoreCase(DELIVERED)){

    }

   // using switch case
    switch(order_status.toLowerCase()){
      case PENDING:
      //execute your function according to your status
      break;
      case ACCEPTED:
      break
      case DELIVERED:
       break;
      default:
      System.out.print("Add more cases");
    }

0
投票

您必须以某种方式识别状态变化。也许您可以用上次修改时间来装饰状态,并且可以在发送通知之前检查该时间。


0
投票

让我们回顾一个案例,当管理员将订单状态更改为某个值并立即(30 秒内)撤消其更改时。在这种情况下应该发生什么?显然,没有发送任何通知,因为订单状态没有改变。

让我们考虑另一个情况。如果您的系统出现故障该怎么办?系统启动后用户会收到通知吗? 30 秒(或任何)时间范围不是一个好的决定,因为您的系统可能会停机未知的时间。

为了解决您的任务,我建议采用以下方法。

  1. 一个不可变的 Events 表,其中包含 event_id Number 自动递增、order_id、status、timestamp 字段。每次更改订单状态后,都会在该表中插入一行。
  2. Acknowledgments 表具有 event_id、processed_timestamp 字段,这将作为了解哪些事件已被处理的参考。每 30 秒,您应从确认表中检索 event_id 大于最后处理的事件的事件,并从检索到的行中获取最新事件并发送通知。
© www.soinside.com 2019 - 2024. All rights reserved.