作者 刘锟

update

... ... @@ -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('文件生成失败,请重试');
... ...