<?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();
	}

	/**
	 * @method 获取结果页面
	 * @author zhengweihua 
	 * @copyright 2022-05-09
	 */
	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();
		$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'];

			$proPartIdArr = array_column($res['data'], 'pro_part_id');
			$proIdArr = array_column($res['data'], 'pro_id');
			$proPptIdArr = array_column($res['data'], 'pro_ppt_id');
			$B2cBase = new B2cBase();
			$table = sprintf("bc_part_param_link 
				join bc_param_label on ppl_pal_id=pal_id and ppl_part_id in (%s)
				left join bc_product_param_float on ppf_pal_id=pal_id and ppf_pro_id in (%s)
				left join bc_product_param_string on pps_pal_id=pal_id and pps_pro_id in (%s)
				left join bc_param_unit on ppl_pau_id = pau_id", implode(',', $proPartIdArr), implode(',', $proIdArr),  implode(',', $proIdArr));
			$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', 'pps_pro_id', 'ppf_pro_id'], $where);
			foreach ($res['data'] as $v) {

				$proId = empty($v['ppf_pro_id']) ? $v['pps_pro_id'] : $v['ppf_pro_id'];
				if (empty($proId)) continue;
				$v['pau_name'] = empty($v['pau_name']) ? '' : $v['pau_name'];
				$v['val'] = empty($v['pps_value']) ? $v['ppf_value'] : $v['pps_value'];
				$itemArr[$proId]['partParam'][] = ['name' => $v['pal_name'], 'val' => $v['val'], 'unit' => $v['pau_name']];
			}

			//获取自定义配件参数
			if (!empty($proPptIdArr)) {

				//有值的
				$feild = ['prpv_prl_id', 'prpv_pru_id', 'prpv_value', 'prl_name', 'pru_name', 'pro_id'];
				$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 in  (%s) and pro_ppt_id in (%s) and (prpv_value is not null or prpv_value!='')", implode(',', $proIdArr), implode(',', $proPptIdArr)));
				$oldValArr = [];
				$oldValArr = array_column($res['data'], null, 'prpv_prl_id');

				//新的
				$fieldArr = ['pptl_ppt_id', 'prl_id', 'pru_id', 'pptl_seq', 'prl_name', 'pru_name', 'pro_id'];
				$table = '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
				join bc_product on pro_ppt_id = pptl_ppt_id';
				$newlink = $B2cBase->get($table, $fieldArr, sprintf(' and pro_id in (%s) and pptl_ppt_id in (%s) order by pptl_seq asc,pptl_prl_id asc', implode(',', $proIdArr), implode(',', $proPptIdArr)));
				$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;
					}
				}
				foreach ($newArr as $k => $newitem) {
					if (empty($newitem['pro_id'])) {
						continue;
					}
					$proId = $newitem['pro_id'];
					$itemArr[$proId]['proParam'][] = $newitem;
				}
			}
			//不可以购买的人不可以查看第二个号码
			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']]]);
	}
}
