From cf9051412a5b93eefb479c0f4b52b7c071b7a657 Mon Sep 17 00:00:00 2001 From: wfs <605403358> Date: Sun, 1 Sep 2024 15:53:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=8F=AF=E8=A7=81=E6=80=A7=E4=B8=BA=E9=9D=9E=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E6=97=B6=E9=A1=B9=E7=9B=AE=E8=B4=9F=E8=B4=A3?= =?UTF-8?q?=E4=BA=BA=E4=B8=8D=E5=8F=AF=E8=A7=81=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Models/ProjectTask.php | 8 ++++++-- app/Observers/ProjectTaskObserver.php | 6 +++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index 1e67182cb..63c68f836 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -1609,14 +1609,18 @@ class ProjectTask extends AbstractModel 'dialog_id' => $this->dialog_id, ]; // + $projectOwnerids = ProjectUser::whereProjectId($this->project_id)->whereOwner(1)->pluck('userid')->toArray(); // 项目负责人 + // $array = []; if (empty($userids)) { // 默认 项目成员 与 项目负责人,任务负责人、协助人的差集 $projectUserids = ProjectUser::whereProjectId($this->project_id)->pluck('userid')->toArray(); // 项目成员 - $projectOwner = ProjectUser::whereProjectId($this->project_id)->whereOwner(1)->pluck('userid')->toArray(); // 项目负责人 $taskOwnerAndAssists = ProjectTaskUser::select(['userid', 'owner'])->whereIn('owner', [0, 1])->whereTaskId($this->id)->pluck('userid')->toArray(); $subUserids = ProjectTaskUser::whereTaskPid($this->id)->pluck('userid')->toArray(); - $userids = array_diff($projectUserids, $projectOwner, $taskOwnerAndAssists, $subUserids); + $userids = array_diff($projectUserids, $projectOwnerids, $taskOwnerAndAssists, $subUserids); + } else { + // 保证项目负责人都能看到 + $userids = array_diff($userids, $projectOwnerids); } // $array[] = [ diff --git a/app/Observers/ProjectTaskObserver.php b/app/Observers/ProjectTaskObserver.php index 3c2590819..809f3a29c 100644 --- a/app/Observers/ProjectTaskObserver.php +++ b/app/Observers/ProjectTaskObserver.php @@ -87,6 +87,9 @@ class ProjectTaskObserver if (in_array('project', $dataType)) { return ProjectUser::whereProjectId($projectTask->project_id)->pluck('userid')->toArray(); } + if (in_array('projectOwnerUser', $dataType)) { + return ProjectUser::whereProjectId($projectTask->project_id)->where('owner', 1)->pluck('userid')->toArray(); + } $array = []; if (in_array('task', $dataType)) { $array = array_merge($array, ProjectTaskUser::whereTaskId($projectTask->id)->pluck('userid')->toArray()); @@ -112,7 +115,8 @@ class ProjectTaskObserver case 3: $dataType = $projectTask->visibility == 2 ? ['task'] : ['task', 'visibility']; $forgetUserids = self::userids($projectTask, $dataType); - $recordUserids = array_diff($projectUserids, $forgetUserids); + $projectOwnerUserIds = self::userids($projectTask, 'projectOwnerUser'); + $recordUserids = array_diff($projectUserids, $forgetUserids, $projectOwnerUserIds); Deleted::record('projectTask', $projectTask->id, $recordUserids); Deleted::forget('projectTask', $projectTask->id, $forgetUserids); break;