ユーザログインに基づいて適切な権限のメニューを取得

人間のuserIdにより、対応するロール(ロール対応表ロールメニュー対応表)に対応する文字の再取得許可メニューを得ログ

 1 、構築再帰的に取得親方法
  プライベート ボイド getUserMenus(HashMapの<文字列、SYSMENU> parentAndChildren、SYSMENU SYSMENU){
         IF(!{parentAndChildren.containsKey(sysMenu.getRowId()))
            parentAndChildren.put(sysMenu.getRowId()、SYSMENU); 
        } 
        IF(!parentAndChildren.containsKey(sysMenu.getParentId())){ 
            SYSMENU P = sysMenuMapper.find (sysMenu.getParentId());
             IF(!P = NULL ){ 
                getUserMenus(parentAndChildren、P); 
            } 
        }
    }

 2 、递归获取子节点
 プライベート ボイド getTreeStructure(SysMenuDto根、リスト<SYSMENU> ORGS){
         ため(SYSMENU ORG:ORGS){
             場合(org.getParentId()に等しい(root.getId())){ 
                SysMenuDto S = SysMenuDto.convertSysMenuEntity(ORG)。
                getTreeStructure(S、ORGS)。
                もし(root.getChildrens()== NULL ){ 
                    root.setChildrens(新規のArrayList <> ()); 
                } 
                root.getChildrens()(S)追加。
            } 
        } 
    }

 3、ツリーデータ構造の構築
  、公開を一覧<SysMenuDto> getSysMenuTreeDataByAdmin(文字列のuserId、文字列DID){ 
        一覧 <SysMenuDto>リスト= 新しい新しいのArrayList <> ();
         // メニューリストのすべての照会 
        一覧を<SYSMENU> sysMenuList = sysRoleMapper.findListVisible();
         // クエリのすべてメニューコード化されたリスト 
        リスト<文字列> sysMenuIdList = sysRoleMapper.findListId();
         // メニューのコレクションの取得 
        リストを<SysUserFavoriteMenu> sysUserFavoriteMenuList = sysUserFavoriteMenuMapper.getSysUserFavoriteMenu(userIdを、DID);
         // 決定繰り返すかどうかのコレクション
        のための {(sysMenuList SYSMENU SYSMENU)
            SysUserFavoriteMenu sysUserFavoriteMenu = sysUserFavoriteMenuMapper.getFavoriteMenu(useridは、sysMenu.getRowIdをDID());
             IF(SysUserFavoriteMenu!= NULL ){
                 // フラグが収集コレクションに設定されている場合 
                sysMenu.setIsFavorite( "1" ); 
            } { 
                sysMenu.setIsFavorite( " 0 " ); 
            } 
        } 
        のために(sysUserFavoriteMenu sysUserFavoriteMenu:sysUserFavoriteMenuList){
             // 判定お気に入りメニューが存在しない場合は、すべてのメニューを削除し、ユーザーの好みのメニューを置く存在する
            場合は(!sysMenuIdList.contains(sysUserFavoriteMenu.getMenuId() )){
                sysUserFavoriteMenuMapper.deleteFavoriteMenu(sysUserFavoriteMenu.getMenuId());  
            }
        } 
        // デフォルト設定のディーラーのシステムメニューのバージョンを取得 
        文字列verdion = ヌル;
         //は、トップメニューの取得 
        一覧<SYSMENU> topMenuList = sysRoleMapper.selectTopMenu(verdionを);
         IFヌル == topMenuList){
             戻り NULL ; 
        } 
        ため(SYSMENUメニュー:topMenuList){ 
            SysMenuDto S = SysMenuDto.convertSysMenuEntity(MENU); 
            getTreeStructure(S、sysMenuList); 
            List.add(S); 
        }
//ソート はlist.sort((SysMenuDto S1、S2 SysMenuDto )
。? - > = s2.getSort s1.getSort()>(1):-1 ); Logger.info( "最後のメニュー取得する:{}" 、JsonUtil.obj2String(リスト)); 戻りリスト; }

 

おすすめ

転載: www.cnblogs.com/pan-my/p/11428687.html