onQueue(QueueName::JOB->value); } /** * Execute the job. * * @return void */ public function handle() { info("領収証Emailポーリング:" . $this->order->receipt_pdf_email_id); $email = Email::findOrFail($this->order->receipt_pdf_email_id); $sendDatetime = $email->send_datetime; if ($email->send_datetime !== null) { // ポーリング終了 $this->donePolling($sendDatetime); } else if ($email->is_failed) { // ポーリング終了 $this->donePolling($sendDatetime); } else { $limit = $this->order->status_receipt_email_send_order_datetime->clone()->addDays(3); if (DateUtil::now()->gt($limit)) { // ポーリング終了(未完了) $this->donePolling($sendDatetime); Log::warning("領収証Email送信未完了検知 OrderID:%s", $this->order->id); } else { // ポーリング継続 $this->continuePolling(); } } } private function donePolling(Carbon $sendDatetime) { $this->order->status_receipt_email_send_datetime = $sendDatetime; $this->order->save(); info("領収証Emailポーリング完了:" . $this->order->receipt_pdf_email_id); } private function continuePolling() { static::dispatch($this->order) ->delay(DateUtil::now()->addMinutes(5)); info("領収証Emailポーリング継続:" . $this->order->receipt_pdf_email_id); } }