delUser.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace App\Jobs\VNet;
  3. use Arr;
  4. use Http;
  5. use Illuminate\Bus\Queueable;
  6. use Illuminate\Contracts\Queue\ShouldQueue;
  7. use Illuminate\Foundation\Bus\Dispatchable;
  8. use Illuminate\Queue\InteractsWithQueue;
  9. use Illuminate\Queue\SerializesModels;
  10. use Log;
  11. use Throwable;
  12. class delUser implements ShouldQueue
  13. {
  14. use Dispatchable;
  15. use InteractsWithQueue;
  16. use Queueable;
  17. use SerializesModels;
  18. private $userIds;
  19. private $nodes;
  20. public function __construct($userIds, $nodes)
  21. {
  22. $this->userIds = $userIds;
  23. $this->nodes = $nodes;
  24. }
  25. public function handle(): void
  26. {
  27. foreach ($this->nodes as $node) {
  28. $this->send(($node->server ?: $node->ip).':'.$node->push_port, $node->auth->secret);
  29. }
  30. }
  31. private function send($host, $secret): void
  32. {
  33. $request = Http::baseUrl($host)->withoutVerifying()->timeout(15)->withHeaders(['secret' => $secret]);
  34. if (is_array($this->userIds)) {
  35. $response = $request->post('api/v2/user/del/list', $this->userIds);
  36. } else {
  37. $response = $request->post('api/user/del/'.$this->userIds);
  38. }
  39. $message = $response->json();
  40. if ($message && Arr::has($message, ['success', 'content']) && $response->ok()) {
  41. if ($message['success'] === 'false') {
  42. Log::warning('【删除用户】推送失败(推送地址:'.$host.',返回内容:'.$message['content'].')');
  43. } else {
  44. Log::info('【删除用户】推送成功(推送地址:'.$host.',内容:'.json_encode($this->userIds, true).')');
  45. }
  46. }
  47. }
  48. // 队列失败处理
  49. public function failed(Throwable $exception)
  50. {
  51. Log::error('【删除用户】推送异常:'.$exception->getMessage());
  52. }
  53. }