| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- <?php
- namespace App\Module\AppGame;
- use App\Module\Ulogic\Enum\RULE;
- use App\Module\Ulogic\Unit\User;
- use UCore\Exception\LogicException;
- use UCore\TokenSession;
- use UCore\Version;
- class SessionApp extends TokenSession
- {
- /**
- * 3600*24*7=86400*7=604800
- *
- * @var int $ttl 过去秒数 604800=7天
- */
- static $ttl = 1204800;
- const ID_KEY = 'user_id';
- public static $prefix = 'app2_';
- /**
- * 获取当前用户的ID
- *
- * @return int
- * @throws LogicException
- */
- static public function getUserId(): int
- {
- // H::check();
- return (int)self::get(self::ID_KEY, 0);
- }
- /**
- * 设置登录
- *
- * @param User $user
- * @return User
- * @throws LogicException
- */
- static public function setLogin(\App\Module\User\Models\User $user, $token = false, $role = '')
- {
- // todo 不清楚作用
- // \App\Module\User\User::infoinfo($user->id, true);
- self::set(self::ID_KEY, $user->id);
- // todo 用户角色:是否社区长,后续补齐流程
- // if (!$role) {
- // $role = self::getRole($user);
- // }
- //
- // self::set('role', $role);
- $sData = self::get();
- // dd($sData,self::$session_id);
- $data = [
- 'user_id' => $user->id,
- 'role' => $role
- ];
- self::saveUKeys();
- if ($token) {
- $data['token'] = self::getSessionId();
- // todo 单点登录
- // $one = Config::getValueDefaultCache('login_only_one', false);
- // if ($one) {
- // self::deleteOnlyOne();
- // }
- }
- return $data;
- }
- /**
- * 退出登录
- *
- * @return void
- * @throws LogicException
- */
- static public function logout()
- {
- self::set(self::ID_KEY, 0);
- }
- static public function setData($key, $value)
- {
- self::set($key, $value);
- }
- static public function getData($key, $value = null)
- {
- return self::get($key, $value);
- }
- /**
- * 获取角色
- *
- * @param User $user
- * @return int
- */
- static public function getRole(\App\Module\User\Models\User $user): RULE
- {
- return RULE::ROLE_USER;
- }
- /**
- * 删除其他 ,只剩最后一个
- *
- * @param $uid
- * @return void
- * @throws LogicException
- */
- static public function deleteOnlyOne($uid = null)
- {
- $uid = $uid ?? self::getUserId();
- $ukeys = \Illuminate\Support\Facades\Cache::get('ukeys' . $uid, []);
- $last = array_pop($ukeys);
- foreach ($ukeys as $k => $v) {
- \Illuminate\Support\Facades\Cache::delete($v);
- }
- \Illuminate\Support\Facades\Cache::set('ukeys' . $uid, [ $last ], static::$ttl);
- }
- /**
- * 删除用户的所有
- *
- * @param $uid
- * @return null
- * @throws LogicException
- */
- static public function deleteUAll($uid = null)
- {
- return self::removeUKeys($uid);
- }
- /**
- * 保存用户 keys
- *
- * @return array
- * @throws LogicException
- */
- static public function saveUKeys($uid = null)
- {
- $uid = $uid ?? self::getUserId();
- $ukeys = \Illuminate\Support\Facades\Cache::get('ukeys' . $uid, []);
- $ukeys[] = self::getKey();
- // dump($ukeys);
- // dump($uid,$ukeys);
- \Illuminate\Support\Facades\Cache::set('ukeys' . $uid, $ukeys, static::$ttl);
- return $ukeys;
- }
- /**
- * 获取用户Keys
- *
- * @return array
- * @throws LogicException
- */
- public static function getUKeys($uid = null)
- {
- $uid = $uid ?? self::getUserId();
- $ukeys = \Illuminate\Support\Facades\Cache::get('ukeys' . $uid, []);
- // dump($uid,$ukeys);
- return $ukeys;
- }
- /**
- * 删除 用户Keys
- *
- * @param $uid
- * @return void
- * @throws LogicException
- */
- public static function removeUKeys($uid = null)
- {
- $uid = $uid ?? self::getUserId();
- $ukeys = \Illuminate\Support\Facades\Cache::get('ukeys' . $uid, []);
- foreach ($ukeys as $k => $v) {
- \Illuminate\Support\Facades\Cache::delete($v);
- }
- \Illuminate\Support\Facades\Cache::delete('ukeys' . $uid);
- }
- static protected function getKey()
- {
- return static::$prefix . static::$session_id . date('W') . '_' . Version::VERSION;
- }
- }
|