正在显示
1 个修改的文件
包含
83 行增加
和
58 行删除
| @@ -11,6 +11,7 @@ use App\Models\Project\ProjectKeyword; | @@ -11,6 +11,7 @@ use App\Models\Project\ProjectKeyword; | ||
| 11 | use App\Models\RankData\RankData; | 11 | use App\Models\RankData\RankData; |
| 12 | use App\Models\WebSetting\WebSetting; | 12 | use App\Models\WebSetting\WebSetting; |
| 13 | use App\Services\AiBlogService; | 13 | use App\Services\AiBlogService; |
| 14 | +use App\Services\DingService; | ||
| 14 | use App\Services\ProjectServer; | 15 | use App\Services\ProjectServer; |
| 15 | use Illuminate\Console\Command; | 16 | use Illuminate\Console\Command; |
| 16 | use Illuminate\Support\Facades\DB; | 17 | use Illuminate\Support\Facades\DB; |
| @@ -62,52 +63,64 @@ class AiBlogAutoPublish extends Command | @@ -62,52 +63,64 @@ class AiBlogAutoPublish extends Command | ||
| 62 | $projects = Project::where('is_ai_blog', 1)->get(); | 63 | $projects = Project::where('is_ai_blog', 1)->get(); |
| 63 | 64 | ||
| 64 | foreach ($projects as $project) { | 65 | foreach ($projects as $project) { |
| 65 | - $this->output("项目{$project->id}开始自动发布"); | ||
| 66 | - if(!$project->deploy_optimize['is_ai_blog_send']){ | ||
| 67 | - $this->output("项目{$project->id}未开启自动发布" . $project->deploy_optimize['start_date']); | ||
| 68 | - continue; | ||
| 69 | - } | ||
| 70 | - if(($project->deploy_optimize['start_date'] > date('Y-m-d')) || !$project->deploy_optimize['start_date']){ | ||
| 71 | - $this->output("项目{$project->id}未到推广时间" . $project->deploy_optimize['start_date']); | ||
| 72 | - continue; | ||
| 73 | - } | ||
| 74 | - $next_auto_date = AiBlogTaskModel::where('project_id', $project->id)->where('type', 2)->whereNotNull('next_auto_date')->orderBy('id', 'desc')->value('next_auto_date'); | ||
| 75 | - if($next_auto_date && $next_auto_date > date('Y-m-d')){ | ||
| 76 | - $this->output("项目{$project->id}未到执行时间" . $next_auto_date); | ||
| 77 | - continue; | ||
| 78 | - } | ||
| 79 | - //核心关键词+网站关键词 | ||
| 80 | - $main_keywords = ProjectKeyword::where('project_id', $project->id)->value('main_keyword'); | ||
| 81 | - $main_keywords = explode("\r\n", $main_keywords); | ||
| 82 | - ProjectServer::useProject($project->id); | ||
| 83 | - $site_keywords = WebSetting::where('project_id', $project->id)->value('keyword'); | ||
| 84 | - DB::disconnect('custom_mysql'); | ||
| 85 | - $site_keywords = explode(",", $site_keywords); | ||
| 86 | - $keywords = array_filter(array_merge($main_keywords, $site_keywords)); | ||
| 87 | - $keywords = array_map('trim', $keywords); | ||
| 88 | - if (empty($keywords)) { | ||
| 89 | - $this->output("项目{$project->id}未获取到关键词"); | ||
| 90 | - continue; | ||
| 91 | - } | ||
| 92 | - $last_task = AiBlogTaskModel::where('project_id', $project->id)->where('type', 2)->orderBy('id', 'desc')->first(); | ||
| 93 | - $compliance = RankData::where(['project_id' => $project->id, 'lang' => ''])->value('is_compliance'); | ||
| 94 | - $frequency = Project::typeBlogFrequency($project->deploy_optimize->send_ai_blog_frequency); | ||
| 95 | - $frequency = explode('-', $frequency); | ||
| 96 | - //1、之前测试那批项目,按照正常频率发送; | ||
| 97 | - //2、未达标的项目,开启AIblog, 并立即推送三篇; | ||
| 98 | - //3、其他项目等下下周 1 (2025-03-17)开始推送第一篇, 之后按照正频率发送; | ||
| 99 | - if (!$last_task) { | ||
| 100 | - if(!$compliance) { | ||
| 101 | - for ($i = 0; $i < 3; $i++) { | ||
| 102 | - $this->createTask($keywords, $project->id, $frequency); | ||
| 103 | - } | ||
| 104 | - }else{ | ||
| 105 | - if(date('Y-m-d') >= '2025-03-17'){ | ||
| 106 | - $this->createTask($keywords, $project->id, $frequency); | 66 | + try { |
| 67 | + $this->output("项目{$project->id}开始自动发布"); | ||
| 68 | + if(!$project->deploy_optimize['is_ai_blog_send']){ | ||
| 69 | + $this->output("项目{$project->id}未开启自动发布" . $project->deploy_optimize['start_date']); | ||
| 70 | + continue; | ||
| 71 | + } | ||
| 72 | + if(($project->deploy_optimize['start_date'] > date('Y-m-d')) || !$project->deploy_optimize['start_date']){ | ||
| 73 | + $this->output("项目{$project->id}未到推广时间" . $project->deploy_optimize['start_date']); | ||
| 74 | + continue; | ||
| 75 | + } | ||
| 76 | + $next_auto_date = AiBlogTaskModel::where('project_id', $project->id)->where('type', 2)->whereNotNull('next_auto_date')->orderBy('id', 'desc')->value('next_auto_date'); | ||
| 77 | + if($next_auto_date && $next_auto_date > date('Y-m-d')){ | ||
| 78 | + $this->output("项目{$project->id}未到执行时间" . $next_auto_date); | ||
| 79 | + continue; | ||
| 80 | + } | ||
| 81 | + //核心关键词+网站关键词 | ||
| 82 | + $main_keywords = ProjectKeyword::where('project_id', $project->id)->value('main_keyword'); | ||
| 83 | + $main_keywords = explode("\r\n", $main_keywords); | ||
| 84 | + ProjectServer::useProject($project->id); | ||
| 85 | + $site_keywords = WebSetting::where('project_id', $project->id)->value('keyword'); | ||
| 86 | + DB::disconnect('custom_mysql'); | ||
| 87 | + $site_keywords = explode(",", $site_keywords); | ||
| 88 | + $keywords = array_filter(array_merge($main_keywords, $site_keywords)); | ||
| 89 | + $keywords = array_map('trim', $keywords); | ||
| 90 | + if (empty($keywords)) { | ||
| 91 | + $this->output("项目{$project->id}未获取到关键词"); | ||
| 92 | + continue; | ||
| 93 | + } | ||
| 94 | + $last_task = AiBlogTaskModel::where('project_id', $project->id)->where('type', 2)->orderBy('id', 'desc')->first(); | ||
| 95 | + $compliance = RankData::where(['project_id' => $project->id, 'lang' => ''])->value('is_compliance'); | ||
| 96 | + $frequency = Project::typeBlogFrequency($project->deploy_optimize->send_ai_blog_frequency); | ||
| 97 | + $frequency = explode('-', $frequency); | ||
| 98 | + //1、之前测试那批项目,按照正常频率发送; | ||
| 99 | + //2、未达标的项目,开启AIblog, 并立即推送三篇; | ||
| 100 | + //3、其他项目等下下周 1 (2025-03-17)开始推送第一篇, 之后按照正频率发送; | ||
| 101 | + if (!$last_task) { | ||
| 102 | + if(!$compliance) { | ||
| 103 | + for ($i = 0; $i < 3; $i++) { | ||
| 104 | + $this->createTask($keywords, $project->id, $frequency); | ||
| 105 | + } | ||
| 106 | + }else{ | ||
| 107 | + if(date('Y-m-d') >= '2025-03-17'){ | ||
| 108 | + $this->createTask($keywords, $project->id, $frequency); | ||
| 109 | + } | ||
| 107 | } | 110 | } |
| 111 | + } else { | ||
| 112 | + $this->createTask($keywords, $project->id, $frequency); | ||
| 108 | } | 113 | } |
| 109 | - } else { | ||
| 110 | - $this->createTask($keywords, $project->id, $frequency); | 114 | + }catch (\Exception $e){ |
| 115 | + (new DingService())->handle([ | ||
| 116 | + 'keyword' => 'AI_BLOG自动发布失败', | ||
| 117 | + 'msg' => '项目ID:' . $project->id . PHP_EOL . | ||
| 118 | + '错误信息:' . $e->getMessage() . PHP_EOL . | ||
| 119 | + '错误文件:' . $e->getFile() . PHP_EOL . | ||
| 120 | + '错误行数:' . $e->getLine(), | ||
| 121 | + 'isAtAll' => true, // 是否@所有人 | ||
| 122 | + ]); | ||
| 123 | + $this->output("自动发布失败:" . $e->getMessage() . $e->getFile() . $e->getLine()); | ||
| 111 | } | 124 | } |
| 112 | } | 125 | } |
| 113 | } | 126 | } |
| @@ -159,25 +172,37 @@ class AiBlogAutoPublish extends Command | @@ -159,25 +172,37 @@ class AiBlogAutoPublish extends Command | ||
| 159 | ->get(); | 172 | ->get(); |
| 160 | 173 | ||
| 161 | foreach ($projects as $project) { | 174 | foreach ($projects as $project) { |
| 162 | - //未开启过 自动开启 | ||
| 163 | - if (!AiBlogOpenLog::isOpened($project->id)) { | ||
| 164 | - //创建AI博客项目 | ||
| 165 | - $deploy_optimize = $project->deploy_optimize; | ||
| 166 | - (new ProjectLogic())->setAiBlog($project->id, $project->main_lang_id, 1, $project->company, $deploy_optimize->company_en_name, $deploy_optimize->company_en_description); | 175 | + try { |
| 176 | + //未开启过 自动开启 | ||
| 177 | + if (!AiBlogOpenLog::isOpened($project->id)) { | ||
| 178 | + //创建AI博客项目 | ||
| 179 | + $deploy_optimize = $project->deploy_optimize; | ||
| 180 | + (new ProjectLogic())->setAiBlog($project->id, $project->main_lang_id, 1, $project->company, $deploy_optimize->company_en_name, $deploy_optimize->company_en_description); | ||
| 167 | 181 | ||
| 168 | - //开启 | ||
| 169 | - $project->is_ai_blog = 1; | 182 | + //开启 |
| 183 | + $project->is_ai_blog = 1; | ||
| 170 | 184 | ||
| 171 | - //开启自动发布 | ||
| 172 | - $project->deploy_optimize->is_ai_blog_send = 1; | ||
| 173 | - $project->deploy_optimize->save(); | 185 | + //开启自动发布 |
| 186 | + $project->deploy_optimize->is_ai_blog_send = 1; | ||
| 187 | + $project->deploy_optimize->save(); | ||
| 174 | 188 | ||
| 175 | - $project->save(); | 189 | + $project->save(); |
| 176 | 190 | ||
| 177 | - //开启日志 | ||
| 178 | - AiBlogOpenLog::addLog($project->id); | 191 | + //开启日志 |
| 192 | + AiBlogOpenLog::addLog($project->id); | ||
| 179 | 193 | ||
| 180 | - $this->output('自动开启项目:' . $project->id); | 194 | + $this->output('自动开启项目:' . $project->id); |
| 195 | + } | ||
| 196 | + }catch (\Exception $e){ | ||
| 197 | + (new DingService())->handle([ | ||
| 198 | + 'keyword' => 'AI_BLOG自动开启失败', | ||
| 199 | + 'msg' => '项目ID:' . $project->id . PHP_EOL . | ||
| 200 | + '错误信息:' . $e->getMessage() . PHP_EOL . | ||
| 201 | + '错误文件:' . $e->getFile() . PHP_EOL . | ||
| 202 | + '错误行数:' . $e->getLine(), | ||
| 203 | + 'isAtAll' => true, // 是否@所有人 | ||
| 204 | + ]); | ||
| 205 | + $this->output("自动开启失败:" . $e->getMessage() . $e->getFile() . $e->getLine()); | ||
| 181 | } | 206 | } |
| 182 | } | 207 | } |
| 183 | sleep(60); | 208 | sleep(60); |
-
请 注册 或 登录 后发表评论