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

namespace App\Console\Commands\Ai;

use App\Models\Ai\AiBlog;
use App\Models\Ai\AiBlogAuthor;
use App\Models\Ai\AiBlogList;
use App\Models\Domain\DomainInfo;
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;

/***
 * @remark :根据项目更新blog列表
 * @name   :AiBlogListProjectTask
 * @author :lyh
 * @method :post
 * @time   :2025/3/6 9:45
 */
class AiBlogListProjectTask extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'save_ai_blog_list {project_id}';

    /**
     * The console command description.
     *
     * @var string
     */
    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);
        ProjectServer::useProject($project_id);
        $projectAiSettingModel = new ProjectAiSetting();
        $aiSettingInfo = $projectAiSettingModel->read(['project_id'=>$project_id]);
        $this->updateBlogList($aiSettingInfo);
        $this->curlDelRoute($project_id);
        DB::disconnect('custom_mysql');
        return true;
    }

    /**
     * @remark :更新列表页数据
     * @name   :updateBlogList
     * @author :lyh
     * @method :post
     * @time   :2025/3/5 11:07
     */
    public function updateBlogList($aiSettingInfo){
        $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){
            echo '请示失败。'.json_encode($result, JSON_UNESCAPED_UNICODE);
            return true;
        }
        $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'],
                ];
            }
        }
        $aiBlogListModel = new AiBlogList();
        if(!empty($saveData)){
            //写一条路由信息
            $aiBlogListModel->truncate();
            $aiBlogListModel->insertAll($saveData);
        }
        return true;
    }

    /**
     * @remark :通知C端生成界面
     * @name   :sendNotice
     * @author :lyh
     * @method :post
     * @time   :2025/3/6 11:51
     */
    public function curlDelRoute($project_id){
        $domainModel = new DomainInfo();
        //获取项目域名
        $domain = $domainModel->getProjectIdDomain($project_id);
        if(!empty($domain)){
            $c_url = $domain.'api/update_page/';
            $param = [
                'project_id' => $project_id,
                'type' => 1,
                'route' => 3,
                'url' => ['top-blog'],
                'language'=> [],
                'is_sitemap' => 0
            ];
            http_post($c_url, json_encode($param));
        }
        return true;
    }
}