作者 赵彬吉
... ... @@ -90,13 +90,41 @@ class DomainInfo extends Command
}
}
//获取证书有效期并更新
//获取主站证书有效期并更新
$ssl_time = $this->getDomainSslTime($v['domain']);
if ($ssl_time['from'] && $ssl_time['to']) {
$v->certificate_start_time = $ssl_time['from'];
$v->certificate_end_time = $ssl_time['to'];
$v->save();
}
if ($v['amp_status'] == 1) {
$domain_array = parse_url($v['domain']);
$host = $domain_array['host'] ?? $domain_array['path'];
$host_array = explode('.', $host);
if (count($host_array) <= 2) {
array_unshift($host_array, 'm');
} else {
$host_array[0] = 'm';
}
$amp_domain = implode('.', $host_array);
if ($servers_ip_info['servers_id'] != ServerConfig::SELF_SITE_ID) {
//过滤已解析到别的ip的AMP域名
if (!$this->check_cname($amp_domain, $servers_ip_info)) {
Log::channel('analyze_other')->error('AMP域名 [' . $amp_domain . '] 已解析到别的IP');
continue;
}
}
//获取AMP站证书有效期并更新
$amp_ssl_time = $this->getDomainSslTime($amp_domain);
if ($amp_ssl_time['from'] && $amp_ssl_time['to']) {
$v->amp_certificate_start_time = $amp_ssl_time['from'];
$v->amp_certificate_end_time = $amp_ssl_time['to'];
$v->save();
}
}
}
}
... ...
... ... @@ -18,55 +18,60 @@ class EmergencyRecords extends Command
//类型,1受灾,2恢复
$type = $this->argument('type');
try {
//获取服务器的所有可用ip
$server_ip_model = new ServersIp();
$server_ip_list = $server_ip_model->where('servers_id', $server_id)->where('status', 0)->get();
if ($server_ip_list->count() > 0) {
foreach ($server_ip_list as $value) {
if (empty($value->ip) || empty($value->domain)) {
$this->output('ID ' . $value->id . ' 数据错误');
continue;
}
//获取服务器的所有可用ip
$server_ip_model = new ServersIp();
$server_ip_list = $server_ip_model->where('servers_id', $server_id)->where('status', 0)->get();
if ($server_ip_list->count() > 0) {
foreach ($server_ip_list as $value) {
if (empty($value->ip) || empty($value->domain)) {
$this->output('ID ' . $value->id . ' 数据错误');
continue;
}
//获取解析记录
$domain_array = explode('.', $value->domain);
$domain_rr = $domain_array[0];
//获取解析记录
$domain_array = explode('.', $value->domain);
$domain_rr = $domain_array[0];
try {
$record = AlibabaCloudService::describeDomainRecords('globalso.com', $domain_rr);
$record_status_code = $record['statusCode'] ?? 0;
if ($record_status_code != 200) {
$this->output('获取主机记录 ' . $domain_rr . ' 解析数据失败');
continue;
}
$record_detail = $record['body']['DomainRecords']['Record'][0] ?? [];
if (!$record_detail) {
$this->output('主机记录 ' . $domain_rr . ' 解析数据不存在');
continue;
}
//目标ip跟解析记录当前ip一样的数据,不用修改
$target_ip = $type == 1 ? '43.153.1.240' : $value->ip;
if ($target_ip == $record_detail['Value']) {
$this->output('主机记录 ' . $domain_rr . ' 的值已为 ' . $target_ip);
continue;
}
} catch (\Exception $e) {
$this->output('主机记录 ' . $domain_rr . 'error:' . $e->getMessage());
continue;
}
$record_status_code = $record['statusCode'] ?? 0;
if ($record_status_code != 200) {
$this->output('获取主机记录 ' . $domain_rr . ' 解析数据失败');
continue;
}
$record_detail = $record['body']['DomainRecords']['Record'][0] ?? [];
if (!$record_detail) {
$this->output('主机记录 ' . $domain_rr . ' 解析数据不存在');
continue;
}
//修改解析记录
$record_id = $record_detail['RecordId'];
$record_rr = $record_detail['RR'];
$record_type = $record_detail['Type'];
//目标ip跟解析记录当前ip一样的数据,不用修改
$target_ip = $type == 1 ? '43.153.1.240' : $value->ip;
if ($target_ip == $record_detail['Value']) {
$this->output('主机记录 ' . $domain_rr . ' 的值已为 ' . $target_ip);
continue;
}
//修改解析记录
$record_id = $record_detail['RecordId'];
$record_rr = $record_detail['RR'];
$record_type = $record_detail['Type'];
try {
$record_edit = AlibabaCloudService::updateDomainRecord($record_id, $record_rr, $record_type, $target_ip);
$record_edit_status_code = $record_edit['statusCode'] ?? 0;
if ($record_edit_status_code == 200) {
$this->output('修改主机记录 ' . $record_rr . ' 的值为 ' . $target_ip . ' 成功');
} else {
$this->output('修改主机记录 ' . $record_rr . ' 的值为 ' . $target_ip . ' 失败');
}
} catch (\Exception $e) {
$this->output('主机记录 ' . $domain_rr . 'error:' . $e->getMessage());
continue;
}
$record_edit_status_code = $record_edit['statusCode'] ?? 0;
if ($record_edit_status_code == 200) {
$this->output('修改主机记录 ' . $record_rr . ' 的值为 ' . $target_ip . ' 成功');
} else {
$this->output('修改主机记录 ' . $record_rr . ' 的值为 ' . $target_ip . ' 失败');
}
}
} catch (\Exception $e) {
$this->output($e->getMessage());
}
}
... ...
... ... @@ -28,7 +28,7 @@ class RemainDay extends Command
* @var 按上线时间统计
*/
protected $projectId = [
1434,1812,276
1434,1812,276,596
];//需要单独处理的项目
/**
... ...
... ... @@ -166,7 +166,8 @@ class VideoTask extends Command
],
'task_id' => $task_id,
'callback_url' => env('APP_URL') . '/api/video_task_callback',
'is_ytb'=>false
'is_ytb'=>false,
'other_language_subtitle'=>false
];
$result = Http::post('http://216.250.255.116:7866/create_task', $data);
$res_json = json_decode($result,true);
... ...
... ... @@ -161,28 +161,28 @@ class countProject extends Command
if($data[$v]['month_create_project_count'] != 0){
$data[$v]['month_project_online_rate'] = round($data[$v]['month_project_go_online_count'] / $data[$v]['month_create_project_count'],2);//比例
}
$data[$v]['count'] = $projectModel->counts(['delete_status'=>0]);//所有项目总数
$data[$v]['go_online_count'] = $projectModel->counts(['uptime'=>['!=',null],'delete_status'=>0]);//上线项目总数
$data[$v]['promotion_web_count'] = $projectModel->counts(['type'=>3,'delete_status'=>0,'created_at'=>['between',[$start_time,$end_time]]]);//推广项目总数
$data[$v]['create_web_count'] = $projectModel->counts(['type'=>2,'delete_status'=>0,'created_at'=>['between',[$start_time,$end_time]]]);//建站项目总数
$data[$v]['no_go_oline_count'] = $projectModel->counts(['uptime'=>null,'delete_status'=>0,'created_at'=>['between',[$start_time,$end_time]]]);//未上线项目数量
$data[$v]['delete_project_count'] = $projectModel->counts(['delete_status'=>1,'created_at'=>['between',[$start_time,$end_time]]]);//删除
$min_info = $projectModel->select('*')
->selectRaw('DATEDIFF(STR_TO_DATE(uptime, "%Y-%m-%d"), STR_TO_DATE(created_at, "%Y-%m-%d")) AS diff')
->whereNotNull('uptime') // 确保 uptime 字段不为空
->where('created_at','<=',$end_time)
->whereBetween('created_at', [$start_time,$end_time])
->orderByRaw('diff ASC')
->first();
$data[$v]['min_project_count'] = $min_info['diff'];
$max_info = $projectModel->select('*')
->selectRaw('DATEDIFF(STR_TO_DATE(uptime, "%Y-%m-%d"), STR_TO_DATE(created_at, "%Y-%m-%d")) AS diff')
->whereNotNull('uptime') // 确保 uptime 字段不为空
->whereBetween('created_at', [$start_time,$end_time])
->orderByRaw('diff DESC')
->first();
$data[$v]['max_project_count'] = $max_info['diff'];
$data[$v]['average'] = ceil(($max_info['diff'] + $min_info['diff']) / 2);
$data[$v]['count'] = $projectModel->counts(['delete_status'=>0]);//所有项目总数
$data[$v]['go_online_count'] = $projectModel->counts(['uptime'=>['!=',null],'delete_status'=>0]);//上线项目总数
$data[$v]['promotion_web_count'] = $projectModel->counts(['type'=>3,'delete_status'=>0,'created_at'=>['between',[$start_time,$end_time]]]);//推广项目总数
$data[$v]['create_web_count'] = $projectModel->counts(['type'=>2,'delete_status'=>0,'created_at'=>['between',[$start_time,$end_time]]]);//建站项目总数
$data[$v]['no_go_oline_count'] = $projectModel->counts(['uptime'=>null,'delete_status'=>0,'created_at'=>['between',[$start_time,$end_time]]]);//未上线项目数量
$data[$v]['delete_project_count'] = $projectModel->counts(['delete_status'=>1,'created_at'=>['between',[$start_time,$end_time]]]);//删除
$min_info = $projectModel->select('*')
->selectRaw('DATEDIFF(STR_TO_DATE(uptime, "%Y-%m-%d"), STR_TO_DATE(created_at, "%Y-%m-%d")) AS diff')
->whereNotNull('uptime') // 确保 uptime 字段不为空
->where('created_at','<=',$end_time)
->whereBetween('created_at', [$start_time,$end_time])
->orderByRaw('diff ASC')
->first();
$data[$v]['min_project_count'] = $min_info['diff'];
$max_info = $projectModel->select('*')
->selectRaw('DATEDIFF(STR_TO_DATE(uptime, "%Y-%m-%d"), STR_TO_DATE(created_at, "%Y-%m-%d")) AS diff')
->whereNotNull('uptime') // 确保 uptime 字段不为空
->whereBetween('created_at', [$start_time,$end_time])
->orderByRaw('diff DESC')
->first();
$data[$v]['max_project_count'] = $max_info['diff'];
$data[$v]['average'] = ceil(($max_info['diff'] + $min_info['diff']) / 2);
}
return $data;
}
... ...
... ... @@ -68,7 +68,7 @@ class PackDirController extends BaseController
$projectModel = new Project();
$project_info = $projectModel->read(['id' => $this->param['project_id']], ['serve_id']);
if (!$project_info) {
$this->fail('未查询到项目所属服务器信息');
$this->fail('未查询到项目信息');
}
$serverIpModel = new ServersIp();
$server_ip_info = $serverIpModel->read(['id' => $project_info['serve_id']], ['servers_id']);
... ...
... ... @@ -608,6 +608,14 @@ class ProjectController extends BaseController
*/
public function getManagerList(){
$hrManagerModel = new ManageHr();
if(!isset($this->map['status'])){
$this->map['status'] = $hrManagerModel::STATUS_ONE;
}else{
if(!is_array($this->map['status'])){
$this->map['status'] = [$this->map['status']];
}
$this->map['status'] = ['in',$this->map['status']];
}
if(isset($this->map['entry_position']) && !empty($this->map['entry_position'])){
$this->map['entry_position'] = ['in',$this->map['entry_position']];
}
... ...
... ... @@ -111,7 +111,7 @@ class RenewProjectController extends BaseController
if(!empty($this->map['title'])){
$this->map['title'] = ['like', '%'.$this->map['title'].'%'];
}
$lists = $project->where($this->map)->with('payment')->with('deploy_build')
$lists = $project->formatQuery($this->map)->with('payment')->with('deploy_build')
->with('deploy_optimize')->with('online_check')
->with('project_after')->paginate($this->row, ['*'], 'page', $this->page);
if(!empty($lists)){
... ... @@ -167,7 +167,7 @@ class RenewProjectController extends BaseController
'optimist_status'=>$item['online_check']['optimist_status'] ?? 0,
'qa_status'=>$item['online_check']['qa_status'] ?? 0,
'service_day'=>$item['remain_day'] ?? 0,
'site_status'=>$item['site_status'],
'site_status'=>$item['site_status'] ?? 0,
];
return $item;
}
... ...
... ... @@ -13,6 +13,7 @@ use App\Enums\Common\Code;
use App\Helper\Arr;
use App\Http\Controllers\Bside\BaseController;
use App\Models\Com\Notify;
use App\Models\Com\UpdateLog;
use App\Models\Com\UpdateNotify;
use App\Models\Com\UpdateProgress;
use App\Models\Devops\ServerConfig;
... ... @@ -50,7 +51,7 @@ class CNoticeController extends BaseController
$is_sitemap = intval($request->input('is_sitemap', 0));
//获取项目所在服务器
$project_model = new Project();
$project_info = $project_model->read(['id'=>$project_id],['serve_id']);
$project_info = $project_model->read(['id'=>$project_id],['serve_id','is_upgrade']);
if(!$project_info){
$this->fail('未查询到项目数据');
}
... ... @@ -58,6 +59,14 @@ class CNoticeController extends BaseController
$serve_ip_info = $serve_ip_model->read(['id'=>$project_info['serve_id']],['servers_id']);
$servers_id = $serve_ip_info ? $serve_ip_info['servers_id'] : 0;
//如果是升级项目,判断是否还有采集在进行中
if($project_info['is_upgrade'] == 1){
$collect_info = UpdateLog::getProjectUpdate($project_id);
if($collect_info == '采集中'){
$this->fail('当前升级项目还有页面正在采集,请采集完成之后再更新静态页面');
}
}
if($servers_id == ServerConfig::SELF_SITE_ID){
//自建站服务器:如果项目已经上线,不请求C端接口,数据直接入库
$domain_model = new DomainInfo();
... ...
... ... @@ -96,7 +96,11 @@ class OperationHeartbeatController extends BaseController
if($info['manager_id'] != 0){
$managerModel = new Manage();
$managerInfo = $managerModel->read(['id'=>$info['manager_id']],['name']);
$info['message'] = '此页面数据已有人在编辑,请勿重复操作!操作人ip:'.$info['ip'].'操作的管理员为:'.$managerInfo['name'];
if(($info['ip'] == $this->request->ip()) && ($info['manager_id'] == $this->user['manager_id'])){
$info['status'] = 0;
}else{
$info['message'] = '此页面数据已有人在编辑,请勿重复操作!操作人ip:'.$info['ip'].'操作的管理员为:'.$managerInfo['name'];
}
}else{
//账号密码登录
$userModel = new User();
... ...
... ... @@ -71,7 +71,7 @@ class OnlineCheckLogic extends BaseLogic
$this->param['type'] . '_mid' => $this->manager['id'],
$this->param['type'] . '_check_time' => date('Y-m-d H:i:s'),
$this->param['type'] . '_status' => $this->param['status'],
'remark' => $param['remark'] ??'',
'remark' => $this->param['remark'] ??'',
];
return $this->model->edit($data,['id'=>$info['id']]);
}
... ...
... ... @@ -162,7 +162,8 @@ class RenewLogic extends BaseLogic
$project = new Project();
return $project->edit([
'extend_type'=>0,
'type'=>$type
'type'=>$type,
'site_status'=>0
],[
'id'=>$id
]);
... ...
... ... @@ -13,6 +13,7 @@ use App\Models\Template\BTemplateLog;
use App\Models\Template\BTemplateMain;
use App\Models\Template\Setting;
use App\Models\Template\BTemplate;
use App\Models\Template\TemplateTypeMain;
class CustomTemplateLogic extends BaseLogic
{
... ... @@ -179,10 +180,11 @@ class CustomTemplateLogic extends BaseLogic
$this->fail('404页面已存在');
}
if($this->param['url'] == 'search'){
$bTemplateMainModel = new BTemplateMain();
$bTemplateMainModel = new TemplateTypeMain();
$mainInfo = $bTemplateMainModel->read(['type'=>8]);
if($mainInfo !== false){
$this->param['html'] = $mainInfo['main_html'];
$this->param['html_style'] = "<style id='globalsojs-styles'></style>";
}
}
$this->param['project_id'] = $this->user['project_id'];
... ...
... ... @@ -119,6 +119,7 @@ class Project extends Base
12 => 'AI',
13 => 'AI站群',
14 => '未达标',
15 => 'AI案例',
];
}
... ...