12 changed files with 225 additions and 25 deletions
@ -0,0 +1,101 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace App\Console\Commands; |
||||
|
|
||||
|
use App\Models\ParkingSpace; |
||||
|
use App\Models\ParkingSpaceRepair; |
||||
|
use App\Services\OperationLogService; |
||||
|
use App\Services\ParkingSpaceService; |
||||
|
use Exception; |
||||
|
use Illuminate\Console\Command; |
||||
|
use Illuminate\Support\Facades\DB; |
||||
|
|
||||
|
class AutoChangeRepair extends Command |
||||
|
{ |
||||
|
/** |
||||
|
* The name and signature of the console command. |
||||
|
* @var string |
||||
|
*/ |
||||
|
protected $signature = 'run:auto-change-repair'; |
||||
|
|
||||
|
/** |
||||
|
* The console command description. |
||||
|
* @var string |
||||
|
*/ |
||||
|
protected $description = 'Command description'; |
||||
|
|
||||
|
protected OperationLogService $logService; |
||||
|
|
||||
|
protected int $user_id; |
||||
|
|
||||
|
protected ParkingSpaceService $service; |
||||
|
|
||||
|
public function __construct(OperationLogService $log) |
||||
|
{ |
||||
|
parent::__construct(); |
||||
|
$this->logService = $log; |
||||
|
$this->logService->menuTitle = 'cat_list'; |
||||
|
// 默认超级管理员修改 |
||||
|
$this->user_id = DB::table('admin_users')->where('username', 'Admin') |
||||
|
->value('id'); |
||||
|
$this->service = new ParkingSpaceService($this->logService); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Execute the console command. |
||||
|
*/ |
||||
|
public function handle() |
||||
|
{ |
||||
|
try { |
||||
|
DB::beginTransaction(); |
||||
|
$now_times = time(); |
||||
|
$now_time = date("Y-m-d H:i:s", $now_times); |
||||
|
|
||||
|
$where = [ |
||||
|
['start_at', '<=', $now_time], |
||||
|
['end_at', '>=', $now_time] |
||||
|
]; |
||||
|
$space_ids = ParkingSpaceRepair::query()->where($where)->pluck( |
||||
|
'space_id' |
||||
|
); |
||||
|
|
||||
|
if ($space_ids) { |
||||
|
$update_ids = ParkingSpace::query()->where('status', '<>', 2) |
||||
|
->whereIn('id', $space_ids)->pluck('id'); |
||||
|
// 更新为维修状态 |
||||
|
foreach ($update_ids as $id) { |
||||
|
// 修改为类型的维修指定灯光 |
||||
|
$this->service->updateRepairStatus($id, 2); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 处理在维修的回复正常, 维修已结束的回复正常 |
||||
|
$ParkingSpace = ParkingSpace::query(); |
||||
|
$ParkingSpace->where('status', 2); |
||||
|
if ($space_ids) { |
||||
|
$ParkingSpace->whereNotIn('id', $space_ids); |
||||
|
} |
||||
|
$space_ids = $ParkingSpace->pluck('id'); |
||||
|
if ($space_ids) { |
||||
|
// 维修车位已经 超过维修结束时间, 改为空置状态 |
||||
|
$update_ids = ParkingSpaceRepair::query()->where( |
||||
|
'end_at', |
||||
|
'<', |
||||
|
$now_time |
||||
|
)->whereIn('space_id', $space_ids)->pluck( |
||||
|
'space_id' |
||||
|
); |
||||
|
if ($update_ids) { |
||||
|
// 更新为空置状态 |
||||
|
foreach ($update_ids as $id) { |
||||
|
// 恢复正常类型灯光 |
||||
|
$this->service->updateRepairStatus($id, 0); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
DB::commit(); |
||||
|
} catch (Exception $e) { |
||||
|
DB::rollBack(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue