- 开发中会遇到单用户多角色多权限的问题,这时我们分配的权限组就要做去重处理,否则用户登录系统后会有重复菜单或者按钮
效果图:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c3ae4786ff28f1b808f1b11e26ec44e9.png)
实现代码:
- hashSet去重处理,这里贴上我完整的权限组处理方法.
//查询用户角色对应的系统 用于登录时权限分配
public List<Map<String, Object>> findBankRoleSys(List<Map<String, Object>> list, String bankId){
if(list != null ) {
StringBuilder builer = new StringBuilder(); //保存一次处理后的字符串
Set<String> sets=new HashSet<>(); //去重处理
String auths = null; //保存处理完的字符串
list.forEach((temp)->{
sets.addAll(Arrays.asList(temp.get("role_auths").toString().split(",")));
});
for(String hs : sets) {
if(hs.length() == 3) {
builer.append("'"+hs+"',"); //过滤掉code为三(系统)的数据
}
}
if(builer != null && builer.length() >0) {
auths = builer.substring(0,builer.length()-1);
}
String sql = "SELECT * FROM t_bank_sys_menu where `status`=0 AND statuz =0 AND bank_id = '"+bankId+"' AND menu_code IN ("+auths+")";
List<Map<String, Object>> menuslist = jt.queryForList(sql);
return menuslist;
}
return null;
}