From 96106498d8c480c3ea7ec493bfb063450e11b7b5 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Sat, 1 Nov 2025 02:01:16 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0Umeng=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=A8=A1=E5=9E=8B=E5=8F=8A=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E8=BF=81=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/IndexController.php | 1 + app/Models/UmengAlias.php | 14 +++++++- app/Models/UmengLog.php | 32 +++++++++++++++++++ app/Tasks/DeleteTmpTask.php | 12 +++++++ ...5_11_01_095600_create_umeng_logs_table.php | 23 +++++++++++++ 5 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 app/Models/UmengLog.php create mode 100644 database/migrations/2025_11_01_095600_create_umeng_logs_table.php diff --git a/app/Http/Controllers/IndexController.php b/app/Http/Controllers/IndexController.php index dea8947d2..4a99e70e3 100755 --- a/app/Http/Controllers/IndexController.php +++ b/app/Http/Controllers/IndexController.php @@ -258,6 +258,7 @@ class IndexController extends InvokeController Task::deliver(new DeleteTmpTask('file')); Task::deliver(new DeleteTmpTask('tmp_file', 24)); Task::deliver(new DeleteTmpTask('user_device', 24)); + Task::deliver(new DeleteTmpTask('umeng_log', 24 * 3)); // 删除机器人消息 Task::deliver(new DeleteBotMsgTask()); // 周期任务 diff --git a/app/Models/UmengAlias.php b/app/Models/UmengAlias.php index fddce90c9..7dd3cf376 100644 --- a/app/Models/UmengAlias.php +++ b/app/Models/UmengAlias.php @@ -70,6 +70,9 @@ class UmengAlias extends AbstractModel return; } + $instance = null; + $responsePayload = null; + try { switch ($first['platform']) { case 'ios': @@ -81,8 +84,11 @@ class UmengAlias extends AbstractModel default: return; } - $instance->send($first['data']); + $responsePayload = $instance->send($first['data']); } catch (\Exception $e) { + $responsePayload = [ + 'error' => $e->getMessage(), + ]; $first['retry'] = intval($first['retry'] ?? 0) + 1; if ($first['retry'] > 3) { info("[PushMsg] fail: " . $e->getMessage()); @@ -91,6 +97,12 @@ class UmengAlias extends AbstractModel self::$waitSend[] = $first; } } finally { + if ($instance !== null) { + UmengLog::create([ + 'request' => Base::array2json($first['data']), + 'response' => Base::array2json($responsePayload), + ]); + } self::sendTask(); } } diff --git a/app/Models/UmengLog.php b/app/Models/UmengLog.php new file mode 100644 index 000000000..2cb9f903b --- /dev/null +++ b/app/Models/UmengLog.php @@ -0,0 +1,32 @@ +subHours($this->hours)) + ->orderBy('id') + ->chunk(500, function ($logs) { + /** @var UmengLog $log */ + foreach ($logs as $log) { + $log->delete(); + } + }); + break; } } diff --git a/database/migrations/2025_11_01_095600_create_umeng_logs_table.php b/database/migrations/2025_11_01_095600_create_umeng_logs_table.php new file mode 100644 index 000000000..6e2d71ff9 --- /dev/null +++ b/database/migrations/2025_11_01_095600_create_umeng_logs_table.php @@ -0,0 +1,23 @@ +id(); + $table->text('request')->nullable()->comment('请求参数'); + $table->text('response')->nullable()->comment('推送返回'); + $table->timestamps(); + }); + } + + public function down(): void + { + Schema::dropIfExists('umeng_logs'); + } +};