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