|
...
|
...
|
@@ -45,17 +45,23 @@ class RankDataLogic extends BaseLogic |
|
|
|
$project_id = $this->user['project_id'];
|
|
|
|
//查数据
|
|
|
|
$project = (new ProjectLogic())->getProjectInfo($project_id);
|
|
|
|
if(request('api_no')){
|
|
|
|
$api_no = request('api_no');
|
|
|
|
}else{
|
|
|
|
$api_no = $project['deploy_optimize']['api_no'] ?? 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
$domain_info = (new DomainInfoLogic)->getDomainInfo($project_id);
|
|
|
|
$rank = RankData::where('project_id', $project_id)->first();
|
|
|
|
if(empty($rank) && ($project['deploy_optimize']['api_no'] != 0)){
|
|
|
|
$data['langs_status'] = 1;
|
|
|
|
}
|
|
|
|
$rank_week = RankWeek::where('project_id', $project_id)->first();
|
|
|
|
$recomm_domain = RecommDomain::where('project_id', $project_id)->first();
|
|
|
|
$external_links = ExternalLinks::where('project_id', $project_id)->first();
|
|
|
|
$indexed_pages = IndexedPages::where('project_id', $project_id)->first();
|
|
|
|
$rank_week = RankWeek::where('project_id', $project_id)->where('api_no', $api_no)->first();
|
|
|
|
$recomm_domain = RecommDomain::where('project_id', $project_id)->where('api_no', $api_no)->first();
|
|
|
|
$external_links = ExternalLinks::where('project_id', $project_id)->where('api_no', $api_no)->first();
|
|
|
|
$indexed_pages = IndexedPages::where('project_id', $project_id)->where('api_no', $api_no)->first();
|
|
|
|
$speed = Speed::where('project_id', $project_id)->first();
|
|
|
|
$api_no = $project['deploy_optimize']['api_no'] ?? '';
|
|
|
|
|
|
|
|
//排名数据
|
|
|
|
$data = [
|
|
|
|
'first_num' => $rank['first_num'] ?? 0,
|
|
...
|
...
|
@@ -171,6 +177,12 @@ class RankDataLogic extends BaseLogic |
|
|
|
'data' => $rank_week['data'] ?? [],
|
|
|
|
'labels' => $rank_week['date'] ?? [],
|
|
|
|
];
|
|
|
|
|
|
|
|
//多个api_no项目 切换api_no查看数据
|
|
|
|
if($project_id == 2104){
|
|
|
|
$data['other_api_no'] = $api_no == 10690 ? 11201 : 10690;
|
|
|
|
}
|
|
|
|
|
|
|
|
return $data;
|
|
|
|
}
|
|
|
|
|
|
...
|
...
|
@@ -406,7 +418,7 @@ class RankDataLogic extends BaseLogic |
|
|
|
//收录数
|
|
|
|
$indexed_pages_num = $site_res[$api_no] ?? 0;
|
|
|
|
Log::channel('rank_data')->info('开始保存:' . $project_id);
|
|
|
|
$this->save_rank($project_id, $res, $indexed_pages_num);
|
|
|
|
$this->save_rank($project_id, $api_no, $res, $indexed_pages_num);
|
|
|
|
}
|
|
|
|
//有小语种的
|
|
|
|
$lang_list = $api->getLangList();
|
|
...
|
...
|
@@ -436,7 +448,7 @@ class RankDataLogic extends BaseLogic |
|
|
|
$data[Arr::last($v)['lang']][$keyword] = $v;
|
|
|
|
}
|
|
|
|
foreach ($data as $lang => $rank) {
|
|
|
|
$this->save_rank($project_id, $rank, 0, $lang);
|
|
|
|
$this->save_rank($project_id, $api_no, $rank, 0, $lang);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
...
|
...
|
@@ -453,7 +465,7 @@ class RankDataLogic extends BaseLogic |
|
|
|
* @author zbj
|
|
|
|
* @date 2023/5/8
|
|
|
|
*/
|
|
|
|
public function save_rank($project_id, $data, $indexed_pages_num = null, string $lang = ''){
|
|
|
|
public function save_rank($project_id, $api_no, $data, $indexed_pages_num = null, string $lang = ''){
|
|
|
|
$without_project_ids = []; //不用处理排名的项目
|
|
|
|
$without_extension_project_ids = [658]; //是否达标只统计主词的
|
|
|
|
$extension_project_ids = [354]; //扩展词也到达标的
|
|
...
|
...
|
@@ -461,6 +473,14 @@ class RankDataLogic extends BaseLogic |
|
|
|
354,
|
|
|
|
1283
|
|
|
|
];//暂停项目id
|
|
|
|
|
|
|
|
//一个项目多个api_no
|
|
|
|
$multiple_api_no_project_ids = [
|
|
|
|
2104 => [
|
|
|
|
11201 => 50, //api_no => 关键词达标数
|
|
|
|
10690 => 100,
|
|
|
|
]
|
|
|
|
];
|
|
|
|
$first_num = $first_page_num = $first_three_pages_num = $first_five_pages_num = $first_ten_pages_num = 0;
|
|
|
|
$first_page_without_extension_num = 0; //不算扩展词在首页的数量
|
|
|
|
$first_page_extension_num = 0; //扩展词在首页的数量
|
|
...
|
...
|
@@ -503,6 +523,7 @@ class RankDataLogic extends BaseLogic |
|
|
|
}
|
|
|
|
$where = [
|
|
|
|
'project_id' => $project_id,
|
|
|
|
'api_no' => $api_no,
|
|
|
|
'lang' => $lang
|
|
|
|
];
|
|
|
|
$model = RankData::where($where)->first();
|
|
...
|
...
|
@@ -513,6 +534,10 @@ class RankDataLogic extends BaseLogic |
|
|
|
$this->g_top_plan($project_id,$g_top_first_page_extension_num);
|
|
|
|
//保证关键词数
|
|
|
|
$keyword_num = DeployBuild::where('project_id', $project_id)->value('keyword_num');
|
|
|
|
//多api_no项目的保证关键词数
|
|
|
|
if(in_array($project_id, array_keys($multiple_api_no_project_ids))){
|
|
|
|
$keyword_num = $multiple_api_no_project_ids[$project_id][$api_no]??0;
|
|
|
|
}
|
|
|
|
$type = Project::where('id', $project_id)->value('type');
|
|
|
|
$model_is_compliance = $model->is_compliance;
|
|
|
|
$model->is_compliance = 0;
|
|
...
|
...
|
@@ -530,8 +555,19 @@ class RankDataLogic extends BaseLogic |
|
|
|
if (($model->updated_date != date('Y-m-d') || empty($model_is_compliance)) && !$lang) {
|
|
|
|
$compliance_day = Project::where(['id' => $project_id])->value('finish_remain_day') ?: 0;
|
|
|
|
if(!in_array($project_id,$ceaseProjectId)){
|
|
|
|
Project::where('id', $project_id)->update(['is_remain_today' => 1, 'finish_remain_day' => $compliance_day + 1]);
|
|
|
|
Log::channel('rank_data')->info('项目' . $project_id . '达标天数+1:'. ($compliance_day + 1));
|
|
|
|
//多api_no项目 要api_no都分别达标才算
|
|
|
|
if(in_array($project_id, array_keys($multiple_api_no_project_ids))){
|
|
|
|
$api_nos = array_keys($multiple_api_no_project_ids[$project_id]);
|
|
|
|
//今天其他api_no是否都达标了
|
|
|
|
$count = RankData::where('project_id', $project_id)->whereIn('api_no', $api_nos)->where('api_no', '<>', $api_no)->where('date', date('Y-m-d'))
|
|
|
|
->where('is_compliance', 1)->count();
|
|
|
|
if($count == count($api_nos) - 1){
|
|
|
|
Project::where('id', $project_id)->update(['is_remain_today' => 1, 'finish_remain_day' => $compliance_day + 1]);
|
|
|
|
}
|
|
|
|
}else{
|
|
|
|
Project::where('id', $project_id)->update(['is_remain_today' => 1, 'finish_remain_day' => $compliance_day + 1]);
|
|
|
|
}
|
|
|
|
Log::channel('rank_data')->info('项目' . $project_id . '达标天数+1:' . ($compliance_day + 1));
|
|
|
|
}else{
|
|
|
|
Project::where('id', $project_id)->update(['is_remain_today' => 1, 'finish_remain_day' => $compliance_day]);
|
|
|
|
Log::channel('rank_data')->info('项目' . $project_id . '暂停项目达标天数不加:'. ($compliance_day));
|
|
...
|
...
|
@@ -543,6 +579,7 @@ class RankDataLogic extends BaseLogic |
|
|
|
}
|
|
|
|
$model->compliance_day = Project::where(['id' => $project_id])->value('finish_remain_day') ?: 0;
|
|
|
|
$model->project_id = $project_id;
|
|
|
|
$model->api_no = $api_no;
|
|
|
|
$model->first_num = $first_num;
|
|
|
|
$model->first_page_num = $first_page_num;
|
|
|
|
$model->first_three_pages_num = $first_three_pages_num;
|
|
...
|
...
|
@@ -598,7 +635,7 @@ class RankDataLogic extends BaseLogic |
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
$model = ExternalLinksModel::where('project_id', $project_id)->first();
|
|
|
|
$model = ExternalLinksModel::where('project_id', $project_id)->where('api_no', $api_no)->first();
|
|
|
|
if ($model && $model->updated_date >= getThisWeekStarDate() && !$force) {
|
|
|
|
//continue;
|
|
|
|
}
|
|
...
|
...
|
@@ -630,6 +667,7 @@ class RankDataLogic extends BaseLogic |
|
|
|
$data = $this->_data($project_id, $res['total']);
|
|
|
|
}
|
|
|
|
$model->project_id = $project_id;
|
|
|
|
$model->api_no = $api_no;
|
|
|
|
$model->total = $data['total'];
|
|
|
|
$model->data = $data['data'];
|
|
|
|
$model->updated_date = date('Y-m-d');
|
|
...
|
...
|
@@ -684,7 +722,7 @@ class RankDataLogic extends BaseLogic |
|
|
|
Log::channel('rank_data')->error('syncRecommDomain:未配置正式域名', ['project_id' => $project_id, 'api_no' => $api_no]);
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
$model = RecommDomainModel::where('project_id', $project_id)->first();
|
|
|
|
$model = RecommDomainModel::where('project_id', $project_id)->where('api_no', $api_no)->first();
|
|
|
|
if ($model && $model->updated_date >= getThisWeekStarDate() && !$force) {
|
|
|
|
continue;
|
|
|
|
}
|
|
...
|
...
|
@@ -716,6 +754,7 @@ class RankDataLogic extends BaseLogic |
|
|
|
continue;
|
|
|
|
}
|
|
|
|
$model->project_id = $project_id;
|
|
|
|
$model->api_no = $api_no;
|
|
|
|
$model->data = $data;
|
|
|
|
$model->updated_date = date('Y-m-d');
|
|
|
|
$model->save();
|
|
...
|
...
|
@@ -730,7 +769,7 @@ class RankDataLogic extends BaseLogic |
|
|
|
public function syncIndexedPages($api_no, $force=false){
|
|
|
|
$project_ids = DeployOptimize::where('api_no', $api_no)->pluck('domain', 'project_id');
|
|
|
|
foreach ($project_ids as $project_id => $domain) {
|
|
|
|
$model = IndexedPagesModel::where('project_id', $project_id)->first();
|
|
|
|
$model = IndexedPagesModel::where('project_id', $project_id)->where('api_no', $api_no)->first();
|
|
|
|
if($model && $model->updated_date >= getThisWeekStarDate() && !$force){
|
|
|
|
continue;
|
|
|
|
}
|
|
...
|
...
|
@@ -745,6 +784,7 @@ class RankDataLogic extends BaseLogic |
|
|
|
continue;
|
|
|
|
}
|
|
|
|
$model->project_id = $project_id;
|
|
|
|
$model->api_no = $api_no;
|
|
|
|
$model->data = $res['data'];
|
|
|
|
$model->updated_date = date('Y-m-d');
|
|
|
|
$model->save();
|
|
...
|
...
|
@@ -793,7 +833,7 @@ class RankDataLogic extends BaseLogic |
|
|
|
public function syncRankWeek($api_no, $force=false){
|
|
|
|
$project_ids = DeployOptimize::where('api_no', $api_no)->pluck('domain', 'project_id');
|
|
|
|
foreach ($project_ids as $project_id => $domain) {
|
|
|
|
$rank_week = RankWeekModel::where('project_id', $project_id)->first();
|
|
|
|
$rank_week = RankWeekModel::where('project_id', $project_id)->where('api_no', $api_no)->first();
|
|
|
|
if ($rank_week && $rank_week->updated_date >= getThisWeekStarDate() && !$force) {
|
|
|
|
//本周数据已更新
|
|
|
|
continue;
|
|
...
|
...
|
@@ -809,6 +849,7 @@ class RankDataLogic extends BaseLogic |
|
|
|
$rank_week = new RankWeekModel();
|
|
|
|
}
|
|
|
|
$rank_week->project_id = $project_id;
|
|
|
|
$rank_week->api_no = $api_no;
|
|
|
|
$rank_week->data = $res['data'][$api_no] ?? [];
|
|
|
|
$rank_week->date = $res['date'];
|
|
|
|
$rank_week->updated_date = date('Y-m-d');
|
...
|
...
|
|