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; }