SessionApp.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  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 = 'app2_';
  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. self::saveUKeys();
  54. if ($token) {
  55. $data['token'] = self::getSessionId();
  56. // todo 单点登录
  57. // $one = Config::getValueDefaultCache('login_only_one', false);
  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. *
  112. * @param $uid
  113. * @return null
  114. * @throws LogicException
  115. */
  116. static public function deleteUAll($uid = null)
  117. {
  118. return self::removeUKeys($uid);
  119. }
  120. /**
  121. * 保存用户 keys
  122. *
  123. * @return array
  124. * @throws LogicException
  125. */
  126. static public function saveUKeys($uid = null)
  127. {
  128. $uid = $uid ?? self::getUserId();
  129. $ukeys = \Illuminate\Support\Facades\Cache::get('ukeys' . $uid, []);
  130. $ukeys[] = self::getKey();
  131. // dump($ukeys);
  132. // dump($uid,$ukeys);
  133. \Illuminate\Support\Facades\Cache::set('ukeys' . $uid, $ukeys, static::$ttl);
  134. return $ukeys;
  135. }
  136. /**
  137. * 获取用户Keys
  138. *
  139. * @return array
  140. * @throws LogicException
  141. */
  142. public static function getUKeys($uid = null)
  143. {
  144. $uid = $uid ?? self::getUserId();
  145. $ukeys = \Illuminate\Support\Facades\Cache::get('ukeys' . $uid, []);
  146. // dump($uid,$ukeys);
  147. return $ukeys;
  148. }
  149. /**
  150. * 删除 用户Keys
  151. *
  152. * @param $uid
  153. * @return void
  154. * @throws LogicException
  155. */
  156. public static function removeUKeys($uid = null)
  157. {
  158. $uid = $uid ?? self::getUserId();
  159. $ukeys = \Illuminate\Support\Facades\Cache::get('ukeys' . $uid, []);
  160. foreach ($ukeys as $k => $v) {
  161. \Illuminate\Support\Facades\Cache::delete($v);
  162. }
  163. \Illuminate\Support\Facades\Cache::delete('ukeys' . $uid);
  164. }
  165. static protected function getKey()
  166. {
  167. return static::$prefix . static::$session_id . date('W') . '_' . Version::VERSION;
  168. }
  169. }