作者 lyh

修改服務器配置

@@ -874,3 +874,37 @@ function textareaToArr($content, $separator = ','){ @@ -874,3 +874,37 @@ function textareaToArr($content, $separator = ','){
874 return trim($v); 874 return trim($v);
875 },explode($separator, $content))))); 875 },explode($separator, $content)))));
876 } 876 }
  877 +
  878 +/**
  879 + * @remark :字符串
  880 + * @name :base62_encode
  881 + * @author :lyh
  882 + * @method :post
  883 + * @time :2024/6/26 10:46
  884 + */
  885 +function ip_to_unique_string($ip) {
  886 + // 将IP地址转换为数值表示
  887 + $ip_number = ip2long($ip);
  888 + // 使用哈希函数生成唯一数值
  889 + $hash = hash('sha256', $ip_number, false);
  890 + $hash_number = hexdec(substr($hash, 0, 15)); // 取前15位作为大整数
  891 + // 将哈希值转换为Base62编码
  892 + $unique_string = base62_encode($hash_number);
  893 + // 确保唯一字符串为6位,如果不足则补齐,超出则截取前6位
  894 + $unique_string = str_pad($unique_string, 6, '0', STR_PAD_LEFT);
  895 + $unique_string = substr($unique_string, 0, 6);
  896 + return $unique_string;
  897 +}
  898 +
  899 +function base62_encode($num) {
  900 + $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  901 + $base = strlen($characters);
  902 + $result = '';
  903 + while ($num > 0) {
  904 + $result = $characters[$num % $base] . $result;
  905 + $num = intval($num / $base);
  906 + }
  907 + return $result;
  908 +}
  909 +
  910 +
@@ -87,14 +87,18 @@ class ServersController extends BaseController @@ -87,14 +87,18 @@ class ServersController extends BaseController
87 'total'=>'required', 87 'total'=>'required',
88 'account'=>'required', 88 'account'=>'required',
89 'password'=>'required', 89 'password'=>'required',
90 - 'port'=>'required' 90 + 'port'=>'required',
  91 + 'ip_total'=>'required',
  92 + 'domain'=>'required'
91 ],[ 93 ],[
92 'server_name.required' => '服务器名称server_name不能为空', 94 'server_name.required' => '服务器名称server_name不能为空',
93 'service_type.required' => '服务器类型不能为空', 95 'service_type.required' => '服务器类型不能为空',
94 'total.required' => '总数不能为空', 96 'total.required' => '总数不能为空',
95 'account.required' => '账号不能为空', 97 'account.required' => '账号不能为空',
96 'password.required' => '密码不能为空', 98 'password.required' => '密码不能为空',
97 - 'port.required' => '端口不能为空' 99 + 'port.required' => '端口不能为空',
  100 + 'ip_total.required' => 'ip使用數量不能为空',
  101 + 'domain.required' => '初始域名不能为空',
98 ]); 102 ]);
99 $data = $serversLogic->saveServers(); 103 $data = $serversLogic->saveServers();
100 $this->response('success',Code::SUCCESS,$data); 104 $this->response('success',Code::SUCCESS,$data);
@@ -12,6 +12,7 @@ namespace App\Http\Controllers\Aside\Devops; @@ -12,6 +12,7 @@ namespace App\Http\Controllers\Aside\Devops;
12 use App\Enums\Common\Code; 12 use App\Enums\Common\Code;
13 use App\Http\Controllers\Aside\BaseController; 13 use App\Http\Controllers\Aside\BaseController;
14 use App\Http\Logic\Aside\Devops\ServersIpLogic; 14 use App\Http\Logic\Aside\Devops\ServersIpLogic;
  15 +use App\Models\Devops\Servers;
15 use App\Models\Devops\ServersIp as ServersIpModel; 16 use App\Models\Devops\ServersIp as ServersIpModel;
16 use App\Models\Project\Project; 17 use App\Models\Project\Project;
17 18
@@ -31,8 +32,13 @@ class ServersIpController extends BaseController @@ -31,8 +32,13 @@ class ServersIpController extends BaseController
31 ],[ 32 ],[
32 'servers_id.required' => '服务器servers_id不能为空' 33 'servers_id.required' => '服务器servers_id不能为空'
33 ]); 34 ]);
  35 + $serverModel = new Servers();
  36 + $info = $serverModel->read(['id'=>$this->param['servers_id']]);
  37 + if($info === false){
  38 + $this->response('當前服務器不存在',Code::SERVER_ERROR);
  39 + }
34 $serversIpModel = new ServersIpModel(); 40 $serversIpModel = new ServersIpModel();
35 - $this->map['total'] = ['<',Project::SERVER_NUM]; 41 + $this->map['total'] = ['<',$info['ip_num']];
36 $data = $serversIpModel->list($this->map); 42 $data = $serversIpModel->list($this->map);
37 $this->response('success',Code::SUCCESS,$data); 43 $this->response('success',Code::SUCCESS,$data);
38 } 44 }
@@ -103,10 +109,10 @@ class ServersIpController extends BaseController @@ -103,10 +109,10 @@ class ServersIpController extends BaseController
103 */ 109 */
104 public function batchSave(ServersIpLogic $serversIpLogic){ 110 public function batchSave(ServersIpLogic $serversIpLogic){
105 $this->request->validate([ 111 $this->request->validate([
106 - 'data'=>'required', 112 + 'ip'=>'required',
107 'servers_id'=>'required', 113 'servers_id'=>'required',
108 ],[ 114 ],[
109 - 'data.required' => 'data集合不能为空', 115 + 'ip.required' => 'data集合不能为空',
110 'servers_id.required' => '服务器servers_id不能为空', 116 'servers_id.required' => '服务器servers_id不能为空',
111 ]); 117 ]);
112 $data = $serversIpLogic->batchSaveServersIp(); 118 $data = $serversIpLogic->batchSaveServersIp();
@@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
10 namespace App\Http\Logic\Aside\Devops; 10 namespace App\Http\Logic\Aside\Devops;
11 11
12 use App\Http\Logic\Aside\BaseLogic; 12 use App\Http\Logic\Aside\BaseLogic;
  13 +use App\Models\Devops\Servers;
13 use App\Models\Devops\ServersIp; 14 use App\Models\Devops\ServersIp;
14 15
15 class ServersIpLogic extends BaseLogic 16 class ServersIpLogic extends BaseLogic
@@ -32,6 +33,11 @@ class ServersIpLogic extends BaseLogic @@ -32,6 +33,11 @@ class ServersIpLogic extends BaseLogic
32 * @time :2024/6/24 17:28 33 * @time :2024/6/24 17:28
33 */ 34 */
34 public function saveServersIp(){ 35 public function saveServersIp(){
  36 + //验证域名是否唯一
  37 + $info = $this->model->read(['domain'=>$this->param['domain']]);
  38 + if($info !== false){
  39 + $this->fail('当前初始域名已存在');
  40 + }
35 if(isset($this->param['id']) && !empty($this->param['id'])){ 41 if(isset($this->param['id']) && !empty($this->param['id'])){
36 $id = $this->param['id']; 42 $id = $this->param['id'];
37 $this->model->edit($this->param,['id'=>$this->param['id']]); 43 $this->model->edit($this->param,['id'=>$this->param['id']]);
@@ -49,17 +55,23 @@ class ServersIpLogic extends BaseLogic @@ -49,17 +55,23 @@ class ServersIpLogic extends BaseLogic
49 * @time :2024/6/24 17:25 55 * @time :2024/6/24 17:25
50 */ 56 */
51 public function batchSaveServersIp(){ 57 public function batchSaveServersIp(){
52 - $data = [];  
53 - foreach ($this->param['data'] as $v){  
54 - if(empty($v['ip']) || empty($v['domain'])){ 58 + //獲取初始域名
  59 + $serverModel = new Servers();
  60 + $info = $serverModel->read(['id'=>$this->param['servers_id']]);
  61 + if($info === false){
  62 + $this->fail('當前服務器數據不存在');
  63 + }
  64 + foreach ($this->param['ip'] as $v){
  65 + if(empty($v)){
55 continue; 66 continue;
56 } 67 }
57 - $data[] = [  
58 - 'ip'=>$v['ip'],  
59 - 'domain'=>$v['domain'], 68 + $param = [
  69 + 'ip'=>$v,
  70 + 'domain'=>ip_to_unique_string($v).'.'.$info['domain'],
60 'servers_id'=>$this->param['servers_id'] 71 'servers_id'=>$this->param['servers_id']
61 ]; 72 ];
  73 + $this->model->addReturnId($param);
62 } 74 }
63 - return $this->addReturnId($data); 75 + return $this->success();
64 } 76 }
65 } 77 }
@@ -17,8 +17,6 @@ class Project extends Base @@ -17,8 +17,6 @@ class Project extends Base
17 protected $table = 'gl_project'; 17 protected $table = 'gl_project';
18 18
19 const DATABASE_NAME_FIX = 'gl_data_'; 19 const DATABASE_NAME_FIX = 'gl_data_';
20 -  
21 - const SERVER_NUM = 5;//服务器使用数量  
22 const CUSTOMIZED_ONE = 1;//定制项目 20 const CUSTOMIZED_ONE = 1;//定制项目
23 const DEMO_PROJECT_ID = 1; 21 const DEMO_PROJECT_ID = 1;
24 22