<?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)); } }