SystemController.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Models\ServerShadowsocks;
  4. use App\Models\ServerTrojan;
  5. use App\Services\ServerService;
  6. use App\Utils\CacheKey;
  7. use Illuminate\Http\Request;
  8. use App\Http\Controllers\Controller;
  9. use App\Models\ServerGroup;
  10. use App\Models\ServerV2ray;
  11. use App\Models\Plan;
  12. use App\Models\User;
  13. use App\Models\Ticket;
  14. use App\Models\Order;
  15. use App\Models\StatOrder;
  16. use App\Models\StatServer;
  17. use Illuminate\Support\Facades\Cache;
  18. use Illuminate\Support\Facades\DB;
  19. use Illuminate\Support\Facades\Http;
  20. use Laravel\Horizon\Contracts\MasterSupervisorRepository;
  21. class SystemController extends Controller
  22. {
  23. public function getStatus()
  24. {
  25. return response([
  26. 'data' => [
  27. 'schedule' => $this->getScheduleStatus(),
  28. 'horizon' => $this->getHorizonStatus()
  29. ]
  30. ]);
  31. }
  32. protected function getScheduleStatus():bool
  33. {
  34. return (time() - 120) < Cache::get(CacheKey::get('SCHEDULE_LAST_CHECK_AT', null));
  35. }
  36. protected function getHorizonStatus():bool
  37. {
  38. if (! $masters = app(MasterSupervisorRepository::class)->all()) {
  39. return false;
  40. }
  41. return collect($masters)->contains(function ($master) {
  42. return $master->status === 'paused';
  43. }) ? false : true;
  44. }
  45. }