作者 lyh

修改服務器配置

... ... @@ -874,3 +874,37 @@ function textareaToArr($content, $separator = ','){
return trim($v);
},explode($separator, $content)))));
}
/**
* @remark :字符串
* @name :base62_encode
* @author :lyh
* @method :post
* @time :2024/6/26 10:46
*/
function ip_to_unique_string($ip) {
// 将IP地址转换为数值表示
$ip_number = ip2long($ip);
// 使用哈希函数生成唯一数值
$hash = hash('sha256', $ip_number, false);
$hash_number = hexdec(substr($hash, 0, 15)); // 取前15位作为大整数
// 将哈希值转换为Base62编码
$unique_string = base62_encode($hash_number);
// 确保唯一字符串为6位,如果不足则补齐,超出则截取前6位
$unique_string = str_pad($unique_string, 6, '0', STR_PAD_LEFT);
$unique_string = substr($unique_string, 0, 6);
return $unique_string;
}
function base62_encode($num) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$base = strlen($characters);
$result = '';
while ($num > 0) {
$result = $characters[$num % $base] . $result;
$num = intval($num / $base);
}
return $result;
}
... ...
... ... @@ -87,14 +87,18 @@ class ServersController extends BaseController
'total'=>'required',
'account'=>'required',
'password'=>'required',
'port'=>'required'
'port'=>'required',
'ip_total'=>'required',
'domain'=>'required'
],[
'server_name.required' => '服务器名称server_name不能为空',
'service_type.required' => '服务器类型不能为空',
'total.required' => '总数不能为空',
'account.required' => '账号不能为空',
'password.required' => '密码不能为空',
'port.required' => '端口不能为空'
'port.required' => '端口不能为空',
'ip_total.required' => 'ip使用數量不能为空',
'domain.required' => '初始域名不能为空',
]);
$data = $serversLogic->saveServers();
$this->response('success',Code::SUCCESS,$data);
... ...
... ... @@ -12,6 +12,7 @@ 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;
... ... @@ -31,8 +32,13 @@ class ServersIpController extends BaseController
],[
'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['total'] = ['<',Project::SERVER_NUM];
$this->map['total'] = ['<',$info['ip_num']];
$data = $serversIpModel->list($this->map);
$this->response('success',Code::SUCCESS,$data);
}
... ... @@ -103,10 +109,10 @@ class ServersIpController extends BaseController
*/
public function batchSave(ServersIpLogic $serversIpLogic){
$this->request->validate([
'data'=>'required',
'ip'=>'required',
'servers_id'=>'required',
],[
'data.required' => 'data集合不能为空',
'ip.required' => 'data集合不能为空',
'servers_id.required' => '服务器servers_id不能为空',
]);
$data = $serversIpLogic->batchSaveServersIp();
... ...
... ... @@ -10,6 +10,7 @@
namespace App\Http\Logic\Aside\Devops;
use App\Http\Logic\Aside\BaseLogic;
use App\Models\Devops\Servers;
use App\Models\Devops\ServersIp;
class ServersIpLogic extends BaseLogic
... ... @@ -32,6 +33,11 @@ class ServersIpLogic extends BaseLogic
* @time :2024/6/24 17:28
*/
public function saveServersIp(){
//验证域名是否唯一
$info = $this->model->read(['domain'=>$this->param['domain']]);
if($info !== false){
$this->fail('当前初始域名已存在');
}
if(isset($this->param['id']) && !empty($this->param['id'])){
$id = $this->param['id'];
$this->model->edit($this->param,['id'=>$this->param['id']]);
... ... @@ -49,17 +55,23 @@ class ServersIpLogic extends BaseLogic
* @time :2024/6/24 17:25
*/
public function batchSaveServersIp(){
$data = [];
foreach ($this->param['data'] as $v){
if(empty($v['ip']) || empty($v['domain'])){
//獲取初始域名
$serverModel = new Servers();
$info = $serverModel->read(['id'=>$this->param['servers_id']]);
if($info === false){
$this->fail('當前服務器數據不存在');
}
foreach ($this->param['ip'] as $v){
if(empty($v)){
continue;
}
$data[] = [
'ip'=>$v['ip'],
'domain'=>$v['domain'],
$param = [
'ip'=>$v,
'domain'=>ip_to_unique_string($v).'.'.$info['domain'],
'servers_id'=>$this->param['servers_id']
];
$this->model->addReturnId($param);
}
return $this->addReturnId($data);
return $this->success();
}
}
... ...
... ... @@ -17,8 +17,6 @@ class Project extends Base
protected $table = 'gl_project';
const DATABASE_NAME_FIX = 'gl_data_';
const SERVER_NUM = 5;//服务器使用数量
const CUSTOMIZED_ONE = 1;//定制项目
const DEMO_PROJECT_ID = 1;
... ...