<?php
namespace wstmart\home\model;
use think\Db;
/**
 * ============================================================================
 * 门店管理员类
 */
class ShopUsers extends Base{
	/**
	 * 角色列表
	 */
	public function pageQuery(){
		$shopId = (int)session('WST_USER.shopId');
		$userName = input("userName/s");
		$where = ["s.shopId"=>$shopId,"s.dataFlag"=>1];
		if($userName != ""){
			$where["loginName"] = ["like","%".$userName."%"];
		}
		$page = $this->alias('s')
	    		->join("__SHOP_ROLES__ r","s.roleId=r.id","LEFT")
	    		->join("__USERS__ u", "u.userId=s.userId and u.dataFlag=1")
	    		->field('s.id,s.shopId,s.roleId,u.userName,u.loginName,u.createTime,u.userStatus,r.roleName')
				->where($where)
				->paginate(input('pagesize/d'))->toArray();
		return $page;
	}

	/**
	*  根据id获取店铺用户
	*/
	public function getById(){
		$id = (int)input('id');
		$shopId = (int)session('WST_USER.shopId');
	    $user = $this->alias('s')
	    		->join("__SHOP_ROLES__ r","s.roleId=r.id","LEFT")
	    		->join("__USERS__ u", "u.userId=s.userId and u.dataFlag=1")
	    		->field('s.id,s.shopId,s.roleId,u.userName,u.loginName,u.createTime,u.userStatus,r.roleName')
				->where(["s.id"=>$id,"s.shopId"=>$shopId,"s.dataFlag"=>1])
				->find();
		return $user;
	}

	
	/**
     * 新增店铺用户
     */
    public function add(){
    	$data = array();
    	$roleId = (int)input("roleId");
    	$data['loginName'] = input("post.loginName");
    	$data['loginPwd'] = input("post.loginPwd");
    	$data['reUserPwd'] = input("post.reUserPwd");
    	$loginName = $data['loginName'];
    	if($roleId<=0){
    		return WSTReturn('非法操作');
    	}
    	//检测账号是否存在
    	$crs = WSTCheckLoginKey($loginName);
    	if($crs['status']!=1)return $crs;
    	$decrypt_data = WSTRSA($data['loginPwd']);
    	$decrypt_data2 = WSTRSA($data['reUserPwd']);
    	if($decrypt_data['status']==1 && $decrypt_data2['status']==1){
    		$data['loginPwd'] = $decrypt_data['data'];
    		$data['reUserPwd'] = $decrypt_data2['data'];
    	}else{
    		return WSTReturn('新增失败');
    	}
    	if($data['loginPwd']!=$data['reUserPwd']){
    		return WSTReturn("两次输入密码不一致!");
    	}
    	foreach ($data as $v){
    		if($v ==''){
    			return WSTReturn("信息不完整!");
    		}
    	}
    	if($loginName=='')return WSTReturn("新增失败!");//分派不了登录名
    
    	unset($data['reUserPwd']);
    	//检测账号,邮箱,手机是否存在
    	$data["loginSecret"] = rand(1000,9999);
    	$data['loginPwd'] = md5($data['loginPwd'].$data['loginSecret']);
    	$data['userName'] = input("post.userName");
    	$data['userQQ'] = "";
    	$data['userScore'] = 0;
    	$data['createTime'] = date('Y-m-d H:i:s');
    	$data['dataFlag'] = 1;
    	$data['userType'] = 1;
    	Db::startTrans();
        try{
	    	$userId = Db::name("users")->insertGetId($data);
	    	if(false !== $userId){
	    		//添加门店用户
	    		$shopId = (int)session('WST_USER.shopId');
	    		$data = array();
	    		$data["shopId"] = $shopId;
	    		$data["userId"] = $userId;
	    		$data["roleId"] = (int)input("roleId");
	    		Db::name('shop_users')->insert($data);
	    		$user = model("common/Users")->get($userId);
	    		//注册成功后执行钩子
	    		hook('afterUserRegist',['user'=>$user]);
                //发送消息
                $tpl = WSTMsgTemplates('USER_REGISTER');
                if( $tpl['tplContent']!='' && $tpl['status']=='1'){
                    $find = ['${LOGIN_NAME}','${MALL_NAME}'];
                    $replace = [$user['loginName'],WSTConf('CONF.mallName')];
                    WSTSendMsg($userId,str_replace($find,$replace,$tpl['tplContent']),['from'=>0,'dataId'=>0]);
                }

	    		Db::commit();
	    		return WSTReturn("新增成功",1);
	    	}
        }catch (\Exception $e) {
        	Db::rollback();errLog($e);
        }
    	return WSTReturn("新增失败!");
    }

	/**
     * 修改店铺用户
     */
    public function edit(){

    	$shopId = (int)session('WST_USER.shopId');
    	Db::startTrans();
		try{
	    	$data = array();
	    	$roleId = (int)input("post.roleId");
	    	$id = (int)input("post.id");
	    	$newPass = input("post.newPass/s");
	    	if($newPass!=""){
	    		$decrypt_data = WSTRSA($newPass);
		    	if($decrypt_data['status']==1){
		    		$newPass = $decrypt_data['data'];
		    	}else{
		    		return WSTReturn('修改失败');
		    	}
		    	if(!$newPass){
		    		return WSTReturn('密码不能为空',-1);
		    	}
		    	$roleUser = $this->where(["id"=>$id,"shopId"=>$shopId])->find();
		    	$userId = $roleUser["userId"];
		    	$rs = model("users")->where(["userId"=>$userId])->find();
		    	//核对密码
		  
				$oldPass = input("post.oldPass");
				$decrypt_data2 = WSTRSA($oldPass);
				if($decrypt_data2['status']==1){
					$oldPass = $decrypt_data2['data'];
				}else{
					return WSTReturn('修改失败');
				}
				if($rs['loginPwd']==md5($oldPass.$rs['loginSecret'])){
					
						$data["loginPwd"] = md5($newPass.$rs['loginSecret']);
						$rs = model("users")->update($data,['userId'=>$userId]);
						if(false !== $rs){
							$this->where(["id"=>$id,"shopId"=>$shopId,"roleId"=>[">",0]])->update(["roleId"=>$roleId]);
							hook("afterEditPass",["userId"=>$userId]);
						}else{
							return WSTReturn("修改失败", -1);
						}
						Db::commit();
				 		return WSTReturn("修改成功", 1);
			       
				}else{
					return WSTReturn('原始密码错误',-1);
				}
	    	}else{
	    		$this->where(["id"=>$id,"shopId"=>$shopId,"roleId"=>[">",0]])->update(["roleId"=>$roleId]);
	    		Db::commit();
				return WSTReturn("修改成功", 1);
	    	}
		}catch (\Exception $e) {
        	Db::rollback();errLog($e);
        }
    }

	

	/**
	 * 删除店铺用户
	 */
	public function del(){
		$shopId = (int)session('WST_USER.shopId');
		$id = input('post.id/d');
		$data = [];
		$data['dataFlag'] = -1;
		Db::startTrans();
		try{
			$role = $this->where(["id"=>$id,"shopId"=>$shopId])->field("userId,id")->find();
			$result = $this->where(["id"=>$id,"shopId"=>$shopId,"roleId"=>[">",0]])->update($data);
		   	if(false !== $result){
		   		Db::name("users")->where(["userId"=>$role["userId"]])->update(["userType"=>0]);
	        	return WSTReturn("删除成功", 1);
	        }
     	}catch (\Exception $e) {
        	Db::rollback();errLog($e);
        }
        return WSTReturn('删除失败',-1);
	}
}