作者 ZhengBing He

log

@@ -86,7 +86,7 @@ class RemainDay extends Command @@ -86,7 +86,7 @@ class RemainDay extends Command
86 * @time :2025/4/2 10:48 86 * @time :2025/4/2 10:48
87 */ 87 */
88 public function saveRemainDay(){ 88 public function saveRemainDay(){
89 - $list = $this->project->list(['extend_type'=>Project::TYPE_ZERO,'type'=>['in',[Project::TYPE_TWO,Project::TYPE_THREE,Project::TYPE_FOUR]]],'id',['id','type','uptime','remain_day','is_remain_today','pause_days','finish_remain_day']); 89 + $list = $this->project->list(['extend_type'=>Project::TYPE_ZERO,'type'=>['in',[Project::TYPE_TWO,Project::TYPE_THREE,Project::TYPE_FOUR,Project::TYPE_SIX]]],'id',['id','type','uptime','remain_day','is_remain_today','pause_days','finish_remain_day','bm_finish_remain_day']);
90 foreach ($list as $item){ 90 foreach ($list as $item){
91 $deploy_build = $this->deployBuild->read(['project_id'=>$item['id']],['service_duration','seo_service_duration','plan','seo_plan']); 91 $deploy_build = $this->deployBuild->read(['project_id'=>$item['id']],['service_duration','seo_service_duration','plan','seo_plan']);
92 echo 'start->项目id:' . $item['id'] . '执行时间:'. date('Y-m-d H:i:s') . PHP_EOL; 92 echo 'start->项目id:' . $item['id'] . '执行时间:'. date('Y-m-d H:i:s') . PHP_EOL;
@@ -123,19 +123,15 @@ class RemainDay extends Command @@ -123,19 +123,15 @@ class RemainDay extends Command
123 //白帽版本的系统 123 //白帽版本的系统
124 if($deploy_build['seo_plan'] == 1){ 124 if($deploy_build['seo_plan'] == 1){
125 if($deploy_build['seo_service_duration'] != 0){ 125 if($deploy_build['seo_service_duration'] != 0){
126 - if($item['uptime']){  
127 - $diff = time() - strtotime($item['uptime']);  
128 - $compliance_day = floor($diff / (60 * 60 * 24)); 126 + if($item['bm_finish_remain_day']){
  127 + $compliance_day = (int)$item['bm_finish_remain_day'];
129 $seo_remain_day = $deploy_build['seo_service_duration'] - $compliance_day; 128 $seo_remain_day = $deploy_build['seo_service_duration'] - $compliance_day;
130 }else{ 129 }else{
131 $seo_remain_day = $deploy_build['seo_service_duration']; 130 $seo_remain_day = $deploy_build['seo_service_duration'];
132 } 131 }
133 -// if($seo_remain_day < 0){  
134 -// $seo_remain_day = 0;  
135 -// }  
136 if($deploy_build['plan'] == 0 && $seo_remain_day < 0 && $deploy_build['seo_service_duration'] != 0){//只有白帽版本的项目且剩余服务时常为0,放入未续费中 132 if($deploy_build['plan'] == 0 && $seo_remain_day < 0 && $deploy_build['seo_service_duration'] != 0){//只有白帽版本的项目且剩余服务时常为0,放入未续费中
137 // $this->project->edit(['seo_remain_day'=>$seo_remain_day,'finish_remain_day'=>$compliance_day ?? 0,'extend_type'=>Project::TYPE_FIVE],['id'=>$item['id']]); 133 // $this->project->edit(['seo_remain_day'=>$seo_remain_day,'finish_remain_day'=>$compliance_day ?? 0,'extend_type'=>Project::TYPE_FIVE],['id'=>$item['id']]);
138 - $this->project->edit(['seo_remain_day'=>$seo_remain_day,'finish_remain_day'=>$compliance_day ?? 0],['id'=>$item['id']]); 134 + $this->project->edit(['seo_remain_day'=>$seo_remain_day,'bm_finish_remain_day'=>$compliance_day ?? 0],['id'=>$item['id']]);
139 }else{ 135 }else{
140 //同时包括白帽版本+默认版本的项目 136 //同时包括白帽版本+默认版本的项目
141 $this->project->edit(['seo_remain_day'=>$seo_remain_day],['id'=>$item['id']]); 137 $this->project->edit(['seo_remain_day'=>$seo_remain_day],['id'=>$item['id']]);
@@ -79,11 +79,11 @@ class RankDataLog extends BaseCommands @@ -79,11 +79,11 @@ class RankDataLog extends BaseCommands
79 $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')){ 80 if(Str::endsWith($log->api_no, '_bmseo')){
81 //白帽版 81 //白帽版
82 - (new RankDataLogic())->save_rank_bmseo($log->project_id, $log->api_no, $res); 82 + $is_compliance = (new RankDataLogic())->save_rank_bmseo($log->project_id, $log->api_no, $res);
83 }else{ 83 }else{
84 $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);
85 - $log->is_compliance = $is_compliance;  
86 } 85 }
  86 + $log->is_compliance = $is_compliance;
87 $log->status = 1; 87 $log->status = 1;
88 $log->save(); 88 $log->save();
89 89
@@ -4,12 +4,16 @@ namespace App\Console\Commands\Tdk; @@ -4,12 +4,16 @@ namespace App\Console\Commands\Tdk;
4 4
5 5
6 use App\Helper\Arr; 6 use App\Helper\Arr;
  7 +use App\Models\Blog\BlogCategory;
  8 +use App\Models\CustomModule\CustomModuleCategory;
7 use App\Models\News\News; 9 use App\Models\News\News;
8 use App\Models\News\NewsCategory; 10 use App\Models\News\NewsCategory;
  11 +use App\Models\Product\Category;
9 use App\Models\Product\Keyword; 12 use App\Models\Product\Keyword;
10 use App\Models\Project\KeywordPrefix; 13 use App\Models\Project\KeywordPrefix;
11 use App\Models\Project\Project; 14 use App\Models\Project\Project;
12 use App\Models\Project\ProjectUpdateTdk; 15 use App\Models\Project\ProjectUpdateTdk;
  16 +use App\Models\Template\BCustomTemplate;
13 use App\Services\ProjectServer; 17 use App\Services\ProjectServer;
14 use App\Utils\LogUtils; 18 use App\Utils\LogUtils;
15 use Illuminate\Console\Command; 19 use Illuminate\Console\Command;
@@ -55,11 +59,14 @@ class RerunSeoTdk extends Command @@ -55,11 +59,14 @@ class RerunSeoTdk extends Command
55 */ 59 */
56 public function handle() 60 public function handle()
57 { 61 {
58 - $project_ids = Project::where('type', Project::TYPE_TWO)->pluck('id')->toArray(); 62 + $where = [
  63 + 'id' => 624
  64 + ];
  65 + $project_ids = Project::where('type', Project::TYPE_TWO)->where($where)->pluck('id')->toArray();
59 foreach ($project_ids as $project_id){ 66 foreach ($project_ids as $project_id){
60 try { 67 try {
61 ProjectServer::useProject($project_id); 68 ProjectServer::useProject($project_id);
62 - $this->judgeAnomalies($project_id); 69 + $this->changeCompanyName($project_id);
63 DB::disconnect('custom_mysql'); 70 DB::disconnect('custom_mysql');
64 }catch (\Exception $e){ 71 }catch (\Exception $e){
65 dump($e->getMessage()); 72 dump($e->getMessage());
@@ -68,6 +75,25 @@ class RerunSeoTdk extends Command @@ -68,6 +75,25 @@ class RerunSeoTdk extends Command
68 } 75 }
69 76
70 /** 77 /**
  78 + * 换了公司英文名的
  79 + * @author zbj
  80 + * @date 2025/7/18
  81 + */
  82 + public function changeCompanyName($project_id){
  83 + $row1 = BCustomTemplate::where('description', 'like', '%BlueQ Biotechnology%')->update(['description' => '']);
  84 + $row2 = Category::where('seo_des', 'like', '%BlueQ Biotechnology%')->update(['seo_des' => '']);
  85 + $row3 = Keyword::where('seo_description', 'like', '%BlueQ Biotechnology%')->update(['seo_description' => '']);
  86 + $row4 = Keyword::where('keyword_content', 'like', '%BlueQ Biotechnology%')->update(['keyword_content' => '']);
  87 + $row5 = BlogCategory::where('seo_des', 'like', '%BlueQ Biotechnology%')->update(['seo_des' => '']);
  88 + $row6 = NewsCategory::where('seo_des', 'like', '%BlueQ Biotechnology%')->update(['seo_des' => '']);
  89 + $row7 = CustomModuleCategory::where('seo_description', 'like', '%BlueQ Biotechnology%')->update(['seo_description' => '']);
  90 +
  91 +
  92 + dump($row1,$row2,$row3,$row4,$row5,$row6,$row7);
  93 + }
  94 +
  95 +
  96 + /**
71 * 判断seo_title 前缀有wholesale或cheap或buy的词,后缀也有 manufacturer,factory,exporter,company 97 * 判断seo_title 前缀有wholesale或cheap或buy的词,后缀也有 manufacturer,factory,exporter,company
72 * 判断关键词最后一个词是前缀的词,前后缀都不拼 98 * 判断关键词最后一个词是前缀的词,前后缀都不拼
73 * @author zbj 99 * @author zbj
@@ -24,6 +24,7 @@ class Kernel extends ConsoleKernel @@ -24,6 +24,7 @@ class Kernel extends ConsoleKernel
24 $schedule->command('sync_channel')->dailyAt('06:00')->withoutOverlapping(1); // 渠道信息,每天执行一次 24 $schedule->command('sync_channel')->dailyAt('06:00')->withoutOverlapping(1); // 渠道信息,每天执行一次
25 $schedule->command('inquiry_count')->dailyAt('01:00')->withoutOverlapping(1); // 询盘统计数据,每天凌晨执行一次 25 $schedule->command('inquiry_count')->dailyAt('01:00')->withoutOverlapping(1); // 询盘统计数据,每天凌晨执行一次
26 $schedule->command('share_user')->dailyAt('01:20')->withoutOverlapping(1);// 每天凌晨1点执行一次 26 $schedule->command('share_user')->dailyAt('01:20')->withoutOverlapping(1);// 每天凌晨1点执行一次
  27 + $schedule->command('ai_domain')->dailyAt('01:20')->withoutOverlapping(1);// 每天凌晨1点执行一次(同步ai域名)
27 $schedule->command('last_inquiry')->dailyAt('04:00')->withoutOverlapping(1);// 最近一次询盘信息 28 $schedule->command('last_inquiry')->dailyAt('04:00')->withoutOverlapping(1);// 最近一次询盘信息
28 $schedule->command('update_seo_tdk_crontab')->dailyAt('20:00')->withoutOverlapping(1); //更新上线项目TDK 29 $schedule->command('update_seo_tdk_crontab')->dailyAt('20:00')->withoutOverlapping(1); //更新上线项目TDK
29 $schedule->command('sync_manager')->dailyAt('01:00')->withoutOverlapping(1); //TODO::手机号码同步 每天执行一次 30 $schedule->command('sync_manager')->dailyAt('01:00')->withoutOverlapping(1); //TODO::手机号码同步 每天执行一次
@@ -320,7 +320,8 @@ class NewsController extends BaseController @@ -320,7 +320,8 @@ class NewsController extends BaseController
320 ],[ 320 ],[
321 'keyword.required' => 'keyword不能为空', 321 'keyword.required' => 'keyword不能为空',
322 ]); 322 ]);
323 - $data = curl_get('http://gnews.globalso.com/gnews_news.php?keyword='.$this->param['keyword'],true); 323 +
  324 + $data = curl_get('http://gnews.globalso.com/gnews_news.php?keyword='.str_replace(' ', '+', $this->param['keyword']),true);
324 if(isset($data['data']['p'][0]) && !empty($data['data']['p'][0])){ 325 if(isset($data['data']['p'][0]) && !empty($data['data']['p'][0])){
325 $data['data']['p'][0] = str_replace('&nbsp' ,' ',$data['data']['p'][0]); 326 $data['data']['p'][0] = str_replace('&nbsp' ,' ',$data['data']['p'][0]);
326 } 327 }
@@ -174,7 +174,7 @@ class CustomTemplateLogic extends BaseLogic @@ -174,7 +174,7 @@ class CustomTemplateLogic extends BaseLogic
174 $six_read = $this->param['six_read'] ?? 0;//5.0数据时,是否按6.0显示 174 $six_read = $this->param['six_read'] ?? 0;//5.0数据时,是否按6.0显示
175 if($is_upgrade == 0 || $six_read == 0) { 175 if($is_upgrade == 0 || $six_read == 0) {
176 $this->param['url'] = RouteMap::setRoute($this->param['url'], RouteMap::SOURCE_PAGE, $id, $this->user['project_id']); 176 $this->param['url'] = RouteMap::setRoute($this->param['url'], RouteMap::SOURCE_PAGE, $id, $this->user['project_id']);
177 - if(($this->param['url'] == 'news') || ($this->param['url'] == 'product') || ($this->param['url'] == 'blog')){ 177 + if(($this->param['url'] == 'news') || ($this->param['url'] == 'products') || ($this->param['url'] == 'blog')){
178 $this->fail('不允许创建路由为:'.$this->param['url']); 178 $this->fail('不允许创建路由为:'.$this->param['url']);
179 } 179 }
180 } 180 }
@@ -22,6 +22,7 @@ use App\Models\RankData\IndexedPages; @@ -22,6 +22,7 @@ use App\Models\RankData\IndexedPages;
22 use App\Models\RankData\IndexedPages as IndexedPagesModel; 22 use App\Models\RankData\IndexedPages as IndexedPagesModel;
23 use App\Models\RankData\RankData; 23 use App\Models\RankData\RankData;
24 use App\Models\RankData\RankDataBmseo; 24 use App\Models\RankData\RankDataBmseo;
  25 +use App\Models\RankData\RankDataLog;
25 use App\Models\RankData\RankWeek; 26 use App\Models\RankData\RankWeek;
26 use App\Models\RankData\RankWeek as RankWeekModel; 27 use App\Models\RankData\RankWeek as RankWeekModel;
27 use App\Models\RankData\RecommDomain; 28 use App\Models\RankData\RecommDomain;
@@ -709,6 +710,28 @@ class RankDataLogic extends BaseLogic @@ -709,6 +710,28 @@ class RankDataLogic extends BaseLogic
709 $first_ten_pages_num ++; 710 $first_ten_pages_num ++;
710 } 711 }
711 } 712 }
  713 +
  714 + //保证关键词数
  715 + $keyword_num = DeployBuild::where('project_id', $project_id)->value('keyword_num');
  716 + if($keyword_num){
  717 + $is_compliance = $first_page_num >= $keyword_num;
  718 + }else{
  719 + $is_compliance = 0;
  720 + }
  721 +
  722 + if ($keyword_num && $is_compliance) {
  723 + Log::channel('rank_data')->info('项目' . $project_id . '白帽版:关键词达标'. $keyword_num .' - ' . $first_page_num);
  724 +
  725 + $compliance_log = RankDataLog::where('api_no', $api_no)->where('date', date('Y-m-d'))->where('is_compliance', 1)->first();
  726 + if (!$compliance_log) {
  727 + $compliance_day = Project::where(['id' => $project_id])->value('finish_remain_day') ?: 0;
  728 + Project::where('id', $project_id)->update(['bm_is_remain_today' => 1, 'bm_finish_remain_day' => $compliance_day + 1]);
  729 + Log::channel('rank_data')->info('项目' . $project_id . '白帽版:达标天数+1:' . ($compliance_day + 1));
  730 + }
  731 + }else {
  732 + Log::channel('rank_data')->info('项目' . $project_id . '白帽版:关键词未达标'. $keyword_num .' - ' . $first_page_num);
  733 + }
  734 +
712 $where = [ 735 $where = [
713 'project_id' => $project_id, 736 'project_id' => $project_id,
714 'api_no' => $api_no, 737 'api_no' => $api_no,
@@ -728,7 +751,7 @@ class RankDataLogic extends BaseLogic @@ -728,7 +751,7 @@ class RankDataLogic extends BaseLogic
728 $model->updated_date = date('Y-m-d'); 751 $model->updated_date = date('Y-m-d');
729 $model->save(); 752 $model->save();
730 753
731 - return true; 754 + return $is_compliance;
732 } 755 }
733 756
734 /** 757 /**