MenuController.java 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package com.izouma.awesomeAdmin.web;
  2. import com.izouma.awesomeAdmin.domain.Menu;
  3. import com.izouma.awesomeAdmin.repo.MenuRepo;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.security.access.prepost.PreAuthorize;
  6. import org.springframework.web.bind.annotation.GetMapping;
  7. import org.springframework.web.bind.annotation.PostMapping;
  8. import org.springframework.web.bind.annotation.RequestMapping;
  9. import org.springframework.web.bind.annotation.RestController;
  10. import java.util.Comparator;
  11. import java.util.List;
  12. @RestController
  13. @RequestMapping("/menu")
  14. public class MenuController extends BaseController {
  15. @Autowired
  16. private MenuRepo menuRepo;
  17. @GetMapping("/userMenu")
  18. public List<Menu> userMenu(String name) {
  19. List<Menu> menuList = menuRepo.findByNameAndRootTrue(name);
  20. menuList.forEach(this::sortMenu);
  21. return menuList;
  22. }
  23. @PreAuthorize("hasRole('ADMIN')")
  24. @GetMapping("/all")
  25. public List<Menu> all() {
  26. List<Menu> menuList = menuRepo.findByRootTrue();
  27. menuList.forEach(this::sortMenu);
  28. return menuList;
  29. }
  30. @PreAuthorize("hasRole('ADMIN')")
  31. @PostMapping("/save")
  32. public Menu save(Menu menu) {
  33. if (menu.getSort() == null) {
  34. menu.setSort(menuRepo.nextSort());
  35. }
  36. menuRepo.save(menu);
  37. return menu;
  38. }
  39. private void sortMenu(Menu menu) {
  40. if (menu.getChildren() != null) {
  41. menu.getChildren().sort(Comparator.comparingInt(Menu::getSort));
  42. menu.getChildren().forEach(this::sortMenu);
  43. }
  44. }
  45. }