<?php
/**
  * @class 基类
  * @author soul
  */
class baseAction
{
	public $allStyle = null;
	public function __construct()
	{
		$this->allStyle = [
			'shop'=>'商家入驻',
			'pcyear'=>'pc年卡',
			'pchyear'=>'pc半年卡',
			'pcmonth'=>'pc月卡'
		];
		LibTpl::Set('allStyle', $this->allStyle);

		//登录校验
		$nowFun = mvc::$URL_CLASS.'/'.mvc::$URL_METHOD;
		//忽略登录的接口
		$ignoreLoginFunArr = ['user/login', 'user/logout', 'user/ajaxLogin', 'user/loginByQQ', 'user/loginByWx', 'base/crmApi'];
		if(empty($_SESSION['_userid']))
		{
			//自动登录
			if(!empty($_COOKIE['_unitag']))
			{
				$LibYpApi = new LibYpApi();
				$PostData = [
					'type'=>'unitag',
					'data'=>['unitag'=>$_COOKIE['_unitag']],
					'ip'=>LibFc::GetClientIp(),
					'from'=>mvc::$cfg['FROM'],
					'lang'=>'cn'
				];
				$res = $LibYpApi->Get('user/login', [], $PostData, true);
				if($res['status'] && !empty($res['data']['u_id']) && $this->initLogin($res['data'], 0)){
					$this->initLogin($res['data'], 1);
				}else{
					$this->clearLogin();
				}
			}
		}
		if(empty($_SESSION['_userid']) && !in_array($nowFun, $ignoreLoginFunArr))
			Header("Location: ".mvc::$cfg['SELF_URI'].'user/login?goto='.LibFc::nowUrl());

		if(!empty($_SESSION['_userid']))
		{
			if($nowFun == 'user/login') Header("Location: ".mvc::$cfg['SELF_URI']);
			//token自动续期
			if(($_SESSION['_crmtoken']['etime'] - time()) < 60)
			{
				$LibCrmApi = new LibCrmApi();
				$res = $LibCrmApi->Get('base/buildToken', [], ['unitag'=>$_SESSION['_unitag']]);
				$_SESSION['_crmtoken'] = $res['data'];
			}
			mvc::$cfg['CRMAPI']['ip'] = LibFc::GetClientIp();
			mvc::$cfg['CRMAPI']['from'] = $_SESSION['_crmtoken']['from'];
			mvc::$cfg['CRMAPI']['devcode'] = $_SESSION['_crmtoken']['devcode'];
			mvc::$cfg['CRMAPI']['token'] = $_SESSION['_crmtoken']['token'];
		}
	}


	/**
	 * @method    PHP调取跑CRMAPI
	 * @param fun       string [必填]  方法
	 * @author    soul
	 * @copyright 2018-08-31
	 * @return
			{status:true,data:true}
			{status:false,data:错误信息}
	 */
	public function crmApi()
	{
		$getArr = $_GET;
		unset($getArr['fun']);
		if(isset($getArr['limit'])){
		    $getArr['per'] = $getArr['limit'];
		    unset($getArr['limit']);
        }
		$LibCrmApi = new LibCrmApi();
		$res = $LibCrmApi->Get($_GET['fun'], $getArr, $_POST);
		ob_clean();
		if(isset($res['data']['total'])){
		    if($res['status'] == false){
		        $res['data']['code'] = 1;
		        $res['data']['msg'] = $res['data'];
                echo json_encode($res['data']);exit();
            }else{
                $res['data']['code'] = 0;
                $res['data']['count'] = $res['data']['total'];
                unset($res['data']['total']);
                $res['data']['msg'] = '';
                $res['data']['status'] = $res['status'];
                echo json_encode($res['data']);exit();
            }
        }
		echo json_encode($res);
	}


	//初始化用户登录数据
	protected function initLogin($userData, $remember)
	{
		$PjlBase = new PjlBase();
		$table = 'dl_worker join dl_company on dwo_dco_id=dco_id and dco_status = 1';
		$res = $PjlBase->get($table, ['dwo_uid, dco_id, dco_short_name, dco_uid, dwo_name, dwo_rule_ids'], sprintf(" and dwo_uid=%d and dwo_status=1", $userData['u_id']), true);
		if(!empty($res['data']))
		{
			$_SESSION['_unitag'] = $userData['unitag'];
			$_SESSION['_userid'] = $userData['u_id'];
			$_SESSION['_username'] = $userData['u_name'];
			$_SESSION['_realname'] = $res['data']['dwo_name'];
			$_SESSION['_dcoid'] = $res['data']['dco_id'];
			$_SESSION['_comname'] = $res['data']['dco_short_name'];
			$_SESSION['_dlrules'] = $userData['u_id'] == $res['data']['dco_uid']? 'all' : explode(',', $res['data']['dwo_rule_ids']);
			$time = !empty($remember)? time()+86400*30: null;
			setcookie('_unitag', $_SESSION['_unitag'], $time, '/');
			$_SESSION['_crmtoken'] = $userData['token'];
			return true;
		}
		else
		{
			return false;
		}
	}

	protected function clearLogin()
	{
		unset($_SESSION['_unitag']);
		unset($_SESSION['_userid']);
		unset($_SESSION['_username']);
		unset($_SESSION['_crmtoken']);
		setcookie('_unitag', '', time()-3600, '/');
		return true;
	}
}
