generated from liutk/owl-admin-base
Merge branch 'main' of https://gitea.hmily.club/pdkj/store-manage into main
commit
d604a383d9
|
|
@ -0,0 +1,110 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Console\Commands;
|
||||||
|
|
||||||
|
use App\Enums\TaskHygieneStatus;
|
||||||
|
use App\Enums\TaskLedgerStatus;
|
||||||
|
use App\Enums\TaskPerformanceStatus;
|
||||||
|
use App\Enums\TaskStatus;
|
||||||
|
use App\Models\Task;
|
||||||
|
use App\Models\TaskHygiene;
|
||||||
|
use App\Models\TaskLedger;
|
||||||
|
use App\Models\TaskPerformance;
|
||||||
|
use Illuminate\Console\Command;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\MorphTo;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\Relation;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Throwable;
|
||||||
|
|
||||||
|
class TaskUpdateCommand extends Command
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The name and signature of the console command.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $signature = 'app:task-update';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The console command description.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $description = '生成门店每天的总账录入任务';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute the console command.
|
||||||
|
*/
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
$datetime = now();
|
||||||
|
|
||||||
|
Task::with(['taskable' => function (MorphTo $morphTo) {
|
||||||
|
$morphTo->morphWith([
|
||||||
|
TaskLedger::class,
|
||||||
|
TaskPerformance::class,
|
||||||
|
TaskHygiene::class => ['workflow'],
|
||||||
|
]);
|
||||||
|
}])
|
||||||
|
->where('task_status', TaskStatus::Pending)
|
||||||
|
->where('end_at', '<', $datetime)
|
||||||
|
->lazyById()
|
||||||
|
->each(function ($task) use ($datetime) {
|
||||||
|
try {
|
||||||
|
DB::beginTransaction();
|
||||||
|
|
||||||
|
switch (Relation::getMorphedModel($task->taskable_type)) {
|
||||||
|
case TaskLedger::class:
|
||||||
|
if ($task->taskable->task_status === TaskLedgerStatus::Success) {
|
||||||
|
$task->update([
|
||||||
|
'task_status' => TaskStatus::Success,
|
||||||
|
'completed_at' => $datetime,
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
$task->update([
|
||||||
|
'task_status' => TaskStatus::Failed,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TaskPerformance::class:
|
||||||
|
if ($task->taskable->task_status === TaskPerformanceStatus::Success) {
|
||||||
|
$task->update([
|
||||||
|
'task_status' => TaskStatus::Success,
|
||||||
|
'completed_at' => $datetime,
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
$task->update([
|
||||||
|
'task_status' => TaskStatus::Failed,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TaskHygiene::class:
|
||||||
|
switch ($task->taskable->task_status) {
|
||||||
|
case TaskHygieneStatus::Success:
|
||||||
|
$task->update([
|
||||||
|
'task_status' => TaskStatus::Success,
|
||||||
|
'completed_at' => $datetime,
|
||||||
|
]);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TaskHygieneStatus::Unpassed:
|
||||||
|
case TaskHygieneStatus::Failed:
|
||||||
|
$task->update([
|
||||||
|
'task_status' => TaskStatus::Failed,
|
||||||
|
]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
DB::commit();
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
DB::rollBack();
|
||||||
|
|
||||||
|
report($e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -12,7 +12,8 @@ class Kernel extends ConsoleKernel
|
||||||
*/
|
*/
|
||||||
protected function schedule(Schedule $schedule): void
|
protected function schedule(Schedule $schedule): void
|
||||||
{
|
{
|
||||||
$schedule->command(Commands\TaskLedgerGenerateCommand::class)->dailyAt('01:00');
|
$schedule->command(Commands\TaskUpdateCommand::class)->hourly()->runInBackground();
|
||||||
|
$schedule->command(Commands\TaskLedgerGenerateCommand::class)->dailyAt('01:00')->runInBackground();
|
||||||
// $schedule->call(fn() => logger('schedule running'))->everyMinute();
|
// $schedule->call(fn() => logger('schedule running'))->everyMinute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue