| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448 |
- <?php
- namespace App\Model;
- use PhalApi\Model\NotORMModel as NotORM;
- class Login extends NotORM {
-
- protected $fields='id,user_nickname,avatar,avatar_thumb,sex,signature,coin,user_status,login_type,province,city,area,birthday,last_login_time,code,age,mobile';
- /* 会员登录 */
- public function userLogin($user_login,$source,$mobileid) {
- $info1=\PhalApi\DI()->notorm->user
- ->select($this->fields)
- ->where('user_login=? and user_type="1"',$user_login)
- ->fetchOne();
- if($info1){
- return 1004;
- }
-
- $info=\PhalApi\DI()->notorm->user
- ->select($this->fields)
- ->where('user_login=? and user_type="2"',$user_login)
- ->fetchOne();
- $now=time();
- $nowYear=date("Y",$now);
- if(!$info){
- //获取vip
- $from_ip= ip2long($_SERVER["REMOTE_ADDR"]);
- //判断是否超过后台的配置数
- $checklimit=\App\checkRegIpLimit($mobileid,$from_ip);
-
- if($checklimit){
- return 1001;
- }
- $birthdayYear=2000;
-
- //新注册该用户
- $user_pass='qwe123';
- $user_pass=\App\setPass($user_pass);
- $user_login=$user_login;
- $nickname=\PhalApi\T('手机用户').substr($user_login,-4);
-
- $avatar='/default.png';
- $avatar_thumb='/default_thumb.png';
- $code=$this->createCode();
-
-
- //注册奖励
- $configpri=\App\getConfigPri();
- $reg_reward=$configpri['reg_reward'];
-
-
-
- $data=array(
- 'user_login' => $user_login,
- 'user_nickname' =>$nickname,
- 'user_pass' =>$user_pass,
- 'signature' =>\PhalApi\T('这家伙很懒,什么都没留下'),
- 'avatar' =>$avatar,
- 'avatar_thumb' =>$avatar_thumb,
- 'bg_img' =>$avatar,
- 'last_login_ip' =>$_SERVER['REMOTE_ADDR'],
- 'create_time' => time(),
- 'user_status' => 1,
- "user_type"=>2,//会员
- "code"=>$code,
- "coin"=>$reg_reward,
- "age"=>$nowYear-$birthdayYear,
- "birthday"=>'2000-01-01',
- "mobile"=>$user_login,
- "login_type"=>'phone',
- "ip"=>$from_ip,
- "mobileid"=>$mobileid,
- "is_firstlogin"=>'1'
- );
- if($source){
- $data['source']=$source;
- }
-
- $rs=\PhalApi\DI()->notorm->user->insert($data);
-
- //注册奖励写入消费记录
- $reg_data=array(
- 'type'=>'income',
- 'action'=>'reg_reward',
- 'uid'=>$rs['id'],
- 'touid'=>$rs['id'],
- 'totalcoin'=>$reg_reward,
- 'addtime'=>time()
- );
- \App\setCoinRecord($reg_data);
-
- $info['id']=$rs['id'];
- $info['user_nickname']=$data['user_nickname'];
- $info['avatar']=\App\get_upload_path($data['avatar']);
- $info['avatar_thumb']=\App\get_upload_path($data['avatar_thumb']);
- $info['sex']='2';
- $info['signature']=$data['signature'];
- $info['coin']=$reg_reward;
- $info['login_type']=$data['login_type'];
- $info['province']='';
- $info['city']='';
- $info['birthday']='';
- $info['last_login_time']='';
- $info['code']=$code;
- $info['age']="0";
- $info['mobile']=$user_login;
- $info['isreg']='1'; //此参数结合后台配置参数agent_must(邀请码是否必填),如果邀请码非必填时,只有在此参数=1时app端才会弹窗显示邀请码
- $info['hometown']='';
-
- }else{
- //重新计算用户的年龄
- $month=date("m",strtotime($info['birthday']));
- $nowMonth=date("m",$now);
- if($nowMonth>=$month){
- $cha=0;
- }else{
- $cha=1;
- }
- $birthdayYear=date("Y",strtotime($info['birthday']));
- $age=$nowYear-$birthdayYear-$cha;
- \PhalApi\DI()->notorm->user->where("id=?",$info['id'])->update(array("age"=>$age));
- if($info['user_status']=='0'){
- return 1002;
- }
- if($info['user_status']=='3'){
- return 1003;
- }
- unset($info['user_status']);
-
-
-
- $info['avatar']=\App\get_upload_path($info['avatar']);
- $info['avatar_thumb']=\App\get_upload_path($info['avatar_thumb']);
- $info['isreg']='0'; //此参数结合后台配置参数agent_must(邀请码是否必填),如果邀请码非必填时,只有在此参数=1时app端才会弹窗显示邀请码
- $info['hometown']=$info['province'].$info['city'].$info['area'];
- }
- $token=md5(md5($info['id'].$user_login.time()));
- $info['token']=$token;
- $this->updateToken($info['id'],$token);
- $usersign=\App\txImUserSign($info['id']);
- $info['usersign']=$usersign;
- $cache=array("token_".$info['id'],"userinfo_".$info['id']);
- \App\delcache($cache);
-
- return $info;
- }
-
- /* 第三方会员登录 */
- public function userLoginByThird($openid,$type,$nickname,$avatar,$source,$mobileid) {
- $info=\PhalApi\DI()->notorm->user
- ->select($this->fields)
- ->where('openid=? and login_type=? and user_type="2"',$openid,$type)
- ->fetchOne();
- $configpri=\App\getConfigPri();
- $now=time();
- $nowYear=date("Y",$now);
- if(!$info){
- //获取vip
- $from_ip= ip2long($_SERVER["REMOTE_ADDR"]);
- //判断是否超过后台的配置数
- $checklimit=\App\checkRegIpLimit($mobileid,$from_ip);
-
- if($checklimit){
- return 1001;
- }
- /* 注册 */
- $birthdayYear=2000;
- $user_pass='qwe123';
- $user_pass=\App\setPass($user_pass);
- $user_login=$type.'_'.time().rand(100,999);
- if(!$nickname){
- $nickname=$type.'用户-'.substr($openid,-4);
- }else{
- $nickname=urldecode($nickname);
- }
- if(!$avatar){
- $avatar='/default.png';
- $avatar_thumb='/default_thumb.png';
- }else{
- $avatar=urldecode($avatar);
- $avatar_thumb=$avatar;
- }
- $code=$this->createCode();
-
- //注册奖励
- $configpri=\App\getConfigPri();
- $reg_reward=$configpri['reg_reward'];
-
-
- $data=array(
- 'user_login' => $user_login,
- 'user_nickname' =>$nickname,
- 'user_pass' =>$user_pass,
- 'signature' =>'这家伙很懒,什么都没留下',
- 'avatar' =>$avatar,
- 'avatar_thumb' =>$avatar_thumb,
- 'bg_img'=>$avatar,
- 'last_login_ip' =>$_SERVER['REMOTE_ADDR'],
- 'create_time' => time(),
- 'user_status' => 1,
- 'openid' => $openid,
- 'login_type' => $type,
- "user_type"=>2,//会员
- "code"=>$code,
- "age"=>$nowYear-$birthdayYear,
- "birthday"=>'2000-01-01',
- "coin"=>$reg_reward,
- "ip"=>$from_ip,
- "mobileid"=>$mobileid
- );
- if($source){
- $data['source']=$source;
- }
-
- $rs=\PhalApi\DI()->notorm->user->insert($data);
- //注册奖励写入消费记录
- $reg_data=array(
- 'type'=>'income',
- 'action'=>'reg_reward',
- 'uid'=>$rs['id'],
- 'touid'=>$rs['id'],
- 'totalcoin'=>$reg_reward,
- 'addtime'=>time()
- );
- \App\setCoinRecord($reg_data);
-
-
- $info['id']=$rs['id'];
- $info['user_nickname']=$data['user_nickname'];
- $info['avatar']=\App\get_upload_path($data['avatar']);
- $info['avatar_thumb']=\App\get_upload_path($data['avatar_thumb']);
- $info['sex']='2';
- $info['signature']=$data['signature'];
- $info['coin']=$reg_reward;
- $info['login_type']=$data['login_type'];
- $info['province']='';
- $info['city']='';
- $info['birthday']='';
- $info['consumption']='0';
- $info['user_status']=1;
- $info['last_login_time']='';
- $info['isreg']='1'; //此参数结合后台配置参数agent_must(邀请码是否必填),如果邀请码非必填时,只有在此参数=1时app端才会弹窗显示邀请码
- }else{
- if($info['user_status']=='0'){
- return 1002;
- }
- if($info['user_status']=='3'){
- return 1003;
- }
- //重新计算用户的年龄
- $month=date("m",strtotime($info['birthday']));
- $nowMonth=date("m",$now);
- if($nowMonth>=$month){
- $cha=0;
- }else{
- $cha=1;
- }
- $birthdayYear=date("Y",strtotime($info['birthday']));
- $age=$nowYear-$birthdayYear-$cha;
- \PhalApi\DI()->notorm->user->where("id=?",$info['id'])->update(array("age"=>$age));
- $info['isreg']='0'; //此参数结合后台配置参数agent_must(邀请码是否必填),如果邀请码非必填时,只有在此参数=1时app端才会弹窗显示邀请码
- }
-
-
- unset($info['user_status']);
- unset($info['last_login_time']);
-
- $token=md5(md5($info['id'].$openid.time()));
-
- $info['token']=$token;
- $info['avatar']=\App\get_upload_path($info['avatar']);
- $info['avatar_thumb']=\App\get_upload_path($info['avatar_thumb']);
-
- $this->updateToken($info['id'],$token);
- $usersign=\App\txImUserSign($info['id']);
- $info['usersign']=$usersign;
-
- $cache=array("token_".$info['id'],"userinfo_".$info['id']);
- \App\delcache($cache);
- return $info;
- }
-
- /* 更新token 登陆信息 */
- public function updateToken($uid,$token) {
- $expiretime=time()+60*60*24*300;
- $nowtime=time();
-
- \PhalApi\DI()->notorm->user
- ->where('id=?',$uid)
- ->update(array('last_login_time' => time(), "last_login_ip"=>$_SERVER['REMOTE_ADDR'] ));
- $isok=\PhalApi\DI()->notorm->user_token
- ->where('user_id=?',$uid)
- ->update(array("token"=>$token, "expire_time"=>$expiretime ,'create_time' => $nowtime ));
- if(!$isok){
- \PhalApi\DI()->notorm->user_token
- ->insert(array("user_id"=>$uid,"token"=>$token, "expire_time"=>$expiretime ,'create_time' => $nowtime ));
- }
- $token_info=array(
- 'uid'=>$uid,
- 'token'=>$token,
- 'expire_time'=>$expiretime,
- );
- \App\setcaches("token_".$uid,$token_info);
- return 1;
- }
-
- /* 生成邀请码 */
- public function createCode(){
- $code = 'ABCDEFGHIJKLMNPQRSTUVWXYZ';
- $rand = $code[rand(0,25)]
- .strtoupper(dechex(date('m')))
- .date('d').substr(time(),-5)
- .substr(microtime(),2,5)
- .sprintf('%02d',rand(0,99));
- for(
- $a = md5( $rand, true ),
- $s = '123456789ABCDEFGHIJKLMNPQRSTUV',
- $d = '',
- $f = 0;
- $f < 6;
- $g = ord( $a[ $f ] ),
- $d .= $s[ ( $g ^ ord( $a[ $f + 6 ] ) ) - $g & 0x1F ],
- $f++
- );
- if(mb_strlen($d)==6){
- $oneinfo=\PhalApi\DI()->notorm->user
- ->select("id")
- ->where('code=?',$d)
- ->fetchOne();
- if(!$oneinfo){
- return $d;
- }
- }
- $d=$this->createCode();
- return $d;
- }
- //获取注销账号条件
- public function getCancelCondition($uid){
- $res=array('list'=>array(),'can_cancel'=>'0');
- $list=array(
- '0'=>array(
- 'title'=>\PhalApi\T('1、账号内无大额未消费或未提现的财产'),
- 'content'=>\PhalApi\T('你账号内无未结清的欠款、资金和虚拟权益,无正在处理的提现记录;注销后,账户中的虚拟权益等将作废无法恢复。'),
- 'is_ok'=>'0'
- ),
-
- );
- //获取用户的映票、钻石、余额
- $userinfo=\PhalApi\DI()->notorm->user->where("id=?",$uid)->select("coin,votes")->fetchOne();
- //获取用户映票提现未处理记录
- $votes_cashlist=\PhalApi\DI()->notorm->user_cashrecord->where("uid=? and status=0",$uid)->fetchAll();
- //钻石小于100,映票小于100,余额为0
- if($userinfo['coin']<100 && $userinfo['votes']<100 && !$votes_cashlist ){
- $list[0]['is_ok']='1';
- }
- if($list[0]['is_ok']==1){
- $res['can_cancel']='1';
- }
- $res['list']=$list;
- return $res;
- }
- //注销账号
- public function cancelAccount($uid){
-
- $condition=$this->getCancelCondition($uid);
- if(!$condition['can_cancel']){
- return 1001;
- }
- //修改用户昵称
- \PhalApi\DI()->notorm->user->where("id=?",$uid)->update(array('user_nickname'=>'用户已注销','user_status'=>3));
- //未审核的视频改为拒绝
- \PhalApi\DI()->notorm->user_video->where("uid=? and status=0",$uid)->update(array('status'=>2));
- //上架的视频改为下架
- \PhalApi\DI()->notorm->user_video->where("uid=? and status=1 and isdel=0",$uid)->update(array('isdel'=>1));
- //视频绑定的商品下架
- \PhalApi\DI()->notorm->shop_goods->where("uid=?",$uid)->update(array("status"=>'-1'));
- //删除粉丝和关注
- \PhalApi\DI()->notorm->user_attention->where("uid=? or touid=?",$uid,$uid)->delete();
- \App\delcache("userinfo_".$uid);
- return 1;
- }
- }
|