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; } 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'); } public function FindSet($aParam) { if ($aParam["aArg"][1] == "?") { return "/node#findSet____ | 批量查找替换"; } $sField = $aParam["aOption"][1] ?? false; $sValue = $aParam["aOption"][2] ?? false; $sTo = $aParam["aArg"][1] ?? false; if (!$sField) { return "需要field"; } if (!$sValue) { return "需要value"; } if (!$sTo) { return "需要to"; } $oNodeNow = ModelNode::where($sField, $sValue)->get(); if ($oNodeNow->isEmpty()) { return "没找到对应数据"; } $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; } }