<?php
/**
  * @method 检测接口
  * @author soul 2017/6/16
  */
class OthCheck
{

	/**
	  * @param  $site b2c||app||gzhs
	  * @method 非登录状态下才可以操作，例如注册、登录，否则跳转至首页
	  * @author soul 2017/6/16
	  */
	public function notLogin($site = 'b2c')
	{
		$Params = mvc::$URL_PARAMS;
		if(!empty($_SESSION['_userid']) && !empty($_SESSION['_username']))
		{
			if(ISAJAX)
			{
				LibFc::ajaxJsonEncode(['status'=>false, 'data'=>'此功能需要退出登录才可以使用，请退出登录后重试。', 'code'=>'hasLogin']);
			}
			else
			{
				$host = mvc::$cfg['HOST']['b2c'];
				if($site = 'gzhs')
					$host = mvc::$cfg['SELF_URI'];
				$toUrl = !empty($Params['goto'])? $Params['goto'] : $host;
				LibFc::Go($toUrl);
				exit;
			}
		}
	}


	/**
	  * @param  $site b2c||app||gzhs
	  * @method 必须登录才可以进行下面的操作，否则跳转到登录页面
	  * @author soul 2017/6/16
	  */
	public function mustLogin($site = 'b2c')
	{
		$host = mvc::$cfg['HOST']['b2c'];
		if($site == 'gzhs' || $site == 'super')
			$host = mvc::$cfg['SELF_URI'];
		$backUrl = LibFc::nowUrl();
		if(empty($_SESSION['_userid']) || empty($_SESSION['_username']))
		{
			if(ISAJAX)
			{
				LibFc::ajaxJsonEncode(['status'=>false, 'data'=>'此功能需要登录，请登录后重试。', 'code'=>'noLogin']);
			}
			else
			{
				$backUrl = stripos($backUrl, '/user/login') !== false ? $host: $backUrl;
				LibFc::Go($host.'user/login?goto='.urlencode($backUrl));
				exit;
			}
		}
		else if($_SESSION['_mobliechk'] != 'Y' && stripos($backUrl, '/user/bindMobile') === false)
		{
			if(ISAJAX)
			{
				LibFc::ajaxJsonEncode(['status'=>false, 'data'=>'此账号尚未绑定手机号，请先绑定', 'code'=>'noMoblie']);
			}
			else
			{
				$backUrl = stripos($backUrl, '/user/bindMobile') !== false ? $host: $backUrl;
				LibFc::Go($host.'user/bindMobile?goto='.urlencode($backUrl));
				exit;
			}
		}
	}


	/**
	  * @method 必须有店铺才可以进行下面的操作，否则跳转到开通店铺页面
	  * @author soul 2017/6/16
	  */
	public function hasShop()
	{
		$this->mustLogin();
		$where = empty($_SESSION['_shopid'])? sprintf(" and shop_uid=%d", $_SESSION['_userid']): sprintf(" and shop_id=%d", $_SESSION['_shopid']);
		$B2cBase=new B2cBase();
		$res = $B2cBase->get('sh_shop', ['shop_id', 'shop_status'],  $where, true);
		$shopData = $res['data'];
		
		$_SESSION['_shopid'] = (int) $shopData['shop_id'];
		if(!empty($shopData) && in_array($shopData['shop_status'], [0, 1]))
		{
		
		}	
		else if(empty($shopData) || $shopData['shop_status'] == -2)
		{
			if(ISAJAX)
			{
				LibFc::ajaxJsonEncode(['status'=>false, 'data'=>'您尚未开通店铺！', 'code'=>'noShop']);
			}
			else
			{
				LibFc::Go(mvc::$cfg['HOST']['b2c'].'seller/open');
				exit;
			}
		}
		else
		{
			if(ISAJAX)
			{
				LibFc::ajaxJsonEncode(['status'=>false, 'data'=>'您的店铺已被关闭！', 'code'=>'closeShop']);
			}
			else
			{
				LibTpl::Error('您的店铺已被关闭！');
				exit;
			}
		}
	}

	/**
	  * @method 只有未开通店铺才可以调整到此页
	  * @author soul 2017/6/16
	  */
	public function noShop()
	{
		$this->mustLogin();
	
		$where = empty($_SESSION['_shopid'])? sprintf(" and shop_uid=%d", $_SESSION['_userid']): sprintf(" and shop_id=%d", $_SESSION['_shopid']);
		$B2cBase=new B2cBase();
		$res = $B2cBase->get('sh_shop', ['shop_id', 'shop_status'],  $where, true);
		$shopData = $res['data'];
		$_SESSION['_shopid'] = (int) $shopData['shop_id'];
		if(empty($shopData) || $shopData['shop_status'] == -2)
		{
			
		}
		else if(in_array($shopData['shop_status'], [0, 1]))
		{
			if(ISAJAX)
			{
				LibFc::ajaxJsonEncode(['status'=>false, 'data'=>'您已开通店铺', 'hasShop']);
			}
			else
			{
				LibFc::Go(mvc::$cfg['HOST']['b2c'].'seller/index');
				exit;
			}
		}
		else if($shopData['shop_status'] == -1)
		{
			if(ISAJAX)
			{
				LibFc::ajaxJsonEncode(['status'=>false, 'data'=>'您的店铺已被关闭！', 'code'=>'closeShop']);
			}
			else
			{
				LibTpl::Error('您的店铺已被关闭！');
				exit;
			}
		}
	}


	/**
	  * @method 检查卖家中心的职员权限
	  * @author soul 2018/3/30
	  */
	public function rule($ruleId, $exit = true)
	{
		$this->hasShop();
		if(!empty($_SESSION['_shopowner']) || in_array($ruleId, $_SESSION['_rules']))
		{
			return true;
		}
		else
		{
			if(ISAJAX)
			{
				LibFc::ajaxJsonEncode(['status'=>false, 'data'=>'无权限操作，拒绝访问', 'noRule']);
			}
			else if($exit)
			{
				LibTpl::Error('无权限操作，拒绝访问');
				exit;
			}
			else
			{
				return false;
			}
		}
	}


	/**
	  * @param  $site b2c||app||gzhs
	  * @method 如果是微信端，则获取微信的oppenid  $_SESSION['wx_oppenid']
	  * @author soul 2017/6/16
	  */
	public function wxOpenId($site = 'gzhs')
	{
		if(stripos($_SERVER['HTTP_USER_AGENT'], 'micromessenger') !== false && empty($_SESSION['wx_oppenid']))
		{
			$host = mvc::$cfg['HOST']['b2c'];
			if($site = 'gzhs')
				$host = mvc::$cfg['SELF_URI'];
			$LibYpApi = new LibYpApi();
			$res = $LibYpApi->get('wx/getWxUserUrl', ['app'=>'gzh', 'backUrl'=>$host.'index/setWxOpenid?backUrl='.base64_encode(LibFc::nowUrl()), 'scope'=>'snsapi_base']);
			Header("Location: ".$res['data']);
		}
	}

	/**
	  * @method 公众号 检查是否可以进行VIN解码
	  * @param  $uid  用户 单用户不能超过总次数的1/5
	  * @param  $vin  车架号 如果提供则加入统计
	  * @author soul
	  * @copyright 2018/4/2
	  * @return 
			成功 ["status"=>true, "data"=>] 
			失败 ["status"=>false, "data"=> 错误信息] 
	  */
	public function vinPass($uid, $vin = '')
	{
		$pass = false;
		//$uid = (int) $uid;
		$uid = empty($uid) ? LibFc::GetClientIp(): (int) $uid;
		if(mvc::$cfg['SHOPID'] > 0 && mvc::$cfg['MAX_VIN_COUNT'] > 0 && $uid != '')
		{
			$file = mvc::$cfg['LOGS'].'gzh_'.mvc::$cfg['SHOPID'].'_vin_'.date('Ymd').'.php';
			$arr = !file_exists($file) ? ['count'=>0, $uid=>[]]: include($file); 
			if(!empty($arr[$uid][$vin]))
			{//已经查过
				$pass = true;
			}
			else if($arr['count'] < mvc::$cfg['MAX_VIN_COUNT'])
			{
				//单用户一天不能超过
				$userMax = empty(mvc::$cfg['MAX_VIN_COUNT_USER']) ? (int) mvc::$cfg['MAX_VIN_COUNT']/5: mvc::$cfg['MAX_VIN_COUNT_USER'];
				$userMax = $userMax < 10 || $userMax > mvc::$cfg['MAX_VIN_COUNT'] || !empty($_SESSION['_shopOwner'])? mvc::$cfg['MAX_VIN_COUNT']: $userMax;
				if(count($arr[$uid]) < $userMax)
				{
					$pass = true;
					if(strlen($vin) == 17)
					{
						$arr[$uid][$vin] = time(); 
						$arr['count']++;
						if(!LibFc::ArraySave($arr, $file))
						{
							$pass = false;
						}
					}
				}
			}
		}
		return LibFc::ReturnData(true, $pass);
	}
}
?>