<?php
class modelAction
{
	/**
	  * @method 获取车型品牌
	  * @author soul 2017/5/10
	  */
	function getModelBoxBrand()
	{
		$ComBase = new ComBase();
		$res = $ComBase->get('bc_brand', ['brand_id'], ' order by brand_seq,brand_initial limit 56');
		$hotBradArr = array_column($res['data'], 'brand_id');
		$html = '';
		$B2cBase = new B2cBase();
		/*$table = 'bc_product_brand_link
			join bc_product on pro_id = pbl_pro_id and pro_status = 1
			join sh_shop on pro_shop_id=shop_id and shop_status = 1';
		$res = $B2cBase->getFieldUniVal($table, 'pbl_brand_id');
		$brandIdArr = $res['data'];*/
		$ComModel = new ComModel();
		$res = $ComModel->getAllBrand();
		$AllBrand = $res['data'];
		$initialArr = [];
		$brandArr = [];
		foreach($AllBrand as $brandId=>$v)
		{
			//if(!in_array($brandId, $brandIdArr)) continue;
			$v['brand_initial'] = substr($v['brand_initial'], 0, 1);
			$initialArr[] = $v['brand_initial'];
			$brandArr[$brandId] = $v;
		}
		$initialArr = array_unique($initialArr);
		sort($initialArr);
		LibTpl::Set('hotBradArr', $hotBradArr);
		LibTpl::Set('initialArr', $initialArr);
		LibTpl::Set('brandArr', $brandArr);
		$html = LibTpl::Fetch();
		LibFc::ajaxJsonEncode(['status'=>true,'data'=>$html]);
	}


	/**
	  * @method 获取车型
	  * @author soul 2017/5/10
	  */
	function getModelBox()
	{
		$html = '';
		$Params = mvc::$URL_PARAMS;
		$level = (int) $Params['level'];
		if($level > 0 && $level < 4 && !empty($Params['pId']))
		{
			$ComModel = new ComModel();
			$ComBase = new ComBase();
			$modelArr = [];
			$selArr = [];
			$brandId = 0;
			$makeId = 0;
			$mod1Id = 0;
			$mod2Id = 0;
			switch($level)
			{
				case 1:
					$brandId = (int) $Params['pId'];
					$res = $ComBase->get('bc_brand', ['brand_id', 'brand_name', 'brand_code'], sprintf(" and brand_id=%d", $brandId), true);
					$selArr = $res['data'];
					if(!empty($selArr))
					{
						/*$where = sprintf(" and mod1_id in (
							select mod1_id from B2C.bc_product_model1_link
								join B2C.bc_product on pro_id = pml1_pro_id and pro_status = 1
								join B2C.sh_shop on pro_shop_id=shop_id and shop_status = 1
								join bc_model1 on mod1_id=pml1_mod1_id
								where mod1_brand_id=%d
						) order by make_seq, make_initial, mod1_name", $brandId);*/
						$where = sprintf(" and mod1_brand_id=%d order by make_seq, make_initial, mod1_name", $brandId);
						$res = $ComModel->getModel($level, ['make_id', 'make_name', 'mod1_id', 'mod1_name'], $where);
						if(!empty($res['data']))
						{
							foreach($res['data'] as $v)
							{
								if(empty($modelArr['make'][$v['make_id']]))
									$modelArr['make'][$v['make_id']] = $v;
								$modelArr['model'][$v['make_id']][] = $v;
							}
						}
					}
				break;
				case 2:
					$mod1Id = (int) $Params['pId'];
					$res = $ComModel->getModel(1, ['brand_id', 'brand_name', 'brand_code', 'make_id', 'make_name', 'mod1_id', 'mod1_name'], sprintf(" and mod1_id = %d", $mod1Id), true);
					$selArr = $res['data'];
					if(!empty($selArr))
					{
						/*$where = sprintf(" and mod2_id in (
							select mod2_id from B2C.bc_product_model2_link
							join B2C.bc_product on pro_id = pml2_pro_id and pro_status = 1
							join B2C.sh_shop on pro_shop_id=shop_id and shop_status = 1
							join bc_model2 on mod2_id=pml2_mod2_id where mod2_mod1_id=%d
						) order by mod1_name, mod2_name, mod2_start_year", $pId);
						$where = sprintf(" and mod2_mod1_id=%d order by mod1_name, mod2_name, mod2_start_year", $mod1Id);
						$res = $ComModel->getModel($level, ['mod2_id', 'mod2_name', 'mod2_start_year', 'mod2_end_year'], $where);
						$modelArr = $res['data'];*/
						$where = sprintf(" and mod2_mod1_id=%d order by mod2_name, mod2_start_year, mod3_name, mod3_start_year", $mod1Id);
						$res = $ComModel->getModel(3, ['mod2_id', 'mod2_name', 'mod2_start_year', 'mod2_end_year', 'bc_model3.*'], $where);
						$modelArr = $res['data'];
						$replaceArr = [
							'tran'=>[
								'A/MT'=>'手自一体',
								'AMT'=>'AMT',
								'DCT'=>'双离合',
								'单速'=>'单速',
								'ASG'=>'序列',
								'CVT'=>'无级',
								'AT'=>'自动',
								'MT'=>'手动',
								'自动（模拟10挡）'=>'自动'
							],
						];
						$modelParamsArr = [
							'year'=>['name'=>'年份', 'val'=>[]],
							'cc'=>['name'=>'排量', 'val'=>[]],
							'drive'=>['name'=>'驱动方式', 'val'=>[]],
							'tran'=>['name'=>'变速箱', 'val'=>[]],
							'fuel'=>['name'=>'能源', 'val'=>[]],
							'mod2'=>['name'=>'年代', 'val'=>[]],
						];
						$tempMod2Arr = [];
						$sortArr = [];
						foreach($modelArr as $k=>$v)
						{
							$v['years'] = [];
							if($v['mod3_start_year'] > 0)
							{
								$endYear = empty($v['mod3_end_year']) ? date('Y'): $v['mod3_end_year'];
								for($i = $v['mod3_start_year']; $i <=$endYear; $i++)
								{
									$v['years'][$i] = $i;
									$modelParamsArr['year']['val'][$i] = $i;
								}
							}
							$temp = [
								'id'=>$v['mod2_id'],
								'val'=>$v['mod2_name'].LibFc::formatViewYear($v['mod2_start_year'], $v['mod2_end_year'], 2, 1),
								'year'=>empty($v['mod2_end_year']) ? date('Y'): $v['mod2_end_year']
							];
							$sortArr[] = $temp['year'];
							$tempMod2Arr[] = $temp;
							$cc = number_format(ceil(number_format($v['mod3_cc']/100, 1))/10, 1);
							$v['cc'] = $cc;
							$modelParamsArr['cc']['val'][$cc] = $cc;
							//计算驱动
							$v['mod3_drive_RE']  = '';
							if($v['mod3_drive'] != '')
							{
								if(in_array($v['mod3_drive'], ['双电机后驱', '三电机四驱']))
									$v['mod3_drive_RE'] = $v['mod3_drive'];
								else if(stripos($v['mod3_drive'], '四驱') !== false)
									$v['mod3_drive_RE'] = '四驱';
								else
									$v['mod3_drive_RE'] = '两驱';
								$modelParamsArr['drive']['val'][$v['mod3_drive_RE']] = $v['mod3_drive_RE'];
							}
							
							$v['mod3_transmission_RE'] = $v['mod3_transmission'];
							foreach($replaceArr['tran'] as $kt=>$vt)
							{
								if(stripos($v['mod3_transmission_RE'], $kt) !== false)
								{
									$v['mod3_transmission_RE'] = $vt;
									break;
								}
							}
							$modelParamsArr['tran']['val'][$v['mod3_transmission_RE']] = $v['mod3_transmission_RE'];
							$modelParamsArr['fuel']['val'][$v['mod3_fuel']] = $v['mod3_fuel'];
							$modelArr[$k] = $v;
						}
						rsort($modelParamsArr['year']['val']);
						sort($modelParamsArr['cc']['val']);
						sort($modelParamsArr['tran']['val']);
						sort($modelParamsArr['drive']['val']);
						rsort($modelParamsArr['fuel']['val']);
						array_multisort($sortArr, SORT_DESC, $tempMod2Arr);
						foreach($tempMod2Arr as $v)
						{
							$modelParamsArr['mod2']['val'][$v['id']] = $v['val'];
						}
						LibTpl::Set('modelParamsArr', $modelParamsArr);
					}
				break;
			}
			LibTpl::Set('selArr', $selArr);
			
			LibTpl::Set('modelArr', $modelArr);
			LibTpl::Set('level', $level);
			$html = LibTpl::Fetch();
		}
		LibFc::ajaxJsonEncode(['status'=>true,'data'=>$html]);
	}


	/**
	  * @method 获取车型
	  * @author soul 2017/5/10
	  */
	function searchModelBox()
	{
		$html = '';
		$Params = mvc::$URL_PARAMS;
		$level = (int) $Params['level'];
		$word = strtoupper(trim($Params['word']));
		if($level > 0 && $level < 4 && $word != '')
		{
			$ComModel = new ComModel();
			$modelArr = [];
			switch($level)
			{
				case 1:
					$where = sprintf(" and (brand_name like '%%%s%%' or mod1_name like '%%%s%%') order by brand_seq,brand_initial, make_seq, make_initial, mod1_name", LibFc::Escape($word), LibFc::Escape($word));
					$res = $ComModel->getModel($level, ['brand_name', 'make_id', 'make_name', 'mod1_id', 'mod1_name'], $where);
					if(!empty($res['data']))
					{
						foreach($res['data'] as $v)
						{
							if(empty($modelArr['make'][$v['make_id']]))
								$modelArr['make'][$v['make_id']] = $v;
							$modelArr['model'][$v['make_id']][] = $v;
						}
					}
				break;
			}
			LibTpl::Set('modelArr', $modelArr);
			LibTpl::Set('level', $level);
			$html = LibTpl::Fetch();
		}
		LibFc::ajaxJsonEncode(['status'=>true,'data'=>$html]);
	}

	

	/*
	*获取我的默认车型
	*/
	function getMyIndexCar()
	{
		$html = '';
		$Params = mvc::$URL_PARAMS;
		$uid = empty($_SESSION['_userid'])? 0: $_SESSION['_userid'];
		$B2cUser = new B2cUser();
		$res = $B2cUser->getUserNowCar($uid);
		$mod3Id = $res['data'];
		if($mod3Id > 0)
		{
			$ComModel = new ComModel();
			$res = $ComModel->getModel(3, ['brand_code', 'make_name', 'mod2_name', 'mod3_name', 'mod3_start_year', 'mod3_end_year','make_show_brand','brand_name'], sprintf(" and mod3_id = %d", $mod3Id), true);
			if(!empty($res['data']))
			{
				$name = sprintf('%s %s %s%s', (!empty($res['data']['make_show_brand'])?$res['data']['brand_name']:$res['data']['make_name']), $res['data']['mod2_name'], $res['data']['mod3_name'], LibFc::formatViewYear($res['data']['mod3_start_year'], $res['data']['mod3_end_year'], 2, 1));
				$html = sprintf('<img class="brand-logo" src="%sstatic/images/chebiao/%s.png"><span class="model-name">%s</span><i class="icon2 icon2_refresh"></i>', mvc::$cfg['HOST']['b2c'], $res['data']['brand_code'], $name);
			}
		}
		LibFc::ajaxJsonEncode(['status'=>true,'data'=>$html]);
	}


	/**
	  * @method 获取我的车型浏览历史
	  * @author xu 2017/12/21
	  */
	function getMyCarHistory()
	{
		$ComModel = new ComModel();
		//判定是否登录
		if(empty($_SESSION['_userid']) || empty($_SESSION['_username']))
		{
			$allMark = array();
			// 未登录依据cookie获取浏览历史
			if(!empty($_COOKIE['carHistiry']))
			{
				// 调用cookie获取数据
				$allmMod3Ids = explode('|', $_COOKIE['carHistiry']);
				// 给数组排序，爱车排在前面
				$allSearchData = array();
				foreach ($allmMod3Ids as $k => $v)
				{
					$tmpitem = explode(':', $v);
					if($tmpitem[1]==1)
					{
						$allSearchData[] = current($tmpitem);
						$allMark[] = current($tmpitem);
					}
				}
				foreach ($allmMod3Ids as $k => $v)
				{
					$tmpitem = explode(':', $v);
					if($tmpitem[1]<1)
					{
						$allSearchData[] = current($tmpitem);
					}
				}
			}
		}
		else
		{
			// 已经登录就获取表数据渲染
			$B2cBase = new B2cBase();
			$res = $B2cBase->get('us_mycar',['myc_mod3_id','myc_coll'],sprintf(" and myc_uid=%d order by myc_coll desc,myc_ltime desc ",$_SESSION['_userid']));
			$res = $res['data'];
			$allSearchData = array_column($res, 'myc_mod3_id');
			$unmarkArr = array();
			// 获取所有收藏的id
			foreach ($res as $k => $v)
			{
				if($v['myc_coll']==1)
				{
					$allMark[] = $v['myc_mod3_id'];
				}
				if($v['myc_coll']!=1)
				{
					$unmarkArr[] = $v['myc_mod3_id'];
				}
			}
			// 如果爱车数量超过5就要删除一个
			if(count($allMark)>5)
			{
				$tmp = end($allMark);
				$B2cBase->del('us_mycar',sprintf(" and myc_uid=%d and myc_mod3_id=%d ",$_SESSION['_userid'],$tmp));
				// 删除数组织中
				foreach ($allSearchData as $k => $v)
				{
					if($v==$tmp)
					{
						unset($allSearchData[$k]);
					}
				}
			}
			if(count($unmarkArr)>10)
			{
				$tmp = end($unmarkArr);
				$B2cBase->del('us_mycar',sprintf(" and myc_uid=%d and myc_mod3_id=%d ",$_SESSION['_userid'],$tmp));
				// 删除数组织中
				foreach ($allSearchData as $k => $v)
				{
					if($v==$tmp)
					{
						unset($allSearchData[$k]);
					}
				}
			}


		}
		if(empty($allSearchData))
		{
			LibTpl::Set('data',array());
			$html = LibTpl::Fetch('model/getModelHistory.php');
			LibFc::ajaxJsonEncode(['status'=>true, 'data'=>$html]);
		}
		// 将排序好的三级车型ID调用接口获取车型数据
		$res = $ComModel->getModelBymodThreeIds($allSearchData);
		// 返回的数据重新排序
		$newRes = array();
		foreach ($allSearchData as $k => $v)
		{
			foreach ($res['data'] as $kk => $vv)
			{
				if($v==$vv['mod3_id'])
				{
					$newRes[] = $vv;
				}
			}
		}
		LibTpl::Set('data',$newRes);

		LibTpl::Set('allMark',$allMark);
		$html = LibTpl::Fetch('model/getModelHistory.php');
		LibFc::ajaxJsonEncode(['status'=>true, 'data'=>$html]);		
	}

	/**
	  * @method 删除车型浏览历史
	  * @author xu 2017/12/21
	  */
	function delMyCarHistory()
	{
		// 校验车型号以及类型
		if(!LibFc::Int($_POST['mod3Id']))
		{
			LibFc::ajaxJsonEncode(['status'=>true, 'data'=>true]);
		}

		//未登录的情况
		if(empty($_SESSION['_userid']) || empty($_SESSION['_username']))
		{
			if(isset($_COOKIE['carHistiry']))
			{
				$data = explode('|', $_COOKIE['carHistiry']);
				// 去重复
				foreach ($data as $k => $v)
				{
					$tmpitem = explode(':', $v);
					if(current($tmpitem) == $_POST['mod3Id'])
					{
						unset($data[$k]);
					}
				}
				sort($data);
				setCookie('carHistiry', implode('|', $data), time()+3600*24*7, '/', mvc::$cfg['HOST']['b2c'], true, true);
			}
			LibFc::ajaxJsonEncode(['status'=>true, 'data'=>true]);
		}
		else
		{
			// 已经登录的情况
			$B2cBase = new B2cBase();
			$B2cBase->del('us_mycar',sprintf(" and myc_uid=%d and myc_mod3_id=%d ",$_SESSION['_userid'],$_POST['mod3Id']));
			LibFc::ajaxJsonEncode(['status'=>true, 'data'=>true]);
		}

	}


	/**
	  * @method 添加车型浏览历史
	  * @author xu 2017/12/21
	  */
	function addMyCarHistory()
	{
		// 校验车型号以及类型
		if(!LibFc::Int($_POST['mod3Id']) || !in_array($_POST['coll'],[0,1,-1]))
		{
			LibFc::ajaxJsonEncode(['status'=>true, 'data'=>true]);
		}

		setCookie('autoCar', 1, time()+3600*24*7, '/', mvc::$cfg['HOST']['b2c'], true, true);

		//未登录
		if(empty($_SESSION['_userid']) || empty($_SESSION['_username']))
		{
			if(isset($_COOKIE['carHistiry']))
			{
				$data = explode('|', $_COOKIE['carHistiry']);
				// 去重复
				foreach ($data as $k => $v)
				{
					$tmpitem = explode(':', $v);
					if(current($tmpitem) == $_POST['mod3Id'])
					{
						// 如果此时为-1就直接退出，否则继续更改状态
						if($tmpitem[1]==-1)
						{
							LibFc::ajaxJsonEncode(['status'=>true, 'data'=>true]);
						}
						unset($data[$k]);
					}
				}
				if($_POST['coll']<1)
				{
					$_POST['coll']=0;
				}
				// 如果多于五个将最后一个数组去除,获取未收藏的,如果不小1个，则删除最后一个为收藏的，否则删除这个五个的最后一个
				if(count($data)>4)
				{
					$unmark = array();
					foreach ($data as $k => $v) 
					{	
						$tmpitem = explode(':', $v);
						if($tmpitem[1]!=1)
						{
							$unmark[] = $tmpitem;
						}
					}
					if(count($unmark)>0)
					{
						$tmp = end($unmark);
						foreach ($data as $kkk => $vvv)
						{	
							$tmpitem = explode(':', $vvv);
							if(current($tmpitem)==current($tmp))
							{
								unset($data[$kkk]);
							}
						}
					}
					else
					{
						array_pop($data);
					}
				}
				// 向数组头部添加元素
				array_unshift($data,implode(':', [$_POST['mod3Id'],$_POST['coll']]));
				// sort($data);
				setCookie('carHistiry', implode('|', $data), time()+3600*24*7, '/', mvc::$cfg['HOST']['b2c'], true, true);
			}
			else
			{
				setCookie('carHistiry', implode(':',array($_POST['mod3Id'],$_POST['coll'])), time()+3600*24*7, '/', mvc::$cfg['HOST']['b2c'], true, true);
			}
			// print_r($_COOKIE);die;
			LibFc::ajaxJsonEncode(['status'=>true, 'data'=>true]);
		}
		// 已经登录
		$B2cBase = new B2cBase;
		// 拼接where条件查询用户是否浏览过
		$where = sprintf(" and myc_uid=%d and myc_mod3_id=%d ",$_SESSION['_userid'],$_POST['mod3Id']);
		$res = $B2cBase->get('us_mycar',['*'],$where,true);
		$res = $res['data'];
		if(empty($res))
		{
			if($_POST['coll']<1)
			{
				$_POST['coll']=0;
			}
			// 获取用户浏览记录（收藏）最多五条
			if($_POST['coll']==1)
			{
				$res = $B2cBase->get('us_mycar',['*'], sprintf(" and myc_uid=%d and myc_coll=1 order by myc_ltime asc ",$_SESSION['_userid']));
				$res = $res['data'];
				
				if(count($res)>5)
				{
					$first = current($res);
					// 删除最先录入数据库的那一条记录
					$B2cBase->del('us_mycar',sprintf(" and myc_uid=%d and myc_coll=1 and myc_mod3_id=%d ",$_SESSION['_userid'],$first['myc_mod3_id']));
				}
			}
			else
			{
				// 获取用户浏览记录（非收藏）
				$res = $B2cBase->get('us_mycar',['*'], sprintf(" and myc_uid=%d and myc_coll=0 order by myc_ltime asc ",$_SESSION['_userid']));
				if(count($res)>10)
				{
					$first = current($res);
					// 删除最先录入数据库的那一条记录
					$B2cBase->del('us_mycar',sprintf(" and myc_uid=%d and myc_coll=1 and myc_mod3_id=%d ",$_SESSION['_userid'],$first['myc_mod3_id']));
				}
			}
			// 新增一条浏览历史
			$dataArr = array(
				'myc_uid'=>$_SESSION['_userid'],
				'myc_mod3_id'=>$_POST['mod3Id'],
				'myc_atime'=>time(),
				'myc_coll'=>$_POST['coll'],
				'myc_ltime'=>time()
			);
			$B2cBase->add('us_mycar',$dataArr);
			LibFc::ajaxJsonEncode(['status'=>true, 'data'=>true]);
		}
		else
		{	
			// 如果-1不要更新状态值
			if($_POST['coll']<0)
			{
				$data = array('myc_ltime'=>time());
			}
			else
			{
				$data = array('myc_coll'=>$_POST['coll'],'myc_ltime'=>time());
			}
			// 修改记录
			$B2cBase->set('us_mycar',$data,$where);
			LibFc::ajaxJsonEncode(['status'=>true, 'data'=>true]);
		}
	}



	/**
	  * @method 更改车型的状态
	  * @author xu 2017/12/21
	  */
	function setMyCarColl()
	{
		// 校验车型号以及类型
		if(!LibFc::Int($_POST['mod3Id']) || !in_array($_POST['coll'],[0,1]))
		{
			LibFc::ajaxJsonEncode(['status'=>true, 'data'=>true]);
		}
		//判定是否登录
		if(empty($_SESSION['_userid']) || empty($_SESSION['_username']))
		{
			if(isset($_COOKIE['carHistiry']))
			{
				$data = explode('|', $_COOKIE['carHistiry']);
				// 去重复
				foreach ($data as $k => $v)
				{
					$tmpitem = explode(':', $v);
					if(current($tmpitem) == $_POST['mod3Id'])
					{
						unset($data[$k]);
					}
				}
				// 去除数组重新录入cookie
				$data[] = implode(':',[$_POST['mod3Id'],$_POST['coll']]);
				sort($data);
				setCookie('carHistiry', implode('|', $data), time()+3600*24*7, '/', mvc::$cfg['HOST']['b2c'], true, true);
			}
			// print_r($_COOKIE);die;
			LibFc::ajaxJsonEncode(['status'=>true, 'data'=>true]);
		}

		$B2cBase = new B2cBase;
		// 拼接where条件查询用户是否浏览过

	
		// 现在处理这个新加入的记录
		$where = sprintf(" and myc_uid=%d and myc_mod3_id=%d ",$_SESSION['_userid'],$_POST['mod3Id']);

		// 修改记录
		$B2cBase->set('us_mycar',array('myc_coll'=>$_POST['coll']),$where);
		LibFc::ajaxJsonEncode(['status'=>true, 'data'=>true]);
	}

}