From a3f7fa63284b6c7e2df24e0f420523f98f6d0e61 Mon Sep 17 00:00:00 2001 From: wxz Date: Thu, 30 Apr 2020 11:13:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90=EF=BC=9ADa?= =?UTF-8?q?taFIlter=E5=A2=9E=E5=8A=A0=E4=B8=8A=E7=BA=A7=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mybatis/aspect/DataFilterAspect.java | 38 +++++++++++++++---- .../tools/constant/OpeScopeConstant.java | 7 ++++ .../com/epmet/feign/EpmetUserFeignClient.java | 1 + .../com/epmet/feign/EpmetUserFeignClient.java | 1 + 4 files changed, 40 insertions(+), 7 deletions(-) diff --git a/epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/aspect/DataFilterAspect.java b/epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/aspect/DataFilterAspect.java index 2c978e86cf..1440cd3309 100644 --- a/epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/aspect/DataFilterAspect.java +++ b/epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/aspect/DataFilterAspect.java @@ -393,7 +393,7 @@ public class DataFilterAspect { /** * 计算组织范围过滤sql - * + * PS:这个方法需要优化,当前阶段因为逻辑不稳定,暂时不做过度封装 * @param scopes * @param currOrg * @param pOrgPath @@ -411,16 +411,32 @@ public class DataFilterAspect { break; case OpeScopeConstant.ORG_CURR_AND_SUB: if (StringUtils.isBlank(tableAlias)) { - sb.append(" ORG_ID_PATH like '").append(pOrgPath).append("%' ").append(" OR "); + sb.append(" ORG_ID_PATH like '").append(pOrgPath).append("%' OR "); } else { - sb.append(" ").append(tableAlias).append(".ORG_ID_PATH like '").append(pOrgPath).append("%' ").append(" OR "); + sb.append(" ").append(tableAlias).append(".ORG_ID_PATH like '").append(pOrgPath).append("%' OR "); } break; case OpeScopeConstant.ORG_CURR_SUB: if (StringUtils.isBlank(tableAlias)) { - sb.append(" ORG_ID_PATH like '").append(pOrgPath).append(orgIdPathSpliter).append(currOrg).append("%' ").append(" OR "); + sb.append(" ORG_ID_PATH like '").append(pOrgPath).append(orgIdPathSpliter).append(currOrg).append("%' OR "); + } else { + sb.append(" ").append(tableAlias).append(".ORG_ID_PATH like '").append(pOrgPath).append(orgIdPathSpliter).append(currOrg).append("%' OR "); + } + break; + //当前单位的父级单位 + case OpeScopeConstant.ORG_CURR_SUP: + if (StringUtils.isBlank(tableAlias)) { + sb.append(" '").append(pOrgPath).append("' like CONCAT(").append("ORG_ID_PATH,'%') OR "); + } else { + sb.append(" '").append(pOrgPath).append("' like CONCAT(").append(tableAlias).append(".ORG_ID_PATH,'%') OR "); + } + break; + // 当前单位及其父级单位 + case OpeScopeConstant.ORG_CURR_AND_SUP: + if (StringUtils.isBlank(tableAlias)) { + sb.append(" '").append(pOrgPath).append(orgIdPathSpliter).append(currOrg).append("' like CONCAT(").append("ORG_ID_PATH,'%') OR "); } else { - sb.append(" ").append(tableAlias).append(".ORG_ID_PATH like '").append(pOrgPath).append(orgIdPathSpliter).append(currOrg).append("%' ").append(" OR "); + sb.append(" '").append(pOrgPath).append(orgIdPathSpliter).append(currOrg).append("' like CONCAT(").append(tableAlias).append(".ORG_ID_PATH,'%' ) OR "); } break; case OpeScopeConstant.ORG_EQUAL: @@ -435,6 +451,14 @@ public class DataFilterAspect { // todo 同级的子级 //sb.append(" OR "); break; + case OpeScopeConstant.ORG_EQUAL_AND_SUP: + // todo 同级及其上级 + //sb.append(" OR "); + break; + case OpeScopeConstant.ORG_EQUAL_SUP: + // todo 同级的上级 + //sb.append(" OR "); + break; } } } @@ -453,8 +477,8 @@ public class DataFilterAspect { continue; } if (OpeScopeConstant.ORG_ALL.equals(scope.getScopeKey())) { - // 如果是all,那么清除所有的scope限制, - filtedScopes.clear(); + // 该操作具有all的权限,直接放入 + filtedScopes.put(scopeIndex, scope); break; } String[] currArr = scopeIndex.split("_"); diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/OpeScopeConstant.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/OpeScopeConstant.java index f2c29f7238..b770f2f2cb 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/OpeScopeConstant.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/OpeScopeConstant.java @@ -1,5 +1,8 @@ package com.epmet.commons.tools.constant; +/** + * 操作范围常量 + */ public class OpeScopeConstant { // 权限覆盖所有范围 @@ -9,6 +12,10 @@ public class OpeScopeConstant { public static final String ORG_EQUAL_SUB = "org_equal_sub"; //"同级组织及下级" public static final String ORG_EQUAL_AND_SUB = "org_equal_and_sub"; + // 同级组织的上级 + public static final String ORG_EQUAL_SUP = "org_equal_sup"; + // 同级组织及上级 + public static final String ORG_EQUAL_AND_SUP = "org_equal_and_sup"; //"同级组织" public static final String ORG_EQUAL = "org_equal"; diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java index 016e0311aa..1147f23ae6 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java @@ -32,6 +32,7 @@ import java.util.List; * @dscription * @date 2020/3/19 9:32 */ +//url = "8087" @FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallback = EpmetUserFeignClientFallBack.class) public interface EpmetUserFeignClient { /** diff --git a/epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java b/epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java index c3f44bbc57..1fcb51ffca 100644 --- a/epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java +++ b/epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java @@ -12,6 +12,7 @@ import org.springframework.web.bind.annotation.*; * @dscription * @date 2020/3/19 9:32 */ +//, url = "localhost:8087" @FeignClient(name = ServiceConstant.EPMET_USER_SERVER, path="/epmetuser", fallback = EpmetUserFeignClientFallback.class) public interface EpmetUserFeignClient {