UserObserver.php 2.1 KB

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