diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index 91f350632..97b055a15 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -1717,7 +1717,7 @@ 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(); + $taskUser = ProjectTaskUser::select(['userid', 'owner'])->whereTaskId($task_id)->get(); $owners = $taskUser->where('owner', 1)->pluck('userid')->toArray(); // 负责人 // 更新任务 @@ -1729,21 +1729,18 @@ class ProjectController extends AbstractController $data['visibility_appointor'] = $data['is_all_visible'] == 1 ? [0] : ProjectTaskUser::whereTaskId($task->id)->whereOwner(2)->pluck('userid'); $task->pushMsg('update', $data); // 可见性推送 - if (Arr::exists($param, 'is_all_visible')) { + if (Arr::exists($param, 'is_all_visible') || Arr::exists($param, 'visibility_appointor')) { if ($data['is_all_visible'] == 1) { $task->pushMsgVisibleAdd($data); } - if ($data['is_all_visible'] == 0) { - if ($param['visibility_appointor']) { - $task->pushMsgVisibleUpdate($data); - } else { - $task->pushMsgVisibleRemove(); - } - } - } elseif (Arr::exists($param, 'visibility_appointor')) { if ($param['visibility_appointor']) { - $task->pushMsgVisibleUpdate($data); - } else { + $oldVisibleUserIds = $taskUser->where('owner', 2)->pluck('userid')->toArray()??[]; + $newVisibleUserIds = $param['visibility_appointor'] ?? []; + $deleteUserIds = array_diff($oldVisibleUserIds, $newVisibleUserIds); + $addUserIds = array_diff($newVisibleUserIds, $oldVisibleUserIds); + $task->pushMsgVisibleUpdate($data, $deleteUserIds, $addUserIds); + } + if ($data['is_all_visible'] == 0 && empty($param['visibility_appointor'])) { $task->pushMsgVisibleRemove(); } } diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index 513f99eed..d9fa21620 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -1488,7 +1488,7 @@ class ProjectTask extends AbstractModel * 添加可见性任务 推送 * @param array|self $data 发送内容,默认为[id, parent_id, project_id, column_id, dialog_id] */ - public function pushMsgVisibleAdd($data = null) + public function pushMsgVisibleAdd($data = null, array $pushUserIds = []) { if (!$this->project) { return; @@ -1506,7 +1506,9 @@ class ProjectTask extends AbstractModel } // $array = []; - if ($this->is_all_visible == 0) { + if ($pushUserIds) { + $userids = $pushUserIds; + }elseif ($this->is_all_visible == 0) { $userids = ProjectTaskUser::select(['userid', 'owner'])->whereTaskId($this->id)->orWhere('task_pid' , '=', $this->id)->pluck('userid')->toArray(); } else { $userids = ProjectUser::whereProjectId($this->project_id)->pluck('userid')->toArray(); // 项目成员 @@ -1583,11 +1585,14 @@ class ProjectTask extends AbstractModel * 更新可见性任务 推送 * @param array|self $data 发送内容,默认为[id, parent_id, project_id, column_id, dialog_id] */ - public function pushMsgVisibleUpdate($data) + public function pushMsgVisibleUpdate($data, array $deleteUserIds = [], array $addUserIds = []) { - $this->pushMsgVisibleRemove(); - usleep(300); - $this->pushMsgVisibleAdd($data); + if ($deleteUserIds) { + $this->pushMsgVisibleRemove($deleteUserIds); + } + if ($addUserIds) { + $this->pushMsgVisibleAdd($data, $addUserIds); + } } /**