Pārlūkot izejas kodu

update MenuService

reghao 3 mēneši atpakaļ
vecāks
revīzija
62be0077dc

+ 2 - 19
web/src/main/java/cn/reghao/bnt/web/admin/controller/MenuController.java

@@ -1,11 +1,8 @@
 package cn.reghao.bnt.web.admin.controller;
 
-import cn.reghao.bnt.web.admin.db.repository.MenuRepository;
 import cn.reghao.bnt.web.admin.model.dto.MenuDto;
-import cn.reghao.bnt.web.admin.model.po.Menu;
 import cn.reghao.bnt.web.admin.model.po.Role;
 import cn.reghao.bnt.web.admin.model.vo.MenuTree;
-import cn.reghao.bnt.web.admin.model.vo.ResourceTree;
 import cn.reghao.bnt.web.admin.service.MenuService;
 import cn.reghao.bnt.web.admin.service.RoleService;
 import cn.reghao.bnt.web.admin.service.UserContext;
@@ -28,27 +25,13 @@ import java.util.*;
 @RestController
 public class MenuController {
     private final MenuService menuService;
-    private final MenuRepository menuRepository;
     private final RoleService roleService;
 
-    public MenuController(MenuService menuService, MenuRepository menuRepository, RoleService roleService) {
+    public MenuController(MenuService menuService, RoleService roleService) {
         this.menuService = menuService;
-        this.menuRepository = menuRepository;
         this.roleService = roleService;
     }
 
-    @Operation(summary = "可访问资源的角色列表页面", description = "N")
-    @GetMapping("/roles")
-    public String roleListWithResource(@RequestParam("id") Integer id) {
-        Menu menu = menuRepository.getById(id);
-        List<Role> list = new ArrayList<>(menu.getRoles());
-
-        String resource = String.format("%s %s", menu.getType(), menu.getUrl());
-        /*model.addAttribute("url", resource);
-        model.addAttribute("list", list);*/
-        return WebResult.success();
-    }
-
     @Operation(summary = "修改资源", description = "N")
     @PostMapping(value = "/update", produces = MediaType.APPLICATION_JSON_VALUE)
     public String updateMenu(@Validated MenuDto menuDto) {
@@ -60,7 +43,7 @@ public class MenuController {
     @GetMapping(value = "/ztree", produces = MediaType.APPLICATION_JSON_VALUE)
     public String list() {
         Role role = roleService.getRolesByUser(UserContext.getUserId()).get(0);
-        List<ResourceTree> list = menuService.getMenuTreeByRole1(role);
+        List<MenuTree> list = menuService.getMenuTreeByRole(role);
         return WebResult.success(list);
     }
 }

+ 2 - 2
web/src/main/java/cn/reghao/bnt/web/admin/controller/RoleController.java

@@ -3,7 +3,7 @@ package cn.reghao.bnt.web.admin.controller;
 import cn.reghao.bnt.web.admin.model.po.Menu;
 import cn.reghao.bnt.web.admin.model.po.Role;
 import cn.reghao.bnt.web.admin.model.po.User;
-import cn.reghao.bnt.web.admin.model.vo.ResourceTree;
+import cn.reghao.bnt.web.admin.model.vo.MenuTree;
 import cn.reghao.bnt.web.admin.model.vo.RoleVO;
 import cn.reghao.bnt.web.admin.service.AccountService;
 import cn.reghao.bnt.web.admin.service.MenuService;
@@ -53,7 +53,7 @@ public class RoleController {
     @GetMapping(value = "/menus", produces = MediaType.APPLICATION_JSON_VALUE)
     public String getRoleMenus(@RequestParam("id") Role role) {
         List<Integer> roleMenuIds = role.getMenus().stream().map(Menu::getId).collect(Collectors.toList());
-        List<ResourceTree> allMenus = menuService.getMenuTreeByRole1(role);
+        List<MenuTree> allMenus = menuService.getMenuTreeByRole(role);
 
         Map<String, Object> map = new HashMap<>();
         map.put("roleMenuIds", roleMenuIds);

+ 13 - 19
web/src/main/java/cn/reghao/bnt/web/admin/model/vo/MenuTree.java

@@ -4,6 +4,7 @@ import cn.reghao.bnt.web.admin.model.po.Menu;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -13,34 +14,27 @@ import java.util.List;
 @Setter
 @Getter
 public class MenuTree {
-    private Integer pid;
-    private Integer id;
+    private int pid;
+    private int id;
     private String name;
-    private String menuName;
+    private int pos;
+    private List<MenuTree> children;
+    private String label;
+    private int value;
     private String url;
-    private String icon;
     private String type;
-    private Integer pos;
-    private boolean visible;
-    private List<MenuTree> children;
-    // 授予了访问权限
-    private boolean granted;
-    private boolean open;
-    private Integer grantedRoles;
+    private String icon;
 
     public MenuTree(Menu menu) {
         this.pid = menu.getPid();
         this.id = menu.getId();
         this.name = menu.getName();
-        this.menuName = menu.getMenuName();
+        this.pos = menu.getPos();
+        this.children = new ArrayList<>();
+        this.value = menu.getId();
+        this.label = menu.getName();
         this.url = menu.getUrl();
-        this.icon = menu.getIcon();
         this.type = menu.getType();
-        this.pos = menu.getPos();
-        this.visible = menu.getVisible();
-        //this.children = new ArrayList<>();
-        this.granted = false;
-        this.open = false;
-        this.grantedRoles = menu.getRoles().size();
+        this.icon = menu.getIcon();
     }
 }

+ 0 - 40
web/src/main/java/cn/reghao/bnt/web/admin/model/vo/ResourceTree.java

@@ -1,40 +0,0 @@
-package cn.reghao.bnt.web.admin.model.vo;
-
-import cn.reghao.bnt.web.admin.model.po.Menu;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2025-12-01 11:09:19
- */
-@Setter
-@Getter
-public class ResourceTree {
-    private int pid;
-    private int id;
-    private String name;
-    private int pos;
-    private List<ResourceTree> children;
-    private String label;
-    private int value;
-    private String url;
-    private String type;
-    private String icon;
-
-    public ResourceTree(Menu menu) {
-        this.pid = menu.getPid();
-        this.id = menu.getId();
-        this.name = menu.getName();
-        this.pos = menu.getPos();
-        this.children = new ArrayList<>();
-        this.value = menu.getId();
-        this.label = menu.getName();
-        this.url = menu.getUrl();
-        this.type = menu.getType();
-        this.icon = menu.getIcon();
-    }
-}

+ 0 - 4
web/src/main/java/cn/reghao/bnt/web/admin/service/MenuService.java

@@ -4,7 +4,6 @@ import cn.reghao.bnt.web.admin.model.dto.MenuDto;
 import cn.reghao.bnt.web.admin.model.po.Menu;
 import cn.reghao.bnt.web.admin.model.po.Role;
 import cn.reghao.bnt.web.admin.model.vo.MenuTree;
-import cn.reghao.bnt.web.admin.model.vo.ResourceTree;
 import cn.reghao.jutil.jdk.web.result.Result;
 
 import java.util.List;
@@ -15,10 +14,7 @@ import java.util.List;
  */
 public interface MenuService {
     Result updateMenu(MenuDto menuDto);
-    Result deleteMenu(Integer menuId);
     List<MenuTree> getMenuTreeByRole(Role role);
-    List<ResourceTree> getMenuTreeByRole1(Role role);
-    List<MenuTree> getDirMenus();
     /**
      * 获取 url 对应的 Role, 不需要认证的 url 则返回空集合
      *

+ 9 - 105
web/src/main/java/cn/reghao/bnt/web/admin/service/impl/MenuServiceImpl.java

@@ -8,7 +8,6 @@ import cn.reghao.bnt.web.admin.model.po.Role;
 import cn.reghao.bnt.web.admin.db.repository.MenuRepository;
 import cn.reghao.bnt.web.admin.db.repository.RoleRepository;
 import cn.reghao.bnt.web.admin.model.vo.MenuTree;
-import cn.reghao.bnt.web.admin.model.vo.ResourceTree;
 import cn.reghao.bnt.web.admin.service.MenuService;
 import cn.reghao.bnt.web.admin.service.UserContext;
 import cn.reghao.jutil.jdk.web.result.Result;
@@ -50,88 +49,20 @@ public class MenuServiceImpl implements MenuService {
         return Result.result(ResultStatus.SUCCESS);
     }
 
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public synchronized Result deleteMenu(Integer menuId) {
-        if (menuId <= 5) {
-            return Result.result(ResultStatus.FAIL, String.format("不能删除系统默认 Menu"));
-        }
-
-        Menu menu = menuRepository.findById(menuId).orElse(null);
-        if (menu == null) {
-            return Result.result(ResultStatus.FAIL, String.format("ID 为 %s 的 Menu 不存在", menuId));
-        }
-
-        List<Menu> deletedMenus = new ArrayList<>();
-        deletedMenus.add(menu);
-        String type = menu.getType();
-        if (type.equals(MenuType.DIR.name())) {
-            List<Menu> list1 = getSubMenus(menu.getId());
-            deletedMenus.addAll(list1);
-        }
-
-        // 删除 Role 关联的 Menu
-        List<Role> roleList = deletedMenus.stream()
-                .map(menu1 -> {
-                    Set<Role> roles = menu1.getRoles();
-                    roles.forEach(role -> role.getMenus().remove(menu1));
-                    return roles;
-                })
-                .flatMap(Collection::stream)
-                .collect(Collectors.toList());
-
-        deletedMenus.forEach(menu1 -> {
-            menu1.setDeleted(true);
-        });
-
-        roleRepository.saveAll(roleList);
-        // 逻辑删除
-        menuRepository.saveAll(deletedMenus);
-        return Result.result(ResultStatus.SUCCESS);
-    }
-
-    /**
-     * 获取某个 dir menu 的所有子 menu(包括子 menu 的子 menu)
-     *
-     * @param
-     * @return
-     * @date 2024-08-01 09:23:42
-     */
-    private List<Menu> getSubMenus(int menuId) {
-        List<Menu> list1 = menuRepository.findByPid(menuId);
-        List<Menu> results = new ArrayList<>(list1);
-        Map<String, List<Menu>> map =  list1.stream().collect(Collectors.groupingBy(Menu::getType));
-        List<Menu> dirMenus = map.get(MenuType.DIR.name());
-        if (dirMenus != null) {
-            dirMenus.forEach(dirMenu -> {
-                List<Menu> list2 = menuRepository.findByPid(dirMenu.getId());
-                results.addAll(list2);
-            });
-        }
-
-        return results;
-    }
-
-    @Override
     public List<MenuTree> getMenuTreeByRole(Role role) {
         List<Menu> allMenus = menuRepository.findAllByDeleted(false);
-        return getSortedZTree(allMenus, role);
-    }
-
-    public List<ResourceTree> getMenuTreeByRole1(Role role) {
-        List<Menu> allMenus = menuRepository.findAllByDeleted(false);
-        Map<Integer, List<ResourceTree>> groupMap = allMenus.stream()
-                .map(ResourceTree::new)
-                .collect(Collectors.groupingBy(ResourceTree::getPid));
+        Map<Integer, List<MenuTree>> groupMap = allMenus.stream()
+                .map(MenuTree::new)
+                .collect(Collectors.groupingBy(MenuTree::getPid));
 
         int id = 0;
-        List<ResourceTree> list = groupMap.remove(id);
+        List<MenuTree> list = groupMap.remove(id);
         if (list != null) {
-            for (ResourceTree resourceTree : list) {
-                id = resourceTree.getId();
-                List<ResourceTree> list1 = groupMap.remove(id);
+            for (MenuTree menuTree : list) {
+                id = menuTree.getId();
+                List<MenuTree> list1 = groupMap.remove(id);
                 if (list1 != null) {
-                    resourceTree.getChildren().addAll(list1);
+                    menuTree.getChildren().addAll(list1);
                 }
             }
         } else {
@@ -139,37 +70,10 @@ public class MenuServiceImpl implements MenuService {
         }
 
         return list.stream()
-                .sorted(Comparator.comparingInt(ResourceTree::getPos))
+                .sorted(Comparator.comparingInt(MenuTree::getPos))
                 .collect(Collectors.toList());
     }
 
-    @Override
-    public List<MenuTree> getDirMenus() {
-        List<Menu> allMenus = menuRepository.findByDeletedIsFalseAndType(MenuType.DIR.name());
-        return getSortedZTree(allMenus, null);
-    }
-
-    private List<MenuTree> getSortedZTree(List<Menu> list, Role role) {
-        Map<Integer, List<Menu>> map =  list.stream().collect(Collectors.groupingBy(Menu::getPid));
-        List<MenuTree> menuTrees = new ArrayList<>();
-        map.forEach((pid, menus) -> {
-            menuTrees.addAll(menus.stream()
-                    .sorted(Comparator.comparing(Menu::getPos))
-                    .map(menu -> {
-                        MenuTree menuTree = new MenuTree(menu);
-                        Set<Role> roles = menu.getRoles();
-                        if (roles.contains(role)) {
-                            // 对应前端的 checked 复选框
-                            menuTree.setGranted(true);
-                        }
-                        return menuTree;
-                    })
-                    .collect(Collectors.toList()));
-        });
-
-        return menuTrees;
-    }
-
     @Transactional
     @Override
     public List<String> getRolesByUrl(String method, String requestUrl) {

+ 2 - 12
web/src/main/java/cn/reghao/bnt/web/template/MenusDirective.java

@@ -1,11 +1,7 @@
 package cn.reghao.bnt.web.template;
 
-import cn.reghao.bnt.web.admin.model.vo.MenuTree;
-import cn.reghao.bnt.web.admin.service.MenuService;
 import org.springframework.stereotype.Component;
 
-import java.util.List;
-
 /**
  * 后台页面侧边栏菜单
  *
@@ -14,12 +10,6 @@ import java.util.List;
  */
 @Component
 public class MenusDirective extends TemplateDirective {
-    private final MenuService menuService;
-
-    public MenusDirective(MenuService menuService) {
-        this.menuService = menuService;
-    }
-
     @Override
     public String getName() {
         return "menus";
@@ -27,7 +17,7 @@ public class MenusDirective extends TemplateDirective {
 
     @Override
     public void execute(DirectiveHandler handler) throws Exception {
-        List<MenuTree> menuTrees = menuService.getSideMenus();
-        handler.put("results", menuTrees).render();
+        /*List<MenuTree> menuTrees = menuService.getSideMenus();
+        handler.put("results", menuTrees).render();*/
     }
 }