From 3360be325ac5de64a2c784d63d4356800fa9e639 Mon Sep 17 00:00:00 2001 From: zhangzhiqiang Date: Mon, 12 Dec 2022 18:52:18 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=A7=92=E8=89=B2=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nl/sso/system/rest/MenuController.java | 2 ++ .../nl/sso/system/rest/RoleController.java | 33 ++++++++++++------- .../system/service/impl/MenuServiceImpl.java | 2 ++ 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/sso/system/rest/MenuController.java b/lms/nladmin-system/src/main/java/org/nl/sso/system/rest/MenuController.java index e4ef2e15f..9809b4fb8 100644 --- a/lms/nladmin-system/src/main/java/org/nl/sso/system/rest/MenuController.java +++ b/lms/nladmin-system/src/main/java/org/nl/sso/system/rest/MenuController.java @@ -64,6 +64,8 @@ public class MenuController { } String pid = systemDict.getString("para1"); List menuDtoList = menuService.findByUser(String.valueOf(SecurityUtils.getCurrentUserId()),system_type); + //移除系统级菜单 + menuDtoList.removeIf(a->a.getMenu_id().equals(pid)); List menuDtos = menuService.buildTree(menuDtoList); return new ResponseEntity<>(menuService.buildMenus(menuDtos,pid),HttpStatus.OK); } diff --git a/lms/nladmin-system/src/main/java/org/nl/sso/system/rest/RoleController.java b/lms/nladmin-system/src/main/java/org/nl/sso/system/rest/RoleController.java index 212866ea8..027c40659 100644 --- a/lms/nladmin-system/src/main/java/org/nl/sso/system/rest/RoleController.java +++ b/lms/nladmin-system/src/main/java/org/nl/sso/system/rest/RoleController.java @@ -9,14 +9,15 @@ import lombok.RequiredArgsConstructor; import org.nl.modules.logging.annotation.Log; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.sso.system.service.RoleService; +import org.nl.sso.tools.MapOf; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; +import java.util.stream.Collectors; /** * @author ludj @@ -70,16 +71,26 @@ public class RoleController { public ResponseEntity updateMenu(@RequestBody JSONObject form) { String role_id = form.getString("role_id"); JSONArray menus = form.getJSONArray("menus"); - WQLObject rmTab = WQLObject.getWQLObject("sys_roles_menus"); - rmTab.delete("role_id = " + role_id + ""); - for (int i = 0; i < menus.size(); i++) { - JSONObject json = menus.getJSONObject(i); - JSONObject param = new JSONObject(); - param.put("role_id", role_id); - param.put("menu_id", json.getString("menu_id")); - rmTab.insert(param); + WQLObject rmTab = WQLObject.getWQLObject("sys_roles_menus"); + JSONArray result = rmTab.query("role_id = " + role_id + "").getResultJSONArray(0); + Set dbMenus = new HashSet<>(); + if (result.size()>0){ + dbMenus.addAll(result.stream().map(a -> ((JSONObject) a).getString("menu_id")).collect(Collectors.toSet())); } + Set currentMenus = menus.stream().map(a -> ((HashMap) a).get("menu_id")).collect(Collectors.toSet()); + List needAdd = currentMenus.stream().filter(item -> !dbMenus.contains(item)).collect(Collectors.toList()); + List needDel = dbMenus.stream().filter(item -> !currentMenus.contains(item)).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(needAdd)){ + for (String s : needAdd) { + rmTab.insert(MapOf.of("role_id",role_id,"menu_id",s)); + } + } + if (!CollectionUtils.isEmpty(needDel)){ + String collect = needDel.stream().collect(Collectors.joining("','")); + rmTab.delete("role_id = '"+role_id+"' and menu_id in ('"+collect+"')"); + } + return new ResponseEntity<>(HttpStatus.NO_CONTENT); } diff --git a/lms/nladmin-system/src/main/java/org/nl/sso/system/service/impl/MenuServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/sso/system/service/impl/MenuServiceImpl.java index 582ff4a00..937595fc6 100644 --- a/lms/nladmin-system/src/main/java/org/nl/sso/system/service/impl/MenuServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/sso/system/service/impl/MenuServiceImpl.java @@ -28,6 +28,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.function.Predicate; import java.util.stream.Collectors; /** @@ -338,6 +339,7 @@ public class MenuServiceImpl implements MenuService { @Override public List buildMenus(List menuDtos,String pid) { List list = new LinkedList<>(); + //剔除系统级菜单 menuDtos.forEach(menuDTO -> { if (menuDTO != null) { List menuDtoList = menuDTO.getChildren();