2019-10-27 20:15:29 +08:00

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.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){
}
}