value('store_id'); } // 处理日期 if (isset($data['date_range']) && ! isset($data['start_at']) && ! isset($data['end_at'])) { $dates = explode(',', $data['date_range']); $data['start_at'] = Carbon::createFromFormat('Y-m-d', data_get($dates, 0))->startOfDay(); $data['end_at'] = Carbon::createFromFormat('Y-m-d', data_get($dates, 1))->endOfDay(); } return $data; } public function validate($data, $model = null) { // todo 验证申请时间是否重复 $createRules = [ 'employee_id' => ['required'], 'type_id' => ['required'], 'reason' => ['required'], 'start_at' => ['required'], 'end_at' => ['required'], ]; $updateRules = []; $validator = Validator::make($data, $model ? $updateRules : $createRules, []); if ($validator->fails()) { return $validator->errors()->first(); } return true; } public function update($primaryKey, $data): bool { $model = $this->query()->whereKey($primaryKey)->firstOrFail(); if (!$model->canUpdate()) { return $this->setError('审核中, 无法修改'); } $data = $this->resloveData($data, $model); $validate = $this->validate($data, $model); if ($validate !== true) { $this->setError($validate); return false; } $model->update($data); $this->currentModel = $model; return true; } public function delete(string $ids): mixed { $list = $this->query()->with(['workflow'])->whereIn('id', explode(',', $ids))->get(); foreach ($list as $item) { if (!$item->canUpdate()) { return $this->setError('审核中, 无法删除'); } $item->delete(); } return true; } }