Bladeren bron

行权限 部门

wangrui 4 maanden geleden
bovenliggende
commit
a89ba3beb3

+ 1 - 1
platomix-gmetry-bi-api/pom.xml

@@ -26,7 +26,7 @@
         <dependency>
             <groupId>com.platomix</groupId>
             <artifactId>platomix-gmetry-bi-client</artifactId>
-            <version>1.2.27</version>
+            <version>1.2.28</version>
         </dependency>
         <dependency>
             <groupId>com.platomix</groupId>

+ 27 - 28
platomix-gmetry-bi-api/src/main/java/org/springblade/cube/service/CubeDataBrowserService.java

@@ -28,6 +28,7 @@ import org.springblade.cube.dto.CubeTableName;
 import org.springblade.cube.enums.JoinTypeEnum;
 import org.springblade.cube.model.CubeData;
 import org.springblade.cube.model.CubeTableColumn;
+import org.springblade.cube.service.constants.RowPermissionConstants;
 import org.springblade.cube.utils.CubeConstants;
 import org.springblade.cube.utils.CubeUtils;
 import org.springblade.datasource.context.DialectContext;
@@ -80,28 +81,18 @@ public class CubeDataBrowserService {
 
     @Autowired
     private DialectContext dialectContext;
-    //${系统变量}
-    static private final String sql = " ( ${permissionCubeColumnId1}  = ${publicPermission} or ( ${creatorUserCubeColumnId} = ${userId1} ) or ( ${userIdsCubeColumnId} like '%${userId2}${userIdDelimiter}%' and ${permissionCubeColumnId2} = ${privatePermission} )  )";
-    //${系统变量}
-    static private final String permissionCubeColumnId1 = "\\$\\{permissionCubeColumnId1\\}";
-    static private final String publicPermission = "\\$\\{publicPermission\\}";
-    static private final String permissionCubeColumnId2 = "\\$\\{permissionCubeColumnId2\\}";
-    static private final String privatePermission = "\\$\\{privatePermission\\}";
-    static private final String userIdsCubeColumnId = "\\$\\{userIdsCubeColumnId\\}";
-    static private final String userId1 = "\\$\\{userId1\\}";
-    static private final String userId2 = "\\$\\{userId2\\}";
-    static private final String userIdDelimiter = "\\$\\{userIdDelimiter\\}";
-    static private final String creatorUserCubeColumnId = "\\$\\{creatorUserCubeColumnId\\}";
+
 
     public static void main(String[] args) {
         // 创建一个Pattern对象,并编译一个正则表达式,用于匹配方括号内的内容
-        Pattern pattern = Pattern.compile(permissionCubeColumnId1);
+
+        Pattern pattern = Pattern.compile(RowPermissionConstants.permissionCubeColumnId1);
         // 创建Matcher对象
-        Matcher matcher = pattern.matcher(sql);
+        Matcher matcher = pattern.matcher(RowPermissionConstants.sql);
         // 查找字符串中所有匹配的内容
         while (matcher.find()) {
             // 将匹配到的文本(不包括方括号)添加到List中
-            String s = sql.replace(matcher.group(), "2r");
+            String s = RowPermissionConstants.sql.replace(matcher.group(), "2r");
             System.out.println(s);
         }
     }
@@ -153,7 +144,7 @@ public class CubeDataBrowserService {
         // 条件SQL
         List<String> conditionSqlList = new ArrayList<String>();
         Map<String, String> conditionSqlMap = new HashMap<>();
-        String rowPermissionSql = sql;
+        String rowPermissionSql = RowPermissionConstants.sql;
         Map<String, List<Object>> extraParams = querySqlService.buildGlobalParams(null, bladeUser);
         // 行/列 权限
         CubePermParseDto cubePermParseDto = cubeDataPermissionService.parseCubePermission(cubeId, bladeUser);
@@ -250,19 +241,27 @@ public class CubeDataBrowserService {
     private static String replaceRowPermissionParam(RowPermissionParam rowPermissionParam, CubeTableColumn column, String queryColumnName, String rowPermissionSql) {
 
         if (rowPermissionParam.getPermissionCubeColumnId().equals(column.getId())) {
-            rowPermissionSql = replaceSql(permissionCubeColumnId1, queryColumnName, rowPermissionSql);
-            rowPermissionSql = replaceSql(publicPermission, rowPermissionParam.getPublicPermission(), rowPermissionSql);
-            rowPermissionSql = replaceSql(permissionCubeColumnId2, queryColumnName, rowPermissionSql);
-            rowPermissionSql = replaceSql(privatePermission, rowPermissionParam.getPrivatePermission(), rowPermissionSql);
+            rowPermissionSql = replaceSql(RowPermissionConstants.permissionCubeColumnId1, queryColumnName, rowPermissionSql);
+            rowPermissionSql = replaceSql(RowPermissionConstants.publicPermission, rowPermissionParam.getPublicPermission(), rowPermissionSql);
+            rowPermissionSql = replaceSql(RowPermissionConstants.permissionCubeColumnId2, queryColumnName, rowPermissionSql);
+            rowPermissionSql = replaceSql(RowPermissionConstants.privatePermission1, rowPermissionParam.getPrivatePermission(), rowPermissionSql);
+            rowPermissionSql = replaceSql(RowPermissionConstants.permissionCubeColumnId3, queryColumnName, rowPermissionSql);
+            rowPermissionSql = replaceSql(RowPermissionConstants.privatePermission2, rowPermissionParam.getPrivatePermission(), rowPermissionSql);
         }
         if (rowPermissionParam.getUserIdsCubeColumnId().equals(column.getId())) {
-            rowPermissionSql = replaceSql(userIdsCubeColumnId, queryColumnName, rowPermissionSql);
-            rowPermissionSql = replaceSql(userId2, AuthUtil.getUserId() + "", rowPermissionSql);
-            rowPermissionSql = replaceSql(userIdDelimiter, rowPermissionParam.getUserIdDelimiter(), rowPermissionSql);
+            rowPermissionSql = replaceSql(RowPermissionConstants.userIdsCubeColumnId, queryColumnName, rowPermissionSql);
+            rowPermissionSql = replaceSql(RowPermissionConstants.userId2, AuthUtil.getUserId() + "", rowPermissionSql);
+            rowPermissionSql = replaceSql(RowPermissionConstants.userIdDelimiter1, rowPermissionParam.getUserIdDelimiter(), rowPermissionSql);
         }
         if (rowPermissionParam.getCreatorUserCubeColumnId().equals(column.getId())) {
-            rowPermissionSql = replaceSql(creatorUserCubeColumnId, queryColumnName, rowPermissionSql);
-            rowPermissionSql = replaceSql(userId1, AuthUtil.getUserId() + "", rowPermissionSql);
+            rowPermissionSql = replaceSql(RowPermissionConstants.creatorUserCubeColumnId, queryColumnName, rowPermissionSql);
+            rowPermissionSql = replaceSql(RowPermissionConstants.userId1, AuthUtil.getUserId() + "", rowPermissionSql);
+        }
+        if (rowPermissionParam.getDeptIdsCubeColumnId().equals(column.getId())) {
+            rowPermissionSql = replaceSql(RowPermissionConstants.deptIdsCubeColumnId, queryColumnName, rowPermissionSql);
+            rowPermissionSql = replaceSql(RowPermissionConstants.deptId, AuthUtil.getDeptId(), rowPermissionSql);
+            rowPermissionSql = replaceSql(RowPermissionConstants.userIdDelimiter2, rowPermissionParam.getUserIdDelimiter(), rowPermissionSql);
+
         }
         return rowPermissionSql;
     }
@@ -320,7 +319,7 @@ public class CubeDataBrowserService {
         // 条件SQL
         List<String> conditionSqlList = new ArrayList<String>();
         Map<String, String> conditionSqlMap = new HashMap<>();
-        String rowPermissionSql = sql;
+        String rowPermissionSql = RowPermissionConstants.sql;
         if (rowPermissionParam == null) {
             rowPermissionSql = " where ";
         }
@@ -488,7 +487,7 @@ public class CubeDataBrowserService {
         List<String> selectSqlList = new ArrayList<String>();
         // 条件SQL
         List<String> conditionSqlList = new ArrayList<String>();
-        String rowPermissionSql = sql;
+        String rowPermissionSql = RowPermissionConstants.sql;
         if (rowPermissionParam == null) {
             rowPermissionSql = " where ";
         }
@@ -655,7 +654,7 @@ public class CubeDataBrowserService {
         // 行/列 权限
         CubePermParseDto cubePermParseDto = cubeDataPermissionService.parseCubePermission(cubeId, bladeUser);
         Set<Integer> excludeColumnIdSet = Optional.ofNullable(cubePermParseDto.getExcludeColumnIdList()).orElse(new HashSet<>());
-        String rowPermissionSql = sql;
+        String rowPermissionSql = RowPermissionConstants.sql;
         if (rowPermissionParam == null) {
             rowPermissionSql = " where ";
         }

+ 38 - 0
platomix-gmetry-bi-api/src/main/java/org/springblade/cube/service/constants/RowPermissionConstants.java

@@ -0,0 +1,38 @@
+package org.springblade.cube.service.constants;
+
+/**
+ * @author 喜欢番茄火锅
+ * @date 2024/9/27 11:35
+ */
+public class RowPermissionConstants {
+    //${系统变量}
+    static public final String sql =
+            " ( ${permissionCubeColumnId1}  = ${publicPermission} " +
+                    "or ( ${creatorUserCubeColumnId} = ${userId1} ) " +
+                    "or ( ${userIdsCubeColumnId} like '%${userId2}${userIdDelimiter1}%' and ${permissionCubeColumnId2} = ${privatePermission1} ) " +
+                    "or ( ${deptIdsCubeColumnId} like '%${deptId}${userIdDelimiter2}%' and ${permissionCubeColumnId3} = ${privatePermission2} ) ) ";
+    //${系统变量}
+    static public final String permissionCubeColumnId1 = "\\$\\{permissionCubeColumnId1\\}";
+    static public final String permissionCubeColumnId2 = "\\$\\{permissionCubeColumnId2\\}";
+    static public final String permissionCubeColumnId3 = "\\$\\{permissionCubeColumnId3\\}";
+
+    static public final String publicPermission = "\\$\\{publicPermission\\}";
+
+    static public final String privatePermission1 = "\\$\\{privatePermission1\\}";
+    static public final String privatePermission2 = "\\$\\{privatePermission2\\}";
+
+    static public final String userIdsCubeColumnId = "\\$\\{userIdsCubeColumnId\\}";
+
+    static public final String userId1 = "\\$\\{userId1\\}";
+    static public final String userId2 = "\\$\\{userId2\\}";
+
+    static public final String deptIdsCubeColumnId = "\\$\\{deptIdsCubeColumnId\\}";
+
+    static public final String deptId = "\\$\\{deptId\\}";
+
+    static public final String userIdDelimiter1 = "\\$\\{userIdDelimiter1\\}";
+    static public final String userIdDelimiter2 = "\\$\\{userIdDelimiter2\\}";
+
+    static public final String creatorUserCubeColumnId = "\\$\\{creatorUserCubeColumnId\\}";
+
+}

+ 1 - 1
platomix-gmetry-bi-client/pom.xml

@@ -8,7 +8,7 @@
 		<version>1.0.0</version>
 	</parent>
 	<artifactId>platomix-gmetry-bi-client</artifactId>
-	<version>1.2.27</version>
+	<version>1.2.28</version>
 
 	<dependencies>
 		<dependency>

+ 5 - 1
platomix-gmetry-bi-client/src/main/java/org/springblade/bi/client/form/param/RowPermissionParam.java

@@ -18,7 +18,7 @@ import lombok.ToString;
 public class RowPermissionParam implements Serializable {
 
 	/**
-	 * sql:where  ( rermission  = '公开' or ( userid like %zs% and rermission = '私有' )  )
+	 * sql:where  ( rermission  = '公开' or ( userid like %zs% and rermission = '私有' ) or ( deptId like %bm% and rermission = '私有')  )
 	 * sql:where  ( ${permissionCubeColumnId}  = ${publicPermission} or ( ${userIdsCubeColumnId} like '%${userId}${userIdDelimiter}%' and ${permissionCubeColumnId} = ${privatePermission} )  )
 	 */
 	private static final long serialVersionUID = 1L;
@@ -32,6 +32,10 @@ public class RowPermissionParam implements Serializable {
 	 * 权限用户ids 分隔符
 	 */
 	private String userIdDelimiter;
+	/**
+	 * 权限用户ids 数据集字段ID
+	 */
+	private Integer deptIdsCubeColumnId;
 
 	/**
 	 * 公开私有 数据集字段ID