在项目中用到导航树结构,所以就用递归写了一个遍历导航树的功能。
表结构:
-
/**
-
* 递归获取菜单
-
*
-
* @param roleKey
-
* @param systemCode
-
* @return
-
*/
-
public String getSysMenuJson(String roleIds, String menu_pid)
-
throws Exception {
-
List<Map<String, Object>> list = null;
-
if (roleIds == null || roleIds.equals(""))
-
return null;
-
String[] roles = roleIds.split(",");
-
List<Map<String, Object>> dicList = new ArrayList<Map<String, Object>>();
-
//当前节点信息
-
//dicList = SysMenuListById(roleIds, menu_pid);
-
//调用递归子集节点信息
-
getChridNavIds(roleIds, menu_pid, dicList);
-
return JSONArray.fromObject(dicList).toString();
-
}
-
/**
-
* 递归获取系统导航菜单
-
* @param roleIds 角色iD
-
* @param parentid 父级菜单ID
-
* @param dicList
-
*/
-
private void getChridNavIds(String roleIds, String parentid,List dicList){
-
List<Map<String, Object>> dataDictionaryList= SysMenuListByPid(roleIds, parentid);
-
for(Map nav:dataDictionaryList){
-
List<Map<String, Object>> childList = new ArrayList<Map<String, Object>> ();
-
if(nav!=null){
-
Map<String, Object> map = new HashMap<String, Object>();// 每个一级菜单对应的map
-
map.put("id", NullHelper.convertNullToNothingnull(nav.get("menu_id")));
-
map.put("name", NullHelper.convertNullToNothingnull(nav.get("menu_name")));
-
String url = NullHelper.convertNullToNothingnull(nav.get("menu_url"));
-
if(StringUtils.isNotBlank(url)){
-
map.put("url", url);
-
}
-
map.put("icon", NullHelper.convertNullToNothingnull(nav.get("menu_img")));
-
getChridNavIds(roleIds,nav.get("menu_id").toString(),childList);
-
//将同级代码存入childList中
-
map.put("menuitem", childList);
-
dicList.add(map);
-
}
-
}
-
}
-
/**
-
* 用PID递归获取父级菜单的所有子集菜单
-
* @param roleIds
-
* @param menu_pid
-
* @param bResult
-
* @return
-
*/
-
private List<Map<String, Object>> SysMenuListByPid(String roleIds, String menu_pid) {
-
StringBuffer menuSql = new StringBuffer();
-
menuSql.append("select m.menu_id,m.parent_menu_id,m.menu_name,m.menu_url,m.menu_img,m.is_treenode from sys_menu m ");
-
menuSql.append("inner join sys_role_menu_rel rm on rm.menu_id=m.menu_id and m.parent_menu_id in ("+splitRoleId(menu_pid)+") and m.menu_state='1' and rm.role_id in ("+splitRoleId(roleIds)+") ");
-
menuSql.append("where 1=1" + " group by m.menu_id,m.parent_menu_id,m.menu_name,m.menu_url,m.menu_img,m.is_treenode,m.menu_seq ");
-
menuSql.append("order by m.menu_seq asc ");
-
return jdbcTemplate.queryForList(menuSql.toString());
-
}
生成json串:
-
[
-
{
-
"id": "8a929b985da6b83f015da6bbe2620001",
-
"icon": "s-n-t-icon5.png",
-
"name": "制证管理",
-
"menuitem": [
-
{
-
"id": "8a92e1475da5c3a3015da80915080007",
-
"icon": "",
-
"name": "证照生成",
-
"menuitem": [ ],
-
"url": "license/manageList"
-
},
-
{
-
"id": "8a92e1475dbc8d86015dbc91ed990002",
-
"icon": "",
-
"name": "证照审核",
-
"menuitem": [ ],
-
"url": "storage/auditList"
-
},
-
{
-
"id": "8a929cee5da76049015da764fd980001",
-
"icon": "",
-
"name": "制证签发",
-
"menuitem": [ ],
-
"url": "storage/signDataList"
-
},
-
{
-
"id": "8a929cee5da76049015da7743ae600a0",
-
"icon": "",
-
"name": "打证管理",
-
"menuitem": [ ],
-
"url": "storage/printDataList"
-
}
-
],
-
"url": "license/manageList"
-
},
-
{
-
"id": "8a929b1a5da632c3015da6347edd0001",
-
"icon": "s-n-t-icon2.png",
-
"name": "证照维护",
-
"menuitem": [
-
{
-
"id": "8a92e3fd5dea5abd015dea6e6f7b0001",
-
"icon": "",
-
"name": "证照年检",
-
"menuitem": [ ],
-
"url": "licensemaintain/licenseAnnualSurveyList"
-
},
-
{
-
"id": "8a929b1a5da632c3015da6368e5a002b",
-
"icon": "",
-
"name": "证照变更",
-
"menuitem": [ ],
-
"url": "licensemaintain/licenseChangeList"
-
},
-
{
-
"id": "297e4d0b5dbb4a09015dbc25eb7c0003",
-
"icon": "",
-
"name": "证照注销",
-
"menuitem": [ ],
-
"url": "licensemaintain/licensezhuxiao"
-
},
-
{
-
"id": "297e4d0b5dbb4a09015dbc2defb700a4",
-
"icon": "",
-
"name": "证照作废",
-
"menuitem": [ ],
-
"url": "licensemaintain/licensezuofei"
-
},
-
{
-
"id": "297e4d0b5dbb4a09015dbc3122e500f6",
-
"icon": "",
-
"name": "证照挂失",
-
"menuitem": [ ],
-
"url": "licensemaintain/licenseguashi"
-
},
-
{
-
"id": "297e4d0b5dbb4a09015dbc32dbc60149",
-
"icon": "",
-
"name": "维护审核",
-
"menuitem": [ ],
-
"url": "licensemaintain/licenseshenhe"
-
},
-
{
-
"id": "8a92e0f65dc5c003015dc5c58ca60001",
-
"icon": "",
-
"name": "版本管理",
-
"menuitem": [ ],
-
"url": "licensemaintain/versionManagement"
-
},
-
{
-
"id": "8a92e0f65dc5c003015dc5c88df30002",
-
"icon": "",
-
"name": "有效期管理",
-
"menuitem": [ ],
-
"url": "licensemaintain/termOfValidityManagement"
-
}
-
]
-
},
-
{
-
"id": "8a92e3165e177bec015e1786a9a20002",
-
"icon": "s-n-t-icon1.png",
-
"name": "证照查询",
-
"menuitem": [ ],
-
"url": "querylicenses/querManageList"
-
}
-
]