fix:修改角色菜单
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package org.nl.sso.system.rest;
|
package org.nl.sso.system.rest;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
@@ -69,28 +70,28 @@ public class RoleController {
|
|||||||
@PutMapping(value = "/menu")
|
@PutMapping(value = "/menu")
|
||||||
// @SaCheckPermission("roles:edit")
|
// @SaCheckPermission("roles:edit")
|
||||||
public ResponseEntity<Object> updateMenu(@RequestBody JSONObject form) {
|
public ResponseEntity<Object> updateMenu(@RequestBody JSONObject form) {
|
||||||
String role_id = form.getString("role_id");
|
if (ObjectUtil.isNotEmpty(form)){
|
||||||
JSONArray menus = form.getJSONArray("menus");
|
String role_id = form.getString("role_id");
|
||||||
|
JSONArray menus = form.getJSONArray("menus");
|
||||||
WQLObject rmTab = WQLObject.getWQLObject("sys_roles_menus");
|
WQLObject rmTab = WQLObject.getWQLObject("sys_roles_menus");
|
||||||
JSONArray result = rmTab.query("role_id = " + role_id + "").getResultJSONArray(0);
|
JSONArray result = rmTab.query("role_id = " + role_id + "").getResultJSONArray(0);
|
||||||
Set<String> dbMenus = new HashSet<>();
|
Set<String> dbMenus = new HashSet<>();
|
||||||
if (result.size()>0){
|
if (result.size()>0){
|
||||||
dbMenus.addAll(result.stream().map(a -> ((JSONObject) a).getString("menu_id")).collect(Collectors.toSet()));
|
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());
|
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> needAdd = currentMenus.stream().filter(item -> !dbMenus.contains(item)).collect(Collectors.toList());
|
||||||
List<String> needDel = dbMenus.stream().filter(item -> !currentMenus.contains(item)).collect(Collectors.toList());
|
List<String> needDel = dbMenus.stream().filter(item -> !currentMenus.contains(item)).collect(Collectors.toList());
|
||||||
if (!CollectionUtils.isEmpty(needAdd)){
|
if (!CollectionUtils.isEmpty(needAdd)){
|
||||||
for (String s : needAdd) {
|
for (String s : needAdd) {
|
||||||
rmTab.insert(MapOf.of("role_id",role_id,"menu_id",s));
|
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);
|
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user