fix:角色菜单接口修改
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user