人間の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(リスト)); 戻りリスト; }