UserObserver.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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)->whereType(4)->get();
  23. if ($allowNodes->isNotEmpty()) {
  24. addUser::dispatch($user->id, $allowNodes);
  25. }
  26. }
  27. public function updated(User $user): void
  28. {
  29. $changes = $user->getChanges();
  30. $allowNodes = Node::userAllowNodes($user->group_id, $user->level)->whereType(4)->get();
  31. if ($allowNodes->isNotEmpty() && Arr::hasAny($changes, ['level', 'group_id', 'port', 'passwd', 'speed_limit', 'enable'])) {
  32. editUser::dispatch($user, $allowNodes);
  33. }
  34. }
  35. public function deleting(User $user): void
  36. {
  37. try {
  38. DB::beginTransaction();
  39. // 邀请关系脱钩
  40. $user->invites()->delete();
  41. $user->invitees()->update(['inviter_id' => 0]);
  42. $user->commissionSettlements()->delete();
  43. $user->commissionLogs()->delete();
  44. $user->subscribe()->delete();
  45. $user->subscribeLogs()->delete();
  46. // 清理日志
  47. $user->orders()->delete();
  48. $user->payments()->delete();
  49. $user->onlineIpLogs()->delete();
  50. $user->ruleLogs()->delete();
  51. $user->tickets()->delete();
  52. $user->ticketReplies()->delete();
  53. $user->banedLogs()->delete();
  54. $user->creditLogs()->delete();
  55. $user->dailyDataFlows()->delete();
  56. $user->dataFlowLogs()->delete();
  57. $user->dataModifyLogs()->delete();
  58. $user->hourlyDataFlows()->delete();
  59. $user->loginLogs()->delete();
  60. $user->verify()->delete();
  61. DB::commit();
  62. } catch (Exception $e) {
  63. Log::error('删除用户相关信息错误:'.$e->getMessage());
  64. DB::rollBack();
  65. }
  66. }
  67. public function deleted(User $user): void
  68. {
  69. $allowNodes = Node::userAllowNodes($user->group_id, $user->level)->whereType(4)->get();
  70. if ($allowNodes->isNotEmpty()) {
  71. delUser::dispatch($user->id, $allowNodes);
  72. }
  73. }
  74. }