|
...
|
...
|
@@ -21,11 +21,12 @@ use Illuminate\Console\Command; |
|
|
|
use App\Models\Project\AiBlogTask as AiBlogTaskModel;
|
|
|
|
use Illuminate\Support\Facades\Cache;
|
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
use Illuminate\Support\Facades\Redis;
|
|
|
|
use function Symfony\Component\String\s;
|
|
|
|
|
|
|
|
/***
|
|
|
|
* @remark :根据项目更新blog列表
|
|
|
|
* @name :AiBlogListTask
|
|
|
|
* @name :AiBlogListProjectTask
|
|
|
|
* @author :lyh
|
|
|
|
* @method :post
|
|
|
|
* @time :2025/3/6 9:45
|
|
...
|
...
|
@@ -37,24 +38,45 @@ class AiBlogListTask extends Command |
|
|
|
*
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected $signature = 'save_ai_blog_list {project_id}';
|
|
|
|
protected $signature = 'save_ai_blog_list_task';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The console command description.
|
|
|
|
*
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected $description = '生成blog列表';
|
|
|
|
protected $description = '生成blog列表页';
|
|
|
|
|
|
|
|
public function handle(){
|
|
|
|
$project_id = $this->argument('project_id');
|
|
|
|
@file_put_contents(storage_path('logs/lyh_error.log'), var_export('执行的项目id->'.$project_id, true) . PHP_EOL, FILE_APPEND);
|
|
|
|
while (true){
|
|
|
|
$task_id = $this->getTaskId();
|
|
|
|
if(empty($task_id)){
|
|
|
|
sleep(200);
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
$aiBlogTaskModel = new AiBlogTaskModel();
|
|
|
|
$info = $aiBlogTaskModel->read(['id'=>$task_id]);
|
|
|
|
if($info === false){
|
|
|
|
echo date('Y-m-d H:i:s').',当前数据不存在或者已被删除。'.PHP_EOL;
|
|
|
|
}
|
|
|
|
$project_id = $info['project_id'];
|
|
|
|
echo '执行的项目ID:'.$info['project_id'].PHP_EOL;
|
|
|
|
ProjectServer::useProject($project_id);
|
|
|
|
$projectAiSettingModel = new ProjectAiSetting();
|
|
|
|
$aiSettingInfo = $projectAiSettingModel->read(['project_id'=>$project_id]);
|
|
|
|
$this->updateBlogList($aiSettingInfo);
|
|
|
|
$res = $this->updateBlogList($aiSettingInfo);
|
|
|
|
if($res){
|
|
|
|
$aiBlogTaskModel->edit(['status'=>2],['id'=>$task_id]);
|
|
|
|
}else{
|
|
|
|
if($info['sort'] >= 5){
|
|
|
|
$aiBlogTaskModel->edit(['status'=>9],['id'=>$task_id]);
|
|
|
|
}else{
|
|
|
|
$aiBlogTaskModel->edit(['status'=>9,'sort'=>($info['sort'] + 1)],['id'=>$task_id]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$this->curlDelRoute($project_id);
|
|
|
|
DB::disconnect('custom_mysql');
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
...
|
...
|
@@ -73,8 +95,8 @@ class AiBlogListTask extends Command |
|
|
|
$saveData = [];
|
|
|
|
$result = $aiBlogService->getAiBlogList($page,15);
|
|
|
|
if(!isset($result['status']) || $result['status'] != 200){
|
|
|
|
echo '请示失败。'.json_encode($result, JSON_UNESCAPED_UNICODE);
|
|
|
|
return true;
|
|
|
|
echo '请求失败。'.json_encode($result, JSON_UNESCAPED_UNICODE);
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
$total_page = $result['data']['total_page'];
|
|
|
|
//组装数据保存
|
|
...
|
...
|
@@ -90,6 +112,9 @@ class AiBlogListTask extends Command |
|
|
|
'route'=>$page,
|
|
|
|
'text'=>$result['data']['section'],
|
|
|
|
];
|
|
|
|
}else{
|
|
|
|
echo '请求失败。'.json_encode($result, JSON_UNESCAPED_UNICODE);
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$aiBlogListModel = new AiBlogList();
|
|
...
|
...
|
@@ -97,6 +122,7 @@ class AiBlogListTask extends Command |
|
|
|
//写一条路由信息
|
|
|
|
$aiBlogListModel->truncate();
|
|
|
|
$aiBlogListModel->insertAll($saveData);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
...
|
...
|
@@ -126,4 +152,27 @@ class AiBlogListTask extends Command |
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 获取任务id
|
|
|
|
* @param int $finish_at
|
|
|
|
* @return mixed
|
|
|
|
*/
|
|
|
|
public function getTaskId($finish_at = 2)
|
|
|
|
{
|
|
|
|
$keys = 'ai_blog_list_task';
|
|
|
|
$task_id = Redis::rpop($keys);
|
|
|
|
if (empty($task_id)) {
|
|
|
|
$aiBlogTaskModel = new AiBlogTaskModel();
|
|
|
|
$finish_at = date('Y-m-d H:i:s', strtotime('-' . $finish_at . ' hour'));
|
|
|
|
$ids = $aiBlogTaskModel->formatQuery(['status'=>$aiBlogTaskModel::STATUS_RUNNING, 'type'=>$aiBlogTaskModel::TYPE_LIST, 'updated_at'=>['<=',$finish_at]])->pluck('id');
|
|
|
|
if(!empty($ids)){
|
|
|
|
foreach ($ids as $id) {
|
|
|
|
Redis::lpush($keys, $id);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$task_id = Redis::rpop($keys);
|
|
|
|
}
|
|
|
|
return $task_id;
|
|
|
|
}
|
|
|
|
} |
...
|
...
|
|