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

use App\Helper\Common;
use App\Models\Blog\Blog;
use App\Models\Devops\ServerConfig;
use App\Models\Domain\DomainInfo;
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\Manage\BelongingGroup;
use App\Models\Manage\Dept;
use App\Models\Manage\EntryPosition;
use App\Models\Manage\ManageHr;
use App\Models\Nav\BNav;
use App\Models\Nav\BNavGroup;
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\Models\RouteMap\RouteMap;
use App\Models\Template\BCustomTemplate;
use App\Models\Template\BTemplate;
use App\Models\Template\BTemplateCom;
use App\Models\Template\BTemplateCommon;
use App\Models\Template\Setting;
use App\Models\WebSetting\Translate;
use App\Models\WebSetting\WebSettingService;
use App\Services\AmazonS3Service;
use App\Services\ProjectServer;
use App\Services\SyncService;
use GuzzleHttp\Client;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;

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';


    /**
     * @remark :根据路由获取source+source_id
     * @name   :getRouteSource
     * @author :lyh
     * @method :post
     * @time   :2024/5/17 15:11
     */
    public function getRouteSource($route){
        $data = ['source'=>0,'source_id'=>0,'is_list'=>0,'is_custom'=>0];
        if(strtolower($route) == 'all'){
            return $this->success($data);
        }
        if($route == '/'){
            $data['source'] = 1;
            return $this->success($data);
        }
        $route = basename($route);
        $routeModel = new RouteMap();
        $routeInfo = $routeModel->read(['route'=>$route]);
        return $this->resultData($routeInfo,$data);
    }

    /**
     * @remark :返回数据
     * @name   :resultData
     * @author :lyh
     * @method :post
     * @time   :2024/5/20 11:54
     */
    public function resultData($routeInfo,$data){
        if($routeInfo['source'] == RouteMap::SOURCE_PAGE){
            if($routeInfo['source_id']){
                $data = ['source'=>9,'source_id'=>$routeInfo['source_id'],'is_list'=>0,'is_custom'=>0];
            }
        }
        if($routeInfo['source'] == RouteMap::SOURCE_PRODUCT){
            if($routeInfo['source_id']){
                $data = ['source'=>2,'source_id'=>$routeInfo['source_id'],'is_list'=>0,'is_custom'=>0];
            }
        }
        if($routeInfo['source'] == RouteMap::SOURCE_PRODUCT_CATE){
            if($routeInfo['source_id']){
                $data = ['source'=>2,'source_id'=>$routeInfo['source_id'],'is_list'=>1,'is_custom'=>0];
            }
        }
        if($routeInfo['source'] == RouteMap::SOURCE_BLOG){
            if($routeInfo['source_id']){
                $data = ['source'=>3,'source_id'=>$routeInfo['source_id'],'is_list'=>0,'is_custom'=>0];
            }
        }
        if($routeInfo['source'] == RouteMap::SOURCE_BLOG_CATE){
            if($routeInfo['source_id']){
                $data = ['source'=>3,'source_id'=>$routeInfo['source_id'],'is_list'=>1,'is_custom'=>0];
            }
        }
        if($routeInfo['source'] == RouteMap::SOURCE_NEWS){
            if($routeInfo['source_id']){
                $data = ['source'=>4,'source_id'=>$routeInfo['source_id'],'is_list'=>0,'is_custom'=>0];
            }
        }
        if($routeInfo['source'] == RouteMap::SOURCE_NEWS_CATE){
            if($routeInfo['source_id']){
                $data = ['source'=>4,'source_id'=>$routeInfo['source_id'],'is_list'=>1,'is_custom'=>0];
            }
        }
        if($routeInfo['source'] == RouteMap::SOURCE_MODULE){
            if($routeInfo['source_id']){
                $data = ['source'=>7,'source_id'=>$routeInfo['source_id'],'is_list'=>0,'is_custom'=>1];
            }
        }
        if($routeInfo['source'] == RouteMap::SOURCE_MODULE_CATE){
            if($routeInfo['source_id']){
                $data = ['source'=>7,'source_id'=>$routeInfo['source_id'],'is_list'=>1,'is_custom'=>1];
            }
        }
        return $data;
    }

    public function handle(){
        $projectModel = new Project();
        $list = $projectModel->list(['delete_status'=>0,'type'=>['!=',0]]);
        foreach ($list as $v){
            echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL;
            ProjectServer::useProject($v['id']);
            $translateModel = new Translate();
            $translateList = $translateModel->list();
            foreach ($translateList as $value){
                $data = $this->getRouteSource($value['url']);
                $rs = $this->model->edit($data,['id'=>$value['id']]);
            }
            DB::disconnect('custom_mysql');
        }
        DB::disconnect('custom_mysql');
    }

    /**
     * Execute the job.
     *
     * @return void
     */
//    public function handle()
//    {
//        $projectModel = new Project();
//        $list = $projectModel->list(['delete_status'=>0,'type'=>['!=',0]]);
//        $data = [];
//        foreach ($list as $v){
//            echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL;
//            ProjectServer::useProject($v['id']);
//            DB::table('gl_web_template_com')->truncate();
//            $templateComModel = new BTemplateCom();
//            $templateComModel->truncate();
//            $this->saveTemplateCom($v['id']);
//            DB::disconnect('custom_mysql');
//        }
//        echo date('Y-m-d H:i:s') . 'end' . PHP_EOL;
//    }

    public function saveTemplateCom($project_id){
        //获取当前项目选择的模版
        $settingModel = new Setting();
        $settingInfo = $settingModel->read(['project_id'=>$project_id]);
        echo date('Y-m-d H:i:s') . '设置的模版:'.json_encode($settingInfo) . PHP_EOL;
        if($settingInfo !== false){
            $templateCommonModel = new BTemplateCommon();
            $commonList = $templateCommonModel->list(['template_id'=>['in',[$settingInfo['template_id'],0]]]);
            if(!empty($commonList)){
                foreach ($commonList as $v){
                    $typeArr = [1, 2, 3];
                    foreach ($typeArr as $type){
                        if($type == 1){
                            $headData = [
                                'project_id'=>$v['project_id'],
                                'source'=>$v['type'] == 1 ? 99 : $v['type'],
                                'common_type'=>1,
                                'template_id'=>$v['template_id'],
                                'html'=>$v['head_html'],
                                'html_style'=>$v['head_css'],
                                'is_custom'=>$v['is_custom'],
                                'is_list'=>$v['is_list']
                            ];
                            $templateComModel = new BTemplateCom();
                            $templateComModel->add($headData);
                        }elseif ($type == 2){
                            $footerData = [
                                'project_id'=>$v['project_id'],
                                'source'=>$v['type'] == 1 ? 99 : $v['type'],
                                'common_type'=>2,
                                'template_id'=>$v['template_id'],
                                'html'=>$v['footer_html'],
                                'html_style'=>$v['footer_css'],
                                'is_custom'=>$v['is_custom'],
                                'is_list'=>$v['is_list']
                            ];
                            $templateComModel = new BTemplateCom();
                            $templateComModel->add($footerData);
                        }elseif ($type == 3){
                            $otherData = [
                                'project_id'=>$v['project_id'],
                                'source'=>$v['type'] == 1 ? 99 : $v['type'],
                                'common_type'=>3,
                                'template_id'=>$v['template_id'],
                                'html'=>$v['other'],
                                'html_style'=>null,
                                'is_custom'=>$v['is_custom'],
                                'is_list'=>$v['is_list']
                            ];
                            $templateComModel = new BTemplateCom();
                            $templateComModel->add($otherData);
                        }
                    }
                }
            }
        }
        return true;
    }
}