mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-13 03:52:50 +00:00
feat(任务可见性功能):负责人、协助人更改可见性推送收回
This commit is contained in:
parent
ad5cb79d40
commit
f077b41ffc
@ -1699,6 +1699,10 @@ class ProjectController extends AbstractController
|
||||
$task_id = intval($param['task_id']);
|
||||
//
|
||||
$task = ProjectTask::userTask($task_id, true, true, 2);
|
||||
$taskUser = ProjectTaskUser::select(['userid', 'owner'])->whereTaskId($task_id)->whereIn('owner', [0, 1])->get();
|
||||
$owners = $taskUser->where('owner', 1)->pluck('userid')->toArray(); // 负责人
|
||||
$assist = $taskUser->where('owner', 0)->pluck('userid')->toArray(); // 协助人
|
||||
|
||||
// 更新任务
|
||||
$updateMarking = [];
|
||||
$task->updateTask($param, $updateMarking);
|
||||
@ -1720,6 +1724,18 @@ class ProjectController extends AbstractController
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Arr::exists($param, 'owner') && $data['is_all_visible'] == 0) {
|
||||
$diff = array_diff($owners, $param['owner']);
|
||||
if ($diff) {
|
||||
$task->pushMsgVisibleRemove($diff);
|
||||
}
|
||||
}
|
||||
if (Arr::exists($param, 'assist') && $data['is_all_visible'] == 0) {
|
||||
$diff = array_diff($owners, $param['assist']);
|
||||
if ($diff) {
|
||||
$task->pushMsgVisibleRemove($diff);
|
||||
}
|
||||
}
|
||||
//
|
||||
return Base::retSuccess('修改成功', $data);
|
||||
}
|
||||
|
||||
@ -1537,32 +1537,30 @@ class ProjectTask extends AbstractModel
|
||||
|
||||
/**
|
||||
* 删除可见性任务 推送
|
||||
* @param string $action
|
||||
* @param array|self $data 发送内容,默认为[id, parent_id, project_id, column_id, dialog_id]
|
||||
* @param array $userids
|
||||
* @return void
|
||||
*/
|
||||
public function pushMsgVisibleRemove($data = null)
|
||||
public function pushMsgVisibleRemove(array $userids = [])
|
||||
{
|
||||
if (!$this->project) {
|
||||
return;
|
||||
}
|
||||
if ($data === null) {
|
||||
$data = [
|
||||
'id' => $this->id,
|
||||
'parent_id' => $this->parent_id,
|
||||
'project_id' => $this->project_id,
|
||||
'column_id' => $this->column_id,
|
||||
'dialog_id' => $this->dialog_id,
|
||||
];
|
||||
} elseif ($data instanceof self) {
|
||||
$data = $data->toArray();
|
||||
}
|
||||
$data = [
|
||||
'id' => $this->id,
|
||||
'parent_id' => $this->parent_id,
|
||||
'project_id' => $this->project_id,
|
||||
'column_id' => $this->column_id,
|
||||
'dialog_id' => $this->dialog_id,
|
||||
];
|
||||
//
|
||||
$array = [];
|
||||
// 项目成员 与 项目负责人,任务负责人、协助人的差集
|
||||
$projectUserids = ProjectUser::whereProjectId($this->project_id)->pluck('userid')->toArray(); // 项目成员
|
||||
$projectOwner = Project::whereId($this->project_id)->pluck('userid')->toArray(); // 项目负责人
|
||||
$taskOwnerAndAssists = ProjectTaskUser::select(['userid', 'owner'])->whereIn('owner', [0, 1])->whereTaskId($this->id)->pluck('userid')->toArray();
|
||||
$userids = array_diff($projectUserids, $projectOwner, $taskOwnerAndAssists);
|
||||
if (empty($userids)) {
|
||||
// 默认 项目成员 与 项目负责人,任务负责人、协助人的差集
|
||||
$projectUserids = ProjectUser::whereProjectId($this->project_id)->pluck('userid')->toArray(); // 项目成员
|
||||
$projectOwner = Project::whereId($this->project_id)->pluck('userid')->toArray(); // 项目负责人
|
||||
$taskOwnerAndAssists = ProjectTaskUser::select(['userid', 'owner'])->whereIn('owner', [0, 1])->whereTaskId($this->id)->pluck('userid')->toArray();
|
||||
$userids = array_diff($projectUserids, $projectOwner, $taskOwnerAndAssists);
|
||||
}
|
||||
//
|
||||
$array[] = [
|
||||
'userid' => array_values($userids),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user