- 1.自定义数据过滤的方法
- 2.自定义mapper的查询方法
- interface中
- xml文件中
@Override
public QueryWrapper dataScopeFilter(Long sysUserId,String userAlias,String companyAlias){
1).根据用户id sysUserId查询用户
//如果查询的用户读取数据的范围等于设定值 则组装一个QueryWrapper对象
if (GlobalConfig.DATA_SCOPE_COMPANY_AND_CHILD.equals(oaSysRole.getDataScope())) {
qw.eq(String.format("%s.%s", officeAlias, companyAlias), sysUser.getCompanyId());
qw.or();
qw.likeRight(String.format("%s.%s", companyAlias, parentIds), this.getParentIds(sysUser.getCompanyId()) + sysUser.getCompanyId() + ",");
} else if (GlobalConfig.DATA_SCOPE_COMPANY.equals(oaSysRole.getDataScope())) {
qw.eq(String.format("%s.%s", companyAlias, officeId), sysUser.getCompanyId());
qw.or();
qw.eq(String.format("%s.%s", companyAlias, parentId), sysUser.getCompanyId());
qw.eq(String.format("%s.%s", companyAlias, type), EOffIceType.dept.getValue());
}
return qw;
}
2.自定义mapper的查询方法
将上一步返回的对象作为参数传递给mapper的查询方法。
Listinterface中ods = sysGetOfficeIdListMapper.selectOfficeList(queryWrapper);
Listxml文件中selectOfficeList(@Param(Constants.WRAPPER) Wrapper wrapper);
${ew.customSqlSegment} 会替换成参数中queryWrapper对象的条件,从而组装成一个完整的sql进行查询。



