workflow()->create([ 'key' => $model->getCheckKey(), ]); }); static::deleting(function ($model) { // 删除审核流程 $model->workflow->logs()->delete(); // 删除审核申请 $model->workflow->delete(); }); } public function getCheckKey(): string { if (property_exists($this, 'checkKey')) { return $this->checkKey; } return Str::snake(class_basename(__CLASS__)); } /** * 审核通过 */ public function checkApply() { } /** * 审核通过 */ public function checkSuccess() { } /** * 审核未通过 */ public function checkFail() { } /** * 取消申请 */ public function checkCancel() { } /** * 是否审核中 */ public function isCheckProcessing(): bool { return $this->workflow->check_status === CheckStatus::Processing; } /** * 是否审核通过 */ public function isCheckSuccess(): bool { return $this->workflow->isCheckSuccess(); } /** * 是否审核未通过 */ public function isCheckFailed(): bool { return $this->workflow->isCheckFailed(); } public function canUpdate(): bool { return in_array($this->workflow?->check_status, [CheckStatus::None, CheckStatus::Fail, CheckStatus::Cancel]); } /** * 关联审核流水 */ public function workflow() { return $this->morphOne(WorkflowCheck::class, 'subject'); } }