fix: 修复任务可见性 - 任务重覆获取, 子任务负责人看不到任务问题

This commit is contained in:
weifs 2024-12-23 23:19:22 +08:00
parent 727d7e1d81
commit 0737a9fae7
2 changed files with 2 additions and 7 deletions

View File

@ -1058,10 +1058,6 @@ class ProjectController extends AbstractController
$query->where('project_users.owner', 1); $query->where('project_users.owner', 1);
$query->where('project_users.userid', $userid); $query->where('project_users.userid', $userid);
}); });
$builder->leftJoin('project_task_users as project_sub_task_users', function ($query) use($userid) {
$query->on('project_sub_task_users.task_pid', '=', 'project_tasks.parent_id');
$query->where('project_sub_task_users.userid', $userid);
});
$builder->leftJoin('project_task_visibility_users', function ($query) use($userid) { $builder->leftJoin('project_task_visibility_users', function ($query) use($userid) {
$query->on('project_task_visibility_users.task_id', '=', 'project_tasks.id'); $query->on('project_task_visibility_users.task_id', '=', 'project_tasks.id');
$query->where('project_task_visibility_users.userid', $userid); $query->where('project_task_visibility_users.userid', $userid);
@ -1071,7 +1067,6 @@ class ProjectController extends AbstractController
$query->orWhere("project_users.userid", $userid); $query->orWhere("project_users.userid", $userid);
$query->orWhere("project_task_users.userid", $userid); $query->orWhere("project_task_users.userid", $userid);
$query->orWhere("project_task_visibility_users.userid", $userid); $query->orWhere("project_task_visibility_users.userid", $userid);
$query->orWhere("project_sub_task_users.userid", $userid);
}); });
// 优化子查询汇总 // 优化子查询汇总
$builder->leftJoinSub(function ($query) { $builder->leftJoinSub(function ($query) {

View File

@ -92,7 +92,7 @@ class ProjectTaskObserver
} }
$array = []; $array = [];
if (in_array('task', $dataType)) { if (in_array('task', $dataType)) {
$array = array_merge($array, ProjectTaskUser::whereTaskId($projectTask->id)->pluck('userid')->toArray()); $array = array_merge($array, ProjectTaskUser::whereTaskId($projectTask->id)->orWhere('task_pid' ,$projectTask->id)->pluck('userid')->toArray());
} }
if (in_array('visibility', $dataType)) { if (in_array('visibility', $dataType)) {
$array = array_merge($array, ProjectTaskVisibilityUser::whereTaskId($projectTask->id)->pluck('userid')->toArray()); $array = array_merge($array, ProjectTaskVisibilityUser::whereTaskId($projectTask->id)->pluck('userid')->toArray());
@ -113,7 +113,7 @@ class ProjectTaskObserver
break; break;
case 2: case 2:
case 3: case 3:
$dataType = $projectTask->visibility == 2 ? ['task'] : ['task', 'visibility']; $dataType = $projectTask->visibility == 2 ? ['task'] : ['visibility'];
$forgetUserids = self::userids($projectTask, $dataType); $forgetUserids = self::userids($projectTask, $dataType);
$projectOwnerUserIds = self::userids($projectTask, 'projectOwnerUser'); $projectOwnerUserIds = self::userids($projectTask, 'projectOwnerUser');
$recordUserids = array_diff($projectUserids, $forgetUserids, $projectOwnerUserIds); $recordUserids = array_diff($projectUserids, $forgetUserids, $projectOwnerUserIds);