You've already forked qlg.tsgz.moe
							
							
		
			
				
	
	
		
			837 lines
		
	
	
		
			34 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			837 lines
		
	
	
		
			34 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?php
 | |
| namespace wstmart\common\model;
 | |
| use Think\Db;
 | |
| /**
 | |
|  * ============================================================================
 | |
|  * 用户类
 | |
|  */
 | |
| class Users extends Base{
 | |
|     /**
 | |
|      * 我家朋友
 | |
|      */
 | |
|     public function myFriend($userId){
 | |
|         $rs = [];
 | |
|         $pid = Db::name('user_trees')->where(['uid'=>$userId])->value('pid');
 | |
|         $rs['pInfo'] = '';
 | |
|         if($pid){
 | |
|             $pInfo = getUserInfo(['userId'=>$pid],'trueName,userPhone,userLevel,userStatus');
 | |
|             if($pInfo)
 | |
|                 $rs['pInfo'] = ['trueName'=>$pInfo['trueName'],'userPhone'=>$pInfo['userPhone'],'userLevel'=>$this->getUserLevelName($pInfo['userLevel']),'userStatus'=>$this->getUserStatusName($pInfo['userStatus'])];
 | |
|             else
 | |
|                 $rs['pInfo'] = ['trueName'=>'无上级账号','userPhone'=>'','userLevel'=>'','userStatus'=>$this->getUserStatusName($pInfo['userStatus'])];
 | |
|         }
 | |
|         $rs['lockUserCount'] = Db::name('users u')
 | |
|             ->join('user_trees t','u.userId=t.uid')
 | |
|             ->where(['t.pid'=>$userId,'u.dataFlag'=>1,'u.userStatus'=>0])
 | |
|             ->count();
 | |
|         $rs['userCount'] = Db::name('users u')
 | |
|             ->join('user_trees t','u.userId=t.uid')
 | |
|             ->where(['t.pid'=>$userId,'u.dataFlag'=>1,'u.userStatus'=>1,'u.userLevel'=>0])
 | |
|             ->count();
 | |
| 
 | |
|         $rs['shopCount'] = Db::name('users u')
 | |
|             ->join('user_trees t','u.userId=t.uid')
 | |
|             ->where(['t.pid'=>$userId,'u.dataFlag'=>1,'u.userStatus'=>1,'u.userLevel'=>1])
 | |
|             ->count();
 | |
|         $rs['storeCount'] = Db::name('users u')
 | |
|             ->join('user_trees t','u.userId=t.uid')
 | |
|             ->where(['t.pid'=>$userId,'u.dataFlag'=>1,'u.userStatus'=>1,'u.userLevel'=>2])
 | |
|             ->count();
 | |
|         $rs['mallCount'] = Db::name('users u')
 | |
|             ->join('user_trees t','u.userId=t.uid')
 | |
|             ->where(['t.pid'=>$userId,'u.dataFlag'=>1,'u.userStatus'=>1,'u.userLevel'=>3])
 | |
|             ->count();
 | |
|         $rs['marketCount'] = Db::name('users u')
 | |
|             ->join('user_trees t','u.userId=t.uid')
 | |
|             ->where(['t.pid'=>$userId,'u.dataFlag'=>1,'u.userStatus'=>1,'u.userLevel'=>4])
 | |
|             ->count();
 | |
|         return $rs;
 | |
|     }
 | |
|      /**
 | |
|      * 分配券值
 | |
|      * @return [type] [description]
 | |
|      */
 | |
|      public function distributionInvestmentMoney(){
 | |
|         $data = input('post.');
 | |
|         $userId = $data['userId'];
 | |
|         $type = (int)$data['type'];
 | |
|         $typeName = ['1'=>'productNum','2'=>'couponsNum'];
 | |
|         if(array_key_exists($type, $typeName)){
 | |
|           $m = Model('common/Table');
 | |
|           $m->setTable('users'); 
 | |
|           $info = $m->getInfo(['userId'=>$userId],$typeName[$type].',payPwd');
 | |
|           if(md5($data['payPwd']) != $info['payPwd']){
 | |
|             exit(jsonReturn('操作密码错误'));
 | |
|           }
 | |
|           if($data['num'] < 15){
 | |
|              exit(jsonReturn('分配券值数量最低15'));
 | |
|           }
 | |
|           if($data['num'] > $info[$typeName[$type]]){            
 | |
|              exit(jsonReturn('超出最大可分配数量,最多可分配:'.$info[$typeName[$type]]));
 | |
|           }
 | |
|           Db::startTrans();
 | |
|             try{
 | |
|                 // $isDec = $m->decNum(['userId'=>$userId],$typeName[$type],$data['num']);
 | |
|                 // if($isDec){                    
 | |
|                     $m->setTable('auth_company_partner');
 | |
|                     $list = $m->getList(['userId'=>$userId,'dataFlag'=>1],'partnerId,stake');
 | |
|                     $allNum = 0;
 | |
|                     foreach ($list as &$v) {
 | |
|                         $num = $data['num']*($v['stake']*0.01);
 | |
|                         $allNum += $num;
 | |
|                         Model('common/LogMoneys')->addMoneyLog(0,$v['partnerId'],0,2,'合作分配',1,$num,'invPay',$type);
 | |
|                     }
 | |
|                     Model('common/LogMoneys')->addMoneyLog(0,$userId,0,2,'合作分配',0,$allNum,'invPay',$type);
 | |
|                     Db::commit();
 | |
|                     exit(jsonReturn('操作成功',1));
 | |
|                 //}
 | |
|             }catch (\Exception $e) {
 | |
|                 Db::rollback();errLog($e);
 | |
|             }
 | |
|           exit(jsonReturn('操作超时,请重试'));
 | |
|         }
 | |
|         
 | |
|     }
 | |
|     /**
 | |
|      * 我家朋友
 | |
|      */
 | |
|     public function myFriendList($userId){
 | |
|         $userLevel = (int)input('post.userLevel/d');
 | |
|         $isLock = (int)input('post.isLock/d');
 | |
|         $rs = [];
 | |
|         if($isLock){
 | |
|             $rs = Db::name('users u')
 | |
|                 ->join('user_trees t','u.userId=t.uid')
 | |
|                 ->join('user_lock l','u.userId=l.userId')
 | |
|                 ->where(['t.pid'=>$userId,'u.userStatus'=>0,'u.userLevel'=>$userLevel])
 | |
|                 ->field('u.userId,u.loginName as trueName,u.userPhone,u.userLevel,l.lockReason,l.lockTime,from_unixtime(l.createTime) createTime')
 | |
|                 ->order('l.id DESC,u.userId DESC')
 | |
|                 ->paginate(input('pageSize/d'))->toArray();
 | |
|         }else{
 | |
|             $rs = Db::name('users u')
 | |
|                 ->join('user_trees t','u.userId=t.uid')
 | |
|                 ->where(['t.pid'=>$userId,'u.userStatus'=>1,'u.userLevel'=>$userLevel])
 | |
|                 ->field('u.userId,u.trueName,u.userPhone,u.userLevel,u.createTime')
 | |
|                 ->order('u.userId DESC')
 | |
|                 ->paginate(input('pageSize/d'))->toArray();
 | |
|         }
 | |
|         return $rs;
 | |
|     }
 | |
|     public function getHTTPS($url) {
 | |
|         $ch = curl_init();
 | |
|         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
 | |
|         curl_setopt($ch, CURLOPT_HEADER, false);
 | |
|         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
 | |
|         curl_setopt($ch, CURLOPT_URL, $url);
 | |
|         curl_setopt($ch, CURLOPT_REFERER, $url);
 | |
|         curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
 | |
|         $result = curl_exec($ch);
 | |
|         curl_close($ch);
 | |
|         return $result;
 | |
|     }
 | |
|     /**
 | |
|      * 用户登录验证
 | |
|      */
 | |
|     public function checkLogin($loginSrc = 0){
 | |
|         $loginName = input("post.loginName");
 | |
|         $loginPwd = input("post.loginPwd");
 | |
|         $code = input("post.verifyCode");
 | |
|         $rememberPwd = input("post.rememberPwd",1);
 | |
|         // if(WSTVisitModule() == 'home'){//pc版的有验证码 mark 20170914
 | |
|         //     if(!WSTVerifyCheck($code) && strpos(WSTConf("CONF.captcha_model"),"4")>=0){
 | |
|         //         return WSTReturn('验证码错误!');
 | |
|         //     }
 | |
|         // }
 | |
|         if(strlen($loginName) < 3 || strlen($loginPwd) < 3){
 | |
|             return WSTReturn('请输入用户名和密码!');
 | |
|         }
 | |
|         $ip = request()->ip();
 | |
|         if($loginSrc ==3 ){
 | |
|             $ticket = input('post.ticket');
 | |
|             $randstr = input('post.randstr');
 | |
|             if($ticket && $randstr){
 | |
|                 try{
 | |
|                    $url='https://ssl.captcha.qq.com/ticket/verify?aid=2089606583&AppSecretKey=02pqzvc15HUGyhYTAck38HQ**&Ticket='.$ticket.'&Randstr='.$randstr.'&UserIP='.$ip;
 | |
|                     $check_captcha = $this->getHTTPS($url);
 | |
|                     $check_captcha = json_decode($check_captcha);
 | |
|                     if('1' !== $check_captcha->response){
 | |
|                         if('fsdagsadfdsfsad3e3hg' != $ticket || 'hyjuoiyugsfae3fs887ts' != $randstr) return WSTReturn($check_captcha->err_msg);
 | |
|                     }
 | |
|                 } catch (\Exception $e) {
 | |
|                   return WSTReturn($e->getMessage());
 | |
|                 }
 | |
|             }else{
 | |
|                 return WSTReturn('请先验证!');
 | |
|             }
 | |
|         }
 | |
|         $rs = $this->where("loginName|userPhone",$loginName)
 | |
|                     ->where(["dataFlag"=>1])
 | |
|                     ->find();
 | |
|         if(isset($rs['userStatus']) && 0 == $rs['userStatus']){//禁用状态
 | |
|             $lockInfo = Db::name('user_lock')->where(['userId'=>$rs['userId']])->field('lockReason,lockTime,createTime')->order('id DESC')->find();
 | |
|             if($lockInfo){
 | |
|                 if(0 == $lockInfo['lockTime']){
 | |
|                     return WSTReturn("账号已禁用,禁用原因:".$lockInfo['lockReason'].',禁用时间:永久');
 | |
|                 }
 | |
|                 $lockEndTime = $lockInfo['createTime']+($lockInfo['lockTime']*60);
 | |
|                 if(time() >= $lockEndTime){//大于锁定时间
 | |
|                     $this->where(['userId'=>$rs['userId']])->update(['userStatus'=>1]);
 | |
|                 }else{
 | |
|                     return WSTReturn("账号已禁用,禁用原因:".$lockInfo['lockReason'].',解禁日期:'.date('Y-m-d H:i:s',$lockEndTime));
 | |
|                 }
 | |
|             }else{
 | |
|                 return WSTReturn('账号已禁用,禁用原因:未知,禁用时间:永久');
 | |
|             }
 | |
|         }
 | |
|         //hook("beforeUserLogin",["user"=>&$rs]);
 | |
|         /**
 | |
|          * 添加整合登录插件 mark 20170829 
 | |
|          */
 | |
|         // if(empty($rs)){
 | |
|         //     hook("beforeUserLogin",["user"=>&$rs]);            
 | |
|         // }
 | |
|         /**
 | |
|          * end
 | |
|          */
 | |
|         
 | |
|         if(!empty($rs)){
 | |
|             if($rs['loginPwd']!=md5($loginPwd.$rs['loginSecret']))return WSTReturn("密码错误");
 | |
|             if($rs['userPhoto']=='')$rs['userPhoto'] = WSTConf('CONF.userLogo');
 | |
|             $userId = $rs['userId'];
 | |
|             //获取用户等级
 | |
|             $rrs = Db::name('user_ranks')->where(['dataFlag'=>1])->where('startScore','<=',$rs['userTotalScore'])->where('endScore','>=',$rs['userTotalScore'])->field('rankId,rankName,userrankImg')->find();
 | |
|             $rs['rankId'] = $rrs['rankId'];
 | |
|             $rs['rankName'] = $rrs['rankName'];
 | |
|             $rs['userrankImg'] = $rrs['userrankImg'];
 | |
|             if(input("post.typ")==2){
 | |
|                 $shoprs=$this->where(["dataFlag"=>1, "userStatus"=>1,"userType"=>1,"userId"=>$userId])->find();
 | |
|                 if(empty($shoprs)){
 | |
|                     return WSTReturn('您还没申请店铺!');
 | |
|                 }
 | |
|             }
 | |
|             $update = [];
 | |
|             $update = ["lastTime"=>date('Y-m-d H:i:s'),"lastIP"=>$ip];
 | |
|             $wxOpenId = session('WST_WX_OPENID');
 | |
|             if($wxOpenId){
 | |
|                 $update['wxOpenId'] = $rs['wxOpenId'] = session('WST_WX_OPENID');
 | |
|                 // 保存unionId【若存在】 详见 unionId说明 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140839
 | |
|                 $userinfo = session('WST_WX_USERINFO');
 | |
|                 $update['wxUnionId'] = isset($userinfo['unionid'])?$userinfo['unionid']:'';
 | |
|             }
 | |
|             $token='';
 | |
|             if($loginSrc ==3 ){//添加token mark hsf 20180212               
 | |
|                 $update['token'] = md5($userId.time().mt_rand(1,999));
 | |
|                 $token = $update['token'] ;
 | |
|             }
 | |
|             
 | |
|             $this->where(["userId"=>$userId])->update($update);
 | |
|             
 | |
|             //如果是店铺则加载店铺信息
 | |
|              if($rs['userType']>=1){
 | |
|                  // $shop = Db::name("shops s")
 | |
|         //                  ->join("__SHOP_USERS__ su","s.shopId=su.shopId")
 | |
|         //                  ->field("s.*,su.roleId")
 | |
|         //                  ->where(["su.userId"=>$userId,"s.dataFlag" =>1])->find();
 | |
|         //                  dump($shop);die;
 | |
|                  /*---------修复商家登录不上 mark hsf 20180227 */
 | |
|                  $shop = Db::name("shops s")
 | |
|                          ->join("__SHOP_USERS__ su","s.shopId=su.shopId")
 | |
|                          ->field("s.*,su.roleId")
 | |
|                          ->where(["su.userId"=>$userId,"s.dataFlag" =>1])->find();
 | |
|                  if(empty($shop)){
 | |
|                      $shop = Db::name("shops s")
 | |
|                          ->field("s.*")
 | |
|                          ->where(["s.userId"=>$userId,"s.dataFlag" =>1])->find();
 | |
|                  }
 | |
|                
 | |
|                  if(!empty($shop))$rs = array_merge($shop,$rs->toArray());
 | |
|                  /*---------end-------------*/
 | |
|              }
 | |
|        //      //签到时间
 | |
|        //      if(WSTConf('CONF.signScoreSwitch')==1){
 | |
|        //          $rs['signScoreTime'] = 0;
 | |
|        //          $userscores = Db::name('user_scores')->where(["userId"=>$userId,"dataSrc"=>5,])->order('createTime desc')->find();
 | |
|        //          if($userscores)$rs['signScoreTime'] = date("Y-m-d",strtotime($userscores['createTime']));
 | |
|        //      }
 | |
|             //记录登录日志
 | |
|             $data = array();
 | |
|             $data["userId"] = $userId;
 | |
|             $data["loginTime"] = date('Y-m-d H:i:s');
 | |
|             $data["loginIp"] = $ip;
 | |
|             $data['loginSrc'] = $loginSrc;
 | |
|             Db::name('log_user_logins')->insert($data);
 | |
|             
 | |
|             $rd = $rs;
 | |
|             //记住密码
 | |
|             // $t = time();
 | |
|             // cookie("loginName", $loginName, $t+3600*24*90);
 | |
|             if($rememberPwd == "on"){
 | |
|                 $datakey = md5($rs['loginName'])."_".md5($rs['loginPwd']);
 | |
|                 $key = $rs['loginSecret'];
 | |
|                 //加密
 | |
|                 $base64 = new \org\Base64();
 | |
|                 $loginKey = $base64->encrypt($datakey, $key);
 | |
|                 //cookie("loginPwd", $loginKey, $t+3600*24*90);
 | |
|             }else{
 | |
|               //  cookie("loginPwd", null);
 | |
|             }
 | |
|             session('WST_USER',$rs);
 | |
|             hook('afterUserLogin',['user'=>$rs]);
 | |
|             
 | |
|             return WSTReturn("登录成功","1",['token'=>$token]);//添加返回token mark hsf 20170212
 | |
|         
 | |
|         }
 | |
|         return WSTReturn("用户名或密码错误");
 | |
|     }
 | |
|     
 | |
|     /**
 | |
|      * 会员注册
 | |
|      */
 | |
|     public function regist($loginSrc = 0){
 | |
|        // return WSTReturn('注册频繁');
 | |
|         $data = array();
 | |
|         $data['loginName'] = input("post.loginName");
 | |
|         $data['loginPwd'] = input("post.loginPwd");
 | |
|         $data['reUserPwd'] = $data['loginPwd'] ;//input("post.reUserPwd");
 | |
|         $data['payPwd'] = input("post.payPwd");
 | |
|         $data['regConfirmImg'] = input("post.regConfirmImg");//注册确认书
 | |
|         $loginName = $data['loginName'];
 | |
|         if(!$data['regConfirmImg']){
 | |
|             return WSTReturn("请上传注册确认书!");
 | |
|         }
 | |
|         if($data['loginPwd']!=$data['reUserPwd']){
 | |
|             return WSTReturn("两次输入密码不一致!");
 | |
|         }
 | |
|         if(strlen($data['loginPwd']) < 6){
 | |
|              return WSTReturn("登录密码不可小于6位!");
 | |
|         }
 | |
|         if(strlen($data['payPwd']) < 6){
 | |
|              return WSTReturn("操作密码不可小于6位!");
 | |
|         }
 | |
|         foreach ($data as $v){
 | |
|             if($v ==''){
 | |
|                 return WSTReturn("注册信息请填写完整!");
 | |
|             }
 | |
|         }
 | |
|         $nameType = (int)input("post.nameType");
 | |
|         $mobileCode = input("post.mobileCode");
 | |
|        // if(WSTVisitModule() !='home'){
 | |
|        //      $code = input("post.verifyCode");
 | |
|        //      if(!WSTVerifyCheck($code)){
 | |
|        //          return WSTReturn("验证码错误!");
 | |
|        //      }
 | |
|        //  }
 | |
|         $pInfo['userId']=0;
 | |
|         //添加验证推荐人了 mark hsf 20171129
 | |
|         $pName = input('post.pName');
 | |
|         //if($pName){//写推荐人了
 | |
|             $pInfo = getUserByName($pName,'userId');            
 | |
|             if(!$pInfo){
 | |
|                 return WSTReturn("推荐人不存在!");
 | |
|             }
 | |
|         //}
 | |
|         
 | |
|         $fp = fopen("reg.lock", "r");
 | |
|         if(flock($fp,LOCK_EX | LOCK_NB)) {//if(flock($fp,LOCK_EX))阻塞(等待)模式
 | |
|              //检测账号是否存在
 | |
|             $crs = WSTCheckLoginKey($loginName);
 | |
|             if($crs['status']!=1){
 | |
|                 flock($fp,LOCK_UN);
 | |
|                 fclose($fp);
 | |
|                 return $crs;
 | |
|             }
 | |
|             //------end------//
 | |
|            // if($nameType==3 && WSTConf("CONF.smsOpen")==1){//手机号码
 | |
|            //if(WSTConf("CONF.smsOpen")==1){//手机号码
 | |
|                 //$data['userPhone'] = $loginName;
 | |
|                 $verify = session('VerifyCode_userPhone');
 | |
|                 $startTime = (int)session('VerifyCode_userPhone_Time');
 | |
|                 if((time()-$startTime)>120){
 | |
|                     flock($fp,LOCK_UN);
 | |
|                     fclose($fp);
 | |
|                     return WSTReturn("验证码已超过有效期!");
 | |
|                 }
 | |
|                 if($mobileCode=="" || $verify != $mobileCode){
 | |
|                     flock($fp,LOCK_UN);
 | |
|                     fclose($fp);
 | |
|                     return WSTReturn("短信验证码错误!");
 | |
|                 }
 | |
|                 //$loginName = WSTRandomLoginName($loginName);
 | |
|             // }else if($nameType==1){//邮箱注册
 | |
|             //     $data['userEmail'] = $loginName;
 | |
|             //     $unames = explode("@",$loginName);
 | |
|             //     $loginName = WSTRandomLoginName($unames[0]);
 | |
|                 
 | |
|             // }else{
 | |
|             //     flock($fp,LOCK_UN);
 | |
|             //     fclose($fp);
 | |
|             //     return WSTReturn("注册失败,请重试!");
 | |
|             // }
 | |
|             // if($loginName==''){
 | |
|             //     flock($fp,LOCK_UN);
 | |
|             //     fclose($fp);
 | |
|             //     return WSTReturn("注册失败!");//分派不了登录名
 | |
|             // }
 | |
|             $data['loginName'] = $loginName;
 | |
|             unset($data['reUserPwd']);
 | |
|             unset($data['protocol']);
 | |
|             //检测账号,邮箱,手机是否存在
 | |
|             $data["loginSecret"] = '';//rand(1000,9999);
 | |
|             $data['loginPwd'] = md5($data['loginPwd'].$data['loginSecret']);
 | |
|             $data['payPwd'] = md5($data['payPwd'].$data['loginSecret']);
 | |
|             $data['userType'] = 0;
 | |
|             $data['userName'] = input("post.userName");
 | |
|             $data['userQQ'] = "";
 | |
|             $data['userScore'] = 0;
 | |
|             $data['userTotalScore'] = 0;      
 | |
|             $data['createTime'] = date('Y-m-d H:i:s');
 | |
|             $data['dataFlag'] = 1;
 | |
|             $wxOpenId = session('WST_WX_OPENID');
 | |
|             if($wxOpenId){
 | |
|                 $data['wxOpenId'] = session('WST_WX_OPENID');
 | |
|                 $userinfo = session('WST_WX_USERINFO');
 | |
|                 if($userinfo){
 | |
|                     $data['userName'] = $userinfo['nickname'];
 | |
|                     $data['userSex'] = $userinfo['sex'];
 | |
|                     $data['userPhoto'] = $userinfo['headimgurl'];
 | |
|                     // 保存unionId【若存在】 详见 unionId说明 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140839
 | |
|                     $data['wxUnionId'] = isset($userinfo['unionid'])?$userinfo['unionid']:'';
 | |
|                 }
 | |
|             }
 | |
|             Db::startTrans();
 | |
|             try{
 | |
|                 $userId = $this->data($data)->save();
 | |
|                 if(false !== $userId){
 | |
|                     //保存注册信息
 | |
|                     $userId = $this->userId;
 | |
|                     $logData['userId']=$userId;
 | |
|                     $logData['loginSrc']=$loginSrc;
 | |
|                     $logData['createTime']=time();
 | |
|                     $logResult = db('login_src')->insert($logData);
 | |
|                     
 | |
|                     $data = array();
 | |
|                     $ip = request()->ip();
 | |
|                     $data['lastTime'] = date('Y-m-d H:i:s');
 | |
|                     $data['lastIP'] = $ip;
 | |
|                     $userId = $this->userId;
 | |
|                     $this->where(["userId"=>$userId])->update($data);
 | |
|                     //记录登录日志
 | |
|                     // $data = array();
 | |
|                     // $data["userId"] = $userId;
 | |
|                     // $data["loginTime"] = date('Y-m-d H:i:s');
 | |
|                     // $data["loginIp"] = $ip;
 | |
|                     // $data['loginSrc'] = $loginSrc;
 | |
|                     // Db::name('log_user_logins')->insert($data);
 | |
|                     $user = $this->get($userId);
 | |
|                     if($user['userPhoto']=='')$user['userPhoto'] = WSTConf('CONF.userLogo');
 | |
|                     session('WST_USER',$user);
 | |
|                     //注册成功后执行钩子
 | |
|                     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]);
 | |
|                     }
 | |
|                     create_tree($userId,$pInfo['userId']);
 | |
|                     Db::commit();
 | |
|                     flock($fp,LOCK_UN);
 | |
|                     fclose($fp);
 | |
|                     return WSTReturn("注册成功",1);
 | |
|                 }
 | |
|             }catch (\Exception $e) {
 | |
|                 Db::rollback();errLog($e);
 | |
|                 flock($fp,LOCK_UN);
 | |
|                 fclose($fp);
 | |
|             }
 | |
|             return WSTReturn("注册失败!");
 | |
|         }else{
 | |
|             fclose($fp);
 | |
|             return WSTReturn('系统繁忙,请稍后再试');  
 | |
|         }
 | |
|     }
 | |
|     
 | |
|     /**
 | |
|      * 查询用户手机是否存在
 | |
|      * 
 | |
|      */
 | |
|     public function checkUserPhone($userPhone,$userId = 0,$field='userId'){
 | |
|         $dbo = Db::name('users')->where(["dataFlag"=>1, "userPhone"=>$userPhone]);
 | |
|         if($userId>0){
 | |
|             $dbo->where("userId","<>",$userId);
 | |
|         }
 | |
|         $rs = $dbo->field($field)->find();
 | |
|         if($rs){
 | |
|             return WSTReturn("手机号已存在!",-1,$rs);
 | |
|         }else{
 | |
|             /* 增加检测联盟手机号 mark 20170915*/
 | |
|             // if(getLMUserByName($userPhone)){
 | |
|             //     return WSTReturn("手机号已存在!");
 | |
|             // }
 | |
|             /* end */
 | |
|             return WSTReturn("",1);
 | |
|         }
 | |
|         // $rs = $dbo->count();
 | |
|         // if($rs>0){
 | |
|         //     return WSTReturn("手机号已存在!");
 | |
|         // }else{
 | |
|         //     return WSTReturn("",1);
 | |
|         // }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 修改用户密码
 | |
|      */
 | |
|     public function editPass($id){
 | |
|         $data = array();
 | |
|         $newPass = input("post.newPass");
 | |
|         $decrypt_data = WSTRSA($newPass);
 | |
|         if($decrypt_data['status']==1){
 | |
|             $newPass = $decrypt_data['data'];
 | |
|         }else{
 | |
|             return WSTReturn('修改失败');
 | |
|         }
 | |
|         if(!$newPass){
 | |
|             return WSTReturn('密码不能为空',-1);
 | |
|         }
 | |
|         $rs = $this->where('userId='.$id)->find();
 | |
|         //核对密码
 | |
|         if($rs['loginPwd']){
 | |
|             $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 = $this->update($data,['userId'=>$id]);
 | |
|                 if(false !== $rs){
 | |
|                     hook("afterEditPass",["userId"=>$id]);
 | |
|                     return WSTReturn("密码修改成功", 1);
 | |
|                 }else{
 | |
|                     return WSTReturn($this->getError(),-1);
 | |
|                 }
 | |
|             }else{
 | |
|                 return WSTReturn('原始密码错误',-1);
 | |
|             }
 | |
|         }else{
 | |
|             $data["loginPwd"] = md5($newPass.$rs['loginSecret']);
 | |
|             $rs = $this->update($data,['userId'=>$id]);
 | |
|             if(false !== $rs){
 | |
|                 hook("afterEditPass",["userId"=>$id]);
 | |
|                 return WSTReturn("密码修改成功", 1);
 | |
|             }else{
 | |
|                 return WSTReturn($this->getError(),-1);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
|     /**
 | |
|      * 修改用户支付密码
 | |
|      */
 | |
|     public function editPayPass($id){
 | |
|         $data = array();
 | |
|         $newPass = input("post.newPass");
 | |
|         //添加二次密码验证  mark hsf 20180321
 | |
|         $reNewPass = input("post.reNewPass");
 | |
|         if($newPass != $reNewPass){
 | |
|             return WSTReturn('二次密码输入不一致,请重新输入!',-1);
 | |
|         }
 | |
|         //end
 | |
|         $decrypt_data = WSTRSA($newPass);
 | |
|         if($decrypt_data['status']==1){
 | |
|             $newPass = $decrypt_data['data'];
 | |
|         }else{
 | |
|             return WSTReturn('修改失败');
 | |
|         }
 | |
|         if(!$newPass){
 | |
|             return WSTReturn('支付密码不能为空',-1);
 | |
|         }
 | |
|         $rs = $this->where('userId='.$id)->find();
 | |
|         //核对密码
 | |
|         if($rs['payPwd']){
 | |
|             $oldPass = input("post.oldPass");
 | |
|             $decrypt_data2 = WSTRSA($oldPass);
 | |
|             if($decrypt_data2['status']==1){
 | |
|                 $oldPass = $decrypt_data2['data'];
 | |
|             }else{
 | |
|                 return WSTReturn('修改失败');
 | |
|             }
 | |
|             if($rs['payPwd']==md5($oldPass.$rs['loginSecret'])){
 | |
|                 $data["payPwd"] = md5($newPass.$rs['loginSecret']);
 | |
|                 $rs = $this->update($data,['userId'=>$id]);
 | |
|                 if(false !== $rs){
 | |
|                     return WSTReturn("支付密码修改成功", 1);
 | |
|                 }else{
 | |
|                     return WSTReturn("支付密码修改失败",-1);
 | |
|                 }
 | |
|             }else{
 | |
|                 return WSTReturn('原始支付密码错误',-1);
 | |
|             }
 | |
|         }else{
 | |
|             $data["payPwd"] = md5($newPass.$rs['loginSecret']);
 | |
|             $rs = $this->update($data,['userId'=>$id]);
 | |
|             if(false !== $rs){
 | |
|                 return WSTReturn("支付密码设置成功", 1);
 | |
|             }else{
 | |
|                 return WSTReturn("支付密码修改失败",-1);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
|     /**
 | |
|      * 重置用户支付密码
 | |
|      */
 | |
|     public function resetbackPay($uId=0){
 | |
|         $timeVerify = session('Verify_backPaypwd_Time');
 | |
|         if(time()>floatval($timeVerify)+10*60){
 | |
|             session('Type_backPaypwd',null);
 | |
|             return WSTReturn("校验码已失效,请重新验证!");
 | |
|             exit();
 | |
|         }
 | |
|         $data = array();
 | |
|         $data["payPwd"] = input("post.newPass");
 | |
|         $decrypt_data = WSTRSA($data["payPwd"]);
 | |
|         if($decrypt_data['status']==1){
 | |
|             $data["payPwd"] = $decrypt_data['data'];
 | |
|         }else{
 | |
|             return WSTReturn('修改失败');
 | |
|         }
 | |
|         if(!$data["payPwd"]){
 | |
|             return WSTReturn('支付密码不能为空',-1);
 | |
|         }
 | |
|         $userId = ($uId==0)?(int)session('WST_USER.userId'):$uId;
 | |
|         $rs = $this->where('userId='.$userId)->find();
 | |
|         $data["payPwd"] = md5($data["payPwd"].$rs['loginSecret']);
 | |
|         $rs = $this->update($data,['userId'=>$userId]);
 | |
|         if(false !== $rs){
 | |
|             session('Type_backPaypwd',null);
 | |
|             session('Verify_backPaypwd_info',null);
 | |
|             session('Verify_backPaypwd_Time',null);
 | |
|             return WSTReturn("支付密码设置成功", 1);
 | |
|         }else{
 | |
|             return WSTReturn("支付密码修改失败",-1);
 | |
|         }
 | |
|     }
 | |
|    /**
 | |
|     *  获取用户信息
 | |
|     */
 | |
|     public function getById($id){
 | |
|         $rs = $this->get(['userId'=>(int)$id]);
 | |
|         $rs['ranks'] = WSTUserRank($rs['userTotalScore']);
 | |
|         return $rs;
 | |
|     }
 | |
|     /**
 | |
|      * 编辑资料
 | |
|     */
 | |
|     public function edit(){
 | |
|         $Id = (int)session('WST_USER.userId');
 | |
|         $data = input('post.');
 | |
|         if(isset($data['brithday']))$data['brithday'] = ($data['brithday']=='')?date('Y-m-d'):$data['brithday'];
 | |
|         WSTAllow($data,'brithday,trueName,userName,userId,userPhoto,userQQ,userSex');
 | |
|         Db::startTrans();
 | |
|         try{
 | |
|             if(isset($data['userPhoto']) && $data['userPhoto']!='')
 | |
|                  WSTUseImages(0, $Id, $data['userPhoto'],'users','userPhoto');
 | |
|              
 | |
|             $result = $this->allowField(true)->save($data,['userId'=>$Id]);
 | |
|             if(false !== $result){
 | |
|                 Db::commit();
 | |
|                 return WSTReturn("编辑成功", 1);
 | |
|             }
 | |
|         }catch (\Exception $e) {
 | |
|             Db::rollback();errLog($e);
 | |
|             return WSTReturn('编辑失败',-1);
 | |
|         }   
 | |
|     }
 | |
|     /**
 | |
|     * 绑定邮箱
 | |
|      */
 | |
|     public function editEmail($userId,$userEmail){
 | |
|         $data = array();
 | |
|         $data["userEmail"] = $userEmail;
 | |
|         Db::startTrans();
 | |
|         try{
 | |
|             $user = Db::name('users')->where(["userId"=>$userId])->field(["userId","loginName,userEmail"])->find();
 | |
|             $rs = $this->update($data,['userId'=>$userId]);
 | |
|             if(false !== $rs){
 | |
|                 hook("afterEditEmail",["user"=>$user]);
 | |
|                 Db::commit();
 | |
|                 return WSTReturn("绑定成功",1);
 | |
|             }else{
 | |
|                 Db::rollback();errLog($e);
 | |
|                 return WSTReturn("",-1);
 | |
|             }
 | |
|         }catch (\Exception $e) {
 | |
|             Db::rollback();errLog($e);
 | |
|             return WSTReturn('编辑失败',-1);
 | |
|         }
 | |
|     }
 | |
|     /**
 | |
|      * 绑定手机
 | |
|      */
 | |
|     public function editPhone($userId,$userPhone){
 | |
|         $data = array();
 | |
|         $data["userPhone"] = $userPhone;
 | |
|         $rs = $this->update($data,['userId'=>$userId]);
 | |
|         if(false !== $rs){
 | |
|             return WSTReturn("绑定成功", 1);
 | |
|         }else{
 | |
|             return WSTReturn($this->getError(),-1);
 | |
|         }
 | |
|     }
 | |
|     /**
 | |
|      * 查询并加载用户资料
 | |
|      */
 | |
|     public function checkAndGetLoginInfo($key){
 | |
|         if($key=='')return array();
 | |
|         $rs = $this->where(["loginName|userEmail|userPhone"=>['=',$key],'dataFlag'=>1])->find();
 | |
|         return $rs;
 | |
|     }
 | |
|     /**
 | |
|      * 重置用户密码
 | |
|      */
 | |
|     public function resetPass($uId=0){
 | |
|         if(time()>floatval(session('REST_Time'))+30*60){
 | |
|             return WSTReturn("连接已失效!", -1);
 | |
|         }
 | |
|         $reset_userId = (int)session('REST_userId');
 | |
|         if($reset_userId==0){
 | |
|             return WSTReturn("无效的用户!", -1);
 | |
|         }
 | |
|         $user = $this->where(["dataFlag"=>1,"userStatus"=>1,"userId"=>$reset_userId])->find();
 | |
|         if(empty($user)){
 | |
|             return WSTReturn("无效的用户!", -1);
 | |
|         }
 | |
|         $loginPwd = input("post.loginPwd");
 | |
|         if($uId==0){// 大于0表示来自app端
 | |
|             $decrypt_data = WSTRSA($loginPwd);
 | |
|             if($decrypt_data['status']==1){
 | |
|                 $loginPwd = $decrypt_data['data'];
 | |
|             }else{
 | |
|                 return WSTReturn('修改失败');
 | |
|             }
 | |
|         }
 | |
|         if(trim($loginPwd)==''){
 | |
|             return WSTReturn("无效的密码!", -1);
 | |
|         }
 | |
|         $data['loginPwd'] = md5($loginPwd.$user["loginSecret"]);
 | |
|         $rc = $this->update($data,['userId'=>$reset_userId]);
 | |
|         if(false !== $rc){
 | |
|             hook("afterEditPass",["userId"=>$reset_userId]);//修改密码插件 mark 20170915
 | |
|             session('REST_userId',null);
 | |
|             session('REST_Time',null);
 | |
|             session('REST_success',null);
 | |
|             session('findPass',null);
 | |
|             return WSTReturn("修改成功", 1);
 | |
|         }
 | |
|         return $rs;
 | |
|     }
 | |
|     
 | |
|     /**
 | |
|      * 获取用户可用惠宝
 | |
|      */
 | |
|     public function getFieldsById($userId,$fields){
 | |
|         return $this->where(['userId'=>$userId,'dataFlag'=>1])->field($fields)->find();
 | |
|     }
 | |
|     /*获取用户分享列表*/
 | |
|     public function getShareList(){
 | |
|         $id=session('WST_USER.userId');
 | |
|         //普通用户分享列表
 | |
|         $userType=(int)input('userType');
 | |
|         //$userType=1;
 | |
|         if($userType=='0'){
 | |
|            $user_lists=Db::name('user_trees')->alias('a')->join('users b','b.userId=a.uid')
 | |
|                    ->where('a.pid',$id)->where('b.userType','0')->field('b.userId,b.loginName,b.createTime,b.userPhoto')->order('userId DESC')
 | |
|                    ->paginate(input('pagesize/d'))->toArray();
 | |
|            if(empty($user_lists)){
 | |
|                 exit(jsonReturn('暂无分享用户',0));
 | |
|            }else{
 | |
|                 foreach ($user_lists['Rows'] as &$v) {
 | |
|                     if(!Db::name('log_user_logins')->where(['userId'=>$v['userId'],'loginSrc'=>3])->field('userId')->find()){
 | |
|                         $v['isLogin'] = 0;
 | |
|                     }else{
 | |
|                         $v['isLogin'] = 1;
 | |
|                     }
 | |
|                 }
 | |
|                 exit(json_encode($user_lists));
 | |
|            }
 | |
| 
 | |
|         }elseif ($userType=='1') {
 | |
|           $merchants_lists=Db::name('user_trees')->alias('a')->join('users b','b.userId=a.uid')
 | |
|           ->where('a.pid',$id)->where('b.userType','1')->field('b.userId,b.loginName,b.createTime,b.userPhoto')->order('userId DESC')
 | |
|           ->paginate(input('pagesize/d'))->toArray();
 | |
| 
 | |
|           if(empty($merchants_lists)){
 | |
|                 exit(jsonReturn('暂无分享商家',0));
 | |
|            }else{
 | |
|                 foreach ($merchants_lists['Rows'] as &$v) {
 | |
|                     if(!Db::name('log_user_logins')->where(['userId'=>$v['userId'],'loginSrc'=>3])->field('userId')->find()){
 | |
|                         $v['isLogin'] = 0;
 | |
|                     }else{
 | |
|                         $v['isLogin'] = 1;
 | |
|                     }
 | |
|                 }
 | |
|                 exit(json_encode($merchants_lists));
 | |
|            }
 | |
|         }else{
 | |
|            exit(jsonReturn('请输入有效类型!',-1));
 | |
|         }
 | |
|     }
 | |
|     /*获取用户分享信息*/
 | |
|     public function getShareInfo(){
 | |
|         $userId=session('WST_USER.userId');
 | |
|         //普通用户分享列表
 | |
|         $userType=(int)input('userType');
 | |
|         if(in_array($userType, [0,1])){
 | |
|             $sid=(int)input('sid');
 | |
|             $data['ect']=Db::name('user_reward')->alias('r')
 | |
|                                 ->join('__ORDERS__ o','o.orderId=r.orderId')
 | |
|                                 ->where(['r.userId'=>$userId,'r.sid'=>$sid,'r.isSeller'=>$userType,'r.payType'=>1])
 | |
|                                // ->group('r.orderId')
 | |
|                                 ->field('SUM(o.realTotalMoney) order_num,SUM(r.rewardNum) reward_num')
 | |
|                                 ->find();
 | |
|              $data['money']=Db::name('user_reward')->alias('r')
 | |
|                                 ->join('__ORDERS__ o','o.orderId=r.orderId')
 | |
|                                 ->where(['r.userId'=>$userId,'r.sid'=>$sid,'r.isSeller'=>$userType,'r.payType'=>2])
 | |
|                                // ->group('r.orderId')
 | |
|                                 ->field('SUM(o.realTotalMoney) order_num,SUM(r.rewardNum) reward_num')
 | |
|                                 ->find();
 | |
|             exit(json_encode($data));
 | |
|         }else{
 | |
|            exit(jsonReturn('请输入有效类型!',-1));
 | |
|         }
 | |
|     }
 | |
|     function getUserStatusName($userStatus){
 | |
|         $statusName = '禁用';
 | |
|         switch($userStatus){
 | |
|             case 1:
 | |
|                 $statusName = '正常';
 | |
|                 break;
 | |
|         }
 | |
|         return $statusName;
 | |
|     }
 | |
|     function getUserLevelName($userLevel){
 | |
|         $levelName = '普通用户';
 | |
|         switch($userLevel){
 | |
|             case 1:
 | |
|                 $levelName = '商户';
 | |
|                 break;
 | |
|             case 2:
 | |
|                 $levelName = '商超';
 | |
|                 break;
 | |
|             case 3:
 | |
|                 $levelName = '商厦';
 | |
|                 break;
 | |
|             case 4:
 | |
|                 $levelName = '商都';
 | |
|                 break;
 | |
|         }
 | |
|         return $levelName;
 | |
|     }
 | |
|     function addUserVouchersSummary($expectedProductNum,$expectedCouponsNum){
 | |
|         
 | |
|     }
 | |
| }
 |