fix:修改角色菜单

This commit is contained in:
zhangzhiqiang
2022-12-12 20:16:38 +08:00
parent 0c37992e7c
commit 8baf7bb560

View File

@@ -1,6 +1,7 @@
package org.nl.sso.system.rest;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
@@ -69,28 +70,28 @@ public class RoleController {
@PutMapping(value = "/menu")
// @SaCheckPermission("roles:edit")
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");
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 (ObjectUtil.isNotEmpty(form)){
String role_id = form.getString("role_id");
JSONArray menus = form.getJSONArray("menus");
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+"')");
}
}
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);
}