diff --git a/backend/src/main/java/io/dataease/base/domain/DatasetRowPermissions.java b/backend/src/main/java/io/dataease/base/domain/DatasetRowPermissions.java new file mode 100644 index 0000000000..320096fe83 --- /dev/null +++ b/backend/src/main/java/io/dataease/base/domain/DatasetRowPermissions.java @@ -0,0 +1,23 @@ +package io.dataease.base.domain; + +import java.io.Serializable; +import lombok.Data; + +@Data +public class DatasetRowPermissions implements Serializable { + private String id; + + private String authTargetType; + + private Long authTargetId; + + private String datasetId; + + private String datasetFieldId; + + private String filter; + + private Long updateTime; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/backend/src/main/java/io/dataease/base/domain/DatasetRowPermissionsExample.java b/backend/src/main/java/io/dataease/base/domain/DatasetRowPermissionsExample.java new file mode 100644 index 0000000000..c55969aa11 --- /dev/null +++ b/backend/src/main/java/io/dataease/base/domain/DatasetRowPermissionsExample.java @@ -0,0 +1,670 @@ +package io.dataease.base.domain; + +import java.util.ArrayList; +import java.util.List; + +public class DatasetRowPermissionsExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public DatasetRowPermissionsExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(String value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(String value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(String value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(String value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(String value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(String value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLike(String value) { + addCriterion("id like", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotLike(String value) { + addCriterion("id not like", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(String value1, String value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(String value1, String value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andAuthTargetTypeIsNull() { + addCriterion("auth_target_type is null"); + return (Criteria) this; + } + + public Criteria andAuthTargetTypeIsNotNull() { + addCriterion("auth_target_type is not null"); + return (Criteria) this; + } + + public Criteria andAuthTargetTypeEqualTo(String value) { + addCriterion("auth_target_type =", value, "authTargetType"); + return (Criteria) this; + } + + public Criteria andAuthTargetTypeNotEqualTo(String value) { + addCriterion("auth_target_type <>", value, "authTargetType"); + return (Criteria) this; + } + + public Criteria andAuthTargetTypeGreaterThan(String value) { + addCriterion("auth_target_type >", value, "authTargetType"); + return (Criteria) this; + } + + public Criteria andAuthTargetTypeGreaterThanOrEqualTo(String value) { + addCriterion("auth_target_type >=", value, "authTargetType"); + return (Criteria) this; + } + + public Criteria andAuthTargetTypeLessThan(String value) { + addCriterion("auth_target_type <", value, "authTargetType"); + return (Criteria) this; + } + + public Criteria andAuthTargetTypeLessThanOrEqualTo(String value) { + addCriterion("auth_target_type <=", value, "authTargetType"); + return (Criteria) this; + } + + public Criteria andAuthTargetTypeLike(String value) { + addCriterion("auth_target_type like", value, "authTargetType"); + return (Criteria) this; + } + + public Criteria andAuthTargetTypeNotLike(String value) { + addCriterion("auth_target_type not like", value, "authTargetType"); + return (Criteria) this; + } + + public Criteria andAuthTargetTypeIn(List values) { + addCriterion("auth_target_type in", values, "authTargetType"); + return (Criteria) this; + } + + public Criteria andAuthTargetTypeNotIn(List values) { + addCriterion("auth_target_type not in", values, "authTargetType"); + return (Criteria) this; + } + + public Criteria andAuthTargetTypeBetween(String value1, String value2) { + addCriterion("auth_target_type between", value1, value2, "authTargetType"); + return (Criteria) this; + } + + public Criteria andAuthTargetTypeNotBetween(String value1, String value2) { + addCriterion("auth_target_type not between", value1, value2, "authTargetType"); + return (Criteria) this; + } + + public Criteria andAuthTargetIdIsNull() { + addCriterion("auth_target_id is null"); + return (Criteria) this; + } + + public Criteria andAuthTargetIdIsNotNull() { + addCriterion("auth_target_id is not null"); + return (Criteria) this; + } + + public Criteria andAuthTargetIdEqualTo(Long value) { + addCriterion("auth_target_id =", value, "authTargetId"); + return (Criteria) this; + } + + public Criteria andAuthTargetIdNotEqualTo(Long value) { + addCriterion("auth_target_id <>", value, "authTargetId"); + return (Criteria) this; + } + + public Criteria andAuthTargetIdGreaterThan(Long value) { + addCriterion("auth_target_id >", value, "authTargetId"); + return (Criteria) this; + } + + public Criteria andAuthTargetIdGreaterThanOrEqualTo(Long value) { + addCriterion("auth_target_id >=", value, "authTargetId"); + return (Criteria) this; + } + + public Criteria andAuthTargetIdLessThan(Long value) { + addCriterion("auth_target_id <", value, "authTargetId"); + return (Criteria) this; + } + + public Criteria andAuthTargetIdLessThanOrEqualTo(Long value) { + addCriterion("auth_target_id <=", value, "authTargetId"); + return (Criteria) this; + } + + public Criteria andAuthTargetIdIn(List values) { + addCriterion("auth_target_id in", values, "authTargetId"); + return (Criteria) this; + } + + public Criteria andAuthTargetIdNotIn(List values) { + addCriterion("auth_target_id not in", values, "authTargetId"); + return (Criteria) this; + } + + public Criteria andAuthTargetIdBetween(Long value1, Long value2) { + addCriterion("auth_target_id between", value1, value2, "authTargetId"); + return (Criteria) this; + } + + public Criteria andAuthTargetIdNotBetween(Long value1, Long value2) { + addCriterion("auth_target_id not between", value1, value2, "authTargetId"); + return (Criteria) this; + } + + public Criteria andDatasetIdIsNull() { + addCriterion("dataset_id is null"); + return (Criteria) this; + } + + public Criteria andDatasetIdIsNotNull() { + addCriterion("dataset_id is not null"); + return (Criteria) this; + } + + public Criteria andDatasetIdEqualTo(String value) { + addCriterion("dataset_id =", value, "datasetId"); + return (Criteria) this; + } + + public Criteria andDatasetIdNotEqualTo(String value) { + addCriterion("dataset_id <>", value, "datasetId"); + return (Criteria) this; + } + + public Criteria andDatasetIdGreaterThan(String value) { + addCriterion("dataset_id >", value, "datasetId"); + return (Criteria) this; + } + + public Criteria andDatasetIdGreaterThanOrEqualTo(String value) { + addCriterion("dataset_id >=", value, "datasetId"); + return (Criteria) this; + } + + public Criteria andDatasetIdLessThan(String value) { + addCriterion("dataset_id <", value, "datasetId"); + return (Criteria) this; + } + + public Criteria andDatasetIdLessThanOrEqualTo(String value) { + addCriterion("dataset_id <=", value, "datasetId"); + return (Criteria) this; + } + + public Criteria andDatasetIdLike(String value) { + addCriterion("dataset_id like", value, "datasetId"); + return (Criteria) this; + } + + public Criteria andDatasetIdNotLike(String value) { + addCriterion("dataset_id not like", value, "datasetId"); + return (Criteria) this; + } + + public Criteria andDatasetIdIn(List values) { + addCriterion("dataset_id in", values, "datasetId"); + return (Criteria) this; + } + + public Criteria andDatasetIdNotIn(List values) { + addCriterion("dataset_id not in", values, "datasetId"); + return (Criteria) this; + } + + public Criteria andDatasetIdBetween(String value1, String value2) { + addCriterion("dataset_id between", value1, value2, "datasetId"); + return (Criteria) this; + } + + public Criteria andDatasetIdNotBetween(String value1, String value2) { + addCriterion("dataset_id not between", value1, value2, "datasetId"); + return (Criteria) this; + } + + public Criteria andDatasetFieldIdIsNull() { + addCriterion("dataset_field_id is null"); + return (Criteria) this; + } + + public Criteria andDatasetFieldIdIsNotNull() { + addCriterion("dataset_field_id is not null"); + return (Criteria) this; + } + + public Criteria andDatasetFieldIdEqualTo(String value) { + addCriterion("dataset_field_id =", value, "datasetFieldId"); + return (Criteria) this; + } + + public Criteria andDatasetFieldIdNotEqualTo(String value) { + addCriterion("dataset_field_id <>", value, "datasetFieldId"); + return (Criteria) this; + } + + public Criteria andDatasetFieldIdGreaterThan(String value) { + addCriterion("dataset_field_id >", value, "datasetFieldId"); + return (Criteria) this; + } + + public Criteria andDatasetFieldIdGreaterThanOrEqualTo(String value) { + addCriterion("dataset_field_id >=", value, "datasetFieldId"); + return (Criteria) this; + } + + public Criteria andDatasetFieldIdLessThan(String value) { + addCriterion("dataset_field_id <", value, "datasetFieldId"); + return (Criteria) this; + } + + public Criteria andDatasetFieldIdLessThanOrEqualTo(String value) { + addCriterion("dataset_field_id <=", value, "datasetFieldId"); + return (Criteria) this; + } + + public Criteria andDatasetFieldIdLike(String value) { + addCriterion("dataset_field_id like", value, "datasetFieldId"); + return (Criteria) this; + } + + public Criteria andDatasetFieldIdNotLike(String value) { + addCriterion("dataset_field_id not like", value, "datasetFieldId"); + return (Criteria) this; + } + + public Criteria andDatasetFieldIdIn(List values) { + addCriterion("dataset_field_id in", values, "datasetFieldId"); + return (Criteria) this; + } + + public Criteria andDatasetFieldIdNotIn(List values) { + addCriterion("dataset_field_id not in", values, "datasetFieldId"); + return (Criteria) this; + } + + public Criteria andDatasetFieldIdBetween(String value1, String value2) { + addCriterion("dataset_field_id between", value1, value2, "datasetFieldId"); + return (Criteria) this; + } + + public Criteria andDatasetFieldIdNotBetween(String value1, String value2) { + addCriterion("dataset_field_id not between", value1, value2, "datasetFieldId"); + return (Criteria) this; + } + + public Criteria andFilterIsNull() { + addCriterion("`filter` is null"); + return (Criteria) this; + } + + public Criteria andFilterIsNotNull() { + addCriterion("`filter` is not null"); + return (Criteria) this; + } + + public Criteria andFilterEqualTo(String value) { + addCriterion("`filter` =", value, "filter"); + return (Criteria) this; + } + + public Criteria andFilterNotEqualTo(String value) { + addCriterion("`filter` <>", value, "filter"); + return (Criteria) this; + } + + public Criteria andFilterGreaterThan(String value) { + addCriterion("`filter` >", value, "filter"); + return (Criteria) this; + } + + public Criteria andFilterGreaterThanOrEqualTo(String value) { + addCriterion("`filter` >=", value, "filter"); + return (Criteria) this; + } + + public Criteria andFilterLessThan(String value) { + addCriterion("`filter` <", value, "filter"); + return (Criteria) this; + } + + public Criteria andFilterLessThanOrEqualTo(String value) { + addCriterion("`filter` <=", value, "filter"); + return (Criteria) this; + } + + public Criteria andFilterLike(String value) { + addCriterion("`filter` like", value, "filter"); + return (Criteria) this; + } + + public Criteria andFilterNotLike(String value) { + addCriterion("`filter` not like", value, "filter"); + return (Criteria) this; + } + + public Criteria andFilterIn(List values) { + addCriterion("`filter` in", values, "filter"); + return (Criteria) this; + } + + public Criteria andFilterNotIn(List values) { + addCriterion("`filter` not in", values, "filter"); + return (Criteria) this; + } + + public Criteria andFilterBetween(String value1, String value2) { + addCriterion("`filter` between", value1, value2, "filter"); + return (Criteria) this; + } + + public Criteria andFilterNotBetween(String value1, String value2) { + addCriterion("`filter` not between", value1, value2, "filter"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNull() { + addCriterion("update_time is null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNotNull() { + addCriterion("update_time is not null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeEqualTo(Long value) { + addCriterion("update_time =", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotEqualTo(Long value) { + addCriterion("update_time <>", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThan(Long value) { + addCriterion("update_time >", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThanOrEqualTo(Long value) { + addCriterion("update_time >=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThan(Long value) { + addCriterion("update_time <", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThanOrEqualTo(Long value) { + addCriterion("update_time <=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIn(List values) { + addCriterion("update_time in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotIn(List values) { + addCriterion("update_time not in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeBetween(Long value1, Long value2) { + addCriterion("update_time between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotBetween(Long value1, Long value2) { + addCriterion("update_time not between", value1, value2, "updateTime"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/backend/src/main/java/io/dataease/base/mapper/DatasetRowPermissionsMapper.java b/backend/src/main/java/io/dataease/base/mapper/DatasetRowPermissionsMapper.java new file mode 100644 index 0000000000..a4c26b4303 --- /dev/null +++ b/backend/src/main/java/io/dataease/base/mapper/DatasetRowPermissionsMapper.java @@ -0,0 +1,30 @@ +package io.dataease.base.mapper; + +import io.dataease.base.domain.DatasetRowPermissions; +import io.dataease.base.domain.DatasetRowPermissionsExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface DatasetRowPermissionsMapper { + long countByExample(DatasetRowPermissionsExample example); + + int deleteByExample(DatasetRowPermissionsExample example); + + int deleteByPrimaryKey(String id); + + int insert(DatasetRowPermissions record); + + int insertSelective(DatasetRowPermissions record); + + List selectByExample(DatasetRowPermissionsExample example); + + DatasetRowPermissions selectByPrimaryKey(String id); + + int updateByExampleSelective(@Param("record") DatasetRowPermissions record, @Param("example") DatasetRowPermissionsExample example); + + int updateByExample(@Param("record") DatasetRowPermissions record, @Param("example") DatasetRowPermissionsExample example); + + int updateByPrimaryKeySelective(DatasetRowPermissions record); + + int updateByPrimaryKey(DatasetRowPermissions record); +} \ No newline at end of file diff --git a/backend/src/main/java/io/dataease/base/mapper/DatasetRowPermissionsMapper.xml b/backend/src/main/java/io/dataease/base/mapper/DatasetRowPermissionsMapper.xml new file mode 100644 index 0000000000..7ecfe34f4f --- /dev/null +++ b/backend/src/main/java/io/dataease/base/mapper/DatasetRowPermissionsMapper.xml @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, auth_target_type, auth_target_id, dataset_id, dataset_field_id, `filter`, update_time + + + + + delete from dataset_row_permissions + where id = #{id,jdbcType=VARCHAR} + + + delete from dataset_row_permissions + + + + + + insert into dataset_row_permissions (id, auth_target_type, auth_target_id, + dataset_id, dataset_field_id, `filter`, + update_time) + values (#{id,jdbcType=VARCHAR}, #{authTargetType,jdbcType=VARCHAR}, #{authTargetId,jdbcType=BIGINT}, + #{datasetId,jdbcType=VARCHAR}, #{datasetFieldId,jdbcType=VARCHAR}, #{filter,jdbcType=VARCHAR}, + #{updateTime,jdbcType=BIGINT}) + + + insert into dataset_row_permissions + + + id, + + + auth_target_type, + + + auth_target_id, + + + dataset_id, + + + dataset_field_id, + + + `filter`, + + + update_time, + + + + + #{id,jdbcType=VARCHAR}, + + + #{authTargetType,jdbcType=VARCHAR}, + + + #{authTargetId,jdbcType=BIGINT}, + + + #{datasetId,jdbcType=VARCHAR}, + + + #{datasetFieldId,jdbcType=VARCHAR}, + + + #{filter,jdbcType=VARCHAR}, + + + #{updateTime,jdbcType=BIGINT}, + + + + + + update dataset_row_permissions + + + id = #{record.id,jdbcType=VARCHAR}, + + + auth_target_type = #{record.authTargetType,jdbcType=VARCHAR}, + + + auth_target_id = #{record.authTargetId,jdbcType=BIGINT}, + + + dataset_id = #{record.datasetId,jdbcType=VARCHAR}, + + + dataset_field_id = #{record.datasetFieldId,jdbcType=VARCHAR}, + + + `filter` = #{record.filter,jdbcType=VARCHAR}, + + + update_time = #{record.updateTime,jdbcType=BIGINT}, + + + + + + + + update dataset_row_permissions + set id = #{record.id,jdbcType=VARCHAR}, + auth_target_type = #{record.authTargetType,jdbcType=VARCHAR}, + auth_target_id = #{record.authTargetId,jdbcType=BIGINT}, + dataset_id = #{record.datasetId,jdbcType=VARCHAR}, + dataset_field_id = #{record.datasetFieldId,jdbcType=VARCHAR}, + `filter` = #{record.filter,jdbcType=VARCHAR}, + update_time = #{record.updateTime,jdbcType=BIGINT} + + + + + + update dataset_row_permissions + + + auth_target_type = #{authTargetType,jdbcType=VARCHAR}, + + + auth_target_id = #{authTargetId,jdbcType=BIGINT}, + + + dataset_id = #{datasetId,jdbcType=VARCHAR}, + + + dataset_field_id = #{datasetFieldId,jdbcType=VARCHAR}, + + + `filter` = #{filter,jdbcType=VARCHAR}, + + + update_time = #{updateTime,jdbcType=BIGINT}, + + + where id = #{id,jdbcType=VARCHAR} + + + update dataset_row_permissions + set auth_target_type = #{authTargetType,jdbcType=VARCHAR}, + auth_target_id = #{authTargetId,jdbcType=BIGINT}, + dataset_id = #{datasetId,jdbcType=VARCHAR}, + dataset_field_id = #{datasetFieldId,jdbcType=VARCHAR}, + `filter` = #{filter,jdbcType=VARCHAR}, + update_time = #{updateTime,jdbcType=BIGINT} + where id = #{id,jdbcType=VARCHAR} + + \ No newline at end of file diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTableMapper.java b/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTableMapper.java index 5261a66430..7c1eba3e52 100644 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTableMapper.java +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTableMapper.java @@ -1,6 +1,10 @@ package io.dataease.base.mapper.ext; +import io.dataease.base.domain.DatasetRowPermissions; +import io.dataease.base.mapper.ext.query.GridExample; import io.dataease.controller.request.dataset.DataSetTableRequest; +import io.dataease.controller.sys.response.RoleUserItem; +import io.dataease.dto.dataset.DataSetRowPermissionsDTO; import io.dataease.dto.dataset.DataSetTableDTO; import java.util.List; @@ -9,4 +13,12 @@ public interface ExtDataSetTableMapper { List search(DataSetTableRequest request); DataSetTableDTO searchOne(DataSetTableRequest request); + + List searchRowPermissons(GridExample example); + + List searchAuthUsers(DatasetRowPermissions example); + + List searchAuthRoles(DatasetRowPermissions example); + + List searchAuthDepts(DatasetRowPermissions example); } diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTableMapper.xml b/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTableMapper.xml index 230f89883c..9359763138 100644 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTableMapper.xml +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTableMapper.xml @@ -7,6 +7,15 @@ + + + + + + + + + + + + + + + + + + + diff --git a/backend/src/main/java/io/dataease/controller/dataset/DataSetTableRowPermissionsController.java b/backend/src/main/java/io/dataease/controller/dataset/DataSetTableRowPermissionsController.java new file mode 100644 index 0000000000..04f808f3fe --- /dev/null +++ b/backend/src/main/java/io/dataease/controller/dataset/DataSetTableRowPermissionsController.java @@ -0,0 +1,60 @@ +package io.dataease.controller.dataset; + +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.github.xiaoymin.knife4j.annotations.ApiSupport; +import io.dataease.base.domain.DatasetRowPermissions; +import io.dataease.commons.utils.PageUtils; +import io.dataease.commons.utils.Pager; +import io.dataease.controller.sys.base.BaseGridRequest; +import io.dataease.dto.dataset.DataSetRowPermissionsDTO; +import io.dataease.service.dataset.DataSetTableRowPermissionsService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + + +@Api(tags = "数据集:数据集行权限") +@ApiSupport(order = 90) +@RestController +@RequestMapping("dataset/rowPermissions") +public class DataSetTableRowPermissionsController { + @Resource + private DataSetTableRowPermissionsService dataSetTableRowPermissionsService; + + @ApiOperation("保存") + @PostMapping("save") + public void save(@RequestBody DatasetRowPermissions datasetRowPermissions) throws Exception { + dataSetTableRowPermissionsService.save(datasetRowPermissions); + } + + + @ApiOperation("分页查询") + @PostMapping("/pageList/{datasetId}/{goPage}/{pageSize}") + public Pager> rowPermissions(@PathVariable String datasetId, @PathVariable int goPage, @PathVariable int pageSize, @RequestBody BaseGridRequest request) { + Page page = PageHelper.startPage(goPage, pageSize, true); + return PageUtils.setPageInfo(page, dataSetTableRowPermissionsService.searchRowPermissions(request, datasetId)); + } + + @ApiOperation("有权限的对象") + @PostMapping("/authObjs") + public List authObjs(@RequestBody DataSetRowPermissionsDTO request) { + return (List) dataSetTableRowPermissionsService.authObjs(request); + } + + @ApiOperation("详情") + @PostMapping("/dataSetRowPermissionInfo") + public DataSetRowPermissionsDTO dataSetRowPermissionInfo(@RequestBody DataSetRowPermissionsDTO request) { + return dataSetTableRowPermissionsService.dataSetRowPermissionInfo(request); + } + + @ApiOperation("删除") + @PostMapping("/delete/{id}") + public void dataSetRowPermissionInfo(@PathVariable String id) { + dataSetTableRowPermissionsService.delete(id); + } + +} diff --git a/backend/src/main/java/io/dataease/dto/dataset/DataSetRowPermissionsDTO.java b/backend/src/main/java/io/dataease/dto/dataset/DataSetRowPermissionsDTO.java new file mode 100644 index 0000000000..519f9d453f --- /dev/null +++ b/backend/src/main/java/io/dataease/dto/dataset/DataSetRowPermissionsDTO.java @@ -0,0 +1,21 @@ +package io.dataease.dto.dataset; + +import io.dataease.base.domain.DatasetRowPermissions; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + * @Author gin + * @Date 2021/3/9 3:19 下午 + */ +@Getter +@Setter +public class DataSetRowPermissionsDTO extends DatasetRowPermissions { + @ApiModelProperty("数据集名称") + private String datasetName; + @ApiModelProperty("字段名称") + private String fieldName; + @ApiModelProperty("授权对象名称") + private String authTargetName; +} diff --git a/backend/src/main/java/io/dataease/provider/query/QueryProvider.java b/backend/src/main/java/io/dataease/provider/query/QueryProvider.java index dc818d852e..4f3894da13 100644 --- a/backend/src/main/java/io/dataease/provider/query/QueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/QueryProvider.java @@ -23,17 +23,17 @@ public abstract class QueryProvider { public abstract String createSQLPreview(String sql, String orderBy); - public abstract String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds); + public abstract String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter); - public abstract String createQuerySQLAsTmp(String sql, List fields, boolean isGroup); + public abstract String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter); - public abstract String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds); + public abstract String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter); - public abstract String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup); + public abstract String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter); - public abstract String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds); + public abstract String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter); - public abstract String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup); + public abstract String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter); public abstract String getSQL(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view); 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 47f29641ca..197919e3b4 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 @@ -107,7 +107,7 @@ public class CKQueryProvider extends QueryProvider { } @Override - public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds) { + public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(CKConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -170,32 +170,36 @@ public class CKQueryProvider extends QueryProvider { st_sql.add("isGroup", isGroup); if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); + List customWheres = transCustomFilterList(tableObj, customFilter); + List wheres = new ArrayList<>(); + if (customWheres != null) wheres.addAll(customWheres); + if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres); return st_sql.render(); } @Override - public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup) { - return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null); + public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter) { + return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter); } @Override - public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) { - return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + (page - 1) * pageSize + "," + realSize; + public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter) { + return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize; } @Override - public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds) { - return createQuerySQL(table, fields, isGroup, null) + " LIMIT 0," + limit; + public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter) { + return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT 0," + limit; } @Override - public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup) { - return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT 0," + limit; + public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter) { + return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT 0," + limit; } @Override - public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) { - return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize; + public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter) { + return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize; } @Override diff --git a/backend/src/main/java/io/dataease/provider/query/doris/DorisQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/doris/DorisQueryProvider.java index 9fb7b9eac1..77ad08ebd5 100644 --- a/backend/src/main/java/io/dataease/provider/query/doris/DorisQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/doris/DorisQueryProvider.java @@ -78,7 +78,7 @@ public class DorisQueryProvider extends QueryProvider { } @Override - public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds) { + public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(DorisConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -140,6 +140,11 @@ public class DorisQueryProvider extends QueryProvider { st_sql.add("isGroup", isGroup); if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); + List customWheres = transCustomFilterList(tableObj, customFilter); + List wheres = new ArrayList<>(); + if (customWheres != null) wheres.addAll(customWheres); + if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres); + if ((fields.size() > 0)) { xOrders.add(SQLObj.builder() .orderDirection("asc") @@ -152,28 +157,28 @@ public class DorisQueryProvider extends QueryProvider { } @Override - public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup) { - return createQuerySQL("(" + sql + ")", fields, isGroup, null); + public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter) { + return createQuerySQL("(" + sql + ")", fields, isGroup, null, customFilter); } @Override - public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) { - return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + (page - 1) * pageSize + "," + realSize; + public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter) { + return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize; } @Override - public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds) { - return createQuerySQL(table, fields, isGroup, null) + " LIMIT 0," + limit; + public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter) { + return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT 0," + limit; } @Override - public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup) { - return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT 0," + limit; + public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter) { + return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT 0," + limit; } @Override - public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) { - return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize; + public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter) { + return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize; } @Override diff --git a/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java index fa3babd645..beb86fbe44 100644 --- a/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java @@ -110,7 +110,7 @@ public class EsQueryProvider extends QueryProvider { } @Override - public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds) { + public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(EsSqlLConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -169,32 +169,38 @@ public class EsQueryProvider extends QueryProvider { st_sql.add("isGroup", isGroup); if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); + + List customWheres = transCustomFilterList(tableObj, customFilter); + List wheres = new ArrayList<>(); + if (customWheres != null) wheres.addAll(customWheres); + if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres); + return st_sql.render(); } @Override - public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup) { - return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null); + public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter) { + return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter); } @Override - public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) { - return createQuerySQL(table, fields, isGroup, null); + public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter) { + return createQuerySQL(table, fields, isGroup, null, customFilter); } @Override - public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds) { - return createQuerySQL(table, fields, isGroup, null); + public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter) { + return createQuerySQL(table, fields, isGroup, null, customFilter); } @Override - public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup) { - return createQuerySQLAsTmp(sql, fields, isGroup); + public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter) { + return createQuerySQLAsTmp(sql, fields, isGroup, customFilter); } @Override - public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) { - return createQuerySQLAsTmp(sql, fields, isGroup); + public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter) { + return createQuerySQLAsTmp(sql, fields, isGroup, customFilter); } @Override diff --git a/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java index ea3cd6cdfd..ff8414ee8f 100644 --- a/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java @@ -69,7 +69,7 @@ public class HiveQueryProvider extends QueryProvider { } @Override - public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds) { + public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(HiveConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -128,32 +128,36 @@ public class HiveQueryProvider extends QueryProvider { st_sql.add("isGroup", isGroup); if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); + List customWheres = transCustomFilterList(tableObj, customFilter); + List wheres = new ArrayList<>(); + if (customWheres != null) wheres.addAll(customWheres); + if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres); return st_sql.render(); } @Override - public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup) { - return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null); + public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter) { + return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter); } @Override - public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) { - return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + (page - 1) * pageSize + "," + realSize; + public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter) { + return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize; } @Override - public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds) { - return createQuerySQL(table, fields, isGroup, null) + " LIMIT 0," + limit; + public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter) { + return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT 0," + limit; } @Override - public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup) { - return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT 0," + limit; + public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter) { + return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT 0," + limit; } @Override - public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) { - return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize; + public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter) { + return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize; } @Override diff --git a/backend/src/main/java/io/dataease/provider/query/mongodb/MongoQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/mongodb/MongoQueryProvider.java index 6ce769efbe..cfeae614bf 100644 --- a/backend/src/main/java/io/dataease/provider/query/mongodb/MongoQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/mongodb/MongoQueryProvider.java @@ -81,7 +81,7 @@ public class MongoQueryProvider extends QueryProvider { } @Override - public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds) { + public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MongoConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -114,32 +114,36 @@ public class MongoQueryProvider extends QueryProvider { st_sql.add("isGroup", isGroup); if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); + List customWheres = transCustomFilterList(tableObj, customFilter); + List wheres = new ArrayList<>(); + if (customWheres != null) wheres.addAll(customWheres); + if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres); return st_sql.render(); } @Override - public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup) { - return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null); + public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter) { + return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter); } @Override - public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) { - return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + (page - 1) * pageSize + "," + realSize; + public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter) { + return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize; } @Override - public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds) { - return createQuerySQL(table, fields, isGroup, null) + " LIMIT 0," + limit; + public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter) { + return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT 0," + limit; } @Override - public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup) { - return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT 0," + limit; + public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter) { + return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT 0," + limit; } @Override - public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) { - return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize; + public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter) { + return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize; } @Override diff --git a/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java index a6090f85a5..7c7a3d9dd9 100644 --- a/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java @@ -78,7 +78,7 @@ public class MysqlQueryProvider extends QueryProvider { } @Override - public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds) { + public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MySQLConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -137,32 +137,38 @@ public class MysqlQueryProvider extends QueryProvider { st_sql.add("isGroup", isGroup); if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); + + List customWheres = transCustomFilterList(tableObj, customFilter); + List wheres = new ArrayList<>(); + if (customWheres != null) wheres.addAll(customWheres); + if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres); + return st_sql.render(); } @Override - public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup) { - return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null); + public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter) { + return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter); } @Override - public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) { - return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + (page - 1) * pageSize + "," + realSize; + public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter) { + return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize; } @Override - public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds) { - return createQuerySQL(table, fields, isGroup, null) + " LIMIT 0," + limit; + public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter) { + return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT 0," + limit; } @Override - public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup) { - return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT 0," + limit; + public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter) { + return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT 0," + limit; } @Override - public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) { - return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize; + public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter) { + return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize; } @Override diff --git a/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java index 182efce285..4638d5b3b0 100644 --- a/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java @@ -93,7 +93,7 @@ public class OracleQueryProvider extends QueryProvider { } @Override - public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds) { + public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(OracleConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(OracleConstants.ALIAS_FIX, String.format(TABLE_ALIAS_PREFIX, 0))) @@ -107,6 +107,10 @@ public class OracleQueryProvider extends QueryProvider { st_sql.add("isGroup", isGroup); if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); + List customWheres = transCustomFilterList(tableObj, customFilter); + List wheres = new ArrayList<>(); + if (customWheres != null) wheres.addAll(customWheres); + if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres); return st_sql.render(); } @@ -182,33 +186,33 @@ public class OracleQueryProvider extends QueryProvider { } @Override - public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup) { - return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null); + public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter) { + return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter); } @Override - public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) { + public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter) { List xFields = xFields(table, fields); return MessageFormat.format("SELECT {0} FROM ( SELECT DE_TMP.*, rownum r FROM ( {1} ) DE_TMP WHERE rownum <= {2} ) WHERE r > {3} ", - sqlColumn(xFields), createQuerySQL(table, fields, isGroup, ds), Integer.valueOf(page * realSize).toString(), Integer.valueOf((page - 1) * pageSize).toString()); + sqlColumn(xFields), createQuerySQL(table, fields, isGroup, ds, customFilter), Integer.valueOf(page * realSize).toString(), Integer.valueOf((page - 1) * pageSize).toString()); } @Override - public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) { + public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter) { List xFields = xFields("(" + sqlFix(sql) + ")", fields); return MessageFormat.format("SELECT {0} FROM ( SELECT DE_TMP.*, rownum r FROM ( {1} ) DE_TMP WHERE rownum <= {2} ) WHERE r > {3} ", - sqlColumn(xFields), createQuerySQLAsTmp(sql, fields, isGroup), Integer.valueOf(page * realSize).toString(), Integer.valueOf((page - 1) * pageSize).toString()); + sqlColumn(xFields), createQuerySQLAsTmp(sql, fields, isGroup, customFilter), Integer.valueOf(page * realSize).toString(), Integer.valueOf((page - 1) * pageSize).toString()); } @Override - public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds) { + public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter) { String schema = new Gson().fromJson(ds.getConfiguration(), JdbcConfiguration.class).getSchema(); return String.format("SELECT * from %s WHERE rownum <= %s ", schema + "." + String.format(OracleConstants.KEYWORD_TABLE, table), limit.toString()); } @Override - public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup) { + public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter) { return String.format("SELECT * from %s WHERE rownum <= %s ", "(" + sqlFix(sql) + ")", limit.toString()); } diff --git a/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java index 050dd33baa..00fa643e25 100644 --- a/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java @@ -98,7 +98,7 @@ public class PgQueryProvider extends QueryProvider { } @Override - public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds) { + public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(PgConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -159,32 +159,36 @@ public class PgQueryProvider extends QueryProvider { st_sql.add("isGroup", isGroup); if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); + List customWheres = transCustomFilterList(tableObj, customFilter); + List wheres = new ArrayList<>(); + if (customWheres != null) wheres.addAll(customWheres); + if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres); return st_sql.render(); } @Override - public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup) { - return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null); + public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter) { + return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter); } @Override - public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) { - return createQuerySQL(table, fields, isGroup, ds) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize; + public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter) { + return createQuerySQL(table, fields, isGroup, ds, customFilter) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize; } @Override - public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) { - return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize; + public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter) { + return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize; } @Override - public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds) { - return createQuerySQL(table, fields, isGroup, ds) + " LIMIT " + limit + " offset 0"; + public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter) { + return createQuerySQL(table, fields, isGroup, ds, customFilter) + " LIMIT " + limit + " offset 0"; } @Override - public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup) { - return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + limit + " offset 0"; + public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter) { + return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + limit + " offset 0"; } @Override diff --git a/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java index 2dda33e3e1..f0183dd3a5 100644 --- a/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java @@ -107,7 +107,7 @@ public class RedshiftQueryProvider extends QueryProvider { } @Override - public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds) { + public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(PgConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -168,32 +168,36 @@ public class RedshiftQueryProvider extends QueryProvider { st_sql.add("isGroup", isGroup); if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); + List customWheres = transCustomFilterList(tableObj, customFilter); + List wheres = new ArrayList<>(); + if (customWheres != null) wheres.addAll(customWheres); + if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres); return st_sql.render(); } @Override - public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup) { - return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null); + public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter) { + return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter); } @Override - public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) { - return createQuerySQL(table, fields, isGroup, ds) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize; + public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter) { + return createQuerySQL(table, fields, isGroup, ds, customFilter) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize; } @Override - public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) { - return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize; + public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter) { + return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize; } @Override - public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds) { - return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + limit + " offset 0"; + public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter) { + return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT " + limit + " offset 0"; } @Override - public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup) { - return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + limit + " offset 0"; + public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter) { + return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + limit + " offset 0"; } @Override 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 f07644a423..c92f7e7dcc 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 @@ -86,7 +86,7 @@ public class SqlserverQueryProvider extends QueryProvider { } @Override - public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds) { + public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(SqlServerSQLConstants.KEYWORD_TABLE, table)) @@ -140,35 +140,39 @@ public class SqlserverQueryProvider extends QueryProvider { st_sql.add("isGroup", isGroup); if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); + List customWheres = transCustomFilterList(tableObj, customFilter); + List wheres = new ArrayList<>(); + if (customWheres != null) wheres.addAll(customWheres); + if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres); return st_sql.render(); } @Override - public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup) { - return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null); + public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter) { + return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter); } @Override - public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) { + public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter) { Integer size = (page - 1) * pageSize + realSize; - return String.format("SELECT top %s * from ( %s ) AS DE_SQLSERVER_TMP ", size.toString(), createQuerySQL(table, fields, isGroup, ds)); + return String.format("SELECT top %s * from ( %s ) AS DE_SQLSERVER_TMP ", size.toString(), createQuerySQL(table, fields, isGroup, ds, customFilter)); } @Override - public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds) { + public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter) { String schema = new Gson().fromJson(ds.getConfiguration(), JdbcConfiguration.class).getSchema(); return String.format("SELECT top %s * from %s ", limit.toString(), schema + "." + table); } @Override - public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) { + public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter) { Integer size = (page - 1) * pageSize + realSize; - return String.format("SELECT top %s * from ( %s ) AS DE_SQLSERVER_TMP ", size.toString(), createQuerySQLAsTmp(sql, fields, isGroup)); + return String.format("SELECT top %s * from ( %s ) AS DE_SQLSERVER_TMP ", size.toString(), createQuerySQLAsTmp(sql, fields, isGroup, customFilter)); } @Override - public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup) { + public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter) { return String.format("SELECT top %s * from ( %s ) as DE_SQLSERVER_TMP ", limit.toString(), sqlFix(sql)); } diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableRowPermissionsService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableRowPermissionsService.java new file mode 100644 index 0000000000..3631ee7b5a --- /dev/null +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableRowPermissionsService.java @@ -0,0 +1,110 @@ +package io.dataease.service.dataset; + +import io.dataease.base.domain.DatasetRowPermissions; +import io.dataease.base.domain.DatasetRowPermissionsExample; +import io.dataease.base.mapper.DatasetRowPermissionsMapper; +import io.dataease.base.mapper.SysDeptMapper; +import io.dataease.base.mapper.SysRoleMapper; +import io.dataease.base.mapper.SysUserMapper; +import io.dataease.base.mapper.ext.ExtDataSetTableMapper; +import io.dataease.base.mapper.ext.query.GridExample; +import io.dataease.commons.utils.AuthUtils; +import io.dataease.controller.sys.base.BaseGridRequest; +import io.dataease.controller.sys.base.ConditionEntity; +import io.dataease.dto.dataset.DataSetRowPermissionsDTO; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +@Service +@Transactional(rollbackFor = Exception.class) + + + +public class DataSetTableRowPermissionsService { + @Resource + private ExtDataSetTableMapper extDataSetTableMapper; + @Resource + private DatasetRowPermissionsMapper datasetRowPermissionsMapper; + @Resource + private SysUserMapper sysUserMapper; + @Resource + private SysRoleMapper sysRoleMapper; + @Resource + private SysDeptMapper sysDeptMapper; + + public List searchRowPermissions(BaseGridRequest request, String datasetId){ + List conditionEntities = request.getConditions() == null ? new ArrayList<>() : request.getConditions(); + ConditionEntity entity = new ConditionEntity(); + entity.setField("dataset_row_permissions.dataset_id"); + entity.setOperator("eq"); + entity.setValue(datasetId); + conditionEntities.add(entity); + request.setConditions(conditionEntities); + GridExample gridExample = request.convertExample(); + gridExample.setExtendCondition(AuthUtils.getUser().getUserId().toString()); + return extDataSetTableMapper.searchRowPermissons(gridExample); + } + + public List authObjs(DataSetRowPermissionsDTO request){ + switch (request.getAuthTargetType()) { + case "user": + return extDataSetTableMapper.searchAuthUsers(request); + case "role": + return extDataSetTableMapper.searchAuthRoles(request); + case "dept": + return extDataSetTableMapper.searchAuthDepts(request); + default: + return new ArrayList<>(); + } + } + + public void save(DatasetRowPermissions datasetRowPermissions){ + if(StringUtils.isEmpty(datasetRowPermissions.getId())){ + datasetRowPermissions.setId(UUID.randomUUID().toString()); + datasetRowPermissions.setUpdateTime(System.currentTimeMillis()); + datasetRowPermissionsMapper.insert(datasetRowPermissions); + }else { + datasetRowPermissions.setUpdateTime(System.currentTimeMillis()); + datasetRowPermissionsMapper.updateByPrimaryKey(datasetRowPermissions); + } + + } + + public DataSetRowPermissionsDTO dataSetRowPermissionInfo(DataSetRowPermissionsDTO datasetRowPermissions){ + switch (datasetRowPermissions.getAuthTargetType()) { + case "user": + datasetRowPermissions.setAuthTargetName(Optional.ofNullable(sysUserMapper.selectByPrimaryKey(datasetRowPermissions.getAuthTargetId())).get().getUsername()); + break; + case "role": + datasetRowPermissions.setAuthTargetName(Optional.ofNullable(sysRoleMapper.selectByPrimaryKey(datasetRowPermissions.getAuthTargetId())).get().getName()); + break; + case "dept": + datasetRowPermissions.setAuthTargetName(Optional.ofNullable(sysDeptMapper.selectByPrimaryKey(datasetRowPermissions.getAuthTargetId())).get().getName()); + break; + default: + break; + } + return datasetRowPermissions; + } + + public void delete(String id){ + datasetRowPermissionsMapper.deleteByPrimaryKey(id); + } + + public List listDatasetRowPermissions(String datasetId, ListauthTargetIds, String authTargetType){ + if(CollectionUtils.isEmpty(authTargetIds)){ + return new ArrayList<>(); + } + DatasetRowPermissionsExample example = new DatasetRowPermissionsExample(); + example.createCriteria().andDatasetIdEqualTo(datasetId).andAuthTargetTypeEqualTo(authTargetType).andAuthTargetIdIn(authTargetIds); + return datasetRowPermissionsMapper.selectByExample(example); + } +} 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 7838ca7e31..96618f71b7 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -1,7 +1,9 @@ package io.dataease.service.dataset; +import com.alibaba.fastjson.JSONObject; import com.google.gson.Gson; +import io.dataease.auth.api.dto.CurrentRoleDto; import io.dataease.base.domain.*; import io.dataease.base.mapper.*; import io.dataease.base.mapper.ext.ExtDataSetGroupMapper; @@ -17,6 +19,7 @@ import io.dataease.controller.request.dataset.DataSetTableRequest; import io.dataease.controller.request.dataset.DataSetTaskRequest; import io.dataease.controller.response.DataSetDetail; import io.dataease.commons.constants.DatasourceTypes; +import io.dataease.dto.chart.ChartCustomFilterDTO; import io.dataease.dto.datasource.TableFiled; import io.dataease.provider.datasource.DatasourceProvider; import io.dataease.provider.datasource.JdbcProvider; @@ -80,8 +83,6 @@ public class DataSetTableService { @Resource private DataSetTableUnionService dataSetTableUnionService; @Resource - private DataSetTableTaskLogService dataSetTableTaskLogService; - @Resource private QrtzSchedulerStateMapper qrtzSchedulerStateMapper; @Resource private DatasetTableTaskLogMapper datasetTableTaskLogMapper; @@ -89,8 +90,10 @@ public class DataSetTableService { private ExtDataSetGroupMapper extDataSetGroupMapper; @Resource private DatasetTableFieldMapper datasetTableFieldMapper; - private static String lastUpdateTime = "${__last_update_time__}"; - private static String currentUpdateTime = "${__current_update_time__}"; + @Resource + private DataSetTableRowPermissionsService dataSetTableRowPermissionsService; + private static final String lastUpdateTime = "${__last_update_time__}"; + private static final String currentUpdateTime = "${__current_update_time__}"; @Value("${upload.file.path}") private String path; @@ -144,9 +147,7 @@ public class DataSetTableService { int insert = datasetTableMapper.insert(sheetTable); if (insert == 1) { saveExcelTableField(sheetTable.getId(), excelSheetDataList.get(0).getFields(), true); - commonThreadPool.addTask(() -> { - extractDataService.extractExcelData(sheetTable.getId(), "all_scope", "初始导入", null); - }); + commonThreadPool.addTask(() -> extractDataService.extractExcelData(sheetTable.getId(), "all_scope", "初始导入", null)); } } } else { @@ -172,9 +173,7 @@ public class DataSetTableService { int insert = datasetTableMapper.insert(sheetTable); if (insert == 1) { saveExcelTableField(sheetTable.getId(), sheet.getFields(), true); - commonThreadPool.addTask(() -> { - extractDataService.extractExcelData(sheetTable.getId(), "all_scope", "初始导入", null); - }); + commonThreadPool.addTask(() -> extractDataService.extractExcelData(sheetTable.getId(), "all_scope", "初始导入", null)); } } } @@ -209,13 +208,9 @@ public class DataSetTableService { if (update == 1) { if (datasetTable.getEditType() == 0) { - commonThreadPool.addTask(() -> { - extractDataService.extractExcelData(datasetTable.getId(), "all_scope", "替换", saveExcelTableField(datasetTable.getId(), datasetTable.getSheets().get(0).getFields(), false)); - }); + commonThreadPool.addTask(() -> extractDataService.extractExcelData(datasetTable.getId(), "all_scope", "替换", saveExcelTableField(datasetTable.getId(), datasetTable.getSheets().get(0).getFields(), false))); } else if (datasetTable.getEditType() == 1) { - commonThreadPool.addTask(() -> { - extractDataService.extractExcelData(datasetTable.getId(), "add_scope", "追加", null); - }); + commonThreadPool.addTask(() -> extractDataService.extractExcelData(datasetTable.getId(), "add_scope", "追加", null)); } } } @@ -434,11 +429,44 @@ public class DataSetTableService { return map; } + private List rowPermissions(String datasetId){ + List datasetRowPermissions = new ArrayList<>(); + datasetRowPermissions.addAll(dataSetTableRowPermissionsService.listDatasetRowPermissions(datasetId, Collections.singletonList(AuthUtils.getUser().getUserId()), "user")); + datasetRowPermissions.addAll(dataSetTableRowPermissionsService.listDatasetRowPermissions(datasetId, AuthUtils.getUser().getRoles().stream().map(CurrentRoleDto::getId).collect(Collectors.toList()) , "role")); + datasetRowPermissions.addAll(dataSetTableRowPermissionsService.listDatasetRowPermissions(datasetId, Collections.singletonList(AuthUtils.getUser().getDeptId()), "dept")); + return datasetRowPermissions; + } + + private DatasetTableField getFieldById(List fields, String fieldId){ + DatasetTableField field = null; + for (DatasetTableField datasetTableField : fields) { + if(fieldId.equalsIgnoreCase(datasetTableField.getId())){ + field = datasetTableField; + } + } + return field; + } + + + public List getCustomFilters(List fields, DatasetTable datasetTable) { + List customFilter = new ArrayList<>(); + rowPermissions(datasetTable.getId()).forEach(datasetRowPermissions -> { + List lists = JSONObject.parseArray(datasetRowPermissions.getFilter(), ChartCustomFilterDTO.class); + lists.forEach(chartCustomFilterDTO -> { + DatasetTableField field = getFieldById(fields, chartCustomFilterDTO.getFieldId()); + if(field != null){ + chartCustomFilterDTO.setFieldId(datasetRowPermissions.getDatasetFieldId()); + chartCustomFilterDTO.setField(field); + } + }); + customFilter.addAll(lists); + }); + return customFilter; + } + public Map getPreviewData(DataSetTableRequest dataSetTableRequest, Integer page, Integer pageSize) throws Exception { Map map = new HashMap<>(); - DatasetTableField datasetTableField = DatasetTableField.builder().build(); - datasetTableField.setTableId(dataSetTableRequest.getId()); - datasetTableField.setChecked(Boolean.TRUE); + DatasetTableField datasetTableField = DatasetTableField.builder().tableId(dataSetTableRequest.getId()).checked(Boolean.TRUE).build(); List fields = dataSetTableFieldsService.list(datasetTableField); if (CollectionUtils.isEmpty(fields)) { map.put("fields", fields); @@ -446,10 +474,12 @@ public class DataSetTableService { map.put("page", new DataSetPreviewPage()); return map; } + DatasetTable datasetTable = datasetTableMapper.selectByPrimaryKey(dataSetTableRequest.getId()); + List customFilter = getCustomFilters(fields, datasetTable); String[] fieldArray = fields.stream().map(DatasetTableField::getDataeaseName).toArray(String[]::new); DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class); - DatasetTable datasetTable = datasetTableMapper.selectByPrimaryKey(dataSetTableRequest.getId()); + List data = new ArrayList<>(); DataSetPreviewPage dataSetPreviewPage = new DataSetPreviewPage(); @@ -471,7 +501,10 @@ public class DataSetTableService { datasourceRequest.setDatasource(ds); String table = dataTableInfoDTO.getTable(); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); - datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds)); + + + datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, customFilter)); + map.put("sql", datasourceRequest.getQuery()); datasourceRequest.setPage(page); datasourceRequest.setFetchSize(Integer.parseInt(dataSetTableRequest.getRow())); @@ -487,7 +520,7 @@ public class DataSetTableService { } try { - datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds)); + datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds, customFilter)); datasourceRequest.setPageable(false); dataSetPreviewPage.setTotal(datasourceProvider.getData(datasourceRequest).size()); } catch (Exception e) { @@ -505,7 +538,7 @@ public class DataSetTableService { datasourceRequest.setDatasource(ds); String table = DorisTableUtils.dorisName(dataSetTableRequest.getId()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); - datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds)); + datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, customFilter)); map.put("sql", datasourceRequest.getQuery()); try { data.addAll(jdbcProvider.getData(datasourceRequest)); @@ -514,7 +547,7 @@ public class DataSetTableService { DEException.throwException(e.getMessage()); } try { - datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds)); + datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds, customFilter)); dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size()); } catch (Exception e) { e.printStackTrace(); @@ -534,7 +567,7 @@ public class DataSetTableService { String sql = dataTableInfoDTO.getSql(); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); - datasourceRequest.setQuery(qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false)); + datasourceRequest.setQuery(qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false, customFilter)); map.put("sql", datasourceRequest.getQuery()); datasourceRequest.setPage(page); datasourceRequest.setFetchSize(Integer.parseInt(dataSetTableRequest.getRow())); @@ -550,7 +583,7 @@ public class DataSetTableService { } try { datasourceRequest.setPageable(false); - datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields, Integer.valueOf(dataSetTableRequest.getRow()), false)); + datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, customFilter)); dataSetPreviewPage.setTotal(datasourceProvider.getData(datasourceRequest).size()); } catch (Exception e) { e.printStackTrace(); @@ -567,7 +600,7 @@ public class DataSetTableService { datasourceRequest.setDatasource(ds); String table = DorisTableUtils.dorisName(dataSetTableRequest.getId()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); - datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds)); + datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, customFilter)); map.put("sql", datasourceRequest.getQuery()); try { data.addAll(jdbcProvider.getData(datasourceRequest)); @@ -576,7 +609,7 @@ public class DataSetTableService { DEException.throwException(e.getMessage()); } try { - datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds)); + datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds, customFilter)); dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size()); } catch (Exception e) { e.printStackTrace(); @@ -594,7 +627,7 @@ public class DataSetTableService { datasourceRequest.setDatasource(ds); String table = DorisTableUtils.dorisName(dataSetTableRequest.getId()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); - datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds)); + datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, customFilter)); map.put("sql", datasourceRequest.getQuery()); try { data.addAll(jdbcProvider.getData(datasourceRequest)); @@ -603,7 +636,7 @@ public class DataSetTableService { DEException.throwException(e.getMessage()); } try { - datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds)); + datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds, customFilter)); dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size()); } catch (Exception e) { e.printStackTrace(); @@ -624,7 +657,7 @@ public class DataSetTableService { String sql = getCustomSQLDatasource(dt, list, ds); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); - datasourceRequest.setQuery(qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false)); + datasourceRequest.setQuery(qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false, customFilter)); map.put("sql", datasourceRequest.getQuery()); datasourceRequest.setPage(page); datasourceRequest.setFetchSize(Integer.parseInt(dataSetTableRequest.getRow())); @@ -640,7 +673,7 @@ public class DataSetTableService { } try { datasourceRequest.setPageable(false); - datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields, Integer.valueOf(dataSetTableRequest.getRow()), false)); + datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, customFilter)); dataSetPreviewPage.setTotal(datasourceProvider.getData(datasourceRequest).size()); } catch (Exception e) { e.printStackTrace(); @@ -653,7 +686,7 @@ public class DataSetTableService { datasourceRequest.setDatasource(ds); String table = DorisTableUtils.dorisName(dataSetTableRequest.getId()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); - datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds)); + datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, customFilter)); map.put("sql", datasourceRequest.getQuery()); try { data.addAll(jdbcProvider.getData(datasourceRequest)); @@ -663,7 +696,7 @@ public class DataSetTableService { } try { - datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds)); + datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds, customFilter)); dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size()); } catch (Exception e) { e.printStackTrace(); diff --git a/backend/src/main/java/io/dataease/service/dataset/impl/direct/DirectFieldService.java b/backend/src/main/java/io/dataease/service/dataset/impl/direct/DirectFieldService.java index 44f5f3e02a..d107156c13 100644 --- a/backend/src/main/java/io/dataease/service/dataset/impl/direct/DirectFieldService.java +++ b/backend/src/main/java/io/dataease/service/dataset/impl/direct/DirectFieldService.java @@ -5,6 +5,7 @@ import io.dataease.base.domain.DatasetTable; import io.dataease.base.domain.DatasetTableField; import io.dataease.base.domain.Datasource; import io.dataease.commons.utils.CommonBeanFactory; +import io.dataease.dto.chart.ChartCustomFilterDTO; import io.dataease.provider.datasource.DatasourceProvider; import io.dataease.provider.ProviderFactory; import io.dataease.controller.request.datasource.DatasourceRequest; @@ -41,8 +42,6 @@ public class DirectFieldService implements DataSetFieldService { @Override public List fieldValues(String fieldId) { - - List list = dataSetTableFieldsService.getListByIds(new ArrayList() {{ add(fieldId); }}); @@ -51,9 +50,14 @@ public class DirectFieldService implements DataSetFieldService { DatasetTableField field = list.get(0); String tableId = field.getTableId(); if (StringUtils.isEmpty(tableId)) return null; + DatasetTable datasetTable = dataSetTableService.get(tableId); if (ObjectUtils.isEmpty(datasetTable) || StringUtils.isEmpty(datasetTable.getName())) return null; - String tableName = datasetTable.getName(); + String tableName; + + DatasetTableField datasetTableField = DatasetTableField.builder().tableId(tableId).checked(Boolean.TRUE).build(); + List fields = dataSetTableFieldsService.list(datasetTableField); + List customFilter = dataSetTableService.getCustomFilters(fields, datasetTable); DatasourceRequest datasourceRequest = new DatasourceRequest(); DatasourceProvider datasourceProvider = null; @@ -67,14 +71,14 @@ public class DirectFieldService implements DataSetFieldService { QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "db")) { datasourceRequest.setTable(dataTableInfoDTO.getTable()); - datasourceRequest.setQuery(qp.createQuerySQL(dataTableInfoDTO.getTable(), Collections.singletonList(field), true, ds)); + datasourceRequest.setQuery(qp.createQuerySQL(dataTableInfoDTO.getTable(), Collections.singletonList(field), true, ds, customFilter)); } else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql")) { - datasourceRequest.setQuery(qp.createQuerySQLAsTmp(dataTableInfoDTO.getSql(), Collections.singletonList(field), true)); + datasourceRequest.setQuery(qp.createQuerySQLAsTmp(dataTableInfoDTO.getSql(), Collections.singletonList(field), true, customFilter)); } else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "custom")) { DataTableInfoDTO dt = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class); List listUnion = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId()); String sql = dataSetTableService.getCustomSQLDatasource(dt, listUnion, ds); - datasourceRequest.setQuery(qp.createQuerySQLAsTmp(sql, Collections.singletonList(field), true)); + datasourceRequest.setQuery(qp.createQuerySQLAsTmp(sql, Collections.singletonList(field), true, customFilter)); } } else if (datasetTable.getMode() == 1) {// 抽取 // 连接doris,构建doris数据源查询 @@ -85,7 +89,7 @@ public class DirectFieldService implements DataSetFieldService { tableName = "ds_" + datasetTable.getId().replaceAll("-", "_"); datasourceRequest.setTable(tableName); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); - datasourceRequest.setQuery(qp.createQuerySQL(tableName, Collections.singletonList(field), true, null)); + datasourceRequest.setQuery(qp.createQuerySQL(tableName, Collections.singletonList(field), true, null, customFilter)); } try { diff --git a/backend/src/main/resources/db/migration/V28__de1.5.sql b/backend/src/main/resources/db/migration/V28__de1.5.sql index 0afd17fb91..95879df726 100644 --- a/backend/src/main/resources/db/migration/V28__de1.5.sql +++ b/backend/src/main/resources/db/migration/V28__de1.5.sql @@ -16,3 +16,15 @@ CREATE TABLE `panel_link_mapping` ( `resource_id` varchar(255) DEFAULT NULL COMMENT '仪表板ID', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; + + +CREATE TABLE `dataset_row_permissions` ( + `id` varchar(64) NOT NULL COMMENT 'File ID', + `auth_target_type` varchar(255) DEFAULT NULL COMMENT '权限类型:组织/角色/用户', + `auth_target_id` bigint(20) DEFAULT NULL COMMENT '权限对象ID', + `dataset_id` varchar(64) DEFAULT NULL COMMENT '数据集ID', + `dataset_field_id` varchar(64) DEFAULT NULL COMMENT '数据集字段ID', + `filter` longtext DEFAULT NULL COMMENT '数值', + `update_time` bigint(13) NULL DEFAULT NULL, + PRIMARY KEY (`id`) +); \ No newline at end of file diff --git a/backend/src/main/resources/generatorConfig.xml b/backend/src/main/resources/generatorConfig.xml index 3513934af6..49b7d1fe39 100644 --- a/backend/src/main/resources/generatorConfig.xml +++ b/backend/src/main/resources/generatorConfig.xml @@ -5,7 +5,6 @@ - @@ -37,8 +36,6 @@ - - @@ -63,24 +60,9 @@ - - - - - - -
- - - - - - - - - - - +
+ +
diff --git a/frontend/src/api/dataset/dataset.js b/frontend/src/api/dataset/dataset.js index be73f0862d..a7c57bc1d8 100644 --- a/frontend/src/api/dataset/dataset.js +++ b/frontend/src/api/dataset/dataset.js @@ -163,4 +163,13 @@ export function datasetTaskList(page, size, data, loading) { }) } +export function datasetRowPermissionsList(datasetId, page, size, data, loading) { + return request({ + url: '/dataset/rowpermissions/pageList/' + datasetId + '/' + page + '/' + size, + method: 'post', + data, + loading: loading + }) +} + export default { loadTable, getScene, addGroup, delGroup, addTable, delTable, groupTree } diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index 9ed6e3e856..35da9af475 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -1155,7 +1155,15 @@ export default { confirm_sync_field: '确认同步', confirm_sync_field_tips: '同步字段可能会导致已编辑字段发生变更,请确认', sync_success: '同步成功', - sync_success_1: '同步成功,请对当前数据集重新执行数据同步操作' + sync_success_1: '同步成功,请对当前数据集重新执行数据同步操作', + row_permission: { + type: '类型', + name: '名称', + condition: '条件', + value: '值', + add: '添加行权限', + edit: '编辑行权限' + } }, datasource: { datasource: '数据源', diff --git a/frontend/src/views/chart/components/filter/QuotaFilterEditor.vue b/frontend/src/views/chart/components/filter/QuotaFilterEditor.vue index 2fd334446f..0f80ea826c 100644 --- a/frontend/src/views/chart/components/filter/QuotaFilterEditor.vue +++ b/frontend/src/views/chart/components/filter/QuotaFilterEditor.vue @@ -54,16 +54,6 @@ export default { label: this.$t('chart.filter_not_eq') }] }, - // { - // label: '', - // options: [{ - // value: 'like', - // label: this.$t('chart.filter_like') - // }, { - // value: 'not like', - // label: this.$t('chart.filter_not_like') - // }] - // }, { label: '', options: [{ diff --git a/frontend/src/views/dataset/data/RowPermissions.vue b/frontend/src/views/dataset/data/RowPermissions.vue index 5c061fc5ca..b3354c0857 100644 --- a/frontend/src/views/dataset/data/RowPermissions.vue +++ b/frontend/src/views/dataset/data/RowPermissions.vue @@ -1,35 +1,345 @@ + diff --git a/frontend/src/views/dataset/data/ViewTable.vue b/frontend/src/views/dataset/data/ViewTable.vue index bad5538a6b..8b7ae359be 100644 --- a/frontend/src/views/dataset/data/ViewTable.vue +++ b/frontend/src/views/dataset/data/ViewTable.vue @@ -57,7 +57,7 @@ - +