UpdateBuildConfiguration.php 5.5 KB
<?php
/**
 * @remark :
 * @name   :UpdateBuildConfiguration.php
 * @author :lyh
 * @method :post
 * @time   :2024/12/11 11:30
 */

namespace App\Console\Commands\Test;

use App\Models\Product\Column;
use App\Models\Product\Detail;
use App\Models\Product\Product;
use App\Models\Project\DeployBuild;
use App\Models\Project\Project;
use App\Services\ProjectServer;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;

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

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = '更新部署表中-产品-博客-新闻-是否开启可视化';

    /**
     * @remark :执行脚本
     * @name   :handle
     * @author :lyh
     * @method :post
     * @time   :2024/12/11 11:49
     */
    public function handles(){
        //查询当前的所有项目都开启可视化
        $buildModel = new DeployBuild();
        $lists = $buildModel->list();
        foreach ($lists as $k => $v){
            $v['configuration']['is_product'] = $v['configuration']['is_news'] = $v['configuration']['is_blogs'] = $v['configuration']['is_module'] = 1;
            $buildModel->edit(['configuration'=>json_encode($v['configuration'],true)],['id'=>$v['id']]);
            echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL;
        }
        echo date('Y-m-d H:i:s') . 'end' . PHP_EOL;
    }

    /**
     * @remark :清洗产品新描述数据
     * @name   :handles
     * @author :lyh
     * @method :post
     * @time   :2024/12/11 14:33
     */
    public function handle(){
        $projectModel = new Project();
        $list = $projectModel->list(['delete_status'=>0,'id'=>3050],'id',['id'],'asc');
        foreach ($list as $k => $v){
            echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL;
            ProjectServer::useProject($v['id']);
            $this->getProduct($v['id']);
            DB::disconnect('custom_mysql');
        }
        echo date('Y-m-d H:i:s') . 'end' . PHP_EOL;
    }

    /**
     * @remark :清洗产品新描述
     * @name   :getProduct
     * @author :lyh
     * @method :post
     * @time   :2024/12/11 14:40
     */
    public function getProduct($project_id){
//        $productModel = new Product();
//        $product_list = $productModel->formatQuery(['status'=>1,'content'=>['!=',null]])->count();
//        $detailModel = new Detail();
//        $lists = $detailModel->count();
//        if(($product_list > 0) && ($lists == 0)){
//            echo date('Y-m-d H:i:s') . '需要处理的项目:'.$project_id . PHP_EOL;
//        }
        Detail::truncate();
        Column::truncate();
        $c = new Column();
        $c->addReturnId(['column_name'=>'product detail']);
        $productModel = new Product();
        $page = 1;
        while (true){
            $lists = $productModel->lists([],$page,1,['id','content','describe']);
            $detailModel = new Detail();
            if(!empty($lists['list'])){
                foreach ($lists['list'] as $k => $v){
                    echo date('Y-m-d H:i:s') . '产品id:'.$v['id'] . PHP_EOL;
                    if(!empty($v['content'])){
                        $data = [
                            'product_id'=>$v['id'],
                            'column_id'=>1,
                            'text_type'=>1,
                            'title'=>'product detail',
                            'sort'=>1,
                            'content'=>json_encode(['content'=>$v['content'] ?? ''],JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES),
                            'created_at'=>date('Y-m-d H:i:s'),
                            'updated_at'=>date('Y-m-d H:i:s')
                        ];
                        $detailModel->insert($data);
                    }
                    if(!empty($v['describe'])){
                        foreach ($v['describe'] as $key => $value){
                            if(isset($value['title']) && ($value['title'] == null)){
                                $value['title'] = '';
                            }
                            if(isset($value['text']) && ($value['text'] == null)){
                                $value['text'] = '';
                            }
                            if(empty($value['title'])){
                                continue;
                            }
                            //添加切换栏
                            $c = new Column();
                            $id = $c->addReturnId(['column_name'=>$value['title'],'product_id'=>$v['id']]);
                            $dataS = [
                                'product_id'=>$v['id'],
                                'column_id'=>$id,
                                'text_type'=>1,
                                'title'=>$value['title'] ?? '',
                                'sort'=>$key + 1,
                                'content'=>json_encode(['content'=>$value['text'] ?? ''],JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES),
                                'created_at'=>date('Y-m-d H:i:s'),
                                'updated_at'=>date('Y-m-d H:i:s')
                            ];
                            $detailModel->insert($dataS);
                        }
                    }
                }
            }else{
                break;
                return false;
            }
            $page++;
        }
        return true;
    }

}