User.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. /**
  3. * @copyright Copyright (c) 2017 https://www.sapixx.com All rights reserved.
  4. * @license Licensed (http://www.apache.org/licenses/LICENSE-2.0).
  5. * @author pillar<ltmn@qq.com>
  6. * 用户公众号登录Cookie事件处理
  7. */
  8. namespace app\common\event;
  9. use app\common\model\SystemMemberMiniapp;
  10. use think\facade\Cookie;
  11. use think\facade\Session;
  12. use think\facade\Request;
  13. use encrypter\Encrypter;
  14. use filter\Filter;
  15. class User{
  16. const session_scope = 'sapixx#com/user/scope'; //SESSION作用域
  17. const session_name = 'sapixx#com/user/value'; //SESSION值
  18. const key = 'sapixx#com@rXtvCz4E75Ai'; //加密秘钥
  19. /**
  20. * ##########################################
  21. * 判断管理员是否登录
  22. * @access public
  23. * @return boolean
  24. */
  25. public static function isLogin(){
  26. return Session::has(self::session_name,self::session_scope) ? true : false;
  27. }
  28. /**
  29. * 获取用户详细信息
  30. * @return boolean/array
  31. */
  32. public static function getUser(){
  33. if(self::isLogin()){
  34. $user = model('SystemUser')->where(['id' => self::getLogin('uid')])->find();
  35. if(empty($user)) return false;
  36. if($user['is_lock'] == 0){
  37. return $user;
  38. }
  39. }
  40. return false;
  41. }
  42. /**
  43. * 获取登录Session中保存的数据
  44. * @param string $key数组键名(user_id、username,ucode);
  45. * @return void
  46. */
  47. public static function getLogin(string $key = ''){
  48. if(self::isLogin()){
  49. $info = Session::get(self::session_name,self::session_scope);
  50. $login_info = json_decode(Encrypter::cpDecode($info,self::key),true);
  51. return empty($key) ? $login_info : $login_info[$key];
  52. }
  53. return false;
  54. }
  55. /**
  56. * 设置登录Session
  57. * @access public
  58. */
  59. public static function setLogin($param){
  60. $data = [
  61. 'uid' => $param['id'],
  62. 'nickname' => $param['nickname'],
  63. 'login_time' => time(),
  64. ];
  65. $key = Encrypter::cpEncode(json_encode($data),self::key);
  66. return Session::set(self::session_name,$key,self::session_scope);
  67. }
  68. /**
  69. * 退出Session
  70. * @access public
  71. */
  72. public static function setlogout(){
  73. return Session::clear(self::session_scope);
  74. }
  75. /**
  76. * ##########################################
  77. * 设置邀请码
  78. * @access public
  79. */
  80. public static function setUcode(){
  81. $ucode = Request::param('ucode');
  82. if(isset($ucode)){
  83. return Cookie::set('ucode',Filter::filter_escape($ucode),3600);
  84. }
  85. }
  86. /**
  87. * 获取邀请码
  88. * @access public
  89. */
  90. public static function getUcode(){
  91. if(Cookie::has('ucode')){
  92. return Cookie::get('ucode');
  93. }
  94. return false;
  95. }
  96. /**
  97. * 删除邀请码
  98. * @access public
  99. */
  100. public static function detUcode(){
  101. return Cookie::delete('ucode');
  102. }
  103. /**
  104. * 判断创始人,并读取后绑定的创始人的信息
  105. * @access public
  106. */
  107. public static function isFounder($miniapp_id){
  108. $miniapp = SystemMemberMiniapp::where(['id' => $miniapp_id])->field('uid')->find();
  109. if(empty($miniapp->user)){
  110. $data['user_id'] = 0;
  111. }else{
  112. $data['user_id'] = $miniapp->user->id;
  113. $data['invite_code'] = $miniapp->user->invite_code;
  114. $data['phone_uid'] = $miniapp->user->phone_uid;
  115. $data['invite_code'] = $miniapp->user->invite_code;
  116. $data['face'] = $miniapp->user->face;
  117. $data['nickname'] = $miniapp->user->nickname;
  118. $data['miniapp_uid'] = $miniapp->user->miniapp_uid;
  119. $data['official_uid'] = $miniapp->user->official_uid;
  120. $data['login_time'] = date('Y-m-d',$miniapp->user->login_time);
  121. }
  122. return (object)$data;
  123. }
  124. }