mirror of
https://github.com/kuaifan/dootask.git
synced 2026-01-21 16:48:13 +00:00
70 lines
1.7 KiB
PHP
70 lines
1.7 KiB
PHP
<?php
|
||
|
||
namespace App\Observers;
|
||
|
||
use App\Models\User;
|
||
use App\Tasks\ManticoreSyncTask;
|
||
|
||
class UserObserver extends AbstractObserver
|
||
{
|
||
/**
|
||
* Handle the User "created" event.
|
||
*
|
||
* @param \App\Models\User $user
|
||
* @return void
|
||
*/
|
||
public function created(User $user)
|
||
{
|
||
// 机器人账号不同步
|
||
if ($user->bot) {
|
||
return;
|
||
}
|
||
self::taskDeliver(new ManticoreSyncTask('user_sync', $user->toArray()));
|
||
}
|
||
|
||
/**
|
||
* Handle the User "updated" event.
|
||
*
|
||
* @param \App\Models\User $user
|
||
* @return void
|
||
*/
|
||
public function updated(User $user)
|
||
{
|
||
// 机器人账号不同步
|
||
if ($user->bot) {
|
||
return;
|
||
}
|
||
|
||
// 检查是否有搜索相关字段变化(不含 tel,因为 Manticore 不索引电话)
|
||
$searchableFields = ['nickname', 'email', 'profession', 'introduction', 'disable_at'];
|
||
$isDirty = false;
|
||
foreach ($searchableFields as $field) {
|
||
if ($user->isDirty($field)) {
|
||
$isDirty = true;
|
||
break;
|
||
}
|
||
}
|
||
|
||
if ($isDirty) {
|
||
// 如果用户被禁用,删除索引;否则更新索引
|
||
if ($user->disable_at) {
|
||
self::taskDeliver(new ManticoreSyncTask('user_delete', ['userid' => $user->userid]));
|
||
} else {
|
||
self::taskDeliver(new ManticoreSyncTask('user_sync', $user->toArray()));
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Handle the User "deleted" event.
|
||
*
|
||
* @param \App\Models\User $user
|
||
* @return void
|
||
*/
|
||
public function deleted(User $user)
|
||
{
|
||
self::taskDeliver(new ManticoreSyncTask('user_delete', ['userid' => $user->userid]));
|
||
}
|
||
}
|
||
|