value('store_id'); } if (isset($data['datetime_range'])) { $time = explode(',', $data['datetime_range']); $start = Carbon::createFromTimestamp(data_get($time, 0)); $end = Carbon::createFromTimestamp(data_get($time, 1)); $data['start_at'] = $start; $data['end_at'] = $end; $data['date'] = $start->format('Y-m-d'); $data['hours'] = $start->diffInHours($end); } return $data; } public function validate($data, $model = null) { // 验证申请时间是否重叠 if (OvertimeApply::where('employee_id', data_get($data, 'employee_id', $model?->employee_id))->where(fn($q) => $q->whereBetween('start_at', [$data['start_at'], $data['end_at']])->orWhereBetween('end_at', [$data['start_at'], $data['end_at']]))->exists()) { return '该时间段已经申请过了'; } $createRules = [ 'employee_id' => ['required'], 'start_at' => ['required'], 'end_at' => ['required'], ]; $updateRules = []; $validator = Validator::make($data, $model ? $updateRules : $createRules, []); if ($validator->fails()) { return $validator->errors()->first(); } return true; } }