no message

This commit is contained in:
kuaifan 2025-04-19 21:33:10 +08:00
parent c55f64e209
commit ff0245840a
3 changed files with 88 additions and 92 deletions

View File

@ -242,11 +242,12 @@ class IndexController extends InvokeController
// App推送 // App推送
Task::deliver(new AppPushTask()); Task::deliver(new AppPushTask());
// 删除过期的临时表数据 // 删除过期的临时表数据
Task::deliver(new DeleteTmpTask('wg_tmp_msgs', 1)); Task::deliver(new DeleteTmpTask('tmp_msgs', 1));
Task::deliver(new DeleteTmpTask('task_worker', 12));
Task::deliver(new DeleteTmpTask('tmp')); Task::deliver(new DeleteTmpTask('tmp'));
Task::deliver(new DeleteTmpTask('task_worker', 12));
Task::deliver(new DeleteTmpTask('file')); Task::deliver(new DeleteTmpTask('file'));
Task::deliver(new DeleteTmpTask('tmp_file', 24)); Task::deliver(new DeleteTmpTask('tmp_file', 24));
Task::deliver(new DeleteTmpTask('user_device', 24));
// 删除机器人消息 // 删除机器人消息
Task::deliver(new DeleteBotMsgTask()); Task::deliver(new DeleteBotMsgTask());
// 周期任务 // 周期任务

View File

@ -237,27 +237,35 @@ class UserDevice extends AbstractModel
/** /**
* 忘记设备(删除) * 忘记设备(删除)
* @param string|int|null $token * @param UserDevice|string|int|null $token
* - null 表示当前登录的设备 * - UserDevice 表示指定的设备对象
* - string 表示指定的 token * - string 表示指定的 token
* - int 表示指定的数据ID * - int 表示指定的数据ID
* - null 表示当前登录的设备
* @return void * @return void
*/ */
public static function forget(string|int $token = null): void public static function forget(UserDevice|string|int $token = null): void
{ {
if ($token === null) { if ($token instanceof UserDevice) {
$token = Doo::userToken(); $hash = $token->hash;
} $token->delete();
if (Base::isNumber($token)) { } elseif (Base::isNumber($token)) {
$row = self::find(intval($token)); $row = self::find(intval($token));
if ($row) { if ($row) {
Cache::forget(self::ck($row->hash)); $hash = $row->hash;
$row->delete(); $row->delete();
} }
} elseif ($token) { } else {
$hash = md5($token); if ($token === null) {
$token = Doo::userToken();
}
if ($token) {
$hash = md5($token);
self::whereHash($hash)->delete();
}
}
if (isset($hash)) {
Cache::forget(self::ck($hash)); Cache::forget(self::ck($hash));
self::whereHash($hash)->delete();
} }
} }
} }

View File

@ -5,6 +5,7 @@ namespace App\Tasks;
use App\Models\File; use App\Models\File;
use App\Models\TaskWorker; use App\Models\TaskWorker;
use App\Models\Tmp; use App\Models\Tmp;
use App\Models\UserDevice;
use App\Models\WebSocketTmpMsg; use App\Models\WebSocketTmpMsg;
use App\Module\Base; use App\Module\Base;
use Carbon\Carbon; use Carbon\Carbon;
@ -33,89 +34,75 @@ class DeleteTmpTask extends AbstractTask
public function start() public function start()
{ {
switch ($this->data) { switch ($this->data) {
/** case 'tmp_msgs':
* 表pre_tmp_msgs WebSocketTmpMsg::where('created_at', '<', Carbon::now()->subHours($this->hours))
*/ ->orderBy('id')
case 'wg_tmp_msgs': ->chunk(500, function ($msgs) {
{ /** @var WebSocketTmpMsg $msg */
WebSocketTmpMsg::where('created_at', '<', Carbon::now()->subHours($this->hours)) foreach ($msgs as $msg) {
->orderBy('id') $msg->delete();
->chunk(500, function ($msgs) {
/** @var WebSocketTmpMsg $msg */
foreach ($msgs as $msg) {
$msg->delete();
}
});
}
break;
/**
* 表pre_tmp
*/
case 'tmp':
{
Tmp::where('created_at', '<', Carbon::now()->subHours($this->hours))
->orderBy('id')
->chunk(500, function ($tmps) {
/** @var Tmp $tmp */
foreach ($tmps as $tmp) {
$tmp->delete();
}
});
}
break;
/**
* 表pre_task_worker
*/
case 'task_worker':
{
TaskWorker::onlyTrashed()
->where('deleted_at', '<', Carbon::now()->subHours($this->hours))
->orderBy('id')
->forceDelete();
}
break;
/**
* 表pre_file
*/
case 'file':
{
$day = intval(env("AUTO_EMPTY_FILE_RECYCLE", 365));
if ($day <= 0) {
return;
}
File::onlyTrashed()
->where('deleted_at', '<', Carbon::now()->subHours($day))
->orderBy('id')
->chunk(500, function ($files) {
/** @var File $file */
foreach ($files as $file) {
$file->forceDeleteFile();
}
});
}
break;
/**
* tmp_file 删除临时文件
*/
case 'tmp_file':
{
$day = intval(env("AUTO_EMPTY_TEMP_FILE", 30));
if ($day <= 0) {
return;
}
$files = Base::recursiveFiles(public_path('uploads/tmp'));
foreach ($files as $file) {
$time = @filemtime($file);
if ($time && $time < time() - 3600 * 24 * $day) {
unlink($file);
} }
});
break;
case 'tmp':
Tmp::where('created_at', '<', Carbon::now()->subHours($this->hours))
->orderBy('id')
->chunk(500, function ($tmps) {
/** @var Tmp $tmp */
foreach ($tmps as $tmp) {
$tmp->delete();
}
});
break;
case 'task_worker':
TaskWorker::onlyTrashed()
->where('deleted_at', '<', Carbon::now()->subHours($this->hours))
->orderBy('id')
->forceDelete();
break;
case 'file':
$day = intval(env("AUTO_EMPTY_FILE_RECYCLE", 365));
if ($day <= 0) {
return;
}
File::onlyTrashed()
->where('deleted_at', '<', Carbon::now()->subHours($day))
->orderBy('id')
->chunk(500, function ($files) {
/** @var File $file */
foreach ($files as $file) {
$file->forceDeleteFile();
}
});
break;
case 'tmp_file':
$day = intval(env("AUTO_EMPTY_TEMP_FILE", 30));
if ($day <= 0) {
return;
}
$files = Base::recursiveFiles(public_path('uploads/tmp'));
foreach ($files as $file) {
$time = @filemtime($file);
if ($time && $time < time() - 3600 * 24 * $day) {
unlink($file);
} }
} }
break; break;
case 'user_device':
UserDevice::where('expired_at', '<', Carbon::now()->subHours($this->hours))
->orderBy('id')
->chunk(500, function ($devices) {
/** @var UserDevice $device */
foreach ($devices as $device) {
UserDevice::forget($device);
}
});
break;
} }
} }