diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index 5f4a72a6f..a8543e9f5 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -912,11 +912,13 @@ class ProjectController extends AbstractController $builder = ProjectTask::with(['taskUser', 'taskTag']); // 任务可见性 - $builder->leftJoin('projects as projects', 'project_tasks.project_id', '=', 'projects.id'); + $builder->leftJoin('project_users', function ($q) { + $q->on('project_tasks.project_id', '=', 'project_users.project_id')->where('project_users.owner', 1); + }); $builder->leftJoin('project_task_users as task_users', 'project_tasks.id', '=', 'task_users.task_id'); $builder->where(function ($q) use ($userid) { $q->where("project_tasks.is_all_visible", 1); - $q->orWhere("projects.userid", $userid); + $q->orWhere("project_users.userid", $userid); $q->orWhere("task_users.userid", $userid); }); // @@ -1359,7 +1361,7 @@ class ProjectController extends AbstractController $isArchived = str_replace(['all', 'yes', 'no'], [null, false, true], $archived); $task = ProjectTask::userTask($task_id, $isArchived, true, false, ['taskUser', 'taskTag']); // 项目可见性 - $project_userid = Project::whereId($task->project_id)->value('userid'); // 项目负责人 + $project_userid = ProjectUser::whereProjectId($task->project_id)->whereOwner(1)->value('userid'); // 项目负责人 if ($task->is_all_visible != 1 && $user->userid != $project_userid) { $visibleUserids = ProjectTaskUser::whereTaskId($task_id)->pluck('userid')->toArray(); // 是否任务负责人、协助人、可见人 $subVisibleUserids = ProjectTaskUser::whereTaskPid($task_id)->pluck('userid')->toArray(); // 是否子任务负责人、协助人 @@ -1627,7 +1629,7 @@ class ProjectController extends AbstractController if ($data['is_all_visible'] == 1) { $data['is_visible'] = 1; } else { - $projectOwner = Project::whereId($data['project_id'])->pluck('userid')->toArray(); // 项目负责人 + $projectOwner = ProjectUser::whereProjectId($task->project_id)->whereOwner(1)->pluck('userid')->toArray(); // 项目负责人 $taskOwnerAndAssists = ProjectTaskUser::select(['userid', 'owner'])->whereTaskId($data['id'])->pluck('userid')->toArray(); $visibleIds = array_merge($projectOwner, $taskOwnerAndAssists); $data['is_visible'] = in_array($user->userid, $visibleIds) ? 1 : 0; @@ -1675,9 +1677,8 @@ class ProjectController extends AbstractController 'is_all_visible' => 2, ]); $data = ProjectTask::oneTask($task->id); - $projectUserid = Project::whereId($data->project_id)->value('userid'); $pushUserIds = ProjectTaskUser::whereTaskId($task->id)->pluck('userid')->toArray(); - $pushUserIds[] = $projectUserid; + $pushUserIds[] = ProjectUser::whereProjectId($this->project_id)->whereOwner(1)->value('userid'); foreach ($pushUserIds as $userId) { $task->pushMsg('add', $data, $userId); } diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index 3500c70f3..41e28dc74 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -1551,7 +1551,7 @@ class ProjectTask extends AbstractModel if (empty($userids)) { // 默认 项目成员 与 项目负责人,任务负责人、协助人的差集 $projectUserids = ProjectUser::whereProjectId($this->project_id)->pluck('userid')->toArray(); // 项目成员 - $projectOwner = Project::whereId($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); @@ -1720,27 +1720,4 @@ class ProjectTask extends AbstractModel // return $task; } - - /** - * 获取用户任务可见性 - * @param $userid - * @param $project_id - * @return array - */ - public static function getVisibleUserids($userid, $project_id = 0) - { - return (new ProjectTask)->setTable('pt')->from('project_tasks as pt') - ->leftJoin('project_task_users as b', 'b.task_id', '=', 'pt.id') - ->Join('projects as p', 'p.id', '=', 'pt.project_id') - ->when($project_id, function ($q) use ($project_id) { - $q->where('pt.project_id', '=', $project_id); // 负责人项目ids - }) - ->where(function ($q) use ($userid) { - $q->where("pt.is_all_visible", '=', 1); - $q->OrWhere("p.userid", '=', $userid); - $q->OrWhere("b.userid", '=', $userid); - }) - ->pluck("pt.id") - ->toArray(); - } }