fix:修复任务列表查询不出数据的问题

This commit is contained in:
weifashi 2023-07-01 23:28:29 +08:00
parent 9adb825a88
commit 5142497c7a
2 changed files with 8 additions and 30 deletions

View File

@ -912,11 +912,13 @@ class ProjectController extends AbstractController
$builder = ProjectTask::with(['taskUser', 'taskTag']); $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->leftJoin('project_task_users as task_users', 'project_tasks.id', '=', 'task_users.task_id');
$builder->where(function ($q) use ($userid) { $builder->where(function ($q) use ($userid) {
$q->where("project_tasks.is_all_visible", 1); $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); $q->orWhere("task_users.userid", $userid);
}); });
// //
@ -1359,7 +1361,7 @@ class ProjectController extends AbstractController
$isArchived = str_replace(['all', 'yes', 'no'], [null, false, true], $archived); $isArchived = str_replace(['all', 'yes', 'no'], [null, false, true], $archived);
$task = ProjectTask::userTask($task_id, $isArchived, true, false, ['taskUser', 'taskTag']); $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) { if ($task->is_all_visible != 1 && $user->userid != $project_userid) {
$visibleUserids = ProjectTaskUser::whereTaskId($task_id)->pluck('userid')->toArray(); // 是否任务负责人、协助人、可见人 $visibleUserids = ProjectTaskUser::whereTaskId($task_id)->pluck('userid')->toArray(); // 是否任务负责人、协助人、可见人
$subVisibleUserids = ProjectTaskUser::whereTaskPid($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) { if ($data['is_all_visible'] == 1) {
$data['is_visible'] = 1; $data['is_visible'] = 1;
} else { } 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(); $taskOwnerAndAssists = ProjectTaskUser::select(['userid', 'owner'])->whereTaskId($data['id'])->pluck('userid')->toArray();
$visibleIds = array_merge($projectOwner, $taskOwnerAndAssists); $visibleIds = array_merge($projectOwner, $taskOwnerAndAssists);
$data['is_visible'] = in_array($user->userid, $visibleIds) ? 1 : 0; $data['is_visible'] = in_array($user->userid, $visibleIds) ? 1 : 0;
@ -1675,9 +1677,8 @@ class ProjectController extends AbstractController
'is_all_visible' => 2, 'is_all_visible' => 2,
]); ]);
$data = ProjectTask::oneTask($task->id); $data = ProjectTask::oneTask($task->id);
$projectUserid = Project::whereId($data->project_id)->value('userid');
$pushUserIds = ProjectTaskUser::whereTaskId($task->id)->pluck('userid')->toArray(); $pushUserIds = ProjectTaskUser::whereTaskId($task->id)->pluck('userid')->toArray();
$pushUserIds[] = $projectUserid; $pushUserIds[] = ProjectUser::whereProjectId($this->project_id)->whereOwner(1)->value('userid');
foreach ($pushUserIds as $userId) { foreach ($pushUserIds as $userId) {
$task->pushMsg('add', $data, $userId); $task->pushMsg('add', $data, $userId);
} }

View File

@ -1551,7 +1551,7 @@ class ProjectTask extends AbstractModel
if (empty($userids)) { if (empty($userids)) {
// 默认 项目成员 与 项目负责人,任务负责人、协助人的差集 // 默认 项目成员 与 项目负责人,任务负责人、协助人的差集
$projectUserids = ProjectUser::whereProjectId($this->project_id)->pluck('userid')->toArray(); // 项目成员 $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(); $taskOwnerAndAssists = ProjectTaskUser::select(['userid', 'owner'])->whereIn('owner', [0, 1])->whereTaskId($this->id)->pluck('userid')->toArray();
$subUserids = ProjectTaskUser::whereTaskPid($this->id)->pluck('userid')->toArray(); $subUserids = ProjectTaskUser::whereTaskPid($this->id)->pluck('userid')->toArray();
$userids = array_diff($projectUserids, $projectOwner, $taskOwnerAndAssists, $subUserids); $userids = array_diff($projectUserids, $projectOwner, $taskOwnerAndAssists, $subUserids);
@ -1720,27 +1720,4 @@ class ProjectTask extends AbstractModel
// //
return $task; 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();
}
} }