<?php
/**
 * Created by PhpStorm.
 * User: zhl
 * Date: 2023/2/7
 * Time: 17:58
 */
namespace App\Console\Commands\Test;


use App\Models\Com\KeywordVideoTask;
use App\Models\File\File;
use App\Models\File\File as FileModel;
use App\Models\File\Image;
use App\Models\File\Image as ImageModel;
use App\Models\Product\Keyword;
use App\Models\Project\Project;
use App\Services\AmazonS3Service;
use App\Services\ProjectServer;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;


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

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'demo';


//    /**
//     * Execute the job.
//     *
//     * @return void
//     */
//    public function handle()
//    {
//        $this->param['project_id'] = 181;
//        $imageModel = new ImageModel();
//        //获取当前项目的所有图片
//        $imageList = $imageModel->list(['project_id'=>$this->param['project_id'],'is_cos'=>1],'id',['id','path','is_cos','size']);
//        if(!empty($imageList)){
//            $amazonS3Service = new AmazonS3Service();
//            foreach ($imageList as $k => $v){
//                $amazonS3Service->syncImageFiles(getImageUrl($v['path']));
//                $imageModel->edit(['is_cos'=>0],['id'=>$v['id']]);
//            }
//        }
//
//        $fileModel = new FileModel();
//        $fileList = $fileModel->list(['project_id'=>$this->param['project_id'],'is_cos'=>1],'id',['id','path','is_cos','name']);
//        if(!empty($fileList)){
//            $amazonS3Service = new AmazonS3Service();
//            foreach ($fileList as $k => $v){
//                echo date('Y-m-d H:i:s') . '执行的数据id:' . $v['id'] . '名称:'.$v['name'] . PHP_EOL;
//                $amazonS3Service->syncImageFiles(getFileUrl($v['path']));
//                $fileModel->edit(['is_cos'=>0],['id'=>$v['id']]);
//                gc_collect_cycles();
//            }
//        }
//        return true;
//    }

//    public function handle(){
//        $keywordVideoModel = new KeywordVideoTask();
//        $project_id_arr = $keywordVideoModel::where('id','>',0)->pluck('project_id')->toArray();
//        $projectModel = new Project();
//        $list = $projectModel->list(['type'=>['!=',0],'delete_status'=>0,'id'=>['in',$project_id_arr]]);
//        $data = [];
//        foreach ($list as $v){
//            echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL;
//            ProjectServer::useProject($v['id']);
//            $this->saveKeyword();
//            DB::disconnect('custom_mysql');
//        }
//        echo date('Y-m-d H:i:s') . 'end' . PHP_EOL;
//    }
//
//    /**
//     * @remark :关键字有视频的改为1
//     * @name   :getProductKeywordInfo
//     * @author :lyh
//     * @method :post
//     * @time   :2024/5/31 9:54
//     */
//    public function saveKeyword(){
//        $keywordModel = new Keyword();
//        $rs = $keywordModel->edit(['is_video_keyword'=>1],['video'=>['!=',null]]);
//        echo date('Y-m-d H:i:s') . 'end'.$rs . PHP_EOL;
//        return true;
//    }

    public function handle(){
        return $this->initTable(1380,1862);
    }
    
    public function initTable($project_id, $news_project_id)
    {
        config(['database.connections.custom_tmp_mysql_copy.database' => 'gl_data_' . $project_id]);
        $database_name = DB::connection('custom_tmp_mysql_copy')->getDatabaseName();
        $tables = Schema::connection('custom_tmp_mysql_copy')->getAllTables();
        $tables = array_column($tables, 'Tables_in_' . $database_name);

        foreach ($tables as $table) {
            $has_table = Schema::connection('custom_mysql')->hasTable($table);

            if (!$has_table) {
                $sql = DB::connection('custom_tmp_mysql_copy')->select("SHOW CREATE TABLE {$table}");
                DB::connection('custom_mysql')->statement(array_values((array)$sql[0])[0]); // 修正此处的sql语句获取方式
            }

            if ($table == 'gl_customer_visit' || $table == 'gl_customer_visit_item' || $table == 'gl_inquiry_other' || $table == 'gl_inquiry_form_data' || $table == 'gl_inquiry_form') {
                continue;
            }
            DB::connection('custom_mysql')->table($table)->truncate(); // 清空目标表数据
            DB::connection('custom_mysql')->table($table)->insertUsing(
                [], // 列名数组,留空表示插入所有列
                function ($query) use ($table, $project_id) {
                    $name = 'gl_data_' . $project_id . '.' . $table;
                    $query->select('*')->from("{$name}");
                }
            );

            if (Schema::connection('custom_mysql')->hasColumn($table, 'project_id')) {
                DB::connection('custom_mysql')->table($table)->update(['project_id' => $news_project_id]);
            }
        }
        return true;
    }
}