<?php
class itemAction extends baseAction
{

	/**
	*1、号码 分类
	*2、关键字 分类 车型
	*/
	function search()
	{
		$Params = mvc::$URL_PARAMS;
		//车架号查询跳转
		if($Params['type'] == 'vin' || ($Params['type'] == 'all' && isset($Params['keyword']) && preg_match('/[0-9a-zA-Z]{17}/', trim($Params['keyword']))))
		{
			$_SESSION['MAIN_MONITOR']['tj'] = 0;
			LibFc::Go(str_ireplace('item/search?', 'item/searchVin?', LibFc::nowUrl()));
		}
		else if($Params['type'] == 'engine')
		{
			LibFc::Go(str_ireplace('item/search?', 'item/searchEngine?', LibFc::nowUrl()));
		}
		$B2cBase = new B2cBase();
		if(!empty($Params['sortId']))
		{
			$res = $B2cBase->get('sh_sort', ['sort_id', 'sort_name'], sprintf(" and sort_id=%d", (int) $Params['sortId']), true);
			LibTpl::Set('sortArr', $res['data']);
		}
		if(!empty($Params['mod3Id']))
		{
			$ComModel = new ComModel();
			$res = $ComModel->getModel(3, ['make_name', 'mod2_name', 'bc_model3.*'], sprintf(" and mod3_id = %d", (int) $Params['mod3Id']), true);
			LibTpl::Set('modArr', $res['data']);
		}
		LibTpl::Set('bodyClass', 'search-res');
		LibTpl::Set('Params', $Params);
		LibTpl::Set('title', '配件列表');
		LibTpl::Put();
	}


	/**获取某种参数下的分类**/
	function ajaxGetSearchSort()
	{
		$Params = mvc::$URL_PARAMS;
		$B2cBase = new B2cBase();
		$table = 'bc_product join sh_shop on pro_shop_id=shop_id and shop_status = 1 and pro_status =1 and pro_count>0 and shop_id='.mvc::$cfg['SHOPID'].' join bc_product_sort on prs_pro_id = pro_id';
		$where = '';
		if($Params['type'] == 'number')
		{
			$Params['formatNum'] = LibFc::FormatNum($Params['keyword']);
			if(strlen($Params['formatNum']) > 2)
			{
				$where .= sprintf(" and (num_format like '%s%%' or num_reformat like '%s%%')", $Params['formatNum'], strrev($Params['formatNum']));
				$table .= ' join bc_number on pro_id = num_pro_id';
			}
			else
			{
				$where .= ' and 1=0';
			}
		}
		else
		{
			$Params['mod3Id'] = (int) $Params['mod3Id'];
			if($Params['mod3Id'] > 0)
			{
				$table .= ' join bc_product_model3_link on pro_id = pml3_pro_id';
				$where .= sprintf(" and pml3_mod3_id=%d", $Params['mod3Id']);
			}
			
			//配件关键字
			if($Params['keyword'] != '')
			{
				$keywordArr = LibFc::keyword($Params['keyword']);
				$B2cKeyword = new B2cKeyword();
				$res = $B2cKeyword->getKeywordKeyIds($keywordArr);
				if(!empty($res['data']))
				{
					$tempWhere = sprintf(" and pro_id in (select prk_pro_id from bc_product_keyword where prk_key_id in (%s) group by prk_pro_id having count(*) = %d)", implode(',', $res['data']), count($res['data']));
				}
				else
				{
					$tempWhere = sprintf(" and pro_name like '%%%s%%'", LibFc::Escape($Params['keyword']));
				}
				$where .= $tempWhere;
			}
		}
		$res = $B2cBase->get($table, ['distinct prs_sort_id'], $where);
		if(!empty($res['data']))
		{
			$sortIdArr = array_column($res['data'], 'prs_sort_id');
			//追加父级
			$res = $B2cBase->get('sh_sort_tree', ['distinct sot_psort_id'], sprintf(" and sot_sort_id in(%s) and sot_psort_id > 0", implode(',', $sortIdArr)));
			$sortIdArr = array_merge($sortIdArr, array_column($res['data'], 'sot_psort_id'));
			$res = $B2cBase->get('sh_sort_tree join sh_sort on sot_sort_id = sort_id', ['sort_id', 'sort_name', 'sot_psort_id'], sprintf(" and sort_id in(%s) and sort_shop_id=%d order by sort_seq, sort_name", implode(',', $sortIdArr), mvc::$cfg['SHOPID']));
			$sortArr = [];
			$sortTreeArr = [];
			foreach($res['data'] as $v)
			{
				$sortTreeArr[$v['sot_psort_id']][] = $v['sort_id'];
				$sortArr[$v['sort_id']] = $v; 
			}
		}
		LibFc::ajaxJsonEncode(['status'=>true,'data'=>$sortArr]);
	}
	
	function index()
	{
		if(empty(mvc::$cfg['_SEARCH']))
		{
			$OthCheck = new OthCheck();
			$OthCheck->mustLogin('gzhs');
		}
		$B2cBase = new B2cBase();
		$res = $B2cBase->get('sh_sort_tree join sh_sort on sot_sort_id = sort_id', ['sort_id', 'sort_name'], sprintf(" and sot_psort_id = 0 and sort_shop_id=%d order by sort_seq, sort_name", mvc::$cfg['SHOPID']));
		$sortArr = $res['data'];
		LibTpl::Set('sortArr', $sortArr);
		LibTpl::Set('offCanvas', 1);
		LibTpl::Set('footMenu', 'item');
		LibTpl::Set('title', '配件查询');
		LibTpl::Put();
	}

	function ajaxSearch()
	{
		if(empty(mvc::$cfg['_SEARCH']))
		{
			if(empty($_SESSION['_userid']))
			{
				$OthCheck = new OthCheck();
				$OthCheck->mustLogin('gzhs');
			}
			else
			{
				LibFc::ajaxJsonEncode(['status'=>false,'data'=>'非常抱歉，您无权限访问此页面！']);
			}
		}
		$Params = mvc::$URL_PARAMS;
		if($Params['level'] == 'item') $Params['type'] = 'item';
		
		
		$B2cSearch = new B2cSearch();

		$res = $B2cSearch->get('sh_shop', ['shop_id, shop_smainnum, shop_srefnum, shop_sorder'], sprintf(" and shop_id=%d", mvc::$cfg['SHOPID']), true);
		if(empty($res['data'])) LibFc::ReturnJson(false, '店铺不存在或者尚未开通！');
		$shopInfo = $res['data'];
		$Params['order'] = $shopInfo['shop_sorder'];
		$perPage = 10;
		if(!empty($_SESSION['_userid']))
			$Params['uid'] = $_SESSION['_userid'];

		$res = $B2cSearch->searchShopItem(mvc::$cfg['SHOPID'], $Params, $perPage, ['pro_show_app'=>1]);
		$result = $res['data'];
		unset($result['param']['callback']);
		unset($result['param']['_']);
		unset($result['param']['uid']);
		$itemArr = [];
		if(!empty($result['proIds']))
		{
			$B2cProduct = new B2cProduct();
			$res = $B2cProduct->getAnyProductInfo($result['proIds'], $_SESSION['_userid'],null, [], $Params['mod3_id']);
			$itemArr = $res['data'];
			//不可以购买的人不可以查看第二个号码
			if(empty(mvc::$cfg['_CANBUY']) || mvc::$cfg['HIDEMAINNUM'])
			{
				foreach($itemArr as $k=>$v)
				{
					foreach($v['num'] as $kk=>$vv)
					{
						$itemArr[$k]['num'] = [$vv];
						break;
					}
				}
			}
		}
		LibTpl::Set('Params', $Params);
		LibTpl::Set('itemArr', $itemArr);
		$html = LibTpl::Fetch();
		LibFc::ajaxJsonEncode(['status'=>true,'data'=>['html'=>$html, 'Params'=>$result['param']]]);
	}

	/**
	 * @method    配件详情
	 * @author 卢
	 * @copyright 2018-07-19
	 */
	function info()
	{
		if(!in_array('item_page',mvc::$cfg['permissionArr'])){
			if(empty($_SESSION['_userid'])){
				$backUrl =  urlencode(LibFc::nowUrl());
				LibFc::Go(mvc::$cfg['SELF_URI'].'user/login?backUrl='.$backUrl);
			}
			LibTpl::Error('非常抱歉，您无权限访问此页面！');
		} 
		
		if(empty(mvc::$cfg['_SEARCH']))
		{
			if(empty($_SESSION['_userid']))
			{
				$OthCheck = new OthCheck();
				$OthCheck->mustLogin('gzhs');
			}
			else
			{
				 LibTpl::Error('非常抱歉，您无权限访问此页面！');
			}
		}
		$Params = mvc::$URL_PARAMS;
		$proId = (int) $Params['proId'];
		$B2cProduct = new B2cProduct();
		$res = $B2cProduct->get('bc_product', ['pro_id'], sprintf(" and pro_status= 1 and pro_id = %d and pro_shop_id=%d", $proId, mvc::$cfg['SHOPID']), true);
		if(empty($res['data'])) LibTpl::Error('配件'.$proId.'不存在或者已下架！');

		$uid=!empty($_SESSION['_userid'])?$_SESSION['_userid']:0;
		$res = $B2cProduct->getAnyProductInfo([$proId], $uid, ['numMain', 'picAll','mdPrice'], ['pro_show_app'=>1], $Params['mod3_id']);
		$proArr['base'] = $res['data'][$proId];
		if(empty($proArr['base']['pro_id'])) LibTpl::Error('配件'.$proId.'不存在或者已下架！');

		if(empty(mvc::$cfg['_CANBUY']))
		{
			foreach($proArr['base']['num'] as $k=>$v)
			{
				$proArr['base']['num'] = [$v];
				break;
			}
		}

		$proArr['imgs'] = $res['data'][$proId]['pic'];
		//加入浏览历史
		$B2cHistory = new B2cHistory();
		$r=$B2cHistory->addUserProHistory($_SESSION['_userid'],$proArr['base']['pro_id'],!empty($_SESSION['_shopid'])?$_SESSION['_shopid']:0);
		// print_r($r);
		if(!empty($proArr['base']['pro_prb_id']))
		{
			$brandArr=$B2cProduct->get('bc_probrand',['prb_name'],sprintf(' and prb_id=%d',$proArr['base']['pro_prb_id']),true);
			$data['brand']=$brandArr['data']['prb_name'];
		}
		//是否收藏
		$res=$B2cProduct->get('us_product_collection',['count(1) count'],sprintf(' and prc_pro_id=%d',$proArr['base']['pro_id']),true);
		LibTpl::Set('isColl',$res['data']['count']);
		$B2cBase = new B2cBase();
		$YpwAddr = new YpwAddr();
		//店铺信息
		$res=$B2cBase->get('sh_shop',['shop_pct_ids'],sprintf(' and shop_id=%d',mvc::$cfg['SHOPID']),true);
		$res=$YpwAddr->getAddrByIds($res['data']['shop_pct_ids']);
		LibTpl::Set('area',array_slice($res['data'],0,2));

		$B2cPart = new B2cPart();
		$table = $where = sprintf("bc_part_param_link 
			join bc_param_label on ppl_pal_id=pal_id and ppl_part_id = %d
			left join bc_product_param_float on ppf_pal_id=pal_id and ppf_pro_id = %d
			left join bc_product_param_string on pps_pal_id=pal_id and pps_pro_id = %d
			left join bc_param_unit on ppl_pau_id = pau_id", $proArr['base']['pro_part_id'], $proId, $proId);
		$where = ' and (ppf_pro_id  is not null or pps_pro_id is not null) order by ppl_seq';
		$res = $B2cBase->get($table, ['pal_id', 'pal_name, ppl_style, pps_value, ppf_value, pau_name'], $where);
		foreach($res['data'] as $v)
		{
			$v['pau_name'] = empty($v['pau_name']) ? '': $v['pau_name'];
			$v['val'] = empty($v['pps_value']) ? $v['ppf_value']: $v['pps_value'];
			$proArr['partParam'][$v['pal_id']] = ['name'=>$v['pal_name'], 'val'=>$v['val'], 'unit'=>$v['pau_name']];
		}

		//获取自定义配件参数
		if($proArr['base']['pro_ppt_id'] > 0)
		{
			$tplId = $proArr['base']['pro_ppt_id'];
			//有值的
			$feild = ['prpv_prl_id', 'prpv_pru_id', 'prpv_value','prl_name','pru_name'];
			$res=$B2cBase->get('bc_product_para_val join bc_product on pro_id= prpv_pro_id left join bc_product_label on prl_id=prpv_prl_id left join bc_product_unit on pru_id=prpv_pru_id', $feild, sprintf(" and pro_id=%d and pro_ppt_id =%d and (prpv_value is not null or prpv_value!='')", $proId, $tplId));
			$oldValArr = [];
			$oldValArr=array_column($res['data'], null,'prpv_prl_id');
			//新的
			$fieldArr=['pptl_ppt_id','prl_id','pru_id','pptl_seq','prl_name','pru_name'];
			$newlink=$B2cBase->get('bc_product_para_tpl_link left join bc_product_label on prl_id=pptl_prl_id left join bc_product_unit on pru_id=pptl_pru_id',$fieldArr,sprintf(' and pptl_ppt_id=%d order by pptl_seq asc,pptl_prl_id asc',$tplId));
			$newArr= array_column($newlink['data'], null,'prl_id');
			if(count($oldValArr))
			{
				foreach ($oldValArr as $k => $v)
				{
					$newArr[$k]=isset($newArr[$k])?array_merge($v,$newArr[$k]):$v;
				}
			}
			$data['proParams'] = $newArr;
		}

		//运费模板
		$frtId=$proArr['base']['pri_frt_id'];
		if($frtId)
		{
			$templateData=$B2cBase->get('sh_freight_tpl',['*'],' and frt_id='.$frtId,true);
			$sendAddrData=$YpwAddr->getAddrByIds($templateData['data']['frt_send_pct']);
			$addrArr=array_slice($sendAddrData['data'], 0,2);
			$templateData['data']['sendAddr']=mb_substr($addrArr[0], 0,2)==mb_substr($addrArr[1], 0,2)? $addrArr[1] : implode('',$addrArr);
			$data['template']=$templateData['data'];
		}
		$dataArr = array();
		$comLabel = $B2cBase->Get('or_evaluate_label_link left join or_evaluate_label on ell_evl_id=evl_id',['evl_id','evl_name'],sprintf(' and ell_pro_id=%d limit 6',$proArr['base']['pro_id']));
		foreach ($comLabel['data'] as $labK => $labV)
		{
			$dataArr[$labV['evl_id']] = $labV;
			if(array_key_exists($labV['evl_id'], $dataArr))
			{
				unset($dataArr[$labV['evl_id']]);
				$dataArr[$labV['evl_id']] = $labV;
			}else
			{
				$dataArr[$labV['evl_id']] = $labV;
			}
		}
		//累计评价
		$evaluateData=$B2cBase->get('or_evaluate_product',['count(*) count'],' and evp_pro_id='.$proId,true);
		$data['evaCount']=$evaluateData['data']['count'];
		if($data['evaCount'])
		{
			$YpwUser = new YpwUser();
			//第一条评价
			$res=$B2cBase->get('or_evaluate_product',['evp_comment','evp_add_time','evp_pro_id','evp_uid'],sprintf(' and evp_pro_id=%d order by evp_add_time desc',$proId),true);
			$logoInfo = $YpwUser->Get('yp_user', array('u_logo'), ' and u_id='.$res['data']['evp_uid'], true);
			$data['firstEval']=$res['data'];
			$data['firstEval']['u_logo']=$logoInfo['data']['u_logo'];
		}
		$data['comLabelArr']=$dataArr;
		$res = $B2cPart->getAllPart();
		$data['partArr']=$res['data'];
		//车型数量
		$res=$B2cBase->get('bc_product_brand_link',['count(1) count'],'and pbl_pro_id='.$proId,true);
		LibTpl::Set('modelNum',$res['data']['count']);
		//店铺分类
		$B2cShopSort = new B2cShopSort();
		$thisShopSort = $B2cShopSort->getShopSort($proArr['base']['pro_shop_id']);
		$data['thisShopSort']=$thisShopSort['data'];
		$data['proArr']=$proArr;
		$data['view']=$view;
		// 售后保障
		$B2cProduct = new B2cProduct();
		$res = $B2cProduct->getProAfterSellService($proId);
		$data['afterSel'] = array_filter($res['data']);
		//客服显示库存
		$showKucun = false;
		$res = $B2cProduct->get('sh_shop',['shop_self'],sprintf(" AND shop_id=%d",$proArr['base']['pro_shop_id']),true);
		if($res['data']['shop_self'])
		{
			$shopSelfArr = json_decode($res['data']['shop_self'],true)?:[];
			$kefuUidArr = array_column($shopSelfArr['kefu'],'uid');
			if($kefuUidArr && in_array($_SESSION['_userid'],$kefuUidArr)){
				$showKucun = true;
			}
		}
		LibTpl::Set('showKucun',$showKucun);
		$data['proArr']['base']['pro_self'] = $data['proArr']['base']['pro_self']?json_decode($data['proArr']['base']['pro_self'],true):[];
		LibTpl::Set('itemInfoData',$data);
		LibTpl::Set('bodyClass', 'item-page');
		LibTpl::Set('title', '配件详情');
		LibTpl::Put();
	}

	public function searchVin()
	{	
		$Params = mvc::$URL_PARAMS;
		if(!in_array('search_vin',mvc::$cfg['permissionArr'])){
			if(empty($_SESSION['_userid'])){
				$OthCheck = new OthCheck();
				$OthCheck->mustLogin('gzhs');
			}
			LibTpl::Error('非常抱歉，您无权限访问此页面！');
		}

		if(empty(mvc::$cfg['_SEARCH']))
		{
			if(empty($_SESSION['_userid']))
			{
				$OthCheck = new OthCheck();
				$OthCheck->mustLogin('gzhs');
			}
			else
			{
				LibTpl::Error('非常抱歉，您无权限访问此页面！');
			}
		}
		$hasImg = false;
		$vin = !isset($Params['keyword']) ? '': LibFc::FormatVin($Params['keyword']);
		LibTpl::Set('vin', $vin);
		$modelArr = [];
		if(strlen($vin) >= 17)
		{
			$vin = substr($vin, 0, 17);
			$needCaptcha = false;
			if(empty($_SESSION['vin'])) $_SESSION['vin'] = [];
			if(empty($_SESSION['vin'][$vin]))
			{
				$LibYpApi = new LibYpApi();
				$capres = $LibYpApi->get('super/checkVinCaptcha', ['uid'=>$_SESSION['_userid'], 'shopid'=>mvc::$cfg['SHOPID'], 'ip'=>LibFc::GetClientIp()]);
				$needCaptcha = $capres['data']['need'];
			}
			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::Put('index/captcha.php');
					exit;
				}else{
					$LibYpApi = new LibYpApi();
					$LibYpApi->get('super/addCaptchaLog', ['from'=>'gzh', 'uid'=>$_SESSION['_userid'], 'shopid'=>mvc::$cfg['SHOPID'], 'ip'=>LibFc::GetClientIp(), 'remark'=>$Params['captoken']]);
				}
			}
			$_SESSION['vin'][$vin] = 1;
			$LibYpApi = new LibYpApi();
			$deres = $LibYpApi->get('vin/decodeVin', ['vin'=>$vin, 'shopid'=>mvc::$cfg['SHOPID']], [], true);
			if($deres['status'])
			{
				$modelArr = $deres['data'];
				if(!empty($modelArr))
				{
					$B2cBase = new B2cBase();
					//全车件品牌限制
					$res = $B2cBase->get('sh_shop_brand', ['ssb_brand_id'], sprintf(" and ssb_shop_id=%d", mvc::$cfg['SHOPID']));
					$limitBrands = array_column($res['data'], 'ssb_brand_id');
					if(!empty($limitBrands) && !in_array($modelArr['brand_id'], $limitBrands)) LibTpl::Error('此目录尚未开放'.$vin.'的查询。');
					
					//资源包历史扣除
					$hisArr = [
						'ash_uid'=>mvc::$cfg['SHOPID'],
						'ash_type'=>'vin',
						'ash_act'=>'vin/decodeVin',
						'ash_val'=>$vin,
						'ash_uid_by'=>$_SESSION['_userid'],
						'ash_ip'=>LibFc::GetClientIp(),
						'ash_from'=>'gzh'
					];
					$LibYpApi->get('zyb/addHistory', [], $hisArr);
					foreach ($modelArr['model'] as $k => $v)
					{
						if(!empty($v['pic'])) $hasImg = true;
					}
				}
				//查询历史
				if(!empty($_SESSION['_userid']))
				{
					$historyArr = [
						'ush_uid'=>$_SESSION['_userid'],
						'ush_shop_id'=>mvc::$cfg['SHOPID'],
						'ush_type'=>$Params['type']=='all'?'all':'vin',
						'ush_word'=>$vin,
					];
					$LibYpApi = new LibYpApi();
					$LibYpApi->get('super/addSearchHistory', [], $historyArr);
				}
			}
			else
			{
				LibTpl::Set('errMsg', $deres['data']);
			}
		}
		$B2cBase = new B2cBase();
		$res = $B2cBase->get('sh_shop_app', ['aps_banner'], sprintf(" and aps_shop_id=%d", mvc::$cfg['SHOPID']), true);
		if(!empty($res['data']['aps_banner']))
		{
			$banner=json_decode($res['data']['aps_banner'],true);
			LibTpl::Set('banner', $banner);
		}
		LibTpl::Set('hasImg', $hasImg);
		LibTpl::Set('modelArr', $modelArr);
		LibTpl::Set('Params', $Params);
		LibTpl::Set('title', '车架号解码');
		LibTpl::Put('item/searchVin.php');

		
	}

}