本系统的数据权限功能,是通过角色控制的,角色会通过 sys_role_data_scope 表关联机构 sys_org 表。业务表如果需要有数据权限功能,表里面就需要有
org_id
和creator
字段,这样才能实现数据权限功能。
下面是机构管理的数据权限实现,代码如下:
// SysOrgServiceImpl.java 代码片段
// 机构列表,会进行数据过滤
public List<SysOrgVO> getList() {
Map<String, Object> params = new HashMap<>();
// 实现数据权限的关键代码,会生成过滤的SQL条件
params.put(Constant.DATA_SCOPE, getDataScope("t1", "id"));
// 机构列表
List<SysOrgEntity> entityList = baseMapper.getList(params);
return TreeUtils.build(SysOrgConvert.INSTANCE.convertList(entityList));
}
// xml 代码片段,上面的过滤条件,会自动追加到sql语法后面
<mapper namespace="net.maku.system.dao.SysOrgDao">
<select id="getList" resultType="net.maku.system.entity.SysOrgEntity">
select t1.* from sys_org t1
</select>
</mapper>
完成上面的操作后,数据权限,就实现好了。