<?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\Product\Product;
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()
    {
        ProjectServer::useProject(110);
        return $this->getRecommendAndHotProducts(1970);
        DB::disconnect('custom_mysql');

    }

    public function getRecommendAndHotProducts($keyword_id): ?array
    {
        @file_put_contents(storage_path('logs/lyh_error.log'), var_export('进入', true) . PHP_EOL, FILE_APPEND);
        $productIds = [];
        $productsQuery = Product::where("status",1)->where("keyword_id","like","%,".$keyword_id.",%")->limit(7)->get();
        if (!empty($productsQuery)){
            foreach ($productsQuery as $item){
                $productIds[] = $item->id;
            }
            if (count($productIds)<7){
                $product_all_id = Product::where('thumb','!=',null)->whereNotIn('id', $productIds)->where("status",Product::STATUS_ON)->inRandomOrder()->take(20 - count($productIds))->pluck('id')->toArray();
                $randomData = Product::whereIn("id", $product_all_id)->get();
                $products = $productsQuery->merge($randomData);
            }else{
                $products = $productsQuery;
            }
        }else{
            $product_all_id = Product::where('thumb','!=',null)->where("status",Product::STATUS_ON)->inRandomOrder()->take(20)->pluck('id')->toArray();
            $products = Product::whereIn("id", $product_all_id)->get();
            @file_put_contents(storage_path('logs/lyh_error.log'), var_export($products, true) . PHP_EOL, FILE_APPEND);
        }
        $data = [];
        if (!empty($products)){
            foreach ($products as $item){
                if(empty($item->thumb) || ($item->thumb['url'] == "")){
                    continue;
                }
                if(count($data) > 13){
                    break;
                }
                $keyword_ids = implode(',',$item->keyword_id);
                if (strpos(','.$keyword_ids.',', ','.$keyword_id.',') === false) {
                    //不包含
                    $productModel = new Product();
                    $keyword_id_str = ','.$keyword_ids.',' . $keyword_id.',';
                    $productModel->edit(['keyword_id'=>$keyword_id_str],['id'=>$item->id]);
                }
                $data[] = ['url'=>getImageUrl($item->thumb['url']),'title'=>$item->title];
            }
        }
        return $data;
    }
//
//        $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;
//    }
}