From 2451431cafde5dd54d941858be93116a0cd448e2 Mon Sep 17 00:00:00 2001 From: hellcat <> Date: Tue, 25 Mar 2025 19:48:13 +0800 Subject: [PATCH] no message --- src/Controllers/TomApi/Tg/HookController.php | 122 +++++++++++++++++-- 1 file changed, 111 insertions(+), 11 deletions(-) diff --git a/src/Controllers/TomApi/Tg/HookController.php b/src/Controllers/TomApi/Tg/HookController.php index 5f191ff3..7b9d12ff 100755 --- a/src/Controllers/TomApi/Tg/HookController.php +++ b/src/Controllers/TomApi/Tg/HookController.php @@ -12,6 +12,7 @@ namespace App\Controllers\TomApi\Tg; use App\Models\Config; use App\Models\TgStep; use App\Models\Ticket; +use App\Models\Node; //use GuzzleHttp\Psr7\ServerRequest; //use GuzzleHttp\Psr7\Utils; //use Psr\Http\Message\ResponseInterface; @@ -95,18 +96,8 @@ final class HookController } } - - // 命令 -// if ($sText === "/test") { -// -// $serverTime = date("Y-m-d H:i:s"); -// -// $this->sendMessage("服务器时间: " . $serverTime); -// -// http_response_code(200);exit; -// } - + // 打断 if ($sText === "/break") { $oTgStep->clearByFromId($aData["fromId"]); @@ -116,6 +107,7 @@ final class HookController http_response_code(200);exit; } + // 回复工单 if (strpos($sText, '/reply') === 0) { // 先清除一遍,只进行一个进程 @@ -134,6 +126,114 @@ final class HookController } + // 快捷回复工单 + if (strpos($sText, '/ry') === 0) { + + $sText = $this->trimText($sText, '/ry'); + + list($iTicketId, $sText) = explode(" ", $sText, 2); + + $oHttp = new Http(); + + $oHttp->sMethod = "put"; + $oHttp->sToUrl = $_ENV['baseUrl']."/api/tg/ticket/".$iTicketId; + $oHttp->bIsJson = true; + $aData['comment'] = $sText; + $aData['admin_name'] = $aUpdate["message"]["from"]["first_name"]; + $oHttp->aData = $aData; + + $r = @json_decode($oHttp->send(), true); + + // 不论失败成功都清除step + $oTgStep->clearByFromId($aUpdate["message"]["from"]["id"]); + + if ($r["ret"] == 1) { + $sMessage = "成功"; + } else { + $sMessage = "失败"; + Http::response(500, json_encode($aData)); + } + + $this->sendMessage($sMessage); + + Http::response(200, 'ok'); + + } + + // 节点一览 + if (strpos($sText, '/node_all') === 0) { + + $aNodeAll = Node::orderBy("name")->all()->toArray(); + + $sMsg = ''; + + foreach ($aNodeAll as $row) { + $sMsg .= "\n\n"; + $sMsg .= "名字:".$row['name']."。\n"; + $sMsg .= "转发:".$row['zhuanfa_code']."。\n"; + $sMsg .= "机器:".$row['duck_code']."。\n"; + $sMsg .= "备注:".$row['memo']."。\n"; + $sMsg .= "目标:".$row['server']."。\n"; + $sMsg .= "设置:".$row['custom_config']."。\n"; + } + + $this->sendMessage($sMsg); + + Http::response(200, 'ok'); + + } + + // 节点搜索 name + if (strpos($sText, '/nodeNameLike') === 0) { + + $sNameLike = $this->trimText($sText, '/nodeNameLike'); + + $aNodeList = Node::where("name", "like", "%".$sNameLike."%")->toArray(); + + $sMsg = ''; + + foreach ($aNodeList as $row) { + $sMsg .= "\n\n"; + $sMsg .= "名字:".$row['name']."。\n"; + $sMsg .= "转发:".$row['zhuanfa_code']."。\n"; + $sMsg .= "机器:".$row['duck_code']."。\n"; + $sMsg .= "备注:".$row['memo']."。\n"; + $sMsg .= "目标:".$row['server']."。\n"; + $sMsg .= "设置:".$row['custom_config']."。\n"; + } + + $this->sendMessage($sMsg); + + Http::response(200, 'ok'); + + } + + // 节点搜索 port + if (strpos($sText, '/nodePortLike') === 0) { + + $sPortLike = $this->trimText($sText, '/nodePortLike'); + + $aNodeList = Node::where("custom_config", "like", "%".$sPortLike."%")->toArray(); + + $sMsg = ''; + + foreach ($aNodeList as $row) { + $sMsg .= "\n\n"; + $sMsg .= "名字:".$row['name']."。\n"; + $sMsg .= "转发:".$row['zhuanfa_code']."。\n"; + $sMsg .= "机器:".$row['duck_code']."。\n"; + $sMsg .= "备注:".$row['memo']."。\n"; + $sMsg .= "目标:".$row['server']."。\n"; + $sMsg .= "设置:".$row['custom_config']."。\n"; + } + + $this->sendMessage($sMsg); + + Http::response(200, 'ok'); + + } + + // 工单查找 if (strpos($sText, '/ticket_find') === 0) { $iTicketId = $this->trimText($sText, '/ticket_find');