Bladeren bron

修复前端用户菜单显示重复问题。

xuxuan 4 jaren geleden
bovenliggende
commit
8a7510526e

+ 12 - 4
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/MenuLogicImpl.java

@@ -6,12 +6,12 @@ import cn.iselab.mooctest.site.service.RoleService;
 import cn.iselab.mooctest.site.web.data.MenuVO;
 import cn.iselab.mooctest.site.web.data.wrapper.MenuVOWrapper;
 import cn.iselab.mooctest.site.web.logic.MenuLogic;
-import java.util.HashMap;
-import java.util.Map;
+
+import java.util.*;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
 import java.util.stream.Collectors;
 
 /**
@@ -35,10 +35,17 @@ public class MenuLogicImpl implements MenuLogic {
 
     @Override
     public List<MenuVO> getMenuListByUserId(Long userId) {
-        return roleService.getRolesOfUser(userId).stream().
+        List<MenuVO>  menuVOS=roleService.getRolesOfUser(userId).stream().
                 flatMap(role -> menuVOWrapper.wrap(menuService.getMenuListByRoleId(role.getId())).stream())
                 .distinct()
                 .collect(Collectors.toList());
+        menuVOS = menuVOS.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<MenuVO>(Comparator.comparing(MenuVO::getDetail))), ArrayList::new));
+
+        for(MenuVO menuVO:menuVOS){
+            System.out.println(menuVO.getDetail());
+        }
+         return menuVOS;
+
     }
 
     @Override
@@ -51,6 +58,7 @@ public class MenuLogicImpl implements MenuLogic {
                 .filter(vo -> vo.getRoleId() == RoleType.WORKER.getCode()).collect(Collectors.toList());
         List<MenuVO> managerMenus = allMenus.stream()
                 .filter(vo -> vo.getRoleId() != RoleType.WORKER.getCode()).collect(Collectors.toList());
+        managerMenus = managerMenus.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<MenuVO>(Comparator.comparing(MenuVO::getDetail))), ArrayList::new));
 
         Map<String, List<MenuVO>> menuMap = new HashMap<>(2);
         menuMap.put(STUDENT_MENUS, studentMenus);