Browse Source

数据权限:DataFIlter增加上级相关过滤

master
wxz 5 years ago
parent
commit
a3f7fa6328
  1. 38
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/aspect/DataFilterAspect.java
  2. 7
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/OpeScopeConstant.java
  3. 1
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java
  4. 1
      epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java

38
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("_");

7
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";

1
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 {
/**

1
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 {

Loading…
Cancel
Save