From ff0245840aec240dc5786a9dfabb2553cc174d7a Mon Sep 17 00:00:00 2001 From: kuaifan Date: Sat, 19 Apr 2025 21:33:10 +0800 Subject: [PATCH] no message --- app/Http/Controllers/IndexController.php | 5 +- app/Models/UserDevice.php | 30 +++-- app/Tasks/DeleteTmpTask.php | 145 +++++++++++------------ 3 files changed, 88 insertions(+), 92 deletions(-) diff --git a/app/Http/Controllers/IndexController.php b/app/Http/Controllers/IndexController.php index 0a6c17744..9d6a59d66 100755 --- a/app/Http/Controllers/IndexController.php +++ b/app/Http/Controllers/IndexController.php @@ -242,11 +242,12 @@ class IndexController extends InvokeController // App推送 Task::deliver(new AppPushTask()); // 删除过期的临时表数据 - Task::deliver(new DeleteTmpTask('wg_tmp_msgs', 1)); - Task::deliver(new DeleteTmpTask('task_worker', 12)); + Task::deliver(new DeleteTmpTask('tmp_msgs', 1)); Task::deliver(new DeleteTmpTask('tmp')); + Task::deliver(new DeleteTmpTask('task_worker', 12)); Task::deliver(new DeleteTmpTask('file')); Task::deliver(new DeleteTmpTask('tmp_file', 24)); + Task::deliver(new DeleteTmpTask('user_device', 24)); // 删除机器人消息 Task::deliver(new DeleteBotMsgTask()); // 周期任务 diff --git a/app/Models/UserDevice.php b/app/Models/UserDevice.php index a3ae27015..68d3a4c24 100644 --- a/app/Models/UserDevice.php +++ b/app/Models/UserDevice.php @@ -237,27 +237,35 @@ class UserDevice extends AbstractModel /** * 忘记设备(删除) - * @param string|int|null $token - * - null 表示当前登录的设备 + * @param UserDevice|string|int|null $token + * - UserDevice 表示指定的设备对象 * - string 表示指定的 token * - int 表示指定的数据ID + * - null 表示当前登录的设备 * @return void */ - public static function forget(string|int $token = null): void + public static function forget(UserDevice|string|int $token = null): void { - if ($token === null) { - $token = Doo::userToken(); - } - if (Base::isNumber($token)) { + if ($token instanceof UserDevice) { + $hash = $token->hash; + $token->delete(); + } elseif (Base::isNumber($token)) { $row = self::find(intval($token)); if ($row) { - Cache::forget(self::ck($row->hash)); + $hash = $row->hash; $row->delete(); } - } elseif ($token) { - $hash = md5($token); + } else { + if ($token === null) { + $token = Doo::userToken(); + } + if ($token) { + $hash = md5($token); + self::whereHash($hash)->delete(); + } + } + if (isset($hash)) { Cache::forget(self::ck($hash)); - self::whereHash($hash)->delete(); } } } diff --git a/app/Tasks/DeleteTmpTask.php b/app/Tasks/DeleteTmpTask.php index e8fb61931..1d6160735 100644 --- a/app/Tasks/DeleteTmpTask.php +++ b/app/Tasks/DeleteTmpTask.php @@ -5,6 +5,7 @@ namespace App\Tasks; use App\Models\File; use App\Models\TaskWorker; use App\Models\Tmp; +use App\Models\UserDevice; use App\Models\WebSocketTmpMsg; use App\Module\Base; use Carbon\Carbon; @@ -33,89 +34,75 @@ class DeleteTmpTask extends AbstractTask public function start() { switch ($this->data) { - /** - * 表pre_tmp_msgs - */ - case 'wg_tmp_msgs': - { - WebSocketTmpMsg::where('created_at', '<', Carbon::now()->subHours($this->hours)) - ->orderBy('id') - ->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); + case 'tmp_msgs': + WebSocketTmpMsg::where('created_at', '<', Carbon::now()->subHours($this->hours)) + ->orderBy('id') + ->chunk(500, function ($msgs) { + /** @var WebSocketTmpMsg $msg */ + foreach ($msgs as $msg) { + $msg->delete(); } + }); + 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; + + 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; } }