mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-09-19 17:58:17 +08:00
feat: 增加忽略数据权限注解
This commit is contained in:
parent
0a3d5fd5d4
commit
ec77669c51
@ -0,0 +1,23 @@
|
||||
package org.dromara.common.mybatis.annotation;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* 忽略数据权限注解。
|
||||
* 当需要在忽略数据权限的上下文中直接或间接调用 Mapper 时候,
|
||||
* 可以使用该注解修饰当前函数,避免显式的使用
|
||||
* <pre>
|
||||
* DataPermissionHelper.ignore(() -> {
|
||||
* // 业务代码
|
||||
* });
|
||||
* </pre>
|
||||
* 减少代码作用域层级,这尤其在执行定时任务的时候具有明显优势。
|
||||
*
|
||||
* @author dhb52
|
||||
* @version 5.2.1
|
||||
*/
|
||||
@Target({ElementType.METHOD})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Documented
|
||||
public @interface DataPermissionIgnored {
|
||||
}
|
||||
@ -0,0 +1,31 @@
|
||||
package org.dromara.common.mybatis.aspectj;
|
||||
|
||||
import org.aspectj.lang.ProceedingJoinPoint;
|
||||
import org.aspectj.lang.annotation.Around;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
import org.dromara.common.mybatis.annotation.DataPermissionIgnored;
|
||||
import org.dromara.common.mybatis.helper.DataPermissionHelper;
|
||||
|
||||
/**
|
||||
* 忽略数据权限, 相应注解 {@link DataPermissionIgnored }
|
||||
*
|
||||
* @author dhb52
|
||||
* @since 5.2.1
|
||||
*/
|
||||
@Aspect
|
||||
public class DataPermissionIgnoredAspect {
|
||||
|
||||
@Around("@annotation(dataPermissionIgnored)")
|
||||
@SuppressWarnings("unused")
|
||||
public Object around(ProceedingJoinPoint joinPoint, DataPermissionIgnored dataPermissionIgnored) {
|
||||
|
||||
return DataPermissionHelper.ignore(() -> {
|
||||
try {
|
||||
return joinPoint.proceed();
|
||||
} catch (Throwable e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerIntercept
|
||||
import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
|
||||
import org.dromara.common.core.factory.YmlPropertySourceFactory;
|
||||
import org.dromara.common.core.utils.SpringUtils;
|
||||
import org.dromara.common.mybatis.aspectj.DataPermissionIgnoredAspect;
|
||||
import org.dromara.common.mybatis.handler.InjectionMetaObjectHandler;
|
||||
import org.dromara.common.mybatis.handler.MybatisExceptionHandler;
|
||||
import org.dromara.common.mybatis.interceptor.PlusDataPermissionInterceptor;
|
||||
@ -116,4 +117,12 @@ public class MybatisPlusConfig {
|
||||
* https://baomidou.com/pages/2a45ff/
|
||||
*/
|
||||
|
||||
/**
|
||||
* 忽略数据权限
|
||||
*/
|
||||
@Bean
|
||||
public DataPermissionIgnoredAspect dataPermissionIgnoredAspect() {
|
||||
return new DataPermissionIgnoredAspect();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -7,6 +7,7 @@ import org.dromara.common.core.utils.ValidatorUtils;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.core.validate.QueryGroup;
|
||||
import org.dromara.common.mybatis.annotation.DataPermissionIgnored;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
@ -52,6 +53,7 @@ public class TestDemoController extends BaseController {
|
||||
*/
|
||||
@SaCheckPermission("demo:demo:list")
|
||||
@GetMapping("/list")
|
||||
// @DataPermissionIgnored
|
||||
public TableDataInfo<TestDemoVo> list(@Validated(QueryGroup.class) TestDemoBo bo, PageQuery pageQuery) {
|
||||
return testDemoService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user