1, 根据角色,查询出角色可以操作的模块列表
2. 根据模块列表查询总共有多少种类型,并返回其列表
接口:List queryMoudleTypeList(int roleId);
怎么实现?
![](https://profile-avatar.csdnimg.cn/8a8b1506d42e43009e94f5e18fbc1cee_sangyu_.jpg!4)
RBAC问题 ,根据角色查出模块,在根据模块查出模块类型
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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 如何将脑的图像投影到颅骨上