作者 李宇航

合并分支 'master-lyh-edit' 到 'master'

更新项目搜索+新功能服务器管理



查看合并请求 !627
<?php
/**
* @remark :
* @name :ServersController.php
* @author :lyh
* @method :post
* @time :2024/6/24 16:18
*/
namespace App\Http\Controllers\Aside\Devops;
use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\Devops\ServersLogic;
use App\Models\Devops\Servers;
use App\Models\Devops\Servers as ServersModel;
use App\Models\Devops\ServersIp;
class ServersController extends BaseController
{
/**
* @remark :获取服务器列表
* @name :serverList
* @author :lyh
* @method :post
* @time :2024/6/24 17:47
*/
public function serverList(){
$serversIpModel = new ServersIp();
$query = $serversIpModel->leftJoin('gl_servers', 'gl_servers_ip.servers_id', '=', 'gl_servers.id');
$query = $this->searchParam($query);
$lists = $query->paginate($this->row, $this->selectParam(), 'page', $this->page)->toArray();
$this->response('success',Code::SUCCESS,$lists);
}
/**
* @remark :查询列表
* @name :selectParam
* @author :lyh
* @method :post
* @time :2024/6/25 9:33
*/
public function selectParam(){
$select = [
'gl_servers_ip.id AS id',
'gl_servers_ip.ip AS ip',
'gl_servers_ip.domain AS domain',
'gl_servers.server_name AS server_name',
'gl_servers.total AS total',
'gl_servers.being_number AS being_number',
];
return $select;
}
/**
* @remark :服务器名称搜索
* @name :searchParam
* @author :lyh
* @method :post
* @time :2024/6/25 9:28
*/
public function searchParam(&$query){
if(isset($this->param['server_name'])){
$query->where('gl_servers.server_name','like','%'.$this->param['server_name'].'%');
}
return $query;
}
/**
* @remark :服务器列表
* @name :lists
* @author :lyh
* @method :post
* @time :2024/6/24 16:25
*/
public function lists(){
if(isset($this->map['server_name']) && !empty($this->map['server_name'])){
$this->map['server_name'] = ['like','%'.$this->map['server_name'].'%'];
}
$serversModel = new ServersModel();
$data = $serversModel->lists($this->map,$this->page,$this->row,$this->order);
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :获取详情
* @name :Info
* @author :lyh
* @method :post
* @time :2024/6/24 17:05
*/
public function info(ServersLogic $serversLogic){
$this->request->validate([
'id'=>'required'
],[
'id.required' => '主键不能为空'
]);
$data = $serversLogic->infoServers();
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :保存数据
* @name :save
* @author :lyh
* @method :post
* @time :2024/6/24 16:25
*/
public function save(ServersLogic $serversLogic){
$this->request->validate([
'server_name'=>'required',
'service_type'=>'required',
'total'=>'required',
'account'=>'required',
'password'=>'required',
'port'=>'required'
],[
'server_name.required' => '服务器名称server_name不能为空',
'service_type.required' => '服务器类型不能为空',
'total.required' => '总数不能为空',
'account.required' => '账号不能为空',
'password.required' => '密码不能为空',
'port.required' => '端口不能为空'
]);
$data = $serversLogic->saveServers();
$this->response('success',Code::SUCCESS,$data);
}
}
... ...
<?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\ServersIp as ServersIpModel;
class ServersIpController extends BaseController
{
/**
* @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();
$data = $serversIpModel->lists($this->map,$this->page,$this->row,$this->order);
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :保存数据
* @name :save
* @author :lyh
* @method :post
* @time :2024/6/24 16:24
*/
public function save(ServersIpLogic $serversIpLogic){
$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([
'data'=>'required',
'servers_id'=>'required',
],[
'data.required' => 'data集合不能为空',
'servers_id.required' => '服务器servers_id不能为空',
]);
$data = $serversIpLogic->batchSaveServersIp();
$this->response('success',Code::SUCCESS,$data);
}
}
... ...
... ... @@ -87,6 +87,7 @@ class ProjectController extends BaseController
'gl_project.channel AS channel',
'gl_project.company AS company',
'gl_project.type AS type',
'gl_project.extend_type AS extend_type',
'gl_project.uptime AS uptime',
'gl_project.is_upgrade AS is_upgrade',
'gl_project.created_at AS created_at',
... ... @@ -173,6 +174,7 @@ class ProjectController extends BaseController
else{
$query->whereIn('gl_project.type', [Project::TYPE_FOUR,Project::TYPE_SIX]);
}
$query->where('gl_project.extend_type', '!=' ,5);
}
if(isset($this->map['uptime']) && is_array($this->map['uptime'])){
$query->whereBetween('gl_project.uptime', $this->map['uptime']);
... ... @@ -604,7 +606,7 @@ class ProjectController extends BaseController
* @name :getServiceConfig
* @author :lyh
* @method :post
* @time :2023/8/14 10:23
* @time :2023/8/14 10:23 todo::后面删除
*/
public function getServiceConfig(){
$serviceConfigModel = new ServerConfig();
... ...
... ... @@ -107,7 +107,8 @@ class RenewProjectController extends BaseController
* @time :2023/8/18 14:33
*/
public function notHaveRenewItems(Project $project){
$this->map['extend_type'] = $project::TYPE_FIVE;//未续费网站
$this->map['extend_type'] = $project::TYPE_FIVE;//未续费网站 if(!empty($param['search']) && !empty($param['search_type'])){
$this->map['title'] = ['like', '%'.$this->map['title'].'title'];
$lists = $project->where($this->map)->with('payment')->with('deploy_build')
->with('deploy_optimize')->with('online_check')
->with('project_after')->paginate($this->row, ['*'], 'page', $this->page);
... ...
<?php
/**
* @remark :
* @name :ServersIpLogic.php
* @author :lyh
* @method :post
* @time :2024/6/24 16:21
*/
namespace App\Http\Logic\Aside\Devops;
use App\Http\Logic\Aside\BaseLogic;
use App\Models\Devops\ServersIp;
class ServersIpLogic extends BaseLogic
{
/**
* 数据初始化
*/
public function __construct()
{
parent::__construct();
$this->param = $this->requestAll;
$this->model = new ServersIp();
}
/**
* @remark :保存数据
* @name :saveServersIp
* @author :lyh
* @method :post
* @time :2024/6/24 17:28
*/
public function saveServersIp(){
if(isset($this->param['id']) && !empty($this->param['id'])){
$id = $this->param['id'];
$this->model->edit($this->param,['id'=>$this->param['id']]);
}else{
$id = $this->model->addReturnId($this->param);
}
return $this->success(['id'=>$id]);
}
/**
* @remark :批量添加
* @name :batchSaveServersIp
* @author :lyh
* @method :post
* @time :2024/6/24 17:25
*/
public function batchSaveServersIp(){
$data = [];
foreach ($this->param['data'] as $v){
if(empty($v['ip']) || empty($v['domain'])){
continue;
}
$data[] = [
'ip'=>$v['ip'],
'domain'=>$v['domain'],
'servers_id'=>$this->param['servers_id']
];
}
return $this->addReturnId($data);
}
}
... ...
<?php
/**
* @remark :
* @name :ServersLogic.php
* @author :lyh
* @method :post
* @time :2024/6/24 16:19
*/
namespace App\Http\Logic\Aside\Devops;
use App\Http\Logic\Aside\BaseLogic;
use App\Models\Devops\Servers;
use App\Utils\EncryptUtils;
class ServersLogic extends BaseLogic
{
/**
* 数据初始化
*/
public function __construct()
{
parent::__construct();
$this->param = $this->requestAll;
$this->model = new Servers();
}
/**
* @remark :获取信息
* @name :getServiceConfig
* @author :lyh
* @method :post
* @time :2024/6/24 17:05
*/
public function infoServers(){
$info = $this->model->read(['id'=>$this->param['id']]);
if($info === false){
$this->fail('当前数据不存在或者被删除');
}
return $this->success($info);
}
/**
* @remark :保存数据
* @name :saveServers
* @author :lyh
* @method :post
* @time :2024/6/24 16:33
*/
public function saveServers(){
$encrypt = new EncryptUtils();
$this->param['account'] = $encrypt->lock_url($this->param['account']);
$this->param['password'] = $encrypt->lock_url($this->param['password']);
$this->param['port'] = $encrypt->lock_url($this->param['port']);
if(isset($this->param['id']) && !empty($this->param['id'])){
$id = $this->param['id'];
$this->model->edit($this->param,['id'=>$id]);
}else{
$id = $this->model->addReturnId($this->param);
}
return $this->success(['id'=>$id]);
}
}
... ...
<?php
/**
* @remark :
* @name :Servers.php
* @author :lyh
* @method :post
* @time :2024/6/24 16:19
*/
namespace App\Models\Devops;
use App\Models\Base;
use App\Utils\EncryptUtils;
class Servers extends Base
{
protected $table = 'gl_servers';
const SELF_SITE_ID = 8;//自建站服务器ID
/**
* @remark :获取数据用户名解密
* @name :getUserAttribute
* @author :lyh
* @method :post
* @time :2023/9/12 16:05
*/
public function getAccountAttribute($value){
return (new EncryptUtils())->unlock_url($value);
}
/**
* @remark :密码解密
* @name :getPasswordAttribute
* @author :lyh
* @method :post
* @time :2023/9/12 16:05
*/
public function getPasswordAttribute($value){
return (new EncryptUtils())->unlock_url($value);
}
/**
* @remark :端口解密
* @name :getPasswordAttribute
* @author :lyh
* @method :post
* @time :2023/9/12 16:05
*/
public function getPortAttribute($value){
return (new EncryptUtils())->unlock_url($value);
}
}
... ...
<?php
/**
* @remark :
* @name :ServersIp.php
* @author :lyh
* @method :post
* @time :2024/6/24 16:20
*/
namespace App\Models\Devops;
use App\Models\Base;
class ServersIp extends Base
{
protected $table = 'gl_servers_ip';
}
... ...
... ... @@ -428,6 +428,24 @@ Route::middleware(['aloginauth'])->group(function () {
// 生成页面任务
Route::any('/create_html_task', [Aside\Task\AutoTaskController::class, 'createHtmlTask'])->name('admin.create_html_task');
Route::any('/create_html_param', [Aside\Task\AutoTaskController::class, 'createHtmlTaskParam'])->name('admin.create_html_param');
/**
* 服务器管理
*/
Route::prefix('servers')->group(function () {
Route::any('/', [Aside\Devops\ServersController::class, 'lists'])->name('admin.servers_lists');
Route::any('/serverList', [Aside\Devops\ServersController::class, 'serverList'])->name('admin.servers_serverList');
Route::any('/save', [Aside\Devops\ServersController::class, 'save'])->name('admin.servers_save');
Route::any('/info', [Aside\Devops\ServersController::class, 'info'])->name('admin.servers_info');
});
/**
* ip+domain
*/
Route::prefix('servers_ip')->group(function () {
Route::any('/', [Aside\Devops\ServersIpController::class, 'lists'])->name('admin.servers_lists');
Route::any('/save', [Aside\Devops\ServersIpController::class, 'save'])->name('admin.servers_save');
Route::any('/info', [Aside\Devops\ServersIpController::class, 'info'])->name('admin.servers_info');
});
});
//无需登录验证的路由组
... ...