'integer', 'level' => 'boolean', ]; // 审核状态常量 const STATUS_PENDING = 0; // 待审核 const STATUS_APPROVED = 1; // 通过 const STATUS_REJECTED = 2; // 驳回 /** * 关联访问申请 */ public function visit() { return $this->belongsTo(Visit::class, 'visit_id'); } /** * 关联审核人员 */ public function auditAdmin() { return $this->belongsTo(Admin::class, 'audit_admin_id'); } /** * 获取审核状态文本 */ public function getStatusTextAttribute() { $statuses = [ self::STATUS_PENDING => '待审核', self::STATUS_APPROVED => '通过', self::STATUS_REJECTED => '驳回', ]; return $statuses[$this->status] ?? '未知'; } /** * 获取审核等级文本 */ public function getLevelTextAttribute() { return $this->level ? '高级审核' : '普通审核'; } /** * 检查是否可以审核 */ public function canAudit($adminId) { // 检查审核权限 if ($this->audit_admin_id != $adminId) { return false; } // 检查状态 if ($this->status != self::STATUS_PENDING) { return false; } return true; } /** * 执行审核 */ public function performAudit($status, $reason = null, $adminId = null) { if (!$this->canAudit($adminId)) { throw new \Exception('无权限审核或状态不允许'); } $this->status = $status; $this->reason = $reason; $this->save(); // 更新访问申请状态 $visit = $this->visit; if ($visit) { if ($status == self::STATUS_APPROVED) { $visit->audit_status = Visit::AUDIT_STATUS_APPROVED; } elseif ($status == self::STATUS_REJECTED) { $visit->audit_status = Visit::AUDIT_STATUS_REJECTED; } $visit->save(); } return $this; } }