Sfoglia il codice sorgente

Merge branch 'mazq-230110-aksmerge' into 'develop'

Mazq 230110 aksmerge

See merge request dcuc-tjdsj/auth-back!132
马志强 2 anni fa
parent
commit
3feb976623

+ 12 - 47
pom.xml

@@ -159,17 +159,17 @@
         </dependency>
         <!--配置 dcuc 结束-->
 
-<!--        <dependency>-->
-<!--            <groupId>net.unicon.cas</groupId>-->
-<!--            <artifactId>cas-client-autoconfig-support</artifactId>-->
-<!--            <version>2.1.0-GA</version>-->
-<!--            <exclusions>-->
-<!--                <exclusion>-->
-<!--                    <artifactId>joda-time</artifactId>-->
-<!--                    <groupId>joda-time</groupId>-->
-<!--                </exclusion>-->
-<!--            </exclusions>-->
-<!--        </dependency>-->
+        <!--        <dependency>-->
+        <!--            <groupId>net.unicon.cas</groupId>-->
+        <!--            <artifactId>cas-client-autoconfig-support</artifactId>-->
+        <!--            <version>2.1.0-GA</version>-->
+        <!--            <exclusions>-->
+        <!--                <exclusion>-->
+        <!--                    <artifactId>joda-time</artifactId>-->
+        <!--                    <groupId>joda-time</groupId>-->
+        <!--                </exclusion>-->
+        <!--            </exclusions>-->
+        <!--        </dependency>-->
 
         <!-- https://mvnrepository.com/artifact/log4j/log4j -->
 
@@ -270,41 +270,6 @@
 
     <packaging>${project.packaging}</packaging>
     <profiles>
-        <!--war打包配置-->
-        <!--使用方式 mvn clean package -Pwar-->
-        <profile>
-            <id>war</id>
-            <properties>
-                <project.packaging>war</project.packaging>
-            </properties>
-            <dependencies>
-                <dependency>
-                    <groupId>com.dragonsoft</groupId>
-                    <artifactId>duceap-boot-starter-web</artifactId>
-                    <!-- 移除嵌入式tomcat插件 -->
-                    <exclusions>
-                        <exclusion>
-                            <groupId>org.springframework.boot</groupId>
-                            <artifactId>spring-boot-starter-tomcat</artifactId>
-                        </exclusion>
-                    </exclusions>
-                </dependency>
-            </dependencies>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-war-plugin</artifactId>
-                        <version>2.1.1</version>
-                        <configuration>
-                            <failOnMissingWebXml>false</failOnMissingWebXml>
-                            <!--排除licenseignore包,用来禁用许可开关,防止生产环境通过关闭开关,绕过许可-->
-                           <!-- <packagingExcludes>WEB-INF/lib/duceap-support-licenseignore*.jar</packagingExcludes>-->
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
         <profile>
             <id>jar</id>
             <activation>
@@ -327,7 +292,7 @@
                                 </goals>
                                 <configuration>
                                     <!--排除licenseignore包,用来禁用许可开关,防止生产环境通过关闭开关,绕过许可-->
-                                    <!--<excludeArtifactIds>duceap-support-licenseignore</excludeArtifactIds>-->
+<!--                                <excludeArtifactIds>duceap-support-licenseignore</excludeArtifactIds>-->
                                     <excludeScope>provided</excludeScope>
                                     <outputDirectory>${project.build.directory}/lib</outputDirectory>
                                     <!--取消依赖包的时间戳-->

+ 0 - 22
src/main/java/com/dragoninfo/dcuc/authweb/ConsumerTomcatApplication.java

@@ -1,22 +0,0 @@
-package com.dragoninfo.dcuc.authweb;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.builder.SpringApplicationBuilder;
-import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
-
-/**
- * @author huangzqa
- * @date 2021/4/4
- **/
-@SpringBootApplication(scanBasePackages = {"com.dragonsoft", "com.dragoninfo"})
-public class ConsumerTomcatApplication extends SpringBootServletInitializer {
-    @Override
-    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
-        return builder.sources(ConsumerTomcatApplication.class);
-    }
-
-    public static void main(String[] args) {
-        SpringApplication.run(ConsumerTomcatApplication.class, args);
-    }
-}

+ 0 - 64
src/main/java/com/dragoninfo/dcuc/authweb/NacosPortConfig.java

@@ -1,64 +0,0 @@
-package com.dragoninfo.dcuc.authweb;
-
-import com.alibaba.cloud.nacos.registry.NacosAutoServiceRegistration;
-import com.dragonsoft.duceap.commons.util.string.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
-import org.springframework.stereotype.Component;
-
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-import javax.management.Query;
-import java.lang.management.ManagementFactory;
-import java.util.Set;
-
-@Component
-public class NacosPortConfig implements ApplicationRunner {
-    private static final Logger logger = LoggerFactory.getLogger(NacosPortConfig.class);
-    @Autowired
-    private NacosAutoServiceRegistration registration;
-    @Value("${spring.application.name}")
-    private String appName;
-    @Value("${server.port}")
-    private int port;
-    @Override
-    public void run(ApplicationArguments args) throws Exception {
-        int port = this.getTomcatPort();
-        if (registration != null) {
-            registration.setPort(port);
-            registration.start();
-        }
-    }
-    /**
-     * 获取容器端口号
-     *
-     * @return
-     * @throws Exception 容器端口号未获取到
-     */
-    public int getTomcatPort() throws Exception {
-        String port = this.getTomcatPortValue();
-        if (!StringUtils.isEmpty(port)) {
-            return Integer.valueOf(port);
-        }
-        return this.port;
-    }
-    /**
-     * 获取容器端口号(解决使用外部容器部署,nacos无法注册问题)
-     *
-     * @return port
-     */
-    private String getTomcatPortValue() throws Exception {
-        MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer();
-        Set<ObjectName> objectNames = beanServer.queryNames
-                (new ObjectName("*:type=Connector,*"),
-                        Query.match(Query.attr("protocol"), Query.value("HTTP/1.1")));
-        for (ObjectName objectName : objectNames) {
-            return objectName.getKeyProperty("port");
-        }
-        return "";
-    }
-}

+ 100 - 0
src/main/java/com/dragoninfo/dcuc/authweb/restcontroller/api/authservice/v2/controller/DataAuthApiV2Controller.java

@@ -0,0 +1,100 @@
+package com.dragoninfo.dcuc.authweb.restcontroller.api.authservice.v2.controller;
+
+import cn.hutool.core.util.StrUtil;
+import com.auth0.jwt.JWT;
+import com.auth0.jwt.algorithms.Algorithm;
+import com.auth0.jwt.interfaces.DecodedJWT;
+import com.dragoninfo.dcuc.auth.auth.api.IApiDataAuthFacade;
+import com.dragoninfo.dcuc.auth.auth.dto.data.DataAuthV2ReqDTO;
+import com.dragoninfo.dcuc.auth.auth.vo.DataAuthV2ReqVO;
+import com.dragoninfo.dcuc.auth.auth.dto.data.DataAuthV2RespDTO;
+import com.dragoninfo.dcuc.auth.auth.vo.DataAuthV2RespVO;
+import com.dragoninfo.dcuc.auth.sub.dto.AuthUserDTO;
+import com.dragoninfo.dcuc.auth.sub.facade.IAuthUserInfoFacade;
+import com.dragoninfo.dcuc.authweb.restcontroller.api.authservice.v4.enums.BusinessRespEnum;
+import com.dragoninfo.dcuc.authweb.restcontroller.api.authservice.v4.vo.ResultRespVO;
+import com.dragoninfo.dcuc.authweb.util.VersionUtils;
+import com.dragoninfo.dcuc.common.utils.ResponseUtil;
+import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
+import com.dragonsoft.duceap.commons.util.string.StringUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Collections;
+import java.util.Optional;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * 数据鉴权
+ *
+ * @author huangzqa
+ * @version 2.0
+ * @date 2022/10/03
+ */
+@Slf4j
+@Api(tags = {"数据鉴权"})
+@RestController
+@RequestMapping(value = "/api/auth-service/" + VersionUtils.VERSION_UID + "/")
+public class DataAuthApiV2Controller {
+
+    @Autowired
+    private IApiDataAuthFacade apiDataAuthFacade;
+
+    @ApiOperation(value = "数据鉴权")
+    @ApiImplicitParams({@ApiImplicitParam(name = "dataAuthV2ReqVO", value = "数据资源对象")})
+    @PostMapping(value = "data-auth/data-items/check")
+    public ResultRespVO<DataAuthV2RespVO> checkDataItems(@RequestBody DataAuthV2ReqVO dataAuthV2ReqVO) {
+        String appTokenId = dataAuthV2ReqVO.getAppTokenId();
+
+        if (StrUtil.isBlank(appTokenId)) {
+            return ResultRespVO.resultEnumMessage(BusinessRespEnum.TOKEN_FAIL);
+        }
+
+        String resourceId = dataAuthV2ReqVO.getResourceId();
+        if (StrUtil.isBlank(resourceId)) {
+            return ResultRespVO.resultEnumMessage(BusinessRespEnum.PARAM_ERROR);
+        }
+        // todo 应用令牌中不包含人员身份证号,需要根据应用令牌查询人员身份证号
+        String idcard;
+        try {
+            DecodedJWT decode = JWT.decode(appTokenId);
+             idcard = decode.getClaim("idCard").asString();
+        } catch (Exception e) {
+            log.error("appTokenId parse error.", e);
+            return ResultRespVO.resultEnumMessage(BusinessRespEnum.TOKEN_FAIL);
+        }
+        if (StringUtils.isBlank(idcard)) {
+            return ResultRespVO.resultEnumMessage(BusinessRespEnum.TOKEN_FAIL);
+        }
+
+        DataAuthV2ReqDTO v2ReqDTO = new DataAuthV2ReqDTO();
+        v2ReqDTO.setIdcard(idcard);
+        v2ReqDTO.setResourceId(resourceId);
+
+        ResponseDTO<DataAuthV2RespDTO> dto = apiDataAuthFacade.dataItemsCheckV2(v2ReqDTO);
+        if (!ResponseUtil.isSuccess(dto)) {
+            ResultRespVO<DataAuthV2RespVO> respVO = ResultRespVO.resultEnumMessage(BusinessRespEnum.AUTH_FAIL);
+            respVO.setMessage(dto.getMessage());
+            return respVO;
+        } else {
+            DataAuthV2RespDTO respDTO = (DataAuthV2RespDTO) dto.getResult();
+            Set<String> set = respDTO.getItemIdentifier();
+            String join = String.join(StrUtil.COMMA, Optional.ofNullable(set)
+                    .orElse(Collections.emptySet()));
+            DataAuthV2RespVO respVO = new DataAuthV2RespVO();
+            respVO.setResourceId(resourceId);
+            respVO.setItemIdentifier(join);
+            return ResultRespVO.success(respVO);
+        }
+    }
+
+}

+ 53 - 55
src/main/java/com/dragoninfo/dcuc/authweb/restcontroller/auth/DataAuthController.java

@@ -8,11 +8,12 @@ import com.dragoninfo.dcuc.auth.auth.dto.data.*;
 import com.dragoninfo.dcuc.auth.auth.enumresources.SubDataAuthTypeEnum;
 import com.dragoninfo.dcuc.auth.auth.facade.IDataAuthFacade;
 import com.dragoninfo.dcuc.auth.auth.vo.BusResultVO;
+import com.dragoninfo.dcuc.auth.auth.vo.DataAuthAcceptVo;
+import com.dragoninfo.dcuc.auth.auth.vo.DataAuthTreeReactVo;
 import com.dragoninfo.dcuc.auth.sub.dto.LabelSearchDTO;
 import com.dragoninfo.dcuc.auth.sub.facade.IUserCenterApiFacade;
-import com.dragoninfo.dcuc.authweb.restcontroller.auth.vo.data.*;
-import com.dragoninfo.dcuc.auth.sub.vo.LabelSearchVo;
 import com.dragoninfo.dcuc.auth.sub.vo.LabelTreeVO;
+import com.dragoninfo.dcuc.authweb.restcontroller.auth.vo.data.*;
 import com.dragoninfo.dcuc.authweb.util.VersionUtils;
 import com.dragoninfo.duceap.core.response.Result;
 import com.dragonsoft.duceap.base.entity.search.SearchDTO;
@@ -34,13 +35,11 @@ import java.util.stream.Collectors;
  * @date 2021/4/6
  */
 @Slf4j
-@Api(tags ="数据授权API")
+@Api(tags = "数据授权API")
 @RestController
-@RequestMapping("authsvr/"+ VersionUtils.VERSION_UID +"/dataauth")
+@RequestMapping("authsvr/" + VersionUtils.VERSION_UID + "/dataauth")
 public class DataAuthController {
 
-    public static final String idJoin = "|";
-
     @Autowired
     IDataAuthFacade dataAuthFacade;
 
@@ -51,11 +50,10 @@ public class DataAuthController {
     IDataResourceFacade dataResourceFacade;
 
 
-
     @ApiOperation(value = "获取属性列表,树形结构:警种1-业务域N")
     @ApiImplicitParam(name = "name", value = "查询条件")
     @GetMapping(value = "businessTreeList", produces = "application/json;charset=UTF-8")
-    public Result<List<LabelTreeVO>> businessTreeList(){
+    public Result<List<LabelTreeVO>> businessTreeList() {
         LabelSearchDTO labelSearchDTO = new LabelSearchDTO();
         labelSearchDTO.setShowAll(false);
         List<LabelTreeVO> labelTreeList = userCenterApiFacade.labelTreeList(labelSearchDTO);
@@ -64,39 +62,46 @@ public class DataAuthController {
 
 
     @ApiOperation(value = "获取所有数据资源,返回树结构")
-    @ApiImplicitParam(name = "attrType",value = "数据属性类型 TABLE:表 COLUMN:列")
+    @ApiImplicitParam(name = "attrType", value = "数据属性类型 TABLE:表 COLUMN:列")
     @GetMapping(value = "allDataTree", produces = "application/json;charset=UTF-8")
-    public Result<List<DataResourceClassifyVo>> getAllDataResource(@RequestParam("attrType") String attrType){
+    public Result<List<DataResourceClassifyVo>> getAllDataResource(@RequestParam(value = "attrType", required = false) String attrType) {
         log.info("allDataTree >> attrType:{}", attrType);
         List<DataResourceClassifyVo> dataResourceTree = dataResourceFacade.getAllDataResourceTree(attrType);
         return Result.success(dataResourceTree);
     }
 
     @ApiOperation(value = "获取数据资源,返回树结构")
-    @ApiImplicitParam(name = "typeCode",value = "typeCode类型(数据分级:DATA_CLASSIFY;数据资源分类:DATA_RESOURCE_CLASSIFY;数据安全级别:DATA_SECURITY_LEVEL;字段分类:COLUMN_CLASSIFY)")
+    @ApiImplicitParam(name = "typeCode", value = "typeCode类型(数据分级:DATA_CLASSIFY;数据资源分类:DATA_RESOURCE_CLASSIFY;数据安全级别:DATA_SECURITY_LEVEL;字段分类:COLUMN_CLASSIFY)")
     @GetMapping(value = "getDataResourceTree")
-    public Result<DataResourceClassifyVo> getDataResource(@RequestParam("typeCode") String typeCode){
+    public Result<DataResourceClassifyVo> getDataResource(@RequestParam("typeCode") String typeCode) {
         log.info("dataTree >> typeCode:{}", typeCode);
         DataResourceClassifyVo dataResourceTree = dataResourceFacade.getDataResourceTree(typeCode);
         return Result.success(dataResourceTree);
     }
 
+    @ApiOperation(value = "数据资源树联动勾选接口")
+    @PostMapping("tree-react")
+    public Result<List<DataClassifyVo>> treeReact(@RequestBody DataAuthTreeReactVo treeReactVo) {
+        List<DataClassifyDTO> classifyDTOS = dataAuthFacade.treeReact(treeReactVo);
+        List<DataClassifyVo> vos = convertToVos(classifyDTOS);
+        return Result.success(vos);
+    }
+
     @ApiOperation(value = "人员数据授权接口")
     @PostMapping(value = "userDataAuth", produces = "application/json;charset=UTF-8")
-    public Result<Boolean> userDataAuth(@RequestBody UserDataAuthAcceptVo vo){
+    public Result<Boolean> userDataAuth(@RequestBody UserDataAuthAcceptVo vo) {
         List<DataAuthAcceptVo> authVoList = vo.getAuthVoList();
-        log.info("userDataAuth >> userDataAuthAcceptVo:{}",JSON.toJSONString(vo));
+        log.info("userDataAuth >> userDataAuthAcceptVo:{}", JSON.toJSONString(vo));
         SubDataAuthDTO subDataAuthDTO = convertToSubAuthDTO(vo.getIdcard(), SubDataAuthTypeEnum.SUB_DATA_AUTH_USER.getValue(), vo.getAuthType(), authVoList);
         dataAuthFacade.subDataAuthAdd(subDataAuthDTO);
         return Result.success(true);
     }
 
-
     @ApiOperation(value = "机构数据授权接口")
     @PostMapping(value = "orgDataAuth", produces = "application/json;charset=UTF-8")
-    public Result<Boolean> orgDataAuth(@RequestBody OrgDataAuthAcceptVo vo){
+    public Result<Boolean> orgDataAuth(@RequestBody OrgDataAuthAcceptVo vo) {
         List<DataAuthAcceptVo> authVoList = vo.getAuthVoList();
-        log.info("orgDataAuth>>orgDataAuthAcceptVo:{}",JSON.toJSONString(vo));
+        log.info("orgDataAuth>>orgDataAuthAcceptVo:{}", JSON.toJSONString(vo));
         SubDataAuthDTO subDataAuthDTO = convertToSubAuthDTO(vo.getOrgCode(), SubDataAuthTypeEnum.SUB_DATA_AUTH_ORG.getValue(), vo.getAuthType(), authVoList);
         dataAuthFacade.subDataAuthAdd(subDataAuthDTO);
         return Result.success(true);
@@ -105,9 +110,9 @@ public class DataAuthController {
 
     @ApiOperation(value = "业务域标签数据授权接口")
     @PostMapping(value = "labelDataAuth", produces = "application/json;charset=UTF-8")
-    public Result<Boolean> labelDataAuth(@RequestBody LabelDataAuthAcceptVo vo){
+    public Result<Boolean> labelDataAuth(@RequestBody LabelDataAuthAcceptVo vo) {
         List<DataAuthAcceptVo> authVoList = vo.getAuthVoList();
-        log.info("labelDataAuth >> labelDataAuthAcceptVo:{}",JSON.toJSONString(vo));
+        log.info("labelDataAuth >> labelDataAuthAcceptVo:{}", JSON.toJSONString(vo));
         SubDataAuthDTO subDataAuthDTO = convertToSubAuthDTO(vo.getBusinessCode(), SubDataAuthTypeEnum.SUB_DATA_AUTH_BUSINESS.getValue(), vo.getAuthType(), authVoList);
         dataAuthFacade.subDataAuthAdd(subDataAuthDTO);
         return Result.success(true);
@@ -115,11 +120,11 @@ public class DataAuthController {
 
     @ApiOperation(value = "查询多个主体相关数据权限")
     @PostMapping(value = "subListDataAuth", produces = "application/json;charset=UTF-8")
-    public Result subDataAuthList(@RequestBody List<SubDataAuthQueryVo> queryVoList) {
+    public Result<List<DataClassifyVo>> subDataAuthList(@RequestBody List<SubDataAuthQueryVo> queryVoList) {
         List<SubDataAuthQueryDTO> dtos = new ArrayList<>();
         for (SubDataAuthQueryVo vo : queryVoList) {
             SubDataAuthQueryDTO dto = new SubDataAuthQueryDTO();
-            BeanUtils.copyProperties(vo,dto);
+            BeanUtils.copyProperties(vo, dto);
         }
         List<DataClassifyDTO> classifyDTOS = dataAuthFacade.subDataAuthList(dtos);
         List<DataClassifyVo> vos = convertToVos(classifyDTOS);
@@ -127,11 +132,11 @@ public class DataAuthController {
     }
 
     @ApiOperation(value = "查询单个主体数据权限")
-    @PostMapping(value = "getSubDataAuth" , produces = "application/json;charset=UTF-8")
-    public Result<List<DataClassifyVo>> getSubDataAuth(@RequestBody SubDataAuthQueryVo queryVo){
-        log.info("getSubDataAuth >> vo:{}",JSON.toJSONString(queryVo));
+    @PostMapping(value = "getSubDataAuth", produces = "application/json;charset=UTF-8")
+    public Result<List<DataClassifyVo>> getSubDataAuth(@RequestBody SubDataAuthQueryVo queryVo) {
+        log.info("getSubDataAuth >> vo:{}", JSON.toJSONString(queryVo));
         SubDataAuthQueryDTO queryDTO = new SubDataAuthQueryDTO();
-        BeanUtils.copyProperties(queryVo,queryDTO);
+        BeanUtils.copyProperties(queryVo, queryDTO);
         List<DataClassifyDTO> dtos = dataAuthFacade.getSubDataAuth(queryDTO);
         List<DataClassifyVo> vos = convertToVos(dtos);
         return Result.success(vos);
@@ -140,12 +145,12 @@ public class DataAuthController {
 
     @ApiOperation(value = "人员视角数据权限查询-根据人员id查询")
     @ApiImplicitParams(value = {
-            @ApiImplicitParam(name = "userId",value = "人员id"),
-            @ApiImplicitParam(name = "authType",value = "数据属性授权类型 TABLE:表授权 COLUMN:列授权")
+            @ApiImplicitParam(name = "userId", value = "人员id"),
+            @ApiImplicitParam(name = "authType", value = "数据属性授权类型 TABLE:表授权 COLUMN:列授权")
     })
-    @GetMapping(value = "dataAuthInfoByUserId" , produces = "application/json;charset=UTF-8")
+    @GetMapping(value = "dataAuthInfoByUserId", produces = "application/json;charset=UTF-8")
     public Result<List<DataClassifyVo>> userDataAuthInfoById(@RequestParam("userId") String userId,
-                                   @RequestParam(value = "authType", required = false) String authType){
+                                                             @RequestParam(value = "authType", required = false) String authType) {
         log.info("dataAuthInfoByUserId >> userId:{},authType:{}", userId, authType);
         List<DataClassifyDTO> dtos = dataAuthFacade.userDataAuthInfoByUserId(userId, authType);
         List<DataClassifyVo> vos = convertToVos(dtos);
@@ -154,12 +159,12 @@ public class DataAuthController {
 
     @ApiOperation(value = "人员视角数据权限查询-根据人员身份证号查询")
     @ApiImplicitParams(value = {
-            @ApiImplicitParam(name = "idcard",value = "身份证号"),
-            @ApiImplicitParam(name = "authType",value = "数据属性授权类型 TABLE:表授权 COLUMN:列授权")
+            @ApiImplicitParam(name = "idcard", value = "身份证号"),
+            @ApiImplicitParam(name = "authType", value = "数据属性授权类型 TABLE:表授权 COLUMN:列授权")
     })
-    @GetMapping(value = "dataAuthInfoByIdcard" , produces = "application/json;charset=UTF-8")
+    @GetMapping(value = "dataAuthInfoByIdcard", produces = "application/json;charset=UTF-8")
     public Result<List<DataClassifyVo>> userDataAuthInfoByIdcard(@RequestParam("idcard") String idcard,
-                                   @RequestParam(value = "authType",required = false) String authType){
+                                                                 @RequestParam(value = "authType", required = false) String authType) {
         List<DataClassifyDTO> dtos = dataAuthFacade.userDataAuthInfoByIdcard(idcard, authType);
         List<DataClassifyVo> vos = convertToVos(dtos);
         return Result.success(vos);
@@ -167,11 +172,11 @@ public class DataAuthController {
 
     @ApiOperation(value = "人员视角-有权限的数据资源查询(树结构)-根据身份证号查询")
     @ApiImplicitParams(value = {
-            @ApiImplicitParam(name = "idcard",value = "身份证号"),
-            @ApiImplicitParam(name = "authType",value = "数据属性授权类型 TABLE:表授权 COLUMN:列授权")
+            @ApiImplicitParam(name = "idcard", value = "身份证号"),
+            @ApiImplicitParam(name = "authType", value = "数据属性授权类型 TABLE:表授权 COLUMN:列授权")
     })
-    @GetMapping(value = "userDataTreeByIdcard" , produces = "application/json;charset=UTF-8")
-    public Result<List<DataResourceClassifyVo>> userDataAuthTreeByIdcard(@RequestParam("idcard") String idcard, @RequestParam(value = "authType",required = false) String authType){
+    @GetMapping(value = "userDataTreeByIdcard", produces = "application/json;charset=UTF-8")
+    public Result<List<DataResourceClassifyVo>> userDataAuthTreeByIdcard(@RequestParam("idcard") String idcard, @RequestParam(value = "authType", required = false) String authType) {
         List<DataResourceDTO> dtos = dataAuthFacade.userDataTreeByIdcard(idcard, authType);
         //树节点dto转vo多层次拷贝,使用JSONString序列化
         //字段key值要能对应上
@@ -183,22 +188,22 @@ public class DataAuthController {
 
     @ApiOperation(value = "分级分类清单数据")
     @PostMapping(value = "dataDetailList")
-    public Result dataDetailList(SearchDTO searchDTO){
+    public Result dataDetailList(SearchDTO searchDTO) {
         BusResultVO busResultVO = dataAuthFacade.dataDetailList(searchDTO);
-        return Result.success((long) busResultVO.getResultData().getTotalCount(),busResultVO.getResultData().getDataList());
+        return Result.success((long) busResultVO.getResultData().getTotalCount(), busResultVO.getResultData().getDataList());
     }
 
     private List<DataClassifyVo> convertToVos(List<DataClassifyDTO> classifyDTOS) {
         return classifyDTOS.stream().map(item -> {
             DataClassifyVo vo = new DataClassifyVo();
-            BeanUtils.copyProperties(item, vo,"tickedDatas");
+            BeanUtils.copyProperties(item, vo, "tickedDatas");
             List<SubDataDTO> tickedDatas = item.getTickedDatas();
             List<SubDataVo> dataVoList = tickedDatas.stream()
-                    .map(dto->{
+                    .map(dto -> {
                         //拼接dataId给前端使用,保证dataId是唯一值
-                        dto.setDataId(dto.getClassifyCode()+ idJoin + dto.getDataId());
+                        dto.setDataId(dto.getDataId());
                         SubDataVo subDataVo = new SubDataVo();
-                        BeanUtils.copyProperties(dto,subDataVo);
+                        BeanUtils.copyProperties(dto, subDataVo);
                         return subDataVo;
                     }).collect(Collectors.toList());
             vo.setTickedDatas(dataVoList);
@@ -206,21 +211,14 @@ public class DataAuthController {
         }).collect(Collectors.toList());
     }
 
-    private SubDataAuthDTO convertToSubAuthDTO(String subId, String subType, String authType,List<DataAuthAcceptVo> authVoList) {
-        SubDataAuthDTO subDataAuthDTO = new SubDataAuthDTO(subId,subType,authType);
+    private SubDataAuthDTO convertToSubAuthDTO(String subId, String subType, String authType, List<DataAuthAcceptVo> authVoList) {
+        SubDataAuthDTO subDataAuthDTO = new SubDataAuthDTO(subId, subType, authType);
         List<SubDataDTO> dataDTOList = new ArrayList<>();
         for (DataAuthAcceptVo vo : authVoList) {
             SubDataDTO subDataDTO = new SubDataDTO();
-            subDataDTO.setDataType(vo.getDataType());
-            String dataId = vo.getDataId();
-            //除去分级分类标签的code
-            int index = dataId.indexOf(idJoin);
-            //从dataId截取拼接各种参数
-            int lastIndex = dataId.lastIndexOf(idJoin);
-            subDataDTO.setDataId(dataId.substring(index+1));
-            subDataDTO.setClassifyCode(dataId.substring(0,index));
-            subDataDTO.setDataCode(dataId.substring(lastIndex+1));
-            subDataDTO.setInnerId(vo.getInnerId());
+            subDataDTO.setDataId(vo.getDataId());
+            subDataDTO.setDataCode(vo.getDataCode());
+            subDataDTO.setClassifyCode(vo.getClassifyCode());
             dataDTOList.add(subDataDTO);
         }
         subDataAuthDTO.setDataAuthList(dataDTOList);

+ 0 - 35
src/main/java/com/dragoninfo/dcuc/authweb/restcontroller/auth/vo/data/DataAuthAcceptVo.java

@@ -1,35 +0,0 @@
-package com.dragoninfo.dcuc.authweb.restcontroller.auth.vo.data;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-/**
- * @author mazq
- * @date 2021/4/8
- */
-@ApiModel(value = "同一类别数据授权对象")
-@Data
-public class DataAuthAcceptVo {
-
-    @ApiModelProperty(value = "数据资源唯一标识")
-    private String dataId;
-
-    @ApiModelProperty(value = "数据资源类型,对应类型码值" +
-            "DATA_SECURITY_LEVEL:数据安全级别;" +
-            "LEVEL_1_COLUMN_CLASSIFY:字段一级分类;" +
-            "LEVEL_2_COLUMN_CLASSIFY:字段二级分类;" +
-            "DATA_CLASSIFY:数据分级", dataType = "string")
-    private String dataType;
-
-    @ApiModelProperty(value = "数据资源code")
-    private String dataCode;
-
-    @ApiModelProperty(value = "数据对应的分级分类标签code")
-    private String classifyCode;
-
-    @ApiModelProperty(value = "内部使用唯一标识id")
-    private String innerId;
-
-
-}

+ 1 - 0
src/main/java/com/dragoninfo/dcuc/authweb/restcontroller/auth/vo/data/LabelDataAuthAcceptVo.java

@@ -1,5 +1,6 @@
 package com.dragoninfo.dcuc.authweb.restcontroller.auth.vo.data;
 
+import com.dragoninfo.dcuc.auth.auth.vo.DataAuthAcceptVo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 1 - 0
src/main/java/com/dragoninfo/dcuc/authweb/restcontroller/auth/vo/data/OrgDataAuthAcceptVo.java

@@ -1,5 +1,6 @@
 package com.dragoninfo.dcuc.authweb.restcontroller.auth.vo.data;
 
+import com.dragoninfo.dcuc.auth.auth.vo.DataAuthAcceptVo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 1 - 4
src/main/java/com/dragoninfo/dcuc/authweb/restcontroller/auth/vo/data/SubDataVo.java

@@ -15,10 +15,7 @@ public class SubDataVo {
     @ApiModelProperty(value = "数据资源唯一标识")
     private String dataId;
 
-    @ApiModelProperty(value = "数据类型")
-    private String dataType;
-
-    @ApiModelProperty(value = "数据资源code集合")
+    @ApiModelProperty(value = "数据资源code")
     private String dataCode;
 
     @ApiModelProperty(value = "数据对应的分级分类标签code")

+ 1 - 0
src/main/java/com/dragoninfo/dcuc/authweb/restcontroller/auth/vo/data/UserDataAuthAcceptVo.java

@@ -1,5 +1,6 @@
 package com.dragoninfo.dcuc.authweb.restcontroller.auth.vo.data;
 
+import com.dragoninfo.dcuc.auth.auth.vo.DataAuthAcceptVo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 83 - 0
src/main/java/com/dragoninfo/dcuc/authweb/restcontroller/sub/ColumnRelationController.java

@@ -0,0 +1,83 @@
+package com.dragoninfo.dcuc.authweb.restcontroller.sub;
+
+import com.dragoninfo.dcuc.app.facade.sub.IAppColumnRelationFacaed;
+import com.dragoninfo.dcuc.app.vo.AppColumnDetailVo;
+import com.dragoninfo.dcuc.app.vo.AppColumnRelationPageVO;
+import com.dragoninfo.dcuc.app.vo.AppColumnRelationVO;
+import com.dragoninfo.dcuc.app.vo.AppColumnSaveVo;
+import com.dragoninfo.dcuc.authweb.restcontroller.sub.vo.data.FieldClaAcceptVo;
+import com.dragoninfo.dcuc.authweb.util.VersionUtils;
+import com.dragoninfo.duceap.core.response.Result;
+import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
+import com.dragonsoft.duceap.base.entity.search.SearchDTO;
+import com.dragonsoft.duceap.core.search.Searchable;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * @author mazq
+ * @date 2022/10/5
+ */
+@Api(tags = {"字段分类关系接口"})
+@RestController
+@RequestMapping(value = "/cloumnRelation/"+ VersionUtils.VERSION_UID)
+public class ColumnRelationController {
+
+    @Autowired
+    private IAppColumnRelationFacaed appColumnRelationFacaed;
+
+    @ApiOperation(value = "关联关系分页列表")
+    @ApiImplicitParam(name = "Searchable", value = "Searchable 数据分级分页查询对象,查询条件 codeName like ")
+    @PostMapping(value = "search")
+    public Result<List<AppColumnRelationPageVO>> pageSearch(Searchable searchable) {
+        Page<AppColumnRelationPageVO> voPage = appColumnRelationFacaed.pageSearch(searchable.toSearchDTO());
+        List<AppColumnRelationPageVO> content = voPage.getContent();
+        return Result.success(voPage.getTotalElements(), content);
+    }
+
+    @ApiOperation(value = "关联关系详情")
+    @ApiImplicitParam(name = "id", value = "id")
+    @GetMapping(value = "detail")
+    public Result<AppColumnDetailVo> detail(@RequestParam("id") String id) {
+        AppColumnDetailVo vo = appColumnRelationFacaed.detail(id);
+        return Result.success(vo);
+    }
+
+    @ApiOperation(value = "关联关系删除")
+    @ApiImplicitParam(name = "id", value = "id")
+    @DeleteMapping(value = "deleteById")
+    public Result<Object> deleteById(@RequestParam("id") String id) {
+        appColumnRelationFacaed.deleteById(id);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "关联关系新增")
+    @PostMapping(value = "relationAdd")
+    public Result<Object> relationAdd(@RequestBody AppColumnSaveVo saveVo) {
+        ResponseStatus responseStatus = appColumnRelationFacaed.relationAdd(saveVo);
+        if (ResponseStatus.SUCCESS_CODE.equals(responseStatus.getStatusCode())) {
+            return Result.success();
+        } else {
+            return Result.fail(ResponseStatus.FAIL_CODE, responseStatus.getMessage());
+        }
+    }
+
+    @ApiOperation(value = "关联关系修改")
+    @PostMapping(value = "relationUpdate")
+    public Result<Object> relationUpdate(@RequestBody AppColumnSaveVo saveVo) {
+        ResponseStatus responseStatus = appColumnRelationFacaed.relationUpdate(saveVo);
+        if (ResponseStatus.SUCCESS_CODE.equals(responseStatus.getStatusCode())) {
+            return Result.success();
+        } else {
+            return Result.fail(ResponseStatus.FAIL_CODE, responseStatus.getMessage());
+        }
+    }
+
+}

+ 6 - 6
src/main/java/com/dragoninfo/dcuc/authweb/restcontroller/sub/DataSecurityLevelController.java

@@ -1,6 +1,6 @@
 package com.dragoninfo.dcuc.authweb.restcontroller.sub;
 
-import com.dragoninfo.dcuc.app.dto.sub.DataSecDTO;
+import com.dragoninfo.dcuc.app.dto.sub.FieldSecDTO;
 import com.dragoninfo.dcuc.app.facade.sub.IDataSecFacade;
 import com.dragoninfo.dcuc.authweb.restcontroller.sub.vo.data.DataSecVo;
 import com.dragoninfo.dcuc.authweb.util.VersionUtils;
@@ -34,7 +34,7 @@ public class DataSecurityLevelController {
     @ApiImplicitParam(name = "DataSecurityLevelVo", value = "数据安全等级Vo")
     @PostMapping(value = "save")
     public Result dataLevelAdd(@RequestBody DataSecVo vo){
-        DataSecDTO dto = new DataSecDTO();
+        FieldSecDTO dto = new FieldSecDTO();
         BeanUtils.copyProperties(vo,dto);
         ResponseStatus status = dataSecFacade.dataLevelAdd(dto);
         if(status.getStatusCode().equals(ResponseStatus.SUCCESS_CODE)) {
@@ -48,8 +48,8 @@ public class DataSecurityLevelController {
     @ApiImplicitParam(name = "Searchable", value = "Searchable 安全等级分页查询对象,查询条件 secName like ")
     @PostMapping(value = "search")
     public Result dataLevelPageList(Searchable searchable) {
-        Page<DataSecDTO> page = dataSecFacade.pageSearch(searchable.toSearchDTO());
-        List<DataSecDTO> content = page.getContent();
+        Page<FieldSecDTO> page = dataSecFacade.pageSearch(searchable.toSearchDTO());
+        List<FieldSecDTO> content = page.getContent();
         List<DataSecVo> vos = content.stream().map(item -> {
             DataSecVo vo = new DataSecVo();
             BeanUtils.copyProperties(item, vo);
@@ -63,7 +63,7 @@ public class DataSecurityLevelController {
     @ApiImplicitParam(name = "id", value = "id: 数据安全等级id")
     @GetMapping(value = "detail/{id}")
     public Result<DataSecVo> detail(@PathVariable("id") String id){
-        DataSecDTO dataSec = dataSecFacade.detail(id);
+        FieldSecDTO dataSec = dataSecFacade.detail(id);
         DataSecVo vo = new DataSecVo();
         BeanUtils.copyProperties(dataSec, vo);
         return Result.success(vo);
@@ -73,7 +73,7 @@ public class DataSecurityLevelController {
     @ApiImplicitParam(name = "secCode", value = "secCode: 数据安全等级代码")
     @GetMapping(value = "detailByCode/{secCode}")
     public Result<DataSecVo> detailByCode(@PathVariable("secCode") String secCode){
-        DataSecDTO dataSec = dataSecFacade.detailByCode(secCode);
+        FieldSecDTO dataSec = dataSecFacade.detailByCode(secCode);
         DataSecVo vo = new DataSecVo();
         BeanUtils.copyProperties(dataSec, vo);
         return Result.success(vo);

+ 15 - 4
src/main/java/com/dragoninfo/dcuc/authweb/restcontroller/sub/FieldClassifyController.java

@@ -8,11 +8,9 @@ import com.dragoninfo.dcuc.authweb.restcontroller.sub.vo.data.FieldClaVo;
 import com.dragoninfo.dcuc.authweb.util.VersionUtils;
 import com.dragoninfo.duceap.core.response.Result;
 import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
+import com.dragonsoft.duceap.base.entity.search.SearchDTO;
 import com.dragonsoft.duceap.core.search.Searchable;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.*;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
@@ -113,6 +111,19 @@ public class FieldClassifyController {
         }
     }
 
+    @ApiModelProperty(value = "查询二级字段分类")
+    @ApiImplicitParam(name = "Searchable", value = "Searchable 查询条件 id not in")
+    @PostMapping(value = "getSecLevelColumn")
+    public Result<List<FieldClaVo>> getSecLevelColumn(SearchDTO searchDTO) {
+        List<FieldClaDTO> dtos = fieldClaFacade.getSecLevelColumn(searchDTO);
+        List<FieldClaVo> vos = dtos.stream().map(item -> {
+            FieldClaVo vo = new FieldClaVo();
+            BeanUtils.copyProperties(item, vo);
+            return vo;
+        }).collect(Collectors.toList());
+        return Result.success(vos);
+    }
+
 
 
 }

+ 20 - 0
src/main/java/com/dragoninfo/dcuc/authweb/restcontroller/sub/SubSyncController.java

@@ -150,5 +150,25 @@ public class SubSyncController {
         }
     }
 
+    @ApiOperation(value = "字段关系同步")
+    @GetMapping(value = "columnRelationSync")
+    public Result columnRelationSync() {
+        ResponseStatus response = dataResourceFacade.columnRelationSync();
+        if (ResponseStatus.SUCCESS_CODE.equals(response.getStatusCode())) {
+            return Result.success();
+        } else {
+            return Result.failMessage(response.getMessage());
+        }
+    }
 
+    @ApiOperation(value = "表和列资源同步")
+    @GetMapping(value = "tableColumnSync")
+    public Result tableColumnSync() {
+        ResponseStatus response = dataResourceFacade.syncTableAndColumn();
+        if (ResponseStatus.SUCCESS_CODE.equals(response.getStatusCode())) {
+            return Result.success();
+        } else {
+            return Result.failMessage(response.getMessage());
+        }
+    }
 }

+ 2 - 2
src/main/resources/application-base.yml

@@ -35,7 +35,7 @@ management:
 duceap:
   swagger:
     enabled: true
-    package-path: com.dragoninfo.dcuc.authweb.restcontroller.audit.v2
+    package-path: com.dragoninfo.dcuc.authweb.restcontroller.auth
   license:
     #配置用来指定license对接的后端项目地址(格式:ip:port/context,如http://10.10.10.10:8080/ctx),
     #默认使用HttpServletRequest.getLocalAddr()方法获取ip地址,
@@ -65,7 +65,7 @@ duceap:
       SSOServiceUrl: http://10.11.0.240:18871/dcuc/login
       #单点登录服务接口地址
       webServiceUrl: http://192.168.6.128:9995/didsserver/webservices/
-      noFilterUrl: services,hessian,commons,install.action,.xml,/install,/widgets-src/,/authorizationPage.html,/importAuthorizationFile.html,/license/LicenseManagerServlet,/authorizationFile/,/api/,/js/,/png/,/rest/,/dataresourcesrv/
+      noFilterUrl: services,hessian,commons,install.action,.xml,/install,/widgets-src/,/authorizationPage.html,/importAuthorizationFile.html,/license/LicenseManagerServlet,/authorizationFile/,/api/,/js/,/png/,/rest/,/dataresourcesrv/,/swagger-ui.html,/v2/
 hystrix:
   command:
     default: