MenuBadge.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. namespace App\Http\Controllers\admin;
  3. use App\Http\Controllers\Controller;
  4. use App\Services\MenuBadgeAdminService;
  5. use Illuminate\Support\Facades\Log;
  6. use Illuminate\Validation\ValidationException;
  7. class MenuBadge extends Controller
  8. {
  9. public function index(MenuBadgeAdminService $service)
  10. {
  11. return $this->run(fn () => $service->listing());
  12. }
  13. public function save(MenuBadgeAdminService $service)
  14. {
  15. return $this->run(fn () => $service->save(request()->all()));
  16. }
  17. public function delete(MenuBadgeAdminService $service)
  18. {
  19. return $this->run(fn () => $service->delete(request()->all()));
  20. }
  21. public function status(MenuBadgeAdminService $service)
  22. {
  23. return $this->run(fn () => $service->status(request()->all()));
  24. }
  25. private function run(callable $callback)
  26. {
  27. try {
  28. return $this->success($callback());
  29. } catch (ValidationException $e) {
  30. return $this->error(-3, $e->validator->errors()->first());
  31. } catch (\Throwable $e) {
  32. Log::error('menu_badge_admin_failed', ['exception' => $e]);
  33. return $this->error(-3, '菜单角标配置操作失败,请稍后重试');
  34. }
  35. }
  36. }