作者 lyh

Merge branch 'master' of http://47.244.231.31:8099/zhl/globalso-v6 into lyh-server

@@ -172,8 +172,8 @@ class SyncInquiryProject extends Command @@ -172,8 +172,8 @@ class SyncInquiryProject extends Command
172 ProjectServer::useProject($val->id); 172 ProjectServer::useProject($val->id);
173 173
174 //排除白帽个人服务器项目 174 //排除白帽个人服务器项目
175 - $seo_type = WebSetting::where('project_id', $val->id)->value('seo_type');  
176 - if ($seo_type == 2) { 175 + $web_setting = WebSetting::where('project_id', $val->id)->first();
  176 + if (isset($web_setting->seo_type) && $web_setting->seo_type == 2) {
177 DB::disconnect('custom_mysql'); 177 DB::disconnect('custom_mysql');
178 continue; 178 continue;
179 } 179 }
@@ -63,7 +63,7 @@ class KeywordPageAiContent extends Command @@ -63,7 +63,7 @@ class KeywordPageAiContent extends Command
63 while (true) { 63 while (true) {
64 $task = ProjectKeywordAiTask::getPendingTask(); 64 $task = ProjectKeywordAiTask::getPendingTask();
65 if (!$task) { 65 if (!$task) {
66 - sleep(10); 66 + sleep(60);
67 continue; 67 continue;
68 } 68 }
69 $project_id = $task->project_id; 69 $project_id = $task->project_id;
@@ -78,7 +78,17 @@ class KeywordPageAiContent extends Command @@ -78,7 +78,17 @@ class KeywordPageAiContent extends Command
78 78
79 ProjectKeywordAiTask::finish($task->id, $update_rows); 79 ProjectKeywordAiTask::finish($task->id, $update_rows);
80 80
81 - $update_rows && $this->sendNotify($project_id); 81 +// $update_rows && $this->sendNotify($project_id);
  82 +
  83 + if($update_rows){
  84 + //缓存 在发送页面更新的项目数据 id
  85 + $notify_cache_key = "keyword_page_ai_content_notify_{$project_id}";
  86 + if(Redis::setnx($notify_cache_key, 1)){
  87 + Redis::expire($notify_cache_key, 120);
  88 +
  89 + $this->sendNotify($project_id); //通知主站按需更新
  90 + }
  91 + }
82 92
83 } catch (ValidateException $e) { 93 } catch (ValidateException $e) {
84 echo getmypid() . ' ' . date('Y-m-d H:i:s') . 'line: ' . $e->getLine() . ' error: ' . $project_id . '->' . $e->getMessage() . PHP_EOL; 94 echo getmypid() . ' ' . date('Y-m-d H:i:s') . 'line: ' . $e->getLine() . ' error: ' . $project_id . '->' . $e->getMessage() . PHP_EOL;
@@ -221,7 +221,7 @@ class UpdateSeoTdk extends Command @@ -221,7 +221,7 @@ class UpdateSeoTdk extends Command
221 while (true) { 221 while (true) {
222 $task = ProjectUpdateTdk::getPendingTask(); 222 $task = ProjectUpdateTdk::getPendingTask();
223 if (!$task) { 223 if (!$task) {
224 - sleep(10); 224 + sleep(60);
225 continue; 225 continue;
226 } 226 }
227 $project_id = $task->project_id; 227 $project_id = $task->project_id;
@@ -462,7 +462,16 @@ class UpdateSeoTdk extends Command @@ -462,7 +462,16 @@ class UpdateSeoTdk extends Command
462 //通知C端更新界面 462 //通知C端更新界面
463 // $notify_master && $this->sendNotify($project_id, 1); //通知主站更新 463 // $notify_master && $this->sendNotify($project_id, 1); //通知主站更新
464 // $notify_keyword && $this->sendNotify($project_id, 4); //通知聚合页更新 464 // $notify_keyword && $this->sendNotify($project_id, 4); //通知聚合页更新
465 - $notify_master && $this->sendNotify($project_id, 2); //通知主站按需更新 465 +
  466 + if($notify_master){
  467 + //缓存 在发送页面更新的项目数据 id
  468 + $notify_cache_key = "seo_tdk_update_notify_{$project_id}";
  469 + if(Redis::setnx($notify_cache_key, 1)){
  470 + Redis::expire($notify_cache_key, 120);
  471 +
  472 + $this->sendNotify($project_id, 2); //通知主站按需更新
  473 + }
  474 + }
466 } 475 }
467 476
468 public function getPrompt($project_id, $prompt, $table, $data, $field){ 477 public function getPrompt($project_id, $prompt, $table, $data, $field){
@@ -14,6 +14,7 @@ use App\Models\Devops\ServerConfig; @@ -14,6 +14,7 @@ use App\Models\Devops\ServerConfig;
14 use App\Models\Devops\ServersIp; 14 use App\Models\Devops\ServersIp;
15 use App\Models\Domain\DomainCreateTask; 15 use App\Models\Domain\DomainCreateTask;
16 use App\Models\Domain\DomainInfo; 16 use App\Models\Domain\DomainInfo;
  17 +use App\Models\Geo\GeoConf;
17 use App\Models\Inquiry\InquiryInfo; 18 use App\Models\Inquiry\InquiryInfo;
18 use App\Models\Inquiry\InquiryRelayAi; 19 use App\Models\Inquiry\InquiryRelayAi;
19 use App\Models\Product\Category; 20 use App\Models\Product\Category;
@@ -53,6 +54,46 @@ class Temp extends Command @@ -53,6 +54,46 @@ class Temp extends Command
53 } 54 }
54 55
55 /** 56 /**
  57 + * geo项目匹配项目负责人
  58 + * @author Akun
  59 + * @date 2025/11/10 11:16
  60 + */
  61 + public function geoProjectMatchOptimist()
  62 + {
  63 + $project_list = DeployBuild::select('project_id')->where('seo_plan', '>', 0)->get();
  64 +
  65 + foreach ($project_list as $value) {
  66 + $project_id = $value['project_id'];
  67 +
  68 + $optimize_info = DeployOptimize::select(['optimist_mid', 'assist_mid'])->where('project_id', $project_id)->first();
  69 +
  70 + if ($optimize_info) {
  71 + $manager_id = 0;
  72 + if (isset($optimize_info->assist_mid) && $optimize_info->assist_mid) {
  73 + $manager_id = $optimize_info->assist_mid;
  74 + }
  75 + if (isset($optimize_info->optimist_mid) && $optimize_info->optimist_mid) {
  76 + $manager_id = $optimize_info->optimist_mid;
  77 + }
  78 +
  79 + if ($manager_id) {
  80 + $geo_conf = GeoConf::where('project_id', $project_id)->first();
  81 + if (!$geo_conf) {
  82 + $geo_conf = new GeoConf();
  83 + $geo_conf->project_id = $project_id;
  84 + $geo_conf->manager_id = $manager_id;
  85 + } elseif (empty($geo_conf['manager_id'])) {
  86 + $geo_conf->manager_id = $manager_id;
  87 + }
  88 + $geo_conf->save();
  89 + }
  90 + }
  91 +
  92 + $this->output('project_id:' . $project_id . ',success');
  93 + }
  94 + }
  95 +
  96 + /**
56 * 4301项目特殊产品数据导入 97 * 4301项目特殊产品数据导入
57 * @return bool 98 * @return bool
58 * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception 99 * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
@@ -50,11 +50,9 @@ class EnterpriseProductLogic extends BaseLogic @@ -50,11 +50,9 @@ class EnterpriseProductLogic extends BaseLogic
50 50
51 51
52 /** 52 /**
53 - * @remark :批量保存外链数据  
54 - * @name :saveLinkData  
55 - * @author :lyh  
56 - * @method :post  
57 - * @time :2025/4/2 9:08 53 + * 批量保存外链数据
  54 + * TODO 约定参数, 验证参数, 参数兼容
  55 + * @return array
58 */ 56 */
59 public function saveLinkData(){ 57 public function saveLinkData(){
60 $linkModel = new GeoLink(); 58 $linkModel = new GeoLink();
@@ -69,7 +67,7 @@ class EnterpriseProductLogic extends BaseLogic @@ -69,7 +67,7 @@ class EnterpriseProductLogic extends BaseLogic
69 $data[] = [ 67 $data[] = [
70 'url'=>$v['url'], 68 'url'=>$v['url'],
71 'type'=>$linkModel::TYPE_LINK, 69 'type'=>$linkModel::TYPE_LINK,
72 - 'da_values'=>$v['da_values'], 70 + 'da'=>$v['da'] ?? 0, // FIXME 确定数据库字段
73 'project_id'=>$this->param['project_id'], 71 'project_id'=>$this->param['project_id'],
74 'send_time'=>$v['send_time'] ?? date('Y-m-d H:i:s') 72 'send_time'=>$v['send_time'] ?? date('Y-m-d H:i:s')
75 ]; 73 ];
@@ -563,7 +563,7 @@ class RankDataLogic extends BaseLogic @@ -563,7 +563,7 @@ class RankDataLogic extends BaseLogic
563 $without_project_ids = []; //不用处理排名的项目 563 $without_project_ids = []; //不用处理排名的项目
564 $without_extension_project_ids = [658]; //是否达标只统计主词的 564 $without_extension_project_ids = [658]; //是否达标只统计主词的
565 $extension_project_ids = [354]; //扩展词也到达标的 565 $extension_project_ids = [354]; //扩展词也到达标的
566 - $compliance_project_ids = [2163,257,823,1750,497,1006,2663]; //直接达标处理的 566 + $compliance_project_ids = [2163,257,823,1750,497,1006,2663,255]; //直接达标处理的
567 $ceaseProjectId = [354, 378, 649, 1226, 1283, 1703, 1893, 2066, 2250,2193,2399,1685, 3931,2273,3647,1934];//暂停的项目 567 $ceaseProjectId = [354, 378, 649, 1226, 1283, 1703, 1893, 2066, 2250,2193,2399,1685, 3931,2273,3647,1934];//暂停的项目
568 $uptimeProjectId = [1434,1812,276,2414,2974];//按上线时间统计的项目 568 $uptimeProjectId = [1434,1812,276,2414,2974];//按上线时间统计的项目
569 //一个项目多个api_no 569 //一个项目多个api_no
@@ -54,12 +54,12 @@ class ProjectUpdateTdk extends Base @@ -54,12 +54,12 @@ class ProjectUpdateTdk extends Base
54 $project_id = Redis::rpop('updateSeoTdk'); 54 $project_id = Redis::rpop('updateSeoTdk');
55 $data = []; 55 $data = [];
56 if($project_id){ 56 if($project_id){
57 - $data = self::where('status', self::STATUS_PENDING)->where('project_id', $project_id)->orderBy('id', 'asc')->first(); 57 + $data = self::select(['id','project_id'])->where('status', self::STATUS_PENDING)->where('project_id', $project_id)->orderBy('id', 'asc')->first();
58 } 58 }
59 if($data){ 59 if($data){
60 return $data; 60 return $data;
61 } 61 }
62 - return self::where('status', self::STATUS_PENDING)->orderBy('id', 'asc')->first(); 62 + return self::select(['id','project_id'])->where('status', self::STATUS_PENDING)->orderBy('id', 'asc')->first();
63 } 63 }
64 64
65 /** 65 /**