diff --git a/backend/src/main/java/io/dataease/plugins/server/RowPermissionsController.java b/backend/src/main/java/io/dataease/plugins/server/RowPermissionsController.java index 03210c35df..782416b29a 100644 --- a/backend/src/main/java/io/dataease/plugins/server/RowPermissionsController.java +++ b/backend/src/main/java/io/dataease/plugins/server/RowPermissionsController.java @@ -4,6 +4,7 @@ import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import io.dataease.commons.utils.PageUtils; import io.dataease.commons.utils.Pager; +import io.dataease.i18n.Translator; import io.dataease.plugins.common.entity.XpackConditionEntity; import io.dataease.plugins.common.entity.XpackGridRequest; import io.dataease.plugins.config.SpringContextUtil; @@ -11,6 +12,7 @@ import io.dataease.plugins.xpack.auth.dto.request.DataSetRowPermissionsDTO; import io.dataease.plugins.xpack.auth.dto.request.DatasetRowPermissions; import io.dataease.plugins.xpack.auth.service.RowPermissionService; import io.swagger.annotations.ApiOperation; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; @@ -24,6 +26,13 @@ public class RowPermissionsController { @PostMapping("save") public void save(@RequestBody DatasetRowPermissions datasetRowPermissions) throws Exception { RowPermissionService rowPermissionService = SpringContextUtil.getBean(RowPermissionService.class); + DataSetRowPermissionsDTO request = new DataSetRowPermissionsDTO(); + request.setAuthTargetType(datasetRowPermissions.getAuthTargetType()); + request.setAuthTargetId(datasetRowPermissions.getAuthTargetId()); + request.setDatasetFieldId(datasetRowPermissions.getDatasetFieldId()); + if(!CollectionUtils.isEmpty(rowPermissionService.searchRowPermissions(request))){ + throw new Exception(Translator.get("i18n_rp_exist")); + } rowPermissionService.save(datasetRowPermissions); } diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index d374217845..73b1fa82b3 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -504,6 +504,9 @@ public class DataSetTableService { List customFilter = new ArrayList<>(); for (DatasetRowPermissions datasetRowPermissions : rowPermissions(datasetTable.getId(), user)) { ChartFieldCustomFilterDTO dto = new ChartFieldCustomFilterDTO(); + if(StringUtils.isEmpty(datasetRowPermissions.getDatasetFieldId())){ + continue; + } DatasetTableField field = getFieldById(fields, datasetRowPermissions.getDatasetFieldId()); if (field == null) { continue; @@ -512,6 +515,9 @@ public class DataSetTableService { dto.setId(field.getId()); dto.setFilterType(datasetRowPermissions.getFilterType()); if (datasetRowPermissions.getFilterType().equalsIgnoreCase("logic")) { + if(StringUtils.isEmpty(datasetRowPermissions.getFilter())){ + continue; + } List lists = JSONObject.parseArray(datasetRowPermissions.getFilter(), ChartCustomFilterItemDTO.class); lists.forEach(chartCustomFilterDTO -> { chartCustomFilterDTO.setFieldId(field.getId()); @@ -520,6 +526,9 @@ public class DataSetTableService { dto.setLogic(datasetRowPermissions.getLogic()); customFilter.add(dto); } else { + if(StringUtils.isEmpty(datasetRowPermissions.getEnumCheckField())){ + continue; + } dto.setEnumCheckField(Arrays.asList(datasetRowPermissions.getEnumCheckField().split(",").clone())); customFilter.add(dto); } diff --git a/backend/src/main/resources/i18n/messages_en_US.properties b/backend/src/main/resources/i18n/messages_en_US.properties index de2d2dfdd5..8a7ed5cdd5 100644 --- a/backend/src/main/resources/i18n/messages_en_US.properties +++ b/backend/src/main/resources/i18n/messages_en_US.properties @@ -296,4 +296,5 @@ i18n_sql_error=SQL Error: i18n_invalid_ds=Invalid Datasource 任务管理=Task Manager 数据同步=Data Sync -定时报告=Regular report \ No newline at end of file +定时报告=Regular report +i18n_rp_exist=Row permission of the same type already exists \ No newline at end of file diff --git a/backend/src/main/resources/i18n/messages_zh_CN.properties b/backend/src/main/resources/i18n/messages_zh_CN.properties index 301f998c00..10b984dd9d 100644 --- a/backend/src/main/resources/i18n/messages_zh_CN.properties +++ b/backend/src/main/resources/i18n/messages_zh_CN.properties @@ -295,4 +295,5 @@ i18n_sql_error=SQL 错误: i18n_invalid_ds=无效数据源 任务管理=任务管理 数据同步=数据同步 -定时报告=定时报告 \ No newline at end of file +定时报告=定时报告 +i18n_rp_exist=已有同类型的行权限存在 \ No newline at end of file diff --git a/backend/src/main/resources/i18n/messages_zh_TW.properties b/backend/src/main/resources/i18n/messages_zh_TW.properties index 9c65f0c845..1cff76bac6 100644 --- a/backend/src/main/resources/i18n/messages_zh_TW.properties +++ b/backend/src/main/resources/i18n/messages_zh_TW.properties @@ -298,4 +298,5 @@ i18n_sql_error=SQL 錯誤: i18n_invalid_ds=無效數據源 任务管理=任務管理 数据同步=數據同步 -定时报告=定時報告 \ No newline at end of file +定时报告=定時報告 +i18n_rp_exist=已有同類型餓行權限存在 \ No newline at end of file