UserObserver.php 2.3 KB

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