|
|
@ -4,14 +4,15 @@ namespace App\Imports; |
|
|
|
|
|
|
|
|
use App\Models\EventCalendar; |
|
|
use App\Models\EventCalendar; |
|
|
use App\Models\ParkingPattern; |
|
|
use App\Models\ParkingPattern; |
|
|
|
|
|
use App\Services\AdminTranslationService; |
|
|
use App\Services\OperationLogService; |
|
|
use App\Services\OperationLogService; |
|
|
use Maatwebsite\Excel\Concerns\ToModel; |
|
|
use Maatwebsite\Excel\Concerns\ToModel; |
|
|
use Maatwebsite\Excel\Concerns\WithHeadingRow; |
|
|
|
|
|
|
|
|
|
|
|
class EventCalendarImport implements ToModel, WithHeadingRow |
|
|
class EventCalendarImport implements ToModel |
|
|
{ |
|
|
{ |
|
|
protected string $user_id; |
|
|
protected string $user_id; |
|
|
protected OperationLogService $logService; |
|
|
protected OperationLogService $logService; |
|
|
|
|
|
protected int $index = 1; |
|
|
|
|
|
|
|
|
public function __construct(string $user_id) |
|
|
public function __construct(string $user_id) |
|
|
{ |
|
|
{ |
|
|
@ -26,17 +27,24 @@ class EventCalendarImport implements ToModel, WithHeadingRow |
|
|
*/ |
|
|
*/ |
|
|
public function model(array $row) |
|
|
public function model(array $row) |
|
|
{ |
|
|
{ |
|
|
$pattern_name = $row['mode_name']; |
|
|
if ($this->index == 1) { |
|
|
$start_date = $row['start_date']; |
|
|
$this->index += 1; |
|
|
$start_time = $row['start_time']; |
|
|
return; |
|
|
$end_date = $row['end_date']; |
|
|
} |
|
|
$end_time = $row['end_time']; |
|
|
$pattern_name = $row[1]; |
|
|
|
|
|
$start_date = $row[2]; |
|
|
|
|
|
$start_time = $row[3]; |
|
|
|
|
|
$end_date = $row[4]; |
|
|
|
|
|
$end_time = $row[5]; |
|
|
if (empty($pattern_name)) { |
|
|
if (empty($pattern_name)) { |
|
|
return ; |
|
|
return ; |
|
|
} |
|
|
} |
|
|
$pattern_id = ParkingPattern::getId($pattern_name); |
|
|
$pattern_id = ParkingPattern::getId($pattern_name); |
|
|
if (!$pattern_id) { |
|
|
if (!$pattern_id) { |
|
|
return ; |
|
|
$pattern_id = AdminTranslationService::getTypeId(10, $pattern_name); |
|
|
|
|
|
if (!$pattern_id) { |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
if (EventCalendar::query()->whereIn('status', [0, 1])->where( |
|
|
if (EventCalendar::query()->whereIn('status', [0, 1])->where( |
|
|
'pattern_id', |
|
|
'pattern_id', |
|
|
@ -66,12 +74,25 @@ class EventCalendarImport implements ToModel, WithHeadingRow |
|
|
$start_time = date("H:i:s", $start_times); |
|
|
$start_time = date("H:i:s", $start_times); |
|
|
$end_date_time = date("Y-m-d", $end_date_times); |
|
|
$end_date_time = date("Y-m-d", $end_date_times); |
|
|
$end_time = date("H:i:s", $end_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 = [ |
|
|
$create = [ |
|
|
'pattern_id' => $pattern_id, |
|
|
'pattern_id' => $pattern_id, |
|
|
'admin_user_id' => $this->user_id, |
|
|
'admin_user_id' => $this->user_id, |
|
|
'start_time' => $start_date . ' ' . $start_time, |
|
|
'start_time' => $save_start_time, |
|
|
'end_time' => $end_date_time . ' ' . $end_time, |
|
|
'end_time' => $save_end_time, |
|
|
'status' => 0, |
|
|
'status' => 0, |
|
|
'created_at' => get_datetime() |
|
|
'created_at' => get_datetime() |
|
|
]; |
|
|
]; |
|
|
@ -80,4 +101,16 @@ class EventCalendarImport implements ToModel, WithHeadingRow |
|
|
|
|
|
|
|
|
$this->logService->logCreated($model, 'event_calendar.import'); |
|
|
$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(); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|