Obtain the appropriate permissions menu based on user login

Log human userId obtain a corresponding character reacquisition permissions menu at a corresponding roles (Role association table role menu association table) by

 1 , constructed recursively obtaining parent method
  Private  void getUserMenus (the HashMap <String, 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); 
            } 
        } 
    }

 2Recursively acquire a child node
 Private  void getTreeStructure (SysMenuDto the root, List <SYSMENU> orgs) {
         for (SYSMENU ORG: orgs) {
             IF (. Org.getParentId () the equals (root.getId ())) { 
                SysMenuDto S = SysMenuDto. convertSysMenuEntity (ORG); 
                getTreeStructure (S, orgs); 
                IF (root.getChildrens () == null ) { 
                    root.setChildrens ( new new the ArrayList <> ()); 
                } 
                . root.getChildrens () the Add (S); 
            } 
        } 
    }

 3 , build tree data structure
  publicList <SysMenuDto> getSysMenuTreeDataByAdmin (String userId, String DID) { 
        List <SysMenuDto> List = new new ArrayList <> ();
         // query all of the menu lists 
        List <SYSMENU> sysMenuList = sysRoleMapper.findListVisible ();
         // query all menu-coded list of 
        list <String> sysMenuIdList = sysRoleMapper.findListId ();
         // get the collection of menus 
        list <SysUserFavoriteMenu> sysUserFavoriteMenuList = sysUserFavoriteMenuMapper.getSysUserFavoriteMenu (userId, DID);
         // iterate determine whether the collection 
        for  (SYSMENU SYSMENU: sysMenuList) {
            SysUserFavoriteMenu sysUserFavoriteMenu = sysUserFavoriteMenuMapper.getFavoriteMenu (the userId, DID, sysMenu.getRowId ());
             IF (! SysUserFavoriteMenu = null ) {
                 // if the flag is set to collection collection 
                sysMenu.setIsFavorite ( ". 1" ); 
            } the else { 
                sysMenu.setIsFavorite ( " 0 " ); 
            } 
        } 
        for (sysUserFavoriteMenu sysUserFavoriteMenu: sysUserFavoriteMenuList) {
             // judgment favorites menu exists absence put the user's favorite menu remove all menu 
            iF ! ( sysMenuIdList.contains (sysUserFavoriteMenu.getMenuId () )) {
                sysUserFavoriteMenuMapper.deleteFavoriteMenu (sysUserFavoriteMenu.getMenuId ());  
            }
        } 
        // get the system menu version of the default settings dealer 
        String verdion = null ;
         // Gets the top menu 
        List <SYSMENU> topMenuList = sysRoleMapper.selectTopMenu (verdion);
         IF ( null == topMenuList) {
             return  null ; 
        } 
        for (SYSMENU MENU: topMenuList) { 
            SysMenuDto S = SysMenuDto.convertSysMenuEntity (MENU); 
            getTreeStructure (S, sysMenuList); 
            List.add (S); 
        }
// Sort list.sort ((SysMenuDto s1, SysMenuDto s2 )
-> = s2.getSort s1.getSort ()> (). 1: -1? ); Logger.info ( "Get the final menu: {}" , JsonUtil.obj2String (List)); return List; }

 

Guess you like

Origin www.cnblogs.com/pan-my/p/11428687.html