<?php

namespace App\Console\Commands;

use App\Http\Logic\Aside\Project\DomainInfoLogic;
use App\Models\Com\UpdateNotify;
use App\Models\Devops\DevopsTask as DevopsTaskModel;
use App\Models\Devops\DevopsTaskLog;
use App\Models\Domain\DomainInfo;
use App\Models\File\File;
use App\Models\File\Image;
use App\Models\Product\CategoryRelated;
use App\Models\Product\Product;
use App\Models\Project\Project;
use App\Models\RouteMap\RouteMap;
use App\Models\Template\BCustomTemplate;
use App\Services\ProjectServer;
use Illuminate\Console\Command;
use Illuminate\Database\QueryException;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;

/**
 * 测试
 * Class Traffic
 * @package App\Console\Commands
 * @author zbj
 * @date 2023/5/18
 */
class Test extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'test';

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

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * @return bool
     */
    public function handle()
    {
        $domains = DB::table('gl_customer_visit')->groupBy('domain')->select('domain')->pluck('domain')->toArray();
        foreach($domains as $domain){
            if(!Str::contains($domain, 'globalso.site')){
                $this->sync($domain);
            }
        }
    }

    public function sync($domain){
        echo date('Y-m-d H:i:s') . "同步项目{$domain}" . PHP_EOL;
        if(!Str::startsWith($domain,'www.')){
            $domain = 'www.'.$domain;
        }
        $project_id = DomainInfo::where('domain', $domain)->value('project_id');
        if(!$project_id){
            echo date('Y-m-d H:i:s') . "项目{$domain}不存在" . PHP_EOL;
            return true;
        }
        if(!ProjectServer::useProject($project_id)){
            echo date('Y-m-d H:i:s') . "项目{$domain}数据库配置无效" . PHP_EOL;
            return true;
        }
        $visit = 0;
        $visit_item = 0;
        $list = DB::table('gl_customer_visit')->whereIn('domain', [$domain, str_replace('www.','',$domain)])->get();
        foreach ($list as $v){
            $v = (array) $v;

            $items = DB::table('gl_customer_visit_item')->where('customer_visit_id', $v['id'])->get();

            unset($v['id']);
            $id = DB::connection('custom_mysql')->table('gl_customer_visit')->insertGetId($v);

            $visit++;

            $data = [];
            foreach ($items as $item){
                $item = (array) $item;
                unset($item['id']);
                $item['customer_visit_id'] = $id;
                $data[] = $item;
                $visit_item++;
            }
            DB::connection('custom_mysql')->table('gl_customer_visit_item')->insert($data);
        }
        echo date('Y-m-d H:i:s') . "visit:{$visit};item:{$visit_item}" . PHP_EOL;exit;
    }

}