UserService.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace App\Services;
  3. use App\Models\User;
  4. use Hashids\Hashids;
  5. class UserService
  6. {
  7. private static User $user;
  8. public function __construct(?User $user = null)
  9. {
  10. self::$user = $user ?? auth()->user();
  11. }
  12. public function getProfile(): array
  13. {
  14. $user = self::$user;
  15. return [
  16. 'id' => $user->id,
  17. 'nickname' => $user->nickname,
  18. 'account' => $user->username,
  19. 'port' => $user->port,
  20. 'passwd' => $user->passwd,
  21. 'uuid' => $user->vmess_id,
  22. 'transfer_enable' => $user->transfer_enable,
  23. 'u' => $user->u,
  24. 'd' => $user->d,
  25. 't' => $user->t,
  26. 'enable' => $user->enable,
  27. 'speed_limit' => $user->speed_limit,
  28. 'credit' => $user->credit,
  29. 'expired_at' => strtotime($user->expired_at),
  30. 'ban_time' => $user->ban_time,
  31. 'level' => $user->level_name,
  32. 'group' => $user->userGroup->name ?? null,
  33. 'last_login' => $user->last_login,
  34. 'reset_time' => $user->reset_date,
  35. 'invite_num' => $user->invite_num,
  36. 'status' => $user->status,
  37. 'invite_url' => $this->inviteURI(),
  38. ];
  39. }
  40. public function inviteURI(bool $isCode = false): string
  41. {
  42. $uid = self::$user->id;
  43. $affSalt = sysConfig('aff_salt');
  44. $aff = empty($affSalt) ? $uid : (new Hashids($affSalt, 8))->encode($uid);
  45. return $isCode ? $aff : sysConfig('website_url').route('register', ['aff' => $aff], false);
  46. }
  47. public function isActivePaying(): bool
  48. {
  49. return self::$user->orders()->active()->where('origin_amount', '>', 0)->exists();
  50. }
  51. }