|
...
|
...
|
@@ -2,15 +2,10 @@ |
|
|
|
|
|
|
|
namespace App\Console\Commands\RankData;
|
|
|
|
|
|
|
|
|
|
|
|
use App\Helper\QuanqiusouApi;
|
|
|
|
use App\Http\Logic\Bside\RankData\RankDataLogic;
|
|
|
|
use App\Models\Domain\DomainInfo;
|
|
|
|
use App\Models\RankData\RankDataLog as RankDataLogModel;
|
|
|
|
use App\Models\Project\DeployOptimize;
|
|
|
|
use App\Models\Project\Project;
|
|
|
|
use App\Models\RankData\RankData as GoogleRankModel;
|
|
|
|
use App\Utils\LogUtils;
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
use Illuminate\Support\Facades\Cache;
|
|
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
|
|
...
|
...
|
@@ -35,7 +30,7 @@ class RankData extends BaseCommands |
|
|
|
*
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected $description = '谷歌排名数据';
|
|
|
|
protected $description = '分发任务';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author zbj
|
|
...
|
...
|
@@ -45,67 +40,31 @@ class RankData extends BaseCommands |
|
|
|
{
|
|
|
|
try {
|
|
|
|
Log::channel('rank_data')->info('开始-排名数据');
|
|
|
|
|
|
|
|
//所有项目 今日是否达标 重置
|
|
|
|
//有失败会重跑任务,导致达标又被重置 加缓存一天只重置一次
|
|
|
|
if (!Cache::get('clear_remain_today_' . date('Y-m-d'))) {
|
|
|
|
Project::where('is_remain_today', 1)->update(['is_remain_today' => 0]);
|
|
|
|
Cache::set('clear_remain_today_' . date('Y-m-d'), 1, 24 * 3600);
|
|
|
|
}
|
|
|
|
$error = 0;
|
|
|
|
$api = new QuanqiusouApi();
|
|
|
|
//有排名api编号的项目
|
|
|
|
$list = DeployOptimize::where('api_no', '>', 0)->select('api_no', 'project_id')->orderBy('project_id', 'asc')->get();
|
|
|
|
Log::channel('rank_data')->info('开始-排名数据-' . count($list));
|
|
|
|
//当日所有站点谷歌收录数据
|
|
|
|
$site_res = $api->getSiteRes();
|
|
|
|
if (!$site_res) {
|
|
|
|
Log::channel('rank_data')->error('谷歌收录数据获取失败');
|
|
|
|
foreach ($list as $item){
|
|
|
|
RankDataLogModel::addTask($item['project_id'], $item['api_no']);
|
|
|
|
}
|
|
|
|
foreach ($list as $item) {
|
|
|
|
Log::channel('rank_data')->info('项目开始:ID' . $item['project_id'] .' - '. $item['api_no']) . '';
|
|
|
|
try {
|
|
|
|
(new RankDataLogic())->syncRankData($item['api_no'], $site_res);
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
Log::channel('rank_data')->error('RankData:失败 ' . $item['api_no'] . $e->getMessage());
|
|
|
|
$error++;
|
|
|
|
continue;
|
|
|
|
//小语种
|
|
|
|
$api = new QuanqiusouApi();
|
|
|
|
$lang_list = $api->getLangList();
|
|
|
|
foreach ($list as $item){
|
|
|
|
$langs = $lang_list[$item['api_no']] ?? [];
|
|
|
|
foreach ($langs as $lang){
|
|
|
|
RankDataLogModel::addTask($item['project_id'], $item['api_no'], $lang);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return !$error;
|
|
|
|
} catch (\Exception|\Throwable $e) {
|
|
|
|
Log::channel('rank_data')->error('排名数据任务失败 ' . $e->getMessage());
|
|
|
|
throw new \Exception($e->getMessage());
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 同步项目api_no
|
|
|
|
* @author zbj
|
|
|
|
* @date 2023/10/16
|
|
|
|
*/
|
|
|
|
public function SyncApiNo(){
|
|
|
|
$deploy_optimizes = DeployOptimize::leftJoin('gl_project', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id')
|
|
|
|
->whereIn('gl_project.type', [Project::TYPE_TWO,Project::TYPE_THREE])->where('gl_project_deploy_optimize.api_no', 0)
|
|
|
|
->where('gl_project_deploy_optimize.domain', '>', 0)
|
|
|
|
->get();
|
|
|
|
if(!$deploy_optimizes){
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
$api = new QuanqiusouApi();
|
|
|
|
$ai_nos = $api->getWebApiNo();
|
|
|
|
if($ai_nos){
|
|
|
|
foreach ($deploy_optimizes as $deploy_optimize){
|
|
|
|
$domain = DomainInfo::where('id', $deploy_optimize['domain'])->value('domain');
|
|
|
|
if(!$domain){
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
$api_no = array_search($domain, $ai_nos);
|
|
|
|
if($api_no){
|
|
|
|
$deploy_optimize->api_no = $api_no;
|
|
|
|
$deploy_optimize->save();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
} |
...
|
...
|
|