resloveData($data); $validate = $this->validate($data); if ($validate !== true) { $this->setError($validate); return false; } $this->modelName::create($data); return true; } public function resloveData($data, $model = null) { // 获取员工所在的门店 if (!isset($data['store_id']) && isset($data['employee_id'])) { $data['store_id'] = Employee::where('id', $data['employee_id'])->value('store_id'); } return $data; } public function preDelete(array $ids): void { // 删除审核流程记录 WorkflowCheck::where('subject_type', (new WorkflowLog)->getMorphClass())->whereIn('subject_id', $ids)->delete(); } public function validate($data, $model = null) { // 验证申请时间是否重叠 // todo $unique = Rule::unique('employee_sign_repairs', 'date') ->where('employee_id', data_get($data, 'employee_id', $model?->employee_id)) ->where('repair_type', data_get($data, 'repair_type', $model?->repair_type)); $createRules = [ 'employee_id' => ['required'], 'repair_type' => ['required'], 'date' => ['required', $unique], 'store_id' => ['required'], 'reason' => ['required'], ]; $updateRules = [ 'date' => [$unique->ignore($model?->id)] ]; $message = [ 'date.required' => __('employee_sign_repair.date') . '必填', 'store_id.required' => __('employee_sign_repair.store_id') . '必填', 'employee_id.required' => __('employee_sign_repair.employee_id') . '必填', 'reason.required' => __('employee_sign_repair.reason') . '必填', 'repair_type.required' => __('employee_sign_repair.repair_type') . '必填', 'date.unique' => __('employee_sign_repair.date') . ' 已经申请过了' ]; $validator = Validator::make($data, $model ? $updateRules : $createRules, $message); if ($validator->fails()) { return $validator->errors()->first(); } return true; } }