Java 代码示例:按分类分组权限数据并转换成 RolePermissionCategoryItem 对象列表
这段代码通过 Java 代码实现对数据库中权限数据的分类分组,并将同一分类下的权限数据转换为 RolePermissionCategoryItem 对象列表。
代码首先使用 PermissionMapper.selectList() 方法从数据库中获取权限数据,并根据 flowIn.getType() 筛选出指定类型的权限。
接着,代码使用 Stream API 对获取到的权限数据进行操作,并通过 Collectors.groupingBy() 方法按照分类对权限进行分组。分组的逻辑是:如果权限的 category 属性为空,则将其归入名为 '未分类' 的分类中,否则使用 category 属性作为分类名称。
每个分类下的权限数据会被转换为一个 RolePermissionCategoryItem 对象列表,该对象包含权限的 ID、名称和选中状态。选中状态由 pIdSet 决定,如果权限的 ID 在 pIdSet 中,则 selected 属性为 1,否则为 0。
最终返回的是一个 TreeMap,其中 key 为分类名称,value 为该分类下的权限列表。
以下是对代码中关键部分的解释:
DataSourceWrapperHolder.get(Permission.class).eq(Permission.COL_TYPE, flowIn.getType()):获取指定类型的权限数据。Collectors.groupingBy(p -> StringUtils.isBlank(p.getCategory()) ? p.getName() : p.getCategory(), TreeMap::new, Collectors.mapping(p -> { ... }, Collectors.toList())):将权限数据按照分类分组并转换为RolePermissionCategoryItem对象列表。RolePermissionCategoryItem:自定义的权限对象,包含 ID、名称和选中状态。TreeMap:用于存储分类和权限列表的映射关系,保证按分类名称排序。
这段代码实现了对数据库中权限数据的分类分组,并以可读的格式返回,便于后续进行权限管理操作。
原文地址: https://www.cveoy.top/t/topic/oOhL 著作权归作者所有。请勿转载和采集!