Files
ProxyPanel/app/Services/NodeService.php
兔姬桑 ce9618236f 2.5.a 管理路由全面改写 与 代码拆分
1. 全面改写项目-管理面板的路由;
2. 拆分过于Contoller;
3. 优化了按钮过多的图表的显示;
4. 初步应用 Laravel的 表单验证功能;
5. 初步应用 Laravel的 component 功能 拆分/模块化前端代码;
6. 优化部分系统的判断逻辑;
7. 针对2.4.0以前的面板,追加辅助矫正数据库的sql文件;
2020-10-01 12:34:19 +08:00

46 lines
1.1 KiB
PHP

<?php
namespace App\Services;
use App\Components\IP;
use App\Models\Node;
use App\Models\NodeLabel;
class NodeService
{
public function getNodeGeo($id = false): int
{
if ($id) {
$nodes = Node::whereStatus(1)->whereId($id)->get();
} else {
$nodes = Node::whereStatus(1)->get();
}
$result = 0;
foreach ($nodes as $node) {
$data = IP::IPSB($node->is_ddns ? gethostbyname($node->server) : $node->ip);
if ($data && Node::whereId($node->id)->update(['geo' => $data['latitude'].','.$data['longitude']])) {
$result++;
}
}
return $result;
}
// 生成节点标签
public function makeLabels($nodeId, $labels): void
{
// 先删除所有该节点的标签
NodeLabel::whereNodeId($nodeId)->delete();
if (!empty($labels) && is_array($labels)) {
foreach ($labels as $label) {
$nodeLabel = new NodeLabel();
$nodeLabel->node_id = $nodeId;
$nodeLabel->label_id = $label;
$nodeLabel->save();
}
}
}
}