<?php
class searchAction extends baseAction
{
	//只能调用/static/目录下的 js | css | 控件[webuploader、datetimepicker、ueditor、zTree]
	private $HEAD_CSSJS = ['css'=>['css/search.css'], 'js'=>['js/search.js'], 'plugin'=>[]];

	function __construct()
	{
		parent::__construct();
		LibTpl::Set('HEAD_CSSJS', $this->HEAD_CSSJS);
	}


	/**
	  * @method 配件搜索
	  * @author soul 2017/6/16
	  */
	function index()
	{
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();
		$Params = mvc::$URL_PARAMS;
		if(!empty($Params['nocar']) && empty($Params['mod3Id']))
		{
			setCookie('autoCar', 0, time()+3600*24*7, '/', mvc::$cfg['HOST']['b2c'], true, true);
		}
		/*else if(empty($Params['mod3Id']) && empty($Params['nocar']))
		{
			$uid = empty($_SESSION['_userid'])? 0: $_SESSION['_userid'];
			$B2cUser = new B2cUser();
			$res = $B2cUser->getUserNowCar($uid);
			$Params['mod3Id'] = $res['data'];
		}*/
        //
		if (isset($Params['keyword'])) {
            $Params['keyword'] = LibFc::Escape(str_replace(['<', '>', '[', ']', '!', '(', ')', '=', '+'], '', $Params['keyword']));
        }
		if(empty($Params['keyword']) && empty($Params['mod3Id']) && empty($Params['partId']) && empty($Params['prbId']))
		{
			LibFc::Go(mvc::$cfg['HOST']['b2c']);
		}
		
		$Params['type'] = empty($Params['type']) ? 'item': trim($Params['type']);
		$Params['keyword'] = !isset($Params['keyword']) ? '': trim(LibFc::Escape($Params['keyword']));
		$Params['viewType']= isset($Params['viewType'])? $Params['viewType']:'';
		
		//价格区间纠正
		if(!empty($Params['minPrice']) && !empty($Params['maxPrice']) && $Params['minPrice'] > $Params['maxPrice'])
		{
			$temp = $Params['minPrice'];
			$Params['minPrice'] = $Params['maxPrice'];
			$Params['maxPrice'] = $temp;
		}
		$Params['page'] = isset($Params['page']) ? (int) $Params['page']: 1;
        $Params['page'] = ($Params['page'] > 0) ? $Params['page'] : 1;
		$Params['perPage'] = 20;

		//零件ID转关键字
		if($Params['partId'] > 0)
		{
			$B2cBase = new B2cBase();
			$res = $B2cBase->get('bc_part', ['part_name'], sprintf(" and part_id=%d", $Params['partId']), true);
			if(!empty($res['data']))
			{
				$Params['keyword'] = $Params['keyword'] == ''? $res['data']['part_name']: $res['data']['part_name'].' '.$Params['keyword'];
			}
			$Params['partId'] = 0;
		}

		LibTpl::Set('Params', $Params);

		setCookie('searchType', $Params['type'], time()+3600*24*7, '/');
		if(strlen($Params['keyword']) > 0) setCookie('search'.$Params['type'], $Params['keyword'], time()+3600*24*7, '/');
		
		$B2cSearch = new B2cSearch();
		LibTpl::Set('keyword', $Params['keyword']);

		switch($Params['type'])
		{
			case 'number':
				$res = $B2cSearch->searchProductByNumber($Params);
			break;
			default:
				$res = $B2cSearch->searchProduct($Params);
			break;
		}
		$searchResult = $res['data'];
		$ulrParams = [];
		foreach($searchResult['param'] as $k=>$v)
		{
			if($v != '' && !in_array($k, ['perPage'])) $ulrParams[$k] = $v;
		}
		LibTpl::Set('ulrParams', $ulrParams);
		LibTpl::Set('searchResult', $searchResult);
		
		$B2cBase = new B2cBase();

		//配件分类
		$B2cPart = new B2cPart();
		$YpwAddr=new YpwAddr();
		$res = $B2cPart->getAllPart();
		$allPartArr = $res['data'];
		LibTpl::Set('allPartArr', $allPartArr);

		$ComModel = new ComModel();
		$suitArr['part'] = [];
		if(!empty($searchResult['partIds']))
		{
			$res = $B2cBase->get('bc_part join bc_part_tree on pt_part_id=part_id and  pt_ismain = 1', ['part_id', 'part_name'], sprintf(" and part_id in(%s) order by part_is_host desc, pt_seq asc, part_initial asc limit 6", implode(',', $searchResult['partIds'])));
			$suitArr['part'] = $res['data'];
		}
		
		$B2cBase = new B2cBase();
		$res = $B2cBase->get('bc_product', ['distinct pro_prb_id'], ' and pro_prb_id > 0');
		$selectBoxPrbIdArr=array_column($res['data'], 'pro_prb_id');
		LibTpl::Set('selectBoxPrbIdArr', $selectBoxPrbIdArr);
		
		
		$suitArr['probrand'] = [];
		if(!empty($searchResult['prbIds']))
		{
			$res = $B2cBase->get('bc_probrand', ['prb_id', 'prb_name'], sprintf(" and prb_id in (%s) order by prb_is_host desc, prb_seq asc, prb_initial desc limit 6", implode(',', $searchResult['prbIds'])));
			$suitArr['probrand'] = $res['data'];
		}
		LibTpl::Set('suitArr', $suitArr);
		
		//已选数据
		$selectArr = [];
		if(!empty($searchResult['param']['mod3Id']))
		{
			$res = $ComModel->getModel(3, ['mod3_id', 'brand_code', 'make_name', 'mod2_name', 'mod3_name', 'mod3_start_year', 'mod3_end_year','brand_name','make_show_brand'], sprintf(" and mod3_id=%d", $searchResult['param']['mod3Id']), true);
			$selectArr['mod3'] = $res['data'];
		}

		if(!empty($searchResult['param']['prbId']))
		{
			$res = $B2cBase->get('bc_probrand', ['prb_id', 'prb_name'], sprintf(" and prb_id =%d", $searchResult['param']['prbId']), true);
			$selectArr['probrand'] = $res['data'];
		}

		if(!empty($searchResult['proIds']))
		{
			//通过配件ID数组获取配件对应信息
			$B2cProduct=new B2cProduct();
			//获取品牌
			$brandArr=$B2cProduct->get('bc_probrand inner join bc_product on pro_prb_id=prb_id',['prb_name','prb_id','pro_id'],sprintf(' and pro_id in(%s)',implode(',',$searchResult['proIds'])));
			$brandArr=array_column($brandArr['data'],null, 'pro_id');
			LibTpl::Set('brandArr',$brandArr);
			// print_r($brandArr);
			$proInfo = $B2cProduct->getProduct(['pro_id','pro_name','pro_shop_id','pro_sale_price','pro_promotion_price','pro_count','pro_promotion_btime','pro_promotion_etime','pro_sold_count','pro_sel_des','pri_code','pri_frt_id','pro_describe_score','pri_service_pdt_id', 'shop_zbnum', 'shop_smainnum'],sprintf(" and pro_id in(%s) order by instr('%s', concat(pro_id,''))",implode(',',$searchResult['proIds']), implode(',',$searchResult['proIds'])));
			//取评价
			$evaWhere=sprintf(' and evp_pro_id in(%s) group by evp_pro_id',implode(',',$searchResult['proIds']));
			$evalData=$B2cProduct->get('or_evaluate_product',['count(*) count','evp_pro_id'],$evaWhere);
			$evalData['data']=array_column($evalData['data'], null,'evp_pro_id');
			//商家编码
			$shopNumWhere=sprintf(' and num_pro_id in(%s) and num_self=1',implode(',',$searchResult['proIds']));
			$shopNumArr=$B2cProduct->get('bc_number',['num_pro_id','num_factory','num_display','num_format','num_ismain'],$shopNumWhere);
			$shopNum=array_column($shopNumArr['data'],null, 'num_pro_id');
			
			//取所有的主号
			$numWhere=sprintf(' and num_pro_id in(%s) and num_ismain=1 and num_self=0',implode(',',$searchResult['proIds']));
			$mainNumArr=$B2cProduct->get('bc_number',['num_pro_id','num_factory','num_display','num_format','num_ismain'],$numWhere);
			$mainNum=array_column($mainNumArr['data'],null, 'num_pro_id');
			// print_r($mainNum);
			// and (num_format like '%s%%' or num_reformat like '%s%%')
			if($Params['type']=='number')
			{
				$numWhere=sprintf(" and num_pro_id in(%s) and num_self=0 and (num_format like '%%%s%%' or num_display like '%%%s%%') order by num_self asc",implode(',',$searchResult['proIds']),LibFc::FormatNum($Params['keyword']),LibFc::FormatNum($Params['keyword']));
				// echo $numWhere;
				$suitNumArr=$B2cProduct->get('bc_number',['num_pro_id','num_factory','num_display','num_format','num_ismain','num_self','num_reformat '],$numWhere);
				// print_r($suitNumArr);
				//匹配的号码
				$suitNum=array_column($suitNumArr['data'],null, 'num_pro_id');
			}
			// print_r($suitNum);
			//判断包邮
			$frtArrData=array_column($proInfo['data'], 'pri_frt_id');
			$frtArrData=array_filter($frtArrData);
			if(count($frtArrData))
			{
				$frtArr=$B2cBase->get('sh_freight_tpl',['frt_id','frt_is_free'],sprintf(' and frt_id in(%s)',implode(',',$frtArrData)));
				$frtArr=array_column($frtArr['data'], null,'frt_id');
				// print_r($frtArr);
			}
			//配件图片
			$picInfo=$B2cProduct->getProductPic($searchResult['proIds']);
			//取店铺
			$shopId=array_column($proInfo['data'], 'pro_shop_id');
			$shopId=array_unique($shopId);
			if(count($shopId))
			{
				//取保证金和店铺服务
				$shopInfo=$B2cProduct->get('sh_shop left join us_user_base on shop_uid=ub_uid',['shop_id','shop_uid','shop_name','shop_domain','ub_username','shop_pct_ids','shop_money_bail','shop_service_status','shop_service'],sprintf(' and shop_id in(%s)',implode(',',$shopId)));
			}
			//取店铺权限
			$rulesArr = [];
			$B2cShop = new B2cShop();
			foreach ($shopId as $key => $val) {
				$rules = $B2cShop->getGzhUserRule($val,$_SESSION['_userid']);
				$rulesArr[$val]= $rules['data']?array_column($rules['data'],'smr_code'):[];
			}
			
			foreach ($proInfo['data'] as $k=> $pro) 
			{
				$shopRulesArr = $rulesArr[$pro['pro_shop_id']]??[];
				$proInfo['data'][$k]['evalCount']=0;
				if(count($evalData['data']))
				{
					$proInfo['data'][$k]['evalCount']=isset($evalData['data'][$pro['pro_id']])?$evalData['data'][$pro['pro_id']]['count']:0;
				}
				if(count($shopInfo['data']))
				{
					foreach ($shopInfo['data'] as $shop) 
					{
						if($shop['shop_id']==$pro['pro_shop_id'])
						{
							// echo $shop['shop_pct_ids'];
							$addrArr=array_slice(explode(',',$shop['shop_pct_ids']), 0,2);
							$addrIds=implode(',',$addrArr);
							$addrName=$YpwAddr->getAddrByIds($addrIds);
							$shop['addrName']=implode(' ', $addrName['data']);
							$proInfo['data'][$k]=array_merge($shop,$proInfo['data'][$k]);
							$proInfo['data'][$k]['refundDate']=($shop['shop_service_status']==1)?1:0;
							$proInfo['data'][$k]['bail']=$shop['shop_money_bail'];
							$proInfo['data'][$k]['service']=json_decode($shop['shop_service'],true);
						}
					}
				}
				$proInfo['data'][$k]['IS_FREE']=isset($frtArr[$pro['pri_frt_id']])?$frtArr[$pro['pri_frt_id']]['frt_is_free']:'N';
				// 配件自编码权限
				if($shopRulesArr && in_array('item_selfnum',$shopRulesArr)){
					$proInfo['data'][$k]['shop_display']=isset($shopNum[$pro['pro_id']])?$shopNum[$pro['pro_id']]['num_display']:'';
					$proInfo['data'][$k]['shop_factory']=isset($shopNum[$pro['pro_id']])?$shopNum[$pro['pro_id']]['num_factory']:'';
				}
				//配件价格权限
				if($shopRulesArr && !in_array('item_pirce',$shopRulesArr)){
					$proInfo['data'][$k]['pro_sale_price'] = 0;
				}
				
				$proInfo['data'][$k]['num_self']=isset($suitNum[$pro['pro_id']])?$suitNum[$pro['pro_id']]['num_self']:'';
				if(isset($suitNum[$pro['pro_id']]))
				{
					// 配件号码权限
					if($shopRulesArr && in_array('item_number',$shopRulesArr)){
						$proInfo['data'][$k]['MAIN_DISPLAY'] = $suitNum[$pro['pro_id']]['num_display'];
						$proInfo['data'][$k]['MAIN_FACTORY'] = $suitNum[$pro['pro_id']]['num_factory'];
					}
				}
				else if($pro['shop_smainnum'])
				{
					// 配件主号码权限
					if($shopRulesArr && in_array('item_mainnum',$shopRulesArr)){
						$proInfo['data'][$k]['MAIN_DISPLAY'] = $mainNum[$pro['pro_id']]['num_display'];
						$proInfo['data'][$k]['MAIN_FACTORY'] = $mainNum[$pro['pro_id']]['num_factory'];
					}
				}
				
				// 配件图片权限
				if(in_array('item_pic',$shopRulesArr)){
					$proInfo['data'][$k]=isset($picInfo['data'][$pro['pro_id']][0])?array_merge($proInfo['data'][$k],$picInfo['data'][$pro['pro_id']][0]):$proInfo['data'][$k];
				}
			}
			// print_r($proInfo);
			LibTpl::Set('proList', $proInfo['data']);
		}
		
		//无查询结果，但是可以解码vin
		if(empty($searchResult['total']) && !empty($searchResult['vin_mods']))
		{
			$modelWhere = sprintf(" and mod3_id in (%s) order by brand_seq, brand_initial, make_seq, make_initial, mod1_name, mod2_name ,mod2_start_year, mod3_name, mod3_start_year", implode(',',$searchResult['vin_mods']));
			$res = $ComModel->getModel(3, ['mod3_id', 'brand_name', 'make_name', 'mod2_name', 'mod3_name', 'mod3_start_year', 'mod3_end_year'], $modelWhere);
			$vinModelArr = $res['data'];
			LibTpl::Set('vinModelArr', $vinModelArr);
		}
		LibTpl::Set('pageMsg', LibPage::Show($searchResult['total'], $Params['perPage']));
		LibTpl::Set('smallPageMsg', LibPage::Samll($searchResult['total'], $Params['perPage'], '件配件'));
		LibTpl::Set('searchResult', $searchResult);
		LibTpl::Set('selectArr', $selectArr);
		$this->HEAD_CSSJS['js'][] = 'jqueryFly/fly.js';
		// $this->HEAD_CSSJS['js'][] = 'js/ueditorImgUpload.js';
		LibTpl::Set('HEAD_CSSJS', $this->HEAD_CSSJS);
		$headArr = [
			'title'=>'配件搜索-跑街的',
			'keyword'=>'',	
			'des'=>''
		];
		LibTpl::Set('headArr', $headArr);
		LibTpl::Put();
	}


	function getPartData()
	{
		$html = '';
		if(!empty($_POST['partIds']))
		{
			$partIdArr = [];
			foreach(explode(',', $_POST['partIds']) as $v)
			{
				$v = (int) $v;
				$partIdArr[$v] = $v;
			}
			if(!empty($partIdArr))
			{
				$B2cBase = new B2cBase();
				$res = $B2cBase->get('bc_part join bc_part_tree on pt_part_id=part_id and  pt_ismain = 1', ['part_id', 'part_name', 'part_initial', 'part_keyword'], sprintf(" and part_id in(%s) order by part_is_host desc, pt_seq asc, part_initial asc", implode(',', $partIdArr)));
				$partData = [];
				foreach($res['data'] as $v)
				{
					$v['part_initial'] = substr($v['part_initial'], 0, 1);
					$partData[] = $v;
				}
				$initialArr = array_unique(array_column($partData, 'part_initial'));
				sort($initialArr);
				LibTpl::Set('initialArr', $initialArr);
				LibTpl::Set('partData', $partData);
				$html = LibTpl::Fetch();
			}
		}
		LibFc::ajaxJsonEncode(['status'=>true,'data'=>$html]);
	}


	function getPrbData()
	{
		$html = '';
		if(!empty($_POST['prbIds']))
		{
			$prbIdArr = [];
			foreach(explode(',', $_POST['prbIds']) as $v)
			{
				$v = (int) $v;
				$prbIdArr[$v] = $v;
			}
			if(!empty($prbIdArr))
			{
				$B2cBase = new B2cBase();
				$res = $B2cBase->get('bc_probrand', ['prb_id', 'prb_name', 'prb_initial', 'prb_keyword'], sprintf(" and prb_id in(%s) order by prb_is_host desc, prb_seq asc, prb_initial asc", implode(',', $prbIdArr)));
				$prbData = [];
				foreach($res['data'] as $v)
				{
					$v['prb_initial'] = substr($v['prb_initial'], 0, 1);
					$prbData[] = $v;
				}
				$initialArr = array_unique(array_column($prbData, 'prb_initial'));
				sort($initialArr);
				LibTpl::Set('initialArr', $initialArr);
				LibTpl::Set('prbData', $prbData);
				$html = LibTpl::Fetch();
			}
		}
		LibFc::ajaxJsonEncode(['status'=>true,'data'=>$html]);
	}


	/**
	  * @method VIN解码
	  * @author soul 2017/6/16
	  */
	function vin()
	{
		//必须登录
		$_SESSION['MAIN_MONITOR']['tj'] = 0;
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();
		$_SESSION['MAIN_MONITOR']['tj'] = 1;
		$Params = mvc::$URL_PARAMS;
		$vin = !isset($Params['keyword']) ? '': LibFc::FormatVin($Params['keyword']);
		setCookie('searchType', 'vin', time()+3600*24*7, '/');
		if(strlen($vin) > 0) setCookie('searchvin', $vin, time()+3600*24*7, '/');
		
		$headArr = [
			'title'=>'车架号'.$vin.'解码-跑街的',
			'keyword'=>'',	
			'des'=>''
		];
		$modelArr = [];
		if(strlen($vin) >= 17)
		{
			$hasImg = false;
			$vin = substr($vin, 0, 17);
			$needCaptcha = false;
			if(empty($_SESSION['vin'])) $_SESSION['vin'] = [];
			if(empty($_SESSION['vin'][$vin]))
			{
				/*$LibYpApi = new LibYpApi();
				$capres = $LibYpApi->get('b2c/checkVinCaptcha', ['uid'=>$_SESSION['_userid'], 'ip'=>LibFc::GetClientIp()]);
				$needCaptcha = $capres['data']['need'];*/
				$needCaptcha = true;
			}
			if($needCaptcha)
			{
				$captokenOk = false;
				if(!empty($Params['captoken']))
				{
					$OthCheckcode = new OthCheckcode();
					$res = $OthCheckcode->checkDingxiangCaptcha($Params['captoken']);
					$captokenOk = $res['data'];
				}
				if(!$captokenOk){
					LibTpl::Set('Params', $Params);
					LibTpl::Set('vin', $vin);
					LibTpl::Set('headArr', $headArr);
					LibTpl::Put('search/captcha.php');
					exit;
				}else{
					$LibYpApi = new LibYpApi();
					$LibYpApi->get('super/addCaptchaLog', ['from'=>'PJD', 'uid'=>$_SESSION['_userid'], 'ip'=>LibFc::GetClientIp(), 'remark'=>$Params['captoken']]);
				}
			}
			$LibYpApi = new LibYpApi();
			$deres = $LibYpApi->get('vin/decodeVin', ['vin'=>$vin], [], true);
			if(!$deres['status'])
			{
				LibTpl::Set('errMsg', $deres['data']);
			}
			if($deres['status'] || $deres['code'] == 'VIN_GXB_NULL')
			{	
				$YpwUserTj = new YpwUserTj();
				$res = $YpwUserTj->checkVinTj($vin);
				if(!$res['data'])
				{
					//超过查询次数
					LibTpl::Set('vin', $vin);
					LibTpl::Set('headArr', $headArr);
					LibTpl::Put('search/maxVin.php');
					exit;
				}
				$modelArr = $deres['data'];
				if(!empty($modelArr)){
					foreach ($modelArr['model'] as $k => $v) {
						if(!empty($v['pic'])) $hasImg = true;
					}
				}
				if($deres['status'] && !empty($deres['data']))
				{
					$addArr = ['v_uid'=>(int) $_SESSION['_userid'], 'v_vin'=>$vin, 'v_atime'=>time(), 'v_ip'=>LibFc::GetClientIp(), 'v_from'=>'PJD'];
					$YpwUserTj->addVinTj($addArr);
					$_SESSION['vin'][$vin] = 1;
				}
			}
		}
		LibTpl::Set('hasImg', $hasImg);
		LibTpl::Set('modelArr', $modelArr);
		LibTpl::Set('vin', $vin);
		LibTpl::Set('modelArr', $modelArr);
		LibTpl::Set('headArr', $headArr);
		LibTpl::Put();
	}

	/**
	  * @method 店铺搜索
	  * @author soul 2017/6/16
	  */
	function shop()
	{
		$Params = mvc::$URL_PARAMS;
		$Params['keyword'] = !isset($Params['keyword']) ? '': trim($Params['keyword']);
		$Params['order'] = !isset($Params['order']) ? '': trim($Params['order']);
		$Params['pctIds'] = !isset($Params['pctIds']) ? '': $Params['pctIds'];
		$Params['page'] = isset($Params['page']) ? (int) $Params['page']:1;

		// 接口上写的 “-1”, 起始点负数报错
        if ($Params['page'] < 1) {
            $Params['page'] = 1;
        }

		LibTpl::Set('Params', $Params);
		$Params['perPage'] = 20;
		// 查询缓存
		setCookie('searchType', 'shop', time()+3600*24*7, '/');
		if(strlen($Params['keyword']) > 0) setCookie('searchshop', $Params['keyword'], time()+3600*24*7, '/');


		$B2cBase = new B2cBase();
		$B2cSearch = new B2cSearch();
		$B2cShop = new B2cShop();
		
		// 接口查询
		$res = $B2cSearch->searchShop($Params);
		$searchResult = $res['data'];
		LibTpl::Set('searchResult', $searchResult);

		// 省份ID
		LibTpl::Set('allAddressId', array_unique($searchResult['pctIds']));
		// 分页
		$Page = LibPage::Show($searchResult['total'], $searchResult['param']['perPage']);
		LibTpl::Set('Page', $Page);


		if(!empty($searchResult['shopIds']))
		{
			// 店铺信息
			$temp = ['shop_id','shop_sold_count','shop_pct_ids','shop_uid','shop_logo','shop_name','shop_reg_time','shop_pct_ids','shop_describe_score','shop_service_score','shop_profile','shop_logistics_score','shop_domain','ub_username'];
			$res = $B2cShop->getShopMsg($searchResult['shopIds'],$temp);
			$temp = array();
			foreach ($res['data'] as $v)
			{
				$temp[$v['shop_id']] = $v;
				$temp[$v['shop_id']]['PROVINCE_ID'] = current(explode(',', $v['shop_pct_ids']));
				$temp[$v['shop_id']]['CITY_ID'] = current(array_slice(explode(',', $v['shop_pct_ids']),1,1));
			}
			$shopMsg = $temp;
			// 商品总数
			$where = sprintf(" and pro_shop_id in (%s) and pro_count>0 and pro_status>0 group by pro_shop_id",implode(',', $searchResult['shopIds']));
			$res = $B2cBase->get('bc_product',['count(*) as pro_sum','pro_shop_id'],$where);	
			$res = array_column($res['data'],'pro_sum','pro_shop_id');
			foreach ($shopMsg as $shopId => $v) {
				$shopMsg[$shopId]['pro_sum'] = empty($res[$shopId])?0:$res[$shopId];
			}
			//店铺权限
			//取店铺权限
			$rulesArr = [];
			$B2cShop = new B2cShop();
			foreach ($searchResult['shopIds'] as $key => $val) {
				$rules = $B2cShop->getGzhUserRule($val,$_SESSION['_userid']);
				$rulesArr[$val]= $rules['data']?array_column($rules['data'],'smr_code'):[];
			}
			// 橱窗推荐
			$res = $B2cShop->getShopRecomonPro($searchResult['shopIds'],4);
			foreach ($res['data'] as $shopId => $v) {
				
				if($v){
					$shopRulesArr = $rulesArr[$shopId]??[];

					foreach ($v as $kk => &$vv) 
					{	
						//没价格权限
						if(!in_array('item_price',$shopRulesArr)){
							unset($vv['pro_sale_price'],$vv['pro_promotion_price']);
						}
						//没图片权限
						if(!in_array('item_pic',$shopRulesArr)){	
							unset($vv['spi_path'],$vv['spi_name']);
						}
					}
					unset($vv);
				}

				$shopMsg[$shopId]['GOODS_MSG'] = empty($v)?[]:$v;
			}
			LibTpl::Set('shopMsg',$shopMsg);

			if(isset($_SESSION['_userid']))
				LibTpl::Set('nowLoginUserId',$_SESSION['_userid']);
		}

		// 所有省份
		$YpwAddr = new YpwAddr();
		$data = $YpwAddr->getAddrTree();
		LibTpl::Set('Provincelist',$data['data']);


		// 搜索栏
		$ProvinceName = array();
		foreach ($data['data'] as  $v)
		{
			$ProvinceName[$v['pc_id']] = $v['pc_name'];

			if(!empty($v['child']))
			{
				foreach ($v['child'] as $kk => $vv)
				{
					$ProvinceName[$vv['pc_id']] = $vv['pc_name'];
				}
			}
		}
		LibTpl::Set('ProvinceNamelist',$ProvinceName);
		LibTpl::Set('smallPageMsg', LibPage::Samll($searchResult['total'], $Params['perPage'], '家店铺'));

		//店铺平均分
		$B2cShop = new B2cShop();
		$res = $B2cShop->getShopAverage();
		LibTpl::Set('avergeScore',$res['data']);
		$res = $B2cShop->getShopHighest();
		LibTpl::Set('heigthScore',$res['data']);

		// meta
		$headArr = [
			'title'=>'店铺搜索-跑街的',
			'keyword'=>'',	
			'des'=>''
		];
		LibTpl::Set('headArr', $headArr);
		LibTpl::Put();
	}

	/**
	  * @method 通过车型级数以及对应的车型ID获取车型数据
	  * @author soul 2017/6/16
	  */
	function getModelByIds()
	{
		$returnArr = [];
		$level = empty($_POST['level']) ? 0: (int) $_POST['level'];
		$modIdArr = [];
		foreach(explode(',', $_POST['modIds']) as $v)
		{
			$v = (int) $v;
			if($v > 0) $modIdArr[$v] = $v;
		}

		if($level > 0 && $level < 4 && !empty($modIdArr))
		{
			$ComModel = new ComModel();
			switch($level)
			{
				case 1: 
					$modelWhere = sprintf(" and mod1_id in (%s) order by brand_seq, brand_initial, make_seq, make_initial, mod1_name", implode(',', $modIdArr));
					$res = $ComModel->getModel(1, ['mod1_id', 'mod1_name', 'make_name'], $modelWhere);
					foreach($res['data'] as $v)
					{
						$returnArr[] = ['id'=>$v['mod1_id'], 'name'=>'<span class="gray">'.$v['make_name'].'</span> '.$v['mod1_name']];
					}
				break;
				case 2: 
					$modelWhere = sprintf(" and mod2_id in (%s) order by mod1_name, mod2_name, mod2_start_year", implode(',', $modIdArr));
					$res = $ComModel->getModel(2, ['mod2_id', 'mod2_name', 'mod2_start_year', 'mod2_end_year'], $modelWhere);
					foreach($res['data'] as $v)
					{
						$returnArr[] = ['id'=>$v['mod2_id'], 'name'=>$v['mod2_name'].' 【'.LibFc::formatViewYear($v['mod2_start_year'], $v['mod2_end_year'], 2).'】'];
					}
				break;
				case 3: 
					$modelWhere = sprintf(" and mod3_id in (%s) order by mod2_name, mod2_start_year, mod3_name, mod3_start_year", implode(',', $modIdArr));
					$res = $ComModel->getModel(3, ['mod3_id', 'mod3_name', 'mod3_start_year', 'mod3_end_year'], $modelWhere);
					foreach($res['data'] as $v)
					{
						$returnArr[] = ['id'=>$v['mod3_id'], 'name'=>$v['mod3_name'].' 【'.LibFc::formatViewYear($v['mod3_start_year'], $v['mod3_end_year'], 2).'】'];
					}
				break;
			}
		}
		LibFc::ajaxJsonEncode(['status'=>true, 'data'=>$returnArr]);
	}

	/**
	  * @method 获取配件品牌
	  * @author soul 2017/6/16
	  */
	function getProbrandByIds()
	{
		$returnArr = [];
		$idArr = [];
		foreach(explode(',', $_POST['prbId']) as $v)
		{
			$v = (int) $v;
			if($v > 0) $idArr[$v] = $v;
		}

		if(!empty($idArr))
		{
			$B2cBase = new B2cBase();
			$res = $B2cBase->get('bc_probrand', ['*'], sprintf(" and prb_id in (%s) order by prb_seq, prb_initial", implode(',', $idArr)));
			foreach($res['data'] as $v)
			{
				$returnArr[] = ['id'=>$v['prb_id'], 'name'=>$v['prb_name'], 'initial'=>$v['prb_initial'], 'word'=>$v['prb_keyword']];
			}
		}
		LibFc::ajaxJsonEncode(['status'=>true, 'data'=>$returnArr]);
	}
	/**
	  * @method ajax店铺评分细节
	  * @author soul 2018/3/17
	  */
	function ajaxGetShopInfoDetail()
	{
		if(LibFc::Int($_GET['shopId']))
		{
			$B2cShop = new B2cShop();
			//获取店铺平均分
			$avg = $B2cShop->getShopAverage();
			LibTpl::Set('avg', $avg['data']);
			//获取店铺最高分
			$height = $B2cShop->getShopHighest();
			// print_r($height);
			LibTpl::Set('height', $height['data']);
			//获取自身的分数
			$shopScore = $B2cShop->get('sh_shop',['shop_describe_score','shop_service_score','shop_logistics_score'],'and shop_id='.$_GET['shopId'],true);
			LibTpl::Set('shopScore', $shopScore['data']);
			$html = LibTpl::Fetch('search/ajaxGetShopInfoDetail.php');
			LibFc::ajaxJsonEncode(['status'=>true, 'data'=>$html]);
		}
		else
		{
			LibFc::ajaxJsonEncode(['status'=>false, 'data'=>'参数不正确！']);
		}
	}
	/**
	 * @method vin识别图片
	 * @author zhengweihua 
	 * @copyright 2022-05-18
	 */
	function vinImage()
	{
		$arr = ['vin'=>'', 'chars'=>[]];
        if(!empty($_POST['data']))
        {
            $post =  ['data'=>substr(strstr($_POST['data'], ','), 1)];
            $post['name'] = empty($_POST['name'])? 'vinFile.jpg': $_POST['name'];
            $LibYpApi = new LibYpApi();
            $res = $LibYpApi->get('ocr/vin', [],['image' => $post]);
            $arr['vin'] = $res['data'];
            if(strlen($arr['vin']) == 17) $arr['chars'] = str_split($arr['vin'], 1);
        }
        LibFc::ajaxJsonEncode(['status'=>true,'data'=>$arr]);
	}
}