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 == 1) { $this->index += 1; return; } $pattern_name = $row[1]; $start_date = $row[2]; $start_time = $row[3]; $end_date = $row[4]; $end_time = $row[5]; if (empty($pattern_name)) { return ; } $pattern_id = ParkingPattern::getId($pattern_name); if (!$pattern_id) { $pattern_id = AdminTranslationService::getTypeId(10, $pattern_name); if (!$pattern_id) { return; } } if (EventCalendar::query()->whereIn('status', [0, 1])->where( 'pattern_id', $pattern_id ) ->exists() ) { return ; } $start_date_times = strtotime($start_date); $start_times = strtotime($start_time); $end_date_times = strtotime($end_date); $end_times = strtotime($end_time); if (!$start_date_times) { return ; } if (!$start_times) { return ; } if (!$end_date_times) { return ; } if (!$end_times) { 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)) { return; } // 开始时间 和 结束时间段 存在活动不允许上传 $start_time_exists = $this->validateDate($save_start_time); $end_time_exists = $this->validateDate($save_end_time); if ($start_time_exists || $end_time_exists) { 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(); } }