| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350 | 
							- <?php
 
- namespace App\Module;
 
- use App\Model\DBCache;
 
- use DB;
 
- use Request;
 
- use Session;
 
- /**
 
-  * Class Users
 
-  * @package App\Module
 
-  */
 
- class Users
 
- {
 
-     /**
 
-      * 注册会员
 
-      * @param $username
 
-      * @param $userpass
 
-      * @param array $other
 
-      * @return array
 
-      */
 
-     public static function reg($username, $userpass, $other = [])
 
-     {
 
-         //用户名
 
-         if (strlen($username) < 2) {
 
-             return Base::retError('用户名不可以少于2个字符!');
 
-         } elseif (strlen($username) > 16) {
 
-             return Base::retError('用户名最多只能设置16个字符!');
 
-         }
 
-         if (!preg_match('/^[A-Za-z0-9_\x{4e00}-\x{9fa5}]+$/u', $username)) {
 
-             return Base::retError('用户名由2-16位数字或字母、汉字、下划线组成!');
 
-         }
 
-         if (Users::username2id($username) > 0) {
 
-             return Base::retError('用户名已存在!');
 
-         }
 
-         //密码
 
-         if (strlen($userpass) < 6) {
 
-             return Base::retError('密码设置不能小于6位数!');
 
-         } elseif (strlen($userpass) > 32) {
 
-             return Base::retError('密码最多只能设置32位数!');
 
-         }
 
-         //开始注册
 
-         $encrypt = Base::generatePassword(6);
 
-         $inArray = [
 
-             'encrypt' => $encrypt,
 
-             'username' => $username,
 
-             'userpass' => Base::md52($userpass, $encrypt),
 
-             'regip' => Base::getIp(),
 
-             'regdate' => Base::time()
 
-         ];
 
-         if ($other) {
 
-             $inArray = array_merge($inArray, $other);
 
-         }
 
-         DB::table('users')->insert($inArray);
 
-         $user = Base::DBC2A(DB::table('users')->where('username', $username)->first());
 
-         if (empty($user)) {
 
-             return Base::retError('注册失败,请稍后再试。');
 
-         }
 
-         Users::AZUpdate($user['id']);
 
-         return Base::retSuccess('success', $user);
 
-     }
 
-     /**
 
-      * 临时身份标识
 
-      * @param int $length
 
-      * @return mixed|string
 
-      */
 
-     public static function tmpID($length = 8)
 
-     {
 
-         if (strlen(Request::input("tmpid")) == $length) {
 
-             return Request::input("tmpid");
 
-         }
 
-         $tmpID = Session::get('user::tmpID');
 
-         if (strlen($tmpID) != $length) {
 
-             $tmpID = Base::generatePassword($length);
 
-             Session::put('user::tmpID', $tmpID);
 
-         }
 
-         return $tmpID;
 
-     }
 
-     /**
 
-      * id获取用户名
 
-      * @param $id
 
-      * @return mixed
 
-      */
 
-     public static function id2username($id) {
 
-         return DB::table('users')->where('id', intval($id))->value('username');
 
-     }
 
-     /**
 
-      * 用户名获取id
 
-      * @param $username
 
-      * @return mixed
 
-      */
 
-     public static function username2id($username) {
 
-         return intval(DB::table('users')->where('username', $username)->value('id'));
 
-     }
 
-     /**
 
-      * token获取会员ID
 
-      * @return int
 
-      */
 
-     public static function token2userid()
 
-     {
 
-         $authorization = Base::getToken();
 
-         $id = 0;
 
-         if ($authorization) {
 
-             list($id, $username, $encrypt, $timestamp) = explode("@", base64_decode($authorization) . "@@@@");
 
-         }
 
-         return intval($id);
 
-     }
 
-     /**
 
-      * token获取会员手机号
 
-      * @return int
 
-      */
 
-     public static function token2username()
 
-     {
 
-         $authorization = Base::getToken();
 
-         $username = '';
 
-         if ($authorization) {
 
-             list($id, $username, $encrypt, $timestamp) = explode("@", base64_decode($authorization) . "@@@@");
 
-         }
 
-         return Base::isMobile($username) ? $username : '';
 
-     }
 
-     /**
 
-      * token获取encrypt
 
-      * @return mixed|string
 
-      */
 
-     public static function token2encrypt()
 
-     {
 
-         $authorization = Base::getToken();
 
-         $encrypt = '';
 
-         if ($authorization) {
 
-             list($id, $username, $encrypt, $timestamp) = explode("@", base64_decode($authorization) . "@@@@");
 
-         }
 
-         return $encrypt ?: '';
 
-     }
 
-     /**
 
-      * 用户身份认证(获取用户信息)
 
-      * @return array|mixed
 
-      */
 
-     public static function auth()
 
-     {
 
-         global $_A;
 
-         if (isset($_A["__static_auth"])) {
 
-             return $_A["__static_auth"];
 
-         }
 
-         $authorization = Base::getToken();
 
-         if ($authorization) {
 
-             list($id, $username, $encrypt, $timestamp) = explode("@", base64_decode($authorization) . "@@@@");
 
-             if (intval($id) > 0 && intval($timestamp) + 2592000 > Base::time()) {
 
-                 $userinfo = DB::table('users')->where(['id' => $id, 'username' => $username, 'encrypt' => $encrypt])->first();
 
-                 Base::coll2array($userinfo);
 
-                 if ($userinfo['token']) {
 
-                     $upArray = [];
 
-                     if (Base::getIp() && $userinfo['lineip'] != Base::getIp()) {
 
-                         $upArray['lineip'] = Base::getIp();
 
-                     }
 
-                     if ($userinfo['linedate'] + 30 < Base::time()) {
 
-                         $upArray['linedate'] = Base::time();
 
-                     }
 
-                     if ($upArray) {
 
-                         DB::table('users')->where('id', $userinfo['id'])->update($upArray);
 
-                     }
 
-                     return $_A["__static_auth"] = Users::retInfo($userinfo);
 
-                 }
 
-             }
 
-         }
 
-         return $_A["__static_auth"] = false;
 
-     }
 
-     /**
 
-      * 用户身份认证(获取用户信息)
 
-      * @return array|mixed
 
-      */
 
-     public static function authE()
 
-     {
 
-         $user = Users::auth();
 
-         if (!$user) {
 
-             $authorization = Base::getToken();
 
-             if ($authorization) {
 
-                 return Base::retError('身份已失效,请重新登录!', [], -1);
 
-             } else {
 
-                 return Base::retError('请登录后继续...', [], -1);
 
-             }
 
-         }
 
-         return Base::retSuccess("auth", $user);
 
-     }
 
-     /**
 
-      * 生成token
 
-      * @param $userinfo
 
-      * @return bool|string
 
-      */
 
-     public static function token($userinfo)
 
-     {
 
-         return base64_encode($userinfo['id'] . '@' . $userinfo['username'] . '@' . $userinfo['encrypt'] . '@' . Base::time() . '@' . Base::generatePassword(6));
 
-     }
 
-     /**
 
-      * 判断用户权限(身份)
 
-      * @param $identity
 
-      * @return array
 
-      */
 
-     public static function identity($identity)
 
-     {
 
-         $user = Users::auth();
 
-         if (is_array($user['identity'])
 
-             && in_array($identity, $user['identity'])) {
 
-             return Base::retSuccess("权限通过。");
 
-         }
 
-         return Base::retError("权限不足!");
 
-     }
 
-     /**
 
-      * 判断用户权限(身份)
 
-      * @param $identity
 
-      * @param $userIdentity
 
-      * @return bool
 
-      */
 
-     public static function identityRaw($identity, $userIdentity)
 
-     {
 
-         $userIdentity = is_array($userIdentity) ? $userIdentity : explode(",", trim($userIdentity, ","));
 
-         return $identity && in_array($identity, $userIdentity);
 
-     }
 
-     /**
 
-      * 筛选用户信息
 
-      * @param $userinfo
 
-      * @return mixed
 
-      */
 
-     public static function retInfo($userinfo)
 
-     {
 
-         //是否设置密码
 
-         if (!isset($userinfo['setpass'])) {
 
-             $userinfo['setpass'] = $userinfo['userpass'] ? 1 : 0;
 
-         }
 
-         //
 
-         $userinfo['id'] = intval($userinfo['id']);
 
-         $userinfo['changepass'] = intval($userinfo['changepass']);
 
-         $userinfo['setting'] = Base::string2array($userinfo['setting']);
 
-         $userinfo['userimg'] = self::userimg($userinfo['userimg']);
 
-         $userinfo['identity'] = is_array($userinfo['identity']) ? $userinfo['identity'] : explode(",", trim($userinfo['identity'], ","));
 
-         unset($userinfo['encrypt']);
 
-         unset($userinfo['userpass']);
 
-         return $userinfo;
 
-     }
 
-     /**
 
-      * userid 获取 基本信息
 
-      * @param int $userid           会员ID
 
-      * @return array
 
-      */
 
-     public static function userid2basic($userid)
 
-     {
 
-         if (empty($userid)) {
 
-             return [];
 
-         }
 
-         $fields = ['id AS userid', 'username', 'nickname', 'userimg', 'profession'];
 
-         $userInfo = DBCache::table('users')->where('id', $userid)->select($fields)->cacheMinutes(1)->first();
 
-         if ($userInfo) {
 
-             $userInfo['userimg'] = Users::userimg($userInfo['userimg']);
 
-         }
 
-         return $userInfo ?: [];
 
-     }
 
-     /**
 
-      * username 获取 基本信息
 
-      * @param string $username           用户名
 
-      * @param bool $clearCache           清理缓存
 
-      * @return array
 
-      */
 
-     public static function username2basic($username, $clearCache = false)
 
-     {
 
-         if (empty($username)) {
 
-             return [];
 
-         }
 
-         $fields = ['id AS userid', 'username', 'nickname', 'userimg', 'profession'];
 
-         $builder = DBCache::table('users')->where('username', $username)->select($fields)->cacheMinutes(1);
 
-         if ($clearCache) {
 
-             $builder->removeCache()->first();
 
-             return [];
 
-         } else {
 
-             $userInfo = $builder->first();
 
-             if ($userInfo) {
 
-                 $userInfo['userimg'] = Users::userimg($userInfo['userimg']);
 
-             }
 
-             return $userInfo ?: [];
 
-         }
 
-     }
 
-     /**
 
-      * 获取会员昵称
 
-      * @param $username
 
-      * @return mixed
 
-      */
 
-     public static function nickname($username)
 
-     {
 
-         $info = self::username2basic($username);
 
-         if (empty($info)) {
 
-             return $username;
 
-         }
 
-         return $info['nickname'] ?: $info['username'];
 
-     }
 
-     /**
 
-      * 用户头像,不存在时返回默认
 
-      * @param string|array $params 头像地址 或 会员用户名
 
-      * @return \Illuminate\Contracts\Routing\UrlGenerator|string
 
-      */
 
-     public static function userimg($params) {
 
-         if (is_array($params)) {
 
-             foreach ($params as $key => $val) {
 
-                 if (is_array($val)) {
 
-                     $val['userimg'] = self::userimg($val['userimg'] ?: $val['username']);
 
-                 } else {
 
-                     $val = self::userimg($val);
 
-                 }
 
-                 $params[$key] = $val;
 
-             }
 
-             return $params;
 
-         }
 
-         if (!Base::strExists($params, '.')) {
 
-             if (empty($params)) {
 
-                 $params = "";
 
-             } else {
 
-                 $userInfo = self::username2basic($params);
 
-                 $params = $userInfo['userimg'];
 
-             }
 
-         }
 
-         return $params ? Base::fillUrl($params) : url('images/other/avatar.png');
 
-     }
 
-     /**
 
-      * 更新首字母
 
-      * @param $userid
 
-      */
 
-     public static function AZUpdate($userid) {
 
-         $row = Base::DBC2A(DB::table('users')->where('id', $userid)->select(['username', 'nickname'])->first());
 
-         if ($row) {
 
-             DB::table('users')->where('id', $userid)->update([
 
-                 'az' => Base::getFirstCharter($row['nickname'] ?: $row['username'])
 
-             ]);
 
-         }
 
-     }
 
- }
 
 
  |