Login.php 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. <?php
  2. // +—————————————————————————————————————————————————————————————————————
  3. // | Created by Yunbao
  4. // +—————————————————————————————————————————————————————————————————————
  5. // | Copyright (c) 2013~2022 http://www.yunbaokj.com All rights reserved.
  6. // +—————————————————————————————————————————————————————————————————————
  7. // | Author: https://gitee.com/yunbaokeji
  8. // +—————————————————————————————————————————————————————————————————————
  9. // | Date: 2022-02-17
  10. // +—————————————————————————————————————————————————————————————————————
  11. class Model_Login extends PhalApi_Model_NotORM {
  12. protected $fields='id,user_nicename,avatar,avatar_thumb,sex,signature,coin,consumption,votestotal,province,city,birthday,user_status,login_type,last_login_time,location';
  13. /* 会员登录 */
  14. public function userLogin($user_login,$user_pass) {
  15. $user_pass=setPass($user_pass);
  16. $info=DI()->notorm->user
  17. ->select($this->fields.',user_pass')
  18. ->where('user_login=? and user_type="2"',$user_login)
  19. ->fetchOne();
  20. if(!$info || $info['user_pass'] != $user_pass){
  21. return 1001;
  22. }
  23. unset($info['user_pass']);
  24. unset($info['user_status']);
  25. if($info['birthday']){
  26. $info['birthday']=date('Y-m-d',$info['birthday']);
  27. }else{
  28. $info['birthday']='';
  29. }
  30. $info['level']=getLevel($info['consumption']);
  31. $info['level_anchor']=getLevelAnchor($info['votestotal']);
  32. $token=md5(md5($info['id'].$user_login.time()));
  33. $info['token']=$token;
  34. $info['avatar']=get_upload_path($info['avatar']);
  35. $info['avatar_thumb']=get_upload_path($info['avatar_thumb']);
  36. $this->updateToken($info['id'],$token);
  37. return $info;
  38. }
  39. /* 会员注册 */
  40. public function userReg($user_login,$user_pass,$source) {
  41. $user_pass=setPass($user_pass);
  42. $configpri=getConfigPri();
  43. $reg_reward=$configpri['reg_reward'];
  44. $data=array(
  45. 'user_login' => $user_login,
  46. 'mobile' =>$user_login,
  47. 'user_nicename' =>'手机用户'.substr($user_login,-4),
  48. 'user_pass' =>$user_pass,
  49. 'signature' =>'这家伙很懒,什么都没留下',
  50. 'avatar' =>'/default.jpg',
  51. 'avatar_thumb' =>'/default_thumb.jpg',
  52. 'last_login_ip' =>$_SERVER['REMOTE_ADDR'],
  53. 'create_time' => time(),
  54. 'user_status' => 1,
  55. "user_type"=>2,//会员
  56. "source"=>$source,
  57. "coin"=>$reg_reward,
  58. );
  59. $isexist=DI()->notorm->user
  60. ->select('id')
  61. ->where('user_login=?',$user_login)
  62. ->fetchOne();
  63. if($isexist){
  64. return 1006;
  65. }
  66. $rs=DI()->notorm->user->insert($data);
  67. if(!$rs){
  68. return 1007;
  69. }
  70. $uid=$rs['id'];
  71. if($reg_reward>0){
  72. $insert=array("type"=>'1',"action"=>'11',"uid"=>$uid,"touid"=>$uid,"giftid"=>0,"giftcount"=>1,"totalcoin"=>$reg_reward,"showid"=>0,"addtime"=>time() );
  73. DI()->notorm->user_coinrecord->insert($insert);
  74. }
  75. return 1;
  76. }
  77. /* 找回密码 */
  78. public function userFindPass($user_login,$user_pass){
  79. $isexist=DI()->notorm->user
  80. ->select('id')
  81. ->where('user_login=? and user_type="2"',$user_login)
  82. ->fetchOne();
  83. if(!$isexist){
  84. return 1006;
  85. }
  86. $user_pass=setPass($user_pass);
  87. return DI()->notorm->user
  88. ->where('id=?',$isexist['id'])
  89. ->update(array('user_pass'=>$user_pass));
  90. }
  91. /* 第三方会员登录 */
  92. public function userLoginByThird($openid,$type,$nickname,$avatar,$source) {
  93. $info=DI()->notorm->user
  94. ->select($this->fields)
  95. ->where('openid=? and login_type=? ',$openid,$type)
  96. ->fetchOne();
  97. $configpri=getConfigPri();
  98. if(!$info){
  99. /* 注册 */
  100. $user_pass='yunbaokeji';
  101. $user_pass=setPass($user_pass);
  102. $user_login=$type.'_'.time().rand(100,999);
  103. if(!$nickname){
  104. $nickname=$type.'用户-'.substr($openid,-4);
  105. }else{
  106. $nickname=urldecode($nickname);
  107. }
  108. if(!$avatar){
  109. $avatar='/default.jpg';
  110. $avatar_thumb='/default_thumb.jpg';
  111. }else{
  112. $avatar=urldecode($avatar);
  113. $avatar_thumb=$avatar;
  114. }
  115. $reg_reward=$configpri['reg_reward'];
  116. $data=array(
  117. 'user_login' => $user_login,
  118. 'user_nicename' =>$nickname,
  119. 'user_pass' =>$user_pass,
  120. 'signature' =>'这家伙很懒,什么都没留下',
  121. 'avatar' =>$avatar,
  122. 'avatar_thumb' =>$avatar_thumb,
  123. 'last_login_ip' =>$_SERVER['REMOTE_ADDR'],
  124. 'create_time' => time(),
  125. 'user_status' => 1,
  126. 'openid' => $openid,
  127. 'login_type' => $type,
  128. "user_type"=>2,//会员
  129. "source"=>$source,
  130. "coin"=>$reg_reward,
  131. );
  132. $rs=DI()->notorm->user->insert($data);
  133. $uid=$rs['id'];
  134. if($reg_reward>0){
  135. $insert=array("type"=>'1',"action"=>'11',"uid"=>$uid,"touid"=>$uid,"giftid"=>0,"giftcount"=>1,"totalcoin"=>$reg_reward,"showid"=>0,"addtime"=>time() );
  136. DI()->notorm->user_coinrecord->insert($insert);
  137. }
  138. $info['id']=$uid;
  139. $info['user_nicename']=$data['user_nicename'];
  140. $info['avatar']=get_upload_path($data['avatar']);
  141. $info['avatar_thumb']=get_upload_path($data['avatar_thumb']);
  142. $info['sex']='2';
  143. $info['signature']=$data['signature'];
  144. $info['coin']='0';
  145. $info['login_type']=$data['login_type'];
  146. $info['province']='';
  147. $info['city']='';
  148. $info['birthday']='';
  149. $info['consumption']='0';
  150. $info['user_status']=1;
  151. $info['last_login_time']=0;
  152. }else{
  153. if($info['user_status']=='0'){
  154. return 1003;
  155. }
  156. // 更新头像
  157. if(!$avatar){
  158. $avatar='/default.jpg';
  159. $avatar_thumb='/default_thumb.jpg';
  160. $info['avatar']=$avatar;
  161. $info['avatar_thumb']=$avatar_thumb;
  162. }
  163. }
  164. unset($info['user_status']);
  165. $info['isreg']='0';
  166. if($info['last_login_time']==0 ){
  167. $info['isreg']='1';
  168. }
  169. if($info['birthday']){
  170. $info['birthday']=date('Y-m-d',$info['birthday']);
  171. }else{
  172. $info['birthday']='';
  173. }
  174. unset($info['last_login_time']);
  175. $info['level']=getLevel($info['consumption']);
  176. $info['level_anchor']=getLevelAnchor($info['votestotal']);
  177. $token=md5(md5($info['id'].$openid.time()));
  178. $info['token']=$token;
  179. $info['avatar']=get_upload_path($info['avatar']);
  180. $info['avatar_thumb']=get_upload_path($info['avatar_thumb']);
  181. $this->updateToken($info['id'],$token);
  182. return $info;
  183. }
  184. /* 更新token 登陆信息 */
  185. public function updateToken($uid,$token,$data=array()) {
  186. $nowtime=time();
  187. $expiretime=$nowtime+60*60*24*300;
  188. DI()->notorm->user
  189. ->where('id=?',$uid)
  190. ->update(array('last_login_time' => $nowtime, "last_login_ip"=>$_SERVER['REMOTE_ADDR'] ));
  191. $isok=DI()->notorm->user_token
  192. ->where('user_id=?',$uid)
  193. ->update(array("token"=>$token, "expire_time"=>$expiretime ,'create_time' => $nowtime ));
  194. if(!$isok){
  195. DI()->notorm->user_token
  196. ->insert(array("user_id"=>$uid,"token"=>$token, "expire_time"=>$expiretime ,'create_time' => $nowtime, ));
  197. }
  198. $token_info=array(
  199. 'uid'=>$uid,
  200. 'token'=>$token,
  201. 'expire_time'=>$expiretime,
  202. );
  203. setcaches("token_".$uid,$token_info);
  204. return 1;
  205. }
  206. }