fix: 每个字段,同一类型的行權限,限制只有一条记录

This commit is contained in:
taojinlong 2021-12-29 11:42:57 +08:00
parent 8bb5d5b427
commit d5f8ce4abd
5 changed files with 24 additions and 3 deletions

View File

@ -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);
}

View File

@ -504,6 +504,9 @@ public class DataSetTableService {
List<ChartFieldCustomFilterDTO> 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<ChartCustomFilterItemDTO> 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);
}

View File

@ -296,4 +296,5 @@ i18n_sql_error=SQL Error:
i18n_invalid_ds=Invalid Datasource
任务管理=Task Manager
数据同步=Data Sync
定时报告=Regular report
定时报告=Regular report
i18n_rp_exist=Row permission of the same type already exists

View File

@ -295,4 +295,5 @@ i18n_sql_error=SQL 错误:
i18n_invalid_ds=无效数据源
任务管理=任务管理
数据同步=数据同步
定时报告=定时报告
定时报告=定时报告
i18n_rp_exist=已有同类型的行权限存在

View File

@ -298,4 +298,5 @@ i18n_sql_error=SQL 錯誤:
i18n_invalid_ds=無效數據源
任务管理=任務管理
数据同步=數據同步
定时报告=定時報告
定时报告=定時報告
i18n_rp_exist=已有同類型餓行權限存在