user_id = $user_id; $this->logService = new OperationLogService(); $this->logService->menuTitle = 'event_calendar'; } /** * @param array $row * @return false|void */ public function model(array $row) { if (!$this->index) { $this->index += 1; return; } $this->index += 1; $pattern_name = $row[1] ?? ''; $start_date = $row[2] ?? ''; $start_time = $row[3] ?? ''; $end_date = $row[4] ?? ''; $end_time = $row[5] ?? ''; if (empty($pattern_name)) { $this->error[] = imports_error($this->index, 'import3'); return; } $pattern_id = ParkingPattern::getId($pattern_name); if (!$pattern_id) { $pattern_id = AdminTranslationService::getTypeId(10, $pattern_name); if (!$pattern_id) { $this->error[] = imports_error($this->index, 'import4'); return; } } if (empty($start_date)) { $this->error[] = imports_error($this->index, 'import5'); return ; } $start_date_times = strtotime($start_date); if (!$start_date_times) { $this->error[] = imports_error($this->index, 'import6'); return ; } if (empty($start_time)) { $this->error[] = imports_error($this->index, 'import7'); return ; } $start_times = strtotime($start_time); if (!$start_times) { $this->error[] = imports_error($this->index, 'import8'); return ; } if (empty($end_date)) { $this->error[] = imports_error($this->index, 'import9'); return ; } $end_date_times = strtotime($end_date); if (!$end_date_times) { $this->error[] = imports_error($this->index, 'import10'); return ; } if (empty($end_time)) { $this->error[] = imports_error($this->index, 'import11'); return ; } $end_times = strtotime($end_time); if (!$end_times) { $this->error[] = imports_error($this->index, 'import12'); return ; } $start_date = date("Y-m-d", $start_date_times); $start_time = date("H:i:s", $start_times); $end_date_time = date("Y-m-d", $end_date_times); $end_time = date("H:i:s", $end_times); $save_start_time = $start_date . ' ' . $start_time; $save_end_time = $end_date_time . ' ' . $end_time; // 开始时间不能大于结束时间 if (strtotime($save_start_time) > strtotime($save_end_time)) { $this->error[] = imports_error($this->index, 'import13'); return; } // 开始时间 和 结束时间段 存在活动不允许上传 $start_time_exists = $this->validateDate($save_start_time); $end_time_exists = $this->validateDate($save_end_time); if ($start_time_exists || $end_time_exists) { $this->error[] = imports_error($this->index, 'import14'); return; } $create = [ 'pattern_id' => $pattern_id, 'admin_user_id' => $this->user_id, 'start_time' => $save_start_time, 'end_time' => $save_end_time, 'status' => 0, 'created_at' => get_datetime() ]; $model = EventCalendar::query()->create($create); $this->logService->logCreated($model, 'event_calendar.import'); } protected function validateDate($datetime) { $model = EventCalendar::query(); return $model->whereIn('status', [0, 1]) ->where(function ($query) use ($datetime) { $query->whereRaw( "'{$datetime}' BETWEEN start_time AND end_time" ); }) ->exists(); } public function errorArr(): array { return $this->error; } }