<?php
/**
*品牌目录
*/
class superAction extends baseAction
{
	/**
	  * @method 检查目录查询用户是否需要验证码
	  * @http	get
	  * @param  uid      int [必填] 用户ID
	  * @param  shopid   int [必填] 目录店铺ID
	  * @author soul
	  * @copyright 2022/9/23
	  * @return {"status":true,"data":{"need":false},"code":"","runtime":68}
	  */
	public function checkVinCaptcha()
	{
		$Params = mvc::$URL_PARAMS;
		$need = false;
		$shopid = (int) $Params['shopid'];
		$uid = (int) $Params['uid'];
		if(!empty($uid))
		{
			//店铺会员不需要验证码
			$B2cBase = new B2cBase();
			$table = 'sh_member_link JOIN sh_member ON mem_id = meml_mem_id AND meml_shop_id = mem_shop_id';
			$res = $B2cBase->get($table, ['mem_mel_id'], sprintf(" and mem_mel_id > 0 AND meml_shop_id=%d AND meml_uid=%d", $shopid, $uid));
			if(!empty($res['data'])) LibFc::ReturnJson(true, ['need'=>false]);
		}
		else if(empty($Params['ip']))
		{
			 LibFc::ReturnJson(true, ['need'=>true]);
		}
		//当天的查询情况统计
		$date = date('Ymd');
		if(empty($uid)){
			$where = sprintf(" and cap_shopid=%d and cap_type='ip' and cap_date=%d and cap_ip='%s' order by cap_id desc limit 1", $shopid, $date, LibFc::Escape($Params['ip']));
			$YpwBase = new YpwBase();
			$res = $YpwBase->get('yp_captcha', ['cap_id'], $where, true);
			if(empty($res['data'])) LibFc::ReturnJson(true, ['need'=>true]);
		}
	
		$MainBase = new MainBase();
		$max = 30;
		if(!empty($uid)){
			//普通会员 
			$max = 150;
			$where = sprintf(" and ash_type='vin' and ash_date=%d and ash_uid_by=%d and ash_from in ('super', 'gzh') group by ash_uid", $date, $uid);
		}else{
			//ip
			$where = sprintf(" and ash_type='vin' and ash_date=%d and ash_ip='%s' and ash_from in ('super', 'gzh') group by ash_uid", $date, LibFc::Escape($Params['ip']));
		}
		$res = $MainBase->get('api_search_history', ['ash_uid shopid','count(*) total'], $where);
		$total = 0;
		$tjShop = [];
		foreach($res['data'] as $v)
		{
			$tjShop[$v['shopid']] = $v;
			$total += $v['total'];
		}
		$tjShop = array_column($res['data'], null, 'shopid');
		if(!empty($uid)){
			//当天尚未查询不需要验证码
			//if(empty($total)) LibFc::ReturnJson(true, ['need'=>false]);
			if(empty($total)) LibFc::ReturnJson(true, ['need'=>true]);
			if(
				($total > $max && $total%2 === 0) || 
				(count($tjShop) > 4 && $total%2 === 0)||
				(count($tjShop) == 4 && $total%3 === 0) || 
				(count($tjShop) == 3 && $total%4 === 0) ||
				(count($tjShop) == 2 && $total%8 === 0) ||
				(count($tjShop) <= 1 && $total%15 === 0)
			) LibFc::ReturnJson(true, ['need'=>true]);
		}else{
			//当天尚未查询需要验证码
			if(empty($total)) LibFc::ReturnJson(true, ['need'=>true]);
			if(date('H') < 6 || date('H') > 22 ||
				($total > $max && $total%2 === 0) || 
				count($tjShop) > 4 ||
				(count($tjShop) <= 4 && count($tjShop) > 2 && $total%6 === 0) || 
				(count($tjShop) <= 2 && $total%12 === 0)
			) LibFc::ReturnJson(true, ['need'=>true]);
		}
		LibFc::ReturnJson(true, ['need'=>$need]);
	}

	/**
	  * @method 添加验证码记录  ['from'=>'super', 'uid'=>$_SESSION['_userid'], 'shopid'=>mvc::$cfg['SHOPID'], 'ip'=>LibFc::GetClientIp()]
	  * @http	get
	  * @param  from     string [必填] super|gzh
	  * @param  uid      int [必填] 用户ID
	  * @param  shopid   int [必填] 目录店铺ID
	  * @param  ip   string [选填] 
	  * @author soul
	  * @copyright 2022/9/23
	  * @return 
	  */
	public function addCaptchaLog()
	{
		$Params = mvc::$URL_PARAMS;
		$uid = (int) $Params['uid'];
		$add = [
			'cap_date'=>date('Ymd'),	
			'cap_type'=>$uid > 0? 'user': 'ip',	
			'cap_shopid'=>(int) $Params['shopid'],	
			'cap_uid'=>$uid,	
			'cap_ip'=>$Params['ip'],	
			'cap_from'=>$Params['from'],	
			'cap_remark'=>$Params['remark'],	
			'cap_atime'=>time()
		];
		$YpwBase = new YpwBase();
		$YpwBase->add('yp_captcha', $add);
		LibFc::ReturnJson(true, true);
	}

	/**
	  * @method 收藏品牌目录(新增、调整顺序)
	  * @http	get
	  * @param  uid        int [必填] 用户ID
	  * @param  ssu_id        int [必填] 目录ID
	  * @param  usb_seq            int [选填] 排序 小到大
	  * @author soul
	  * @copyright 2019/5/27
	  * @return {"status":true,"data":true,"code":null}
	  */
	public function setMyCollB2cSuper()
	{
		$Params = mvc::$URL_PARAMS;
		$addArr = [
			'usb_pu_uid'=>(int) $Params['uid'],
			'usb_ssu_id'=>(int) $Params['ssu_id'],
			'usb_seq'=> isset($Params['usb_seq'])? (int) $Params['usb_seq']: time()
		];
		if($addArr['usb_pu_uid'] < 1) LibFc::ReturnJson(false, '用户ID不存在！');
		if($addArr['usb_ssu_id'] < 1) LibFc::ReturnJson(false, '品牌目录ID不存在！');

		$B2cBase = new B2cBase();
		$res = $B2cBase->get('sh_super', ['ssu_fac_id, ssu_shop_id shop_id'], sprintf(" and ssu_id = %d", $addArr['usb_ssu_id']), true);
		if(empty($res['data'])) LibFc::ReturnJson(false, '品牌目录ID不存在！');
		$superArr = $res['data'];
		$res = $B2cBase->get('us_user_super', ['usb_seq'], sprintf(" and usb_pu_uid=%d and usb_ssu_id=%d", $addArr['usb_pu_uid'], $addArr['usb_ssu_id']), true);
		if(empty($res['data']))
		{
			//最多20个
			$where = sprintf(" and usb_pu_uid=%d", $addArr['usb_pu_uid']);
			$where .= $superArr['shop_id'] > 0? ' and ssu_shop_id > 0': ' and ssu_shop_id < 1';
			$res = $B2cBase->get('us_user_super join sh_super on ssu_id =usb_ssu_id', ['count(*) as count'], $where, true);
			if($res['data']['count'] >= 20)
				LibFc::ReturnJson(false, '最多只能收藏10个目录！');

			$addArr['usb_atime'] = time();
			$B2cBase->add('us_user_super', $addArr); 
		}
		else
		{
			$B2cBase->set('us_user_super', $addArr, sprintf(" and usb_pu_uid=%d and usb_ssu_id=%d", $addArr['usb_pu_uid'], $addArr['usb_ssu_id'])); 
		}
		LibFc::ReturnJson(true, true);
	}


	/**
	  * @method 批量调整顺序 收藏品牌目录
	  * @http	get
	  * @param  uid        int [必填] 用户ID
	  * @param  ssu_ids             string [必填] 格式 ssu_id:usb_seq 多个逗号分隔(id1:seq1,id2:seq2)
	  * @author soul
	  * @copyright 2019/5/27
	  * @return {"status":true,"data":true,"code":null}
	  */
	public function setMyCollB2cSuperSeq()
	{
		$Params = mvc::$URL_PARAMS;
		$B2cBase = new B2cBase();
		foreach(explode(',', $Params['ssu_ids']) as $v)
		{
			$t = explode(':', $v);
			if(count($t) == 2 && $t[0] > 1)
			{
				$B2cBase->set('us_user_super', ['usb_seq'=>(int)$t[1]], sprintf(" and usb_pu_uid=%d and usb_ssu_id=%d", $Params['uid'], $t[0])); 
			}
		}
		LibFc::ReturnJson(true, true);
	}


	/**
	  * @method 取消品牌目录收藏
	  * @http	get
	  * @param  uid        int [必填] 用户ID
	  * @param  ssu_ids              string [必填] 目录ID，多个逗号分隔
	  * @author soul
	  * @copyright 2019/5/27
	  * @return {"status":true,"data":true,"code":null}
	  */
	public function delMyCollB2cSuper()
	{
		$Params = mvc::$URL_PARAMS;
		$ids = [];
		foreach(explode(',', $Params['ssu_ids']) as $v)
		{
			$ids[] = (int) $v;
		}
		$ids = array_unique($ids);
		if(!empty($ids))
		{
			$B2cBase = new B2cBase();
			$B2cBase->del('us_user_super', sprintf(" and usb_pu_uid=%d and usb_ssu_id in (%s)", $Params['uid'], implode(',', $ids)));
		}
		LibFc::ReturnJson(true, true);
	}



	/**
	  * @method 品牌目录列表
	  * @http	get
	  * @param  type   string [选填] 默认品牌目录：b2c  国际品牌：tcdcn
	  * @param  style  string [选填] 默认所有:all  我收藏的:coll  某车型的目录最多5个：list5  某车型的目录所有：list
	  * @param  uid    int [style=coll必填] 用户ID 
	  * @param  mod3_id  int [选填] 车型ID
	  * @author soul
	  * @copyright 2019/7/11
	  * @return {"status":true,"data":[{"ssu_id":"923783","ssu_fac_id":100002,"shop_id":0,"ssu_name":"ATE","ssu_logo":"http:\/\/192.168.1.42\/file_center\/center\/read.php?site=b2c&c=shopLogo&f=100\/3100b9e22b2eba42.jpg&i=42","ssu_info":"ATE公司创建于1906年，后合并于德国大陆集团。在其创建后近一个世纪的时间里，一直是汽车制动系统的领导者。","ssu_initial":"A","ssu_model":{"L0":"m1_id","L1":"m2_id","L2":"cc_name:transmission","L3":"drive"},"iscoll":1,"usb_seq":0,"hasitem":1},...],"code":0}
	  ssu_model：车型选择模式
	  shop_id：宜配商城目录
	  ssu_fac_id：中国TCD品牌目录
	  iscoll：是否已收藏
	  usb_seq：收藏排序
	  hasitem：是否有产品
	  */
	public function getSuperList()
	{
		$Params = mvc::$URL_PARAMS;
		$arr = [];
		$resArr = [];
		$uid = (int) $Params['uid'];
		$mod3_id = (int) $Params['mod3_id'];
		$B2cBase = new B2cBase();
		$type = isset($Params['type']) && $Params['type'] == 'tcdcn'? 'tcdcn': 'b2c';
		$style = empty($Params['style']) ? 'all': $Params['style'];
		$where =sprintf(" and ssu_status =1 and ssu_btime <= %d and ssu_etime >=%d", time(), time());
		$where .= $type == 'tcdcn' ? ' and ssu_shop_id < 1' : ' and ssu_shop_id > 0 and ssu_pjl_show = 1';
		if($style == 'all')
		{
			$twhere = $where.' order by ssu_seq, ssu_initial';
			$res = $B2cBase->get('sh_super', ['ssu_id, ssu_fac_id, ssu_shop_id shop_id, ssu_name, ssu_logo, ssu_info, ssu_initial,ssu_model, 0 iscoll'], $twhere);
			$arr = $res['data'];
		}
		else
		{
			//优先收藏的
			if($uid > 0)
			{
				$twhere = $where.sprintf(" and usb_pu_uid=%d order by usb_seq", $uid);
				$res = $B2cBase->get('us_user_super join sh_super on ssu_id =usb_ssu_id', ['ssu_id, ssu_fac_id, ssu_shop_id shop_id, ssu_name, ssu_logo, ssu_info, ssu_initial,ssu_model, 1 iscoll, usb_seq'], $twhere);
				$arr = $res['data'];
			}
			if($style != 'coll')
			{
				//非收藏的
			    $twhere = !empty($arr) ? $where.sprintf(" and ssu_id not in (%s)", implode(',', array_column($arr, 'ssu_id'))): $where;
				$twhere .= ' order by ssu_seq, ssu_initial';
				$res = $B2cBase->get('sh_super', ['ssu_id, ssu_fac_id, ssu_shop_id shop_id, ssu_name, ssu_logo, ssu_info, ssu_initial,ssu_model, 0 iscoll'], $twhere);
				$arr = array_merge($arr, $res['data']);
			}
		}
		
		$hasCollArr = [];
		if($style != 'coll' && $uid > 0)
		{
			$res = $B2cBase->get('us_user_super', ['usb_ssu_id'], sprintf(" and usb_pu_uid = %d", $uid));
			$hasCollArr = array_column($res['data'], 'usb_ssu_id');
		}
		if(!empty($arr))
		{
			$hasItemArr = [];
			//车型是否有产品
			if($mod3_id > 0)
			{
				if($type == 'b2c')
				{
					$table = 'bc_product_model3_link join bc_product on pml3_pro_id = pro_id join sh_super on pro_shop_id=ssu_shop_id';
					$res = $B2cBase->get($table, ['distinct ssu_shop_id'], sprintf(" and ssu_shop_id in (%s) and pro_show_super = 1 and pml3_mod3_id= %d", implode(',', array_column($arr, 'shop_id')), $mod3_id));
					$hasItemArr = array_column($res['data'], 'ssu_shop_id');
				}
				else
				{
					$YpcBase = new YpcBase();
					$res = $YpcBase->Get('yp_model3_tcdcn_link', ['distinct mtl_typ_id'], sprintf(" and mtl_m3_id =%d", $mod3_id));
					if(!empty($res['data']))
					{
						$typIdArr = array_column($res['data'], 'mtl_typ_id');
						$TcdmArt = new TcdmArt();
						$res = $TcdmArt->get('tof_article_types', ['distinct lat_sup_id'], sprintf(" and lat_typ_id in (%s) and lat_sup_id in (%s)", implode(',', $typIdArr), implode(',', array_column($arr, 'ssu_fac_id'))));
						$hasItemArr = array_column($res['data'], 'lat_sup_id');
					}
				}
			}
			$collNoItem = [];
			foreach($arr as $k=>$v) 
			{
				$v['iscoll'] = !empty($v['iscoll']) || in_array($v['ssu_id'], $hasCollArr)? 1: 0;
				if($type == 'b2c')
				{
					$v['hasitem'] = in_array($v['shop_id'], $hasItemArr)? 1: 0;
				}
				else
				{
					$v['hasitem'] = in_array($v['ssu_fac_id'], $hasItemArr)? 1: 0;
				}
				$v['ssu_logo'] = mvc::$cfg['FILE_CENTER']['b2c']['url_get'].'&c=shopLogo&f='.$v['ssu_logo'].mvc::$cfg['FILE_CENTER']['b2c']['get_uri'];
				$v['ssu_model'] = json_decode($v['ssu_model']);
				//列表剔除无产品的
				if(stripos($style, 'list') !== false && !$v['hasitem'])
				{
					if($style == 'list5' && $v['iscoll'])
					{
						//目录列表 只显示有数据的
						$collNoItem[] = $v;
						continue;
					}
					else if(!$v['iscoll'])
					{
						//我的收藏列表只显示有数据或者已收藏的
						continue;
					}
				}
				
				$resArr[] = $v;
				//只需要5个
				if($style == 'list5' && count($resArr) == 10) break;
			}
			
			if($style == 'list5' && count($resArr) < 10)
			{
				foreach($collNoItem as $v)
				{
					if(count($resArr) == 10) break;
					$resArr[]=$v;
				}
			}
		}
		LibFc::ReturnJson(true, array_values($resArr));
	}


	
	/**
	  * @method 商城品牌目录基本信息
	  * @http	get
	  * @param  shopid              string [必填] 店铺ID
	  * @author soul
	  * @copyright 2019/5/27
	  * @return {"status":true,"data":{"ssu_id":"923818","ssu_name":"制豹（ZBZK）","ssu_btime":"1561910400","ssu_etime":"1924876800","ssu_remark":"","ssu_info":"陶瓷制动专家","ssu_logo":"https:\/\/file.paojd.cn\/center\/read.php?site=b2c&c=shopLogo&f=100\/fb069a8261eeae08.jpg&i=f1","ssu_status":"1","ssu_initial":"ZBZ","ssu_seq":30,"ssu_shop_id":590,"ssu_fac_id":0,"ssu_engine":1,"ssu_model":{"L0":"mod1","L1":"mod2","L2":"cctrandrive","L3":"mod3"},"ssu_style":"B2C","ssu_conf":{"color":"#e7181e"}},"code":0}
	  */
	public function getB2cSuperInfo()
	{
		$Params = mvc::$URL_PARAMS;
		$B2cBase = new B2cBase();
		$res = $B2cBase->get('sh_super', ['*'], sprintf(" and ssu_shop_id = %d", $Params['shopid']), true);
		$arr = $res['data'];
		if(!empty($arr))
		{
			$arr['ssu_logo'] = mvc::$cfg['FILE_CENTER']['b2c']['url_get'].'&c=shopLogo&f='.$arr['ssu_logo'].mvc::$cfg['FILE_CENTER']['b2c']['get_uri'];
			$arr['ssu_model'] = json_decode($arr['ssu_model'], true);
			$arr['ssu_conf'] = json_decode($arr['ssu_conf'], true);
			if(!empty($arr['ssu_conf']['banner']))
			{
				$arr['ssu_conf']['banner'] = mvc::$cfg['FILE_CENTER']['b2c']['url_get'].'&c=adorn&f='.str_replace('/100/', '/', $arr['ssu_conf']['banner']).mvc::$cfg['FILE_CENTER']['b2c']['get_uri'];

			}else
			{
				$arr['ssu_conf']['banner'] = $arr['ssu_logo'];
			}
			//轮播列表
			$banners = explode(',', $arr['ssu_banner']);
			$arr['ssu_banner_list'] = [];
			foreach($banners as $iv)
			{
				if(!empty($iv))
					$arr['ssu_banner_list'][] = mvc::$cfg['FILE_CENTER']['b2c']['url_get'].'&c=adorn&f='.str_replace('/100/', '/', $iv).mvc::$cfg['FILE_CENTER']['b2c']['get_uri'];
			}
		}
		LibFc::ReturnJson(true, $arr);
	}


	/**
	  * @method 商城品牌目录的配件分类
	  * @http	get
	  * @param  shopid              string [必填] 店铺ID
	  * @author soul
	  * @copyright 2019/5/27
	  * @return {"status":true,"data":[{"part_id":"4021","part_name":"刹车片","pas_id":4960,"pas_name":"前刹车片","spart_id":"4021_4960","spart_name":"前刹车片"},{"part_id":"4021","part_name":"刹车片","pas_id":4961,"pas_name":"后刹车片","spart_id":"4021_4961","spart_name":"后刹车片"},{"part_id":"2996","part_name":"刹车盘","pas_id":4962,"pas_name":"前刹车盘","spart_id":"2996_4962","spart_name":"前刹车盘"},{"part_id":"2996","part_name":"刹车盘","pas_id":4963,"pas_name":"后刹车盘","spart_id":"2996_4963","spart_name":"后刹车盘"},{"part_id":"4023","part_name":"空气滤清器","pas_id":null,"pas_name":null,"spart_id":"4023_0","spart_name":"空气滤清器"}],"code":0,"encry":0,"runtime":231}
	  */
	public function getSuperPart()
	{
		$Params = mvc::$URL_PARAMS;
		$shopid = (int) $Params['shopid'];
		$arr = [];
		$B2cBase = new B2cBase();
		$table = 'bc_part join bc_part_tree ON pt_part_id = part_id and pt_ismain=1
		left join bc_part_small on  part_id = pas_part_id';
		$where = sprintf(" and part_id in (select distinct pro_part_id from bc_product where pro_show_super=1 and pro_shop_id = %d) ORDER BY pt_seq, part_initial, pas_seq", $shopid);
		$res = $B2cBase->get($table, ['part_id, part_name, pas_id, pas_name'], $where);
		foreach($res['data'] as $v)
		{
			$v['pas_id'] = (int) $v['pas_id'];
			$v['spart_id'] = $v['part_id'].'_'.$v['pas_id'];
			$v['spart_name'] = empty($v['pas_name'])? $v['part_name']: $v['pas_name'];
			$arr[] = $v;
		}
		LibFc::ReturnJson(true, $arr);
	}


	/**
	  * @method 获取公众号或者目录的分类
	  * @http	get
	  * @param  shopid              string [必填] 店铺ID
	  * @param  brand_id            int [必填] 车型品牌ID
	  * @param  mod1_id             int [必填] 一级车型ID
	  * @param  mod2_id             int [选填] 二级车型ID
	  * @param  mod3_id             int [选填] 末级车型ID
	  * @param  mod3_drive          string [选填] 驱动方式
	  * @param  mod3_drive_short    string  [选填] 驱动简称
	  * @param  year                int  [选填] 年份
	  * @param  mod3_cc_name        string  [选填] 排量
	  * @param  mod3_cc             int [选填] 排量cc
	  * @param  mod3_kw             int [选填] 功率kw
	  * @param  mod3_engine||engine  string [选填] 发动机编码
	  * @param  cctran              string [选填] 排量+驱动方式
	  * @param  keyword             string [选填] 关键字
	  * @param  number              string [选填] 号码
	  * @author soul
	  * @copyright 2019/7/22
	  * @return  shopid=350955&mod3_id=14486
	  {"status":true,"data":{"spart":[{"spart_id":"4012_0","spart_name":"\u63a7\u5236\u81c2"},{"spart_id":"4935_0","spart_name":"\u7403\u5934"}],"sort":[{"sort_id":"7391","sort_name":"\u7403\u5934"},{"sort_id":"7392","sort_name":"\u524d\u5e73\u8861\u6746\u7403\u5934"},{"sort_id":"7393","sort_name":"\u6a2a\u62c9\u6746\u5916\u7403\u5934"},{"sort_id":"7394","sort_name":"\u6a2a\u62c9\u6746\u5185\u7403\u5934"},{"sort_id":"7396","sort_name":"\u540e\u5e73\u8861\u6746\u7403\u5934"},{"sort_id":"7398","sort_name":"\u63a7\u5236\u81c2"},{"sort_id":"7400","sort_name":"\u4e0b\u6446\u81c2"}]},"code":0}
	  */
	public function getSearchParts()
	{
		$Params = mvc::$URL_PARAMS;
		$B2cSearch = new B2cSearch();
		$res = $B2cSearch->getSearchParts((int) $Params['shopid'], $Params);
		LibFc::EchoJson($res);
	}


	/**
	  * @method 商城品牌目录的配件
	  * @http	get
	  * @param  type               string [选填] 默认：all  号码：number  
	  * @param  shopid              string [必填] 店铺ID
	  * @param  brand_id            int [必填] 车型品牌ID
	  * @param  mod1_id             int [必填] 一级车型ID
	  * @param  mod2_id             int [选填] 二级车型ID
	  * @param  mod3_id             int [选填] 末级车型ID
	  * @param  mod3_drive          string [选填] 驱动方式
	  * @param  mod3_drive_short    string  [选填] 驱动简称
	  * @param  year                int  [选填] 年份
	  * @param  mod3_cc_name        string  [选填] 排量
	  * @param  mod3_cc             int [选填] 排量cc
	  * @param  mod3_kw             int [选填] 功率kw
	  * @param  mod3_engine||engine  string [选填] 发动机编码
	  * @param  cctran              string [选填] 排量+驱动方式
	  * @param  keyword             string [选填] 关键字
	  * @param  number              string [选填] 号码
	  * @param  part_id         string [选填] 零件分类ID 多个逗号,分隔
	  * @param  spart_id            string [选填] 配件分类
	  * @param  sort_id            string [选填] 店铺分类
	  * @param  uid                int [选填] 用户ID
	  * @param  page           int [选填] 第几页 默认 1
	  * @param  per            int [选填] 每页数量 默认 20
	  * @author soul
	  * @copyright 2019/5/27
	  * @return {"status":true,"data":[{"pro_id":"177598","prb_name":"ABC","pro_status":"1","pro_name":"\u524d\u5239\u8f66\u76d8","pro_shop_id":"149894","pro_sale_price":"0.00","pro_count":"1","pro_user_discount":"N","pro_sold_count":"0","pri_code":"123456","pri_weight":null,"pri_frt_id":null,"pro_sel_des":null,"pri_invoice":"0","pri_warranty":"0","pri_return_promise":"1","pro_spart_id":"2996_4962","price":"0.00","price_type":1,"pro_price":{"title":"\u9500\u552e\u4ef7","price":"0.00"},"pic":[],"num":[{"factory":"ABC","display":"123456"},{"factory":"OE","display":"A0004212512"}],"mod3_para":"\u8f66\u67b6\u53f7\u5c3e\u53f7\u81f3:L365777"}],"code":0}
	  */
	public function getSuperItem()
	{
		$Params = mvc::$URL_PARAMS;
		$arr = [];
		$shopid = (int) $Params['shopid'];
		if(empty($Params['type'])) $Params['type'] = 'all';
		//$Params['type'] = !empty($Params['type']) && $Params['type'] == 'number'? 'number': 'all';
		if($shopid > 0)
		{
			$B2cSearch = new B2cSearch();
			$res = $B2cSearch->searchSuperItem($shopid, $Params, $Params['per']);
			if(!empty($res['data']['proIds']))
			{
				$B2cProduct = new B2cProduct();
				$res = $B2cProduct->getSuperProductInfo($res['data']['proIds'], $Params['uid'], ['numMain', 'picMain','para'], $Params['mod3_id']);
				$arr = $res['data'];
			}
		}
		LibFc::ReturnJson(true, array_values($arr));
	}


	/**
	  * @method TCD中国品牌目录的配件
	  * @http	get
	  * @param  fac_id         int [必填] 厂商ID
	  * @param  mod3_id        int [必填] 宜配车型ID
	  * @param  page           int [选填] 第几页 默认 1
	  * @param  per            int [选填] 每页数量 默认 20
	  * @author soul
	  * @copyright 2019/5/27
	  * @return {"status":true,"data":[{"type":"tcdcn","pro_id":"148245582","pro_name":"制动钳","num":[{"factory":"TRW","display":"BCS755"}],"pic":["http:\/\/3thpics.yiparts.com\/tcnpic\/tecdoc_wx\/145\/282570209512145.bmp"],"para":[{"name":"产品状态","val":"普通的","unit":""}]},{"type":"tcdcn","pro_id":"148245584","pro_name":"制动钳","num":[{"factory":"TRW","display":"BCS756"}],"pic":["http:\/\/3thpics.yiparts.com\/tcnpic\/tecdoc_wx\/146\/282570209512146.bmp"],"para":[{"name":"产品状态","val":"普通的","unit":""}]}],"code":0}

	  type: tcdcn 获取产品详情的类型标识
	  */
	public function getSuperTcdCnItem()
	{
		$Params = mvc::$URL_PARAMS;
		$arr = [];
		$fac_id = (int) $Params['fac_id'];
		$mod3_id = (int) $Params['mod3_id'];
		if($fac_id < 1 || $mod3_id < 1) LibFc::ReturnJson(true, $arr);
		
		$page = empty($Params['page']) || $Params['page'] < 1 ? 1: $Params['page'];
		$per = empty($Params['per']) || $Params['per'] < 1 ? 20: $Params['per'];
		
		$YpcBase = new YpcBase();
		$res = $YpcBase->Get('yp_model3_tcdcn_link', ['distinct mtl_typ_id'], sprintf(" and mtl_m3_id =%d", $mod3_id));
		if(!empty($res['data']))
		{
			$TcdmArt = new TcdmArt();
			$typIdArr = array_column($res['data'], 'mtl_typ_id');
			$table = 'tof_articles
			join tof_suppliers on sup_id = art_sup_id 
			join tof_generic_articles on ga_id = art_ga_id
			left join ms_ga_sup_seq on gss_sup_id=art_sup_id and art_ga_id = gss_ga_id';
			$where =  sprintf(" and art_id in (select distinct lat_art_id from tof_article_types where lat_typ_id in (%s) and lat_sup_id=%d
			) order by ga_name, art_format, gss_seq, sup_brand limit %d, %d", implode(',', $typIdArr), $fac_id, ($page-1)*$per, $per);
			$res = $TcdmArt->get($table, ['art_id'], $where);
			$arr = array_column($res['data'], null, 'art_id');
			$res = $TcdmArt->getProductInfo(array_keys($arr), ['para'], $mod3_id);
			foreach($res['data'] as $k=>$v)
			{
				$v['type'] = 'tcdcn';
				$arr[$k] = $v;
			}
			$arr = array_values($arr);
		}
		LibFc::ReturnJson(true, $arr);
	}


	/**
	  * @method 通过产品类型和产品ID批量获取对应数据
	  * @http	post
	  * @author soul
	  * @copyright 2019/5/27
	  * @return 
	  */
	public function anyItemInfo()
	{
		$typeProArr = [];
		foreach($_POST['items'] as $v)
		{
			$typeProArr[$v['pro_type']][] = (int) $v['pro_id']; 
		}
		$proArr = [];
		$dtypeArr = ['para', 'picAll'];
		foreach($typeProArr as $type=>$proIdArr)
		{
			switch($type)
			{
				case 'yp':
					$YpsProduct = new YpsProduct();
					$tres = $YpsProduct->getAnyProductInfo($proIdArr, $dtypeArr);
					$proArr[$type] = array_values($tres['data']);
				break;
				case 'tcd':
					$TcdmArt = new TcdmArt();
					$tres = $TcdmArt->getProductInfo($proIdArr, $dtypeArr);
					$proArr[$type] = array_values($tres['data']);
				break;
				case 'zhipei':
					$BaseDb = new BaseDb(mvc::$cfg['DB']['ZHIPEI']);
					$OthProduct = new OthProduct();
					$res = $OthProduct->getZhipeiAnyProductInfo($proIdArr, $dtypeArr);
					$proArr[$type] = array_values($res['data']);
				break;
			}
		}
		LibFc::ReturnJson(true, $proArr);
	}
	


	/**
	  * @method 某车型的品牌目录、知名品牌列表 【2021/3/8 停用  3.0.1版本后使用新接口】
	  * @http	get
	  * @param  type   string [必填] 品牌目录：super  知名品牌：tcdcn
	  * @param  mod3_id  int [必填] 车型ID
	  * @param  uid    int   [选填] 用户ID 
	  * @author soul
	  * @copyright 2019/7/11
	  * @return super {"status":true,"data":[{"ssu_id":"923822","shop_id":226444,"ssu_name":"\u76db\u8054\uff08SL\uff09","ssu_logo":"https:\/\/file.paojd.cn\/center\/read.php?site=b2c&c=shopLogo&f=100\/70eeecc470034b63.jpg&i=f1","isfollow":1}],"code":0}

	 tcdcn {"status":true,"data":[{"fl_id":"21","fl_tcd_supid":"35","shop_id":"0","fl_logo":"&c=faclogo&f=d96b7ca28c1a6f99.png","fl_show_name":"LEMFORDER(\u4f26\u798f\u5fb7)","isfollow":1},{"fl_id":"23","fl_tcd_supid":"85","shop_id":"0","fl_logo":"&c=faclogo&f=83097c15aa52e5d2.png","fl_show_name":"KYB","isfollow":1},{"fl_id":"12","fl_tcd_supid":"833","shop_id":"0","fl_logo":"&c=faclogo&f=efea970f6e8dab5e.png","fl_show_name":"TRW(\u5929\u5408)","isfollow":1}],"code":0}

	  shop_id：宜配商城目录
	  fl_tcd_supid：中国TCD品牌目录
	  isfollow：是否已关注
	  */
	public function getSuperTcdFacList()
	{
		$Params = mvc::$URL_PARAMS;
		$arr = [];
		$resArr = [];
		$uid = (int) $Params['uid'];
		$mod3_id = (int) $Params['mod3_id'];
		if($mod3_id < 1) LibFc::ReturnJson(true, $arr);

		$B2cBase = new B2cBase();
		$type = isset($Params['type']) && $Params['type'] == 'tcdcn'? 'hfac': 'super';

		//我关注的
		$followArr = [];
		$PjlBase = new PjlBase();
		if($uid > 0)
		{
			$res = $PjlBase->get('pl_user_follow', ['usf_data_id'], sprintf(" and usf_pu_uid=%d and usf_type='%s'", $uid, $type));
			$followArr = array_column($res['data'], 'usf_data_id');
		}

		if($type == 'super')
		{
			$where = sprintf(" and ssu_status =1  and ssu_pjl_show = 1 and ssu_btime <= %d and ssu_etime >=%d and pro_show_super = 1 and pml3_mod3_id= %d and ssu_shop_id > 0 group by ssu_id, ssu_shop_id", time(), time(), $mod3_id);
			$table = 'bc_product_model3_link join bc_product on pml3_pro_id = pro_id join sh_super on pro_shop_id=ssu_shop_id';
			$res = $B2cBase->get($table, ['ssu_id'], $where);
			if(!empty($res['data']))
			{
				$res = $B2cBase->get('sh_super', ['ssu_id, ssu_shop_id shop_id, ssu_name, ssu_logo, ssu_info, 0 isfollow'], sprintf(" and ssu_id in (%s)", implode(',', array_column($res['data'], 'ssu_id'))));
				$hasArr = array_column($res['data'], null, 'ssu_id');
				foreach($followArr as $id)
				{
					if(!empty($hasArr[$id])) 
					{
						$hasArr[$id]['isfollow'] = 1;
						$arr[$id] = $hasArr[$id];
						unset($hasArr[$id]);
					}
				}
				foreach($hasArr as $id=>$v)
				{
					$arr[$id] = $v; 
				}

				foreach($arr as $id=>$fv)
				{
					if(!empty($fv['ssu_logo'])) $fv['ssu_logo'] = mvc::$cfg['FILE_CENTER']['b2c']['url_get'].'&c=shopLogo&f='.$fv['ssu_logo'].mvc::$cfg['FILE_CENTER']['b2c']['get_uri'];
					$arr[$id] = $fv;
				}
				$arr = array_values($arr);
			}
		}
		else
		{
			$where = ' and fl_isshow=1 and fl_tcd_supid > 0 group by fl_id order by fl_seq, fl_show_name';
			$res = $PjlBase->get('fac_lists', ['fl_id', 'fl_tcd_supid', 'fl_shop_id as shop_id', 'fl_logo', 'fl_show_name', 'fl_desc', '0 as isfollow'], $where);
			$allArr = array_column($res['data'], null, 'fl_id');

			$YpcBase = new YpcBase();
			$res = $YpcBase->Get('yp_model3_tcdcn_link', ['distinct mtl_typ_id'], sprintf(" and mtl_m3_id =%d", $mod3_id));
			if(!empty($res['data']))
			{
				$typIdArr = array_column($res['data'], 'mtl_typ_id');
				$TcdmArt = new TcdmArt();
				$res = $TcdmArt->get('tof_article_types', ['distinct lat_sup_id'], sprintf(" and lat_typ_id in (%s) and lat_sup_id in (%s)", implode(',', $typIdArr), implode(',', array_column($allArr, 'fl_tcd_supid'))));
				if(!empty($res['data']))
				{
					$hasIdArr = array_column($res['data'], 'lat_sup_id');
					$hasArr = [];
					foreach($allArr as $id=>$fv)
					{
						if(in_array($fv['fl_tcd_supid'], $hasIdArr))
						{
							if(!empty($fv['fl_logo'])) $fv['fl_logo'] = mvc::$cfg['FILE_CENTER']['pjl']['url_get'].'&c=faclogo&f='.$fv['fl_logo'].mvc::$cfg['FILE_CENTER']['pjl']['get_uri'];
							$hasArr[$id] = $fv;
						}
					}

					foreach($followArr as $id)
					{
						if(!empty($hasArr[$id])) 
						{
							$hasArr[$id]['isfollow'] = 1;
							$arr[$id] = $hasArr[$id];
							unset($hasArr[$id]);
						}
					}
					foreach($hasArr as $id=>$v)
					{
						$arr[$id] = $v; 
					}
					$arr = array_values($arr);
				}
			}
		}
		LibFc::ReturnJson(true, $arr);
	}



	
	/**
	  * @method 某车型的品牌目录、知名品牌列表
	  * @http	get
	  * @param  type         string [必填] 类型 zhiming:知名品牌   super:品牌目录
	  * @param  mod3_id  int [必填] 车型ID
	  * @param  part_id string [type=super选填] 零件分类ID 多个逗号,分隔
	  * @param  uid    int   [选填] 用户ID 
	  * @author soul
	  * @copyright 2021/3/8
	  * @return super {"status":true,"data":[{"ssu_id":"1521829","ssu_style":"B2C","shop_id":"494451","ssu_tcd_supid":"0","ssu_h5_sitename":"","ssu_name":"\u4e30\u7530\u901a\u5546cworks","ssu_logo":"https:\/\/file.paojd.cn\/center\/read.php?site=b2c&c=shopLogo&f=100\/e74d79e3f7d02eca.jpg&i=f1","ssu_zhiming":"1","ssu_info":"","ssu_initial":"FTTSC","usf_type":"super","isfollow":0},{"ssu_id":"1087884","ssu_style":"B2C","shop_id":"238232","ssu_tcd_supid":"0","ssu_h5_sitename":"","ssu_name":"\u5fb7\u8428","ssu_logo":"https:\/\/file.paojd.cn\/center\/read.php?site=b2c&c=shopLogo&f=100\/7cda5cd3e5167457.jpg&i=f1","ssu_zhiming":"1","ssu_info":"\u6d59\u6c5f\u94c1\u6d41\u79bb\u5408\u5668\uff0c\u56fd\u5185\u4e0a\u5e02\u516c\u53f8\uff0c\u65d7\u4e0b\u54c1\u724c\u201c\u5fb7\u8428\u201d\uff0c\u4e3b\u8425\u79bb\u5408\u5668\uff0c\u5236\u52a8\u7cfb\u90e8\u4ef6\u3002","ssu_initial":"DS","usf_type":"super","isfollow":0},{"ssu_id":"923818","ssu_style":"B2C","shop_id":"590","ssu_tcd_supid":"0","ssu_h5_sitename":"","ssu_name":"\u5236\u8c79\uff08ZBZK\uff09","ssu_logo":"https:\/\/file.paojd.cn\/center\/read.php?site=b2c&c=shopLogo&f=100\/7cd4b8ea4d57b9a3.jpg&i=f1","ssu_zhiming":"1","ssu_info":"\u9676\u74f7\u5236\u52a8\u4e13\u5bb6","ssu_initial":"ZBZ","usf_type":"super","isfollow":0},{"ssu_id":"1521865","ssu_style":"H5","shop_id":"0","ssu_tcd_supid":"0","ssu_h5_sitename":"fmecat","ssu_name":"\u8f89\u95e8","ssu_logo":"https:\/\/file.paojd.cn\/center\/read.php?site=b2c&c=shopLogo&f=fmecat.png&i=f1","ssu_zhiming":"1","ssu_info":"\u5168\u7403\u77e5\u540d\u54c1\u724c\r\n","ssu_initial":"","usf_type":"super","isfollow":0},{"ssu_id":"1521872","ssu_style":"TCD","shop_id":"0","ssu_tcd_supid":"85","ssu_h5_sitename":"","ssu_name":"KYB","ssu_logo":"https:\/\/file.paojd.cn\/center\/read.php?site=b2c&c=shopLogo&f=83097c15aa52e5d2.png&i=f1","ssu_zhiming":"1","ssu_info":"\u65e5\u672cKYB\uff0c\u4e16\u754c\u6700\u5927\u7684\u51cf\u9707\u5668\u5236\u9020\u5de5\u5382\uff0c\u4e3b\u8425\uff1a\u51cf\u9707\u5668\uff0c\u51cf\u9707\u5668\u5f39\u7c27","ssu_initial":"","usf_type":"super","isfollow":0},{"ssu_id":"1521858","ssu_style":"H5","shop_id":"0","ssu_tcd_supid":"0","ssu_h5_sitename":"twbrake","ssu_name":"T.B.T.","ssu_logo":"https:\/\/file.paojd.cn\/center\/read.php?site=b2c&c=shopLogo&f=twbrake.png&i=f1","ssu_zhiming":"1","ssu_info":"\u53f0\u6e7e\u54c1\u724c\r\n\u4e3b\u8981\u4ea7\u54c1\uff1a\u5236\u52a8\u7cfb\u7edf\uff08\u5239\u8f66\u76d8\uff0c\u7247\uff09\r\n \u53f7\u7801\u6837\u5f0f\uff1aMD0051M,MD9002-10,\"MD+\u6570\u5b57\"","ssu_initial":"","usf_type":"super","isfollow":0},{"ssu_id":"1521860","ssu_style":"H5","shop_id":"0","ssu_tcd_supid":"0","ssu_h5_sitename":"mann","ssu_name":"MANN(\u66fc\u724c)","ssu_logo":"https:\/\/file.paojd.cn\/center\/read.php?site=b2c&c=shopLogo&f=mann.png&i=f1","ssu_zhiming":"1","ssu_info":"\u5168\u7403\u77e5\u540d\u6ee4\u6e05\u5668\u54c1\u724c","ssu_initial":"","usf_type":"super","isfollow":0}],"code":null}
	  ssu_style: 
		B2C：和shop_id使用  跑街商城的目录
		TCD：和ssu_tcd_supid使用  第三方的TCD目录
		H5: 和ssu_h5_sitename使用  第三方的H5目录
	  isfollow：是否已关注
	  ssu_zhiming：是否为知名品牌
	  ssu_tuijian_seq：推荐品牌顺序  -1表示不推荐
	  */
	public function getModelBrandSuperList()
	{
		$Params = mvc::$URL_PARAMS;
		$arr = [];
		$resArr = [];
		$uid = (int) $Params['uid'];
		$mod3_id = (int) $Params['mod3_id'];
		if($mod3_id < 1) LibFc::ReturnJson(true, $arr);

		$B2cBase = new B2cBase();
		$now = time();
		$where = sprintf(" and ssu_status =1 and ssu_style in ('B2C','TCD')");
		$order = ' order by ssu_seq, ssu_initial';
		if(!empty($Params['type']) && $Params['type'] == 'zhiming')
		{
			$where .= sprintf(" and ssu_zhiming = 1 and ssu_zhiming_btime <= %d and ssu_zhiming_etime >=%d", $now, $now);
			if(!empty($Params['ssu_id'])) $where .= sprintf(" and ssu_id=%d", $Params['ssu_id']);
		}
		else
		{
			$where .= sprintf(" and ssu_pjl_show = 1 and ssu_btime <= %d and ssu_etime >=%d", $now, $now);
		}
		$filed = ['ssu_id, ssu_style, ssu_shop_id shop_id, ssu_tcd_supid, ssu_name, ssu_prostyle, ssu_logo, ssu_zhiming, ssu_zhiming_btime, ssu_zhiming_etime, ssu_initial, ssu_tuijian_seq'];
		$res = $B2cBase->get('sh_super', $filed, $where.$order);
		$arr = $res['data'];
		if(!empty($arr))
		{
			//哪些是组合里的 istoppack
			$res = $B2cBase->get('sh_super_pack_link join sh_super_pack on ssp_id=sspl_ssp_id', ['sspl_ssu_id ssu_id', "concat(ssp_seq, LPAD(sspl_seq, 3, '0')) toppack_seq"], sprintf(" and ssp_begin_time <=%d and ssp_end_time >=%d and sspl_ssu_id in (%s)", $now, $now, implode(',', array_column($arr, 'ssu_id'))));
			$topPack = array_column($res['data'], null, 'ssu_id');

			//哪些是已关注的
			$hasFollowArr = [];
			if($uid > 0)
			{
				$PjlBase = new PjlBase();
				$res = $PjlBase->get('pl_user_follow', ['usf_data_id','usf_seq'], sprintf(" and usf_pu_uid =%d and usf_type='super' and usf_data_id in (%s)", $uid, implode(',', array_column($arr, 'ssu_id'))));
				$hasFollowArr = array_column($res['data'], 'usf_seq', 'usf_data_id');
			}
			$proTypeArr = [];
			foreach($arr as $k=>$v)
			{
				$v['usf_type'] = 'super';
				$v['isfollow'] = isset($hasFollowArr[$v['ssu_id']])? 1: 0;
				$v['followseq'] = $hasFollowArr[$v['ssu_id']]? $hasFollowArr[$v['ssu_id']]: 0;
				$v['istoppack'] = 0;
				$v['toppack_seq'] = 0;
				if($topPack[$v['ssu_id']]){
					$v['istoppack'] = 1;
					$v['toppack_seq'] = (int) $topPack[$v['ssu_id']]['toppack_seq'];
				}
				$v['ssu_zhiming'] = $v['ssu_zhiming'] == 1 && $v['ssu_zhiming_btime'] <= $now && $v['ssu_zhiming_etime'] >= $now? 1: 0;
				unset($v['ssu_zhiming_btime']);
				unset($v['ssu_zhiming_etime']);
				$v['ssu_logo'] = mvc::$cfg['FILE_CENTER']['b2c']['url_get'].'&c=shopLogo&f='.$v['ssu_logo'].mvc::$cfg['FILE_CENTER']['b2c']['get_uri'];
				$proTypeArr[$v['ssu_style']][] = $v['ssu_style'] == 'B2C'? $v['shop_id']: $v['ssu_tcd_supid'];
				$arr[$k] = $v;
			}

			
			//车型过滤
			$hasModelArr = [];
			//查询 来源不同 
			$swhere = ' and pro_show_super = 1';
			if(stripos($Params['from'],'PJL')!==false){
				$swhere = ' and pro_show_pjl = 1';
			}
			foreach($proTypeArr as $ptype=>$ids)
			{
				if($ptype == 'B2C')
				{
					$where = sprintf(" %s and pml3_mod3_id= %d and pro_shop_id in (%s)",$swhere, $mod3_id, implode(',', $ids));
					if(!empty($Params['part_id']))
					{
						$tarr = [];
						foreach(explode(',', $Params['part_id']) as $tv)
						{
							if(!empty($tv)) $tarr[] = (int) $tv;
						}
						$tarr = array_unique($tarr);
						if(!empty($tarr)) 
							$where .= sprintf(" and pro_part_id in (%s)", implode(',', $tarr));
					}
					$table = 'bc_product_model3_link join bc_product on pml3_pro_id = pro_id';
					$res = $B2cBase->get($table, ['distinct pro_shop_id as shop_id'], $where);
					$hasModelArr[$ptype] = array_column($res['data'], 'shop_id');
				}
				else
				{
					$YpcBase = new YpcBase();
					$res = $YpcBase->Get('yp_model3_tcdcn_link', ['distinct mtl_typ_id'], sprintf(" and mtl_m3_id =%d", $mod3_id));
					if(!empty($res['data']))
					{
						$typIdArr = array_column($res['data'], 'mtl_typ_id');
						$TcdmArt = new TcdmArt();
						$res = $TcdmArt->get('tof_article_types', ['distinct lat_sup_id'], sprintf(" and lat_typ_id in (%s) and lat_sup_id in (%s)", implode(',', $typIdArr), implode(',', $ids)));
						$hasModelArr[$ptype] = array_column($res['data'], 'lat_sup_id');
					}
				}
			}
			foreach($arr as $k=>$v)
			{
				if($v['ssu_style'] == 'B2C' && is_array($hasModelArr[$v['ssu_style']]) && in_array($v['shop_id'], $hasModelArr[$v['ssu_style']]))
				{}
				else if($v['ssu_style'] == 'TCD' && is_array($hasModelArr[$v['ssu_style']]) && in_array($v['ssu_tcd_supid'], $hasModelArr[$v['ssu_style']]))
				{}
				else if(empty($Params['ssu_id']))
				{//未指定id
					unset($arr[$k]);
				}
			}

			//优先已关注的
			$temp = $arr;
			$arr = [];
			foreach($temp as $k=>$v)
			{
				if($v['isfollow']) $arr[] = $v;
			}
			foreach($temp as $k=>$v)
			{
				if(!$v['isfollow']) $arr[] = $v;
			}
		}
		LibFc::ReturnJson(true, array_values($arr));
	}


	/**
	  * @method 通过厂商ID、宜配车型ID获取对应的TCD产品
	  * @http	get
	  * @param  fac_id         int [必填] 厂商ID
	  * @param  mod3_id        int [必填] 宜配车型ID
	  * @param  page           int [选填] 第几页 默认 1
	  * @param  per            int [选填] 每页数量 默认 20
	  * @author soul
	  * @copyright 2019/5/27
	  * @return {"status":true,"data":[{"type":"tcdcn","pro_id":"148245582","pro_name":"制动钳","num":[{"factory":"TRW","display":"BCS755"}],"pic":["http:\/\/3thpics.yiparts.com\/tcnpic\/tecdoc_wx\/145\/282570209512145.bmp"],"para":[{"name":"产品状态","val":"普通的","unit":""}]},{"type":"tcdcn","pro_id":"148245584","pro_name":"制动钳","num":[{"factory":"TRW","display":"BCS756"}],"pic":["http:\/\/3thpics.yiparts.com\/tcnpic\/tecdoc_wx\/146\/282570209512146.bmp"],"para":[{"name":"产品状态","val":"普通的","unit":""}]}],"code":0}

	  type: tcdcn 获取产品详情的类型标识
	  */
	public function getTcdFacMod3Item()
	{
		$Params = mvc::$URL_PARAMS;
		$arr = [];
		$fac_id = (int) $Params['fac_id'];
		$mod3_id = (int) $Params['mod3_id'];
		if($fac_id < 1 || $mod3_id < 1) LibFc::ReturnJson(true, $arr);
		
		$page = empty($Params['page']) || $Params['page'] < 1 ? 1: $Params['page'];
		$per = empty($Params['per']) || $Params['per'] < 1 ? 20: $Params['per'];
		
		$YpcBase = new YpcBase();
		$res = $YpcBase->Get('yp_model3_tcdcn_link', ['distinct mtl_typ_id'], sprintf(" and mtl_m3_id =%d", $mod3_id));
		if(!empty($res['data']))
		{
			$TcdmArt = new TcdmArt();
			$typIdArr = array_column($res['data'], 'mtl_typ_id');
			$table = 'tof_articles
			join tof_suppliers on sup_id = art_sup_id 
			join tof_generic_articles on ga_id = art_ga_id
			left join ms_ga_sup_seq on gss_sup_id=art_sup_id and art_ga_id = gss_ga_id';
			$where =  sprintf(" and art_id in (select distinct lat_art_id from tof_article_types where lat_typ_id in (%s) and lat_sup_id=%d
			) order by ga_name, art_format, gss_seq, sup_brand limit %d, %d", implode(',', $typIdArr), $fac_id, ($page-1)*$per, $per);
			$res = $TcdmArt->get($table, ['art_id'], $where);
			$arr = array_column($res['data'], null, 'art_id');
			$res = $TcdmArt->getProductInfo(array_keys($arr), ['para'], $mod3_id);
			foreach($res['data'] as $k=>$v)
			{
				$v['type'] = 'tcdcn';
				$arr[$k] = $v;
			}
			$arr = array_values($arr);
		}
		LibFc::ReturnJson(true, $arr);
	}


	/**
	  * @method 添加店铺的查询记录
	  * @http	post
	  * @param  ush_uid         int [必填] 查询人
	  * @param  ush_shop_id     int [必填] 店铺ID
	  * @param  ush_type        string [必填] vin|number|engine|model|pro
	  * @param  ush_word        string [必填] 查询内容
	  * @author soul
	  * @copyright 2021/12/25
	  * @return {"status":true,"data":id}
	  */
	public function addSearchHistory()
	{
		$B2cSearch = new B2cSearch();
		$res = $B2cSearch->addSearchHistory($_POST);
		LibFc::EchoJson($res);
	}

	/**
	  * @method 查询用户的店铺查询记录[最近6个月的前20条]
	  * @http	get
	  * @param  ush_uid         int [必填] 查询人
	  * @param  ush_shop_id     int [必填] 店铺ID
	  * @param  ush_type        string [必填] vin|number|engine|model|item
	  * @param  per             int [选填] 默认 20
	  * @author soul
	  * @copyright 2021/12/25
	  * @return {"status":true,"data":id}
	  */
	public function getSearchHistory()
	{
		$Params = mvc::$URL_PARAMS;
		$B2cSearch = new B2cSearch();
		$per = $Params['per'] > 100 ? 100: $Params['per'];
		if(empty($per) || $per <= 0) $per = 20;
		$where = sprintf(" and ush_uid=%d and ush_shop_id=%d and ush_type='%s' order by ush_etime desc limit %d", $Params['ush_uid'],$Params['ush_shop_id'],$Params['ush_type'], $per);
		$res = $B2cSearch->get('us_search_history', ['ush_word word'], $where);
		LibFc::EchoJson($res);
	}

	/**
	  * @method 清空用户的店铺查询记录
	  * @http	get
	  * @param  ush_uid         int [必填] 查询人
	  * @param  ush_shop_id     int [必填] 店铺ID
	  * @param  ush_type        string [必填] vin|number|engine|model|item
	  * @author soul
	  * @copyright 2021/12/25
	  * @return {"status":true,"data":id}
	  */
	public function clearSearchHistory()
	{
		$Params = mvc::$URL_PARAMS;
		$B2cSearch = new B2cSearch();
		$where = sprintf(" and ush_uid=%d and ush_shop_id=%d and ush_type='%s'", $Params['ush_uid'],$Params['ush_shop_id'],$Params['ush_type']);
		$res = $B2cSearch->del('us_search_history', $where);
		LibFc::EchoJson($res);
	}

}