Maintenance.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. namespace App\Http\Controllers\admin;
  3. use App\Constants\HttpStatus;
  4. use App\Http\Controllers\Controller;
  5. use App\Services\MaintenanceService;
  6. use Illuminate\Support\Facades\Log;
  7. use Illuminate\Validation\ValidationException;
  8. use Throwable;
  9. class Maintenance extends Controller
  10. {
  11. public function index(MaintenanceService $service) { return $this->run(fn () => $service->listing(request()->all())); }
  12. public function options(MaintenanceService $service) { return $this->run(fn () => $service->options()); }
  13. public function detail(MaintenanceService $service)
  14. {
  15. return $this->run(function () use ($service) {
  16. $params = request()->validate(['id' => ['required', 'integer', 'min:1']]);
  17. return $service->detail((int) $params['id']);
  18. });
  19. }
  20. public function submit(MaintenanceService $service) { return $this->run(fn () => $service->save(request()->all())); }
  21. public function status(MaintenanceService $service)
  22. {
  23. return $this->run(function () use ($service) {
  24. $params = request()->validate(['id' => ['required', 'integer', 'min:1'], 'enabled' => ['required', 'integer', 'in:0,1']]);
  25. return $service->status((int) $params['id'], (int) $params['enabled']);
  26. });
  27. }
  28. public function logs(MaintenanceService $service) { return $this->run(fn () => $service->logs(request()->all())); }
  29. private function run(callable $callback)
  30. {
  31. try { return $this->success($callback()); }
  32. catch (ValidationException $e) { return $this->error(HttpStatus::CUSTOM_ERROR, $e->validator->errors()->first()); }
  33. catch (Throwable $e) {
  34. Log::error('maintenance_admin_failed', ['exception' => $e]);
  35. return $this->error(HttpStatus::CUSTOM_ERROR, '维护设置服务暂不可用,请稍后重试');
  36. }
  37. }
  38. }