SessionApp.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <?php
  2. namespace App\Module\AppGame;
  3. use App\Module\Ulogic\Enum\RULE;
  4. use App\Module\Ulogic\Unit\User;
  5. use UCore\Exception\LogicException;
  6. use UCore\TokenSession;
  7. use UCore\Version;
  8. class SessionApp extends TokenSession
  9. {
  10. /**
  11. * 3600*24*7=86400*7=604800
  12. *
  13. * @var int $ttl 过去秒数 604800=7天
  14. */
  15. static $ttl = 1204800;
  16. const ID_KEY = 'user_id';
  17. public static $prefix = 'app_';
  18. /**
  19. * 获取当前用户的ID
  20. *
  21. * @return int
  22. * @throws LogicException
  23. */
  24. static public function getUserId(): int
  25. {
  26. // H::check();
  27. return (int)self::get(self::ID_KEY, 0);
  28. }
  29. /**
  30. * 设置登录
  31. *
  32. * @param User $user
  33. * @return User
  34. * @throws LogicException
  35. */
  36. static public function setLogin(\App\Module\User\Models\User $user, $token = false, $role = '')
  37. {
  38. // todo 不清楚作用
  39. // \App\Module\User\User::infoinfo($user->id, true);
  40. self::set(self::ID_KEY, $user->id);
  41. // todo 用户角色:是否社区长,后续补齐流程
  42. // if (!$role) {
  43. // $role = self::getRole($user);
  44. // }
  45. //
  46. // self::set('role', $role);
  47. $sData = self::get();
  48. // dd($sData,self::$session_id);
  49. $data = [
  50. 'user_id' => $user->id,
  51. 'role' => $role
  52. ];
  53. if ($token) {
  54. $data['token'] = self::getSessionId();
  55. // todo 单点登录
  56. // $one = Config::getValueDefaultCache('login_only_one', false);
  57. self::saveUKeys();
  58. // if ($one) {
  59. // self::deleteOnlyOne();
  60. // }
  61. }
  62. return $data;
  63. }
  64. /**
  65. * 退出登录
  66. *
  67. * @return void
  68. * @throws LogicException
  69. */
  70. static public function logout()
  71. {
  72. self::set(self::ID_KEY, 0);
  73. }
  74. static public function setData($key, $value)
  75. {
  76. self::set($key, $value);
  77. }
  78. static public function getData($key, $value = null)
  79. {
  80. return self::get($key, $value);
  81. }
  82. /**
  83. * 获取角色
  84. *
  85. * @param User $user
  86. * @return int
  87. */
  88. static public function getRole(\App\Module\User\Models\User $user): RULE
  89. {
  90. return RULE::ROLE_USER;
  91. }
  92. /**
  93. * 删除其他 ,只剩最后一个
  94. *
  95. * @param $uid
  96. * @return void
  97. * @throws LogicException
  98. */
  99. static public function deleteOnlyOne($uid = null)
  100. {
  101. $uid = $uid ?? self::getUserId();
  102. $ukeys = \Illuminate\Support\Facades\Cache::get('ukeys' . $uid, []);
  103. $last = array_pop($ukeys);
  104. foreach ($ukeys as $k => $v) {
  105. \Illuminate\Support\Facades\Cache::delete($v);
  106. }
  107. \Illuminate\Support\Facades\Cache::set('ukeys' . $uid, [ $last ], static::$ttl);
  108. }
  109. /**
  110. * 删除用户的所有
  111. * @param $uid
  112. * @return null
  113. * @throws LogicException
  114. */
  115. static public function deleteUAll($uid = null)
  116. {
  117. return self::removeUKeys($uid);
  118. }
  119. /**
  120. * 保存用户 keys
  121. *
  122. * @return array
  123. * @throws LogicException
  124. */
  125. static public function saveUKeys($uid = null)
  126. {
  127. $uid = $uid ?? self::getUserId();
  128. $ukeys = \Illuminate\Support\Facades\Cache::get('ukeys' . $uid, []);
  129. $ukeys[] = self::getKey();
  130. // dump($ukeys);
  131. // dump($uid,$ukeys);
  132. \Illuminate\Support\Facades\Cache::set('ukeys' . $uid, $ukeys, static::$ttl);
  133. return $ukeys;
  134. }
  135. /**
  136. * 获取用户Keys
  137. *
  138. * @return array
  139. * @throws LogicException
  140. */
  141. public static function getUKeys($uid = null)
  142. {
  143. $uid = $uid ?? self::getUserId();
  144. $ukeys = \Illuminate\Support\Facades\Cache::get('ukeys' . $uid, []);
  145. // dump($uid,$ukeys);
  146. return $ukeys;
  147. }
  148. /**
  149. * 删除 用户Keys
  150. *
  151. * @param $uid
  152. * @return void
  153. * @throws LogicException
  154. */
  155. public static function removeUKeys($uid = null)
  156. {
  157. $uid = $uid ?? self::getUserId();
  158. $ukeys = \Illuminate\Support\Facades\Cache::get('ukeys' . $uid, []);
  159. foreach ($ukeys as $k => $v) {
  160. \Illuminate\Support\Facades\Cache::delete($v);
  161. }
  162. \Illuminate\Support\Facades\Cache::delete('ukeys' . $uid);
  163. }
  164. static protected function getKey()
  165. {
  166. return static::$prefix . static::$session_id . date('W'). '_' .Version::VERSION;
  167. }
  168. }