Implement cron to remove expired bids

This commit is contained in:
Kevin
2018-08-25 01:07:14 +08:00
parent 1c32ef838d
commit 796053cfa5
8 changed files with 242 additions and 23 deletions

View File

@@ -0,0 +1,27 @@
<?php
namespace App\Console\Cron;
use App\Console\Command;
use App\Events\CronHourly;
/**
* This just calls the CronHourly event, so all of the
* listeners, etc can just be called to run those tasks
* @package App\Console\Cron
*/
class Hourly extends Command
{
protected $signature = 'cron:hourly';
protected $description = 'Run the hourly cron tasks';
protected $schedule;
/**
*
*/
public function handle(): void
{
$this->redirectLoggingToStdout('cron');
event(new CronHourly());
}
}

View File

@@ -2,6 +2,7 @@
namespace App\Console;
use App\Console\Cron\Hourly;
use App\Console\Cron\Monthly;
use App\Console\Cron\Nightly;
use App\Console\Cron\Weekly;
@@ -34,6 +35,7 @@ class Kernel extends ConsoleKernel
$schedule->command(Nightly::class)->dailyAt('01:00');
$schedule->command(Weekly::class)->weeklyOn(0);
$schedule->command(Monthly::class)->monthlyOn(1);
$schedule->command(Hourly::class)->hourly();
}
/**

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Cron\Hourly;
use App\Events\CronHourly;
use App\Interfaces\Listener;
use App\Models\Bid;
use Carbon\Carbon;
/**
* Remove expired bids
* @package App\Listeners\Cron\Hourly
*/
class RemoveExpiredBids extends Listener
{
/**
* Remove expired bids
* @param CronHourly $event
* @throws \Exception
*/
public function handle(CronHourly $event): void
{
if(setting('bids.expire_time') === 0) {
return;
}
$date = Carbon::now()->subHours(setting('bids.expire_time'));
Bid::whereDate('created_at', '<', $date)->delete();
}
}

23
app/Events/CronHourly.php Normal file
View File

@@ -0,0 +1,23 @@
<?php
namespace App\Events;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
/**
* This event is dispatched when the hourly cron is run
* @package App\Events
*/
class CronHourly
{
use Dispatchable, SerializesModels;
/**
* CronNightly constructor.
*/
public function __construct()
{
}
}

View File

@@ -4,6 +4,7 @@ namespace App\Providers;
use App\Cron\Nightly\RecalculateStats;
use App\Cron\Nightly\SetActiveFlights;
use App\Events\CronHourly;
use App\Events\CronMonthly;
use App\Events\CronNightly;
use App\Events\CronWeekly;
@@ -33,5 +34,9 @@ class CronServiceProvider extends ServiceProvider
CronMonthly::class => [
\App\Cron\Monthly\ApplyExpenses::class
],
CronHourly::class => [
\App\Cron\Hourly\RemoveExpiredBids::class
],
];
}