logService = $log; $this->logService->menuTitle = 'event_calendar'; // 默认超级管理员修改 $this->user_id = DB::table('admin_users')->where('username', 'Admin') ->value('id'); } /** * Execute the console command. */ public function handle() { $now_times = time(); $now_time = date("Y-m-d H:i:s", $now_times); // 结束活动,调整为默认模式 $where = [ ['status', '=', 1] ]; $runRes = EventCalendar::query()->where($where)->orderBy('created_at') ->first(); $start = true; // 数据存在,且结束时间到了,结束时间 if ($runRes) { $end_time = $runRes['end_time']; $run_id = $runRes['id']; $is_manual = $runRes['is_manual']; if ($end_time && strtotime($end_time) <= $now_times) { $this->updateStatus($run_id, 2); } elseif ($is_manual == 1) { // 手动开始的不切换模式 $start = false; } } // 启动 新模式 if ($start) { $where = [ ['status', '=', 0] ]; $res = EventCalendar::query()->where($where)->where(function ($query) use ($now_time) { $query->whereRaw( "'{$now_time}' BETWEEN start_time AND end_time" ); })->orderBy('start_time') ->first(['id']); if ($res) { // 新活动运行 直接关闭旧活动 $new_id = $res['id']; if ($runRes && $runRes['id'] != $new_id) { $this->updateStatus($run_id, 2); } $this->updateStatus($new_id, 1, true); } else { // 如果不存在新活动模式,撤回默认模式 $pattern_id = EventCalendarService::getTargetModeId(); if ($pattern_id) { // 更新车位类型 (new EventCalendarService($this->logService))->syncUpdateSpaceType($pattern_id); // 记录日志 AdminNoticeService::addChangeModeNotice($pattern_id, $this->user_id); } } } } /** * @param $id * @param int $status // 1运行 、 2结束 * @param bool $is_notice * @return void */ protected function updateStatus( $id, int $status = 1, bool $is_notice = false ): void { $model = EventCalendar::query()->findOrFail($id); $oldValue = $model->toArray(); $model->update([ 'status' => $status, 'admin_user_id' => $this->user_id, 'updated_at' => date("Y-m-d H:i:s", time()) ]); // 记录日志 $this->logService->logUpdated( $model, $oldValue, 'event_calendar.update' ); // 记录警报信息, 切换任务, 同步更新指定模式车位类型 if ($is_notice) { $pattern_id = $oldValue['pattern_id']; // 更新车位类型 (new EventCalendarService($this->logService))->syncUpdateSpaceType($pattern_id); // 记录日志 AdminNoticeService::addChangeModeNotice($pattern_id, $this->user_id); } } }