|
|
@@ -17,6 +17,7 @@ import org.springframework.stereotype.Service;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.function.Function;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
@Service
|
|
|
@@ -140,6 +141,51 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
|
|
|
return sysMenus;
|
|
|
}
|
|
|
|
|
|
+ private List<SysMenu> getSysMenusNew(String sysType, int menuType,String userId) {
|
|
|
+ List<SysMenu> sysMenus = new ArrayList<>();
|
|
|
+ List<SysMenu> menus =new ArrayList<>();
|
|
|
+ if(StringUtils.isBlank(userId) || (StringUtils.isNotBlank(userId) && "admin".equals(userId))){
|
|
|
+ // LambdaQueryWrapper<SysMenu> lqw = new LambdaQueryWrapper<>();
|
|
|
+ // lqw.eq(SysMenu::getDelFlag, 0);
|
|
|
+ // lqw.eq(SysMenu::getSysType, sysType);
|
|
|
+ menus= sysMenuMapper.findBySysTypeList(sysType,"0");
|
|
|
+ // menus = list(lqw);
|
|
|
+ }else{
|
|
|
+ menus= sysRoleMenuService.gainMenuIdsByUserId(userId,sysType);
|
|
|
+ }
|
|
|
+ //填充父级菜单数据
|
|
|
+ this.addParentMenu(menus);
|
|
|
+
|
|
|
+ for (SysMenu menu : menus) {
|
|
|
+ if (menu.getParentId() == null || menu.getParentId().equalsIgnoreCase("0")) {
|
|
|
+ menu.setLevel(0);
|
|
|
+ if (!exists(sysMenus, menu)) {
|
|
|
+ sysMenus.add(menu);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sysMenus.sort((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()));
|
|
|
+ findChildren(sysMenus, menus, menuType);
|
|
|
+ return sysMenus;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void addParentMenu(List<SysMenu> menus) {
|
|
|
+ List<String> menuIds = menus.stream().map(SysMenu::getId).collect(Collectors.toList()); //menuIds
|
|
|
+ for (String menuId : menuIds) {
|
|
|
+ this.addParentId(menuId,menuIds,menus);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void addParentId(String menuId, List<String> menuIds, List<SysMenu> menus) {
|
|
|
+ SysMenu sysMenu = baseMapper.selectById(menuId);
|
|
|
+ if(ObjectUtils.isNotEmpty(sysMenu)){
|
|
|
+ if( !menuIds.contains(sysMenu.getParentId())){
|
|
|
+ menus.add(sysMenu);
|
|
|
+ this.addParentId(sysMenu.getParentId(),menuIds,menus);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private List<SysMenu> getSysMenus(String sysType, int menuType,String userId) {
|
|
|
List<SysMenu> sysMenus = new ArrayList<>();
|
|
|
List<SysMenu> menus =new ArrayList<>();
|
|
|
@@ -173,7 +219,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
|
|
|
*/
|
|
|
@Override
|
|
|
public List<SysMenu> findMenuListByUserId(String userId, String sysType) {
|
|
|
- return getSysMenus(sysType,0,userId);
|
|
|
+ return getSysMenusNew(sysType,0,userId);
|
|
|
}
|
|
|
|
|
|
|