<?php
/**
  * @method 统计
  * @author soul
  * @copyright 2018/7/23
  */
class PjlTj extends PjlBase
{
	private $allSearchTypeArr = ['number'=>'号码', 'vin'=>'车架号', 'engine'=>'发动机', 'makeno'=>'整车型号', 'etk'=>'EPC'];
	/**
	  * @method 添加VIP查询记录
	  * @param  $dataArr array [
									'tvs_uid'=>xx,
									'tvs_type'=>number|vin|engine|makeno|etk,
									'tvs_word'=>'查询内容', 
									'tvs_mod3_id'=>'可选',
									'tvs_grp2_id'=>'可选',
									'tvs_ip'=>'xx'
								]
	  * @author soul
	  * @copyright 2019/3/25
	  * @return array(3) { ["status"]=> bool(true) ["data"]=> ID ["code"]=> int(0) } 
	  */
	public function addVipSearchTj($dataArr)
	{
		if(empty($dataArr['tvs_uid'])) return LibFc::ReturnData(false, 'addVipSearchTj请提供正确的tvs_uid参数！');
		if(empty($dataArr['tvs_type']) || empty($this->allSearchTypeArr[$dataArr['tvs_type']])) return LibFc::ReturnData(false, 'addVipSearchTj请提供正确的tvs_type参数！');
		if($dataArr['tvs_type'] != 'etk' && empty($dataArr['tvs_word'])) return LibFc::ReturnData(false, 'addVipSearchTj请提供正确的tvs_word参数！');
		if($dataArr['tvs_type'] == 'etk' && (empty($dataArr['tvs_mod3_id']) || empty($dataArr['tvs_grp2_id']))) 
			return LibFc::ReturnData(false, 'addVipSearchTj请提供正确的tvs_mod3_id、tvs_grp2_id参数！');
		$dataArr['tvs_uid'] = (int) $dataArr['tvs_uid'];
		if(isset($dataArr['tvs_mod3_id'])) $dataArr['tvs_mod3_id'] = (int) $dataArr['tvs_mod3_id'];
		if(isset($dataArr['tvs_grp2_id'])) $dataArr['tvs_grp2_id'] = (int) $dataArr['tvs_grp2_id'];
		
		switch($dataArr['tvs_type'])
		{
			case 'vin':
				$dataArr['tvs_format'] = LibFc::FormatVin($dataArr['tvs_word']);
			break;
			case 'etk':
				$dataArr['tvs_format'] = sprintf("%d:%d", $dataArr['tvs_mod3_id'], $dataArr['tvs_grp2_id']);
				if(empty($dataArr['tvs_word']))
					$dataArr['tvs_word'] = sprintf("车型ID：%d；子组ID：%d", $dataArr['tvs_mod3_id'], $dataArr['tvs_grp2_id']);
			break;
			default:
				$dataArr['tvs_format'] = LibFc::FormatNum($dataArr['tvs_word']);
			break;
		}
		$where = sprintf(" and tvs_atime >= %d and tvs_atime <= %d and tvs_uid=%d and tvs_format='%s' limit 1", strtotime(date('Y-m-d')), strtotime(date('Y-m-d 23:59:59')), $dataArr['tvs_uid'], LibFc::Escape($dataArr['tvs_format']));
		$res = $this->get('tj_vip_search', ['tvs_id'], $where, true);
		//当天未查询
		if(!empty($res['data'])) return LibFc::ReturnData(true);
		
		$countType = in_array($dataArr['tvs_type'], ['engine', 'makeno'])? 'vin': $dataArr['tvs_type'];
		$table = 'pl_user left join pl_vip_level on pu_vip_id=vip_id left join tj_vip_search_date on pu_uid=tvd_uid and tvd_date='.date('Ymd');
		$filed = ['tvd_id', 'vip_'.$countType.'_count as free_count', 'pu_pac_'.$countType.'_count as pac_count', 'pu_vip_etime', '(tvd_engine+tvd_makeno+tvd_vin) as tvd_vin', 'tvd_number', 'tvd_etk'];
		$res = $this->get($table, $filed, sprintf(" and pu_uid=%d limit 1", $dataArr['tvs_uid']), true);
		$dateTj = $res['data'];
		if($dateTj['pu_vip_etime'] > time())
		{
			$this->PjlDb->Begin();
			$dataArr['tvs_atime'] = time();
			//已查询次数
			if(empty($dateTj['tvd_'.$countType])) $dateTj['tvd_'.$countType] = 0;

			if(empty($dateTj['tvd_id']))
			{
				$dArr = [
					'tvd_uid'=>	$dataArr['tvs_uid'],
					'tvd_date'=>date('Ymd'),
					'tvd_'.$dataArr['tvs_type']=>1
				];
				$this->add('tj_vip_search_date', $dArr);
			}
			else
			{
				$this->set('tj_vip_search_date', ['tvd_'.$dataArr['tvs_type']=>'#@tvd_'.$dataArr['tvs_type'].'+1'], sprintf(" and tvd_id=%d", $dateTj['tvd_id']));
			}

			//是否有免费查询次数
			if($dateTj['tvd_'.$countType] < $dateTj['free_count'])
			{
				$dataArr['tvs_money'] = 0;
				$this->add('tj_vip_search', $dataArr);
				$this->PjlDb->End();
				return LibFc::ReturnData(true);
			}
			else if($dateTj['pac_count'] > 0)
			{
				//流量包
				$dataArr['tvs_money'] = 1;
				$this->add('tj_vip_search', $dataArr);

				$PjlUser = new PjlUser();
				$changeArr = [
					'upc_uid'=>$dataArr['tvs_uid'],
					'upc_style'=>$dataArr['tvs_type'],
					'upc_change'=>-1,
					'upc_des'=>$this->allSearchTypeArr[$dataArr['tvs_type']].'查询：'.$dataArr['tvs_word']
				];
				$PjlUser->changePac($changeArr);

				$this->PjlDb->End();
				return LibFc::ReturnData(true);
			}
			else
			{
				return LibFc::ReturnData(false, '今天的'.$this->allSearchTypeArr[$dataArr['tvs_type']].'查询次数已用完，请升级或者购买流量包！', 'vip_max_vin');
			}
		}
		else
		{
			return LibFc::ReturnData(false, '会员已经过期，请重新开通会员再查询！', 'vip_expire');
		}
		
	}
}