Browse Source

添加登录者按钮列表

lyhzzz 3 năm trước cách đây
mục cha
commit
90342c6d68

+ 4 - 0
src/main/java/com/fdkankan/manage/controller/SysMenuController.java

@@ -66,6 +66,10 @@ public class SysMenuController extends BaseController{
     public ResultData getByUserId(){
         return ResultData.ok(menuService.getByUserId(getUserId()));
     }
+    @GetMapping("/getButtonByUserId")
+    public ResultData getButtonByUserId(){
+        return ResultData.ok(menuService.getButtonByUserId(getUserId()));
+    }
 
     @GetMapping("/getByRoleId")
     public ResultData getByRoleId(@RequestParam(required = false) Long roleId){

+ 2 - 0
src/main/java/com/fdkankan/manage/service/ISysMenuService.java

@@ -27,4 +27,6 @@ public interface ISysMenuService extends IService<SysMenu> {
     List<SysMenuVo>  getByUserId(Long userId);
 
     List<SysMenuVo>  getByRoleId(List<Long> menuIds,Long roleId);
+
+    List<SysMenu> getButtonByUserId(Long userId);
 }

+ 22 - 6
src/main/java/com/fdkankan/manage/service/impl/SysMenuServiceImpl.java

@@ -19,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -53,7 +54,7 @@ public class SysMenuServiceImpl extends ServiceImpl<ISysMenuMapper, SysMenu> imp
         Page<SysMenu> page = this.page(new Page<>(param.getPageNum(),param.getPageSize()), wrapper);
        // List<SysMenuVo> voList = getByParentId(null,page.getRecords(),false,null);
 
-        List<SysMenuVo> allVos = setTreeMenuVo(false,null);
+        List<SysMenuVo> allVos = setTreeMenuVo(false,null,null);
         List<Long> ids  = page.getRecords().parallelStream().map(SysMenu::getId).collect(Collectors.toList());
         List<SysMenuVo> voList = allVos.parallelStream().filter(vo -> ids.contains(vo.getId())).collect(Collectors.toList());
 
@@ -65,7 +66,7 @@ public class SysMenuServiceImpl extends ServiceImpl<ISysMenuMapper, SysMenu> imp
 
     @Override
     public List<SysMenuVo> allShowList() {
-        return setTreeMenuVo(true,null);
+        return setTreeMenuVo(true,null,null);
     }
 
     @Override
@@ -74,7 +75,7 @@ public class SysMenuServiceImpl extends ServiceImpl<ISysMenuMapper, SysMenu> imp
         List<SysMenu> menuList  = this.getListByUserId(userId);
         List<Long> menuIds = menuList.parallelStream().map(SysMenu::getId).collect(Collectors.toList());
         menuList.forEach(sysMenu -> setMenuIds(menuIds,sysMenu));
-        return getByRoleId(menuIds,user.getRoleId());
+        return  getByRoleId(menuIds, user.getRoleId());
     }
 
 
@@ -95,7 +96,7 @@ public class SysMenuServiceImpl extends ServiceImpl<ISysMenuMapper, SysMenu> imp
             }
             menuIds = roleMenus.parallelStream().map(SysRoleMenu::getMenuId).collect(Collectors.toList());
         }
-        return setTreeMenuVo(true,menuIds);
+        return setTreeMenuVo(true,menuIds,2);
     }
 
     //递归设置menuTree
@@ -130,7 +131,7 @@ public class SysMenuServiceImpl extends ServiceImpl<ISysMenuMapper, SysMenu> imp
     }
 
     //查询到全部list ,根据parentId组装树形结构
-    private List<SysMenuVo> setTreeMenuVo( boolean show ,List<Long> menuIds){
+    private List<SysMenuVo> setTreeMenuVo( boolean show ,List<Long> menuIds,Integer notType){
         LambdaQueryWrapper<SysMenu> wrapper = new LambdaQueryWrapper<>();
         if(show){
             wrapper.eq(SysMenu::getIsShow,1);
@@ -138,6 +139,9 @@ public class SysMenuServiceImpl extends ServiceImpl<ISysMenuMapper, SysMenu> imp
         if(menuIds != null){
             wrapper.in(SysMenu::getId,menuIds);
         }
+        if(notType!=null){
+            wrapper.notIn(SysMenu::getType, Arrays.asList(notType));
+        }
         List<SysMenu> list = this.list(wrapper);
 
         List<SysMenuVo> voList = new ArrayList<>();
@@ -167,6 +171,9 @@ public class SysMenuServiceImpl extends ServiceImpl<ISysMenuMapper, SysMenu> imp
         return voList;
     }
 
+    /**
+     * 递归 将children为空设置为null
+     */
     private void setChildrenNull(List<SysMenuVo> voList){
         if(voList == null || voList.size() ==0){
             return ;
@@ -180,5 +187,14 @@ public class SysMenuServiceImpl extends ServiceImpl<ISysMenuMapper, SysMenu> imp
         }
     }
 
-
+    @Override
+    public List<SysMenu> getButtonByUserId(Long userId) {
+        SysUser user = userService.getById(userId);
+        List<SysRoleMenu> roleMenus  = roleMenuService.getByRoleId(user.getRoleId());
+        List<Long> menuId = roleMenus.parallelStream().map(SysRoleMenu::getMenuId).collect(Collectors.toList());
+        LambdaQueryWrapper<SysMenu> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(SysMenu::getId,menuId);
+        wrapper.eq(SysMenu::getType,2);
+        return this.list(wrapper);
+    }
 }