|
@@ -45,17 +45,23 @@ class RankDataLogic extends BaseLogic |
|
@@ -45,17 +45,23 @@ class RankDataLogic extends BaseLogic |
|
45
|
$project_id = $this->user['project_id'];
|
45
|
$project_id = $this->user['project_id'];
|
|
46
|
//查数据
|
46
|
//查数据
|
|
47
|
$project = (new ProjectLogic())->getProjectInfo($project_id);
|
47
|
$project = (new ProjectLogic())->getProjectInfo($project_id);
|
|
|
|
48
|
+ if(request('api_no')){
|
|
|
|
49
|
+ $api_no = request('api_no');
|
|
|
|
50
|
+ }else{
|
|
|
|
51
|
+ $api_no = $project['deploy_optimize']['api_no'] ?? 0;
|
|
|
|
52
|
+ }
|
|
|
|
53
|
+
|
|
48
|
$domain_info = (new DomainInfoLogic)->getDomainInfo($project_id);
|
54
|
$domain_info = (new DomainInfoLogic)->getDomainInfo($project_id);
|
|
49
|
$rank = RankData::where('project_id', $project_id)->first();
|
55
|
$rank = RankData::where('project_id', $project_id)->first();
|
|
50
|
if(empty($rank) && ($project['deploy_optimize']['api_no'] != 0)){
|
56
|
if(empty($rank) && ($project['deploy_optimize']['api_no'] != 0)){
|
|
51
|
$data['langs_status'] = 1;
|
57
|
$data['langs_status'] = 1;
|
|
52
|
}
|
58
|
}
|
|
53
|
- $rank_week = RankWeek::where('project_id', $project_id)->first();
|
|
|
|
54
|
- $recomm_domain = RecommDomain::where('project_id', $project_id)->first();
|
|
|
|
55
|
- $external_links = ExternalLinks::where('project_id', $project_id)->first();
|
|
|
|
56
|
- $indexed_pages = IndexedPages::where('project_id', $project_id)->first();
|
59
|
+ $rank_week = RankWeek::where('project_id', $project_id)->where('api_no', $api_no)->first();
|
|
|
|
60
|
+ $recomm_domain = RecommDomain::where('project_id', $project_id)->where('api_no', $api_no)->first();
|
|
|
|
61
|
+ $external_links = ExternalLinks::where('project_id', $project_id)->where('api_no', $api_no)->first();
|
|
|
|
62
|
+ $indexed_pages = IndexedPages::where('project_id', $project_id)->where('api_no', $api_no)->first();
|
|
57
|
$speed = Speed::where('project_id', $project_id)->first();
|
63
|
$speed = Speed::where('project_id', $project_id)->first();
|
|
58
|
- $api_no = $project['deploy_optimize']['api_no'] ?? '';
|
64
|
+
|
|
59
|
//排名数据
|
65
|
//排名数据
|
|
60
|
$data = [
|
66
|
$data = [
|
|
61
|
'first_num' => $rank['first_num'] ?? 0,
|
67
|
'first_num' => $rank['first_num'] ?? 0,
|
|
@@ -171,6 +177,12 @@ class RankDataLogic extends BaseLogic |
|
@@ -171,6 +177,12 @@ class RankDataLogic extends BaseLogic |
|
171
|
'data' => $rank_week['data'] ?? [],
|
177
|
'data' => $rank_week['data'] ?? [],
|
|
172
|
'labels' => $rank_week['date'] ?? [],
|
178
|
'labels' => $rank_week['date'] ?? [],
|
|
173
|
];
|
179
|
];
|
|
|
|
180
|
+
|
|
|
|
181
|
+ //多个api_no项目 切换api_no查看数据
|
|
|
|
182
|
+ if($project_id == 2104){
|
|
|
|
183
|
+ $data['other_api_no'] = $api_no == 10690 ? 11201 : 10690;
|
|
|
|
184
|
+ }
|
|
|
|
185
|
+
|
|
174
|
return $data;
|
186
|
return $data;
|
|
175
|
}
|
187
|
}
|
|
176
|
|
188
|
|
|
@@ -406,7 +418,7 @@ class RankDataLogic extends BaseLogic |
|
@@ -406,7 +418,7 @@ class RankDataLogic extends BaseLogic |
|
406
|
//收录数
|
418
|
//收录数
|
|
407
|
$indexed_pages_num = $site_res[$api_no] ?? 0;
|
419
|
$indexed_pages_num = $site_res[$api_no] ?? 0;
|
|
408
|
Log::channel('rank_data')->info('开始保存:' . $project_id);
|
420
|
Log::channel('rank_data')->info('开始保存:' . $project_id);
|
|
409
|
- $this->save_rank($project_id, $res, $indexed_pages_num);
|
421
|
+ $this->save_rank($project_id, $api_no, $res, $indexed_pages_num);
|
|
410
|
}
|
422
|
}
|
|
411
|
//有小语种的
|
423
|
//有小语种的
|
|
412
|
$lang_list = $api->getLangList();
|
424
|
$lang_list = $api->getLangList();
|
|
@@ -436,7 +448,7 @@ class RankDataLogic extends BaseLogic |
|
@@ -436,7 +448,7 @@ class RankDataLogic extends BaseLogic |
|
436
|
$data[Arr::last($v)['lang']][$keyword] = $v;
|
448
|
$data[Arr::last($v)['lang']][$keyword] = $v;
|
|
437
|
}
|
449
|
}
|
|
438
|
foreach ($data as $lang => $rank) {
|
450
|
foreach ($data as $lang => $rank) {
|
|
439
|
- $this->save_rank($project_id, $rank, 0, $lang);
|
451
|
+ $this->save_rank($project_id, $api_no, $rank, 0, $lang);
|
|
440
|
}
|
452
|
}
|
|
441
|
}
|
453
|
}
|
|
442
|
}
|
454
|
}
|
|
@@ -453,7 +465,7 @@ class RankDataLogic extends BaseLogic |
|
@@ -453,7 +465,7 @@ class RankDataLogic extends BaseLogic |
|
453
|
* @author zbj
|
465
|
* @author zbj
|
|
454
|
* @date 2023/5/8
|
466
|
* @date 2023/5/8
|
|
455
|
*/
|
467
|
*/
|
|
456
|
- public function save_rank($project_id, $data, $indexed_pages_num = null, string $lang = ''){
|
468
|
+ public function save_rank($project_id, $api_no, $data, $indexed_pages_num = null, string $lang = ''){
|
|
457
|
$without_project_ids = []; //不用处理排名的项目
|
469
|
$without_project_ids = []; //不用处理排名的项目
|
|
458
|
$without_extension_project_ids = [658]; //是否达标只统计主词的
|
470
|
$without_extension_project_ids = [658]; //是否达标只统计主词的
|
|
459
|
$extension_project_ids = [354]; //扩展词也到达标的
|
471
|
$extension_project_ids = [354]; //扩展词也到达标的
|
|
@@ -461,6 +473,14 @@ class RankDataLogic extends BaseLogic |
|
@@ -461,6 +473,14 @@ class RankDataLogic extends BaseLogic |
|
461
|
354,
|
473
|
354,
|
|
462
|
1283
|
474
|
1283
|
|
463
|
];//暂停项目id
|
475
|
];//暂停项目id
|
|
|
|
476
|
+
|
|
|
|
477
|
+ //一个项目多个api_no
|
|
|
|
478
|
+ $multiple_api_no_project_ids = [
|
|
|
|
479
|
+ 2104 => [
|
|
|
|
480
|
+ 11201 => 50, //api_no => 关键词达标数
|
|
|
|
481
|
+ 10690 => 100,
|
|
|
|
482
|
+ ]
|
|
|
|
483
|
+ ];
|
|
464
|
$first_num = $first_page_num = $first_three_pages_num = $first_five_pages_num = $first_ten_pages_num = 0;
|
484
|
$first_num = $first_page_num = $first_three_pages_num = $first_five_pages_num = $first_ten_pages_num = 0;
|
|
465
|
$first_page_without_extension_num = 0; //不算扩展词在首页的数量
|
485
|
$first_page_without_extension_num = 0; //不算扩展词在首页的数量
|
|
466
|
$first_page_extension_num = 0; //扩展词在首页的数量
|
486
|
$first_page_extension_num = 0; //扩展词在首页的数量
|
|
@@ -503,6 +523,7 @@ class RankDataLogic extends BaseLogic |
|
@@ -503,6 +523,7 @@ class RankDataLogic extends BaseLogic |
|
503
|
}
|
523
|
}
|
|
504
|
$where = [
|
524
|
$where = [
|
|
505
|
'project_id' => $project_id,
|
525
|
'project_id' => $project_id,
|
|
|
|
526
|
+ 'api_no' => $api_no,
|
|
506
|
'lang' => $lang
|
527
|
'lang' => $lang
|
|
507
|
];
|
528
|
];
|
|
508
|
$model = RankData::where($where)->first();
|
529
|
$model = RankData::where($where)->first();
|
|
@@ -513,6 +534,10 @@ class RankDataLogic extends BaseLogic |
|
@@ -513,6 +534,10 @@ class RankDataLogic extends BaseLogic |
|
513
|
$this->g_top_plan($project_id,$g_top_first_page_extension_num);
|
534
|
$this->g_top_plan($project_id,$g_top_first_page_extension_num);
|
|
514
|
//保证关键词数
|
535
|
//保证关键词数
|
|
515
|
$keyword_num = DeployBuild::where('project_id', $project_id)->value('keyword_num');
|
536
|
$keyword_num = DeployBuild::where('project_id', $project_id)->value('keyword_num');
|
|
|
|
537
|
+ //多api_no项目的保证关键词数
|
|
|
|
538
|
+ if(in_array($project_id, array_keys($multiple_api_no_project_ids))){
|
|
|
|
539
|
+ $keyword_num = $multiple_api_no_project_ids[$project_id][$api_no]??0;
|
|
|
|
540
|
+ }
|
|
516
|
$type = Project::where('id', $project_id)->value('type');
|
541
|
$type = Project::where('id', $project_id)->value('type');
|
|
517
|
$model_is_compliance = $model->is_compliance;
|
542
|
$model_is_compliance = $model->is_compliance;
|
|
518
|
$model->is_compliance = 0;
|
543
|
$model->is_compliance = 0;
|
|
@@ -530,8 +555,19 @@ class RankDataLogic extends BaseLogic |
|
@@ -530,8 +555,19 @@ class RankDataLogic extends BaseLogic |
|
530
|
if (($model->updated_date != date('Y-m-d') || empty($model_is_compliance)) && !$lang) {
|
555
|
if (($model->updated_date != date('Y-m-d') || empty($model_is_compliance)) && !$lang) {
|
|
531
|
$compliance_day = Project::where(['id' => $project_id])->value('finish_remain_day') ?: 0;
|
556
|
$compliance_day = Project::where(['id' => $project_id])->value('finish_remain_day') ?: 0;
|
|
532
|
if(!in_array($project_id,$ceaseProjectId)){
|
557
|
if(!in_array($project_id,$ceaseProjectId)){
|
|
|
|
558
|
+ //多api_no项目 要api_no都分别达标才算
|
|
|
|
559
|
+ if(in_array($project_id, array_keys($multiple_api_no_project_ids))){
|
|
|
|
560
|
+ $api_nos = array_keys($multiple_api_no_project_ids[$project_id]);
|
|
|
|
561
|
+ //今天其他api_no是否都达标了
|
|
|
|
562
|
+ $count = RankData::where('project_id', $project_id)->whereIn('api_no', $api_nos)->where('api_no', '<>', $api_no)->where('date', date('Y-m-d'))
|
|
|
|
563
|
+ ->where('is_compliance', 1)->count();
|
|
|
|
564
|
+ if($count == count($api_nos) - 1){
|
|
|
|
565
|
+ Project::where('id', $project_id)->update(['is_remain_today' => 1, 'finish_remain_day' => $compliance_day + 1]);
|
|
|
|
566
|
+ }
|
|
|
|
567
|
+ }else{
|
|
533
|
Project::where('id', $project_id)->update(['is_remain_today' => 1, 'finish_remain_day' => $compliance_day + 1]);
|
568
|
Project::where('id', $project_id)->update(['is_remain_today' => 1, 'finish_remain_day' => $compliance_day + 1]);
|
|
534
|
- Log::channel('rank_data')->info('项目' . $project_id . '达标天数+1:'. ($compliance_day + 1));
|
569
|
+ }
|
|
|
|
570
|
+ Log::channel('rank_data')->info('项目' . $project_id . '达标天数+1:' . ($compliance_day + 1));
|
|
535
|
}else{
|
571
|
}else{
|
|
536
|
Project::where('id', $project_id)->update(['is_remain_today' => 1, 'finish_remain_day' => $compliance_day]);
|
572
|
Project::where('id', $project_id)->update(['is_remain_today' => 1, 'finish_remain_day' => $compliance_day]);
|
|
537
|
Log::channel('rank_data')->info('项目' . $project_id . '暂停项目达标天数不加:'. ($compliance_day));
|
573
|
Log::channel('rank_data')->info('项目' . $project_id . '暂停项目达标天数不加:'. ($compliance_day));
|
|
@@ -543,6 +579,7 @@ class RankDataLogic extends BaseLogic |
|
@@ -543,6 +579,7 @@ class RankDataLogic extends BaseLogic |
|
543
|
}
|
579
|
}
|
|
544
|
$model->compliance_day = Project::where(['id' => $project_id])->value('finish_remain_day') ?: 0;
|
580
|
$model->compliance_day = Project::where(['id' => $project_id])->value('finish_remain_day') ?: 0;
|
|
545
|
$model->project_id = $project_id;
|
581
|
$model->project_id = $project_id;
|
|
|
|
582
|
+ $model->api_no = $api_no;
|
|
546
|
$model->first_num = $first_num;
|
583
|
$model->first_num = $first_num;
|
|
547
|
$model->first_page_num = $first_page_num;
|
584
|
$model->first_page_num = $first_page_num;
|
|
548
|
$model->first_three_pages_num = $first_three_pages_num;
|
585
|
$model->first_three_pages_num = $first_three_pages_num;
|
|
@@ -598,7 +635,7 @@ class RankDataLogic extends BaseLogic |
|
@@ -598,7 +635,7 @@ class RankDataLogic extends BaseLogic |
|
598
|
continue;
|
635
|
continue;
|
|
599
|
}
|
636
|
}
|
|
600
|
|
637
|
|
|
601
|
- $model = ExternalLinksModel::where('project_id', $project_id)->first();
|
638
|
+ $model = ExternalLinksModel::where('project_id', $project_id)->where('api_no', $api_no)->first();
|
|
602
|
if ($model && $model->updated_date >= getThisWeekStarDate() && !$force) {
|
639
|
if ($model && $model->updated_date >= getThisWeekStarDate() && !$force) {
|
|
603
|
//continue;
|
640
|
//continue;
|
|
604
|
}
|
641
|
}
|
|
@@ -630,6 +667,7 @@ class RankDataLogic extends BaseLogic |
|
@@ -630,6 +667,7 @@ class RankDataLogic extends BaseLogic |
|
630
|
$data = $this->_data($project_id, $res['total']);
|
667
|
$data = $this->_data($project_id, $res['total']);
|
|
631
|
}
|
668
|
}
|
|
632
|
$model->project_id = $project_id;
|
669
|
$model->project_id = $project_id;
|
|
|
|
670
|
+ $model->api_no = $api_no;
|
|
633
|
$model->total = $data['total'];
|
671
|
$model->total = $data['total'];
|
|
634
|
$model->data = $data['data'];
|
672
|
$model->data = $data['data'];
|
|
635
|
$model->updated_date = date('Y-m-d');
|
673
|
$model->updated_date = date('Y-m-d');
|
|
@@ -684,7 +722,7 @@ class RankDataLogic extends BaseLogic |
|
@@ -684,7 +722,7 @@ class RankDataLogic extends BaseLogic |
|
684
|
Log::channel('rank_data')->error('syncRecommDomain:未配置正式域名', ['project_id' => $project_id, 'api_no' => $api_no]);
|
722
|
Log::channel('rank_data')->error('syncRecommDomain:未配置正式域名', ['project_id' => $project_id, 'api_no' => $api_no]);
|
|
685
|
continue;
|
723
|
continue;
|
|
686
|
}
|
724
|
}
|
|
687
|
- $model = RecommDomainModel::where('project_id', $project_id)->first();
|
725
|
+ $model = RecommDomainModel::where('project_id', $project_id)->where('api_no', $api_no)->first();
|
|
688
|
if ($model && $model->updated_date >= getThisWeekStarDate() && !$force) {
|
726
|
if ($model && $model->updated_date >= getThisWeekStarDate() && !$force) {
|
|
689
|
continue;
|
727
|
continue;
|
|
690
|
}
|
728
|
}
|
|
@@ -716,6 +754,7 @@ class RankDataLogic extends BaseLogic |
|
@@ -716,6 +754,7 @@ class RankDataLogic extends BaseLogic |
|
716
|
continue;
|
754
|
continue;
|
|
717
|
}
|
755
|
}
|
|
718
|
$model->project_id = $project_id;
|
756
|
$model->project_id = $project_id;
|
|
|
|
757
|
+ $model->api_no = $api_no;
|
|
719
|
$model->data = $data;
|
758
|
$model->data = $data;
|
|
720
|
$model->updated_date = date('Y-m-d');
|
759
|
$model->updated_date = date('Y-m-d');
|
|
721
|
$model->save();
|
760
|
$model->save();
|
|
@@ -730,7 +769,7 @@ class RankDataLogic extends BaseLogic |
|
@@ -730,7 +769,7 @@ class RankDataLogic extends BaseLogic |
|
730
|
public function syncIndexedPages($api_no, $force=false){
|
769
|
public function syncIndexedPages($api_no, $force=false){
|
|
731
|
$project_ids = DeployOptimize::where('api_no', $api_no)->pluck('domain', 'project_id');
|
770
|
$project_ids = DeployOptimize::where('api_no', $api_no)->pluck('domain', 'project_id');
|
|
732
|
foreach ($project_ids as $project_id => $domain) {
|
771
|
foreach ($project_ids as $project_id => $domain) {
|
|
733
|
- $model = IndexedPagesModel::where('project_id', $project_id)->first();
|
772
|
+ $model = IndexedPagesModel::where('project_id', $project_id)->where('api_no', $api_no)->first();
|
|
734
|
if($model && $model->updated_date >= getThisWeekStarDate() && !$force){
|
773
|
if($model && $model->updated_date >= getThisWeekStarDate() && !$force){
|
|
735
|
continue;
|
774
|
continue;
|
|
736
|
}
|
775
|
}
|
|
@@ -745,6 +784,7 @@ class RankDataLogic extends BaseLogic |
|
@@ -745,6 +784,7 @@ class RankDataLogic extends BaseLogic |
|
745
|
continue;
|
784
|
continue;
|
|
746
|
}
|
785
|
}
|
|
747
|
$model->project_id = $project_id;
|
786
|
$model->project_id = $project_id;
|
|
|
|
787
|
+ $model->api_no = $api_no;
|
|
748
|
$model->data = $res['data'];
|
788
|
$model->data = $res['data'];
|
|
749
|
$model->updated_date = date('Y-m-d');
|
789
|
$model->updated_date = date('Y-m-d');
|
|
750
|
$model->save();
|
790
|
$model->save();
|
|
@@ -793,7 +833,7 @@ class RankDataLogic extends BaseLogic |
|
@@ -793,7 +833,7 @@ class RankDataLogic extends BaseLogic |
|
793
|
public function syncRankWeek($api_no, $force=false){
|
833
|
public function syncRankWeek($api_no, $force=false){
|
|
794
|
$project_ids = DeployOptimize::where('api_no', $api_no)->pluck('domain', 'project_id');
|
834
|
$project_ids = DeployOptimize::where('api_no', $api_no)->pluck('domain', 'project_id');
|
|
795
|
foreach ($project_ids as $project_id => $domain) {
|
835
|
foreach ($project_ids as $project_id => $domain) {
|
|
796
|
- $rank_week = RankWeekModel::where('project_id', $project_id)->first();
|
836
|
+ $rank_week = RankWeekModel::where('project_id', $project_id)->where('api_no', $api_no)->first();
|
|
797
|
if ($rank_week && $rank_week->updated_date >= getThisWeekStarDate() && !$force) {
|
837
|
if ($rank_week && $rank_week->updated_date >= getThisWeekStarDate() && !$force) {
|
|
798
|
//本周数据已更新
|
838
|
//本周数据已更新
|
|
799
|
continue;
|
839
|
continue;
|
|
@@ -809,6 +849,7 @@ class RankDataLogic extends BaseLogic |
|
@@ -809,6 +849,7 @@ class RankDataLogic extends BaseLogic |
|
809
|
$rank_week = new RankWeekModel();
|
849
|
$rank_week = new RankWeekModel();
|
|
810
|
}
|
850
|
}
|
|
811
|
$rank_week->project_id = $project_id;
|
851
|
$rank_week->project_id = $project_id;
|
|
|
|
852
|
+ $rank_week->api_no = $api_no;
|
|
812
|
$rank_week->data = $res['data'][$api_no] ?? [];
|
853
|
$rank_week->data = $res['data'][$api_no] ?? [];
|
|
813
|
$rank_week->date = $res['date'];
|
854
|
$rank_week->date = $res['date'];
|
|
814
|
$rank_week->updated_date = date('Y-m-d');
|
855
|
$rank_week->updated_date = date('Y-m-d');
|