From 08234afe4f5f3a4f57dc0a56ee579e807bd3d25b Mon Sep 17 00:00:00 2001 From: kuaifan Date: Thu, 23 Dec 2021 23:20:04 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BB=BB=E5=8A=A1=E8=B4=9F=E8=B4=A3?= =?UTF-8?q?=E4=BA=BA=E6=97=A0=E6=B3=95=E4=BF=AE=E6=94=B9=E5=AD=90=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Api/ProjectController.php | 12 ++++++------ app/Models/ProjectTask.php | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index 70aad8633..c35226583 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -666,7 +666,7 @@ class ProjectController extends AbstractController } // $task = ProjectTask::userTask($file->task_id, [], true, $project); - if (!$task->owner && !$project->owner) { + if (!$task->isOwnerParent() && !$project->owner) { return Base::retError('仅限项目或任务负责人操作'); } // @@ -751,7 +751,7 @@ class ProjectController extends AbstractController $name = Request::input('name'); // $task = ProjectTask::userTask($task_id, [], true, $project); - if (!$task->owner && !$project->owner) { + if (!$task->isOwnerParent() && !$project->owner) { return Base::retError('仅限项目或任务负责人添加'); } // @@ -795,7 +795,7 @@ class ProjectController extends AbstractController $task_id = intval($data['task_id']); // $task = ProjectTask::userTask($task_id, [], true, $project); - if (!$task->owner && !$project->owner) { + if (!$task->isOwnerParent() && !$project->owner) { return Base::retError('仅限项目或任务负责人修改'); } // @@ -841,7 +841,7 @@ class ProjectController extends AbstractController $task_id = Base::getPostInt('task_id'); // $task = ProjectTask::userTask($task_id, [], true, $project); - if (!$task->owner && !$project->owner) { + if (!$task->isOwnerParent() && !$project->owner) { return Base::retError('仅限项目或任务负责人上传'); } // @@ -940,7 +940,7 @@ class ProjectController extends AbstractController $type = Request::input('type', 'add'); // $task = ProjectTask::userTask($task_id, [], false, $project); - if (!$task->owner && !$project->owner) { + if (!$task->isOwnerParent() && !$project->owner) { return Base::retError('仅限项目或任务负责人操作'); } // @@ -968,7 +968,7 @@ class ProjectController extends AbstractController $task_id = intval(Request::input('task_id')); // $task = ProjectTask::userTask($task_id, [], true, $project); - if (!$task->owner && !$project->owner) { + if (!$task->isOwnerParent() && !$project->owner) { return Base::retError('仅限项目或任务负责人删除'); } // diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index 941145ef1..37d4b9b9d 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -629,6 +629,24 @@ class ProjectTask extends AbstractModel return $user->owner ? 2 : 1; } + /** + * 是否负责人 + * @param bool $isParent 是父级任务的负责人也算 + * @return bool + */ + public function isOwnerParent($isParent = true) { + if ($this->owner) { + return true; + } + if ($isParent && $this->parent_id > 0) { + $parentTask = self::find($this->parent_id); + if ($parentTask?->owner) { + return true; + } + } + return false; + } + /** * 标记已完成、未完成 * @param Carbon|null $complete_at 完成时间