SessionApp.php 4.2 KB

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