分享一个通用的数据权限的过滤方法,简单,高效,好用。
先定义数据范围枚举
public enum DataScopeEnums {
Self("仅本人"),
Organization("本组织"),
OrganizationAndSub("本组织及子组织"),
All("所有数据");
/**
* 说明
*/
public String note;
DataScopeEnums(String note) {
this.note = note;
}
}
SelectInterceptor 是一个功能强大的 MyBatis 拦截器,能够根据用户的数据权限范围动态修改查询条件,实现细粒度的数据权限控制。它通过灵活的 SQL 拼接和多级权限判断,满足了复杂业务场景下的需求。
package com.coder4j.platform.interceptor;
import com.coder4j.starter.mybatis.BaseQuery;
import com.coder4j.starter.tools.enums.StatusEnums;
import com.coder4j.starter.tools.util.StringUtils;
import com.coder4j.starter.web.DataScopeEnums;
import com.coder4j.starter.web.jwt.AuthVO;
import com.coder4j.starter.web.util.AuthUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.executor.Executor;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.plugin.Intercepts;