Browse Source

1.权限模块调整,将网格id和部门id的输入由单个字符串改为字符串列表

master
wxz 5 years ago
parent
commit
973b8d6fe0
  1. 4
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/annotation/DataFilter.java
  2. 26
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/aspect/DataFilterAspect.java
  3. 5
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/dto/form/GetSQLFilterFormDTO.java
  4. 2
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/feign/MybatisGovAccessFeignClient.java
  5. 5
      epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/form/GetSQLFilterFormDTO.java
  6. 54
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/AccessServiceImpl.java

4
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/annotation/DataFilter.java

@ -32,12 +32,12 @@ public @interface DataFilter {
* public void test(String a, String b, String gridId) {...} * public void test(String a, String b, String gridId) {...}
* @return * @return
*/ */
String gridIdArgName() default ""; String gridIdsArgName() default "";
/** /**
* 部门ID参数名 * 部门ID参数名
* @return * @return
*/ */
String deptIdArgName() default ""; String deptIdsArgName() default "";
} }

26
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/aspect/DataFilterAspect.java

@ -19,6 +19,8 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Set;
/** /**
* 数据过滤切面处理类 * 数据过滤切面处理类
* *
@ -57,24 +59,24 @@ public class DataFilterAspect {
MethodSignature methodSignature = (MethodSignature) point.getSignature(); MethodSignature methodSignature = (MethodSignature) point.getSignature();
DataFilter dataFilterAnno = methodSignature.getMethod().getAnnotation(DataFilter.class); DataFilter dataFilterAnno = methodSignature.getMethod().getAnnotation(DataFilter.class);
String tableAlias = dataFilterAnno.tableAliases()[0]; String tableAlias = dataFilterAnno.tableAliases()[0];
String gridIdArgName = dataFilterAnno.gridIdArgName(); String gridIdsArgName = dataFilterAnno.gridIdsArgName();
String deptIdArgName = dataFilterAnno.deptIdArgName(); String deptIdsArgName = dataFilterAnno.deptIdsArgName();
String[] parameterNames = methodSignature.getParameterNames(); String[] parameterNames = methodSignature.getParameterNames();
// 取出注解参数中指定的gridId和deptId的入参的值 // 取出注解参数中指定的gridId和deptId的入参的值
String gridId = null; Set<String> gridIds = null;
String deptId = null; Set<String> deptIds = null;
if (StringUtils.isNotBlank(gridIdArgName)) { if (StringUtils.isNotBlank(gridIdsArgName)) {
int gridIdArgIndex = ArrayUtils.indexOf(parameterNames, gridIdArgName); int gridIdArgIndex = ArrayUtils.indexOf(parameterNames, gridIdsArgName);
if (gridIdArgIndex >-1){ if (gridIdArgIndex >-1){
gridId = (String) point.getArgs()[gridIdArgIndex]; gridIds = (Set<String>) point.getArgs()[gridIdArgIndex];
} }
} }
if (StringUtils.isNotBlank(deptIdArgName)) { if (StringUtils.isNotBlank(deptIdsArgName)) {
int deptArgIndex = ArrayUtils.indexOf(parameterNames, deptIdArgName); int deptArgIndex = ArrayUtils.indexOf(parameterNames, deptIdsArgName);
if (deptArgIndex > -1) { if (deptArgIndex > -1) {
deptId = (String) point.getArgs()[deptArgIndex]; deptIds = (Set<String>) point.getArgs()[deptArgIndex];
} }
} }
@ -84,8 +86,8 @@ public class DataFilterAspect {
form.setApp(loginUserUtil.getLoginUserApp()); form.setApp(loginUserUtil.getLoginUserApp());
form.setClient(loginUserUtil.getLoginUserClient()); form.setClient(loginUserUtil.getLoginUserClient());
form.setUserId(loginUserUtil.getLoginUserId()); form.setUserId(loginUserUtil.getLoginUserId());
form.setDepartmentId(deptId); form.setDepartmentIds(deptIds);
form.setGridId(gridId); form.setGridIds(gridIds);
form.setOperationKey(requirePermission); form.setOperationKey(requirePermission);
form.setTableAlias(tableAlias); form.setTableAlias(tableAlias);
Result<String> sqlFilterSegmentRst = mybatisGovAccessFeignClient.getSqlFilterSegment(form); Result<String> sqlFilterSegmentRst = mybatisGovAccessFeignClient.getSqlFilterSegment(form);

5
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/dto/form/GetSQLFilterFormDTO.java

@ -3,6 +3,7 @@ package com.epmet.commons.mybatis.dto.form;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.util.Set;
@Data @Data
public class GetSQLFilterFormDTO { public class GetSQLFilterFormDTO {
@ -21,8 +22,8 @@ public class GetSQLFilterFormDTO {
private String tableAlias; private String tableAlias;
private String gridId; private Set<String> gridIds;
private String departmentId; private Set<String> departmentIds;
} }

2
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/feign/MybatisGovAccessFeignClient.java

@ -16,7 +16,7 @@ import java.util.Set;
* @Description * @Description
* @Author sun * @Author sun
*/ */
//, url = "localhost:8099" //@FeignClient(name = ServiceConstant.GOV_ACCESS_SERVER, fallback = MybatisGovAccessFeignClientFallback.class, url = "localhost:8099")
@FeignClient(name = ServiceConstant.GOV_ACCESS_SERVER, fallback = MybatisGovAccessFeignClientFallback.class) @FeignClient(name = ServiceConstant.GOV_ACCESS_SERVER, fallback = MybatisGovAccessFeignClientFallback.class)
public interface MybatisGovAccessFeignClient { public interface MybatisGovAccessFeignClient {

5
epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/form/GetSQLFilterFormDTO.java

@ -3,6 +3,7 @@ package com.epmet.dto.form;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.util.Set;
@Data @Data
public class GetSQLFilterFormDTO { public class GetSQLFilterFormDTO {
@ -21,8 +22,8 @@ public class GetSQLFilterFormDTO {
private String tableAlias; private String tableAlias;
private String gridId; private Set<String> gridIds;
private String departmentId; private Set<String> departmentIds;
} }

54
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/AccessServiceImpl.java

@ -186,7 +186,7 @@ public class AccessServiceImpl implements AccessService {
// 生成开关范围的sql过滤器 // 生成开关范围的sql过滤器
if (!CollectionUtil.isEmpty(switchScopes)) { if (!CollectionUtil.isEmpty(switchScopes)) {
genSwitchScopeSqlFilter(switchScopes, sb, form.getTableAlias(), userDetails.getUserId(), form.getGridId(), form.getDepartmentId()); genSwitchScopeSqlFilter(switchScopes, sb, form.getTableAlias(), userDetails.getUserId(), form.getGridIds(), form.getDepartmentIds());
} }
return sb.toString(); return sb.toString();
@ -200,29 +200,29 @@ public class AccessServiceImpl implements AccessService {
StringBuilder sb, StringBuilder sb,
String tableAlias, String tableAlias,
String userId, String userId,
String gridId, Set<String> gridIds,
String departmentId) { Set<String> departmentIds) {
if (switchScopes.contains(OperationScopeConstant.SCOPE_I_CREATED)) { if (switchScopes.contains(OperationScopeConstant.SCOPE_I_CREATED)) {
genICreatedSql(sb, userId, tableAlias); genICreatedSql(sb, userId, tableAlias);
} }
if (switchScopes.contains(OperationScopeConstant.SCOPE_IN_GRID)) { if (switchScopes.contains(OperationScopeConstant.SCOPE_IN_GRID)) {
if (StringUtils.isBlank(gridId)) { if (CollectionUtils.isEmpty(gridIds)) {
String error = String.format("DataFilter:拼接SQL语句出错:需要in grid权限,但是代码中没有获取到,GridId:%s", gridId); String error = String.format("DataFilter:拼接SQL语句出错:需要in grid权限,但是代码中没有获取到gridIds");
logger.error(error); logger.error(error);
throw new RenException(error); throw new RenException(error);
} }
genInGrid(sb, gridId, tableAlias); genInGrid(sb, gridIds, tableAlias);
} }
if (switchScopes.contains(OperationScopeConstant.SCOPE_IN_DEPARTMENT)) { if (switchScopes.contains(OperationScopeConstant.SCOPE_IN_DEPARTMENT)) {
if (StringUtils.isBlank(departmentId)) { if (CollectionUtils.isEmpty(departmentIds)) {
String error = String.format("DataFilter:拼接SQL语句出错:需要in department权限,但是代码中没有获取到, departmentId:%s", departmentId); String error = String.format("DataFilter:拼接SQL语句出错:需要in department权限,但是代码中没有获取到, departmentIds");
logger.error(error); logger.error(error);
throw new RenException(error); throw new RenException(error);
} }
genDepartmentFilterSql(sb, departmentId, tableAlias); genDepartmentFilterSql(sb, departmentIds, tableAlias);
} }
} }
@ -246,18 +246,25 @@ public class AccessServiceImpl implements AccessService {
* @param sb * @param sb
* @param tableAlias * @param tableAlias
*/ */
private void genInGrid(StringBuilder sb, String gridId, String tableAlias) { private void genInGrid(StringBuilder sb, Set<String> gridIds, String tableAlias) {
if (hasConditions.get()) { if (hasConditions.get()) {
// 之前没有条件 // 之前没有条件
sb.append(" OR "); sb.append(" OR ");
} }
// OR GRID_ID = 'XXX' OR GRID_ID = 'QQQ' // OR GRID_ID = 'XXX' OR GRID_ID = 'QQQ' OR
if (StringUtils.isBlank(tableAlias)) {
sb.append(" GRID_ID = '").append(gridId).append("' "); for (String gridId : gridIds) {
} else { if (StringUtils.isBlank(tableAlias)) {
sb.append(" ").append(tableAlias).append(".GRID_ID ='").append(gridId).append("' "); sb.append(" GRID_ID = '").append(gridId).append("' OR ");
} else {
sb.append(" ").append(tableAlias).append(".GRID_ID ='").append(gridId).append("' OR ");
}
} }
int lastOrIndex = sb.lastIndexOf("OR");
sb.replace(lastOrIndex, lastOrIndex + "OR".length(), "" );
hasConditions.set(true); hasConditions.set(true);
} }
@ -266,17 +273,24 @@ public class AccessServiceImpl implements AccessService {
* *
* @param sb * @param sb
*/ */
private void genDepartmentFilterSql(StringBuilder sb, String deptId, String tableAlias) { private void genDepartmentFilterSql(StringBuilder sb, Set<String> deptIds, String tableAlias) {
//Result<List<DepartmentListResultDTO>> deptListResult = govOrgFeignClient.getDepartmentListByStaffId(staffId); //Result<List<DepartmentListResultDTO>> deptListResult = govOrgFeignClient.getDepartmentListByStaffId(staffId);
if (hasConditions.get()) { if (hasConditions.get()) {
// 之前没有条件 // 之前没有条件
sb.append(" OR "); sb.append(" OR ");
} }
if (StringUtils.isBlank(tableAlias)) {
sb.append(" DEPARTMENT_ID = '").append(deptId).append("' "); for (String deptId : deptIds) {
} else { if (StringUtils.isBlank(tableAlias)) {
sb.append(" ").append(tableAlias).append(".DEPARTMENT_ID ='").append(deptId).append("' "); sb.append(" DEPARTMENT_ID = '").append(deptId).append("' OR ");
} else {
sb.append(" ").append(tableAlias).append(".DEPARTMENT_ID ='").append(deptId).append("' OR ");
}
} }
int lastOrIndex = sb.lastIndexOf("OR");
sb.replace(lastOrIndex, lastOrIndex + "OR".length(), "" );
hasConditions.set(true); hasConditions.set(true);
} }

Loading…
Cancel
Save