系列文章目录
前言
本系列文章主要记录项目过程中重点的项目技术
一、官方文档参考主要代码
/**
* 添加数据权限过滤条件
*/
public void addDataScopeFilter(T entity){
// 举例1:公司数据权限过滤,实体类@Table注解extWhereKeys="dsf"
entity.getSqlMap().getDataScope().addFilter("dsf", "Company",
"a.company_code", DataScope.CTRL_PERMI_HAVE);
// 举例2:部门数据权限过滤,实体类@Table注解extWhereKeys="dsf"
entity.getSqlMap().getDataScope().addFilter("dsf", "Office",
"a.office_code", DataScope.CTRL_PERMI_HAVE);
// 举例3:角色数据权限过滤,实体类@Table注解extWhereKeys="dsf"
entity.getSqlMap().getDataScope().addFilter("dsf", "Role",
"a.role_code", DataScope.CTRL_PERMI_HAVE);
// 举例4:用户、员工(自己创建的)数据权限根据部门过滤,实体类@Table注解extWhereKeys="dsfOffice"
entity.getSqlMap().getDataScope().addFilter("dsfOffice", "Office",
"e.office_code", "a.create_by", DataScope.CTRL_PERMI_HAVE);
// 举例5:用户、员工(自己创建的)数据权限根据公司过滤,实体类@Table注解extWhereKeys="dsfCompany"
entity.getSqlMap().getDataScope().addFilter("dsfCompany", "Company",
"e.company_code", "a.create_by", DataScope.CTRL_PERMI_HAVE);
}
二、实现数据过滤
1.在service层编写过滤方法
代码如下(示例):
/**
* 添加数据权限过滤条件
*/
public void addDataScopeFilter(Tracker entity){
// 举例2:部门数据权限过滤,实体类@Table注解extWhereKeys="dsf"
entity.getSqlMap().getDataScope().addFilter("dsf", "Office",
"a.office_code", DataScope.CTRL_PERMI_HAVE);
}
2.control层调用过滤方法
注意在查询的时候进行过滤,代码如下(示例):
/**
* 查询列表数据
*/
@RequiresPermissions("lbst:tracker:view")
@RequestMapping(value = "listData")
@ResponseBody
public Page<Tracker> listData(Tracker tracker, HttpServletRequest request, HttpServletResponse response) {
tracker.setPage(new Page<>(request, response));
//调用过滤方法
trackerService.addDataScopeFilter(tracker);
Page<Tracker> page = trackerService.findPage(tracker);
return page;
}
3.实体中添加过滤属性
1.在属性当中添加如下图红色标记的内容,注意extWhereKeys的值必须与addDataScopeFilter方法中addFilter方法的第一个参数的值相同
三、左连接数据过滤
前面两步与一般数据过滤相同,但是第三部不同,具体见下图红色标记处
总结
至此,本文章结束