作者 刘锟

合并分支 'akun' 到 'master'

Akun



查看合并请求 !978
@@ -6,12 +6,9 @@ use App\Helper\Arr; @@ -6,12 +6,9 @@ use App\Helper\Arr;
6 use App\Models\Com\Notify; 6 use App\Models\Com\Notify;
7 use App\Models\Devops\ServerConfig; 7 use App\Models\Devops\ServerConfig;
8 use App\Models\Devops\ServersIp; 8 use App\Models\Devops\ServersIp;
9 -use App\Models\Domain\DomainCreateTask;  
10 use App\Models\Domain\DomainInfo; 9 use App\Models\Domain\DomainInfo;
11 -use App\Models\Product\Keyword;  
12 use App\Models\Product\KeywordRelated; 10 use App\Models\Product\KeywordRelated;
13 use App\Models\Product\Product; 11 use App\Models\Product\Product;
14 -use App\Models\Project\DeployBuild;  
15 use App\Models\Project\Project; 12 use App\Models\Project\Project;
16 use App\Services\BatchExportService; 13 use App\Services\BatchExportService;
17 use App\Services\ProjectServer; 14 use App\Services\ProjectServer;
@@ -35,39 +32,10 @@ class Temp extends Command @@ -35,39 +32,10 @@ class Temp extends Command
35 32
36 public function handle() 33 public function handle()
37 { 34 {
38 - $this->create_server_update_page();  
39 -// $servers_id = 14;  
40 -//  
41 -// $arr = [  
42 -// '173.245.87.74',  
43 -// '173.245.87.75',  
44 -// '173.245.87.76',  
45 -// '173.245.87.77',  
46 -// '173.245.87.78',  
47 -// ];  
48 -//  
49 -// $ip1 = '50.117.43.';  
50 -//  
51 -// for ($i = 2; $i <= 254; $i++) {  
52 -// $arr[] = $ip1 . $i;  
53 -// }  
54 -//  
55 -// $ip2 = '50.117.118.';  
56 -//  
57 -// for ($j = 2; $j <= 254; $j++) {  
58 -// $arr[] = $ip2 . $j;  
59 -// }  
60 -//  
61 -// $server_ips = ServersIp::where('servers_id', $servers_id)->get();  
62 -//  
63 -// foreach ($server_ips as $k => $item) {  
64 -// $item->ip = $arr[$k];  
65 -// $item->save();  
66 -// }  
67 -//  
68 -// $this->output('success'); 35 + $this->check_zb_complete_project_site();
69 } 36 }
70 37
  38 +
71 /** 39 /**
72 * 创建指定服务器所有项目主站生成任务 40 * 创建指定服务器所有项目主站生成任务
73 * @author Akun 41 * @author Akun
@@ -128,14 +96,14 @@ class Temp extends Command @@ -128,14 +96,14 @@ class Temp extends Command
128 } 96 }
129 97
130 /** 98 /**
131 - * 转移灾备服务器后,判断项目是否正常访问 99 + * 判断指定服务器项目是否正常访问
132 * @author Akun 100 * @author Akun
133 * @date 2024/12/11 10:15 101 * @date 2024/12/11 10:15
134 */ 102 */
135 public function check_zb_complete_project_site() 103 public function check_zb_complete_project_site()
136 { 104 {
137 - $server_id = 15;  
138 - $server_name = '美服1'; 105 + $server_id = 14;
  106 + $server_name = '美服2';
139 107
140 $server_ip_model = new ServersIp(); 108 $server_ip_model = new ServersIp();
141 109
@@ -156,7 +124,7 @@ class Temp extends Command @@ -156,7 +124,7 @@ class Temp extends Command
156 $check = dns_get_record($domain, DNS_A); 124 $check = dns_get_record($domain, DNS_A);
157 $ip = $check[0]['ip'] ?? ''; 125 $ip = $check[0]['ip'] ?? '';
158 $host = $check[0]['host'] ?? ''; 126 $host = $check[0]['host'] ?? '';
159 - $code = check_curl_status($domain); 127 + $code = check_curl_status('https://' . $domain);
160 $data[] = [ 128 $data[] = [
161 $value->id, 129 $value->id,
162 $value->title, 130 $value->title,
@@ -180,145 +148,6 @@ class Temp extends Command @@ -180,145 +148,6 @@ class Temp extends Command
180 } 148 }
181 } 149 }
182 150
183 - /**  
184 - * 检查服务器上没有解析cname的项目  
185 - * @author Akun  
186 - * @date 2024/12/11 10:15  
187 - */  
188 - public function check_no_cname_projects()  
189 - {  
190 - $server_id = 15;  
191 - $server_name = '美服1';  
192 -  
193 - $server_ip_model = new ServersIp();  
194 -  
195 - $server_ip_ids = $server_ip_model->where('servers_id', $server_id)->get()->pluck('id')->toArray();  
196 -  
197 - $project_list = Project::select(['id', 'serve_id', 'title'])->whereIn('serve_id', $server_ip_ids)->get();  
198 -  
199 - $domain_model = new DomainInfo();  
200 - $data = [];  
201 - foreach ($project_list as $value) {  
202 - $domain_info = $domain_model->read(['project_id' => $value->id, 'status' => 1], ['id', 'domain']);  
203 - if (!$domain_info) {  
204 - //过滤未绑定正式域名的项目  
205 - continue;  
206 - }  
207 - $domain = $domain_info['domain'];  
208 -  
209 - $check = dns_get_record($domain, DNS_A);  
210 - $ip = $check[0]['ip'] ?? '';  
211 - $host = $check[0]['host'] ?? '';  
212 - if (strpos($host, 'globalso.com') === false) {  
213 - $data[] = [  
214 - $value->id,  
215 - $value->title,  
216 - $domain,  
217 - $ip  
218 - ];  
219 - }  
220 - }  
221 - $map = ['项目id', '名称', '域名', '解析IP'];  
222 - if ($data) {  
223 - $table = new BatchExportService($server_name . '没有解析cname的项目');  
224 - $file = $table->head($map)->data($data)->save();  
225 - if (!$file) {  
226 - $this->output('文件生成失败,请重试');  
227 - } else {  
228 - $this->output('export success');  
229 - }  
230 - } else {  
231 - $this->output('no data');  
232 - }  
233 - }  
234 -  
235 - /**  
236 - * 伍欣组推广项目:开启AMP站点,首页不强制跳转,批量生成AMP站点页面  
237 - * @author Akun  
238 - * @date 2024/12/10 10:43  
239 - */  
240 - public function wx_tg_projects()  
241 - {  
242 - //获取所有组内推广项目  
243 - $leader_mid = 16;  
244 - $project_ids = DeployBuild::where('leader_mid', $leader_mid)->pluck('project_id')->toArray();  
245 - $project_list = Project::where('type', 2)->whereIn('id', $project_ids)->get();  
246 -  
247 - $task_model = new DomainCreateTask();  
248 - foreach ($project_list as $project) {  
249 - $project_id = $project->id;  
250 -  
251 - //获取项目域名情况  
252 - $domain_info = DomainInfo::where('project_id', $project_id)->where('status', 1)->first();  
253 - if (!$domain_info) {  
254 - $this->output('项目id:' . $project_id . ' | 未绑定正式域名');  
255 - continue;  
256 - }  
257 - $domain_id = $domain_info->id;  
258 - $domain = $domain_info->domain;  
259 -  
260 - //获取项目所在服务器  
261 - $serve_ip_info = ServersIp::select(['id', 'ip', 'domain', 'servers_id'])->where('id', $project->serve_id)->first()->toArray();  
262 - if (!$serve_ip_info) {  
263 - $this->output('项目id:' . $project_id . ' | 未查询到服务器数据');  
264 - continue;  
265 - }  
266 - $servers_id = $serve_ip_info['servers_id'];  
267 -  
268 - if ($servers_id == ServerConfig::SELF_SITE_ID) {  
269 - $this->output('项目id:' . $project_id . ' | 自建站项目过滤');  
270 - continue;  
271 - }  
272 -  
273 - if ($servers_id == ServerConfig::SELF_TEST_ID) {  
274 - $this->output('项目id:' . $project_id . ' | 测试项目过滤');  
275 - continue;  
276 - }  
277 -  
278 - if (!check_domain_record($domain_info['domain'], $serve_ip_info)) {  
279 - $this->output('项目id:' . $project_id . ', domain:' . $domain . ' | 未解析到目标服务器');  
280 - continue;  
281 - }  
282 -  
283 - //开启AMP站点  
284 - if ($domain_info->amp_status == 0) {  
285 - $domain_info->amp_status = 1;  
286 - $domain_info->amp_type = 1;  
287 - }  
288 - //首页不强制跳转  
289 - $domain_info->is_redirect = 0;  
290 - $domain_info->save();  
291 -  
292 - //创建主站建站任务  
293 - $task_model->add([  
294 - 'server_id' => $servers_id,  
295 - 'project_id' => $project_id,  
296 - 'domain_id' => $domain_id,  
297 - 'type' => DomainCreateTask::TYPE_MAIN  
298 - ]);  
299 -  
300 - //创建AMP站建站任务  
301 - $task_model->add([  
302 - 'server_id' => $servers_id,  
303 - 'project_id' => $project_id,  
304 - 'domain_id' => $domain_id,  
305 - 'type' => DomainCreateTask::TYPE_AMP  
306 - ]);  
307 -  
308 - //请求对应C端页面更新接口  
309 - $c_url = 'https://' . $domain . '/api/update_page/';  
310 - $c_params = [  
311 - 'project_id' => $project_id,  
312 - 'type' => 3  
313 - ];  
314 - $re = http_post($c_url, json_encode($c_params), [], true);  
315 - if (isset($re['status']) && $re['status'] == 200) {  
316 - $this->output($c_url . ' | 请求成功');  
317 - } else {  
318 - $this->output($c_url . ' | ' . ($re['message'] ?? '未返回失败原因'));  
319 - }  
320 - }  
321 - }  
322 151
323 /** 152 /**
324 * 关联所有项目关键词 153 * 关联所有项目关键词
@@ -347,88 +176,60 @@ class Temp extends Command @@ -347,88 +176,60 @@ class Temp extends Command
347 } 176 }
348 177
349 /** 178 /**
350 - * 关键词首字母 179 + * 获取指定服务器所有项目
351 * @author Akun 180 * @author Akun
352 - * @date 2024/10/30 15:37 181 + * @date 2024/09/30 17:01
353 */ 182 */
354 - public function keywords_first_word() 183 + public function get_all_projects_by_server()
355 { 184 {
356 - $projects = Project::select(['id'])->orderBy('id', 'asc')->get();  
357 - foreach ($projects as $project) {  
358 - ProjectServer::useProject($project->id); 185 + $server_id = 1;
359 186
360 - //处理关键词首字母  
361 - try {  
362 - Keyword::select(['id', 'title', 'first_word'])->chunk(1000, function ($query) {  
363 - foreach ($query as $item) {  
364 - if ($item->first_word === null) {  
365 - $item->first_word = $this->getTitleFirstLetter($item->title);  
366 - $item->save();  
367 - }  
368 - }  
369 - });  
370 - } catch (\Exception $e) {  
371 - $this->output($e->getMessage());  
372 - continue;  
373 - } 187 + $server_ip_model = new ServersIp();
374 188
  189 + $server_ip_ids = $server_ip_model->where('servers_id', $server_id)->get()->pluck('id')->toArray();
375 190
376 - $this->output('ID:' . $project->id . ',success');  
377 - } 191 + $project_list = Project::select(['id', 'serve_id', 'title'])->whereIn('serve_id', $server_ip_ids)->get();
  192 +
  193 + $domain_model = new DomainInfo();
  194 + $data = [];
  195 + foreach ($project_list as $value) {
  196 + $domain_info = $domain_model->read(['project_id' => $value->id, 'status' => 1], ['id', 'domain']);
  197 + if (!$domain_info) {
  198 + //过滤未绑定正式域名的项目
  199 + continue;
378 } 200 }
  201 + $domain = $domain_info['domain'];
379 202
380 - protected function getTitleFirstLetter($title)  
381 - {  
382 - $first = mb_strtolower(mb_substr($title, 0, 1, 'utf-8'), 'utf-8');  
383 - if (in_array($first, ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"])) {  
384 - $firstLetter = 0;  
385 - } else {  
386 - if (in_array($first, ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'])) {  
387 - $rule = [  
388 - "a" => 1,  
389 - "b" => 2,  
390 - "c" => 3,  
391 - "d" => 4,  
392 - "e" => 5,  
393 - "f" => 6,  
394 - "g" => 7,  
395 - "h" => 8,  
396 - "i" => 9,  
397 - "j" => 10,  
398 - "k" => 11,  
399 - "l" => 12,  
400 - "m" => 13,  
401 - "n" => 14,  
402 - "o" => 15,  
403 - "p" => 16,  
404 - "q" => 17,  
405 - "r" => 18,  
406 - "s" => 19,  
407 - "t" => 20,  
408 - "u" => 21,  
409 - "v" => 22,  
410 - "w" => 23,  
411 - "x" => 24,  
412 - "y" => 25,  
413 - "z" => 26, 203 + $data[] = [
  204 + $value->id,
  205 + $value->title,
  206 + $domain
414 ]; 207 ];
415 - $firstLetter = $rule[$first]; 208 + }
  209 + $map = ['项目id', '名称', '域名'];
  210 + if ($data) {
  211 + $table = new BatchExportService("240云服务器项目");
  212 + $file = $table->head($map)->data($data)->save();
  213 + if (!$file) {
  214 + $this->output('文件生成失败,请重试');
416 } else { 215 } else {
417 - $firstLetter = 27; 216 + $this->output('export success');
418 } 217 }
  218 + } else {
  219 + $this->output('no data');
419 } 220 }
420 - return $firstLetter;  
421 } 221 }
422 222
423 223
424 /** 224 /**
425 - * 获取指定服务器所有项目 225 + * 检查服务器上没有解析cname的项目
426 * @author Akun 226 * @author Akun
427 - * @date 2024/09/30 17:01 227 + * @date 2024/12/11 10:15
428 */ 228 */
429 - public function get_all_projects_by_server() 229 + public function check_no_cname_projects()
430 { 230 {
431 - $server_id = 1; 231 + $server_id = 15;
  232 + $server_name = '美服1';
432 233
433 $server_ip_model = new ServersIp(); 234 $server_ip_model = new ServersIp();
434 235
@@ -446,15 +247,21 @@ class Temp extends Command @@ -446,15 +247,21 @@ class Temp extends Command
446 } 247 }
447 $domain = $domain_info['domain']; 248 $domain = $domain_info['domain'];
448 249
  250 + $check = dns_get_record($domain, DNS_A);
  251 + $ip = $check[0]['ip'] ?? '';
  252 + $host = $check[0]['host'] ?? '';
  253 + if (strpos($host, 'globalso.com') === false) {
449 $data[] = [ 254 $data[] = [
450 $value->id, 255 $value->id,
451 $value->title, 256 $value->title,
452 - $domain 257 + $domain,
  258 + $ip
453 ]; 259 ];
454 } 260 }
455 - $map = ['项目id', '名称', '域名']; 261 + }
  262 + $map = ['项目id', '名称', '域名', '解析IP'];
456 if ($data) { 263 if ($data) {
457 - $table = new BatchExportService("240云服务器项目"); 264 + $table = new BatchExportService($server_name . '没有解析cname的项目');
458 $file = $table->head($map)->data($data)->save(); 265 $file = $table->head($map)->data($data)->save();
459 if (!$file) { 266 if (!$file) {
460 $this->output('文件生成失败,请重试'); 267 $this->output('文件生成失败,请重试');