From 2837f37d8ce32d879054fe7ec0e636262ce596a3 Mon Sep 17 00:00:00 2001
From: hellcat <>
Date: Sat, 17 Jan 2026 12:57:57 +0800
Subject: [PATCH] no message
---
app/Models/CacheTg.php | 24 +++
app/Models/CacheTgTime.php | 24 +++
app/Services/CacheTg.php | 68 +++++++
app/Services/Tg/Hook/Dog.php | 11 ++
.../Hook/Mod/{ArticleSchema.php => Arma.php} | 44 ++++-
app/Services/Tg/Hook/Mod/CacheTg.php | 177 ++++++++++++++++++
config/system.php | 126 +++++++++++++
public/upload/无标题.png | Bin 6410 -> 0 bytes
8 files changed, 473 insertions(+), 1 deletion(-)
create mode 100755 app/Models/CacheTg.php
create mode 100755 app/Models/CacheTgTime.php
create mode 100755 app/Services/CacheTg.php
rename app/Services/Tg/Hook/Mod/{ArticleSchema.php => Arma.php} (77%)
create mode 100755 app/Services/Tg/Hook/Mod/CacheTg.php
create mode 100755 config/system.php
delete mode 100755 public/upload/无标题.png
diff --git a/app/Models/CacheTg.php b/app/Models/CacheTg.php
new file mode 100755
index 00000000..b6fb39ae
--- /dev/null
+++ b/app/Models/CacheTg.php
@@ -0,0 +1,24 @@
+toArray();
+//
+// foreach ($aSelf as &$aSelfRow) {
+// unset($aSelfRow["content"]);
+// }
+//
+// return $aSelf;
+// }
+
+
+}
diff --git a/app/Models/CacheTgTime.php b/app/Models/CacheTgTime.php
new file mode 100755
index 00000000..3e8da5a0
--- /dev/null
+++ b/app/Models/CacheTgTime.php
@@ -0,0 +1,24 @@
+toArray();
+//
+// foreach ($aSelf as &$aSelfRow) {
+// unset($aSelfRow["content"]);
+// }
+//
+// return $aSelf;
+// }
+
+
+}
diff --git a/app/Services/CacheTg.php b/app/Services/CacheTg.php
new file mode 100755
index 00000000..db41ffac
--- /dev/null
+++ b/app/Services/CacheTg.php
@@ -0,0 +1,68 @@
+toArray();
+
+ shuffle($aCountry);
+
+ $i = 1;
+ $aRandCountry = [];
+ foreach ($aCountry as $aCountryRow) {
+
+ if (in_array($aCountryRow["name"], $aRandCountry)) {
+ continue;
+ }
+
+ $aRandCountry[] = $aCountryRow["name"];
+
+ if ($i >= $iCountryLimit) {
+ break;
+ } else {
+ $i++;
+ }
+
+ }
+
+ $aData["country"] = $aRandCountry;
+ $aData["nodeCount"] = $iNodeCount;
+ $aData["speed"] = $iSpeed;
+// $aData["str"] = "本次更新共".$iNodeLimit."个可用节点,";
+
+ return $aData;
+//
+// echo json_encode($aData);
+// exit;
+ }
+
+ public function strGithub($randData)
+ {
+ $str = date('Y年m月d日').",本次更新共".$randData["nodeCount"]."个可用节点,最高速度".$randData["speed"]."M/S。覆盖".implode("、", $randData["country"])."等多个区域。";
+
+ return $str;
+ }
+
+}
diff --git a/app/Services/Tg/Hook/Dog.php b/app/Services/Tg/Hook/Dog.php
index a0dd2e5f..9b0b3d5e 100755
--- a/app/Services/Tg/Hook/Dog.php
+++ b/app/Services/Tg/Hook/Dog.php
@@ -441,6 +441,17 @@ class Dog extends Mod\Base {
return $iLimit;
}
+ public function last()
+ {
+ $iLastId = $this->oModelSelf->orderBy("id", "desc")->first()?->id;
+
+ $aParam = [];
+ $aParam["aOption"][1] = "id";
+ $aParam["aArg"][1] = $iLastId;
+
+ return $this->find($aParam);
+ }
+
public function find($aParam)
{
$sField = $aParam["aOption"][1] ?? $this->sPrimaryKey;
diff --git a/app/Services/Tg/Hook/Mod/ArticleSchema.php b/app/Services/Tg/Hook/Mod/Arma.php
similarity index 77%
rename from app/Services/Tg/Hook/Mod/ArticleSchema.php
rename to app/Services/Tg/Hook/Mod/Arma.php
index 4deea9db..4175440d 100755
--- a/app/Services/Tg/Hook/Mod/ArticleSchema.php
+++ b/app/Services/Tg/Hook/Mod/Arma.php
@@ -11,7 +11,7 @@ use App\Services\Article\Cmd as ServiceArticleCmd;
use App\Services\TomTool\Flow;
use App\Services\TomTool\ThrowableHandler;
-class ArticleSchema extends Base {
+class Arsc extends Base {
public function __construct($aUpdate)
{
@@ -26,6 +26,48 @@ class ArticleSchema extends Base {
return $this->oDog->$sName($aArg[0]);
}
+ public function tu($aParam)
+ {
+ $iId = $aParam["aOption"][1] ?? 0;
+ $sThumbUse = $aParam["aArg"][1] ?? "";
+
+ if ($iId == "?") {
+ return "/thumbUse__[id?last] [a,b,c]";
+ }
+
+ if (!$sThumbUse) {
+ return "空值不可以";
+ }
+
+ if (!$iId) {
+ $iId = ModelArticleSchema::where("status", 1)->orderBy("id", "desc")->first()?->id;
+ }
+
+ $oArticleSchema = ModelArticleSchema::where("id", $iId)->first();
+
+ if (!$oArticleSchema) {
+ return "没有这个id的数据";
+ }
+
+ $sOpt = $oArticleSchema->opt;
+ $aOpt = json_decode($sOpt, true);
+
+ $aThumbUse = explode(",", $sThumbUse);
+
+ $aOpt["thumb_use"] = $aThumbUse;
+
+ $oArticleSchema->opt = $aOpt;
+ $oArticleSchema->save();
+
+ $aResult = [
+ "id" => $oArticleSchema->id,
+ "code" => $oArticleSchema->code,
+ "opt" => $oArticleSchema->opt,
+ ];
+
+ return $this->toJson($aResult);
+ }
+
public function last()
{
$iLastId = ModelArticleSchema::where("status", 1)->orderBy("id", "desc")->first()?->id;
diff --git a/app/Services/Tg/Hook/Mod/CacheTg.php b/app/Services/Tg/Hook/Mod/CacheTg.php
new file mode 100755
index 00000000..7703644d
--- /dev/null
+++ b/app/Services/Tg/Hook/Mod/CacheTg.php
@@ -0,0 +1,177 @@
+oDog = new Dog(new ModelArticleSchema());
+ $this->oDog->_setDogName("articleSchema");
+ $this->oDog->_setStrField(["content"]);
+ $this->aUpdate = $aUpdate;
+ }
+
+ public function __call($sName, $aArg)
+ {
+ return $this->oDog->$sName($aArg[0]);
+ }
+
+ public function test_cron_saveAuto()
+ {
+ $r = ServiceArticleSchema::make()->cron_saveAuto();
+
+ return $r;
+ }
+
+ public function build_test_ttcp($aParam)
+ {
+ $oArticleCodeFirst = ModelArticleSchema::where("status", 1)->orderBy("id", "desc")->first();
+
+ $aArg["sArticleCode"] = $oArticleCodeFirst->code;
+ $aArg["sFromCode"] = 'ttcp';
+ $aArg["sFromName"] = '天天测评';
+ $aArg["sFromUrl"] = 'ttcp.loc';
+ $aArg["sFromGroup"] = 'vue_md_ceping';
+
+ $aParam["aArg"][1] = json_encode($aArg);
+ $r = $this->build_test($aParam);
+ }
+
+ public function build_test($aParam)
+ {
+ $aJson = $aParam["aArg"];
+ $sJson = implode(" ", $aJson);
+ $aJson = json_decode($sJson, true);
+
+ $sShell = $this->aUpdate["shell"] ?? '';
+
+ $aJson["isTest"] = true;
+
+ $url = $_ENV["APP_URL"]."/api/article/build";
+
+ $r = HttpV2::make($url)->enableJsonSend()->setData($aJson)->send();
+
+ $a = json_decode($r, true);
+
+ if ($sShell !== "cmd") {
+ $oTelegramVdb = TelegramVdb::make("master");
+ foreach ($a["aData"] as $aa) {
+ $oTelegramVdb->send($aa);
+ }
+ }
+
+ echo "标题:".$a["aData"]["title"] ?? "?";
+ echo "
";
+ echo $a["aData"]["content"] ?? "?";
+ exit;
+ }
+
+ public function build_test_case($aParam)
+ {
+ $aArg["sArticleCode"] = 'ffq_tg::20251028113221';
+ $aArg["sFromCode"] = 'ttcp';
+ $aArg["sFromName"] = '天天测评';
+ $aArg["sFromUrl"] = 'ttcp.loc';
+ $aArg["sFromGroup"] = 'vue_md_ceping';
+
+ return $this->toJson($aArg);
+ }
+
+ public function cmdReset($aParam)
+ {
+ $xId = $aParam["aArg"][1] ?? "first";
+
+ if ($xId == "?") {
+ return "#cmdRe [xId:first]";
+ }
+
+ if ($xId == "first") {
+ $oModelArticleSchema = ModelArticleSchema::where("status", 1)->orderBy("id", "desc")->first();
+ } else {
+ $oModelArticleSchema = ModelArticleSchema::where("status", 1)->where("id", $xId)->first();
+ }
+
+ $oModelArticleSchema->enable_sync = true;
+ $oModelArticleSchema->save();
+
+ $bool = ServiceArticleCmd::start($oModelArticleSchema->code)->reset();
+
+ return $bool;
+ }
+
+ public function cmdGet($aParam)
+ {
+ $xId = $aParam["aArg"][1] ?? "first";
+
+ if ($xId == "?") {
+ return "#cmdGet [xId:first]";
+ }
+
+ if ($xId == "first") {
+ $oModelArticleSchema = ModelArticleSchema::where("status", 1)->orderBy("id", "desc")->first();
+ } else {
+ $oModelArticleSchema = ModelArticleSchema::where("status", 1)->where("id", $xId)->first();
+ }
+
+ return json_decode($oModelArticleSchema->cmd, true);
+ }
+
+ public function schemaGet($aParam)
+ {
+ $xId = $aParam["aArg"][1] ?? "first";
+
+ if ($xId == "?") {
+ return "#schemaGet [xId:first]";
+ }
+
+ if ($xId == "first") {
+ $oModelArticleSchema = ModelArticleSchema::where("status", 1)->orderBy("id", "desc")->first();
+ } else {
+ $oModelArticleSchema = ModelArticleSchema::where("status", 1)->where("id", $xId)->first();
+ }
+
+ $aSchema = json_decode($oModelArticleSchema->schema, true);
+
+ $sMsg = json_encode($aSchema, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
+
+ return $sMsg;
+ }
+
+ public function cacheAdd($aParam)
+ {
+ $sFromGroupCode = $aParam["aOption"][1] ?? "ffq_tg_a";
+ $sContent = implode(' ', $aParam["aArg"]);
+
+ $r = ServiceArticleCacheTg::start()->add($sFromGroupCode, $sContent);
+
+ return $r;
+ }
+
+// public function save($aParam)
+// {
+// $r = ServiceArticleSchema::make()->save();
+//
+// return $r;
+// }
+
+}
diff --git a/config/system.php b/config/system.php
new file mode 100755
index 00000000..f4672673
--- /dev/null
+++ b/config/system.php
@@ -0,0 +1,126 @@
+ env('APP_NAME', 'Laravel'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Application Environment
+ |--------------------------------------------------------------------------
+ |
+ | This value determines the "environment" your application is currently
+ | running in. This may determine how you prefer to configure various
+ | services the application utilizes. Set this in your ".env" file.
+ |
+ */
+
+ 'env' => env('APP_ENV', 'production'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Application Debug Mode
+ |--------------------------------------------------------------------------
+ |
+ | When your application is in debug mode, detailed error messages with
+ | stack traces will be shown on every error that occurs within your
+ | application. If disabled, a simple generic error page is shown.
+ |
+ */
+
+ 'debug' => (bool) env('APP_DEBUG', false),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Application URL
+ |--------------------------------------------------------------------------
+ |
+ | This URL is used by the console to properly generate URLs when using
+ | the Artisan command line tool. You should set this to the root of
+ | the application so that it's available within Artisan commands.
+ |
+ */
+
+ 'url' => env('APP_URL', 'http://localhost'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Application Timezone
+ |--------------------------------------------------------------------------
+ |
+ | Here you may specify the default timezone for your application, which
+ | will be used by the PHP date and date-time functions. The timezone
+ | is set to "UTC" by default as it is suitable for most use cases.
+ |
+ */
+
+ 'timezone' => env('APP_TIMEZONE', 'UTC'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Application Locale Configuration
+ |--------------------------------------------------------------------------
+ |
+ | The application locale determines the default locale that will be used
+ | by Laravel's translation / localization methods. This option can be
+ | set to any locale for which you plan to have translation strings.
+ |
+ */
+
+ 'locale' => env('APP_LOCALE', 'en'),
+
+ 'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'),
+
+ 'faker_locale' => env('APP_FAKER_LOCALE', 'en_US'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Encryption Key
+ |--------------------------------------------------------------------------
+ |
+ | This key is utilized by Laravel's encryption services and should be set
+ | to a random, 32 character string to ensure that all encrypted values
+ | are secure. You should do this prior to deploying the application.
+ |
+ */
+
+ 'cipher' => 'AES-256-CBC',
+
+ 'key' => env('APP_KEY'),
+
+ 'previous_keys' => [
+ ...array_filter(
+ explode(',', env('APP_PREVIOUS_KEYS', ''))
+ ),
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Maintenance Mode Driver
+ |--------------------------------------------------------------------------
+ |
+ | These configuration options determine the driver used to determine and
+ | manage Laravel's "maintenance mode" status. The "cache" driver will
+ | allow maintenance mode to be controlled across multiple machines.
+ |
+ | Supported drivers: "file", "cache"
+ |
+ */
+
+ 'maintenance' => [
+ 'driver' => env('APP_MAINTENANCE_DRIVER', 'file'),
+ 'store' => env('APP_MAINTENANCE_STORE', 'database'),
+ ],
+
+];
diff --git a/public/upload/无标题.png b/public/upload/无标题.png
deleted file mode 100755
index 6ea897b9eef20b3b6b715416453ed1fd5edae2a0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 6410
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
z
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
YAGex{rZiF50000007*qoM6N<$f;i4g00000