<?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\Devops\Servers;
use App\Models\Devops\ServersIp;
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\DeployOptimize;
use App\Models\Project\MinorLanguages;
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()
    {
        $project_id = 1;
        $servers_id = 1;
        //查看當前項目服務器是否有更改
        $projectModel = new Project();
        $projectInfo = $projectModel->read(['id'=>$project_id],['serve_id']);
        if(!empty($projectInfo['serve_id'])){
            if($projectInfo['serve_id'] == $servers_id){
                echo 2;
            }
        }
        $serversIpModel = new ServersIp();
        $serversIpInfo = $serversIpModel->read(['project_arr'=>['like','%,'.$project_id.',%']]);
        if($serversIpInfo !== false){
            $string = str_replace(','.$project_id.',',',',$serversIpInfo['project_arr']);
            if($string == ','){
                $string = '';
            }
            $serversIpModel->edit(['project_arr'=>$string],['id'=>$serversIpInfo['id']]);
        }
        $info = $serversIpModel->read(['id'=>$servers_id]);
        $serversModel = new Servers();
        $serversInfo = $serversModel->read(['id'=>$info['servers_id']]);
        if($serversInfo['being_number'] >= $serversInfo['total']){
            echo '请选择其他服务器,当前服务器已满';
        }
        $project_arr = explode(',',trim($info['project_arr'],','));
        if(count($project_arr) >= $serversInfo['ip_total']){
            echo  '请选择其他服务器,当前ip已满';
        }
        @file_put_contents(storage_path('logs/lyh_error.log'), var_export($project_arr, true) . PHP_EOL, FILE_APPEND);
        @file_put_contents(storage_path('logs/lyh_error.log'), var_export($project_id, true) . PHP_EOL, FILE_APPEND);
        if(!in_array($project_id,$project_arr) || empty($project_arr)){
            array_push($project_arr,$project_id);
            $project_str = ','.implode(',',$project_arr).',';
            $serversIpModel->edit(['project_arr'=>$project_str,'total'=>count($project_arr)],['id'=>$servers_id]);
            $serversModel->where(['id'=>$info['servers_id']])->increment('being_number');
        }
        echo 1;
    }
//
//        $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'=>0],['video'=>'']);
//        echo date('Y-m-d H:i:s') . 'end'.$rs . PHP_EOL;
//        return true;
//    }

//    public function handle(){
//        //切换数据库配置
//        ProjectServer::useProject(1862);
//        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;
//    }
}