作者 刘锟

update

@@ -9,10 +9,8 @@ use App\Models\Devops\ServersIp; @@ -9,10 +9,8 @@ use App\Models\Devops\ServersIp;
9 use App\Models\Domain\DomainCreateTask; 9 use App\Models\Domain\DomainCreateTask;
10 use App\Models\Domain\DomainInfo; 10 use App\Models\Domain\DomainInfo;
11 use App\Models\Product\Keyword; 11 use App\Models\Product\Keyword;
12 -use App\Models\Product\KeywordRelated;  
13 -use App\Models\Product\Product; 12 +use App\Models\Project\DeployBuild;
14 use App\Models\Project\Project; 13 use App\Models\Project\Project;
15 -use App\Models\Project\ProjectUpdateTdk;  
16 use App\Models\WebSetting\WebLanguage; 14 use App\Models\WebSetting\WebLanguage;
17 use App\Services\BatchExportService; 15 use App\Services\BatchExportService;
18 use App\Services\ProjectServer; 16 use App\Services\ProjectServer;
@@ -37,9 +35,76 @@ class Temp extends Command @@ -37,9 +35,76 @@ class Temp extends Command
37 35
38 public function handle() 36 public function handle()
39 { 37 {
  38 + $this->domain_rewrite_https();
  39 + }
  40 +
  41 + /**
  42 + * 小语种为二级目录的项目强制跳转https
  43 + * @author Akun
  44 + * @date 2025/03/01 10:48
  45 + */
  46 + public function domain_rewrite_https()
  47 + {
  48 + $domainModel = new DomainInfo();
  49 + $projectModel = new Project();
  50 + $buildModel = new DeployBuild();
  51 + $serverIpModel = new ServersIp();
  52 + $domainCreateTaskModel = new DomainCreateTask();
  53 + $list = $domainModel->select(['id', 'domain', 'project_id'])->where('status', '=', 1)->where('project_id', '>', 0)->get();
  54 + foreach ($list as $v) {
  55 + $project_info = $projectModel->read(['id' => $v['project_id']], ['serve_id']);
  56 + if (!$project_info) {
  57 + continue;
  58 + }
  59 +
  60 + $build_info = $buildModel->read(['project_id' => $v['project_id']], ['linking_format']);
  61 + if (!$build_info) {
  62 + continue;
  63 + }
  64 + if ($build_info['linking_format'] != 1) {
  65 + continue;
  66 + }
  67 +
  68 + $servers_ip_info = $serverIpModel->read(['id' => $project_info['serve_id']], ['servers_id', 'ip', 'domain']);
  69 + if (!$servers_ip_info) {
  70 + continue;
  71 + }
  72 +
  73 + //过滤测试项目域名
  74 + if ($servers_ip_info['servers_id'] == ServerConfig::SELF_TEST_ID) {
  75 + continue;
  76 + }
  77 +
  78 + //过滤自建站项目域名
  79 + if ($servers_ip_info['servers_id'] == ServerConfig::SELF_SITE_ID) {
  80 + continue;
  81 + }
  82 +
  83 + //过滤已解析到别的ip的域名
  84 + if (!check_domain_record($v['domain'], $servers_ip_info)) {
  85 + continue;
  86 + }
  87 +
  88 + //强制跳转https
  89 + $v->is_https = 1;
  90 + $v->save();
  91 +
  92 + //创建更新站点证书任务
  93 + $task_info = $domainCreateTaskModel->read(['type' => DomainCreateTask::TYPE_MAIN, 'domain_id' => $v['id'], 'status' => ['<', DomainCreateTask::STATUS_SUC]]);
  94 + if (!$task_info) {
  95 + $domainCreateTaskModel->add([
  96 + 'server_id' => $servers_ip_info['servers_id'],
  97 + 'project_id' => $v['project_id'],
  98 + 'domain_id' => $v['id'],
  99 + 'type' => DomainCreateTask::TYPE_MAIN
  100 + ]);
  101 + }
40 102
  103 + $this->output($v['id'] . ' , success');
  104 + }
41 } 105 }
42 106
  107 +
43 /** 108 /**
44 * 240服务器上解析cname的项目迁移 109 * 240服务器上解析cname的项目迁移
45 * @author Akun 110 * @author Akun
@@ -128,42 +193,6 @@ class Temp extends Command @@ -128,42 +193,6 @@ class Temp extends Command
128 } 193 }
129 194
130 /** 195 /**
131 - * 2025-02-05 日以来的项目,重写tdk(keyword_title)  
132 - * @author Akun  
133 - * @date 2025/02/15 10:58  
134 - */  
135 - public function product_keyword_rewrite()  
136 - {  
137 - $products = ProjectUpdateTdk::where('created_at', '>=', '2025-02-05 00:00:00')->pluck('project_id')->toArray();  
138 - $products_ids = array_unique($products);  
139 -  
140 - $success_json = file_get_contents(storage_path('logs/lk/success.log'));  
141 - $success = json_decode($success_json, true) ?: [];  
142 -  
143 - foreach ($products_ids as $project_id) {  
144 - if (in_array($project_id, $success)) {  
145 - $this->output($project_id . ' | 已执行,跳过');  
146 - continue;  
147 - }  
148 -  
149 - ProjectServer::useProject($project_id);  
150 - DB::connection('custom_mysql')->table('gl_product_keyword')->update(['keyword_title' => '']);  
151 -  
152 - try {  
153 - ProjectUpdateTdk::add_task($project_id);  
154 - } catch (\Exception $e) {  
155 - $this->output($project_id . ' | ' . $e->getMessage());  
156 - }  
157 -  
158 - DB::disconnect('custom_mysql');  
159 - array_push($success, $project_id);  
160 - file_put_contents(storage_path('logs/lk/success.log'), json_encode($success));  
161 - }  
162 -  
163 - $this->output('success');  
164 - }  
165 -  
166 - /**  
167 * 创建所有站点建站任务 196 * 创建所有站点建站任务
168 * @author Akun 197 * @author Akun
169 * @date 2025/01/27 9:48 198 * @date 2025/01/27 9:48
@@ -386,33 +415,6 @@ class Temp extends Command @@ -386,33 +415,6 @@ class Temp extends Command
386 } 415 }
387 } 416 }
388 417
389 -  
390 - /**  
391 - * 关联所有项目关键词  
392 - * @author Akun  
393 - * @date 2024/11/18 15:07  
394 - */  
395 - public function relation_all_keywords()  
396 - {  
397 - $projects = Project::select(['id'])->orderBy('id', 'asc')->get();  
398 - foreach ($projects as $project) {  
399 - ProjectServer::useProject($project->id);  
400 -  
401 - try {  
402 - Product::select(['id', 'keyword_id'])->chunk(1000, function ($query) {  
403 - foreach ($query as $item) {  
404 - KeywordRelated::saveRelated($item->id, $item->keyword_id);  
405 - }  
406 - });  
407 - } catch (\Exception $e) {  
408 - $this->output($e->getMessage());  
409 - continue;  
410 - }  
411 -  
412 - $this->output('ID:' . $project->id . ',success');  
413 - }  
414 - }  
415 -  
416 /** 418 /**
417 * 获取指定服务器所有项目 419 * 获取指定服务器所有项目
418 * @author Akun 420 * @author Akun
@@ -692,66 +694,6 @@ class Temp extends Command @@ -692,66 +694,6 @@ class Temp extends Command
692 } 694 }
693 } 695 }
694 696
695 - /**  
696 - * 创建指定项目聚合页生成任务  
697 - * @author Akun  
698 - * @date 2025/02/11 13:50  
699 - */  
700 - public function create_update_keyword_page()  
701 - {  
702 - $ids_arr = ["46", "83", "91", "150", "190", "206", "219", "221", "232", "233", "238", "287", "290", "299", "319", "321", "353", "356", "388", "389", "456", "457", "475", "491", "518", "535", "554", "600", "624", "650", "728", "732", "783", "807", "835", "881", "896", "913", "947", "1001", "1320", "1336", "1373", "1424", "1442", "1455", "1466", "1505", "1584", "1597", "1617", "1682", "1770", "1816", "1824", "1835", "1860", "1870", "1896", "1913", "1989", "1991", "1992", "2022", "2037", "2059", "2060", "2062", "2104", "2115", "2129", "2131", "2135", "2191", "2204", "2217", "2245", "2257", "2287", "2309", "2313", "2330", "2336", "2337", "2338", "2351", "2391", "2418", "2423", "2435", "2462", "2496", "2504", "2505", "2660", "2768", "2811", "2874", "3157"];  
703 - $project_list = Project::select(['id', 'serve_id'])->whereIn('id', $ids_arr)->get();  
704 -  
705 - $domain_model = new DomainInfo();  
706 - $notify_model = new Notify();  
707 - $server_ip_model = new ServersIp();  
708 -  
709 - foreach ($project_list as $value) {  
710 - $project_id = $value->id;  
711 -  
712 - $domain_info = $domain_model->read(['project_id' => $project_id, 'status' => 1], ['id', 'domain']);  
713 - if (!$domain_info) {  
714 - //过滤未绑定正式域名的项目  
715 - continue;  
716 - }  
717 - $domain = $domain_info['domain'];  
718 -  
719 - //获取项目所在服务器  
720 - $serve_ip_info = $server_ip_model->read(['id' => $value->serve_id], ['domain', 'ip', 'servers_id']);  
721 - if (!$serve_ip_info) {  
722 - $this->output('项目id:' . $project_id . ' | 未查询到服务器数据');  
723 - continue;  
724 - }  
725 -  
726 - if ($serve_ip_info['servers_id'] != ServerConfig::SELF_SITE_ID) {  
727 - if (!check_domain_record($domain, $serve_ip_info)) {  
728 - $this->output('项目id:' . $project_id . ', domain:' . $domain . ' | 未解析到目标服务器');  
729 - continue;  
730 - }  
731 - }  
732 -  
733 -  
734 - $data = [  
735 - 'project_id' => $project_id,  
736 - 'type' => 1,  
737 - 'route' => 4,  
738 - 'server_id' => $serve_ip_info['servers_id'],  
739 - 'status' => ['!=', Notify::STATUS_FINISH_SITEMAP]  
740 - ];  
741 - $notify = $notify_model->read($data, ['id']);  
742 -  
743 - if (!$notify) {  
744 - $data['data'] = Arr::a2s(['domain' => $domain, 'url' => null, 'language' => []]);  
745 - $data['status'] = Notify::STATUS_INIT;  
746 - if ($serve_ip_info['servers_id'] == 2) {  
747 - $data['is_pull_html_zip'] = Notify::IS_PULL_HTML_ZIP_TRUE;  
748 - }  
749 - $notify_model->add($data);  
750 -  
751 - $this->output('项目id:' . $project_id . ', domain:' . $domain . ' | success');  
752 - }  
753 - }  
754 - }  
755 697
756 public function output($msg) 698 public function output($msg)
757 { 699 {