как отправить уведомление клиенту через 30 минут? - PullRequest
1 голос
/ 05 марта 2020

Я пытаюсь отправить уведомление через 30 минут в клиентское приложение после того, как он нажмет на подтверждение доставки. Я создал прослушиватель событий для отправки этого уведомления, но как я могу заставить слушателя прослушивать событие и отправлять это уведомление через 30 минут?

Это моя функция подтверждения доставки в APIController:

public function confirm_delivery(Request $request)
{
    $id = (int)$request->order_id;
    $order = Order::find($id);
    Order::where('user_id', $user->id)->find($id)->update(['stage' => 9]);
    $type = 'CUSTOMER_';
    $uuid = $user->uniqid;
    $order_id =$id;
    $order_no =$order->order_no;
    //Todo::Event to send notfifiction for user to rate place after 30 mins
    event(new CustomerRatePlaceEvent($type,$uuid,$order_id,$order_no));
    return ResponseHelper::customizedResponse(true, 1, 'Order delivered to customer.');
}

_Construct в CustomerRatePlaceEvent:

public $type;
public $uuid;
public $order_id;
public $order_no;

public function __construct($type,$uuid,$order_id,$order_no)
{
    $this->type = $type;
    $this->uuid = $uuid;
    $this->order_id = $order_id;
    $this->order_no = $order_no;
}

EventServiceProvider:

 CustomerRatePlaceEvent::class => [
     CustomerRatePlaceListener::class,
 ],

CustomerRatePlaceListener:

public function handle($event)
{
    NotificationHelper::ٌratePlaceNotification($event->type,$event->uuid,$event->order_id,$event->order_no);
}

(код уведомления находится внутри вспомогательной функции и все работает нормально: NotificationHelper :: ٌ ratePlaceNotification)

1 Ответ

2 голосов
/ 05 марта 2020

Для этой задачи достаточно очереди.

Вы должны использовать отложенную диспетчеризацию - https://laravel.com/docs/7.x/queues#delayed -диспетчер

Когда пользователи используют конечную точку API или создают какую-либо сущность Вы отправляете с задержкой 30 минут.

Примерно так:

SendNotification::dispatch($podcast)->delay(now()->addMinutes(30));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...