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 c169377f7..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(); } } @@ -153,7 +165,7 @@ class UmengAlias extends AbstractModel $description = $array['description'] ?: 'no description'; // 描述 $extra = is_array($array['extra']) ? $array['extra'] : []; // 额外参数 $seconds = intval($array['seconds']) ?: 86400; // 有效时间(单位:秒) - $badge = intval($array['badge']) ?: 0; // 角标数(iOS) + $badge = intval($array['badge']) ?: 0; // 角标数 // switch ($platform) { case 'ios': @@ -203,6 +215,7 @@ class UmengAlias extends AbstractModel 'title' => $title, 'after_open' => 'go_app', 'play_sound' => true, + 'set_badge' => min(99, $badge), ], ], $extra), 'type' => 'customizedcast', @@ -215,12 +228,17 @@ class UmengAlias extends AbstractModel ], 'category' => 1, 'channel_properties' => [ + 'main_activity' => 'com.dootask.task.WelcomeActivity', 'oppo_channel_id' => 'dootask', 'vivo_category' => 'IM', 'huawei_channel_importance' => 'NORMAL', 'huawei_channel_category' => 'IM', 'channel_fcm' => 0, ], + 'local_properties' => [ + 'importance' => 'IMPORTANCE_DEFAULT', + 'category' => 'CATEGORY_MESSAGE', + ] ] ]); break; 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'); + } +};