<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use DB;
use RedisDB;
use App\Jobs\mouser;

class WebApiController extends Controller
{
    public function Entrance(Request $request, $id ){
        //统一入口
        $this->$id($request, $id);
    }

    private function Export($errcode=0,$errmsg='成功',$data=''){
        echo json_encode(['errcode'=>$errcode,'errmsg'=>$errmsg,'data'=>$data]);
        exit();
    }

    private function Export_jsonp($request,$errcode=0,$errmsg='成功',$data=''){
        $callback=$request->input('callback');
        echo $callback.'('.json_encode(['errcode'=>$errcode,'errmsg'=>$errmsg,'data'=>$data]).')';
        exit();
    }

    private function tree_class($request,$id){
        $redis=RedisDB::connection();
        $info=$redis->get('tree_class');
        if(!$info){
            $info=DB::connection('spu')->table('lie_classify')->where('status',1)->select('class_id','class_name','parent_id')->get();
            $info=json_encode(tree_class($info));
            $result=$redis->set('tree_class',$info);
            $redis->expire('tree_class', 3600);
        }
        if(!$info){
            $this->Export(50001,'未查找到分类');
        }
        if($info){
            $this->Export(0,'成功',$info);
        }else{
            $this->Export(50002,'系统错误');
        }
    }

    private function sku_list($request){
        $list=[];
        $data=[];
        $page='';

        $map=$request->input();

        foreach ($map as $k=>$v){
            if(empty($v) AND $v!='0'){
                unset($map[$k]);
            }
            if(isset($map['_url'])){
                unset($map['_url']);
            }
            if(isset($map['s'])){
                unset($map['s']);
            }
        }
        $map['p']=isset($map['p'])?$map['p']:1;

        $url=env('ES_SKU_URL', '');
        $return=curl($url,$map,1);
        $data=json_decode($return,true);
        if($data['error_code']==0) {
            $redis=RedisDB::connection();
            foreach ($data['data']['goods_id'] as $k => $v) {
                $info = json_decode($redis->hget('sku',$v),true);
                if (!$info) {
                    $dbinfo = resolve($v);
                    $info = DB::connection($dbinfo['db'])->table($dbinfo['table'])->where('goods_id', $v)->first();
                    $info=(array)$info;
                    if ($info) {
                        $info = Handle_sku($info);
                    } else {
                        break;
                    }
                }
                if($info['moq']>$info['stock'] || !is_array($info['ladder_price']) ){
                    $info['is_buy']=0;
                }else{
                    $info['is_buy']=1;
                }
                $list[$k] = $info;
            }
            $page = generate_page($request, $data['data']['total'], 10,$map,true);
        }
        $datas['data']=$list;
        $datas['page']=str_replace('href=','data-url=',$page);
        $this->Export(0,'成功',$datas);
    }

    //商品详情页(没有redis时才读取)
    private function goods_details($request){
        $redis=RedisDB::connection();
        $sku_id=$request->input('sku_id');
        if(empty($sku_id)){
            $this->Export(100001,'缺少必须参数');
        }
        $dbinfo = resolve($sku_id);
        $info = DB::connection($dbinfo['db'])->table($dbinfo['table'])->where('goods_id', $sku_id)->first();
        $info=(array)$info;

        if ($info) {
            $db_spu_info=resolve($info['spu_id']);
            $spuinfo=DB::connection($db_spu_info['db'])->table($db_spu_info['table'])->where('spu_id',$info['spu_id'])->first();

            if($spuinfo){
                $spuinfo=Handle_spu($spuinfo);
            }else{
                $spuinfo=[];
            }
            $info = Handle_sku($info);

            if($info['moq']>$info['stock'] || !is_array($info['ladder_price']) ){
                $info['is_buy']=0;
            }else{
                $info['is_buy']=1;
            }
            $datas['sku']=$info;
            $datas['spu']=$spuinfo;
            $this->Export(0,'成功',$datas);
        }else{
            $this->Export(10002,'未查找到该商品');
        }


    }

    //查询分类商品总数
    private function query_class_sku_count($request){
        $map=$request->input();
        foreach ($map as $k=>$v){
            if(empty($v)){
                unset($map[$k]);
            }
        }
        if(empty($map) || !is_array($map)){
            $map['agg']='class_id1';
        }
        $url=env('ES_SKU_URL', '');
        $return=curl($url,$map,1);
        $data=json_decode($return,true);
        if(empty($data['data']) || $data['error_code']!=0){
            $this->Export(50003,'获取失败');
        }else{
            $this->Export(0,'',$data['data']);
        }
    }

    //MOUSER新增接口
    private function handle_mouser($request){
        set_time_limit(0);
        $info=$request->input('data')?$request->input('data'):[];
        $sign=$request->input('sign');

        if(empty($info) || !is_array($info)){
            $data['empty'][]='data';
        }
        if(empty($sign)){
            $data['empty'][]='sign';
            $info=[];
        }
        $Verification=md5(http_build_query($info).env('API_KEY', ''));
        if($sign!=$Verification){
            $data['sign']='fail';
            $info=[];
        }
        if(!empty($info)){
            $return=$this->dispatch(new mouser($info));
        }

        if(isset($return) && !empty($return)){
            $code=0;
        }else{
            $code=1;
        }

        $data['id']= isset($return)?$return:'';
        $data['errinfo']=isset($data)?$data:'';
        $this->Export($code,'',$data);
    }

    public function cs_ms(){
        $url='http://footstone.liexin.com/webapi/handle_mouser';
        $time=time();
        $data[$time]=[
            'goods_name'=>$time,
            'goods_name_temp'=>$time,
            'brand_name'=>'Wakefield-Vette',
            'spu_brief'=>'散熱器 Spring ASSMB for COMPR Clmp Series145',
            'goods_sn'=>$time,
            'pdf'=>'http://www.mouser.com/ds/2/433/precision-clamps-wakefield-471757.pdf',
            'url'=>'https://www.mouser.hk/ProductDetail/Wakefield-Vette/145-2/?qs=vgpl%252bgh%252biRNsiFg9TTUV7w%3d%3d',
            'images'=>'https://www.mouser.com/images/wakefield/images/567-145-2_SPL.jpg',
            'cat'=>'散熱器',
            'stock'=>23,
            'moq'=>1,
            'mpq'=>1,
            'ladder_price'=>json_encode([
                [
                "purchases"=>20,
                "price_cn"=>0,
                "price_us"=>2.45
                ]
            ]),
        ];
        $sign=md5(http_build_query($data).env('API_KEY', ''));
        $post['data']=$data;
        $post['sign']=$sign;
        $result=curl($url,http_build_query($post),1);
        echo $result;
        dump($result);
    }

    private function cs(){
        $redis=RedisDB::connection();
        $result=$redis->lpop('queues:mouser');
        dump($result);
        dump(json_decode($result,true));
    }
}