fix:角色菜单接口修改

This commit is contained in:
zhangzhiqiang
2022-12-12 18:52:18 +08:00
parent 81e9f2554b
commit 3360be325a
3 changed files with 26 additions and 11 deletions

View File

@@ -64,6 +64,8 @@ public class MenuController {
}
String pid = systemDict.getString("para1");
List<MenuDto> menuDtoList = menuService.findByUser(String.valueOf(SecurityUtils.getCurrentUserId()),system_type);
//移除系统级菜单
menuDtoList.removeIf(a->a.getMenu_id().equals(pid));
List<MenuDto> menuDtos = menuService.buildTree(menuDtoList);
return new ResponseEntity<>(menuService.buildMenus(menuDtos,pid),HttpStatus.OK);
}

View File

@@ -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<Object> 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<String> dbMenus = new HashSet<>();
if (result.size()>0){
dbMenus.addAll(result.stream().map(a -> ((JSONObject) a).getString("menu_id")).collect(Collectors.toSet()));
}
Set<String> currentMenus = menus.stream().map(a -> ((HashMap<String,String>) a).get("menu_id")).collect(Collectors.toSet());
List<String> needAdd = currentMenus.stream().filter(item -> !dbMenus.contains(item)).collect(Collectors.toList());
List<String> 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);
}

View File

@@ -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<MenuVo> buildMenus(List<MenuDto> menuDtos,String pid) {
List<MenuVo> list = new LinkedList<>();
//剔除系统级菜单
menuDtos.forEach(menuDTO -> {
if (menuDTO != null) {
List<MenuDto> menuDtoList = menuDTO.getChildren();