'required|exists:visits,id', 'audit_admin_id' => 'required|exists:admins,id', 'status' => 'required|in:0,1,2', 'reason' => 'nullable|string|max:500', 'level' => 'nullable|in:0,1', ]; } /** * Get custom messages for validator errors. */ public function messages(): array { return [ 'visit_id.required' => __('validation.required', ['attribute' => __('visit_audit.visit_id')]), 'visit_id.exists' => __('validation.exists', ['attribute' => __('visit_audit.visit_id')]), 'audit_admin_id.required' => __('validation.required', ['attribute' => __('visit_audit.audit_admin_id')]), 'audit_admin_id.exists' => __('validation.exists', ['attribute' => __('visit_audit.audit_admin_id')]), 'status.required' => __('validation.required', ['attribute' => __('visit_audit.status')]), 'status.in' => __('validation.in', ['attribute' => __('visit_audit.status')]), 'reason.max' => __('validation.max.string', ['attribute' => __('visit_audit.reason'), 'max' => 500]), 'level.in' => __('validation.in', ['attribute' => __('visit_audit.level')]), ]; } /** * Configure the validator instance. */ public function withValidator($validator): void { $validator->after(function ($validator) { // 检查访问申请是否存在 if ($this->has('visit_id')) { $visit = \App\Models\Visit::find($this->input('visit_id')); if (!$visit) { $validator->errors()->add('visit_id', __('visit_audit.visit_not_found')); } elseif ($visit->audit_status != \App\Models\Visit::AUDIT_STATUS_PENDING) { $validator->errors()->add('visit_id', __('visit_audit.visit_not_pending')); } } // 检查审核人员权限 if ($this->has('audit_admin_id')) { $auditAdminId = $this->input('audit_admin_id'); $admin = \App\Models\Admin::find($auditAdminId); if (!$admin) { $validator->errors()->add('audit_admin_id', __('visit_audit.audit_admin_not_found')); } } // 检查是否已有审核记录 if ($this->has('visit_id') && $this->has('audit_admin_id')) { $visitId = $this->input('visit_id'); $auditAdminId = $this->input('audit_admin_id'); $id = $this->input('id'); $query = VisitAudit::where('visit_id', $visitId) ->where('audit_admin_id', $auditAdminId); if ($id) { $query->where('id', '!=', $id); } if ($query->exists()) { $validator->errors()->add('audit_admin_id', __('visit_audit.audit_already_exists')); } } }); } }