sangyu_ 2015-03-21 03:23 采纳率: 0%
浏览 587

RBAC问题 ,根据角色查出模块,在根据模块查出模块类型

1, 根据角色,查询出角色可以操作的模块列表
2. 根据模块列表查询总共有多少种类型,并返回其列表
接口:List queryMoudleTypeList(int roleId);
怎么实现?

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-03 13:21
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这是一个典型的权限控制和数据分层的问题。为了满足您的需求,我们可以设计一个接口来处理这个任务。下面是一个可能的实现方式:

    public class ModuleManager {
        private List<Module> moduleList;
    
        public ModuleManager(List<Module> moduleList) {
            this.moduleList = moduleList;
        }
    
        /**
         * 根据角色ID查询可以操作的模块列表。
         *
         * @param roleId 角色ID
         * @return 可以操作的模块列表
         */
        public List<String> getModulesByRoleId(int roleId) {
            return moduleList.stream()
                    .filter(module -> module.getRoleIds().contains(roleId))
                    .map(Module::getModuleName)
                    .collect(Collectors.toList());
        }
    
        /**
         * 查询模块列表中有多少种类型并返回其列表。
         *
         * @return 模块类型列表
         */
        public List<String> getModuleTypes() {
            Set<String> moduleNames = new HashSet<>();
            for (Module module : moduleList) {
                moduleNames.add(module.getModuleName());
            }
            return new ArrayList<>(moduleNames);
        }
    }
    

    在这个解决方案中,我们首先创建了一个Module类来表示模块,然后使用流式API(Stream API)来过滤出可以操作的角色的模块。接着,我们使用Collectors.toCollection()方法将结果转换为集合类型。

    对于第二个方法,我们遍历所有模块,将它们的名称添加到一个集合中,最后将其转换为列表。

    这样,您就可以通过调用queryMoudleTypeList(int roleId)获取可以操作的模块列表,以及通过调用getModuleTypes()获取模块类型的数量及其列表。

    评论

报告相同问题?

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上