فهرست منبع

Merge branch 'mazq-0412-dataauth' into 'develop'

数据授权开发

See merge request dcuc-tjdsj/auth-service!8
黄资权 4 سال پیش
والد
کامیت
8349b65eb1

+ 83 - 0
dcuc-auth-api/src/main/java/com/dragoninfo/dcuc/auth/auth/facade/IDataAuthFacade.java

@@ -0,0 +1,83 @@
+package com.dragoninfo.dcuc.auth.auth.facade;
+
+import com.dragoninfo.dcuc.auth.auth.dto.DataAuthDTO;
+import com.dragoninfo.dcuc.auth.auth.dto.SubDataAuthDTO;
+import com.dragonsoft.duceap.base.entity.search.SearchDTO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+/**
+ * 数据权限API
+ * @author mazq
+ * @date 2021/4/8
+ */
+@FeignClient(name = "dcuc-auth",path = "/dcuc/auth/dataAuthFacade")
+public interface IDataAuthFacade {
+
+    /**
+     * 单个数据与主体数据权限新增
+     * @param dataAuthDTO
+     * @return
+     */
+    @PostMapping(value = "dataAuthAdd")
+    DataAuthDTO dataAuthAdd(@RequestBody DataAuthDTO dataAuthDTO);
+
+    /**
+     * 根据id删除某项数据权限
+     * @param id
+     * @return
+     */
+    @GetMapping(value = "dataAuthDelById")
+    DataAuthDTO dataAuthDelById(@RequestParam("id") String id);
+
+    /**
+     * 根据id查询数据权限
+     * @param id
+     * @return
+     */
+    @GetMapping(value = "get")
+    DataAuthDTO get(@RequestParam("id") String id);
+
+    /**
+     * 根据查询条件列表查询
+     * @param searchDTO
+     * @return
+     */
+    @PostMapping("dataAuthSearch")
+    List<DataAuthDTO> dataAuthSearch(@RequestBody  SearchDTO searchDTO);
+
+    /**
+     * 更新某项数据权限
+     * @param dataAuthDTO
+     * @return
+     */
+    @PostMapping(value = "update")
+    boolean update(@RequestBody DataAuthDTO dataAuthDTO);
+
+    /**
+     * 主体数据权限批量新增
+     * @param subDataAuthDTO
+     * @return
+     */
+    @PostMapping("subDataAuthAdd")
+    boolean subDataAuthAdd(@RequestBody SubDataAuthDTO subDataAuthDTO);
+
+    /**
+     * 根据主体id和type查询主体数据权限集合
+     * @param subId  主体id
+     * @param subType 主体类型 ORG:机构 USER:人员  BUSINESS:业务域
+     * @param authType 权限资源类型  权限类型 TABLE:表 COLUMN:列  ALL:公开
+     * @return
+     */
+    @GetMapping("getSubDataAuth")
+    SubDataAuthDTO getSubDataAuth(@RequestParam("subId") String subId,
+                                  @RequestParam("subType") String subType,
+                                  @RequestParam("authType") String authType);
+
+
+}

+ 67 - 0
dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/dto/DataAuthDTO.java

@@ -0,0 +1,67 @@
+package com.dragoninfo.dcuc.auth.auth.dto;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 数据授权DTO
+ * @author mazq
+ * @date 2021/4/8
+ */
+@Data
+public class DataAuthDTO {
+    /**
+     * 主键id
+     */
+    private String id;
+    /**
+     * 主体id 主体为人员/机构/业务域
+     */
+    private String subId;
+    /**
+     * 主体类型  ORG:机构;USER:人员;BUSINESS:业务域
+     */
+    private String subType;
+
+    /**
+     * 数据资源code
+     */
+    private String dataCode;
+
+    /**
+     * 数据资源类型
+     */
+    private String dataType;
+
+    /**
+     * 是否删除
+     */
+    private String deleted;
+
+    /**
+     * 创建人id
+     */
+    private String createUser;
+
+    /**
+     * 删除人id
+     */
+    private String deleteUser;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 删除时间
+     */
+    private Date deleteTime;
+
+    /**
+     * 权限类型 TABLE:表 COLUMN:列  ALL:公开
+     */
+    private String authType;
+
+}

+ 36 - 0
dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/dto/SubDataAuthDTO.java

@@ -0,0 +1,36 @@
+package com.dragoninfo.dcuc.auth.auth.dto;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 主体和授权数据DTO
+ * @author mazq
+ * @date 2021/4/8
+ */
+@NoArgsConstructor
+@Data
+public class SubDataAuthDTO {
+
+    /**
+     * 主体标识id/业务域code
+     */
+    private String subId;
+
+    /**
+     * 主体类型  ORG:机构  USER:人员  BUSINESS:业务域
+     */
+    private String subType;
+
+    /**
+     * 主体相关的数据权限集合
+     */
+    private List<SubDataDTO> dataAuthList;
+
+    public SubDataAuthDTO(String subId, String subType) {
+        this.subId = subId;
+        this.subType = subType;
+    }
+}

+ 33 - 0
dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/dto/SubDataDTO.java

@@ -0,0 +1,33 @@
+package com.dragoninfo.dcuc.auth.auth.dto;
+
+/**
+ * @author mazq
+ * @date 2021/4/9
+ */
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 主体同一类别的数据资源
+ */
+@Data
+public class SubDataDTO {
+
+    /**
+     * 数据类型
+     */
+    private String dataType;
+
+    /**
+     * 权限类型 TABLE:表 COLUMN:列  ALL:公开
+     */
+    private String authType;
+
+    /**
+     * 数据资源code集合
+     */
+    private List<String> dataCodes;
+
+}

+ 181 - 0
dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/entity/DataAuth.java

@@ -0,0 +1,181 @@
+package com.dragoninfo.dcuc.auth.auth.entity;
+
+import com.dragonsoft.duceap.base.entity.persistent.IdEntity;
+import org.hibernate.annotations.GenericGenerator;
+
+import javax.persistence.*;
+import java.util.Date;
+
+/**
+ * 数据权限实体类
+ * @author mazq
+ * @date 2021/4/9
+ */
+@Entity
+@Table(name = "T_SUBJECT_DATA_AUTH")
+public class DataAuth implements IdEntity<String> {
+
+    /**
+     * 主键id
+     */
+    @Id
+    @GeneratedValue(generator="idGenerator")
+    @GenericGenerator(name="idGenerator", strategy="uuid")
+    @Column(name = "ID")
+    private String id;
+
+    /**
+     * 主体id/业务域code
+     */
+    @Column(name = "SUB_ID")
+    private String subId;
+
+    /**
+     * 主体类型  ORG:机构;USER:人员;BUSINESS:业务域
+     */
+    @Column(name = "SUB_TYPE")
+    private String subType;
+
+    /**
+     * 数据资源code
+     */
+    @Column(name = "DATA_CODE")
+    private String dataCode;
+
+    /**
+     * 数据资源类型
+     * 类型码值
+     * DATA_SECURITY_LEVEL:    数据安全级别;
+     * LEVEL_1_COLUMN_CLASSIFY:字段一级分类;
+     * LEVEL_2_COLUMN_CLASSIFY:字段二级分类;
+     * DATA_CLASSIFY:          数据分级
+     */
+    @Column(name = "DATA_TYPE")
+    private String dataType;
+
+    /**
+     * 是否删除
+     */
+    @Column(name = "DELETED")
+    private String deleted;
+
+    /**
+     * 创建人id
+     */
+    @Column(name = "CREATE_USER")
+    private String createUser;
+
+    /**
+     * 创建时间
+     */
+    @Column(name = "CREATE_TIME")
+    private Date createTime;
+
+    /**
+     * 删除人id
+     */
+    @Column(name = "DELETE_USER")
+    private String deleteUser;
+
+    /**
+     * 删除时间
+     */
+    @Column(name = "DELETE_TIME")
+    private Date deleteTime;
+
+    /**
+     * 权限类型 TABLE:表 COLUMN:列  ALL:公开
+     */
+    @Column(name = "AUTH_TYPE")
+    private String authType;
+
+    @Override
+    public String getId() {
+        return id;
+    }
+
+    @Override
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getSubId() {
+        return subId;
+    }
+
+    public void setSubId(String subId) {
+        this.subId = subId;
+    }
+
+    public String getSubType() {
+        return subType;
+    }
+
+    public void setSubType(String subType) {
+        this.subType = subType;
+    }
+
+    public String getDataCode() {
+        return dataCode;
+    }
+
+    public void setDataCode(String dataCode) {
+        this.dataCode = dataCode;
+    }
+
+    public String getDataType() {
+        return dataType;
+    }
+
+    public void setDataType(String dataType) {
+        this.dataType = dataType;
+    }
+
+    public String getDeleted() {
+        return deleted;
+    }
+
+    public void setDeleted(String deleted) {
+        this.deleted = deleted;
+    }
+
+    public String getCreateUser() {
+        return createUser;
+    }
+
+    public void setCreateUser(String createUser) {
+        this.createUser = createUser;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getDeleteUser() {
+        return deleteUser;
+    }
+
+    public void setDeleteUser(String deleteUser) {
+        this.deleteUser = deleteUser;
+    }
+
+    public Date getDeleteTime() {
+        return deleteTime;
+    }
+
+    public void setDeleteTime(Date deleteTime) {
+        this.deleteTime = deleteTime;
+    }
+
+    public String getAuthType() {
+        return authType;
+    }
+
+    public void setAuthType(String authType) {
+        this.authType = authType;
+    }
+}

+ 14 - 0
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/bpo/DataAuthBPO.java

@@ -0,0 +1,14 @@
+package com.dragoninfo.dcuc.auth.auth.bpo;
+
+import com.dragoninfo.dcuc.auth.auth.entity.DataAuth;
+import com.dragoninfo.duceap.core.persistent.BaseBPO;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 数据权限BPO
+ * @author mazq
+ * @date 2021/4/9
+ */
+@Repository
+public class DataAuthBPO extends BaseBPO<DataAuth, String> {
+}

+ 8 - 0
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/business/IDataAuthBusiness.java

@@ -0,0 +1,8 @@
+package com.dragoninfo.dcuc.auth.auth.business;
+
+/**
+ * @author mazq
+ * @date 2021/4/9
+ */
+public interface IDataAuthBusiness {
+}

+ 63 - 0
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/facade/DataAuthFacade.java

@@ -0,0 +1,63 @@
+package com.dragoninfo.dcuc.auth.auth.facade;
+
+import com.dragoninfo.dcuc.auth.auth.business.IDataAuthBusiness;
+import com.dragoninfo.dcuc.auth.auth.dto.DataAuthDTO;
+import com.dragoninfo.dcuc.auth.auth.dto.SubDataAuthDTO;
+import com.dragoninfo.dcuc.auth.auth.service.IDataAuthService;
+import com.dragonsoft.duceap.base.entity.search.SearchDTO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author mazq
+ * @date 2021/4/9
+ */
+@RestController
+@RequestMapping(value = "/dcuc/auth/dataAuthFacade")
+public class DataAuthFacade implements IDataAuthFacade{
+
+    @Autowired
+    private IDataAuthService dataAuthService;
+
+    @Autowired
+    private IDataAuthBusiness dataAuthBusiness;
+
+    @Override
+    public DataAuthDTO dataAuthAdd(DataAuthDTO dataAuthDTO) {
+        return dataAuthService.add(dataAuthDTO);
+    }
+
+    @Override
+    public DataAuthDTO dataAuthDelById(String id) {
+        return dataAuthService.del(id);
+    }
+
+    @Override
+    public DataAuthDTO get(String id) {
+        return dataAuthService.get(id);
+    }
+
+    @Override
+    public List<DataAuthDTO> dataAuthSearch(SearchDTO searchDTO) {
+        return dataAuthService.search(searchDTO);
+    }
+
+    @Override
+    public boolean update(DataAuthDTO dataAuthDTO) {
+        return dataAuthService.update(dataAuthDTO);
+    }
+
+    @Override
+    public boolean subDataAuthAdd(SubDataAuthDTO subDataAuthDTO) {
+        return dataAuthService.subDataAuthAdd(subDataAuthDTO);
+    }
+
+    @Override
+    public SubDataAuthDTO getSubDataAuth(String subId, String subType, String authType) {
+        return dataAuthService.getSubDataAuth(subId,subType,authType);
+    }
+
+}

+ 66 - 0
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/service/IDataAuthService.java

@@ -0,0 +1,66 @@
+package com.dragoninfo.dcuc.auth.auth.service;
+
+import com.dragoninfo.dcuc.auth.auth.dto.DataAuthDTO;
+import com.dragoninfo.dcuc.auth.auth.dto.SubDataAuthDTO;
+import com.dragonsoft.duceap.base.entity.search.SearchDTO;
+
+import java.util.List;
+
+/**
+ * 数据权限Service
+ * @author mazq
+ * @date 2021/4/9
+ */
+public interface IDataAuthService {
+
+    /**
+     * 新增数据权限
+     * @param dataAuthDTO 数据权限dto
+     * @return
+     */
+    DataAuthDTO add(DataAuthDTO dataAuthDTO);
+
+    /**
+     * 删除数据权限
+     * @param id 数据权限id
+     * @return
+     */
+    DataAuthDTO del(String id);
+
+    /**
+     * 获取数据授权
+     * @param id 数据权限id
+     * @return
+     */
+    DataAuthDTO get(String id);
+
+    /**
+     * 数据权限更新
+     * @param dataAuthDTO 数据权限dto
+     * @return
+     */
+    boolean update(DataAuthDTO dataAuthDTO);
+
+    /**
+     * 数据权限条件搜索
+     * @param searchDTO 查询条件
+     * @return
+     */
+    List<DataAuthDTO> search(SearchDTO searchDTO);
+
+    /**
+     * 主体数据权限批量新增
+     * @param subDataAuthDTO 主体和授权数据DTO
+     * @return
+     */
+    boolean subDataAuthAdd(SubDataAuthDTO subDataAuthDTO);
+
+    /**
+     * 获取主体所有数据权限
+     * @param subId  主体id
+     * @param subType 主体类型 ORG:机构 USER:人员  BUSINESS:业务域
+     * @param auhType 权限资源类型  权限类型 TABLE:表 COLUMN:列  ALL:公开
+     * @return
+     */
+    SubDataAuthDTO getSubDataAuth(String subId, String subType, String auhType);
+}

+ 170 - 0
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/service/impl/DataAuthServiceImpl.java

@@ -0,0 +1,170 @@
+package com.dragoninfo.dcuc.auth.auth.service.impl;
+
+import com.dragoninfo.dcuc.auth.auth.bpo.DataAuthBPO;
+import com.dragoninfo.dcuc.auth.auth.dto.DataAuthDTO;
+import com.dragoninfo.dcuc.auth.auth.dto.SubDataAuthDTO;
+import com.dragoninfo.dcuc.auth.auth.dto.SubDataDTO;
+import com.dragoninfo.dcuc.auth.auth.entity.DataAuth;
+import com.dragoninfo.dcuc.auth.auth.service.IDataAuthService;
+import com.dragonsoft.duceap.base.entity.search.SearchDTO;
+import com.dragonsoft.duceap.base.enums.BooleanEnum;
+import com.dragonsoft.duceap.base.utils.UserContextUtils;
+import com.dragonsoft.duceap.core.search.Searchable;
+import com.dragonsoft.duceap.core.search.enums.SearchOperator;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 数据权限serviceImpl
+ * @author mazq
+ * @date 2021/4/9
+ */
+@Service
+public class DataAuthServiceImpl implements IDataAuthService {
+
+    @Autowired
+    private DataAuthBPO dataAuthBPO;
+
+    @Override
+    public DataAuthDTO add(DataAuthDTO dataAuthDTO) {
+        String userId = UserContextUtils.getCurrentUser().getId();
+        DataAuth dataAuth = new DataAuth();
+        Date date = new Date();
+        dataAuthDTO.setCreateUser(userId);
+        dataAuthDTO.setCreateTime(date);
+        BeanUtils.copyProperties(dataAuthDTO,dataAuth);
+        dataAuthBPO.save(dataAuth);
+        dataAuthDTO.setId(dataAuth.getId());
+        return dataAuthDTO;
+    }
+
+    @Override
+    public DataAuthDTO del(String id) {
+        String userId = UserContextUtils.getCurrentUser().getId();
+        DataAuth dataAuth = dataAuthBPO.get(id);
+        dataAuth.setDeleted(BooleanEnum.TRUE.getValue());
+        dataAuth.setDeleteTime(new Date());
+        dataAuth.setDeleteUser(userId);
+        DataAuthDTO dto = new DataAuthDTO();
+        BeanUtils.copyProperties(dataAuth,dto);
+        return dto;
+    }
+
+    @Override
+    public DataAuthDTO get(String id) {
+        DataAuthDTO dataAuthDTO = new DataAuthDTO();
+        DataAuth dataAuth = dataAuthBPO.get(id);
+        BeanUtils.copyProperties(dataAuth,dataAuthDTO);
+        return dataAuthDTO;
+    }
+
+    @Override
+    public boolean update(DataAuthDTO dataAuthDTO) {
+        DataAuth dataAuth = new DataAuth();
+        BeanUtils.copyProperties(dataAuthDTO,dataAuth);
+        dataAuthBPO.update(dataAuth);
+        return true;
+    }
+
+    @Override
+    public List<DataAuthDTO> search(SearchDTO searchDTO) {
+        Searchable searchable = Searchable.toSearchable(searchDTO);
+        searchable.addSearchFilter("deleted",SearchOperator.eq,BooleanEnum.FALSE.getValue());
+        List<DataAuth> dataAuths = dataAuthBPO.find(DataAuth.class, searchable);
+        List<DataAuthDTO> dtos = convertToDTOS(dataAuths);
+        return dtos;
+    }
+
+    private List<DataAuthDTO> convertToDTOS(List<DataAuth> dataAuths) {
+        return dataAuths.stream().map(item -> {
+                DataAuthDTO dto = new DataAuthDTO();
+                BeanUtils.copyProperties(item, dto);
+                return dto;
+            }).collect(Collectors.toList());
+    }
+
+    @Override
+    public boolean subDataAuthAdd(SubDataAuthDTO subDataAuthDTO) {
+        String userId = UserContextUtils.getCurrentUser().getId();
+        Date date = new Date();
+        String subId = subDataAuthDTO.getSubId();
+        String subType = subDataAuthDTO.getSubType();
+        List<SubDataDTO> dataAuthList = subDataAuthDTO.getDataAuthList();
+        //过滤哪些权限需要删除,哪些权限需要新增
+        List<DataAuth> existDataAuths = getDataAuthsBySub(subId, subType, null);
+        Set<String> existSet = existDataAuths.stream()
+                .map(item -> item.getDataCode() +";"+ item.getDataType() + ";" + item.getAuthType())
+                .collect(Collectors.toSet());
+        Set<String> lastSet = dataAuthList.stream()
+                .map(item -> {
+                    String dataType = item.getDataType();
+                    List<String> dataCodes = item.getDataCodes();
+                    String authType = item.getAuthType();
+                    dataCodes.forEach(code -> code =code+ ";" + dataType + ";" + authType);
+                    return dataCodes;
+        }).flatMap(List::stream).collect(Collectors.toSet());
+        Set<String> addCollect = lastSet.stream().filter(s -> !existSet.contains(s)).collect(Collectors.toSet());
+        Set<String> delCollect = existSet.stream().filter(s -> !lastSet.contains(s)).collect(Collectors.toSet());
+        //新增
+        for (String codeType : addCollect) {
+            String[] arr = codeType.split(";");
+            DataAuth dataAuth = new DataAuth();
+            dataAuth.setDataCode(arr[0]);
+            dataAuth.setDataType(arr[1]);
+            dataAuth.setCreateUser(userId);
+            dataAuth.setCreateTime(date);
+            dataAuth.setSubId(subId);
+            dataAuth.setSubType(subType);
+            dataAuth.setAuthType(arr[2]);
+            dataAuthBPO.save(dataAuth);
+        }
+        //删除
+        List<DataAuth> delList = existDataAuths.stream()
+                .filter(item -> delCollect.contains(item.getDataCode() + ";" + item.getDataType()))
+                .collect(Collectors.toList());
+        for (DataAuth dataAuth : delList) {
+            dataAuth.setDeleteUser(userId);
+            dataAuth.setDeleteTime(date);
+            dataAuth.setDeleted(BooleanEnum.TRUE.getValue());
+            dataAuthBPO.update(dataAuth);
+        }
+        return true;
+    }
+
+    public List<DataAuth> getDataAuthsBySub(String subId, String subType,String authType) {
+        Searchable searchable = Searchable.newSearchable();
+        searchable.addSearchFilter("subId", SearchOperator.eq,subId);
+        searchable.addSearchFilter("subType", SearchOperator.eq,subType);
+        searchable.addSearchFilter("deleted",SearchOperator.eq, BooleanEnum.FALSE.getValue());
+        if(StringUtils.isNotBlank(authType)){
+            searchable.addSearchFilter("authType",SearchOperator.eq,authType);
+        }
+        return dataAuthBPO.find(DataAuth.class, searchable);
+    }
+
+    @Override
+    public SubDataAuthDTO getSubDataAuth(String subId, String subType,String authType) {
+        List<DataAuth> dataAuths = getDataAuthsBySub(subId, subType,authType);
+        SubDataAuthDTO subDataAuthDTO = new SubDataAuthDTO(subId,subType);
+        List<SubDataDTO> subDataList = new ArrayList<>();
+        Map<String, List<DataAuth>> map = dataAuths.stream().collect(Collectors.groupingBy(DataAuth::getDataType));
+        for (Map.Entry<String, List<DataAuth>> entry : map.entrySet()) {
+            String dataType = entry.getKey();
+            List<DataAuth> dataAuthList = entry.getValue();
+            List<String> codes = dataAuthList.stream().map(item -> item.getDataCode()).collect(Collectors.toList());
+            SubDataDTO subDataDTO = new SubDataDTO();
+            subDataDTO.setDataType(dataType);
+            subDataDTO.setDataCodes(codes);
+            subDataList.add(subDataDTO);
+        }
+        subDataAuthDTO.setDataAuthList(subDataList);
+        return subDataAuthDTO;
+    }
+
+
+}

+ 16 - 0
dcuc-auth-service/src/main/resources/config/mysql/V4_3_0004__Create_DataAuthTable.sql

@@ -0,0 +1,16 @@
+-- 数据授权表添加
+CREATE TABLE `t_sub_data_auth` (
+  `id` varchar(255) NOT NULL COMMENT '主键id',
+  `sub_id` varchar(255) NOT NULL COMMENT '主体id',
+  `sub_type` varchar(50) DEFAULT NULL COMMENT '主体类型',
+  `data_code` varchar(100) NOT NULL COMMENT '数据资源code',
+  `data_type` varchar(50) DEFAULT NULL COMMENT '数据资源类型',
+  `create_user` varchar(255) DEFAULT NULL COMMENT '创建人',
+  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+  `delete_user` varchar(255) DEFAULT NULL COMMENT '删除人',
+  `delete_time` datetime DEFAULT NULL COMMENT '删除时间',
+  `deleted` varchar(6) DEFAULT NULL COMMENT '是否删除',
+  `auth_type` varchar(10) DEFAULT NULL COMMENT '权限类型 TABLE:表 COLUMN:列  ALL:公开',
+  PRIMARY KEY (`id`),
+  KEY `INX_SUB` (`sub_id`,`sub_type`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;

+ 53 - 0
dcuc-auth-service/src/main/resources/config/sql/V4_3_0005__Create_DataAuthTable.sql

@@ -0,0 +1,53 @@
+-- ----------------------------
+-- Table structure for T_SUB_DATA_AUTH
+-- ----------------------------
+DROP TABLE "T_SUB_DATA_AUTH";
+CREATE TABLE "T_SUB_DATA_AUTH" (
+"ID" VARCHAR2(255 BYTE) NOT NULL ,
+"SUB_ID" VARCHAR2(255 BYTE) NOT NULL ,
+"SUB_TYPE" VARCHAR2(50 BYTE) NULL ,
+"DATA_CODE" VARCHAR2(100 BYTE) NOT NULL ,
+"DATA_TYPE" VARCHAR2(50 BYTE) NULL ,
+"CREATE_USER" VARCHAR2(255 BYTE) NULL ,
+"CREATE_TIME" TIMESTAMP(0)  NULL ,
+"DELETE_USER" VARCHAR2(255 BYTE) NULL ,
+"DELETE_TIME" TIMESTAMP(0)  NULL ,
+"DELETED" VARCHAR2(6 BYTE) NULL ,
+"AUTH_TYPE" VARCHAR2(30 BYTE) NULL
+)
+LOGGING
+NOCOMPRESS
+NOCACHE
+
+;
+COMMENT ON COLUMN "ID" IS '主键id';
+COMMENT ON COLUMN "SUB_ID" IS '主体id';
+COMMENT ON COLUMN "SUB_TYPE" IS '主体类型';
+COMMENT ON COLUMN "DATA_CODE" IS '数据资源code';
+COMMENT ON COLUMN "DATA_TYPE" IS '数据资源类型';
+COMMENT ON COLUMN "CREATE_USER" IS '创建人';
+COMMENT ON COLUMN "CREATE_TIME" IS '创建时间';
+COMMENT ON COLUMN "DELETE_USER" IS '删除人';
+COMMENT ON COLUMN "DELETE_TIME" IS '删除时间';
+COMMENT ON COLUMN "DELETED" IS '是否删除';
+COMMENT ON COLUMN "AUTH_TYPE" IS '权限类型 TABLE:表 COLUMN:列  ALL:公开';
+
+-- ----------------------------
+-- Indexes structure for table T_SUB_DATA_AUTH
+-- ----------------------------
+CREATE INDEX "INX_SUB"
+ON "T_SUB_DATA_AUTH" ("SUB_ID" ASC, "SUB_TYPE" ASC)
+LOGGING
+VISIBLE;
+
+-- ----------------------------
+-- Checks structure for table T_SUB_DATA_AUTH
+-- ----------------------------
+ALTER TABLE "T_SUB_DATA_AUTH" ADD CHECK ("ID" IS NOT NULL);
+ALTER TABLE "T_SUB_DATA_AUTH" ADD CHECK ("SUB_ID" IS NOT NULL);
+ALTER TABLE "T_SUB_DATA_AUTH" ADD CHECK ("DATA_CODE" IS NOT NULL);
+
+-- ----------------------------
+-- Primary Key structure for table T_SUB_DATA_AUTH
+-- ----------------------------
+ALTER TABLE "T_SUB_DATA_AUTH" ADD PRIMARY KEY ("ID");