package com.iailab.framework.datapermission.core.util; import com.iailab.framework.datapermission.core.annotation.DataPermission; import com.iailab.framework.datapermission.core.aop.DataPermissionContextHolder; import lombok.SneakyThrows; import java.util.concurrent.Callable; /** * 数据权限 Util * * @author iailab */ public class DataPermissionUtils { private static DataPermission DATA_PERMISSION_DISABLE; @DataPermission(enable = false) @SneakyThrows private static DataPermission getDisableDataPermissionDisable() { if (DATA_PERMISSION_DISABLE == null) { DATA_PERMISSION_DISABLE = DataPermissionUtils.class .getDeclaredMethod("getDisableDataPermissionDisable") .getAnnotation(DataPermission.class); } return DATA_PERMISSION_DISABLE; } /** * 忽略数据权限,执行对应的逻辑 * * @param runnable 逻辑 */ public static void executeIgnore(Runnable runnable) { DataPermission dataPermission = getDisableDataPermissionDisable(); DataPermissionContextHolder.add(dataPermission); try { // 执行 runnable runnable.run(); } finally { DataPermissionContextHolder.remove(); } } /** * 忽略数据权限,执行对应的逻辑 * * @param callable 逻辑 * @return 执行结果 */ @SneakyThrows public static T executeIgnore(Callable callable) { DataPermission dataPermission = getDisableDataPermissionDisable(); DataPermissionContextHolder.add(dataPermission); try { // 执行 callable return callable.call(); } finally { DataPermissionContextHolder.remove(); } } }