- 表结构:为 file/project/task_vectors 添加 allowed_users MULTI 字段 - 删除关系表:file_users, project_users, task_users - 搜索:使用 allowed_users = userid 进行权限过滤 - 同步:sync 时自动计算并写入 allowed_users - 级联:项目成员变更异步级联 v=1 任务,任务成员变更递归更新子任务 - 覆盖场景:visibility/parent_id/project_id 变更、子任务升级主任务等
55 lines
1.3 KiB
PHP
55 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Observers;
|
|
|
|
use App\Models\FileUser;
|
|
use App\Tasks\ManticoreSyncTask;
|
|
|
|
/**
|
|
* FileUser 观察者(MVA 权限方案)
|
|
*/
|
|
class FileUserObserver extends AbstractObserver
|
|
{
|
|
/**
|
|
* Handle the FileUser "created" event.
|
|
*
|
|
* @param \App\Models\FileUser $fileUser
|
|
* @return void
|
|
*/
|
|
public function created(FileUser $fileUser)
|
|
{
|
|
// MVA 方案:更新文件的 allowed_users
|
|
self::taskDeliver(new ManticoreSyncTask('update_file_allowed_users', [
|
|
'file_id' => $fileUser->file_id,
|
|
]));
|
|
}
|
|
|
|
/**
|
|
* Handle the FileUser "updated" event.
|
|
*
|
|
* @param \App\Models\FileUser $fileUser
|
|
* @return void
|
|
*/
|
|
public function updated(FileUser $fileUser)
|
|
{
|
|
// MVA 方案:更新文件的 allowed_users
|
|
self::taskDeliver(new ManticoreSyncTask('update_file_allowed_users', [
|
|
'file_id' => $fileUser->file_id,
|
|
]));
|
|
}
|
|
|
|
/**
|
|
* Handle the FileUser "deleted" event.
|
|
*
|
|
* @param \App\Models\FileUser $fileUser
|
|
* @return void
|
|
*/
|
|
public function deleted(FileUser $fileUser)
|
|
{
|
|
// MVA 方案:更新文件的 allowed_users
|
|
self::taskDeliver(new ManticoreSyncTask('update_file_allowed_users', [
|
|
'file_id' => $fileUser->file_id,
|
|
]));
|
|
}
|
|
}
|