From b05db6d4582ac4f872688a248a46835cd4bec826 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Tue, 25 Jan 2022 15:49:22 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=B8=BB=E4=BB=BB=E5=8A=A1=E8=B4=9F?= =?UTF-8?q?=E8=B4=A3=E4=BA=BA=E6=97=A0=E6=B3=95=E4=BF=AE=E6=94=B9=E5=AD=90?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E8=B4=9F=E8=B4=A3=E4=BA=BA=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Models/ProjectTask.php | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index b0200b15..d5b0c4a3 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -866,6 +866,24 @@ class ProjectTask extends AbstractModel return $user->owner ? 2 : 1; } + /** + * 判断是否负责人(或者是主任务的负责人) + * @return bool + */ + public function isOwner() + { + if ($this->owner) { + return true; + } + if ($this->parent_id > 0) { + $mainTask = self::allData()->find($this->parent_id); + if ($mainTask->owner) { + return true; + } + } + return false; + } + /** * 是否有负责人 * @return bool @@ -1067,7 +1085,7 @@ class ProjectTask extends AbstractModel * 获取任务(会员有任务权限 或 会员存在项目内) * @param int $task_id * @param bool $archived true:仅限未归档, false:仅限已归档, null:不限制 - * @param int|bool $mustOwner 0|false:不限制, 1|true:限制任务或项目负责人, 2:已有负责人才限制任务或项目负责人 + * @param int|bool $mustOwner 0|false:不限制, 1|true:限制任务或项目负责人, 2:已有负责人才限制任务或项目负责人(子任务时如果是主任务负责人也可以) * @param array $with * @return self */ @@ -1100,7 +1118,7 @@ class ProjectTask extends AbstractModel if ($mustOwner === 2) { $mustOwner = $task->hasOwner() ? 1 : 0; } - if (($mustOwner === 1 || $mustOwner === true) && !$task->owner && !$project->owner) { + if (($mustOwner === 1 || $mustOwner === true) && !$task->isOwner() && !$project->owner) { throw new ApiException('仅限项目或任务负责人操作'); } //