Автоматизация почты Laravel - PullRequest
1 голос
/ 28 мая 2019

Я разрабатываю систему выставления счетов для сбора платежей от клиентов. После того, как я создаю счет-фактуру, клиентам будет отправлено электронное письмо со сведениями о счете-фактуре со ссылкой для оплаты. Я хочу заново сгенерировать токен оплаты (после его истечения) и отправить обновленную ссылку для оплаты клиентам, а также хочу автоматизировать процесс.

Я создал задание с именем renewingInvoiceLinks, и внутри метода handle я написал код для извлечения всех счетов-фактур с просроченными ссылками, создания нового токена и отправки новой ссылки. В App->Console->Kernel.php запланировано задание следующим образом. Я отослал Документы Laravel, но не получил должного потока для отправки работы.

protected function schedule(Schedule $schedule)
{
    $schedule->job(new renewingInvoiceLinks, 'renewingInvoiceLinks')->daily();
}

Вещи, которые я хочу выяснить.

  1. Правильно ли использовать Job для выполнения требования или нет? Если нет, то каков идеальный способ сделать это.

  2. Как отправить работу? (Где мне нужно вызвать метод отправки?)

1 Ответ

0 голосов
/ 28 мая 2019

Я думаю, что вопрос довольно субъективен и самоуверен, но вот как я это сделаю:

  1. При каждом обновлении ссылки на платеж я запускаю пользовательское событие PaymentLinkUpdated. Вы можете либо запустить это событие в тех местах, где вы обновляете ссылку, либо прослушать событие saving в соответствующей модели и запустить событие PaymentLinkUpdated, только если исходное значение отличается от обновленного.
  2. Пользовательский прослушиватель событий прослушает обновление ссылок для оплаты и отправит электронное письмо, содержащее детали оплаты и ссылку. Этот прослушиватель событий должен быть из очереди , чтобы электронные письма отправлялись в фоновом режиме и не блокировали пользовательский интерфейс.
  3. Запланированное задание проверит ссылки на просроченные платежи и обновит соответствующие записи, приведя событие PaymentLinkUpdated в случае необходимости. Это активирует шаг 2 (который снова автоматически ставится в очередь).

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

...