|
...
|
...
|
@@ -6,12 +6,9 @@ use App\Helper\Arr; |
|
|
|
use App\Models\Com\Notify;
|
|
|
|
use App\Models\Devops\ServerConfig;
|
|
|
|
use App\Models\Devops\ServersIp;
|
|
|
|
use App\Models\Domain\DomainCreateTask;
|
|
|
|
use App\Models\Domain\DomainInfo;
|
|
|
|
use App\Models\Product\Keyword;
|
|
|
|
use App\Models\Product\KeywordRelated;
|
|
|
|
use App\Models\Product\Product;
|
|
|
|
use App\Models\Project\DeployBuild;
|
|
|
|
use App\Models\Project\Project;
|
|
|
|
use App\Services\BatchExportService;
|
|
|
|
use App\Services\ProjectServer;
|
|
...
|
...
|
@@ -35,39 +32,10 @@ class Temp extends Command |
|
|
|
|
|
|
|
public function handle()
|
|
|
|
{
|
|
|
|
$this->create_server_update_page();
|
|
|
|
// $servers_id = 14;
|
|
|
|
//
|
|
|
|
// $arr = [
|
|
|
|
// '173.245.87.74',
|
|
|
|
// '173.245.87.75',
|
|
|
|
// '173.245.87.76',
|
|
|
|
// '173.245.87.77',
|
|
|
|
// '173.245.87.78',
|
|
|
|
// ];
|
|
|
|
//
|
|
|
|
// $ip1 = '50.117.43.';
|
|
|
|
//
|
|
|
|
// for ($i = 2; $i <= 254; $i++) {
|
|
|
|
// $arr[] = $ip1 . $i;
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// $ip2 = '50.117.118.';
|
|
|
|
//
|
|
|
|
// for ($j = 2; $j <= 254; $j++) {
|
|
|
|
// $arr[] = $ip2 . $j;
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// $server_ips = ServersIp::where('servers_id', $servers_id)->get();
|
|
|
|
//
|
|
|
|
// foreach ($server_ips as $k => $item) {
|
|
|
|
// $item->ip = $arr[$k];
|
|
|
|
// $item->save();
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// $this->output('success');
|
|
|
|
$this->check_zb_complete_project_site();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 创建指定服务器所有项目主站生成任务
|
|
|
|
* @author Akun
|
|
...
|
...
|
@@ -128,14 +96,14 @@ class Temp extends Command |
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 转移灾备服务器后,判断项目是否正常访问
|
|
|
|
* 判断指定服务器项目是否正常访问
|
|
|
|
* @author Akun
|
|
|
|
* @date 2024/12/11 10:15
|
|
|
|
*/
|
|
|
|
public function check_zb_complete_project_site()
|
|
|
|
{
|
|
|
|
$server_id = 15;
|
|
|
|
$server_name = '美服1';
|
|
|
|
$server_id = 14;
|
|
|
|
$server_name = '美服2';
|
|
|
|
|
|
|
|
$server_ip_model = new ServersIp();
|
|
|
|
|
|
...
|
...
|
@@ -156,7 +124,7 @@ class Temp extends Command |
|
|
|
$check = dns_get_record($domain, DNS_A);
|
|
|
|
$ip = $check[0]['ip'] ?? '';
|
|
|
|
$host = $check[0]['host'] ?? '';
|
|
|
|
$code = check_curl_status($domain);
|
|
|
|
$code = check_curl_status('https://' . $domain);
|
|
|
|
$data[] = [
|
|
|
|
$value->id,
|
|
|
|
$value->title,
|
|
...
|
...
|
@@ -180,145 +148,6 @@ class Temp extends Command |
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 检查服务器上没有解析cname的项目
|
|
|
|
* @author Akun
|
|
|
|
* @date 2024/12/11 10:15
|
|
|
|
*/
|
|
|
|
public function check_no_cname_projects()
|
|
|
|
{
|
|
|
|
$server_id = 15;
|
|
|
|
$server_name = '美服1';
|
|
|
|
|
|
|
|
$server_ip_model = new ServersIp();
|
|
|
|
|
|
|
|
$server_ip_ids = $server_ip_model->where('servers_id', $server_id)->get()->pluck('id')->toArray();
|
|
|
|
|
|
|
|
$project_list = Project::select(['id', 'serve_id', 'title'])->whereIn('serve_id', $server_ip_ids)->get();
|
|
|
|
|
|
|
|
$domain_model = new DomainInfo();
|
|
|
|
$data = [];
|
|
|
|
foreach ($project_list as $value) {
|
|
|
|
$domain_info = $domain_model->read(['project_id' => $value->id, 'status' => 1], ['id', 'domain']);
|
|
|
|
if (!$domain_info) {
|
|
|
|
//过滤未绑定正式域名的项目
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
$domain = $domain_info['domain'];
|
|
|
|
|
|
|
|
$check = dns_get_record($domain, DNS_A);
|
|
|
|
$ip = $check[0]['ip'] ?? '';
|
|
|
|
$host = $check[0]['host'] ?? '';
|
|
|
|
if (strpos($host, 'globalso.com') === false) {
|
|
|
|
$data[] = [
|
|
|
|
$value->id,
|
|
|
|
$value->title,
|
|
|
|
$domain,
|
|
|
|
$ip
|
|
|
|
];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$map = ['项目id', '名称', '域名', '解析IP'];
|
|
|
|
if ($data) {
|
|
|
|
$table = new BatchExportService($server_name . '没有解析cname的项目');
|
|
|
|
$file = $table->head($map)->data($data)->save();
|
|
|
|
if (!$file) {
|
|
|
|
$this->output('文件生成失败,请重试');
|
|
|
|
} else {
|
|
|
|
$this->output('export success');
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
$this->output('no data');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 伍欣组推广项目:开启AMP站点,首页不强制跳转,批量生成AMP站点页面
|
|
|
|
* @author Akun
|
|
|
|
* @date 2024/12/10 10:43
|
|
|
|
*/
|
|
|
|
public function wx_tg_projects()
|
|
|
|
{
|
|
|
|
//获取所有组内推广项目
|
|
|
|
$leader_mid = 16;
|
|
|
|
$project_ids = DeployBuild::where('leader_mid', $leader_mid)->pluck('project_id')->toArray();
|
|
|
|
$project_list = Project::where('type', 2)->whereIn('id', $project_ids)->get();
|
|
|
|
|
|
|
|
$task_model = new DomainCreateTask();
|
|
|
|
foreach ($project_list as $project) {
|
|
|
|
$project_id = $project->id;
|
|
|
|
|
|
|
|
//获取项目域名情况
|
|
|
|
$domain_info = DomainInfo::where('project_id', $project_id)->where('status', 1)->first();
|
|
|
|
if (!$domain_info) {
|
|
|
|
$this->output('项目id:' . $project_id . ' | 未绑定正式域名');
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
$domain_id = $domain_info->id;
|
|
|
|
$domain = $domain_info->domain;
|
|
|
|
|
|
|
|
//获取项目所在服务器
|
|
|
|
$serve_ip_info = ServersIp::select(['id', 'ip', 'domain', 'servers_id'])->where('id', $project->serve_id)->first()->toArray();
|
|
|
|
if (!$serve_ip_info) {
|
|
|
|
$this->output('项目id:' . $project_id . ' | 未查询到服务器数据');
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
$servers_id = $serve_ip_info['servers_id'];
|
|
|
|
|
|
|
|
if ($servers_id == ServerConfig::SELF_SITE_ID) {
|
|
|
|
$this->output('项目id:' . $project_id . ' | 自建站项目过滤');
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($servers_id == ServerConfig::SELF_TEST_ID) {
|
|
|
|
$this->output('项目id:' . $project_id . ' | 测试项目过滤');
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!check_domain_record($domain_info['domain'], $serve_ip_info)) {
|
|
|
|
$this->output('项目id:' . $project_id . ', domain:' . $domain . ' | 未解析到目标服务器');
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
//开启AMP站点
|
|
|
|
if ($domain_info->amp_status == 0) {
|
|
|
|
$domain_info->amp_status = 1;
|
|
|
|
$domain_info->amp_type = 1;
|
|
|
|
}
|
|
|
|
//首页不强制跳转
|
|
|
|
$domain_info->is_redirect = 0;
|
|
|
|
$domain_info->save();
|
|
|
|
|
|
|
|
//创建主站建站任务
|
|
|
|
$task_model->add([
|
|
|
|
'server_id' => $servers_id,
|
|
|
|
'project_id' => $project_id,
|
|
|
|
'domain_id' => $domain_id,
|
|
|
|
'type' => DomainCreateTask::TYPE_MAIN
|
|
|
|
]);
|
|
|
|
|
|
|
|
//创建AMP站建站任务
|
|
|
|
$task_model->add([
|
|
|
|
'server_id' => $servers_id,
|
|
|
|
'project_id' => $project_id,
|
|
|
|
'domain_id' => $domain_id,
|
|
|
|
'type' => DomainCreateTask::TYPE_AMP
|
|
|
|
]);
|
|
|
|
|
|
|
|
//请求对应C端页面更新接口
|
|
|
|
$c_url = 'https://' . $domain . '/api/update_page/';
|
|
|
|
$c_params = [
|
|
|
|
'project_id' => $project_id,
|
|
|
|
'type' => 3
|
|
|
|
];
|
|
|
|
$re = http_post($c_url, json_encode($c_params), [], true);
|
|
|
|
if (isset($re['status']) && $re['status'] == 200) {
|
|
|
|
$this->output($c_url . ' | 请求成功');
|
|
|
|
} else {
|
|
|
|
$this->output($c_url . ' | ' . ($re['message'] ?? '未返回失败原因'));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 关联所有项目关键词
|
|
...
|
...
|
@@ -347,88 +176,60 @@ class Temp extends Command |
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 关键词首字母
|
|
|
|
* 获取指定服务器所有项目
|
|
|
|
* @author Akun
|
|
|
|
* @date 2024/10/30 15:37
|
|
|
|
* @date 2024/09/30 17:01
|
|
|
|
*/
|
|
|
|
public function keywords_first_word()
|
|
|
|
public function get_all_projects_by_server()
|
|
|
|
{
|
|
|
|
$projects = Project::select(['id'])->orderBy('id', 'asc')->get();
|
|
|
|
foreach ($projects as $project) {
|
|
|
|
ProjectServer::useProject($project->id);
|
|
|
|
$server_id = 1;
|
|
|
|
|
|
|
|
//处理关键词首字母
|
|
|
|
try {
|
|
|
|
Keyword::select(['id', 'title', 'first_word'])->chunk(1000, function ($query) {
|
|
|
|
foreach ($query as $item) {
|
|
|
|
if ($item->first_word === null) {
|
|
|
|
$item->first_word = $this->getTitleFirstLetter($item->title);
|
|
|
|
$item->save();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
$this->output($e->getMessage());
|
|
|
|
$server_ip_model = new ServersIp();
|
|
|
|
|
|
|
|
$server_ip_ids = $server_ip_model->where('servers_id', $server_id)->get()->pluck('id')->toArray();
|
|
|
|
|
|
|
|
$project_list = Project::select(['id', 'serve_id', 'title'])->whereIn('serve_id', $server_ip_ids)->get();
|
|
|
|
|
|
|
|
$domain_model = new DomainInfo();
|
|
|
|
$data = [];
|
|
|
|
foreach ($project_list as $value) {
|
|
|
|
$domain_info = $domain_model->read(['project_id' => $value->id, 'status' => 1], ['id', 'domain']);
|
|
|
|
if (!$domain_info) {
|
|
|
|
//过滤未绑定正式域名的项目
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
$domain = $domain_info['domain'];
|
|
|
|
|
|
|
|
|
|
|
|
$this->output('ID:' . $project->id . ',success');
|
|
|
|
$data[] = [
|
|
|
|
$value->id,
|
|
|
|
$value->title,
|
|
|
|
$domain
|
|
|
|
];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
protected function getTitleFirstLetter($title)
|
|
|
|
{
|
|
|
|
$first = mb_strtolower(mb_substr($title, 0, 1, 'utf-8'), 'utf-8');
|
|
|
|
if (in_array($first, ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"])) {
|
|
|
|
$firstLetter = 0;
|
|
|
|
} else {
|
|
|
|
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'])) {
|
|
|
|
$rule = [
|
|
|
|
"a" => 1,
|
|
|
|
"b" => 2,
|
|
|
|
"c" => 3,
|
|
|
|
"d" => 4,
|
|
|
|
"e" => 5,
|
|
|
|
"f" => 6,
|
|
|
|
"g" => 7,
|
|
|
|
"h" => 8,
|
|
|
|
"i" => 9,
|
|
|
|
"j" => 10,
|
|
|
|
"k" => 11,
|
|
|
|
"l" => 12,
|
|
|
|
"m" => 13,
|
|
|
|
"n" => 14,
|
|
|
|
"o" => 15,
|
|
|
|
"p" => 16,
|
|
|
|
"q" => 17,
|
|
|
|
"r" => 18,
|
|
|
|
"s" => 19,
|
|
|
|
"t" => 20,
|
|
|
|
"u" => 21,
|
|
|
|
"v" => 22,
|
|
|
|
"w" => 23,
|
|
|
|
"x" => 24,
|
|
|
|
"y" => 25,
|
|
|
|
"z" => 26,
|
|
|
|
];
|
|
|
|
$firstLetter = $rule[$first];
|
|
|
|
$map = ['项目id', '名称', '域名'];
|
|
|
|
if ($data) {
|
|
|
|
$table = new BatchExportService("240云服务器项目");
|
|
|
|
$file = $table->head($map)->data($data)->save();
|
|
|
|
if (!$file) {
|
|
|
|
$this->output('文件生成失败,请重试');
|
|
|
|
} else {
|
|
|
|
$firstLetter = 27;
|
|
|
|
$this->output('export success');
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
$this->output('no data');
|
|
|
|
}
|
|
|
|
return $firstLetter;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 获取指定服务器所有项目
|
|
|
|
* 检查服务器上没有解析cname的项目
|
|
|
|
* @author Akun
|
|
|
|
* @date 2024/09/30 17:01
|
|
|
|
* @date 2024/12/11 10:15
|
|
|
|
*/
|
|
|
|
public function get_all_projects_by_server()
|
|
|
|
public function check_no_cname_projects()
|
|
|
|
{
|
|
|
|
$server_id = 1;
|
|
|
|
$server_id = 15;
|
|
|
|
$server_name = '美服1';
|
|
|
|
|
|
|
|
$server_ip_model = new ServersIp();
|
|
|
|
|
|
...
|
...
|
@@ -446,15 +247,21 @@ class Temp extends Command |
|
|
|
}
|
|
|
|
$domain = $domain_info['domain'];
|
|
|
|
|
|
|
|
$data[] = [
|
|
|
|
$value->id,
|
|
|
|
$value->title,
|
|
|
|
$domain
|
|
|
|
];
|
|
|
|
$check = dns_get_record($domain, DNS_A);
|
|
|
|
$ip = $check[0]['ip'] ?? '';
|
|
|
|
$host = $check[0]['host'] ?? '';
|
|
|
|
if (strpos($host, 'globalso.com') === false) {
|
|
|
|
$data[] = [
|
|
|
|
$value->id,
|
|
|
|
$value->title,
|
|
|
|
$domain,
|
|
|
|
$ip
|
|
|
|
];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$map = ['项目id', '名称', '域名'];
|
|
|
|
$map = ['项目id', '名称', '域名', '解析IP'];
|
|
|
|
if ($data) {
|
|
|
|
$table = new BatchExportService("240云服务器项目");
|
|
|
|
$table = new BatchExportService($server_name . '没有解析cname的项目');
|
|
|
|
$file = $table->head($map)->data($data)->save();
|
|
|
|
if (!$file) {
|
|
|
|
$this->output('文件生成失败,请重试');
|
...
|
...
|
|