<?php
class userAction
{	
	function __construct()
	{
		//是否开启会员模块
        $moduleArr = explode(',',mvc::$cfg['shopInfo']['ssu_module']);
		if(!in_array('user',$moduleArr)) return LibFc::ReturnData(false,'未开启会员模块'); 
		LibTpl::Set('footMenu', 'user');
	}
	function index()
	{
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin('gzhs');		
		$YpwUser = new YpwUser();
		$FieldArr = array('u_nickname','u_real_name','u_logo','ui_sex','ui_company','u_weixin_bd','u_weixin_info','u_weixin_unionid');
		$res = $YpwUser->getUser($FieldArr, ' and u_id='.$_SESSION['_userid'], true);
		if($res['data']){
			$res['data']['u_weixin_info'] = $res['data']['u_weixin_info']?json_decode($res['data']['u_weixin_info'],true):[];
		}
		LibTpl::Set('infoArr',$res['data']);
		LibTpl::Set('title', '个人中心');
		LibTpl::Put();
	}
	/**登录页**/
	function login()
	{
		$Params = mvc::$URL_PARAMS;
		$OthCheck = new OthCheck();
		$OthCheck->notLogin('gzhs');
		LibTpl::Set('bodyClass', 'hideuserlogin');
		LibTpl::Set('Params', $Params);
		LibTpl::Set('title', '会员登录');
		LibTpl::Put();
	}

	function loginByWx()
	{
		$Params = mvc::$URL_PARAMS;
		if(!empty($Params['udata']))
		{
			$WXUserArr = json_decode(base64_decode($Params['udata']), true);
			if(!empty($WXUserArr['unionid']))
			{
				$_SESSION['wxfastlogin'] = 1;
				$B2cUser = new B2cUser();
				$res = $B2cUser->loginByAny('weixin', ['unionid'=>$WXUserArr['unionid'],'openid'=>$WXUserArr['openid'], 'from'=>'PJDSGZH']);
				if($res['status'] && !empty($res['data']['u_id']))
				{
					$B2cUser->checkShopUser(mvc::$cfg['SHOPID'],$res['data']['u_id']);
					$res['data']['auto'] = 1;
					$res['data']['type'] = 'weixin';
					$res['data']['unionid'] = $WXUserArr['unionid'];
					$this->loginSession($res, true);
				}
				else
				{
					//微信未绑定 跳转绑定界面
					LibFc::Go(mvc::$cfg['SELF_URI'].'user/bindWeixin?udata='.$Params['udata']);
				}
			}
			else if(!empty($WXUserArr['openid']))
			{//静默模式，只取openid
				$_SESSION['wxfastlogin'] = 1;
				$B2cUser = new B2cUser();
				$res = $B2cUser->loginByAny('weixin', ['openid'=>$WXUserArr['openid'], 'from'=>'PJDSGZH']);
				if($res['status'] && !empty($res['data']['u_id']))
				{
					$B2cUser->checkShopUser(mvc::$cfg['SHOPID'],$res['data']['u_id']);
					$res['data']['auto'] = 1;
					$res['data']['type'] = 'weixin';
					$res['data']['unionid'] = $WXUserArr['openid'];
					$this->loginSession($res, true);
				}
			}
			if(empty($_SESSION['_userid'])) LibFc::Go(mvc::$cfg['SELF_URI'].'user/login?goto='.urlencode($Params['goto']));

		}else if($Params['type'] == 'fast'){

			//静默模式，只取openid
			$LibYpApi = new LibYpApi();
			if(stripos($_SERVER['HTTP_USER_AGENT'], 'micromessenger') !== false)
				$res = $LibYpApi->get('wx/getWxUserUrl', ['app'=>'gzh', 'backUrl'=>mvc::$cfg['SELF_URI'].'user/loginByWx?type=fast&backUrl='.base64_encode($Params['goto']), 'scope'=>'snsapi_base']);
			else
				$res = $LibYpApi->get('wx/getWxUserUrl', ['app'=>'gzh_app', 'backUrl'=>mvc::$cfg['SELF_URI'].'user/loginByWx?type=fast&backUrl='.base64_encode($Params['goto']), 'scope'=>'snsapi_base']);
			Header("Location: ".$res['data']);
		}else{
			$LibYpApi = new LibYpApi();
			if(stripos($_SERVER['HTTP_USER_AGENT'], 'micromessenger') !== false)
				$res = $LibYpApi->get('wx/getWxUserUrl', ['app'=>'gzh', 'backUrl'=>mvc::$cfg['SELF_URI'].'user/loginByWx?backUrl='.base64_encode($Params['goto']), 'scope'=>'snsapi_userinfo']);
			else
				$res = $LibYpApi->get('wx/getWxUserUrl', ['app'=>'gzh_app', 'backUrl'=>mvc::$cfg['SELF_URI'].'user/loginByWx?backUrl='.base64_encode($Params['goto']), 'scope'=>'snsapi_login']);
			Header("Location: ".$res['data']);
		}
	}

	/*
	*微信登录
	*/
	function bindWeixin()
	{
		$OthCheck = new OthCheck();
		$OthCheck->notLogin();
		
		$Params = mvc::$URL_PARAMS;
		if(!empty($Params['udata']))
		{
			$WXUserArr = json_decode(base64_decode($Params['udata']), true);
		}
		if(empty($WXUserArr['unionid']))
		{
			LibFc::Go(mvc::$cfg['SELF_URI'].'user/login');
		}
		LibTpl::Set('WXUserArr', $WXUserArr);
		LibTpl::Set('error', $error);
		LibTpl::Set('title', '微信绑定');
		LibTpl::Put();
	}

	function ajaxBindWeixin()
	{
		$OthCheck = new OthCheck();
		$OthCheck->notLogin();
		$Return = ['status'=>false,'data'=>'参数错误'];
		if(!empty($_POST['unionid']) && !empty($_POST['info']))
		{
			if(empty($_POST['imgcode']) || $_SESSION['imgcode'] != strtoupper($_POST['imgcode']))
			{
				$Return = ['status'=>false,'data'=>'验证码错误，请重新输入'];
			}
			else if(empty($_POST['username']) || empty($_POST['password']))
			{
				$Return = ['status'=>false,'data'=>'请重新输入用户名、密码'];
			}
			else
			{
				$LibYpApi = new LibYpApi();
				$PostData = [
					'type'=>'password',
					'data'=>['name'=>$_POST['username'],'password'=>$_POST['password']],
					'lang'=>'cn'
				];
				$PostData['data']['ip'] = LibFc::GetClientIp();
				$PostData['data']['from'] = 'PJD';
				$LibYpApi = new LibYpApi();
				$ResArr = $LibYpApi->Get('user/login', [], $PostData, true);
				if($ResArr['status'] && !empty($ResArr['data']['u_id']))
				{	
					$B2cUser = new B2cUser();
					$B2cUser->checkShopUser(mvc::$cfg['SHOPID'],$ResArr['data']['u_id']);
					unset($_SESSION['imgcode']);
					$ResArr['data']['auto'] = 1;
					$this->loginSession($ResArr);
					$PostArr = [
						'uid'=>$_SESSION['_userid'],
						'data'=>['weixin'=>['bind'=>'Y', 'u_weixin_unionid'=>$_POST['unionid'], 'u_weixin_info'=>base64_decode($_POST['info'])]],
						'lang'=>'cn'
					];
					$res = $LibYpApi->Get('user/bind_account', [], $PostArr);
					$Return = $res;
				}
				else
				{
					$Return = ['status'=>false,'data'=>$ResArr['data']];
				}
			}
		}
		LibFc::ajaxJsonEncode($Return);
	}

	function nameCheckcode()
	{
		$OthCheck = new OthCheck();
		$OthCheck->notLogin('gzhs');
		$Params = mvc::$URL_PARAMS;
		$must = 0;
		if(!empty($Params['name']))
		{
			$LibYpApi = new LibYpApi();
			$ResArr = $LibYpApi->Get('user/nameCheckcode', ['name'=>$Params['name']]);
			$must = $ResArr['data'];
		}
		$Return = ['status'=>true, 'data'=>$must];
		LibFc::ajaxJsonEncode($Return);
	}


	/**
	  * @method 会员异步登录
	  * @author soul 2017/5/10
	  */
	function ajaxLogin()
	{
		//验证码校验
		$LibYpApi = new LibYpApi();
		$res = $LibYpApi->Get('user/nameCheckcode', ['name'=>$_POST['username']], [], true);
		if($res['data'] && (empty($_POST['checkcode']) || $_SESSION['imgcode'] != strtoupper($_POST['checkcode'])))
		{
			$resArr = ['status'=>false, 'data'=>'验证码错误，请重新输入', 'code'=>'checkcode_error'];
		}
		else
		{
			$B2cUser = new B2cUser();
			$res = $B2cUser->loginByAny('password', ['name'=>$_POST['username'],'password'=>$_POST['password'], 'from'=>'PJDSGZH']);
			if($res['status'] && !empty($res['data']['u_id']))
			{	
				$B2cUser->checkShopUser(mvc::$cfg['SHOPID'],$res['data']['u_id']);
				$res['data']['auto'] = (int) $_POST['auto'];
				unset($_SESSION['imgcode']);
				$this->loginSession($res);
				$resArr = [
					'status'=>true,
					'data'=>[
						'u_id'=>$_SESSION['_userid'],
						'u_name'=>$_SESSION['_username'],
						'u_mobliechk'=>$_SESSION['_mobliechk'],
						'utag'=>$res['data']['utag']
					]
				];
			}else{
				$resArr=['status'=>false,'data'=>$res['data']];
			}
		}
		LibFc::ajaxJsonEncode($resArr);	
	}


	/**
	  * @method 登录标识
	  * @author soul 2017/5/10
	  */
	private function loginSession($resArr, $go = false)
	{
		$Params = mvc::$URL_PARAMS;
		if(!empty($resArr['data']['u_id']))
		{
			$userData = $resArr['data'];
			$this->logoutSession();
			
			$LibPjlApi = new LibPjlApi();
			$_SESSION['_pjltoken'] = '';
			$res = $LibPjlApi->Get('base/buildToken', [], ['unitag'=>$userData['unitag']]);
			
			$_SESSION['_pjltoken'] = $res['data']['token'];
			$_SESSION['_userid'] = $userData['u_id'];
			$_SESSION['_username'] = $userData['u_name'];
			$_SESSION['_uname'] = empty($userData['u_real_name'])? $_SESSION['_username']: $userData['u_real_name'];
			$_SESSION['_mobliechk'] = $userData['u_mobile_check'];

			//店主
			$_SESSION['_shopOwner'] = $_SESSION['_userid'] == mvc::$cfg['SHOPID'] ? 1: 0;
			
			if($go)
			{
				$backUrl = mvc::$cfg['SELF_URI'];
				if($_SESSION['_mobliechk'] != 'Y')
					$backUrl = mvc::$cfg['SELF_URI'].'user/bindMobile';
				else if(!empty($Params['goto']))
					$backUrl = urldecode($Params['goto']);
				else if(!empty($Params['backUrl']))
					$backUrl = base64_decode($Params['backUrl']);
				$script = '<script type="text/javascript">';

				if($userData['type'] == 'weixin' && !empty($userData['unionid']))
				{
					$script .= 'if(localStorage){ localStorage.wxid="'.$userData['unionid'].'";localStorage.utag="";}';
				}
				else if(!empty($userData['auto']))
				{
					$script .= 'if(localStorage){localStorage.utag="'.$userData['utag'].'";localStorage.wxid="";}';
				}
				else
				{
					$script .= 'if(localStorage){localStorage.utag="";localStorage.wxid="";}';
				}
				echo $script.'window.location.href="'.$backUrl.'";</script>';
			}
		}
	}

	/**
	  * @method 清楚登录标识
	  * @author soul 2017/5/10
	  */
	private function logoutSession()
	{
		unset($_SESSION['_userid']);
		unset($_SESSION['_username']);
		unset($_SESSION['_uname']);
		unset($_SESSION['_ulevel']);
		unset($_SESSION['_mobliechk']);
		unset($_SESSION['_vinCount']);
		unset($_SESSION['_canbuy']);
		unset($_SESSION['_pjltoken']);
		unset($_SESSION['_shopOwner']);
		//不允许清除wxfastlogin，避免客户要换账号
	}
	/**
	  * @method 退出登录
	  * @author soul 2017/5/10
	  */
	function logout()
	{
		$this->logoutSession();
		$backUrl = mvc::$cfg['SELF_URI'];
		echo '<script type="text/javascript">if(localStorage){localStorage.wxid="";localStorage.utag="";}window.location.href="'.$backUrl.'";</script>';
	}
	/**
	  * @method 会员登录后重置密码
	  * @author soul 2017/5/10
	  */
	function resetpass()
	{
		//必须登录才可以进行
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin('gzhs');

		$YpwBase = new YpwBase();
		if(!empty($_POST['oldpassword']) && !empty($_POST['password']) && !empty($_POST['password2']))
		{
			$oldpassword = trim($_POST['oldpassword']);
			$password = trim($_POST['password']);
			$password2 = trim($_POST['password2']);
			if($password !== $password2)
			{
				$Error = '两次输入的新密码不一致';
			}
			else
			{
				$Res = $YpwBase->get('yp_user', ['u_password'], sprintf(" and u_id=%d", $_SESSION['_userid']), true);
				if($Res['data']['u_password'] != md5('Y'.md5($oldpassword).'P'))
				{
					$Error = '请输入正确的旧密码';
				}
				else
				{
					$YpwBase->set('yp_user', ['u_password'=>md5('Y'.md5($password).'P')], sprintf(" and u_id=%d", $_SESSION['_userid']), true);
					LibFc::Go(mvc::$cfg['SELF_URI'].'user/index');
				}
			}
		}
		LibTpl::Set('Error', $Error);
		LibTpl::Set('title', '密码重置');
		LibTpl::Put();
	}
	/**
	  * @method 会员注册
	  * @author soul 2017/5/10
	  */
	function register()
	{
		//用户未登录才可以操作
		$OthCheck = new OthCheck();
		$OthCheck->notLogin('gzhs');
		$Error = '';
		if(!empty($_POST['mobile_code']) && !empty($_POST['mobile']) && !empty($_POST['imgcode']))
		{
			if($_SESSION['imgcode'] != strtoupper($_POST['imgcode']))
			{
				$Error = '验证码错误，请重新输入';
			}
			else
			{
				$LibYpApi = new LibYpApi();
				$UserDataArr = [
					'u_password'=>$_POST['password'],
					'mobile_code'=>$_POST['mobile_code'],
					'u_mobile'=>$_POST['mobile'],
					'u_from'=>'PJDSGZH',
					'u_from_uid'=>mvc::$cfg['SHOPID']
				];
				$ResArr = $LibYpApi->Get('user/register', [], ['data'=>$UserDataArr, 'lang'=>'cn']);
				$Uid = (int) $ResArr['data'];
				$B2cUser = new B2cUser();
				$B2cUser->checkShopUser(mvc::$cfg['SHOPID'],$Uid);
				LibTpl::Set('UserDataArr', $UserDataArr);
	
				LibTpl::Set('title', '注册成功');
				unset($_SESSION['imgcode']);
				LibTpl::Put('user/registerOk.php');
				exit;
			}
		}
		LibTpl::Set('POST', $_POST);
		LibTpl::Set('Error', $Error);
		LibTpl::Set('title', '用户注册');
		LibTpl::Put();
	}
	/**
	  * @method 图片验证码
	  * @author soul
	  * @copyright 2017/5/9
	  */
	function imgcode()
	{
		$Params = mvc::$URL_PARAMS;
		$OthCheckcode = new OthCheckcode();
		$CofArr = [];
		if(!empty($Params['type']))
		{
			switch($Params['type'])
			{
				case 'reg':
				case 'login': $CofArr = ['height'=>40, 'width'=>90]; break;
				case 'business': $CofArr = ['session_key'=>'BusinessImageCode','level'=>4,'height'=>30, 'width'=>80]; break;
			}
		}
		$OthCheckcode->getImgcode($CofArr);
	}
	/**
	  * @method 发送手机验证码[图片验证码、登录两种发送渠道]
	  * @author soul
	  * @copyright 2017/5/9
	  */
	function sendMobilecode()
	{
		$Flag = false;
		$Mobile = trim($_POST['mobile']);
		$Act = $_POST['act'];
		
		if(!preg_match('/^1\d{10}$/', $Mobile))
		{
			$Return = ['status'=>false, 'data'=>'手机号码不正确', 'code'=>'mobile_error'];
			LibFc::ajaxJsonEncode($Return);
		}
		if(!in_array($Act, ['bind', 'unbind', 'password']))
		{
			$Return = ['status'=>false, 'data'=>'act 参数缺失', 'code'=>'act_error'];
			LibFc::ajaxJsonEncode($Return);
		}
		
		if(isset($_POST['imgcode']))
		{
			if($_SESSION['imgcode'] != strtoupper($_POST['imgcode']))
			{
				$Return = ['status'=>false, 'data'=>'图片验证码不正确', 'code'=>'imgcode_error'];
				LibFc::ajaxJsonEncode($Return);
			}
			else
			{
				$Flag = true;
			}
		}
		if(!empty($_SESSION['_userid']))
		{
			$Flag = true;
		}

		if(!$Flag)
		{
			$Return = ['status'=>false, 'data'=>'获取数据失败，请稍后重试。', 'code'=>'data_error'];
			LibFc::ajaxJsonEncode($Return);
		}

		$LibYpApi = new LibYpApi();
		$dataArr = [
			'mobile'=>$Mobile,	
			'style'=>$Act,
			'from'=>'PJDSGZH',
			'again'=>$_POST['count']
		];
		$Res = $LibYpApi->Get('sms/sendMobileCode', $dataArr, [], true);
		if($Res['status'])
		{
			$Return = ['status'=>true, 'data'=>'', 'code'=>''];
		}
		else
		{
			$Return = ['status'=>false, 'data'=>$Res['data'], 'code'=>'send_error'];
		}
		LibFc::ajaxJsonEncode($Return);
	}
	/**
	  * @method 申请重置密码
	  * @author soul 2017/5/10
	  */
	function getpass()
	{
		$OthCheck = new OthCheck();
		$OthCheck->notLogin('gzhs');

		$Params = mvc::$URL_PARAMS;
		if(isset($_POST['imgcode']))
		{
			if($_SESSION['imgcode'] != strtoupper($_POST['imgcode']))
			{
				$ErrorCode = 'checkcode_error';
			}
			else 
			{
				$LibYpApi = new LibYpApi();
				$B2cBase = new B2cBase();
				//校验验证码
				$dataArr = [
					'mobile'=>$_POST['mobile'],	
					'style'=>'password',
					'from'=>'PJDSGZH',
					'code'=>$_POST['mobile_code'],
				];
				$Res = $LibYpApi->Get('sms/checkMobileCode', $dataArr, [], true);
				if(!$Res['status'])
				{
					$ErrorCode = 'mobile_code_error';
				}
				else
				{
					//验证码正确 校验用户是否存在
					$dataArr = [
						'filed'=>['u_name', 'u_password'],
						'where'=>sprintf(" and u_mobile='%s' and u_mobile_check = 'Y'", LibFc::Escape($_POST['mobile']) ),
						'oneRow'=>true
					];
					$Res = $LibYpApi->Get('user/getUser', [], $dataArr);
					$UserData = $Res['data'];
					if(empty($UserData))
					{
						$ErrorCode = 'not_reg';
					}
					else
					{
						//跳转
						$Item = base64_encode($UserData['u_name'].'@'.md5($UserData['u_password']));
						//使短信验证码失效
						$dataArr = [
							'mobile'=>$_POST['mobile'],	
							'style'=>'password',
							'from'=>'PJDSGZH',
						];
						$LibYpApi->Get('sms/outMobileCode', $dataArr, [], true);
						LibFc::Go(mvc::$cfg['SELF_URI'].'user/setpass?item='.$Item);
						exit;
					}
				}
			}
		}
		LibTpl::Set('SendOk', $SendOk);
		LibTpl::Set('ErrorCode', $ErrorCode);
		//LibTpl::Set('POST', $_POST);
		LibTpl::Set('POST', $_POST);
		LibTpl::Set('title', '找回密码');
		LibTpl::Put();
	}
	/**
	  * @method 重置密码
	  * @author soul 2017/5/10
	  */
	function setpass()
	{
		$OthCheck = new OthCheck();
		$OthCheck->notLogin('gzhs');

		$Params = mvc::$URL_PARAMS;
		if(!empty($_POST['username']) && !empty($_POST['oldpass']) && !empty($_POST['password']) && !empty($_POST['password2']))
		{
			$LibYpApi = new LibYpApi();
			$dataArr = [
				'filed'=>['u_id', 'u_password','u_name'],
				'where'=>sprintf(" and u_name='%s'", LibFc::Escape($_POST['username'])),
				'oneRow'=>true
			];
			$Res = $LibYpApi->Get('user/getUser', [], $dataArr);
			$UserData = $Res['data'];
			if(!empty($UserData) && $_POST['oldpass'] == md5($UserData['u_password']))
			{
				$Password = trim($_POST['password']);
				$Password2 = trim($_POST['password2']);
				if(strlen($Password) < 6 || strlen($Password) > 20)
				{
					$Error = '密码是长度为6~20个字符的组合';
				}
				else if($Password == $Password2)
				{
					$LibYpApi->Get('user/setUser', [], ['uid'=>$UserData['u_id'], 'data'=>['u_password'=>$Password]]);
					LibTpl::Set('SetOK', true);
				}
				else
				{
					$Error = '两次输入的密码不一致，请重新输入';
				}
				LibTpl::Set('Error', $Error);
			}
		}
		if(!empty($Params['item']))
		{
			$ItemArr = explode('@', base64_decode(trim($Params['item'])));
			if(count($ItemArr) == 2 && !empty($ItemArr[0]) && !empty($ItemArr[1]))
			{
				$LibYpApi = new LibYpApi();
				$dataArr = [
					'filed'=>['u_id', 'u_name', 'u_password'],
					'where'=>sprintf(" and u_name='%s'", LibFc::Escape($ItemArr[0])),
					'oneRow'=>true
				];
				$Res = $LibYpApi->Get('user/getUser', [], $dataArr);
				$UserData = $Res['data'];
				if(!empty($UserData) && $ItemArr[1] == md5($UserData['u_password']))
				{
					LibTpl::Set('UserData', $UserData);
					LibTpl::Set('ItemArr', $ItemArr);
					LibTpl::Set('Item', $Params['item']);
					LibTpl::Set('ItemOk', true);
				}
			}
		}
		// print_r($Params);
		LibTpl::Set('title', '重置密码');
		LibTpl::Put();
	}
	//注册协议
	function protocol()
	{
		LibTpl::Set('title', '用户注册协议');
		LibTpl::Put();
	}


	/*
	绑定手机号码
	 */
	function bindMobile()
	{
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin('gzh');
		if(!empty($_POST['mobile']) && !empty($_POST['mobile_code']) && isset($_POST['imgcode']))
		{
			if($_SESSION['imgcode'] != strtoupper($_POST['imgcode']))
			{
				LibTpl::Error('图片验证码不正确',mvc::$cfg['SELF_URI'].'user/index');
			}
			else
			{
				$LibYpApi = new LibYpApi();
				$Mobile = trim($_POST['mobile']);
				$dataArr = [
					'mobile'=>$_POST['mobile'],	
					'style'=>'bind',
					'from'=>'PJDSGZH',
					'code'=>$_POST['mobile_code'],
				];
				$LibYpApi->Get('sms/checkMobileCode', $dataArr);

				$PostArr = [
					'uid'=>$_SESSION['_userid'],
					'data'=>['shouji'=>['bind'=>'Y', 'u_mobile'=>$Mobile]],
					'lang'=>'cn'
				];
				$LibYpApi->Get('user/bind_account', [], $PostArr);
				
				//使短信验证码失效
				$dataArr = [
					'mobile'=>$_POST['mobile'],	
					'style'=>'bind',
					'from'=>'PJDSGZH',
				];
				$LibYpApi->Get('sms/outMobileCode', $dataArr, [], true);
				$_SESSION['_mobliechk'] = 'Y';
				unset($_SESSION['imgcode']);
				LibTpl::Success('手机绑定成功',mvc::$cfg['SELF_URI'].'user/index');
			}
		}
		LibTpl::Set('title', '手机绑定');
		LibTpl::Put();
	}
	/**
	  * @method 用户数据唯一性，用户名、邮箱、昵称、手机号码....
	  * @remark 当用户已登录并且$_POST['uid'] == -1 自动取 $_SESSION['_userid']
	  * @author soul 2017/5/10
	  */
	function checkUnique()
	{
		$Val = trim($_POST['val']);
		$Uid = isset($_SESSION['_userid']) && $_POST['uid'] == -1 ? $_SESSION['_userid'] : (int) $_POST['uid'];
		$Where = '';
		$Return = ['status'=>true, 'data'=>[], 'code'=>''];
		switch($_POST['filed'])
		{
			case 'regname': 
				$Where = sprintf(" and u_name='%s'", LibFc::Escape($Val));
			break;
			case 'regemail': 
				$Where = sprintf(" and u_email='%s'", LibFc::Escape($Val));
			break;
			case 'regmobile': 
				$Where = sprintf(" and u_mobile_check='Y' and u_mobile='%s'", LibFc::Escape($Val));
			break;
			case 'nickname': 
				$Where = sprintf(" and u_id !=%d and u_nickname='%s'", $Uid, LibFc::Escape($Val));
			break;
		}
		if($Where != '')
		{
			$LibYpApi = new LibYpApi();
			$dataArr = [
				'filed'=>['count(*) as count'],	
				'where'=>$Where,
				'oneRow'=>true
			];
			$Return = $LibYpApi->Get('user/getUser', [], $dataArr);
		}
		LibFc::ajaxJsonEncode($Return);
	}
	/**
	  * @method 匹配验证码
	  * @author soul
	  * @copyright 2017/5/9
	  */
	function checkImgcode()
	{
		$Return = ['status'=>false, 'data'=>'验证码不正确', 'code'=>'code_error'];
		if($_SESSION['imgcode'] == strtoupper($_POST['val']))
		{
			$Return = ['status'=>true, 'data'=>'', 'code'=>''];
		}
		LibFc::ajaxJsonEncode($Return);
	}
	/**
	  * @method 短信验证码匹配
	  * @author soul
	  * @copyright 2017/5/9
	  */
	function checkMobilecode()
	{
		$Return = ['status'=>false, 'data'=>'短信校验码不正确', 'code'=>'code_error'];
		if(!empty($_POST['mobile']) && preg_match('/^1\d{10}$/', trim($_POST['mobile'])) && !empty($_POST['code']) && preg_match('/^\d{6}$/', trim($_POST['code'])))
		{
			$LibYpApi = new LibYpApi();
			$dataArr = [
				'mobile'=>$_POST['mobile'],	
				'style'=>$_POST['act'],
				'from'=>'PJDSGZH',
				'code'=>$_POST['code'],
			];
			$Res = $LibYpApi->Get('sms/checkMobileCode', $dataArr, [], true);
			if($Res['status'])
			{
				$Return = ['status'=>true, 'data'=>true, 'code'=>''];
			}
		}
		LibFc::ajaxJsonEncode($Return);
	}


	/**
	 * @method    登录检查
	 * @author 卢
	 * @copyright 2018-07-19
	 */
	function checkLogin()
	{
		$Params = mvc::$URL_PARAMS;
		$arr = ['uid'=>0, 'wxfastlogin'=>$_SESSION['wxfastlogin']];
		if(empty($_SESSION['_userid']))
		{
			$B2cUser = new B2cUser();
			if(!empty($Params['wxid']) && strlen($Params['wxid']) > 10)
			{
				$res = $B2cUser->loginByAny('weixin',['unionid'=>$Params['wxid'], 'openid'=>$Params['wxid'], 'from'=>'PJDSGZH']);
				if($res['status'] && !empty($res['data']['u_id']))
				{
					$res['data']['type'] = 'weixin';
					$res['data']['unionid'] = $Params['wxid'];
					$this->loginSession($res);
					$arr['autologin'] = 1;
				}
			}
			else if(!empty($Params['utag']) && strlen($Params['utag']) > 10)
			{
				$res = $B2cUser->loginByAny('token', ['utag'=>$Params['utag'], 'from'=>'PJDSGZH']);
				if($res['status'] && !empty($res['data']['u_id']))
				{
					$res['data']['auto'] = 1;
					$this->loginSession($res);
					$arr['autologin'] = 1;
				}
			}
		}
		if(!empty($_SESSION['_userid']))
		{
			$arr['uid'] = $_SESSION['_userid'];
		}
		LibFc::ajaxJsonEncode(['status'=>true, 'data'=>$arr]);
	}

	/**
	 * @method 个人信息详情
	 * @author zhengweihua 
	 * @copyright 2022-09-08
	 */
	function info()
	{
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin('gzh');
		$YpwUser = new YpwUser();
		$YpwAddr = new YpwAddr();
		$FieldArr = array('u_nickname','u_real_name','u_logo','ui_sex','ui_company','u_pct_ids');
		$res = $YpwUser->getUser($FieldArr, ' and u_id='.$_SESSION['_userid'], true);
		$res['data']['ui_area'] = '';
		$res['data']['areaArr'] = [];
		if($res['data']['u_pct_ids']){
			$resArr=$YpwAddr->getAddrByIds($res['data']['u_pct_ids']);
			$res['data']['ui_area'] = implode('', $resArr['data']);

			$pctIdArr =	explode(',', $res['data']['u_pct_ids']);
			$pctIdArr =	array_slice($pctIdArr,0,3);
			$selected  = count($pctIdArr)-1;
			$areaArr =[];
			$arr =['province','city','region'];
			$pctIdArr = array_pad($pctIdArr,3,0);
			foreach ($pctIdArr as $key => $pct_id) {
				//父id
				$ppct_id =0;
				if($key>=1){
					$ppct_id = $pctIdArr[$key-1];
				}
				$areaArr[]  = ['type'=>$arr[$key],'ppct_id'=>$ppct_id,'pct_id'=>$pct_id,'name'=>$resArr['data'][$pct_id]??'','selected'=>$key==$selected?1:0];
			}
			$res['data']['areaArr'] = $areaArr;
		}
		
		LibTpl::Set('infoArr',$res['data']);
		LibTpl::Set('footMenu', 'user');
		LibTpl::Set('title', '个人信息');
		LibTpl::Put();
	}

	/**
	 * @method    个人信息保存
	 * @author 卢
	 * @copyright 2018-07-10
	 */
	function saveInfo()
	{
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin('gzh');
		$YpwUser = new YpwUser();
		$Params = mvc::$URL_PARAMS;
		$res=['data'=>'参数不正确','status'=>false];
		if(!empty($Params['type']))
		{
			switch ($Params['type']) 
			{
				case 'logo':
					if(!empty($_POST['logo']))
					{
						$dataArr = [
							'u_logo'=>$_POST['logo'],
						];
					}
					break;
				case 'realname':
					if(!empty($_POST['realname']))
					{
						if(mb_strlen($_POST['realname'])>32)
						{
							$res['data']= '真实姓名过长';
							break;
						}
						$dataArr = [
							'u_real_name'=>$_POST['realname'],
						];
					}
				break;
				case 'nickname':
					if(!empty($_POST['nickname']))
					{
						if(mb_strlen($_POST['nickname'])>32)
						{
							$res['data']= '昵称过长';
							break;
						}
						$dataArr = [
							'u_nickname'=>$_POST['nickname'],
						];
					}
				break;
				case 'sex':
					if(isset($_POST['sex']))
					{
						$dataArr = [
							'ui_sex'=>(int)$_POST['sex'],
						];
					}
				break;
				case 'company':
					if(!empty($_POST['company']))
					{
						if(mb_strlen($_POST['company'])>32)
						{
							$res['data']= '公司名称过长';
							break;
						}
						$dataArr = [
							'ui_company'=>$_POST['company'],
						];
					}
				break;
				case 'area':
					if(!empty($_POST['area_key']))
					{
						$dataArr = [
							'u_pct_ids'=>$_POST['area_key'],
						];
					}
				break;
			}
			if(!empty($dataArr))
			{
				$res = $YpwUser->setUser($_SESSION['_userid'],$dataArr);
			}
		}
		LibFc::ajaxJsonEncode($res);
	}

	/**
	 * @method    ajax获取省市区联动
	 * @author 卢
	 * @copyright 2018-07-19
	 */
	function getProvince(){
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin('gzhs');
		$Params = mvc::$URL_PARAMS;
		$pid=!empty($Params['id'])?(int)$Params['id']:0;
		$YpwBase = new YpwBase();
		$res = $YpwBase->get('yp_province_city', ['pc_id as value', 'pc_name as text'], sprintf(" and pc_pid=%d", $pid));
		LibFc::ajaxJsonEncode($res);
	}

	/**
	 * @method 微信解绑
	 * @author zhengweihua 
	 * @copyright 2023-07-29
	 */
	function ajaxUnBindWeixin()
	{
		$Return = ['status'=>false,'data'=>'参数错误'];

		if(!empty($_SESSION['_userid']))
		{
			$LibYpApi = new LibYpApi();
			$PostArr = [
				'uid'=>$_SESSION['_userid'],
				'data'=>['weixin'=>['bind'=>'N', 'u_weixin_unionid'=>'', 'u_weixin_info'=>[]]],
				'lang'=>'cn'
			];
			$res = $LibYpApi->Get('user/bind_account', [], $PostArr);
			$Return = $res;
		}
		LibFc::ajaxJsonEncode($Return);
	}
	
}