AiBlogListTask.php 2.9 KB
<?php
/**
 * @remark :
 * @name   :AiBlogTask.php
 * @author :lyh
 * @method :post
 * @time   :2025/2/14 11:14
 */

namespace App\Console\Commands\AiBlog;

use App\Models\Ai\AiBlog;
use App\Models\Ai\AiBlogAuthor;
use App\Models\Ai\AiBlogList;
use App\Models\Project\ProjectAiSetting;
use App\Models\RouteMap\RouteMap;
use App\Services\AiBlogService;
use App\Services\ProjectServer;
use Illuminate\Console\Command;
use App\Models\Project\AiBlogTask as AiBlogTaskModel;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\DB;
use function Symfony\Component\String\s;

class AiBlogListTask extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'save_ai_blog_list';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = '查询ai_blog是否已经生成';

    public function handle(){
        $aiBlogTaskModel = new AiBlogTaskModel();
        $lists = $aiBlogTaskModel->list(['type'=>3,'status'=>1]);
        foreach ($lists as $k => $v){
            echo '开始->项目id:' . $v['project_id'] . PHP_EOL . date('Y-m-d H:i:s');
            $projectAiSettingModel = new ProjectAiSetting();
            $aiSettingInfo = $projectAiSettingModel->read(['project_id'=>$v['project_id']]);
            if($aiSettingInfo === false){
                continue;
            }
            $aiBlogService = new AiBlogService();
            $aiBlogService->mch_id = $aiSettingInfo['mch_id'];
            $aiBlogService->key = $aiSettingInfo['key'];
            $page = 1;
            $saveData = [];
            $result = $aiBlogService->getAiBlogList($page,15);
            if(!isset($result['status']) && $result['status'] != 200){
                continue;
            }
            $total_page = $result['data']['total_page'];
            //组装数据保存
            $saveData[] = [
                'route'=>$page,
                'text'=>$result['data']['section'],
            ];
            while ($total_page > $page){
                $page++;
                $result = $aiBlogService->getAiBlogList($page,15);
                if(isset($result['status']) && $result['status'] == 200){
                    $saveData[] = [
                        'route'=>$page,
                        'text'=>$result['data']['section'],
                    ];
                }
            }
            //保存当前项目ai_blog数据
            ProjectServer::useProject($v['project_id']);
            $aiBlogListModel = new AiBlogList();
            if(!empty($saveData)){
                $aiBlogListModel->truncate();
                $aiBlogListModel->insertAll($saveData);
            }
            DB::disconnect('custom_mysql');
            //修改任务状态
            $aiBlogTaskModel->edit(['status'=>2],['id'=>$v['id']]);
            echo '结束->->项目id:' . $v['project_id'] . PHP_EOL . date('Y-m-d H:i:s');
        }
        return true;
    }
}