mirror of
https://github.com/kuaifan/dootask.git
synced 2026-03-17 11:13:26 +00:00
perf: 优化协助任务的更新
This commit is contained in:
parent
d6b4cd78d0
commit
4c6a20601c
@ -1354,28 +1354,62 @@ class ProjectTask extends AbstractModel
|
|||||||
$data = $data->toArray();
|
$data = $data->toArray();
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
$array = [$userid, []];
|
$userids = [];
|
||||||
if ($userid === null) {
|
if ($userid === null) {
|
||||||
$array[0] = $this->project->relationUserids();
|
$userids = $this->project->relationUserids();
|
||||||
} elseif (!is_array($userid)) {
|
} elseif (!is_array($userid)) {
|
||||||
$array[0] = [$userid];
|
$userids = [$userid];
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
if (isset($data['owner'])) {
|
$array = [];
|
||||||
$owners = ProjectTaskUser::whereTaskId($data['id'])->whereOwner(1)->pluck('userid')->toArray();
|
if (empty($data['parent_id'])) {
|
||||||
$array = [array_intersect($array[0], $owners), array_diff($array[0], $owners)];
|
if (Arr::exists($data, 'owner') || Arr::exists($data, 'assist')) {
|
||||||
|
$taskUser = ProjectTaskUser::select(['userid', 'owner'])->whereTaskId($data['id'])->get();
|
||||||
|
// 负责人
|
||||||
|
$owners = $taskUser->where('owner', 1)->pluck('userid')->toArray();
|
||||||
|
$owners = array_intersect($userids, $owners);
|
||||||
|
if ($owners) {
|
||||||
|
$array[] = [
|
||||||
|
'userid' => array_values($owners),
|
||||||
|
'data' => array_merge($data, [
|
||||||
|
'owner' => 1,
|
||||||
|
'assist' => 1,
|
||||||
|
])
|
||||||
|
];
|
||||||
}
|
}
|
||||||
foreach ($array as $index => $item) {
|
// 协助人
|
||||||
if ($index > 0) {
|
$assists = $taskUser->pluck('userid')->toArray();
|
||||||
$data['owner'] = 0;
|
$assists = array_intersect($userids, array_diff($assists, $owners));
|
||||||
|
if ($assists) {
|
||||||
|
$array[] = [
|
||||||
|
'userid' => array_values($assists),
|
||||||
|
'data' => array_merge($data, [
|
||||||
|
'owner' => 0,
|
||||||
|
'assist' => 1,
|
||||||
|
])
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
// 项目成员(其他人)
|
||||||
|
$userids = array_diff($userids, $owners, $assists);
|
||||||
|
$data = array_merge($data, [
|
||||||
|
'owner' => 0,
|
||||||
|
'assist' => 0,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$array[] = [
|
||||||
|
'userid' => array_values($userids),
|
||||||
|
'data' => $data
|
||||||
|
];
|
||||||
|
//
|
||||||
|
foreach ($array as $item) {
|
||||||
$params = [
|
$params = [
|
||||||
'ignoreFd' => Request::header('fd'),
|
'ignoreFd' => Request::header('fd'),
|
||||||
'userid' => array_values($item),
|
'userid' => array_values($item),
|
||||||
'msg' => [
|
'msg' => [
|
||||||
'type' => 'projectTask',
|
'type' => 'projectTask',
|
||||||
'action' => $action,
|
'action' => $action,
|
||||||
'data' => $data,
|
'data' => $item['data'],
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
$task = new PushTask($params, false);
|
$task = new PushTask($params, false);
|
||||||
@ -1390,7 +1424,15 @@ class ProjectTask extends AbstractModel
|
|||||||
*/
|
*/
|
||||||
public static function oneTask($task_id)
|
public static function oneTask($task_id)
|
||||||
{
|
{
|
||||||
return self::with(['taskUser', 'taskTag'])->allData()->where("project_tasks.id", intval($task_id))->first();
|
$data = self::with(['taskUser', 'taskTag'])->allData()->where("project_tasks.id", intval($task_id))->first();
|
||||||
|
if ($data && $data->parent_id === 0) {
|
||||||
|
if ($data->owner || ProjectTaskUser::select(['owner'])->whereTaskId($data->id)->whereUserid(User::userid())->exists()) {
|
||||||
|
$data->assist = 1;
|
||||||
|
} else {
|
||||||
|
$data->assist = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user