ServersIpController.php 5.5 KB
<?php
/**
 * @remark :
 * @name   :ServersIpController.php
 * @author :lyh
 * @method :post
 * @time   :2024/6/24 16:23
 */

namespace App\Http\Controllers\Aside\Devops;

use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\Devops\ServersIpLogic;
use App\Models\Devops\Servers;
use App\Models\Devops\ServersIp as ServersIpModel;
use App\Models\Project\Project;

class ServersIpController extends BaseController
{

    /**
     * @remark :获取列表(不分页)
     * @name   :list
     * @author :lyh
     * @method :post
     * @time   :2024/6/25 14:27
     */
    public function list(){
        $this->request->validate([
            'servers_id'=>'required'
        ],[
            'servers_id.required' => '服务器servers_id不能为空'
        ]);
        $serverModel = new Servers();
        $info = $serverModel->read(['id'=>$this->param['servers_id']]);
        if($info === false){
            $this->response('當前服務器不存在',Code::SERVER_ERROR);
        }
        $serversIpModel = new ServersIpModel();
        $this->map['status'] = 0;
        $data = $serversIpModel->list($this->map);
        foreach ($data as $k => $v){
            $v['is_optional'] = 0;//是否可选择
            if($v['total'] >= $info['ip_total']){
                $v['is_optional'] = 1;//不可选择
            }
            $data[$k] = $v;
        }
        $this->response('success',Code::SUCCESS,$data);
    }

    /**
     * @remark :当前服务器器对应的ip列表
     * @name   :list
     * @author :lyh
     * @method :post
     * @time   :2024/6/24 16:23
     */
    public function lists(){
        $this->request->validate([
            'servers_id'=>'required'
        ],[
            'servers_id.required' => '服务器servers_id不能为空'
        ]);
        $serversIpModel = new ServersIpModel();
        $this->map['status'] = 0;
        $data = $serversIpModel->lists($this->map,$this->page,$this->row,$this->order);
        if(!empty($data) && !empty($data['list'])){
            $projectModel = new Project();
            foreach ($data['list'] as $k => $v){
                $v['project_title'] = $projectModel->formatQuery(['serve_id'=>$v['id']])->pluck('title')->toArray();
                $data['list'][$k] = $v;
            }
        }
        $this->response('success',Code::SUCCESS,$data);
    }

    /**
     * @remark :获取当前数据详情
     * @name   :info
     * @author :lyh
     * @method :post
     * @time   :2024/6/25 14:52
     */
    public function info(ServersIpLogic $serversIpLogic){
        $this->request->validate([
            'id'=>'required'
        ],[
            'id.required' => 'id不能为空'
        ]);
        $data = $serversIpLogic->infoServersIp();
        $this->response('success',Code::SUCCESS,$data);
    }

    /**
     * @remark :保存数据
     * @name   :save
     * @author :lyh
     * @method :post
     * @time   :2024/6/24 16:24
     */
    public function save(ServersIpLogic $serversIpLogic){
        if(!isset($this->param['id'])){
            $this->request->validate([
                'ip'=>'required',
                'servers_id'=>'required',
                'domain'=>'required'
            ],[
                'ip.required' => 'ip不能为空',
                'servers_id.required' => '服务器servers_id不能为空',
                'domain.required' => 'cname域名不能为空',
            ]);
        }
        $data = $serversIpLogic->saveServersIp();
        $this->response('success',Code::SUCCESS,$data);
    }

    /**
     * @remark :批量保存ip_domain
     * @name   :batchSave
     * @author :lyh
     * @method :post
     * @time   :2024/6/24 17:23
     */
    public function batchSave(ServersIpLogic $serversIpLogic){
        $this->request->validate([
            'ip'=>'required|array',
            'servers_id'=>'required',
        ],[
            'ip.required' => 'ip集合不能为空',
            'servers_id.required' => '服务器servers_id不能为空',
        ]);
        $data = $serversIpLogic->batchSaveServersIp();
        $this->response('success',Code::SUCCESS,$data);
    }

    /**
     * @remark :批量删除数据
     * @name   :batchDel
     * @author :lyh
     * @method :post
     * @time   :2024/6/27 13:52
     */
    public function batchDel(ServersIpLogic $serversIpLogic){
        $this->request->validate([
            'ids'=>'required|array',
        ],[
            'ids.required' => 'ip集合不能为空',
        ]);
        $serversIpLogic->batchDelServersIp();
        $this->response('success');
    }

    /**
     * @remark :导出文件获取数据
     * @name   :downloadFile
     * @author :lyh
     * @method :post
     * @time   :2024/6/28 10:26
     */
    public function downloadFile(){
        $this->request->validate([
            'servers_id'=>'required',
        ],[
            'servers_id.required' => '服务器servers_id不能为空',
        ]);
        $serverModel = new Servers();
        $info = $serverModel->read(['id'=>$this->map['servers_id']]);
        $data = [];
        $serversIpModel = new ServersIpModel();
        $list = $serversIpModel->list($this->map);
        foreach ($list as $v){
            $position = strpos($v['domain'], '.');
            $result = substr($v['domain'], 0, $position);
            $data[] = ['记录类型'=>'A','主机记录'=>$result,'解析线路'=>'默认','记录值'=>$v['ip'],'MAX优先级'=>'','TTL值'=>600,'状态(暂停/启用)'=>'启用','备注'=>$info['server_name']];
        }
        $this->response('success',Code::SUCCESS,$data);
    }
}