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;