正在显示
4 个修改的文件
包含
145 行增加
和
6 行删除
| @@ -2,12 +2,11 @@ | @@ -2,12 +2,11 @@ | ||
| 2 | 2 | ||
| 3 | namespace App\Console\Commands\RankData; | 3 | namespace App\Console\Commands\RankData; |
| 4 | 4 | ||
| 5 | -use App\Helper\QuanqiusouApi; | 5 | + |
| 6 | +use App\Http\Logic\Bside\RankData\RankDataLogic; | ||
| 6 | use App\Models\RankData\RankDataLog as RankDataLogModel; | 7 | use App\Models\RankData\RankDataLog as RankDataLogModel; |
| 7 | -use App\Models\Project\DeployOptimize; | 8 | +use App\Models\Domain\DomainInfo; |
| 8 | use App\Models\Project\Project; | 9 | use App\Models\Project\Project; |
| 9 | -use Illuminate\Support\Facades\Cache; | ||
| 10 | -use Illuminate\Support\Facades\DB; | ||
| 11 | use Illuminate\Support\Facades\Log; | 10 | use Illuminate\Support\Facades\Log; |
| 12 | 11 | ||
| 13 | /** | 12 | /** |
| @@ -49,8 +48,7 @@ class RankData extends BaseCommands | @@ -49,8 +48,7 @@ class RankData extends BaseCommands | ||
| 49 | Cache::set('clear_remain_today_' . date('Y-m-d'), 1, 24 * 3600); | 48 | Cache::set('clear_remain_today_' . date('Y-m-d'), 1, 24 * 3600); |
| 50 | } | 49 | } |
| 51 | 50 | ||
| 52 | - $projectModel = new Project(); | ||
| 53 | - $list = $projectModel->leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id') | 51 | + $list = Project::leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id') |
| 54 | ->where('gl_project.extend_type',0) | 52 | ->where('gl_project.extend_type',0) |
| 55 | ->where('gl_project.delete_status',0) | 53 | ->where('gl_project.delete_status',0) |
| 56 | ->where('gl_project_deploy_optimize.api_no', '>', 0) | 54 | ->where('gl_project_deploy_optimize.api_no', '>', 0) |
| @@ -79,6 +77,22 @@ class RankData extends BaseCommands | @@ -79,6 +77,22 @@ class RankData extends BaseCommands | ||
| 79 | RankDataLogModel::addTask($item['project_id'], $item['api_no'], $lang); | 77 | RankDataLogModel::addTask($item['project_id'], $item['api_no'], $lang); |
| 80 | } | 78 | } |
| 81 | } | 79 | } |
| 80 | + | ||
| 81 | + //白帽SEO版 | ||
| 82 | + $list = Project::leftJoin('gl_project_deploy_build', 'gl_project.id', '=', 'gl_project_deploy_build.project_id') | ||
| 83 | + ->where('gl_project.delete_status',0) | ||
| 84 | + ->where('gl_project_deploy_build.seo_plan', 1) | ||
| 85 | + ->whereIn('gl_project.type',[2,3,4]) | ||
| 86 | + ->orderBy('gl_project.id', 'asc') | ||
| 87 | + ->pluck('gl_project.id')->toArray(); | ||
| 88 | + foreach ($list as $project_id){ | ||
| 89 | + $domain = DomainInfo::getCacheInfoByProjectId($project_id); | ||
| 90 | + $id = RankDataLogic::instance()->getBmSeoProjects($domain['domain']); | ||
| 91 | + if(!$id){ | ||
| 92 | + continue; | ||
| 93 | + } | ||
| 94 | + RankDataLogModel::addTask($project_id, $id . '_bmseo'); | ||
| 95 | + } | ||
| 82 | } catch (\Exception|\Throwable $e) { | 96 | } catch (\Exception|\Throwable $e) { |
| 83 | Log::channel('rank_data')->error('排名数据任务失败 ' . $e->getMessage()); | 97 | Log::channel('rank_data')->error('排名数据任务失败 ' . $e->getMessage()); |
| 84 | } | 98 | } |
| @@ -13,6 +13,7 @@ use App\Models\Project\Project; | @@ -13,6 +13,7 @@ use App\Models\Project\Project; | ||
| 13 | use Illuminate\Support\Facades\Cache; | 13 | use Illuminate\Support\Facades\Cache; |
| 14 | use Illuminate\Support\Facades\Log; | 14 | use Illuminate\Support\Facades\Log; |
| 15 | use Illuminate\Support\Facades\Redis; | 15 | use Illuminate\Support\Facades\Redis; |
| 16 | +use Illuminate\Support\Str; | ||
| 16 | 17 | ||
| 17 | /** | 18 | /** |
| 18 | * Class GoogleRank | 19 | * Class GoogleRank |
| @@ -76,8 +77,13 @@ class RankDataLog extends BaseCommands | @@ -76,8 +77,13 @@ class RankDataLog extends BaseCommands | ||
| 76 | $log->data = Arr::s2a($res); | 77 | $log->data = Arr::s2a($res); |
| 77 | //保存数据 | 78 | //保存数据 |
| 78 | $this->output('保存排名数据:ID'.$log->project_id . ',APINO' . $log->api_no); | 79 | $this->output('保存排名数据:ID'.$log->project_id . ',APINO' . $log->api_no); |
| 80 | + if(Str::endsWith($log->api_no, '_bmseo')){ | ||
| 81 | + //白帽版 | ||
| 82 | + (new RankDataLogic())->save_rank_bmseo($log->project_id, $log->api_no, $res); | ||
| 83 | + }else{ | ||
| 79 | $is_compliance = (new RankDataLogic())->save_rank($log->project_id, $log->api_no, $res, null, $log->lang); | 84 | $is_compliance = (new RankDataLogic())->save_rank($log->project_id, $log->api_no, $res, null, $log->lang); |
| 80 | $log->is_compliance = $is_compliance; | 85 | $log->is_compliance = $is_compliance; |
| 86 | + } | ||
| 81 | $log->status = 1; | 87 | $log->status = 1; |
| 82 | $log->save(); | 88 | $log->save(); |
| 83 | 89 |
| @@ -20,6 +20,7 @@ use App\Models\RankData\ExternalLinks as ExternalLinksModel; | @@ -20,6 +20,7 @@ use App\Models\RankData\ExternalLinks as ExternalLinksModel; | ||
| 20 | use App\Models\RankData\IndexedPages; | 20 | use App\Models\RankData\IndexedPages; |
| 21 | use App\Models\RankData\IndexedPages as IndexedPagesModel; | 21 | use App\Models\RankData\IndexedPages as IndexedPagesModel; |
| 22 | use App\Models\RankData\RankData; | 22 | use App\Models\RankData\RankData; |
| 23 | +use App\Models\RankData\RankDataBmseo; | ||
| 23 | use App\Models\RankData\RankWeek; | 24 | use App\Models\RankData\RankWeek; |
| 24 | use App\Models\RankData\RankWeek as RankWeekModel; | 25 | use App\Models\RankData\RankWeek as RankWeekModel; |
| 25 | use App\Models\RankData\RecommDomain; | 26 | use App\Models\RankData\RecommDomain; |
| @@ -360,6 +361,34 @@ class RankDataLogic extends BaseLogic | @@ -360,6 +361,34 @@ class RankDataLogic extends BaseLogic | ||
| 360 | } | 361 | } |
| 361 | 362 | ||
| 362 | /** | 363 | /** |
| 364 | + * 获取白帽seo站点项目 | ||
| 365 | + * @author zbj | ||
| 366 | + * @date 2023/5/12 | ||
| 367 | + */ | ||
| 368 | + public function getBmSeoProjects($domain = '') | ||
| 369 | + { | ||
| 370 | + $key = 'weblist_bm'; | ||
| 371 | + $data = Cache::get($key); | ||
| 372 | + if (!$data) { | ||
| 373 | + $api_url = 'http://api.quanqiusou.cn/api/index/weblist_bm'; | ||
| 374 | + try { | ||
| 375 | + $data = HttpUtils::get($api_url, ['key'=> '289c1fc81c89d79c04ed4fd72822948e']); | ||
| 376 | + if ($data) { | ||
| 377 | + $data = Arr::s2a($data); | ||
| 378 | + Cache::put($key, $data, 4 * 3600); | ||
| 379 | + } | ||
| 380 | + } catch (\Exception | GuzzleException $e) { | ||
| 381 | + errorLog('白帽seo站点项目获取失败', [], $e); | ||
| 382 | + return false; | ||
| 383 | + } | ||
| 384 | + } | ||
| 385 | + if ($domain) { | ||
| 386 | + return array_search($domain, $data); | ||
| 387 | + } | ||
| 388 | + return $data; | ||
| 389 | + } | ||
| 390 | + | ||
| 391 | + /** | ||
| 363 | * 获取AI站点项目 | 392 | * 获取AI站点项目 |
| 364 | * | 393 | * |
| 365 | * @author zbj | 394 | * @author zbj |
| @@ -622,6 +651,58 @@ class RankDataLogic extends BaseLogic | @@ -622,6 +651,58 @@ class RankDataLogic extends BaseLogic | ||
| 622 | return $model->is_compliance; | 651 | return $model->is_compliance; |
| 623 | } | 652 | } |
| 624 | 653 | ||
| 654 | + public function save_rank_bmseo($project_id, $api_no, $data){ | ||
| 655 | + $first_num = $first_page_num = $first_three_pages_num = $first_five_pages_num = $first_ten_pages_num = 0; | ||
| 656 | + $first_page_without_extension_num = 0; //不算扩展词在首页的数量 | ||
| 657 | + $first_page_extension_num = 0; //扩展词在首页的数量 | ||
| 658 | + foreach ($data as &$ranks){ | ||
| 659 | + ksort($ranks); | ||
| 660 | + $last = Arr::last($ranks); | ||
| 661 | + //第一名 | ||
| 662 | + if($last['position'] == 1){ | ||
| 663 | + $first_num ++; | ||
| 664 | + } | ||
| 665 | + //排名第一页 | ||
| 666 | + if($last['position'] > 0 && $last['position'] <= 10){ | ||
| 667 | + $first_page_num ++; | ||
| 668 | + $last['g'] == 1 && $first_page_without_extension_num++; | ||
| 669 | + $last['g'] == 2 && $first_page_extension_num++; | ||
| 670 | + } | ||
| 671 | + //排名前三页 | ||
| 672 | + if($last['position'] > 0 && $last['position'] <= 30){ | ||
| 673 | + $first_three_pages_num ++; | ||
| 674 | + } | ||
| 675 | + //排名前五页 | ||
| 676 | + if($last['position'] > 0 && $last['position'] <= 50){ | ||
| 677 | + $first_five_pages_num ++; | ||
| 678 | + } | ||
| 679 | + //排名前十页 | ||
| 680 | + if($last['position'] > 0 && $last['position'] <= 100){ | ||
| 681 | + $first_ten_pages_num ++; | ||
| 682 | + } | ||
| 683 | + } | ||
| 684 | + $where = [ | ||
| 685 | + 'project_id' => $project_id, | ||
| 686 | + 'api_no' => $api_no, | ||
| 687 | + ]; | ||
| 688 | + $model = RankDataBmseo::where($where)->first(); | ||
| 689 | + if(!$model){ | ||
| 690 | + $model = new RankDataBmseo(); | ||
| 691 | + } | ||
| 692 | + $model->project_id = $project_id; | ||
| 693 | + $model->api_no = $api_no; | ||
| 694 | + $model->first_num = $first_num; | ||
| 695 | + $model->first_page_num = $first_page_num; | ||
| 696 | + $model->first_three_pages_num = $first_three_pages_num; | ||
| 697 | + $model->first_five_pages_num = $first_five_pages_num; | ||
| 698 | + $model->first_ten_pages_num = $first_ten_pages_num; | ||
| 699 | + $model->data = $data; | ||
| 700 | + $model->updated_date = date('Y-m-d'); | ||
| 701 | + $model->save(); | ||
| 702 | + | ||
| 703 | + return true; | ||
| 704 | + } | ||
| 705 | + | ||
| 625 | /** | 706 | /** |
| 626 | * @remark :g_top | 707 | * @remark :g_top |
| 627 | * @name :g_top_plan | 708 | * @name :g_top_plan |
app/Models/RankData/RankDataBmseo.php
0 → 100644
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +namespace App\Models\RankData; | ||
| 4 | + | ||
| 5 | + | ||
| 6 | +use App\Helper\Arr; | ||
| 7 | +use App\Models\Base; | ||
| 8 | + | ||
| 9 | +/** | ||
| 10 | + * Class GoogleRank | ||
| 11 | + * @package App\Models | ||
| 12 | + * @author zbj | ||
| 13 | + * @date 2023/5/6 | ||
| 14 | + */ | ||
| 15 | +class RankDataBmseo extends Base | ||
| 16 | +{ | ||
| 17 | + //设置关联表名 | ||
| 18 | + protected $table = 'gl_rank_data_bmseo'; | ||
| 19 | + | ||
| 20 | + public static function gMap(){ | ||
| 21 | + return [ | ||
| 22 | + 1 => '主关键词', | ||
| 23 | + 2 => '拓展关键词', | ||
| 24 | + 3 => '小语种关键词', | ||
| 25 | + ]; | ||
| 26 | + } | ||
| 27 | + | ||
| 28 | + public function setDataAttribute($value) | ||
| 29 | + { | ||
| 30 | + $this->attributes['data'] = Arr::a2s($value); | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | + public function getDataAttribute($value) | ||
| 34 | + { | ||
| 35 | + return Arr::s2a($value); | ||
| 36 | + } | ||
| 37 | + | ||
| 38 | +} |
-
请 注册 或 登录 后发表评论