fix: 修复权限级联同步缺口

修复 Manticore 搜索索引在特定场景下 allowed_users 权限未能正确同步的问题:

  Observer.updated 补充:
  - ProjectUserObserver: 处理项目成员移交时的权限级联
  - ProjectTaskUserObserver: 处理任务成员移交时的权限更新

  批量操作绕过 Observer 修复(delete → remove):
  - FileUser: deleteFileAll/deleteFileUser 方法
  - ProjectTask: 可见性设置时的批量删除
  - ProjectController: 子任务升级和任务复制时的批量删除

  文件批量更新封装:
  - File 新增 updateChildFilesUserid() 方法,统一处理子文件 userid
    更新及 Manticore 同步
This commit is contained in:
kuaifan
2026-01-13 11:55:45 +00:00
parent 3026cd698f
commit 42e4ddbd17
7 changed files with 50 additions and 9 deletions

View File

@@ -2379,7 +2379,7 @@ class ProjectController extends AbstractController
$task->save();
ProjectTaskUser::whereTaskId($task->id)->update(['task_pid' => $task->id]);
if ($task->visibility == 3 && !empty($visibilityUserids)) {
ProjectTaskVisibilityUser::whereTaskId($task->id)->delete();
ProjectTaskVisibilityUser::whereTaskId($task->id)->remove();
foreach (array_unique($visibilityUserids) as $userid) {
if (!$userid) {
continue;
@@ -3031,7 +3031,7 @@ class ProjectController extends AbstractController
$taskTag->project_id = $project->id;
$taskTag->save();
}
ProjectTaskUser::whereTaskId($copy->id)->delete();
ProjectTaskUser::whereTaskId($copy->id)->remove();
$copy->setRelation('taskUser', collect());
$copy->setRelation('project', $project);
$updateData = [