public static void main(String[] args) throws Exception {
String str = "[\n" +
" {\n" +
" \"uuid\":\"ac553114aaabaed76d8079b0de05983367VtJfFOZRA\",\n" +
" \"parentPermissionUuid\":null,\n" +
" \"name\":\"账号管理\",\n" +
" \"permissionValue\":\"account_control\",\n" +
" \"relationUrl\":null,\n" +
" \"remark\":\"账号管理\",\n" +
" \"type\":\"menu\",\n" +
" \"submissionType\":null,\n" +
" \"dataAccessRules\":[\n" +
"\n" +
" ],\n" +
" \"displayOrder\":0,\n" +
" \"children\":[\n" +
" {\n" +
" \"uuid\":\"c5f9764de9986d9b54751ea64ed16729AvIPUsVOWSc\",\n" +
" \"parentPermissionUuid\":\"ac553114aaabaed76d8079b0de05983367VtJfFOZRA\",\n" +
" \"name\":\"魔盒账号管理\",\n" +
" \"permissionValue\":\"magic_box\",\n" +
" \"relationUrl\":null,\n" +
" \"remark\":null,\n" +
" \"type\":\"menu\",\n" +
" \"submissionType\":null,\n" +
" \"dataAccessRules\":[\n" +
"\n" +
" ],\n" +
" \"displayOrder\":0,\n" +
" \"children\":[\n" +
" {\n" +
" \"uuid\":\"2627ce63a78a70f3c6f653626a63949fxZrsBSS4s9d\",\n" +
" \"parentPermissionUuid\":\"c5f9764de9986d9b54751ea64ed16729AvIPUsVOWSc\",\n" +
" \"name\":\"新增\",\n" +
" \"permissionValue\":\"add\",\n" +
" \"relationUrl\":null,\n" +
" \"remark\":null,\n" +
" \"type\":\"button\",\n" +
" \"submissionType\":\"POST\",\n" +
" \"dataAccessRules\":[\n" +
"\n" +
" ],\n" +
" \"displayOrder\":0,\n" +
" \"children\":[\n" +
"\n" +
" ],\n" +
" \"uri\":\"/add\"\n" +
" },\n" +
" {\n" +
" \"uuid\":\"bd0bdd1d102e3b531bae451706c4f170qZ2HltuHB4o\",\n" +
" \"parentPermissionUuid\":\"c5f9764de9986d9b54751ea64ed16729AvIPUsVOWSc\",\n" +
" \"name\":\"账号\",\n" +
" \"permissionValue\":\"account\",\n" +
" \"relationUrl\":null,\n" +
" \"remark\":null,\n" +
" \"type\":\"menu\",\n" +
" \"submissionType\":\"GET\",\n" +
" \"dataAccessRules\":[\n" +
"\n" +
" ],\n" +
" \"displayOrder\":0,\n" +
" \"children\":[\n" +
"\n" +
" ],\n" +
" \"uri\":\"/account\"\n" +
" }\n" +
" ],\n" +
" \"uri\":null\n" +
" },\n" +
" {\n" +
" \"uuid\":\"f5ce6f71d562e8271e30c2933587ffcb7dfvCYB87cl\",\n" +
" \"parentPermissionUuid\":\"ac553114aaabaed76d8079b0de05983367VtJfFOZRA\",\n" +
" \"name\":\"SOA账号管理\",\n" +
" \"permissionValue\":\"soa\",\n" +
" \"relationUrl\":null,\n" +
" \"remark\":null,\n" +
" \"type\":\"menu\",\n" +
" \"submissionType\":\"GET\",\n" +
" \"dataAccessRules\":[\n" +
"\n" +
" ],\n" +
" \"displayOrder\":0,\n" +
" \"children\":[\n" +
"\n" +
" ],\n" +
" \"uri\":\"/user\"\n" +
" }\n" +
" ],\n" +
" \"uri\":null\n" +
" },\n" +
" {\n" +
" \"uuid\":\"e705ec504f7583ed812c8a1af366bad448rFy3NIyHI\",\n" +
" \"parentPermissionUuid\":null,\n" +
" \"name\":\"消息推送\",\n" +
" \"permissionValue\":\"msg_push\",\n" +
" \"relationUrl\":null,\n" +
" \"remark\":null,\n" +
" \"type\":\"menu\",\n" +
" \"submissionType\":null,\n" +
" \"dataAccessRules\":[\n" +
"\n" +
" ],\n" +
" \"displayOrder\":0,\n" +
" \"children\":[\n" +
"\n" +
" ],\n" +
" \"uri\":null\n" +
" }\n" +
" ]";
List<SubLevelPermission> subLevelPermissions = JSONObject.parseArray(str, SubLevelPermission.class);
String pv = "";
// String type = "button";
String type = "menu";
// String type = "ALL";
// String type = "";
List<SubLevelPermission> list = treesubLevelPermissions(subLevelPermissions, pv, type, null);
System.out.println(JSONObject.toJSONString(list));
}
private static List<SubLevelPermission> treesubLevelPermissions(List<SubLevelPermission> subLevelPermissions, String val, String type, String uuid) {
List<SubLevelPermission> tempList = new ArrayList<>();
if (StringUtils.isEmpty(val)) {
if (StringUtils.isEmpty(type)) {
return subLevelPermissions;
}else{
for (SubLevelPermission mu : subLevelPermissions) {
if (mu.getType().equals(type)) {
FilterChildren(tempList, mu, val, type, uuid);
}else if ("ALL".equals(type) || StringUtils.isBlank(type)) {
FilterChildren(tempList, mu, val, "ALL", uuid);
}
}
}
}else{
for (SubLevelPermission mu : subLevelPermissions) {
if(uuid == null){
if (!mu.getPermissionValue().equals(val)){
List<SubLevelPermission> temp = treesubLevelPermissions(mu.getChildren(), val, type, null);
tempList.addAll(temp);
}else{
//递归遍历开始查找的下一级
List<SubLevelPermission> temp = treesubLevelPermissions(mu.getChildren(), val, type, mu.getUuid());
tempList.addAll(temp);
}
}else{
if (mu.getType().equals(type)) {
FilterChildren(tempList, mu, val, type, uuid);
} else if ("ALL".equals(type) || StringUtils.isBlank(type)) {
FilterChildren(tempList, mu, val, "ALL", uuid);
}
}
}
}
return tempList;
}
private static void FilterChildren(List<SubLevelPermission> tempList, SubLevelPermission sp,String val, String type,String uuid) {
SubLevelPermission data = new SubLevelPermission();
BeanUtils.copyProperties(sp, data);
//遍历出父id等于参数的id,add进子节点集合
//递归遍历下一级
List<SubLevelPermission> temp = treesubLevelPermissions(sp.getChildren(), val, type, data.getUuid());
if(StringUtils.isEmpty(uuid)){
data.setChildren(temp);
tempList.add(data);
}else{
if (sp.getParentPermissionUuid().equals(uuid)) {
data.setChildren(temp);
tempList.add(data);
}
}
}
树形结构list,按条件搜索某一父级下所有资源
最新推荐文章于 2024-10-23 23:57:57 发布