本系统的数据权限功能,是通过角色控制的,角色会通过 sys_role_data_scope 表关联机构 sys_org 表。业务表如果需要有数据权限功能,表里面就需要有 org_idcreator 字段,这样才能实现数据权限功能。

下面是机构管理的数据权限实现,代码如下:

// 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>

完成上面的操作后,数据权限,就实现好了。