feat: 添加 ProjectTaskContentObserver 以处理任务内容的创建、更新和删除事件

This commit is contained in:
kuaifan 2026-01-04 07:24:36 +00:00
parent 90a5624877
commit fa84f92577
2 changed files with 72 additions and 0 deletions

View File

@ -0,0 +1,69 @@
<?php
namespace App\Observers;
use App\Models\ProjectTask;
use App\Models\ProjectTaskContent;
use App\Tasks\ManticoreSyncTask;
class ProjectTaskContentObserver extends AbstractObserver
{
/**
* Handle the ProjectTaskContent "created" event.
* 任务内容创建时,触发任务索引更新
*
* @param \App\Models\ProjectTaskContent $content
* @return void
*/
public function created(ProjectTaskContent $content)
{
$this->syncTaskToManticore($content->task_id);
}
/**
* Handle the ProjectTaskContent "updated" event.
* 任务内容更新时,触发任务索引更新
*
* @param \App\Models\ProjectTaskContent $content
* @return void
*/
public function updated(ProjectTaskContent $content)
{
// 只有内容变化时才需要更新
if ($content->isDirty('content')) {
$this->syncTaskToManticore($content->task_id);
}
}
/**
* Handle the ProjectTaskContent "deleted" event.
* 任务内容删除时,触发任务索引更新
*
* @param \App\Models\ProjectTaskContent $content
* @return void
*/
public function deleted(ProjectTaskContent $content)
{
$this->syncTaskToManticore($content->task_id);
}
/**
* 触发任务同步到 Manticore
*
* @param int|null $taskId 任务ID
* @return void
*/
private function syncTaskToManticore(?int $taskId)
{
if (!$taskId || $taskId <= 0) {
return;
}
$task = ProjectTask::find($taskId);
if (!$task || $task->archived_at || $task->deleted_at) {
return;
}
self::taskDeliver(new ManticoreSyncTask('task_sync', $task->toArray()));
}
}

View File

@ -6,6 +6,7 @@ use App\Models\File;
use App\Models\FileUser;
use App\Models\Project;
use App\Models\ProjectTask;
use App\Models\ProjectTaskContent;
use App\Models\ProjectTaskUser;
use App\Models\ProjectTaskVisibilityUser;
use App\Models\ProjectUser;
@ -18,6 +19,7 @@ use App\Models\WebSocketDialogUser;
use App\Observers\FileObserver;
use App\Observers\FileUserObserver;
use App\Observers\ProjectObserver;
use App\Observers\ProjectTaskContentObserver;
use App\Observers\ProjectTaskObserver;
use App\Observers\ProjectTaskUserObserver;
use App\Observers\ProjectTaskVisibilityUserObserver;
@ -56,6 +58,7 @@ class EventServiceProvider extends ServiceProvider
FileUser::observe(FileUserObserver::class);
Project::observe(ProjectObserver::class);
ProjectTask::observe(ProjectTaskObserver::class);
ProjectTaskContent::observe(ProjectTaskContentObserver::class);
ProjectTaskUser::observe(ProjectTaskUserObserver::class);
ProjectTaskVisibilityUser::observe(ProjectTaskVisibilityUserObserver::class);
ProjectUser::observe(ProjectUserObserver::class);