diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index 1db3a301a..9ada635e8 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -1699,6 +1699,10 @@ class ProjectController extends AbstractController $task_id = intval($param['task_id']); // $task = ProjectTask::userTask($task_id, true, true, 2); + $taskUser = ProjectTaskUser::select(['userid', 'owner'])->whereTaskId($task_id)->whereIn('owner', [0, 1])->get(); + $owners = $taskUser->where('owner', 1)->pluck('userid')->toArray(); // 负责人 + $assist = $taskUser->where('owner', 0)->pluck('userid')->toArray(); // 协助人 + // 更新任务 $updateMarking = []; $task->updateTask($param, $updateMarking); @@ -1720,6 +1724,18 @@ class ProjectController extends AbstractController } } } + if (Arr::exists($param, 'owner') && $data['is_all_visible'] == 0) { + $diff = array_diff($owners, $param['owner']); + if ($diff) { + $task->pushMsgVisibleRemove($diff); + } + } + if (Arr::exists($param, 'assist') && $data['is_all_visible'] == 0) { + $diff = array_diff($owners, $param['assist']); + if ($diff) { + $task->pushMsgVisibleRemove($diff); + } + } // return Base::retSuccess('修改成功', $data); } diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index 3ac4e0e62..4a56adc79 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -1537,32 +1537,30 @@ class ProjectTask extends AbstractModel /** * 删除可见性任务 推送 - * @param string $action - * @param array|self $data 发送内容,默认为[id, parent_id, project_id, column_id, dialog_id] + * @param array $userids + * @return void */ - public function pushMsgVisibleRemove($data = null) + public function pushMsgVisibleRemove(array $userids = []) { if (!$this->project) { return; } - if ($data === null) { - $data = [ - 'id' => $this->id, - 'parent_id' => $this->parent_id, - 'project_id' => $this->project_id, - 'column_id' => $this->column_id, - 'dialog_id' => $this->dialog_id, - ]; - } elseif ($data instanceof self) { - $data = $data->toArray(); - } + $data = [ + 'id' => $this->id, + 'parent_id' => $this->parent_id, + 'project_id' => $this->project_id, + 'column_id' => $this->column_id, + 'dialog_id' => $this->dialog_id, + ]; // $array = []; - // 项目成员 与 项目负责人,任务负责人、协助人的差集 - $projectUserids = ProjectUser::whereProjectId($this->project_id)->pluck('userid')->toArray(); // 项目成员 - $projectOwner = Project::whereId($this->project_id)->pluck('userid')->toArray(); // 项目负责人 - $taskOwnerAndAssists = ProjectTaskUser::select(['userid', 'owner'])->whereIn('owner', [0, 1])->whereTaskId($this->id)->pluck('userid')->toArray(); - $userids = array_diff($projectUserids, $projectOwner, $taskOwnerAndAssists); + if (empty($userids)) { + // 默认 项目成员 与 项目负责人,任务负责人、协助人的差集 + $projectUserids = ProjectUser::whereProjectId($this->project_id)->pluck('userid')->toArray(); // 项目成员 + $projectOwner = Project::whereId($this->project_id)->pluck('userid')->toArray(); // 项目负责人 + $taskOwnerAndAssists = ProjectTaskUser::select(['userid', 'owner'])->whereIn('owner', [0, 1])->whereTaskId($this->id)->pluck('userid')->toArray(); + $userids = array_diff($projectUserids, $projectOwner, $taskOwnerAndAssists); + } // $array[] = [ 'userid' => array_values($userids),