不多说,直接上图
源码下载地址:http://115.com/file/dplcvzpu
源码下载地址:http://115.com/file/dplcvzpu
//获取对应角色菜单列表
public List getRgMenuByRoleId(Integer RoleId) {
Map<Integer, List> retMap = new HashMap();//返回菜单集
StringBuffer rmBuffer=new StringBuffer();
rmBuffer.append("select rm from RgMenu rm where 1=1 ");
rmBuffer.append("and rm.id in ");
rmBuffer.append("(select rmr.menuId from RgMenurole rmr,User u where u.role=rmr.roleId ");
rmBuffer.append("and u.role="+RoleId+") order by rm.sort");
try {
List<RgMenu> rmList=super.findByHql(rmBuffer.toString());
Set pids = new HashSet();//目录结点ID
for (RgMenu rgMenu : rmList) {
RgMenu rm=getRgMenuById(rgMenu.getPid());
if (retMap.containsKey(rgMenu.getPid())) {
List sysMenus = (List) retMap.get(rgMenu.getPid());
sysMenus.add(rgMenu);
} else {
List sysMenus = new ArrayList();
sysMenus.add(rgMenu);
retMap.put(rgMenu.getPid(), sysMenus);
}
pids.add(getRgMenuById(rgMenu.getPid()));//获取系统菜单
}
//遍历菜单集合
Map validPidMap = new HashMap();
Iterator itor = pids.iterator();
while (itor.hasNext()) {
List<RgMenu> pidList=new ArrayList<RgMenu>();
RgMenu pid = (RgMenu) itor.next();
for (RgMenu rgMenu : rmList) {
if(rgMenu.getPid().equals(pid.getId())){
pidList.add(rgMenu);
}
}
// //子节点菜单排序
Collections.sort(pidList,new Comparator<RgMenu>(){
public int compare(RgMenu arg0, RgMenu arg1) {
return arg0.getSort().compareTo(arg1.getSort());
}
});
validPidMap.put(pid, pidList);
}
List<Map.Entry<RgMenu,List<RgMenu>>> mappingList = new ArrayList<Map.Entry<RgMenu,List<RgMenu>>>(validPidMap.entrySet()); ;
//对目录结点按sort进行排序
Collections.sort(mappingList, new Comparator<Map.Entry<RgMenu,List<RgMenu>>>(){
public int compare(Map.Entry<RgMenu,List<RgMenu>> mapping1,Map.Entry<RgMenu,List<RgMenu>> mapping2) {
return mapping1.getKey().getSort().compareTo(mapping2.getKey().getSort());
}
});
return mappingList;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public String addRole(Role role,String ids,String vals) {
boolean flag=false;
ArrayList al=HashStr.getHashStr(vals);
List<Role> roleList=new ArrayList<Role>();
List<RgMethodrole> rmrList=new ArrayList<RgMethodrole>();
List<RgMenurole> rrList=new ArrayList<RgMenurole>();
Map<String, Object> causeMaps = new HashMap<String, Object>();
try {
if(role!=null){
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
role.setCreatetime(format.format(new Date()));
Integer getRoleNo=roleDao.addAndGetId(role);
if(getRoleNo!=null){
if("".equals(ids)&&"".equals(vals)){
causeMaps.put("success", true);
causeMaps.put("message", "操作成功,未分配权限");
}else{
String[] idsArray=ids.split(",");
String[] valsArray=vals.split(",");
for (int i = 0; i < idsArray.length; i++) {
RgMethodrole rmr=new RgMethodrole();
rmr.setMethodId(Integer.valueOf(idsArray[i]));
rmr.setRoleId(getRoleNo);
rmr.setMenuId(Integer.valueOf(valsArray[i]));
rmrList.add(rmr);
}
for (int i = 0; i < al.size(); i++) {
RgMenurole rr=new RgMenurole();
rr.setMenuId(Integer.valueOf((String) al.get(i)));
rr.setRoleId(getRoleNo);
rrList.add(rr);
}
flag=roleDao.addRole(rmrList,rrList);
if(flag){
causeMaps.put("success", flag);
causeMaps.put("message", "操作成功!");
}
}
}else{
causeMaps.put("success", false);
causeMaps.put("message", "操作失败");
}
}else{
causeMaps.put("success", false);
causeMaps.put("message", "操作失败");
}
} catch (Exception e) {
causeMaps.put("success", flag);
causeMaps.put("message", e.getMessage());
}
jsonString=JsonUtil.getJsonStringFromXml(causeMaps);
return jsonString;
}