no message
This commit is contained in:
parent
a325df2119
commit
de4e5f1e89
@ -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()
|
||||
// {
|
||||
//
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
@ -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]);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
305
src/Services/Tg/Hook/Mod/NodeNew.php
Normal file
305
src/Services/Tg/Hook/Mod/NodeNew.php
Normal 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()
|
||||
// {
|
||||
//
|
||||
// }
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user