Как я могу отправить автоматическое электронное письмо с помощью cronjob через 2 недели после завершения заказа в Laravel - PullRequest
0 голосов
/ 18 октября 2019

Я работаю над Laravel 5.x. Когда заказ «обработан» и «выполнен», каждый клиент получает автоматическое электронное письмо. Я хочу, чтобы система отправила автоматическое электронное письмо с запросом на проверку примерно через 2 недели с даты выполнения заказа.

$ status означает статус заказа, а «C» означает «выполнено»

Изменено

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

app \ Consoles \ Commander \ ReviewEmailRequest.php

 public function handle()
    {
        //
        $targetUsers = DB::table('orders')
            ->whereColumn([
                ['status',"=",'C'],
                ['updated_at',"=",'DATE_SUB(CURDATE(), INTERVAL 14 DAY)']
    ])->get();

        Mail::send(['html'=>'emails.reviewRequest'],array('$users' => $targetUsers),function ($message)
        {
            $message->from('youremail@yourdomain.com', 'My Team');
            $message->to('$user')->subject('What do you think of the latest purchase?');
        });
        var_dump( Mail:: failures());
        exit;

    }

app \ Console \ Kernel.php

// Kernel.php

   /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
          $schedule->command('reviewrequest:email')
                   ->daily();
    }

Что вы думаете об этой идее?

Я пробовал этот код раньше. Но не стоит

OrderRepositoy.php

if(getenv('APP_ENV') === 'prod' || getenv('APP_ENV') === 'dev') {
         if($status == 'C') {
            dispatch(new OrderCompleteEmail($order));
            dispatch(new ReviewRequestEmail($order))->delay(now()->addMinutes(5)); // I just add this code
         } else if($status == 'R') {
            dispatch(new OrderRefundEmail($order));
         }
      }

Но электронное письмо for ReviewRequestEmail($order) может быть отправлено, но задержка не влияет на эту работу,Я использовал неправильный способ отложить отправку?

Кроме того, после добавления кода я не смог изменить статус заказа из backoffice. Я предполагаю, что код сломал его.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...