mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-13 12:02:51 +00:00
fix:修复任务列表查询不出数据的问题
This commit is contained in:
parent
9adb825a88
commit
5142497c7a
@ -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);
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user