hero_xu 发表于 2016-11-15 14:39:35

基础权限-得到用户菜单列表方法

从源码上看,得到用户菜单的逻辑为:用户自身拥有的角色对应的功能菜单集合+ 用户所在机构拥有的角色对应的功能菜单集合。
关键代码如下,关注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);
         }
         …………
}

页: [1]
查看完整版本: 基础权限-得到用户菜单列表方法