diff --git a/src/Services/Tg/Hook/Mod/Node.php b/src/Services/Tg/Hook/Mod/Node.php index 26571cf86..0a3609a24 100644 --- a/src/Services/Tg/Hook/Mod/Node.php +++ b/src/Services/Tg/Hook/Mod/Node.php @@ -1,17 +1,33 @@ oDog = new Dog(new ModelNode()); + $this->oDog->_setDogName("node"); // 必须,me用,正常就是类名,只不过后期没准改名,所以就这里写死 +// $this->oDog->_setPrimaryKey("code"); // 可选,默认id +// $this->oDog->_setStrField(["content"]); // 可选,指定长文本字段 + $this->oDog->_setOutFormat([ +// "create_time" => "date", +// "update_time" => "date", + ]); + } + + public function __call($sName, $aArg) + { + + return $this->oDog->$sName($aArg[0]); + + } public function Clone($aParam) { @@ -48,258 +64,4 @@ class Node extends Base } - public function List() - { - - $aNodeList = ModelNode::where('type', 1)->orderBy('name', 'asc')->get()->toArray(); - - $sMsg = ''; - foreach ($aNodeList as $row) { - $sMsg .= "\n\n"; - $sMsg .= $row['name'].', id:'.$row['id'].', duck:'.$row['duck_code'].', zf:'.$row['zhuanfa_code'].', sort:'.$row['sort']; - } - - return $sMsg; - - } - - public function Find($aParam) - { -// $iId = $aParam["aArg"][1] ?? false; - $aParam["aOption"][1] = $aParam["aOption"][1] ? $aParam["aOption"][1] : "id"; - - return $this->Like($aParam, "find"); - } - - public function Like($aParam, $sMod2 = false) - { - -// @list($sCmd, $sLike) = explode(" ", $sText); -// -// @list(, $sField, $sMod) = explode("#", $sCmd, 3); - - $sLike = $aParam['aArg'][1] ?? false; - $sField = $aParam['aOption'][1] ?? false; - @$sMod = $aParam['aOption'][2] ?? false; - - if ($sLike == "?") { - return "/node#like__ "; - } - - if (!$sLike) { - return "需要value"; - } - - if (!$sField) { - return "需要field"; - } - - - switch ($sField) { - case "port": - $sField = "custom_config"; - break; - case "config": - $sField = "custom_config"; - break; - case "duck": - $sField = "duck_code"; - break; - case "zhuanfa": - $sField = "zhuanfa_code"; - break; - default: - $sField = $sField; - break; - } - - $sMsg = '?'; - - if ($sMod2 == "find") { - $oNodeList = ModelNode::where($sField, $sLike); - } else { - $oNodeList = ModelNode::where($sField, 'like', '%' . $sLike . '%'); - } - - if ($sMod == 'type1') { - $oNodeList->where('type', 1); - } - - $aNodeList = $oNodeList->orderBy('type', 'desc')->orderBy('name', 'asc')->get()->toArray(); - - if (empty($aNodeList)) { - -// $sMsg = "没有"; - - return "没有"; - - } else { - - $aNodeListNew = []; - foreach ($aNodeList as &$row) { - - $row['custom_config'] = json_decode($row['custom_config']); - $row['dynamic_rate_config'] = json_decode($row['dynamic_rate_config']); - $row['node_bandwidth_limit'] = Tools::flowToGB($row['node_bandwidth_limit']).'GB'; - $row['node_bandwidth'] = Tools::flowToGB($row['node_bandwidth']).'GB'; - $row['node_heartbeat'] = date('Y-m-d H:i:s', $row['node_heartbeat']); - unset($row['is_dynamic_rate']); - unset($row['dynamic_rate_type']); - unset($row['dynamic_rate_config']); - unset($row['bandwidthlimit_resetday']); - unset($row['is_dynamic_rate']); - unset($row['password']); - - $sMsg = json_encode($row, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); -// - $this->oTGHttp->sendToTG($sMsg); - - $this->oHttp::response(200, 'ok'); -// - } -// $sMsg = $this->toJson($aNodeList); - } -// return $sMsg; - $this->oHttp::response(200, 'ok'); - exit; - } - - public function FindSet($aParam) - { - if ($aParam["aArg"][1] == "?") { - return "/node#findSet______ | 批量查找替换,有setField就设置它,没有就设置field"; - } - - $sField = $aParam["aOption"][1] ?? false; - $sValue = $aParam["aOption"][2] ?? false; - $sTo = $aParam["aArg"][1] ?? false; - $sSetField = $aParam["aOption"][3] ?? false; - - if (!$sField) { - return "需要field"; - } - - if (!$sValue) { - return "需要value"; - } - - if (!$sTo) { - return "需要to"; - } - - $sTo = Helper::valueFormat($sTo); - - $oNodeNow = ModelNode::where($sField, $sValue)->get(); - - if ($oNodeNow->isEmpty()) { - return "没找到对应数据"; - } - - if ($sSetField) { - $sField = $sSetField; - } - - $i=0; - foreach ($oNodeNow as $oNodeNowRow) { - $oNodeNowRow->$sField = $sTo; - $oNodeNowRow->save(); - $i++; - } - - return "处理".$i."条数据"; - } - - public function Set($aParam) - { - -// list($sCmd, $sSet) = explode(" ", $sText, 2); -// -// list(, $sField, $iNodeId) = explode("#", $sCmd, 3); - - $sSet = $aParam['aArg'][1]; - $iNodeId = $aParam['aOption'][1]; - $sField = $aParam['aOption'][2]; - - switch ($sField) { - case "config": - $sField = "custom_config"; - break; - case "duck": - $sField = "duck_code"; - break; - case "zhuanfa": - $sField = "zhuanfa_code"; - break; - default: - $sField = $sField; - break; - } - - $sMsg = '?'; - - $oNode = ModelNode::find($iNodeId); - - if (!$oNode) { - $sMsg = "没有这个id"; - } else { - $oNode->$sField = $sSet; - $oNode->save(); - - $sMsg = "ok"; - } - - - $aParam["aOption"][1] = "id"; - $aParam["aOption"][2] = NULL; - $aParam["aArg"][1] = $oNode->id; - return $this->Find($aParam); - - } - - public function Del($aParam) - { - -// list($sCmd, $iId) = explode(" ", $sText, 2); - $iId = $aParam['aArg'][1]; - - $sMsg = '?'; - - $oNode = ModelNode::where("id", $iId)->first(); - - if ($oNode) { - // 尝试删除记录 - $deleted = $oNode->delete(); - - if ($deleted) { - // 删除成功 - $sMsg = "成功"; - } else { - // 删除失败 - $sMsg = "失败"; - } - } else { - // 找不到记录 - $sMsg = "找不到记录"; - } - - return $sMsg; - - } - - public function SetRateAll($aParam) - { - - $iRate = $aParam['aArg'][1]; - - $r = ModelNode::query()->update(['traffic_rate' => $iRate]); - - return $r; - - } - -// private function _valueFormat() -// { -// -// } - } diff --git a/src/Services/Tg/Hook/Mod/NodeDog.php b/src/Services/Tg/Hook/Mod/NodeDog.php deleted file mode 100644 index f340c33b6..000000000 --- a/src/Services/Tg/Hook/Mod/NodeDog.php +++ /dev/null @@ -1,32 +0,0 @@ -oDog = new Dog(new ModelNode()); - $this->oDog->_setDogName("node"); // 必须,me用,正常就是类名,只不过后期没准改名,所以就这里写死 -// $this->oDog->_setPrimaryKey("code"); // 可选,默认id -// $this->oDog->_setStrField(["content"]); // 可选,指定长文本字段 - $this->oDog->_setOutFormat([ -// "create_time" => "date", -// "update_time" => "date", - ]); - } - - public function __call($sName, $aArg) - { - - return $this->oDog->$sName($aArg[0]); - - } - -} diff --git a/src/Services/Tg/Hook/Mod/NodeNew.php b/src/Services/Tg/Hook/Mod/NodeNew.php new file mode 100644 index 000000000..133875d3c --- /dev/null +++ b/src/Services/Tg/Hook/Mod/NodeNew.php @@ -0,0 +1,305 @@ +sMethod = "post"; + $oHttp->sToUrl = $_ENV['baseUrl']."/api/tg/node/".$iNodeId."/copy"; + $oHttp->bIsJson = true; + $oHttp->aData = [ + 'chatId' => $aParam['aOther']['chatId'], + 'fromId' => $aParam['aOther']['fromId'] + ]; + + $r = @json_decode($oHttp->send(), true); + + if ($r["ret"] == 1) { +// $sMessage = "成功"; + } else { + $sMessage = "失败"; + return $sMessage; + } + + $id = ModelNode::where("type", 1)->orderBy("id", "desc")->first()?->id; + + $aParam = []; + $aParam["aArg"][1] = $id; + + return $this->find($aParam); + + } + + public function List() + { + + $aNodeList = ModelNode::where('type', 1)->orderBy('name', 'asc')->get()->toArray(); + + $sMsg = ''; + foreach ($aNodeList as $row) { + $sMsg .= "\n\n"; + $sMsg .= $row['name'].', id:'.$row['id'].', duck:'.$row['duck_code'].', zf:'.$row['zhuanfa_code'].', sort:'.$row['sort']; + } + + return $sMsg; + + } + + public function Find($aParam) + { +// $iId = $aParam["aArg"][1] ?? false; + $aParam["aOption"][1] = $aParam["aOption"][1] ? $aParam["aOption"][1] : "id"; + + return $this->Like($aParam, "find"); + } + + public function Like($aParam, $sMod2 = false) + { + +// @list($sCmd, $sLike) = explode(" ", $sText); +// +// @list(, $sField, $sMod) = explode("#", $sCmd, 3); + + $sLike = $aParam['aArg'][1] ?? false; + $sField = $aParam['aOption'][1] ?? false; + @$sMod = $aParam['aOption'][2] ?? false; + + if ($sLike == "?") { + return "/node#like__ "; + } + + if (!$sLike) { + return "需要value"; + } + + if (!$sField) { + return "需要field"; + } + + + switch ($sField) { + case "port": + $sField = "custom_config"; + break; + case "config": + $sField = "custom_config"; + break; + case "duck": + $sField = "duck_code"; + break; + case "zhuanfa": + $sField = "zhuanfa_code"; + break; + default: + $sField = $sField; + break; + } + + $sMsg = '?'; + + if ($sMod2 == "find") { + $oNodeList = ModelNode::where($sField, $sLike); + } else { + $oNodeList = ModelNode::where($sField, 'like', '%' . $sLike . '%'); + } + + if ($sMod == 'type1') { + $oNodeList->where('type', 1); + } + + $aNodeList = $oNodeList->orderBy('type', 'desc')->orderBy('name', 'asc')->get()->toArray(); + + if (empty($aNodeList)) { + +// $sMsg = "没有"; + + return "没有"; + + } else { + + $aNodeListNew = []; + foreach ($aNodeList as &$row) { + + $row['custom_config'] = json_decode($row['custom_config']); + $row['dynamic_rate_config'] = json_decode($row['dynamic_rate_config']); + $row['node_bandwidth_limit'] = Tools::flowToGB($row['node_bandwidth_limit']).'GB'; + $row['node_bandwidth'] = Tools::flowToGB($row['node_bandwidth']).'GB'; + $row['node_heartbeat'] = date('Y-m-d H:i:s', $row['node_heartbeat']); + unset($row['is_dynamic_rate']); + unset($row['dynamic_rate_type']); + unset($row['dynamic_rate_config']); + unset($row['bandwidthlimit_resetday']); + unset($row['is_dynamic_rate']); + unset($row['password']); + + $sMsg = json_encode($row, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); +// + $this->oTGHttp->sendToTG($sMsg); + + $this->oHttp::response(200, 'ok'); +// + } +// $sMsg = $this->toJson($aNodeList); + } +// return $sMsg; + $this->oHttp::response(200, 'ok'); + exit; + } + + public function FindSet($aParam) + { + if ($aParam["aArg"][1] == "?") { + return "/node#findSet______ | 批量查找替换,有setField就设置它,没有就设置field"; + } + + $sField = $aParam["aOption"][1] ?? false; + $sValue = $aParam["aOption"][2] ?? false; + $sTo = $aParam["aArg"][1] ?? false; + $sSetField = $aParam["aOption"][3] ?? false; + + if (!$sField) { + return "需要field"; + } + + if (!$sValue) { + return "需要value"; + } + + if (!$sTo) { + return "需要to"; + } + + $sTo = Helper::valueFormat($sTo); + + $oNodeNow = ModelNode::where($sField, $sValue)->get(); + + if ($oNodeNow->isEmpty()) { + return "没找到对应数据"; + } + + if ($sSetField) { + $sField = $sSetField; + } + + $i=0; + foreach ($oNodeNow as $oNodeNowRow) { + $oNodeNowRow->$sField = $sTo; + $oNodeNowRow->save(); + $i++; + } + + return "处理".$i."条数据"; + } + + public function Set($aParam) + { + +// list($sCmd, $sSet) = explode(" ", $sText, 2); +// +// list(, $sField, $iNodeId) = explode("#", $sCmd, 3); + + $sSet = $aParam['aArg'][1]; + $iNodeId = $aParam['aOption'][1]; + $sField = $aParam['aOption'][2]; + + switch ($sField) { + case "config": + $sField = "custom_config"; + break; + case "duck": + $sField = "duck_code"; + break; + case "zhuanfa": + $sField = "zhuanfa_code"; + break; + default: + $sField = $sField; + break; + } + + $sMsg = '?'; + + $oNode = ModelNode::find($iNodeId); + + if (!$oNode) { + $sMsg = "没有这个id"; + } else { + $oNode->$sField = $sSet; + $oNode->save(); + + $sMsg = "ok"; + } + + + $aParam["aOption"][1] = "id"; + $aParam["aOption"][2] = NULL; + $aParam["aArg"][1] = $oNode->id; + return $this->Find($aParam); + + } + + public function Del($aParam) + { + +// list($sCmd, $iId) = explode(" ", $sText, 2); + $iId = $aParam['aArg'][1]; + + $sMsg = '?'; + + $oNode = ModelNode::where("id", $iId)->first(); + + if ($oNode) { + // 尝试删除记录 + $deleted = $oNode->delete(); + + if ($deleted) { + // 删除成功 + $sMsg = "成功"; + } else { + // 删除失败 + $sMsg = "失败"; + } + } else { + // 找不到记录 + $sMsg = "找不到记录"; + } + + return $sMsg; + + } + + public function SetRateAll($aParam) + { + + $iRate = $aParam['aArg'][1]; + + $r = ModelNode::query()->update(['traffic_rate' => $iRate]); + + return $r; + + } + +// private function _valueFormat() +// { +// +// } + +}