diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/helper/DataPermissionHelper.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/helper/DataPermissionHelper.java index 74db1a2bb..38b308957 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/helper/DataPermissionHelper.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/helper/DataPermissionHelper.java @@ -4,6 +4,8 @@ import cn.hutool.core.util.ObjectUtil; import com.ruoyi.common.core.utils.ServletUtils; import lombok.AccessLevel; import lombok.NoArgsConstructor; +import org.apache.dubbo.rpc.RpcContext; +import org.apache.dubbo.rpc.RpcServiceContext; import javax.servlet.http.HttpServletRequest; import java.util.HashMap; @@ -19,7 +21,7 @@ import java.util.Map; @SuppressWarnings("unchecked cast") public class DataPermissionHelper { - private static final String DATA_PERMISSION_KEY = "data:permission"; + public static final String DATA_PERMISSION_KEY = "data:permission"; public static T getVariable(String key) { Map context = getContext(); @@ -34,10 +36,20 @@ public class DataPermissionHelper { public static Map getContext() { HttpServletRequest request = ServletUtils.getRequest(); - Object attribute = request.getAttribute(DATA_PERMISSION_KEY); - if (ObjectUtil.isNull(attribute)) { - request.setAttribute(DATA_PERMISSION_KEY, new HashMap<>()); + Object attribute; + if (request != null) { attribute = request.getAttribute(DATA_PERMISSION_KEY); + if (ObjectUtil.isNull(attribute)) { + request.setAttribute(DATA_PERMISSION_KEY, new HashMap<>()); + attribute = request.getAttribute(DATA_PERMISSION_KEY); + } + } else { + RpcServiceContext context = RpcContext.getServiceContext(); + attribute = context.getObjectAttachment(DATA_PERMISSION_KEY); + if (ObjectUtil.isNull(attribute)) { + context.setObjectAttachment(DATA_PERMISSION_KEY, new HashMap<>()); + attribute = context.getObjectAttachment(DATA_PERMISSION_KEY); + } } if (attribute instanceof Map) { return (Map) attribute;