数据权限用法二(未用查询过滤器) - xinwu-yang/cube-java GitHub Wiki
前言:现有的列表数据权限,需要在后端list请求中调用QueryGenerator.initQueryWrapper方法,否则配置权限无法生效,故而本章节讲述的是如何手工获取数据权限,不通过上述方法,而是自己在外部处理。
// Controller代码
// 需要将前端将list请求地址改成此地址
@GetMapping("/sqlList")
@PermissionData("cube/CubeDemoList")
public Result<IPage<CubeDemo>> loadSqlPermissonList(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) {
Result<IPage<CubeDemo>> result = new Result<>();
IPage<CubeDemo> pageList = cubeDemoService.queryListWithPermission(pageSize, pageNo);
result.setSuccess(true);
result.setResult(pageList);
return result;
}
// Service代码
public IPage<CubeDemo> queryListWithPermission(int pageSize, int pageNo) {
Page<CubeDemo> page = new Page<>(pageNo, pageSize);
// 就是调用这个QueryGenerator.installAuthJdbc方法获取权限sql
String sql = QueryGenerator.installAuthJdbc(CubeDemo.class);
return this.baseMapper.queryListWithPermission(page, sql);
}
// Mapper接口方法定义
IPage<CubeDemo> queryListWithPermission(Page<CubeDemo> page, @Param("permissionSql") String permissionSql);
<select id="queryListWithPermission" parameterType="Object" resultType="com.tievd.cube.modules.demo.entity.CubeDemo">
select * from demo where 1=1 ${permissionSql}
</select>
// Contoller代码
// 需要将前端将List请求地址改成此地址
@GetMapping("/mpList")
@PermissionData("cube/CubeDemoList")
public Result<IPage<CubeDemo>> loadMpPermissonList(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) {
// 此处使用的是QueryWrapper,如果你需要用LambdaQueryWrapper,请先new一个QueryWrapper
// 接着加载数据权限,然后通过queryWrapper.lambda()将其转化成LambdaQueryWrapper
// 最后你就能使用LambdaQueryWrapper处理自己的逻辑了
QueryWrapper<CubeDemo> queryWrapper = new QueryWrapper<>();
// 调用这个QueryGenerator.installAuthMplus方法加载数据权限
QueryGenerator.installAuthMplus(queryWrapper, CubeDemo.class);
Page<CubeDemo> page = new Page<>(pageNo, pageSize);
IPage<CubeDemo> pageList = cubeDemoService.page(page, queryWrapper);
return Result.ok(pageList);
}