feat:调整可见性

This commit is contained in:
weifashi
2023-06-29 23:18:36 +08:00
parent ff2f311d43
commit 36499a36b1
4 changed files with 76 additions and 45 deletions

View File

@@ -1719,6 +1719,7 @@ class ProjectController extends AbstractController
$task = ProjectTask::userTask($task_id, true, true, 2);
$taskUser = ProjectTaskUser::select(['userid', 'owner'])->whereTaskId($task_id)->get();
$owners = $taskUser->where('owner', 1)->pluck('userid')->toArray(); // 负责人
$assists = $taskUser->where('owner', 0)->pluck('userid')->toArray(); // 协助人
// 更新任务
$updateMarking = [];
@@ -1729,32 +1730,49 @@ class ProjectController extends AbstractController
$data['visibility_appointor'] = $data['is_all_visible'] == 1 ? [] : ProjectTaskUser::whereTaskId($task->id)->whereOwner(2)->pluck('userid');
$task->pushMsg('update', $data);
// 可见性推送
if (Arr::exists($param, 'is_all_visible') || Arr::exists($param, 'visibility_appointor')) {
if ($data['is_all_visible'] == 1) {
$task->pushMsgVisibleAdd($data);
}
if ($param['visibility_appointor']) {
$oldVisibleUserIds = $taskUser->where('owner', 2)->pluck('userid')->toArray()??[];
$newVisibleUserIds = $param['visibility_appointor'] ?? [];
$deleteUserIds = array_diff($oldVisibleUserIds, $newVisibleUserIds);
$addUserIds = array_diff($newVisibleUserIds, $oldVisibleUserIds);
$task->pushMsgVisibleUpdate($data, $deleteUserIds, $addUserIds);
}
if ($data['is_all_visible'] != 1 && empty($param['visibility_appointor'])) {
$task->pushMsgVisibleRemove();
}
}
if (Arr::exists($param, 'owner') && $data['is_all_visible'] != 1) {
if($task->parent_id == 0){
$subUserids = ProjectTaskUser::whereTaskPid($data['id'])->pluck('userid')->toArray();
$diff = array_diff($owners, $param['owner'] ?: [], $subUserids);
if ($diff) {
$task->pushMsgVisibleRemove($diff);
if (Arr::exists($param, 'is_all_visible') || Arr::exists($param, 'visibility_appointor')) {
if ($data['is_all_visible'] == 1) {
$task->pushMsgVisibleAdd($data);
}
if ($param['visibility_appointor']) {
$oldVisibleUserIds = $taskUser->where('owner', 2)->pluck('userid')->toArray()??[];
$newVisibleUserIds = $param['visibility_appointor'] ?? [];
$deleteUserIds = array_diff($oldVisibleUserIds, $newVisibleUserIds, $subUserids);
$addUserIds = array_diff($newVisibleUserIds, $oldVisibleUserIds);
$task->pushMsgVisibleUpdate($data, $deleteUserIds, $addUserIds);
}
if ($data['is_all_visible'] != 1 && empty($param['visibility_appointor'])) {
$task->pushMsgVisibleRemove();
}
}
}
if (Arr::exists($param, 'assist') && $data['is_all_visible'] != 1) {
$diff = array_diff($owners, $param['assist']);
if ($diff) {
$task->pushMsgVisibleRemove($diff);
if (Arr::exists($param, 'owner') && $data['is_all_visible'] != 1) {
$diff = array_diff($owners, $subUserids);
if ($diff) {
$task->pushMsgVisibleRemove($diff);
}
}
if (Arr::exists($param, 'assist') && $data['is_all_visible'] != 1) {
$diff = array_diff($assists, $subUserids);
if ($diff) {
$task->pushMsgVisibleRemove($diff);
}
}
}else{
if(Arr::exists($param, 'owner') ){
$diff = array_diff($owners, $param['owner'] ?: [] );
if ($diff) {
$task->pushMsgVisibleRemove($diff);
}
$parentTask = ProjectTask::whereId($task->parent_id)->first();
$subUserids = ProjectTaskUser::whereTaskPid($task->parent_id)->pluck('userid')->toArray();
if ( $parentTask && $parentTask->is_all_visible != 1 && empty($subUserids) ) {
$diff = array_diff($owners, $param['owner'] ?: [], $subUserids);
if ($diff) {
$parentTask->pushMsgVisibleRemove($diff);
}
}
}
}
//