perf: 任务可见性用户 - 分表优化
This commit is contained in:
@@ -2,15 +2,16 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Exceptions\ApiException;
|
||||
use DB;
|
||||
use Arr;
|
||||
use Request;
|
||||
use Carbon\Carbon;
|
||||
use App\Module\Base;
|
||||
use App\Tasks\PushTask;
|
||||
use Arr;
|
||||
use Carbon\Carbon;
|
||||
use DB;
|
||||
use App\Exceptions\ApiException;
|
||||
use Hhxsv5\LaravelS\Swoole\Task\Task;
|
||||
use App\Models\ProjectTaskVisibilityUser;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Request;
|
||||
|
||||
/**
|
||||
* App\Models\ProjectTask
|
||||
@@ -288,8 +289,7 @@ class ProjectTask extends AbstractModel
|
||||
->leftJoin('project_task_users', function ($leftJoin) use ($userid) {
|
||||
$leftJoin
|
||||
->on('project_task_users.userid', '=', DB::raw($userid))
|
||||
->on('project_tasks.id', '=', 'project_task_users.task_id')
|
||||
->where('project_task_users.owner', '<', 2);
|
||||
->on('project_tasks.id', '=', 'project_task_users.task_id');
|
||||
});
|
||||
return $query;
|
||||
}
|
||||
@@ -310,11 +310,7 @@ class ProjectTask extends AbstractModel
|
||||
'project_task_users.owner'
|
||||
])
|
||||
->selectRaw("1 AS assist")
|
||||
->join('project_task_users', function ($join) {
|
||||
$join
|
||||
->on('project_tasks.id', '=', 'project_task_users.task_id')
|
||||
->where('project_task_users.owner', '<', 2);
|
||||
})
|
||||
->join('project_task_users', 'project_tasks.id', '=', 'project_task_users.task_id')
|
||||
->where('project_task_users.userid', $userid);
|
||||
if ($owner !== null) {
|
||||
$query->where('project_task_users.owner', $owner);
|
||||
@@ -501,13 +497,12 @@ class ProjectTask extends AbstractModel
|
||||
])->save();
|
||||
}
|
||||
|
||||
// 可见性
|
||||
foreach ($visibility_userids as $uid) {
|
||||
ProjectTaskUser::createInstance([
|
||||
ProjectTaskVisibilityUser::createInstance([
|
||||
'project_id' => $task->project_id,
|
||||
'task_id' => $task->id,
|
||||
'task_pid' => $task->parent_id ?: $task->id,
|
||||
'userid' => $uid,
|
||||
'owner' => 2,
|
||||
'userid' => $uid
|
||||
])->save();
|
||||
}
|
||||
|
||||
@@ -734,16 +729,14 @@ class ProjectTask extends AbstractModel
|
||||
ProjectTask::whereId($data['task_id'])->update(['visibility' => $data["visibility"]]);
|
||||
ProjectTask::whereParentId($data['task_id'])->update(['visibility' => $data["visibility"]]);
|
||||
}
|
||||
ProjectTaskUser::whereTaskId($data['task_id'])->whereOwner(2)->delete();
|
||||
ProjectTaskVisibilityUser::whereTaskId($data['task_id'])->delete();
|
||||
if (Arr::exists($data, 'visibility_appointor')) {
|
||||
foreach ($data['visibility_appointor'] as $uid) {
|
||||
if ($uid) {
|
||||
ProjectTaskUser::createInstance([
|
||||
ProjectTaskVisibilityUser::createInstance([
|
||||
'project_id' => $this->project_id,
|
||||
'task_id' => $this->id,
|
||||
'task_pid' => $this->parent_id ?: $this->id,
|
||||
'userid' => $uid,
|
||||
'owner' => 2,
|
||||
'userid' => $uid
|
||||
])->save();
|
||||
}
|
||||
}
|
||||
@@ -1526,7 +1519,10 @@ class ProjectTask extends AbstractModel
|
||||
if ($pushUserIds) {
|
||||
$userids = $pushUserIds;
|
||||
} elseif ($this->visibility != 1) {
|
||||
$userids = ProjectTaskUser::select(['userid', 'owner'])->whereTaskId($this->id)->orWhere('task_pid', '=', $this->id)->pluck('userid')->toArray();
|
||||
$userids = ProjectTaskUser::whereTaskId($this->id)->orWhere('task_pid', '=', $this->id)->pluck('userid')->toArray();
|
||||
if ($this->visibility == 3) {
|
||||
$userids = array_merge($userids, ProjectTaskVisibilityUser::whereTaskId($this->id)->pluck('userid')->toArray());
|
||||
}
|
||||
} else {
|
||||
$userids = ProjectUser::whereProjectId($this->project_id)->pluck('userid')->toArray(); // 项目成员
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user