|
从源码上看,得到用户菜单的逻辑为:用户自身拥有的角色对应的功能菜单集合+ 用户所在机构拥有的角色对应的功能菜单集合。
关键代码如下,关注hqlsb2对应的sql。 请确认一下where条件中的b.tsRole.id=c.id 是否有问题? 角色ID与功能ID关联?
private Map<String, TSFunction> getUserFunction(TSUser user) {
…………
StringBuilder hqlsb1=new StringBuilder("select distinct f from TSFunction f,TSRoleFunction rf,TSRoleUser ru ")
.append("where ru.TSRole.id=rf.TSRole.id and rf.TSFunction.id=f.id and ru.TSUser.id=? ");
StringBuilder hqlsb2=new StringBuilder("select distinct c from TSFunction c,TSRoleOrg b,TSUserOrg a ")
.append("where a.tsDepart.id=b.tsDepart.id and b.tsRole.id=c.id and a.tsUser.id=?");
List<TSFunction> list1 = systemService.findHql(hqlsb1.toString(),user.getId());
List<TSFunction> list2 = systemService.findHql(hqlsb2.toString(),user.getId());
for(TSFunction function:list1){
loginActionlist.put(function.getId(),function);
}
for(TSFunction function:list2){
loginActionlist.put(function.getId(),function);
}
…………
}
|
|