作者 赵彬吉

ai blog

@@ -8,6 +8,7 @@ use App\Models\Ai\AiBlogOpenLog; @@ -8,6 +8,7 @@ use App\Models\Ai\AiBlogOpenLog;
8 use App\Models\Project\AiBlogTask as AiBlogTaskModel; 8 use App\Models\Project\AiBlogTask as AiBlogTaskModel;
9 use App\Models\Project\Project; 9 use App\Models\Project\Project;
10 use App\Models\Project\ProjectKeyword; 10 use App\Models\Project\ProjectKeyword;
  11 +use App\Models\RankData\RankData;
11 use App\Models\WebSetting\WebSetting; 12 use App\Models\WebSetting\WebSetting;
12 use App\Services\AiBlogService; 13 use App\Services\AiBlogService;
13 use App\Services\ProjectServer; 14 use App\Services\ProjectServer;
@@ -78,26 +79,38 @@ class AiBlogAutoPublish extends Command @@ -78,26 +79,38 @@ class AiBlogAutoPublish extends Command
78 $keywords = array_map('trim', $keywords); 79 $keywords = array_map('trim', $keywords);
79 if (empty($keywords)) { 80 if (empty($keywords)) {
80 $this->output("项目{$project->id}未获取到关键词"); 81 $this->output("项目{$project->id}未获取到关键词");
  82 + continue;
81 } 83 }
82 $last_task = AiBlogTaskModel::where('project_id', $project->id)->where('type', 2)->orderBy('id', 'desc')->first(); 84 $last_task = AiBlogTaskModel::where('project_id', $project->id)->where('type', 2)->orderBy('id', 'desc')->first();
83 - //如果没有发布过AI blog任务, 第一次提交3个任务 85 + $compliance = RankData::where(['project_id' => $project->id, 'lang' => ''])->value('is_compliance');
  86 + $frequency = Project::typeBlogFrequency($project->deploy_optimize->send_ai_blog_frequency);
  87 + $frequency = explode('-', $frequency);
  88 + //1、之前测试那批项目,按照正常频率发送;
  89 + //2、未达标的项目,开启AIblog, 并立即推送三篇;
  90 + //3、其他项目等下下周 1 (2025-03-17)开始推送第一篇, 之后按照正频率发送;
84 if (!$last_task) { 91 if (!$last_task) {
85 - for ($i = 0; $i < 3; $i++) {  
86 - $this->createTask($keywords, $project->id); 92 + if(!$compliance) {
  93 + for ($i = 0; $i < 3; $i++) {
  94 + $this->createTask($keywords, $project->id, $frequency);
  95 + }
  96 + }else{
  97 + if(date('Y-m-d') >= '2025-03-17'){
  98 + $this->createTask($keywords, $project->id, $frequency);
  99 + }
87 } 100 }
88 } else { 101 } else {
89 - $this->createTask($keywords, $project->id); 102 + $this->createTask($keywords, $project->id, $frequency);
90 } 103 }
91 } 104 }
92 } 105 }
93 106
94 - public function createTask($keywords, $project_id){ 107 + public function createTask($keywords, $project_id, $frequency){
95 $keyword = $keywords[array_rand($keywords)]; 108 $keyword = $keywords[array_rand($keywords)];
96 $aiBlogService = new AiBlogService($project_id); 109 $aiBlogService = new AiBlogService($project_id);
97 $result = $aiBlogService->setRoute($keyword)->createTask($keyword); 110 $result = $aiBlogService->setRoute($keyword)->createTask($keyword);
98 if ($result['status'] == 200) { 111 if ($result['status'] == 200) {
99 $aiBlogTaskModel = new AiBlogTaskModel(); 112 $aiBlogTaskModel = new AiBlogTaskModel();
100 - $next_auto_date = date('Y-m-d', strtotime('+' . mt_rand(3,6) . 'days')); //每3-6天自动发布 113 + $next_auto_date = date('Y-m-d', strtotime('+' . mt_rand($frequency[0],$frequency[1]) . 'days')); //每3-6天自动发布
101 $aiBlogTaskModel->addReturnId(['project_id' => $project_id, 'type' => 2, 'task_id' => $result['data']['task_id'], 'status' => 1, 'next_auto_date' => $next_auto_date]); 114 $aiBlogTaskModel->addReturnId(['project_id' => $project_id, 'type' => 2, 'task_id' => $result['data']['task_id'], 'status' => 1, 'next_auto_date' => $next_auto_date]);
102 115
103 ProjectServer::useProject($project_id); 116 ProjectServer::useProject($project_id);
@@ -61,14 +61,18 @@ class Project extends Base @@ -61,14 +61,18 @@ class Project extends Base
61 * @method :post 61 * @method :post
62 * @time :2025/3/15 10:29 62 * @time :2025/3/15 10:29
63 */ 63 */
64 - public static function typeBlogFrequency(){  
65 - return [ 64 + public static function typeBlogFrequency($val = 0){
  65 + $arr = [
66 1=>'1-2', 66 1=>'1-2',
67 2=>'2-3', 67 2=>'2-3',
68 3=>'2-4', 68 3=>'2-4',
69 4=>'3-5', 69 4=>'3-5',
70 5=>'5-7', 70 5=>'5-7',
71 ]; 71 ];
  72 + if($val){
  73 + return $arr[$val] ?? '';
  74 + }
  75 + return $arr;
72 } 76 }
73 77
74 /** 78 /**