no message

This commit is contained in:
hellcat 2025-12-30 12:49:18 +08:00
parent a325df2119
commit de4e5f1e89
3 changed files with 329 additions and 294 deletions

View File

@ -1,17 +1,33 @@
<?php
//declare(strict_types=1);
namespace App\Services\Tg\Hook\Mod;
use App\Models\Node as ModelNode;
use App\Utils\Tools;
//use App\Services\DB;
use App\Services\TomTool\Http;
use App\Services\Tg\Helper;
use App\Services\Tg\Hook\Dog;
class Node extends Base
{
class Node extends Base {
private $oDog;
public function __construct($aUpdate)
{
$this->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__<field> <value>";
}
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__<field>__<value>__<setField?> <to> | 批量查找替换有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()
// {
//
// }
}

View File

@ -1,32 +0,0 @@
<?php
namespace App\Services\Tg\Hook\Mod;
use App\Models\Node as ModelNode;
use App\Services\Tg\Hook\Dog;
class NodeDog extends Base {
private $oDog;
public function __construct($aUpdate)
{
$this->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]);
}
}

View File

@ -0,0 +1,305 @@
<?php
//declare(strict_types=1);
namespace App\Services\Tg\Hook\Mod;
use App\Models\Node as ModelNode;
use App\Utils\Tools;
//use App\Services\DB;
use App\Services\TomTool\Http;
use App\Services\Tg\Helper;
class NodeNew extends Base
{
public function Clone($aParam)
{
// list(, $iNodeId) = explode(" ", $sText, 2);
$iNodeId = $aParam['aArg'][1];
$oHttp = new Http();
$oHttp->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__<field> <value>";
}
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__<field>__<value>__<setField?> <to> | 批量查找替换有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()
// {
//
// }
}