From 85b66a1f13b5df93f52fb39e41593e7c41eef40b Mon Sep 17 00:00:00 2001 From: taojinlong Date: Mon, 22 May 2023 17:06:47 +0800 Subject: [PATCH 1/5] =?UTF-8?q?fix:=20=E7=B2=BE=E7=AE=80=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E6=8F=92=E5=85=A5excel=E6=95=B0=E6=8D=AE=E5=87=BA=E9=94=99?= =?UTF-8?q?=EF=BC=9A/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataease/provider/engine/mysql/MysqlDDLProvider.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlDDLProvider.java b/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlDDLProvider.java index 8b18cb33ce..258c4254ca 100644 --- a/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlDDLProvider.java +++ b/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlDDLProvider.java @@ -39,8 +39,11 @@ public class MysqlDDLProvider extends DDLProviderImpl { for (int i = 0; i < strings.length; i++) { if (StringUtils.isEmpty(strings[i])) { strings1[i] = null; - } else { - strings1[i] = strings[i].replace("'", "\\'"); + continue; + } + strings1[i] = strings[i].replace("'", "\\'"); + if(strings1[i].equals("/")){ + strings1[i] = "//"; } } values.append("('").append(UUID.randomUUID()) From 71bd530c4fceff443e0d0eb0391e44dc8528458b Mon Sep 17 00:00:00 2001 From: taojinlong Date: Mon, 22 May 2023 17:07:31 +0800 Subject: [PATCH 2/5] =?UTF-8?q?fix:=20ck=20=E6=97=B6=E9=97=B4=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/dataease/provider/query/ck/CKQueryProvider.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/io/dataease/provider/query/ck/CKQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/ck/CKQueryProvider.java index 733b7fcaea..4f5034a391 100644 --- a/backend/src/main/java/io/dataease/provider/query/ck/CKQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/ck/CKQueryProvider.java @@ -1091,7 +1091,7 @@ public class CKQueryProvider extends QueryProvider { return null; } - AtomicReference atomicReference = new AtomicReference<>(); + List chartExtFilterRequests = new ArrayList<>(); requestList.forEach(request -> { DatasetTableField datasetTableField = request.getDatasetTableField(); List requestValue = request.getValue(); @@ -1106,12 +1106,12 @@ public class CKQueryProvider extends QueryProvider { requestCopy.setValue(new ArrayList() {{ add(String.format(toDateTime64, "'" + simpleDateFormat.format(new Date(Long.parseLong(requestValue.get(1)))) + "'")); }}); - atomicReference.set(requestCopy); + chartExtFilterRequests.add(requestCopy); } }); - if (ObjectUtils.isNotEmpty(atomicReference.get())) { - requestList.add(atomicReference.get()); + if (CollectionUtils.isNotEmpty(chartExtFilterRequests)) { + requestList.addAll(chartExtFilterRequests); } List list = new ArrayList<>(); for (ChartExtFilterRequest request : requestList) { From 071181b2a7f9307f2946a860f1e623a079220a1c Mon Sep 17 00:00:00 2001 From: taojinlong Date: Mon, 22 May 2023 17:08:11 +0800 Subject: [PATCH 3/5] =?UTF-8?q?fix:=20sqlserver=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=B8=AD=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sqlserver/SqlserverQueryProvider.java | 51 ++++++++++++++++--- 1 file changed, 43 insertions(+), 8 deletions(-) diff --git a/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java index 8ab6fced1f..0e056f79c3 100644 --- a/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java @@ -54,6 +54,7 @@ public class SqlserverQueryProvider extends QueryProvider { case "NCHAR": case "NTEXT": case "VARCHAR": + case "NVARCHAR": case "TEXT": case "TINYTEXT": case "MEDIUMTEXT": @@ -898,11 +899,19 @@ public class SqlserverQueryProvider extends QueryProvider { } else if (StringUtils.equalsIgnoreCase(item.getTerm(), "not_empty")) { whereValue = "''"; } else if (StringUtils.containsIgnoreCase(item.getTerm(), "in") || StringUtils.containsIgnoreCase(item.getTerm(), "not in")) { - whereValue = "('" + String.join("','", value.split(",")) + "')"; + if(field.getType().equals("NVARCHAR")){ + whereValue = Arrays.asList(value.split(",")).stream().map(str ->{return "N"+ str;}).collect(Collectors.joining(",")); + }else { + whereValue = "('" + String.join("','", value.split(",")) + "')"; + } } else if (StringUtils.containsIgnoreCase(item.getTerm(), "like")) { whereValue = "'%" + value + "%'"; } else { - whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE, value); + if(field.getType().equals("NVARCHAR")){ + whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE_CH, value); + }else { + whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE, value); + } } SQLObj build = SQLObj.builder() .whereField(whereName) @@ -1025,11 +1034,19 @@ public class SqlserverQueryProvider extends QueryProvider { } else if (StringUtils.equalsIgnoreCase(filterItemDTO.getTerm(), "not_empty")) { whereValue = "''"; } else if (StringUtils.containsIgnoreCase(filterItemDTO.getTerm(), "in") || StringUtils.containsIgnoreCase(filterItemDTO.getTerm(), "not in")) { - whereValue = "('" + String.join("','", value.split(",")) + "')"; + if(field.getType().equals("NVARCHAR")){ + whereValue = Arrays.asList(value.split(",")).stream().map(str ->{return "N"+ str;}).collect(Collectors.joining(",")); + }else { + whereValue = "('" + String.join("','", value.split(",")) + "')"; + } } else if (StringUtils.containsIgnoreCase(filterItemDTO.getTerm(), "like")) { whereValue = "'%" + value + "%'"; } else { - whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE, value); + if(field.getType().equals("NVARCHAR")){ + whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE_CH, value); + }else { + whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE, value); + } } list.add(SQLObj.builder() .whereField(whereName) @@ -1129,7 +1146,11 @@ public class SqlserverQueryProvider extends QueryProvider { String whereValue = ""; if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) { - whereValue = "('" + StringUtils.join(value, "','") + "')"; + if(request.getDatasetTableField().getType().equals("NVARCHAR")){ + whereValue = value.stream().map(str ->{return "N"+ str;}).collect(Collectors.joining(",")); + }else { + whereValue = "('" + StringUtils.join(value, "','") + "')"; + } } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { whereValue = "'%" + value.get(0) + "%'"; } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { @@ -1142,7 +1163,13 @@ public class SqlserverQueryProvider extends QueryProvider { whereValue = String.format(SqlServerSQLConstants.WHERE_BETWEEN, value.get(0), value.get(1)); } } else { - whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE, value.get(0)); + + if(request.getDatasetTableField().getType().equals("NVARCHAR")){ + whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE_CH, value.get(0)); + }else { + whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE, value.get(0)); + } + } list.add(SQLObj.builder() .whereField(whereName) @@ -1299,11 +1326,19 @@ public class SqlserverQueryProvider extends QueryProvider { } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_empty")) { whereValue = "''"; } else if (StringUtils.containsIgnoreCase(f.getTerm(), "in")) { - whereValue = "('" + StringUtils.join(f.getValue(), "','") + "')"; + if(y.getType().equals("NVARCHAR")){ + whereValue = Arrays.asList(f.getValue().split(",")).stream().map(str ->{return "N"+ str;}).collect(Collectors.joining(",")); + }else { + whereValue = "('" + String.join("','", f.getValue().split(",")) + "')"; + } } else if (StringUtils.containsIgnoreCase(f.getTerm(), "like")) { whereValue = "'%" + f.getValue() + "%'"; } else { - whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE, f.getValue()); + if(y.getType().equals("NVARCHAR")){ + whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE_CH, f.getValue()); + }else { + whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE, f.getValue()); + } } list.add(SQLObj.builder() .whereField(fieldAlias) From 9408fcd0c8022b4b70884cf2f99bc8430f76fc39 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Mon, 22 May 2023 17:09:11 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20=E8=84=B1=E6=95=8F=E8=A7=84=E5=88=99?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/chart/util/ChartDataBuild.java | 18 +++++++++++++++--- .../service/dataset/PermissionService.java | 5 ++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/io/dataease/service/chart/util/ChartDataBuild.java b/backend/src/main/java/io/dataease/service/chart/util/ChartDataBuild.java index 88646f5326..4df9247e53 100644 --- a/backend/src/main/java/io/dataease/service/chart/util/ChartDataBuild.java +++ b/backend/src/main/java/io/dataease/service/chart/util/ChartDataBuild.java @@ -1,8 +1,8 @@ package io.dataease.service.chart.util; import cn.hutool.core.util.ArrayUtil; -import io.dataease.plugins.common.base.domain.ChartViewWithBLOBs; import io.dataease.dto.chart.*; +import io.dataease.plugins.common.base.domain.ChartViewWithBLOBs; import io.dataease.plugins.common.dto.chart.ChartViewFieldDTO; import io.dataease.plugins.xpack.auth.dto.request.ColumnPermissionItem; import org.apache.commons.collections4.CollectionUtils; @@ -1071,11 +1071,11 @@ public class ChartDataBuild { break; } if (originStr.length() >= columnPermissionItem.getDesensitizationRule().getM() && originStr.length() >= columnPermissionItem.getDesensitizationRule().getN()) { - desensitizationStr = "***" + StringUtils.substring(originStr, columnPermissionItem.getDesensitizationRule().getM() - 1, columnPermissionItem.getDesensitizationRule().getN()) + "***"; + desensitizationStr = buildPrefix(columnPermissionItem.getDesensitizationRule().getM()) + StringUtils.substring(originStr, columnPermissionItem.getDesensitizationRule().getM() - 1, columnPermissionItem.getDesensitizationRule().getN()) + "***"; break; } if (originStr.length() >= columnPermissionItem.getDesensitizationRule().getM() && originStr.length() < columnPermissionItem.getDesensitizationRule().getN()) { - desensitizationStr = "***" + StringUtils.substring(originStr, columnPermissionItem.getDesensitizationRule().getM() - 1, originStr.length()); + desensitizationStr = buildPrefix(columnPermissionItem.getDesensitizationRule().getM()) + StringUtils.substring(originStr, columnPermissionItem.getDesensitizationRule().getM() - 1, originStr.length()); } break; default: @@ -1086,6 +1086,18 @@ public class ChartDataBuild { return desensitizationStr; } + + private static String buildPrefix(Integer integer) { + String prefix = ""; + if (integer <= 1) { + return prefix; + } + for (int i = 0; i < integer - 1; i++) { + prefix = prefix + "*"; + } + return prefix; + } + private static Map transTableNormal(List fields, ChartViewWithBLOBs view, List data, Map desensitizationList) { Map map = new TreeMap<>(); List> tableRow = new ArrayList<>(); diff --git a/backend/src/main/java/io/dataease/service/dataset/PermissionService.java b/backend/src/main/java/io/dataease/service/dataset/PermissionService.java index 77fba010d0..9199b275ea 100644 --- a/backend/src/main/java/io/dataease/service/dataset/PermissionService.java +++ b/backend/src/main/java/io/dataease/service/dataset/PermissionService.java @@ -208,7 +208,10 @@ public class PermissionService { dataSetColumnPermissionsDTO.setDatasetId(datasetId); dataSetColumnPermissionsDTO.setAuthTargetIds(Collections.singletonList(userId)); dataSetColumnPermissionsDTO.setAuthTargetType("user"); - datasetColumnPermissions.addAll(columnPermissionService.searchPermissions(dataSetColumnPermissionsDTO)); + List dataSetColumnPermissionsDTOS = columnPermissionService.searchPermissions(dataSetColumnPermissionsDTO); + if(CollectionUtils.isNotEmpty(dataSetColumnPermissionsDTOS)){ + datasetColumnPermissions.addAll(dataSetColumnPermissionsDTOS); + } if (CollectionUtils.isNotEmpty(roleIds)) { DataSetColumnPermissionsDTO request = new DataSetColumnPermissionsDTO(); request.setDatasetId(datasetId); From 6fe534148b407805655b37351ad8e32e1175631f Mon Sep 17 00:00:00 2001 From: taojinlong Date: Mon, 22 May 2023 17:10:01 +0800 Subject: [PATCH 5/5] =?UTF-8?q?refactor:=20API=20=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E8=A1=A8=E5=BC=B9=E6=A1=86:=20wrapper-closable=3D"false"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/views/system/datasource/DsConfiguration.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/views/system/datasource/DsConfiguration.vue b/frontend/src/views/system/datasource/DsConfiguration.vue index abbc54dd32..b16707c570 100644 --- a/frontend/src/views/system/datasource/DsConfiguration.vue +++ b/frontend/src/views/system/datasource/DsConfiguration.vue @@ -454,6 +454,7 @@ size="840px" :before-close="closeEditItem" direction="rtl" + :wrapper-closable="false" >