NodeService.php 932 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. namespace App\Services;
  3. use App\Models\Node;
  4. use App\Models\NodeLabel;
  5. class NodeService {
  6. public function getNodeGeo($id = false): int {
  7. if($id){
  8. $nodes = Node::whereStatus(1)->whereId($id)->get();
  9. }else{
  10. $nodes = Node::whereStatus(1)->get();
  11. }
  12. $result = 0;
  13. foreach($nodes as $node){
  14. $data = getIPInfo($node->is_ddns? gethostbyname($node->server) : $node->ip);
  15. if($data){
  16. if(Node::whereId($node->id)->update(['geo' => $data['latitude'].','.$data['longitude']])){
  17. $result++;
  18. }
  19. }
  20. }
  21. return $result;
  22. }
  23. // 生成节点标签
  24. public function makeLabels($nodeId, $labels): void {
  25. // 先删除所有该节点的标签
  26. NodeLabel::whereNodeId($nodeId)->delete();
  27. if(!empty($labels) && is_array($labels)){
  28. foreach($labels as $label){
  29. $nodeLabel = new NodeLabel();
  30. $nodeLabel->node_id = $nodeId;
  31. $nodeLabel->label_id = $label;
  32. $nodeLabel->save();
  33. }
  34. }
  35. }
  36. }