From 55ea14bbcfa8e793e8949e194d24689fe635753e Mon Sep 17 00:00:00 2001 From: hellcat <> Date: Thu, 22 Jan 2026 19:08:25 +0800 Subject: [PATCH] no message --- .../Controllers/Api/Tg/HookController.php | 4 +- app/Models/ArticleSchema.php | 25 +- app/Models/CacheTg.php | 19 +- app/Models/CacheTgTime.php | 17 +- app/Services/Article/Cmd.php | 18 +- app/Services/Article/Schema.php | 180 +++++++++++--- app/Services/CacheTg.php | 223 ++++++++++++++---- app/Services/Cron.php | 2 + app/Services/Cron/ArticleSchema.php | 37 +-- app/Services/Tg/Hook/Mod/Arma.php | 6 +- app/Services/Tg/Hook/Mod/CacheTg.php | 184 +++------------ app/Services/Tg/Hook/Mod/Test.php | 10 +- app/Services/TomTool/Flow.php | 10 + app/Services/TomTool/HttpV2.php | 100 ++------ config/app.php | 13 +- config/system.php | 2 + fn逻辑.md | 9 + vendor/composer/autoload_classmap.php | 7 + vendor/composer/autoload_static.php | 7 + vendor/composer/installed.php | 4 +- 20 files changed, 487 insertions(+), 390 deletions(-) diff --git a/app/Http/Controllers/Api/Tg/HookController.php b/app/Http/Controllers/Api/Tg/HookController.php index bea7d49f..cc273a49 100755 --- a/app/Http/Controllers/Api/Tg/HookController.php +++ b/app/Http/Controllers/Api/Tg/HookController.php @@ -24,7 +24,7 @@ final class HookController $aUpdate = json_decode($sUpdate, true); $sText = $aUpdate["message"]["text"] ?? "没有text"; if (!str_starts_with($sText, '/')) { - $this->sCustomText = "/article#cacheAdd__{$sGroupCode}"." ".$sUpdate; + $this->sCustomText = "/cacheTg#add__{$sGroupCode}"." ".$sUpdate; } $this->cmd(); @@ -90,7 +90,6 @@ final class HookController $sUpdate = file_get_contents("php://input"); $aUpdate = json_decode($sUpdate, true); - // @file_put_contents('/www/_tg/bot_log.txt', json_encode($aUpdate, JSON_PRETTY_PRINT)); $aData['chatId'] = (string) $aUpdate["message"]["chat"]["id"]; @@ -170,6 +169,7 @@ final class HookController TelegramSlave::fail()->enableSlaveQueue(false)->setMsgA($aDataTg)->send(); $aDataCmd = $aDataTg; + $aDataCmd["_update"] = $aUpdate; $sDataCmd = json_encode($aDataCmd, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); $sDataCmd = str_replace("\\n", "
", $sDataCmd); echo $sDataCmd; diff --git a/app/Models/ArticleSchema.php b/app/Models/ArticleSchema.php index 7e693ead..99afb502 100755 --- a/app/Models/ArticleSchema.php +++ b/app/Models/ArticleSchema.php @@ -7,18 +7,19 @@ use Illuminate\Database\Eloquent\Model; class ArticleSchema extends Model { protected $table = 'article_schema'; -// public $timestamps = false; - -// public static function _listKey() -// { -// $aSelf = self::all()->toArray(); -// -// foreach ($aSelf as &$aSelfRow) { -// unset($aSelfRow["content"]); -// } -// -// return $aSelf; -// } + public function _opt(array $aKv) + { + $aOpt = json_decode($this->opt, true) ?? []; + + foreach ($aKv as $k => $v) { + $aOpt[$k] = $v; + } + + $this->opt = $aOpt; + $this->save(); + } + } + diff --git a/app/Models/CacheTg.php b/app/Models/CacheTg.php index b6fb39ae..eddd9832 100755 --- a/app/Models/CacheTg.php +++ b/app/Models/CacheTg.php @@ -4,21 +4,14 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; -class ArticleCache extends Model +class CacheTg extends Model { - protected $table = 'article_cache'; + protected $table = 'cache_tg'; public $timestamps = false; -// public static function _listKey() -// { -// $aSelf = self::all()->toArray(); -// -// foreach ($aSelf as &$aSelfRow) { -// unset($aSelfRow["content"]); -// } -// -// return $aSelf; -// } - + protected $fillable = [ + 'status', + 'code', + ]; } diff --git a/app/Models/CacheTgTime.php b/app/Models/CacheTgTime.php index 3e8da5a0..5a0924fc 100755 --- a/app/Models/CacheTgTime.php +++ b/app/Models/CacheTgTime.php @@ -4,21 +4,10 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; -class ArticleCacheTime extends Model +class CacheTgTime extends Model { - protected $table = 'article_cache_time'; + protected $table = 'cache_tg_time'; public $timestamps = false; - -// public static function _listKey() -// { -// $aSelf = self::all()->toArray(); -// -// foreach ($aSelf as &$aSelfRow) { -// unset($aSelfRow["content"]); -// } -// -// return $aSelf; -// } - + protected $fillable = ['group_code', 'time']; } diff --git a/app/Services/Article/Cmd.php b/app/Services/Article/Cmd.php index 5aa72bf8..f4fecb45 100755 --- a/app/Services/Article/Cmd.php +++ b/app/Services/Article/Cmd.php @@ -7,7 +7,7 @@ namespace App\Services\Article; use App\Models\SiteMap as ModelSiteMap; use App\Models\ArticleSchema as ModelArticleSchema; use App\Models\ArticleSiteMapGroup as ModelArticleSiteMapGroup; -use App\Services\SlaveMap as ServiceSlaveMap; +//use App\Services\SlaveMap as ServiceSlaveMap; use App\Services\TomTool\Flow; /** @@ -36,7 +36,7 @@ use App\Services\TomTool\Flow; clear() helper: - ::helper_buildCmd($sCmdKey, $sCmd = '', $sValue = '') + ::helper_buildCmd($sCmdKey, $sCmd = '', $aOpt = '') ::helper_buildCmdKey($sSiteGroupCode, $sSiteCode) ::helper_cmdKeyByArticleGroup($sArticleGoupCode, $xDefultCmd = '', $xDefultValue = '') @@ -119,7 +119,7 @@ final class Cmd return $oFlow->done(); } - public function save(string $sCmd = '', string $sValue = ''): Flow + public function save(string $sCmd = '', $aOpt = []): Flow { $oFlow = Flow::start("save"); @@ -131,7 +131,7 @@ final class Cmd if ($this->sSiteCode) { $sCmdKey = self::helper_buildCmdKey($this->sSiteGroupCode, $this->sSiteCode); - $aCmd = self::helper_buildCmd($sCmdKey, $sCmd, $sValue, $sSiteCode); + $aCmd = self::helper_buildCmd($sCmdKey, $sCmd, $aOpt, $sSiteCode); $aCmdList[$sCmdKey] = $aCmd; } else if ($this->sSiteGroupCode) { @@ -140,12 +140,12 @@ final class Cmd foreach ($aSiteList as $sSiteCode) { $sCmdKey = self::helper_buildCmdKey($this->sSiteGroupCode, $sSiteCode); - $aCmd = self::helper_buildCmd($sCmdKey, $sCmd, $sValue, $sSiteCode); + $aCmd = self::helper_buildCmd($sCmdKey, $sCmd, $aOpt, $sSiteCode); $aCmdList[$sCmdKey] = $aCmd; } } else { - $aCmdListNew = self::helper_cmdKeyByArticleGroup($this->oArticle->group_code, $sCmd, $sValue); + $aCmdListNew = self::helper_cmdKeyByArticleGroup($this->oArticle->group_code, $sCmd, $aOpt); foreach ($aCmdListNew as $sCmdKey => $aCmdListNewRow) { $aCmdList[$sCmdKey] = $aCmdListNewRow; } @@ -166,7 +166,7 @@ final class Cmd private function _syncAuto() { $this->useArticle(); - $aCmd = json_decode($this->oArticle->cmd, true); + $aCmd = json_decode($this->oArticle->cmd, true) ?? []; if (count($aCmd) > 0) { $this->oArticle->enable_sync = 1; @@ -193,12 +193,12 @@ final class Cmd return true; } - public static function helper_buildCmd($sCmdKey, $sCmd = '', $sValue = '', $sSiteCode = '') + public static function helper_buildCmd($sCmdKey, $sCmd = '', $aOpt = [], $sSiteCode = '') { $arr = [ "site_code"=> $sSiteCode, "cmd" => $sCmd, - "value" => $sValue, + "opt" => $aOpt, "date" => date("Y-m-d H:i:s"), ]; diff --git a/app/Services/Article/Schema.php b/app/Services/Article/Schema.php index 4b995789..a682351e 100755 --- a/app/Services/Article/Schema.php +++ b/app/Services/Article/Schema.php @@ -11,6 +11,10 @@ use App\Services\TomTool\Telegram\Slave as TeleSlave; use App\Services\TomTool\Flow; //use App\Services\Article\Cmd as ServiceArticleCmd; //use App\Models\Option as ModelOption; +//use Intervention\Image\Facades\Image; +use Intervention\Image\ImageManager; +use Intervention\Image\Drivers\Gd\Driver; +use Illuminate\Support\Str; final class Schema { @@ -42,12 +46,13 @@ final class Schema $oInstance = new self(); $oInstance->sArticleCode = $sArticleCode; $oInstance->sSiteCode = $sSiteCode; - $oInstance->oArticle = $oArticleSchema; $oInstance->sSiteGroupCode = $oSiteMap->group_code; $oInstance->sSiteName = $oSiteMap->name; $oInstance->sSiteUrl = $oSiteMap->url; // $oInstance->sArticleConfig = $sArticleConfig; + $oInstance->oArticle = $oArticleSchema; + return $oInstance; } @@ -66,43 +71,156 @@ final class Schema // 废弃,改直接推了 - public function api_buildArticle() +// public function api_buildArticle() +// { +// $oFlow = Flow::start("api_buildArticle"); +// +// $sArg = file_get_contents('php://input'); +// $aArg = json_decode($sArg, true); +// +// $sArticleCode = $aArg[""] ?? ''; +// $sSiteCode = $aArg["sSiteCode"] ?? ''; // ffcp +// $sSiteName = $aArg["sSiteName"] ?? ''; // ttcp +// $sSiteUrl = $aArg["sSiteUrl"] ?? ''; // ttcp.com +// $isTest = $aArg["isTest"] ?? false; +// +// $sSiteGroupCode = ModelSiteMap::where("code", $sSiteCode)->first()?->group_code; +// $oArticleSchema = ModelArticleSchema::where("code", $sArticleCode)->first(); +// +// $aArg = [ +// "sArticleCode" => $sArticleCode, +// "sSiteGroupCode"=> $sSiteGroupCode, +// "sSiteCode" => $sSiteCode, +// "sSiteName" => $sSiteName, +// "sSiteUrl" => $sSiteUrl, +// "isTest" => $isTest, +// "aSchema" => json_decode($oArticleSchema->schema, true), +// ]; +// +// $sMethod = "build_article__".$sSiteGroupCode; +// if (method_exists($this, $sMethod)) { +// $oArticleFlow = $this->$sMethod($aArg); +// } else { +// $aResult = $oFlow->fail("没有".$sMethod."的对应处理")->getResult(); +// echo json_encode($aReturn); +// exit; +// } +// +// echo json_encode($oArticleFlow->getResult()); +// exit; +// } + + private function build_article__resource() { - $oFlow = Flow::start("api_buildArticle"); + $oFlow = Flow::start("build_article__resource"); - $sArg = file_get_contents('php://input'); - $aArg = json_decode($sArg, true); + $aSchema = json_decode($this->oArticle->schema, true) ?? []; + $aSchemaData = $aSchema["data"] ?? []; + $sSchemaType = $aSchema["type"] ?? ''; - $sArticleCode = $aArg[""] ?? ''; - $sSiteCode = $aArg["sSiteCode"] ?? ''; // ffcp - $sSiteName = $aArg["sSiteName"] ?? ''; // ttcp - $sSiteUrl = $aArg["sSiteUrl"] ?? ''; // ttcp.com - $isTest = $aArg["isTest"] ?? false; + $aDataSend = []; // 它是各站各异的,不保存 + $aSchemaPro = []; // 他是上者的通用版本,保存一份 - $sSiteGroupCode = ModelSiteMap::where("code", $sSiteCode)->first()?->group_code; - $oArticleSchema = ModelArticleSchema::where("code", $sArticleCode)->first(); + $iRowId = 0; + foreach ($aSchemaData as $aSchemaDataRow) { + $iRowId++; + + $aSchemaProRow = []; + $aSchemaProRow["type"] = $aSchemaDataRow["type"] ?? ''; + $aSchemaProRow["data"] = []; // 默认空,等于判断之外的给空 + + if ($sSchemaType == "cache_tg") { + if ($this->oArticle->group_code == "tg_xiuren_a") { + if ($aSchemaProRow["type"] == "photo") { + +// $sRowUuid = $sUuid = Str::uuid()->toString(); + + $iPhotoFullSizeKey = $aSchemaDataRow["photo_fullSizeKey"]; + $aPhotoFullSize = $aSchemaDataRow["photo"][$iPhotoFullSizeKey]; + + // --- 裁剪参数配置区(指挥部) --- + $iWatermarkTop = 50; // 顶部裁掉的水印高度 + $iWatermarkBottom = 38; // 底部裁掉的水印高度 (合计88) + $iThumbClipHeight = 500; // 裁剪取样的原始高度 + $iTargetHeight = 400; // 缩略图最终输出高度 + + // 各部位起始偏移(基于裁完水印后的底部向上计算) + $iOffsetLeg = 0; // 腿:贴底 + $iOffsetBody = 500; // 身:从底往上500位置开始 + $iOffsetHead = 600; // 头:从底往上600位置开始 + + // --- 1. 初始化阵地 --- + $oImageManager = new ImageManager(new Driver()); + $oImgMain = $oImageManager->read($aPhotoFullSize["file_path"]); + $sExtension = pathinfo($aPhotoFullSize["file_path"], PATHINFO_EXTENSION); + $sUploadPath = 'upload/'; + $sUploadDir = config('system.dir_base') . "public/" . $sUploadPath; + $aSavedPath = []; // 弹药库:存放所有生成的路径 + + // --- 2. 预处理:裁掉水印 --- + $iMainHeight = $oImgMain->height() - ($iWatermarkTop + $iWatermarkBottom); + // 保险:防止原图高度不足以支撑裁切 + $iMainHeight = max(1, $iMainHeight); + $oImgMain->crop($oImgMain->width(), $iMainHeight, 0, $iWatermarkTop); + + // 保存全尺寸去水印图 + $sTmp = $this->oArticle->code . '-'.$iRowId.'-full.' . $sExtension; + $sFullSavePath = $sUploadDir . $sTmp; + $sFullSavePathUrl = $sUploadPath . $sTmp; + $oImgMain->save($sFullSavePath); + $aSavedPath['full'] = $sFullSavePathUrl; + + // --- 3. 局部裁剪与归档:[后缀 => 距离底部的偏移] --- + $aClips = [ + 'thumb_a' => $iOffsetHead, + 'thumb_b' => $iOffsetBody, + 'thumb_c' => $iOffsetLeg, + ]; + + // 遍历截取图片 + foreach ($aClips as $sSuffix => $iBottomOffset) { + // 必须克隆,保护主阵地不被连环裁剪搞残 + $oTmp = clone $oImgMain; + $iCurrentH = $oTmp->height(); + + // 计算 Y 轴起点:总高 - 底部偏移 - 准备截取的高度 + $iY = max(0, $iCurrentH - $iBottomOffset - $iThumbClipHeight); + + // 计算实际可截取高度:防止上方空间不足 + $iH = ($iCurrentH > $iBottomOffset) ? min($iThumbClipHeight, $iCurrentH - $iBottomOffset) : 1; + + // 拼装存储路径 + $sTmp = $this->oArticle->code.'-'.$iRowId.'-'.$sSuffix.'.'.$sExtension; + $sCurrentPath = $sUploadDir . $sTmp; + $sCurrentPathUrl = $sUploadPath . $sTmp; + + // 执行:裁切 -> 等比例缩放 -> 保存 + $oTmp->crop($oTmp->width(), $iH, 0, $iY) + ->scale(height: $iTargetHeight) + ->save($sCurrentPath); + + // 路径入库 + $aSavedPath[$sSuffix] = $sCurrentPathUrl; + + unset($oTmp); // 及时释放资源,老兵的职业操守 + } + + $aSchemaProRow["data"] = $aSavedPath; + + $aSchemaPro[] = $aSchemaProRow; // 关键 + $aDataSend[] = $aSchemaProRow; // 公约 + } // is photo + } // xiuren end + } // cache_tg end + + } // schema foreach end - $aArg = [ - "sArticleCode" => $sArticleCode, - "sSiteGroupCode"=> $sSiteGroupCode, - "sSiteCode" => $sSiteCode, - "sSiteName" => $sSiteName, - "sSiteUrl" => $sSiteUrl, - "isTest" => $isTest, - "aSchema" => json_decode($oArticleSchema->schema, true), - ]; - $sMethod = "build_article__".$sSiteGroupCode; - if (method_exists($this, $sMethod)) { - $oArticleFlow = $this->$sMethod($aArg); - } else { - $aResult = $oFlow->fail("没有".$sMethod."的对应处理")->getResult(); - echo json_encode($aReturn); - exit; - } + $this->oArticle->schema_pro = $aSchemaPro; + $this->oArticle->save(); - echo json_encode($oArticleFlow->getResult()); - exit; + return $oFlow->setDataA($aDataSend)->done(); + } private function build_article__jccp_a() diff --git a/app/Services/CacheTg.php b/app/Services/CacheTg.php index db41ffac..f77bb9a0 100755 --- a/app/Services/CacheTg.php +++ b/app/Services/CacheTg.php @@ -4,65 +4,198 @@ declare(strict_types=1); namespace App\Services; -use App\Models\BoxCountry as ModelCountry; +use App\Models\CacheTg as ModelCacheTg; +use App\Models\CacheTgTime as ModelCacheTgTime; +use App\Models\ArticleSchema as ModelArticleSchema; +use App\Services\TomTool\Flow; +use Illuminate\Support\Facades\Http; +//use Illuminate\Support\Facades\Storage; +use Illuminate\Support\Facades\File; +use App\Models\TelegramKey as ModelTelegramKey; +use Illuminate\Support\Str; +use App\Services\Article\Cmd as ServiceArticleCmd; -final class Country +final class CacheTg { - // case等于不同的集成方案 - public function rand($sCase = "a") + public function add($sContent, $sGroupCode) { + $oFlow = Flow::start("CacheTg::add"); - if ($sCase == "a") { - $iCountryLimit = rand(5, 8); // 平均6 - $iNodeLimit = rand(10, 35); // 平局20多 - $iSpeedLimit = rand(5, 30); + $oModelCacheTg = new ModelCacheTg(); + $oModelCacheTg->content = $sContent; + $oModelCacheTg->group_code = $sGroupCode; + $r = $oModelCacheTg->save(); + + if (!$r) { + return $oFlow->fail("add失败?"); } - //test -// $iCountryLimit = 3; + $r = ModelCacheTgTime::updateOrCreate( + ['group_code' => $sGroupCode], // 查找条件:有没有这个组? + ['time' => time()] // 更新或创建的数据:就改这个时间! + ); - $iNodeCount = $iNodeLimit; - $iSpeed = $iSpeedLimit; - - $aCountry = ModelCountry::all()->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++; - } - + if (!$r->exists) { + return $oFlow->fail("cache写入成功但time更新失败?"); } - $aData["country"] = $aRandCountry; - $aData["nodeCount"] = $iNodeCount; - $aData["speed"] = $iSpeed; -// $aData["str"] = "本次更新共".$iNodeLimit."个可用节点,"; - - return $aData; -// -// echo json_encode($aData); -// exit; + return $oFlow->done(); } - public function strGithub($randData) + public static function cron_saveToSchema() { - $str = date('Y年m月d日').",本次更新共".$randData["nodeCount"]."个可用节点,最高速度".$randData["speed"]."M/S。覆盖".implode("、", $randData["country"])."等多个区域。"; + $sCronMsg = ''; - return $str; + $sCronMsg .= "\n\nCacheTg::saveToSchema() - 开始"; + + $bHaveTime = ModelCacheTgTime::where("time", ">", 0)->exists(); + + if (!$bHaveTime) { + $sCronMsg .= "\n - 没有活跃time正常跳出"; + return $sCronMsg; + } + + $iTimeNow = time(); + + $oModelCacheTgTime = ModelCacheTgTime::where("time", ">", 0)->first(); + + $iTimeDiff = $iTimeNow - $oModelCacheTgTime->time; + + if ($iTimeDiff < $oModelCacheTgTime->delay) { + $sCronMsg .= "\n - time活跃但未到delay时间"; + return $sCronMsg; + } + + $oFlow = (new self())->saveToSchema($oModelCacheTgTime->group_code); + + if ($oFlow->isFail()) { + $sCronMsg .= "\n - ".$oFlow->toJson(); + return $sCronMsg; + } + + $oModelCacheTgTime->time = 0; + $oModelCacheTgTime->save(); + + $sCronMsg .= "\n - ok"; + + return $sCronMsg; + } + + public function saveToSchema($sGroupCode) + { + $oFlow = Flow::start(); + + $aSchema = []; + $aSchema["type"] = "cache_tg"; +// $aSchema["group"] = $sGroupCode; + $aSchema["data"] = []; + + $oModelCacheTg = ModelCacheTg::where("status", 1)->where("group_code", $sGroupCode)->get(); + + if ($oModelCacheTg->isEmpty()) { + return $oFlow->done(); + } + + $sUlid = (string) Str::ulid(); + + $sCode = $sGroupCode."-".$sUlid; + + $sBotToken = ModelTelegramKey::botTokenByCode($sGroupCode); + +// $sDocumentRoot = $_SERVER['DOCUMENT_ROOT']; + + //// test +// $sBotToken = ModelTelegramKey::botTokenByCode("test"); + //// test end + + foreach ($oModelCacheTg as $oModelCacheTgRow) { + $sCacheContent = $oModelCacheTgRow->content; + $aCacheContent = json_decode($sCacheContent, true); + + if (isset($aCacheContent["message"]["photo"])) { + + $aSchemaRow = []; + $aSchemaRow["type"] = "photo"; + $aSchemaRow["photo_fullSizeKey"] = 0; + $aSchemaRow["photo"] = []; +// $aSchemaRow["title"] = "xxx"; 意思一下,这么扩展 + + $aTgPhoto = $aCacheContent["message"]["photo"]; + + $iFullSize = 0; + foreach ($aTgPhoto as $k => $aTgPhotoRow) { + + $aPhotoRow = $aTgPhotoRow; + + $sFileId = $aTgPhotoRow["file_id"]; + + if ($aTgPhotoRow["file_size"] > $iFullSize) { + $iFullSize = $aTgPhotoRow["file_size"]; + $aSchemaRow["photo_fullSizeKey"] = $k; + } + + $oResponse = Http::get("https://api.telegram.org/bot{$sBotToken}/getFile", [ + 'file_id' => $sFileId + ]); + + if (!$oResponse->successful()) { + throw new \Exception("获取路径失败:" . $oResponse->body()); + } + + $sFileName = $oResponse->json('result.file_path'); + + $sDownloadUrl = "https://api.telegram.org/file/bot{$sBotToken}/{$sFileName}"; + + $sFileContents = Http::get($sDownloadUrl)->body(); + + $sFileContents = Http::get($sDownloadUrl) + ->throw() + ->body(); + + $sFileNameBase = basename($sFileName); + $sFileSaveName = $sCode."-".$sFileNameBase; + + $sLocalPath = public_path()."/upload/" . $sFileSaveName; + + $b = File::put($sLocalPath, $sFileContents); + + if (!$b) { + throw new \Exception("文件保存失败:" . $sLocalPath); + } + + $aPhotoRow["file_path"] = $sLocalPath; + unset($aPhotoRow["file_id"]); + unset($aPhotoRow["file_unique_id"]); + + $aSchemaRow["photo"][] = $aPhotoRow; + + } + + $aSchema["data"][] = $aSchemaRow; + + } else { + // 不在预设里的,先不管 + } + + } + + $oModelArticleSchema = new ModelArticleSchema(); + $oModelArticleSchema->code = $sCode; + $oModelArticleSchema->schema = json_encode($aSchema); + $oModelArticleSchema->group_code = $sGroupCode; + $oModelArticleSchema->save(); + + $oModelArticleSchema->_opt([ + "thumb_use" => ['b','c'] + ]); + + ServiceArticleCmd::startWithO($oModelArticleSchema)->syncOpen()->save("new"); + + $oModelCacheTg->each->update(['status' => 0, 'code' => $sCode]); +// $oModelCacheTg->each->update(['status' => 1, 'code' => $sCode]); // ! test + + return $oFlow->done(); } } diff --git a/app/Services/Cron.php b/app/Services/Cron.php index 301aeffe..7dd7fdce 100755 --- a/app/Services/Cron.php +++ b/app/Services/Cron.php @@ -15,6 +15,7 @@ use App\Services\Cron\FreenodeSync as CronFreenodeSync; use App\Services\Cron\ArticleSchema as CronArticleSchema; use App\Services\Cron\FnTgPublish as CronFnTgPublish; use App\Services\TomTool\Telegram\Slave as TeleSlave; +use App\Services\CacheTg as ServiceCacheTg; final class Cron { @@ -68,6 +69,7 @@ final class Cron } if ($i % 3 === 0) { + echo ServiceCacheTg::cron_saveToSchema(); CronArticleSchema::cacheTgSave(); CronArticleSchema::pushToSlave(); CronHttpQueue::pop(); diff --git a/app/Services/Cron/ArticleSchema.php b/app/Services/Cron/ArticleSchema.php index 48c47e49..267865dd 100755 --- a/app/Services/Cron/ArticleSchema.php +++ b/app/Services/Cron/ArticleSchema.php @@ -30,14 +30,9 @@ final class ArticleSchema echo " - 没有需要同步的文章\n"; } -// foreach ($oArticleSchemaList->toArray() as $R) { -// unset($R["schema"]); -// tomd($R); -// } - foreach ($oArticleSchemaList as $oArticleSchema) { - $aCmdList = json_decode($oArticleSchema->cmd, true); + $aCmdList = json_decode($oArticleSchema->cmd ?? [], true) ?? []; foreach ($aCmdList as $sCmdKey => $aCmd) { @@ -64,19 +59,24 @@ final class ArticleSchema $sSiteArticleApiUrl = "https://".$sSiteUrlBase.$sSiteArticleApiPath; + // 直接附加raw就该 +// $aCmd["_raw"] = $oArticleSchema->toArray(); + // 附加常规 $aCmd["key"] = $sCmdKey; $aCmd["article_code"] = $oArticleSchema->code; + $aCmd["group_code"] = $oArticleSchema->group_code; + $aCmd["article_opt"] = json_decode($oArticleSchema->opt); // 附加config - $sArticleConfig = ModelArticleConfig::where("article_group_code", $oArticleSchema->group_code)->where("site_group_code", $sSiteGroupCode)->first()?->config; + $sArticleConfig = ModelArticleConfig::where("article_group_code", $oArticleSchema->group_code)->where("site_group_code", $sSiteGroupCode)->first()?->config ?? ''; $aArticleConfig = json_decode($sArticleConfig, true); $aCmd["config"] = $aArticleConfig; // 按需要附加其他 if ($aCmd["cmd"] == "new") { - $oArticleFlow = ServiceArticleSchema::start($oArticleSchema->code, $sSiteCode)->build(); + $oArticleFlow = ServiceArticleSchema::start($oArticleSchema->code, $sSiteCode)->build(); // 关键 if ($oArticleFlow->isFail()) { $sMsg = "文章build失败"; TeleSlave::warn()->send([ @@ -86,17 +86,21 @@ final class ArticleSchema echo $sMsg; continue; } - $aCmd["article"] = $oArticleFlow->getDataA(); + $aCmd["article"] = $oArticleFlow->getDataA(); // 关键 } // 发送 - $sHttpResult = HttpV2::make($sSiteArticleApiUrl)->enableJsonSend()->setDataA($aCmd)->send(); + $sHttpResult = HttpV2::make($sSiteArticleApiUrl)->withToken()->enableAsync(false)->enableJsonSend()->setDataA($aCmd)->send(); $aHttpResult = json_decode($sHttpResult, true); + if (config("app.is_loc") == true) { +// echo $sHttpResult;exit; //// test + } + $bHttpIsDone = $aHttpResult["isDone"] ?? false; if (!$bHttpIsDone) { - $sMsg = "slave那边同步失败?"; + $sMsg = "slave那边同步失败?-> {$sHttpResult}"; TeleSlave::warn()->send([ "msg" => $sMsg, "url" => $sSiteArticleApiUrl, @@ -119,7 +123,12 @@ final class ArticleSchema continue; } - TeleSlave::notify()->send($aHttpResult["aData"]["aNewPath"]); + echo var_dump($aHttpResult); + + //// 丑陋缝补一下 + if (data_get($oArticleSchema, 'group_code') === "ffq_tg_a") { + TeleSlave::notify()->send($aHttpResult["aData"]["aNewPath"]); + } } @@ -131,8 +140,8 @@ final class ArticleSchema public static function cacheTgSave() { - echo "\ncacheTgSave::开始\n"; - $iCacheTimeDelay = 300; // 延迟5分钟 + echo "\n\ncacheTgSave::开始\n"; + $iCacheTimeDelay = 60; // 延迟5分钟 $oCacheTime = ModelArticleCacheTime::first(); $iCacheTime = $oCacheTime->time; diff --git a/app/Services/Tg/Hook/Mod/Arma.php b/app/Services/Tg/Hook/Mod/Arma.php index 4175440d..be72d76a 100755 --- a/app/Services/Tg/Hook/Mod/Arma.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 Arsc extends Base { +class Arma extends Base { public function __construct($aUpdate) { @@ -26,7 +26,7 @@ class Arsc extends Base { return $this->oDog->$sName($aArg[0]); } - public function tu($aParam) + public function thumUse($aParam) { $iId = $aParam["aOption"][1] ?? 0; $sThumbUse = $aParam["aArg"][1] ?? ""; @@ -59,6 +59,8 @@ class Arsc extends Base { $oArticleSchema->opt = $aOpt; $oArticleSchema->save(); + $r = ServiceArticleCmd::startWithO($oArticleSchema)->syncOpen()->save("opt"); + $aResult = [ "id" => $oArticleSchema->id, "code" => $oArticleSchema->code, diff --git a/app/Services/Tg/Hook/Mod/CacheTg.php b/app/Services/Tg/Hook/Mod/CacheTg.php index 7703644d..08f490cd 100755 --- a/app/Services/Tg/Hook/Mod/CacheTg.php +++ b/app/Services/Tg/Hook/Mod/CacheTg.php @@ -2,176 +2,52 @@ namespace App\Services\Tg\Hook\Mod; -use App\Models\ArticleSchema as ModelArticleSchema; -use App\Models\ArticleCache as ModelArticleCache; -use App\Models\ArticleCacheTime as ModelArticleCacheTime; +//use App\Models\ArticleSchema as ModelArticleSchema; +use App\Models\CacheTg as ModelCacheTg; +//use App\Models\ArticleCacheTime as ModelArticleCacheTime; use App\Services\Tg\Hook\Dog; -use App\Services\Article\CacheTg as ServiceArticleCacheTg; -use App\Services\Article\Schema as ServiceArticleSchema; -use App\Services\Article\Cmd as ServiceArticleCmd; -use App\Services\TomTool\Flow; -//use App\Services\HttpQueue; -use App\Services\TomTool\TelegramVdb; -use App\Services\TomTool\ThrowableHandler; -use Illuminate\Database\QueryException; -use RuntimeException; -use App\Services\TomTool\HttpV2; -use App\Services\Cron\ArticleSchema as CronArticleSchema; +//use App\Services\Article\CacheTg as ServiceArticleCacheTg; +//use App\Services\Article\Schema as ServiceArticleSchema; +//use App\Services\Article\Cmd as ServiceArticleCmd; +//use App\Services\TomTool\Flow; +////use App\Services\HttpQueue; +//use App\Services\TomTool\TelegramVdb; +//use App\Services\TomTool\ThrowableHandler; +//use Illuminate\Database\QueryException; +//use RuntimeException; +//use App\Services\TomTool\HttpV2; +//use App\Services\Cron\ArticleSchema as CronArticleSchema; +use App\Services\CacheTg as ServiceCacheTg; -class Article extends Base { +class CacheTg extends Base { private $oDog; private $aUpdate; public function __construct($aUpdate) { - $this->oDog = new Dog(new ModelArticleSchema()); - $this->oDog->_setDogName("articleSchema"); + $this->oDog = new Dog(new ModelCacheTg()); + $this->oDog->_setDogName("cacheTg"); $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) + public function add($aParam) { $sFromGroupCode = $aParam["aOption"][1] ?? "ffq_tg_a"; $sContent = implode(' ', $aParam["aArg"]); - $r = ServiceArticleCacheTg::start()->add($sFromGroupCode, $sContent); - - return $r; + $oServicesCacheTg = new ServiceCacheTg(); + + $oFlow = $oServicesCacheTg->add($sContent, $sFromGroupCode); + + $sMsg = ''; + + if ($oFlow->isDone()) { + $sMsg = $sFromGroupCode."添加一条缓存"; + } + + return $sMsg; } -// public function save($aParam) -// { -// $r = ServiceArticleSchema::make()->save(); -// -// return $r; -// } - } diff --git a/app/Services/Tg/Hook/Mod/Test.php b/app/Services/Tg/Hook/Mod/Test.php index 9395022c..6979a27a 100755 --- a/app/Services/Tg/Hook/Mod/Test.php +++ b/app/Services/Tg/Hook/Mod/Test.php @@ -29,6 +29,8 @@ class Test extends Base { return $this->oDog->$sName($aArg[0]); } + + public function t1() { TeleSlave::log()->enableSlaveQueue(false)->setFileUrl("https://master.tomshell.my/freenode/template/clash.txt")->setMsgS("fff")->send(); @@ -40,8 +42,9 @@ class Test extends Base { $sUrl = $aParam["aOption"][1] ?? ''; $aDataJson = $aParam["aArg"] ?? []; $sDataJson = implode(" ", $aDataJson); + $aDataJson = json_decode($sDataJson, true); - $r = HttpV2::make($sUrl)->enableJsonAs()->setDataX($sDataJson)->send(); + $r = HttpV2::make($sUrl)->enableJsonAs(true)->withToken()->setDataA($aDataJson)->send(); return $r; } @@ -51,8 +54,9 @@ class Test extends Base { $sUrl = $aParam["aOption"][1] ?? ''; $aDataJson = $aParam["aArg"] ?? []; $sDataJson = implode(" ", $aDataJson); - - $r = HttpV2::make($sUrl)->setDataX($sDataJson)->send(); + $aDataJson = json_decode($sDataJson, true); + + $r = HttpV2::make($sUrl)->enableJsonAs(false)->withToken()->setDataA($aDataJson)->send(); return $r; } diff --git a/app/Services/TomTool/Flow.php b/app/Services/TomTool/Flow.php index fe79e9fe..7f2aa38e 100755 --- a/app/Services/TomTool/Flow.php +++ b/app/Services/TomTool/Flow.php @@ -359,6 +359,16 @@ class Flow { return $this->aResult; } + + // action + public function toJson($bFormat = true) + { + if ($bFormat === true) { + return json_encode($this->aResult, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); + } else { + return json_encode($this->aResult); + } + } // helper public function isDone() diff --git a/app/Services/TomTool/HttpV2.php b/app/Services/TomTool/HttpV2.php index c05ae1e2..4cc18ca1 100755 --- a/app/Services/TomTool/HttpV2.php +++ b/app/Services/TomTool/HttpV2.php @@ -53,10 +53,8 @@ class HttpV2 protected bool $sendJson = false; protected bool $returnJson = false; protected bool $async = false; -// private bool $isChain = false; -// private array $aResult = [ -// "isDone" = false -// ]; + // 匈牙利命名法,仅新增一个 token 变量 + protected string $sToken = ''; public static function make(string $url, string $method = 'post'): self { @@ -66,35 +64,21 @@ class HttpV2 return $instance; } -// public static function start(string $sUrl, string $sMethod = 'post'): self -// { -// $oInstance = new self(); -// $oInstance->url = $sUrl; -// $oInstance->method = $sMethod; -// $oInstance->isChain = true; -// return $oInstance; -// } -// -// public function isDone() -// { -// return $this->aResult["isDone"] ?? false; -// } -// -// public function isFail() -// { -// return !$this->isDone(); -// } - -// public function getResult() -// { -// return $this->aResult; -// } - public function optMethod(string $method): self { $this->method = strtolower($method); return $this; } + + /** + * 新增:支持携带 Token + * 如果不传值,默认从环境变量 token_base 获取 + */ + public function withToken(?string $sToken = null): self + { + $this->sToken = $sToken ?? (string)env('token_base', false); + return $this; + } public function setDataX($xData) { @@ -116,43 +100,10 @@ class HttpV2 public function setData($xData) { -// if (is_array($xData)) { -// json_encode($xData) -// } $this->data = $xData; return $this; } -// public function aData($aData = []) -// { -// $this->data($aData); -// return $this; -// } -// -// public function sData($sData = '') -// { -// $this->data($sData); -// return $this; -// } -// -// public function jData($jData = '') -// { -// $this->data($jData); -// return $this; -// } -// -// public function xData($xData = '') -// { -// $this->data($xData); -// return $this; -// } -// -// public function data($data = ''): self -// { -// $this->data = $data; -// return $this; -// } - public function enableJsonSend(bool $flag = true): self { $this->sendJson = $flag; @@ -185,7 +136,12 @@ class HttpV2 $ch = curl_init(); $headers = []; - // 构建 URL 和请求体 + // --- 核心嵌入:如果 sToken 有值且不是 false,塞进 Header --- + if ($this->sToken && $this->sToken !== 'false') { + $headers[] = 'Authorization: Bearer ' . $this->sToken; + } + + // 构建 URL 和请求体 (完全保留原样) if ($this->method === 'get') { $url = $this->url . '?' . http_build_query($this->data); curl_setopt($ch, CURLOPT_URL, $url); @@ -215,11 +171,11 @@ class HttpV2 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); } - // SSL 设置 + // SSL 设置 (完全保留原样) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); - // 异步发送 + // 异步发送 (完全保留原样) if ($this->async) { curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 200); @@ -230,7 +186,7 @@ class HttpV2 return 'sent'; } - // 阻塞执行 + // 阻塞执行 (完全保留原样) curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); @@ -243,19 +199,5 @@ class HttpV2 curl_close($ch); return $response; -// $this->aResult = $oFlow->sData($response)->done(); -// -// if ($this->isChain) { -// return $this; -// } -// -// return $this->aResult; } - -// public static function response(int $code, string $message = ''): void -// { -// http_response_code($code); -// echo $message; -// exit; -// } } diff --git a/config/app.php b/config/app.php index f4672673..f101b5f0 100755 --- a/config/app.php +++ b/config/app.php @@ -2,16 +2,9 @@ return [ - /* - |-------------------------------------------------------------------------- - | Application Name - |-------------------------------------------------------------------------- - | - | This value is the name of your application, which will be used when the - | framework needs to place the application's name in a notification or - | other UI elements where an application name needs to be displayed. - | - */ + 'token_base' => env('token_base', false), + + 'is_loc' => (bool) env('is_loc', false), 'name' => env('APP_NAME', 'Laravel'), diff --git a/config/system.php b/config/system.php index f4672673..b79c9e03 100755 --- a/config/system.php +++ b/config/system.php @@ -2,6 +2,8 @@ return [ + 'dir_base' => env('dir_base'), + /* |-------------------------------------------------------------------------- | Application Name diff --git a/fn逻辑.md b/fn逻辑.md index 841f6a12..8df326e2 100755 --- a/fn逻辑.md +++ b/fn逻辑.md @@ -17,3 +17,12 @@ 3.CronFreenodeMerge :: 读freenode_pool,存到public/freenode/merge/base/xxx文件。 动机: 各site定制化,生成最终fn文件 + +辅助: + CronFreenodeFile :: 辅助处理文件相关 + CronFreenodeLog :: 辅助处理日志相关,暂时可能没用上 + CronFreenodeWatch :: 写了一半没用上,不知道干嘛了 + CronFreenodeSync :: 处理同步cron + +测试: + master :: /cron#test__h 6,就可以了,目前整套逻辑都在h6里 diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 7e1ef830..f0e19454 100755 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -30,6 +30,8 @@ return array( 'App\\Models\\BookOption' => $baseDir . '/app/Models/BookOption.php', 'App\\Models\\BookPage' => $baseDir . '/app/Models/BookPage.php', 'App\\Models\\BoxGithubTag' => $baseDir . '/app/Models/BoxGithubTag.php', + 'App\\Models\\CacheTg' => $baseDir . '/app/Models/CacheTg.php', + 'App\\Models\\CacheTgTime' => $baseDir . '/app/Models/CacheTgTime.php', 'App\\Models\\CrawlFreenode' => $baseDir . '/app/Models/CrawlFreenode.php', 'App\\Models\\DogOption' => $baseDir . '/app/Models/DogOption.php', 'App\\Models\\DoveSite' => $baseDir . '/app/Models/DoveSite.php', @@ -50,6 +52,7 @@ return array( 'App\\Services\\Article\\CacheTg' => $baseDir . '/app/Services/Article/CacheTg.php', 'App\\Services\\Article\\Cmd' => $baseDir . '/app/Services/Article/Cmd.php', 'App\\Services\\Article\\Schema' => $baseDir . '/app/Services/Article/Schema.php', + 'App\\Services\\CacheTg' => $baseDir . '/app/Services/CacheTg.php', 'App\\Services\\Cron' => $baseDir . '/app/Services/Cron.php', 'App\\Services\\Cron\\ArticleSchema' => $baseDir . '/app/Services/Cron/ArticleSchema.php', 'App\\Services\\Cron\\FnTgPublish' => $baseDir . '/app/Services/Cron/FnTgPublish.php', @@ -59,6 +62,7 @@ return array( 'App\\Services\\Cron\\FreenodeMerge' => $baseDir . '/app/Services/Cron/FreenodeMerge.php', 'App\\Services\\Cron\\FreenodePool' => $baseDir . '/app/Services/Cron/FreenodePool.php', 'App\\Services\\Cron\\FreenodeSync' => $baseDir . '/app/Services/Cron/FreenodeSync.php', + 'App\\Services\\Cron\\FreenodeWatch' => $baseDir . '/app/Services/Cron/FreenodeWatch.php', 'App\\Services\\Cron\\HttpQueue' => $baseDir . '/app/Services/Cron/HttpQueue.php', 'App\\Services\\HttpQueue' => $baseDir . '/app/Services/HttpQueue.php', 'App\\Services\\OpenApi\\Telegram' => $baseDir . '/app/Services/OpenApi/Telegram.php', @@ -74,11 +78,13 @@ return array( 'App\\Services\\Tg\\Hook\\Mod\\Blade' => $baseDir . '/app/Services/Tg/Hook/Mod/Blade.php', 'App\\Services\\Tg\\Hook\\Mod\\Book' => $baseDir . '/app/Services/Tg/Hook/Mod/Book.php', 'App\\Services\\Tg\\Hook\\Mod\\Box' => $baseDir . '/app/Services/Tg/Hook/Mod/Box.php', + 'App\\Services\\Tg\\Hook\\Mod\\CacheTg' => $baseDir . '/app/Services/Tg/Hook/Mod/CacheTg.php', 'App\\Services\\Tg\\Hook\\Mod\\Cron' => $baseDir . '/app/Services/Tg/Hook/Mod/Cron.php', 'App\\Services\\Tg\\Hook\\Mod\\Db' => $baseDir . '/app/Services/Tg/Hook/Mod/Db.php', 'App\\Services\\Tg\\Hook\\Mod\\Dev' => $baseDir . '/app/Services/Tg/Hook/Mod/Dev.php', 'App\\Services\\Tg\\Hook\\Mod\\Dove' => $baseDir . '/app/Services/Tg/Hook/Mod/Dove.php', 'App\\Services\\Tg\\Hook\\Mod\\DoveSite' => $baseDir . '/app/Services/Tg/Hook/Mod/DoveSite.php', + 'App\\Services\\Tg\\Hook\\Mod\\Freenode' => $baseDir . '/app/Services/Tg/Hook/Mod/Freenode.php', 'App\\Services\\Tg\\Hook\\Mod\\FreenodeFrom' => $baseDir . '/app/Services/Tg/Hook/Mod/FreenodeFrom.php', 'App\\Services\\Tg\\Hook\\Mod\\FreenodePool' => $baseDir . '/app/Services/Tg/Hook/Mod/FreenodePool.php', 'App\\Services\\Tg\\Hook\\Mod\\GemboxDns' => $baseDir . '/app/Services/Tg/Hook/Mod/GemboxDns.php', @@ -100,6 +106,7 @@ return array( 'App\\Services\\TomTool\\Flow' => $baseDir . '/app/Services/TomTool/Flow.php', 'App\\Services\\TomTool\\Http' => $baseDir . '/app/Services/TomTool/Http.php', 'App\\Services\\TomTool\\HttpV2' => $baseDir . '/app/Services/TomTool/HttpV2.php', + 'App\\Services\\TomTool\\Map' => $baseDir . '/app/Services/TomTool/Map.php', 'App\\Services\\TomTool\\Telegram\\Master' => $baseDir . '/app/Services/TomTool/Telegram/Master.php', 'App\\Services\\TomTool\\Telegram\\Sdk' => $baseDir . '/app/Services/TomTool/Telegram/Sdk.php', 'App\\Services\\TomTool\\Telegram\\Slave' => $baseDir . '/app/Services/TomTool/Telegram/Slave.php', diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 2e18c020..f516ef2c 100755 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -573,6 +573,8 @@ class ComposerStaticInit626b9e7ddd47fb7eff9aaa53cce0c9ad 'App\\Models\\BookOption' => __DIR__ . '/../..' . '/app/Models/BookOption.php', 'App\\Models\\BookPage' => __DIR__ . '/../..' . '/app/Models/BookPage.php', 'App\\Models\\BoxGithubTag' => __DIR__ . '/../..' . '/app/Models/BoxGithubTag.php', + 'App\\Models\\CacheTg' => __DIR__ . '/../..' . '/app/Models/CacheTg.php', + 'App\\Models\\CacheTgTime' => __DIR__ . '/../..' . '/app/Models/CacheTgTime.php', 'App\\Models\\CrawlFreenode' => __DIR__ . '/../..' . '/app/Models/CrawlFreenode.php', 'App\\Models\\DogOption' => __DIR__ . '/../..' . '/app/Models/DogOption.php', 'App\\Models\\DoveSite' => __DIR__ . '/../..' . '/app/Models/DoveSite.php', @@ -593,6 +595,7 @@ class ComposerStaticInit626b9e7ddd47fb7eff9aaa53cce0c9ad 'App\\Services\\Article\\CacheTg' => __DIR__ . '/../..' . '/app/Services/Article/CacheTg.php', 'App\\Services\\Article\\Cmd' => __DIR__ . '/../..' . '/app/Services/Article/Cmd.php', 'App\\Services\\Article\\Schema' => __DIR__ . '/../..' . '/app/Services/Article/Schema.php', + 'App\\Services\\CacheTg' => __DIR__ . '/../..' . '/app/Services/CacheTg.php', 'App\\Services\\Cron' => __DIR__ . '/../..' . '/app/Services/Cron.php', 'App\\Services\\Cron\\ArticleSchema' => __DIR__ . '/../..' . '/app/Services/Cron/ArticleSchema.php', 'App\\Services\\Cron\\FnTgPublish' => __DIR__ . '/../..' . '/app/Services/Cron/FnTgPublish.php', @@ -602,6 +605,7 @@ class ComposerStaticInit626b9e7ddd47fb7eff9aaa53cce0c9ad 'App\\Services\\Cron\\FreenodeMerge' => __DIR__ . '/../..' . '/app/Services/Cron/FreenodeMerge.php', 'App\\Services\\Cron\\FreenodePool' => __DIR__ . '/../..' . '/app/Services/Cron/FreenodePool.php', 'App\\Services\\Cron\\FreenodeSync' => __DIR__ . '/../..' . '/app/Services/Cron/FreenodeSync.php', + 'App\\Services\\Cron\\FreenodeWatch' => __DIR__ . '/../..' . '/app/Services/Cron/FreenodeWatch.php', 'App\\Services\\Cron\\HttpQueue' => __DIR__ . '/../..' . '/app/Services/Cron/HttpQueue.php', 'App\\Services\\HttpQueue' => __DIR__ . '/../..' . '/app/Services/HttpQueue.php', 'App\\Services\\OpenApi\\Telegram' => __DIR__ . '/../..' . '/app/Services/OpenApi/Telegram.php', @@ -617,11 +621,13 @@ class ComposerStaticInit626b9e7ddd47fb7eff9aaa53cce0c9ad 'App\\Services\\Tg\\Hook\\Mod\\Blade' => __DIR__ . '/../..' . '/app/Services/Tg/Hook/Mod/Blade.php', 'App\\Services\\Tg\\Hook\\Mod\\Book' => __DIR__ . '/../..' . '/app/Services/Tg/Hook/Mod/Book.php', 'App\\Services\\Tg\\Hook\\Mod\\Box' => __DIR__ . '/../..' . '/app/Services/Tg/Hook/Mod/Box.php', + 'App\\Services\\Tg\\Hook\\Mod\\CacheTg' => __DIR__ . '/../..' . '/app/Services/Tg/Hook/Mod/CacheTg.php', 'App\\Services\\Tg\\Hook\\Mod\\Cron' => __DIR__ . '/../..' . '/app/Services/Tg/Hook/Mod/Cron.php', 'App\\Services\\Tg\\Hook\\Mod\\Db' => __DIR__ . '/../..' . '/app/Services/Tg/Hook/Mod/Db.php', 'App\\Services\\Tg\\Hook\\Mod\\Dev' => __DIR__ . '/../..' . '/app/Services/Tg/Hook/Mod/Dev.php', 'App\\Services\\Tg\\Hook\\Mod\\Dove' => __DIR__ . '/../..' . '/app/Services/Tg/Hook/Mod/Dove.php', 'App\\Services\\Tg\\Hook\\Mod\\DoveSite' => __DIR__ . '/../..' . '/app/Services/Tg/Hook/Mod/DoveSite.php', + 'App\\Services\\Tg\\Hook\\Mod\\Freenode' => __DIR__ . '/../..' . '/app/Services/Tg/Hook/Mod/Freenode.php', 'App\\Services\\Tg\\Hook\\Mod\\FreenodeFrom' => __DIR__ . '/../..' . '/app/Services/Tg/Hook/Mod/FreenodeFrom.php', 'App\\Services\\Tg\\Hook\\Mod\\FreenodePool' => __DIR__ . '/../..' . '/app/Services/Tg/Hook/Mod/FreenodePool.php', 'App\\Services\\Tg\\Hook\\Mod\\GemboxDns' => __DIR__ . '/../..' . '/app/Services/Tg/Hook/Mod/GemboxDns.php', @@ -643,6 +649,7 @@ class ComposerStaticInit626b9e7ddd47fb7eff9aaa53cce0c9ad 'App\\Services\\TomTool\\Flow' => __DIR__ . '/../..' . '/app/Services/TomTool/Flow.php', 'App\\Services\\TomTool\\Http' => __DIR__ . '/../..' . '/app/Services/TomTool/Http.php', 'App\\Services\\TomTool\\HttpV2' => __DIR__ . '/../..' . '/app/Services/TomTool/HttpV2.php', + 'App\\Services\\TomTool\\Map' => __DIR__ . '/../..' . '/app/Services/TomTool/Map.php', 'App\\Services\\TomTool\\Telegram\\Master' => __DIR__ . '/../..' . '/app/Services/TomTool/Telegram/Master.php', 'App\\Services\\TomTool\\Telegram\\Sdk' => __DIR__ . '/../..' . '/app/Services/TomTool/Telegram/Sdk.php', 'App\\Services\\TomTool\\Telegram\\Slave' => __DIR__ . '/../..' . '/app/Services/TomTool/Telegram/Slave.php', diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index bc96a316..f65b37f4 100755 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => 'laravel/laravel', 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => 'e87d0e91e4344582a24e8ed70cec7979575b73a4', + 'reference' => 'dec2fd03ea275b260e589a7fe963ba805a320458', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -415,7 +415,7 @@ 'laravel/laravel' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => 'e87d0e91e4344582a24e8ed70cec7979575b73a4', + 'reference' => 'dec2fd03ea275b260e589a7fe963ba805a320458', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(),