UserObserver.php 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. namespace App\Observers;
  3. use App\Components\Helpers;
  4. use App\Jobs\VNet\addUser;
  5. use App\Jobs\VNet\delUser;
  6. use App\Jobs\VNet\editUser;
  7. use App\Models\Node;
  8. use App\Models\User;
  9. use App\Models\UserSubscribe;
  10. use Arr;
  11. use DB;
  12. use Exception;
  13. use Log;
  14. class UserObserver
  15. {
  16. public function created(User $user): void
  17. {
  18. $subscribe = new UserSubscribe();
  19. $subscribe->user_id = $user->id;
  20. $subscribe->code = Helpers::makeSubscribeCode();
  21. $subscribe->save();
  22. $allowNodes = Node::userAllowNodes($user->group_id, $user->level)
  23. ->whereType(4)
  24. ->get();
  25. if ($allowNodes) {
  26. addUser::dispatchNow($user->id, $allowNodes);
  27. }
  28. }
  29. public function updated(User $user): void
  30. {
  31. $changes = $user->getChanges();
  32. $allowNodes = Node::userAllowNodes($user->group_id, $user->level)
  33. ->whereType(4)
  34. ->get();
  35. if ($allowNodes
  36. && Arr::exists($changes, 'level')
  37. || Arr::exists($changes, 'group_id')
  38. || Arr::exists($changes, 'port')
  39. || Arr::exists($changes, 'passwd')
  40. || Arr::exists($changes, 'speed_limit')
  41. || Arr::exists($changes, 'enable')) {
  42. editUser::dispatchNow($user, $allowNodes);
  43. }
  44. }
  45. public function deleting(User $user): void
  46. {
  47. try {
  48. DB::beginTransaction();
  49. // 邀请关系脱钩
  50. $user->invites()->delete();
  51. $user->invitees()->update(['inviter_id' => 0]);
  52. $user->commissionSettlements()->delete();
  53. $user->commissionLogs()->delete();
  54. $user->subscribe()->delete();
  55. $user->subscribeLogs()->delete();
  56. // 清理日志
  57. $user->orders()->delete();
  58. $user->payments()->delete();
  59. $user->onlineIpLogs()->delete();
  60. $user->ruleLogs()->delete();
  61. $user->tickets()->delete();
  62. $user->ticketReplies()->delete();
  63. $user->banedLogs()->delete();
  64. $user->creditLogs()->delete();
  65. $user->dailyDataFlows()->delete();
  66. $user->dataFlowLogs()->delete();
  67. $user->dataModifyLogs()->delete();
  68. $user->hourlyDataFlows()->delete();
  69. $user->loginLogs()->delete();
  70. $user->verify()->delete();
  71. DB::commit();
  72. } catch (Exception $e) {
  73. Log::error('删除用户相关信息错误:' . $e->getMessage());
  74. DB::rollBack();
  75. }
  76. }
  77. public function deleted(User $user): void
  78. {
  79. $allowNodes = Node::userAllowNodes($user->group_id, $user->level)
  80. ->whereType(4)
  81. ->get();
  82. if ($allowNodes) {
  83. delUser::dispatchNow($user->id, $allowNodes);
  84. }
  85. }
  86. }