From ee05b5ba7fddf3a0930311244b0185330a5443b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BB=96=E5=BF=A0=E7=BE=8E?= <14203604+liao-zhongmei@user.noreply.gitee.com> Date: Thu, 4 Jul 2024 20:31:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/compiler.xml | 11 +- .idea/dataSources.local.xml | 19 - .idea/dataSources.xml | 12 - .../6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9.xml | 279 ----------- .../storage_v2/_src_/schema/etl.nYkBAA.meta | 2 - .../schema/information_schema.FNRwLQ.meta | 2 - .../storage_v2/_src_/schema/mysql.osA4Bg.meta | 2 - .../schema/performance_schema.kIw0nw.meta | 2 - .../storage_v2/_src_/schema/sys.zb4BAA.meta | 2 - .idea/easyCodeTableSetting.xml | 87 ---- .idea/encodings.xml | 6 - .idea/inspectionProfiles/Project_Default.xml | 63 --- .idea/misc.xml | 20 +- .idea/modules.xml | 2 +- .idea/uiDesigner.xml | 124 ----- .idea/workspace.xml | 471 +++++++++--------- etl-auth/etl-auth-common/etl-auth-common.iml | 11 - etl-auth/etl-auth-common/pom.xml | 3 - etl-auth/etl-auth-server/pom.xml | 17 +- .../com/auth/server/config/MvcConfig.java | 18 - .../server/controller/LoginControler.java | 4 +- .../controller/PermissionController.java | 6 +- .../auth/server}/entity/PathPermission.java | 2 +- .../auth/server}/entity/RolesPermission.java | 2 +- .../com/auth/server}/entity/UserAccount.java | 4 +- .../server}/enums/PermissionConstants.java | 2 +- .../com/auth/server/mapper/PathMapper.java | 4 +- .../auth/server/mapper/PermissionMapper.java | 3 +- .../auth/server/mapper/UserMangeMapper.java | 3 +- .../com/auth/server/service/PathService.java | 5 +- .../server/service/PermissionService.java | 4 +- .../server/service/UserManageService.java | 2 +- .../server/service/impl/PathServiceImpl.java | 4 +- .../service/impl/PermissionServiceImpl.java | 5 +- .../service/impl/UserManageServiceImpl.java | 4 +- .../java/com/auth/server/util/UserRealm.java | 11 +- .../server/controller/LoginControler.class | Bin 2142 -> 2142 bytes .../controller/PermissionController.class | Bin 3600 -> 3600 bytes .../auth/server}/entity/PathPermission.class | Bin 4351 -> 4351 bytes .../auth/server}/entity/RolesPermission.class | Bin 2923 -> 2923 bytes .../com/auth/server}/entity/UserAccount.class | Bin 3149 -> 3149 bytes .../server}/enums/PermissionConstants.class | Bin 703 -> 703 bytes .../com/auth/server/mapper/PathMapper.class | Bin 310 -> 310 bytes .../auth/server/mapper/PermissionMapper.class | Bin 323 -> 323 bytes .../auth/server/mapper/UserMangeMapper.class | Bin 398 -> 398 bytes .../com/auth/server/service/PathService.class | Bin 321 -> 321 bytes .../server/service/PermissionService.class | Bin 466 -> 466 bytes .../server/service/UserManageService.class | Bin 707 -> 707 bytes .../server/service/impl/PathServiceImpl.class | Bin 888 -> 888 bytes .../service/impl/PermissionServiceImpl.class | Bin 3757 -> 3757 bytes .../service/impl/UserManageServiceImpl.class | Bin 8494 -> 8494 bytes .../com/auth/server/util/UserRealm.class | Bin 3559 -> 3559 bytes .../target/etl-auth-server-1.0-SNAPSHOT.jar | Bin 0 -> 28801 bytes .../target/maven-archiver/pom.properties | 5 + .../compile/default-compile/createdFiles.lst | 20 + .../compile/default-compile/inputFiles.lst | 21 + .../default-testCompile/createdFiles.lst | 1 + .../default-testCompile/inputFiles.lst | 1 + etl-common/target/etl-common-1.0-SNAPSHOT.jar | Bin 26190 -> 26775 bytes .../target/maven-archiver/pom.properties | 2 +- .../compile/default-compile/createdFiles.lst | 1 + .../compile/default-compile/inputFiles.lst | 1 + .../etl-database-common.iml | 0 .../database/common/entity/DataSources.java | 10 +- .../com/etl/database/common/entity/File.java | 5 + .../com/etl/database/common/entity/Node.java | 32 ++ .../com/etl/database/common/entity/Rule.java | 3 + .../database/common/entity/SelectField.java | 23 + .../com/etl/database/common/entity/Task.java | 4 +- .../database/common/entity/req/DruidReq.java | 3 + .../database/common/entity/req/FileReq.java | 19 + .../database/common/entity/DataSources.class | Bin 7046 -> 7957 bytes .../com/etl/database/common/entity/File.class | Bin 4165 -> 4750 bytes .../com/etl/database/common/entity/Node.class | Bin 0 -> 4133 bytes .../com/etl/database/common/entity/Rule.class | Bin 4255 -> 4765 bytes .../database/common/entity/SelectField.class | Bin 0 -> 3182 bytes .../com/etl/database/common/entity/Task.class | Bin 5403 -> 5483 bytes .../database/common/entity/req/DruidReq.class | Bin 5178 -> 5656 bytes .../database/common/entity/req/FileReq.class | Bin 0 -> 2757 bytes .../etl-database-common-1.0-SNAPSHOT.jar | Bin 17361 -> 0 bytes .../target/maven-archiver/pom.properties | 5 - .../compile/default-compile/createdFiles.lst | 10 - .../compile/default-compile/inputFiles.lst | 10 - .../default-testCompile/createdFiles.lst | 1 - .../default-testCompile/inputFiles.lst | 1 - .../EtlDatabaseCommonApplicationTests.class | Bin 584 -> 0 bytes .../etl-database-server.iml | 0 etl-database/etl-database-server/pom.xml | 5 + .../server/controller/CodeTypeController.java | 25 + .../server/controller/FileController.java | 25 +- .../server/controller/NodeController.java | 28 ++ .../server/controller/RedisController.java | 7 +- .../server/controller/RuleController.java | 6 +- .../server/controller/RuleTypeController.java | 28 ++ .../server/controller/TaskController.java | 21 +- .../controller/TaskWeightController.java | 2 +- .../database/server/mapper/MysqlMapper.java | 1 + .../database/server/mapper/NodeMapper.java | 11 + .../database/server/mapper/RuleMapper.java | 3 + .../server/mapper/SelectFieldMapper.java | 11 + .../server/service/CodeTypeService.java | 12 + .../server/service/DataSouceService.java | 2 + .../database/server/service/FileService.java | 7 +- .../database/server/service/NodeService.java | 12 + .../database/server/service/RuleService.java | 2 + .../server/service/RuleTypeService.java | 10 + .../server/service/SelectFieldService.java | 10 + .../database/server/service/TaskService.java | 3 + .../service/impl/CodeTypeServiceImpl.java | 27 + .../service/impl/DataSouceServiceImpl.java | 6 + .../server/service/impl/FileServiceImpl.java | 36 +- .../server/service/impl/MysqlServiceImpl.java | 24 +- .../server/service/impl/NodeServiceImpl.java | 32 ++ .../server/service/impl/RuleServiceImpl.java | 11 +- .../service/impl/RuleTypeServiceImpl.java | 28 ++ .../service/impl/SelectFieldServiceImpl.java | 29 ++ .../server/service/impl/TaskServiceImpl.java | 181 ++++++- .../service/impl/TaskWeightServiceImpl.java | 4 - .../src/main/resources/bootstrap.yml | 3 +- .../src/main/resources/bpmn.bpmn20.xml | 58 +++ .../src/main/resources/diagram.png | Bin 0 -> 14702 bytes .../EtlDatabaseServerApplicationTests.java | 15 + .../target/classes/bootstrap.yml | 3 +- .../target/classes/bpmn.bpmn20.xml | 58 +++ .../controller/CodeTypeController.class | Bin 0 -> 1259 bytes .../server/controller/FileController.class | Bin 1006 -> 1884 bytes .../server/controller/NodeController.class | Bin 0 -> 1362 bytes .../server/controller/RedisController.class | Bin 2075 -> 2075 bytes .../server/controller/RuleController.class | Bin 2930 -> 2930 bytes .../controller/RuleTypeController.class | Bin 0 -> 1393 bytes .../server/controller/TaskController.class | Bin 2902 -> 3178 bytes .../database/server/mapper/NodeMapper.class | Bin 0 -> 386 bytes .../server/mapper/SelectFieldMapper.class | Bin 0 -> 407 bytes .../server/service/CodeTypeService.class | Bin 0 -> 433 bytes .../server/service/DataSouceService.class | Bin 655 -> 742 bytes .../database/server/service/FileService.class | Bin 332 -> 545 bytes .../database/server/service/NodeService.class | Bin 0 -> 516 bytes .../server/service/RuleTypeService.class | Bin 0 -> 433 bytes .../server/service/SelectFieldService.class | Bin 0 -> 483 bytes .../database/server/service/TaskService.class | Bin 619 -> 695 bytes .../service/impl/CodeTypeServiceImpl.class | Bin 0 -> 1850 bytes .../service/impl/DataSouceServiceImpl.class | Bin 6926 -> 7219 bytes .../server/service/impl/FileServiceImpl.class | Bin 1541 -> 5570 bytes .../service/impl/MysqlServiceImpl.class | Bin 12557 -> 12718 bytes .../server/service/impl/NodeServiceImpl.class | Bin 0 -> 3940 bytes .../server/service/impl/RuleServiceImpl.class | Bin 7719 -> 7719 bytes .../service/impl/RuleTypeServiceImpl.class | Bin 0 -> 1962 bytes .../service/impl/SelectFieldServiceImpl.class | Bin 0 -> 4366 bytes .../service/impl/TaskServiceImpl$1.class | Bin 0 -> 1306 bytes .../server/service/impl/TaskServiceImpl.class | Bin 2550 -> 13043 bytes .../service/impl/TaskWeightServiceImpl.class | Bin 2069 -> 2069 bytes .../target/classes/diagram.png | Bin 0 -> 14702 bytes .../etl-database-server-1.0-SNAPSHOT.jar | Bin 25797 -> 0 bytes .../target/maven-archiver/pom.properties | 5 - .../compile/default-compile/inputFiles.lst | 17 - .../default-testCompile/createdFiles.lst | 1 - .../default-testCompile/inputFiles.lst | 1 - .../EtlDatabaseServerApplicationTests.class | Bin 584 -> 0 bytes etl-database/etl-database.iml | 6 + etl-easycode/etl-easycode.iml | 6 + .../target/etl-easycode-1.0-SNAPSHOT.jar | Bin 0 -> 8987 bytes .../target/maven-archiver/pom.properties | 5 + .../compile/default-compile/createdFiles.lst | 0 .../compile/default-compile/inputFiles.lst | 6 + .../default-testCompile/createdFiles.lst | 0 .../default-testCompile/inputFiles.lst | 1 + etl-gateway/.gitignore | 33 -- etl-gateway/etl-gateway.iml | 6 + etl-gateway/pom.xml | 5 + .../com/etl/gateway/config/FeignConfig.java | 19 + .../gateway/service/PermissionService.java | 13 + etl-gateway/src/main/resources/bootstrap.yml | 6 + etl-gateway/target/classes/bootstrap.yml | 39 ++ .../etl/gateway/EtlGatewayApplication.class | Bin 0 -> 846 bytes .../com/etl/gateway/config/FeignConfig.class | Bin 0 -> 1634 bytes .../gateway/config/IgnoreWhiteConfig.class | Bin 0 -> 2709 bytes .../gateway/config/WhiteListProperties.class | Bin 0 -> 1926 bytes .../com/etl/gateway/filters/AuthFilter.class | Bin 0 -> 3993 bytes .../gateway/filters/JwtAuthCheckFilter.class | Bin 0 -> 9508 bytes .../com/etl/gateway/filters/LogFilter.class | Bin 0 -> 1277 bytes .../gateway/service/PermissionService.class | Bin 0 -> 608 bytes .../com/etl/gateway/utils/GatewayUtils.class | Bin 0 -> 6265 bytes .../target/etl-gateway-1.0-SNAPSHOT.jar | Bin 0 -> 17184 bytes .../target/maven-archiver/pom.properties | 5 + .../compile/default-compile/createdFiles.lst | 9 + .../compile/default-compile/inputFiles.lst | 9 + etl-groovy/etl-groovy.iml | 6 + etl-groovy/pom.xml | 68 +++ .../groovy/SpringBootGroovyApplication.java | 15 + .../controller/GroovyTestController.java | 48 ++ .../java/com/etl/groovy/entity/Address.java | 15 + .../com/etl/groovy/mapper/AddressMapper.java | 12 + .../etl/groovy/service/GroovyTestService.java | 18 + .../etl/groovy/util/SpringContextUtil.java | 57 +++ etl-groovy/src/main/resources/bootstrap.yml | 81 +++ .../src/main/resources/config/flow.el.xml | 6 + .../etl/groovy/EtlGroovyApplicationTests.java | 13 + etl-groovy/target/classes/bootstrap.yml | 81 +++ .../groovy/SpringBootGroovyApplication.class | Bin 0 -> 880 bytes .../controller/GroovyTestController.class | Bin 0 -> 1582 bytes .../com/etl/groovy/entity/Address.class | Bin 0 -> 1923 bytes .../com/etl/groovy/mapper/AddressMapper.class | Bin 0 -> 579 bytes .../groovy/service/GroovyTestService.class | Bin 0 -> 697 bytes .../etl/groovy/util/SpringContextUtil.class | Bin 0 -> 1633 bytes etl-groovy/target/classes/config/flow.el.xml | 6 + etl-groovy/target/etl-groovy-1.0-SNAPSHOT.jar | Bin 0 -> 9159 bytes .../target/maven-archiver/pom.properties | 5 + .../compile/default-compile/createdFiles.lst | 6 + .../compile/default-compile/inputFiles.lst | 6 + .../default-testCompile/createdFiles.lst | 1 + .../default-testCompile/inputFiles.lst | 1 + .../groovy/EtlGroovyApplicationTests.class | Bin 0 -> 542 bytes .../spring-configuration-metadata.json | 12 +- .../target/etl-jwt-manage-1.0-SNAPSHOT.jar | Bin 8961 -> 8959 bytes .../target/maven-archiver/pom.properties | 2 +- etl-roles/etl-roles.iml | 6 + etl-roles/pom.xml | 113 +++++ .../com/etl/roles/EtlRolesApplication.java | 15 + .../controlller/PermissionController.java | 52 ++ .../java/com/etl/roles/controlller/Test.java | 35 ++ .../java/com/etl/roles/mapper/PathMapper.java | 9 + .../etl/roles/mapper/PermissionMapper.java | 10 + .../com/etl/roles/service/PathService.java | 9 + .../etl/roles/service/PermissionService.java | 11 + .../roles/service/impl/PathServiceImpl.java | 13 + .../service/impl/PermissionServiceImpl.java | 61 +++ etl-roles/src/main/resources/bootstrap.yml | 40 ++ .../src/main/resources/static/index.html | 6 + .../etl/roles/EtlRolesApplicationTests.java | 13 + etl-roles/target/classes/bootstrap.yml | 40 ++ .../com/etl/roles/EtlRolesApplication.class | Bin 0 -> 797 bytes .../controlller/PermissionController.class | Bin 0 -> 3590 bytes .../com/etl/roles/controlller/Test.class | Bin 0 -> 2061 bytes .../com/etl/roles/mapper/PathMapper.class | Bin 0 -> 394 bytes .../etl/roles/mapper/PermissionMapper.class | Bin 0 -> 407 bytes .../com/etl/roles/service/PathService.class | Bin 0 -> 319 bytes .../etl/roles/service/PermissionService.class | Bin 0 -> 464 bytes .../roles/service/impl/PathServiceImpl.class | Bin 0 -> 878 bytes .../service/impl/PermissionServiceImpl.class | Bin 0 -> 3743 bytes etl-roles/target/classes/static/index.html | 6 + .../etl/roles/EtlRolesApplicationTests.class | Bin 0 -> 537 bytes 241 files changed, 2172 insertions(+), 1060 deletions(-) delete mode 100644 .idea/dataSources.local.xml delete mode 100644 .idea/dataSources.xml delete mode 100644 .idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9.xml delete mode 100644 .idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9/storage_v2/_src_/schema/etl.nYkBAA.meta delete mode 100644 .idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9/storage_v2/_src_/schema/information_schema.FNRwLQ.meta delete mode 100644 .idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9/storage_v2/_src_/schema/mysql.osA4Bg.meta delete mode 100644 .idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9/storage_v2/_src_/schema/performance_schema.kIw0nw.meta delete mode 100644 .idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9/storage_v2/_src_/schema/sys.zb4BAA.meta delete mode 100644 .idea/easyCodeTableSetting.xml delete mode 100644 .idea/uiDesigner.xml delete mode 100644 etl-auth/etl-auth-common/etl-auth-common.iml delete mode 100644 etl-auth/etl-auth-server/src/main/java/com/auth/server/config/MvcConfig.java rename etl-auth/{etl-auth-common/src/main/java/com/auth/common => etl-auth-server/src/main/java/com/auth/server}/entity/PathPermission.java (96%) rename etl-auth/{etl-auth-common/src/main/java/com/auth/common => etl-auth-server/src/main/java/com/auth/server}/entity/RolesPermission.java (95%) rename etl-auth/{etl-auth-common/src/main/java/com/auth/common => etl-auth-server/src/main/java/com/auth/server}/entity/UserAccount.java (85%) rename etl-auth/{etl-auth-common/src/main/java/com/auth/common => etl-auth-server/src/main/java/com/auth/server}/enums/PermissionConstants.java (93%) rename etl-auth/etl-auth-server/target/{production/etl-auth-common/com/auth/common => classes/com/auth/server}/entity/PathPermission.class (96%) rename etl-auth/etl-auth-server/target/{production/etl-auth-common/com/auth/common => classes/com/auth/server}/entity/RolesPermission.class (93%) rename etl-auth/etl-auth-server/target/{production/etl-auth-common/com/auth/common => classes/com/auth/server}/entity/UserAccount.class (90%) rename etl-auth/etl-auth-server/target/{production/etl-auth-common/com/auth/common => classes/com/auth/server}/enums/PermissionConstants.class (76%) create mode 100644 etl-auth/etl-auth-server/target/etl-auth-server-1.0-SNAPSHOT.jar create mode 100644 etl-auth/etl-auth-server/target/maven-archiver/pom.properties create mode 100644 etl-auth/etl-auth-server/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 etl-auth/etl-auth-server/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 etl-auth/etl-auth-server/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 etl-auth/etl-auth-server/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst rename etl-auth/etl-auth-server/etl-auth-server.iml => etl-database/etl-database-common/etl-database-common.iml (100%) create mode 100644 etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/Node.java create mode 100644 etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/SelectField.java create mode 100644 etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/req/FileReq.java create mode 100644 etl-database/etl-database-common/target/classes/com/etl/database/common/entity/Node.class create mode 100644 etl-database/etl-database-common/target/classes/com/etl/database/common/entity/SelectField.class create mode 100644 etl-database/etl-database-common/target/classes/com/etl/database/common/entity/req/FileReq.class delete mode 100644 etl-database/etl-database-common/target/etl-database-common-1.0-SNAPSHOT.jar delete mode 100644 etl-database/etl-database-common/target/maven-archiver/pom.properties delete mode 100644 etl-database/etl-database-common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst delete mode 100644 etl-database/etl-database-common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst delete mode 100644 etl-database/etl-database-common/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst delete mode 100644 etl-database/etl-database-common/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst delete mode 100644 etl-database/etl-database-common/target/test-classes/com/etl/database/common/EtlDatabaseCommonApplicationTests.class rename etl-auth/etl-auth.iml => etl-database/etl-database-server/etl-database-server.iml (100%) create mode 100644 etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/CodeTypeController.java create mode 100644 etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/NodeController.java create mode 100644 etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/RuleTypeController.java create mode 100644 etl-database/etl-database-server/src/main/java/com/etl/database/server/mapper/NodeMapper.java create mode 100644 etl-database/etl-database-server/src/main/java/com/etl/database/server/mapper/SelectFieldMapper.java create mode 100644 etl-database/etl-database-server/src/main/java/com/etl/database/server/service/CodeTypeService.java create mode 100644 etl-database/etl-database-server/src/main/java/com/etl/database/server/service/NodeService.java create mode 100644 etl-database/etl-database-server/src/main/java/com/etl/database/server/service/RuleTypeService.java create mode 100644 etl-database/etl-database-server/src/main/java/com/etl/database/server/service/SelectFieldService.java create mode 100644 etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/CodeTypeServiceImpl.java create mode 100644 etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/NodeServiceImpl.java create mode 100644 etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/RuleTypeServiceImpl.java create mode 100644 etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/SelectFieldServiceImpl.java create mode 100644 etl-database/etl-database-server/src/main/resources/bpmn.bpmn20.xml create mode 100644 etl-database/etl-database-server/src/main/resources/diagram.png create mode 100644 etl-database/etl-database-server/target/classes/bpmn.bpmn20.xml create mode 100644 etl-database/etl-database-server/target/classes/com/etl/database/server/controller/CodeTypeController.class create mode 100644 etl-database/etl-database-server/target/classes/com/etl/database/server/controller/NodeController.class create mode 100644 etl-database/etl-database-server/target/classes/com/etl/database/server/controller/RuleTypeController.class create mode 100644 etl-database/etl-database-server/target/classes/com/etl/database/server/mapper/NodeMapper.class create mode 100644 etl-database/etl-database-server/target/classes/com/etl/database/server/mapper/SelectFieldMapper.class create mode 100644 etl-database/etl-database-server/target/classes/com/etl/database/server/service/CodeTypeService.class create mode 100644 etl-database/etl-database-server/target/classes/com/etl/database/server/service/NodeService.class create mode 100644 etl-database/etl-database-server/target/classes/com/etl/database/server/service/RuleTypeService.class create mode 100644 etl-database/etl-database-server/target/classes/com/etl/database/server/service/SelectFieldService.class create mode 100644 etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/CodeTypeServiceImpl.class create mode 100644 etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/NodeServiceImpl.class create mode 100644 etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/RuleTypeServiceImpl.class create mode 100644 etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/SelectFieldServiceImpl.class create mode 100644 etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/TaskServiceImpl$1.class create mode 100644 etl-database/etl-database-server/target/classes/diagram.png delete mode 100644 etl-database/etl-database-server/target/etl-database-server-1.0-SNAPSHOT.jar delete mode 100644 etl-database/etl-database-server/target/maven-archiver/pom.properties delete mode 100644 etl-database/etl-database-server/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst delete mode 100644 etl-database/etl-database-server/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst delete mode 100644 etl-database/etl-database-server/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst delete mode 100644 etl-database/etl-database-server/target/test-classes/com/etl/database/server/EtlDatabaseServerApplicationTests.class create mode 100644 etl-database/etl-database.iml create mode 100644 etl-easycode/etl-easycode.iml create mode 100644 etl-easycode/target/etl-easycode-1.0-SNAPSHOT.jar create mode 100644 etl-easycode/target/maven-archiver/pom.properties rename {etl-database/etl-database-server => etl-easycode}/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst (100%) create mode 100644 etl-easycode/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 etl-easycode/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 etl-easycode/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst delete mode 100644 etl-gateway/.gitignore create mode 100644 etl-gateway/etl-gateway.iml create mode 100644 etl-gateway/src/main/java/com/etl/gateway/config/FeignConfig.java create mode 100644 etl-gateway/src/main/java/com/etl/gateway/service/PermissionService.java create mode 100644 etl-gateway/target/classes/bootstrap.yml create mode 100644 etl-gateway/target/classes/com/etl/gateway/EtlGatewayApplication.class create mode 100644 etl-gateway/target/classes/com/etl/gateway/config/FeignConfig.class create mode 100644 etl-gateway/target/classes/com/etl/gateway/config/IgnoreWhiteConfig.class create mode 100644 etl-gateway/target/classes/com/etl/gateway/config/WhiteListProperties.class create mode 100644 etl-gateway/target/classes/com/etl/gateway/filters/AuthFilter.class create mode 100644 etl-gateway/target/classes/com/etl/gateway/filters/JwtAuthCheckFilter.class create mode 100644 etl-gateway/target/classes/com/etl/gateway/filters/LogFilter.class create mode 100644 etl-gateway/target/classes/com/etl/gateway/service/PermissionService.class create mode 100644 etl-gateway/target/classes/com/etl/gateway/utils/GatewayUtils.class create mode 100644 etl-gateway/target/etl-gateway-1.0-SNAPSHOT.jar create mode 100644 etl-gateway/target/maven-archiver/pom.properties create mode 100644 etl-gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 etl-gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 etl-groovy/etl-groovy.iml create mode 100644 etl-groovy/pom.xml create mode 100644 etl-groovy/src/main/java/com/etl/groovy/SpringBootGroovyApplication.java create mode 100644 etl-groovy/src/main/java/com/etl/groovy/controller/GroovyTestController.java create mode 100644 etl-groovy/src/main/java/com/etl/groovy/entity/Address.java create mode 100644 etl-groovy/src/main/java/com/etl/groovy/mapper/AddressMapper.java create mode 100644 etl-groovy/src/main/java/com/etl/groovy/service/GroovyTestService.java create mode 100644 etl-groovy/src/main/java/com/etl/groovy/util/SpringContextUtil.java create mode 100644 etl-groovy/src/main/resources/bootstrap.yml create mode 100644 etl-groovy/src/main/resources/config/flow.el.xml create mode 100644 etl-groovy/src/test/java/com/etl/groovy/EtlGroovyApplicationTests.java create mode 100644 etl-groovy/target/classes/bootstrap.yml create mode 100644 etl-groovy/target/classes/com/etl/groovy/SpringBootGroovyApplication.class create mode 100644 etl-groovy/target/classes/com/etl/groovy/controller/GroovyTestController.class create mode 100644 etl-groovy/target/classes/com/etl/groovy/entity/Address.class create mode 100644 etl-groovy/target/classes/com/etl/groovy/mapper/AddressMapper.class create mode 100644 etl-groovy/target/classes/com/etl/groovy/service/GroovyTestService.class create mode 100644 etl-groovy/target/classes/com/etl/groovy/util/SpringContextUtil.class create mode 100644 etl-groovy/target/classes/config/flow.el.xml create mode 100644 etl-groovy/target/etl-groovy-1.0-SNAPSHOT.jar create mode 100644 etl-groovy/target/maven-archiver/pom.properties create mode 100644 etl-groovy/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 etl-groovy/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 etl-groovy/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 etl-groovy/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 etl-groovy/target/test-classes/com/etl/groovy/EtlGroovyApplicationTests.class create mode 100644 etl-roles/etl-roles.iml create mode 100644 etl-roles/pom.xml create mode 100644 etl-roles/src/main/java/com/etl/roles/EtlRolesApplication.java create mode 100644 etl-roles/src/main/java/com/etl/roles/controlller/PermissionController.java create mode 100644 etl-roles/src/main/java/com/etl/roles/controlller/Test.java create mode 100644 etl-roles/src/main/java/com/etl/roles/mapper/PathMapper.java create mode 100644 etl-roles/src/main/java/com/etl/roles/mapper/PermissionMapper.java create mode 100644 etl-roles/src/main/java/com/etl/roles/service/PathService.java create mode 100644 etl-roles/src/main/java/com/etl/roles/service/PermissionService.java create mode 100644 etl-roles/src/main/java/com/etl/roles/service/impl/PathServiceImpl.java create mode 100644 etl-roles/src/main/java/com/etl/roles/service/impl/PermissionServiceImpl.java create mode 100644 etl-roles/src/main/resources/bootstrap.yml create mode 100644 etl-roles/src/main/resources/static/index.html create mode 100644 etl-roles/src/test/java/com/etl/roles/EtlRolesApplicationTests.java create mode 100644 etl-roles/target/classes/bootstrap.yml create mode 100644 etl-roles/target/classes/com/etl/roles/EtlRolesApplication.class create mode 100644 etl-roles/target/classes/com/etl/roles/controlller/PermissionController.class create mode 100644 etl-roles/target/classes/com/etl/roles/controlller/Test.class create mode 100644 etl-roles/target/classes/com/etl/roles/mapper/PathMapper.class create mode 100644 etl-roles/target/classes/com/etl/roles/mapper/PermissionMapper.class create mode 100644 etl-roles/target/classes/com/etl/roles/service/PathService.class create mode 100644 etl-roles/target/classes/com/etl/roles/service/PermissionService.class create mode 100644 etl-roles/target/classes/com/etl/roles/service/impl/PathServiceImpl.class create mode 100644 etl-roles/target/classes/com/etl/roles/service/impl/PermissionServiceImpl.class create mode 100644 etl-roles/target/classes/static/index.html create mode 100644 etl-roles/target/test-classes/com/etl/roles/EtlRolesApplicationTests.class diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 1ba2501..0bdb031 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -7,18 +7,13 @@ - - - + - + + - - - - \ No newline at end of file diff --git a/.idea/dataSources.local.xml b/.idea/dataSources.local.xml deleted file mode 100644 index 8dd536c..0000000 --- a/.idea/dataSources.local.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - #@ - ` - - - master_key - root - - - - - - - - \ No newline at end of file diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml deleted file mode 100644 index edcfb44..0000000 --- a/.idea/dataSources.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - mysql.8 - true - com.mysql.cj.jdbc.Driver - jdbc:mysql://115.159.33.152:3306 - $ProjectFileDir$ - - - \ No newline at end of file diff --git a/.idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9.xml b/.idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9.xml deleted file mode 100644 index 9c1bafb..0000000 --- a/.idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9.xml +++ /dev/null @@ -1,279 +0,0 @@ - - - - - lower/lower - InnoDB - InnoDB - 5.7.36 - - - utf8mb4_general_ci - - - 2024-06-24.16:01:07 - 2024-06-24.08:01:05 - utf8mb4_general_ci - - - utf8mb4_general_ci - - - utf8mb4_general_ci - - - utf8_general_ci - - - utf8mb4_general_ci - - - utf8mb4_general_ci - - - utf8mb4_general_ci - - - utf8mb4_general_ci - - - utf8mb4_general_ci - - - utf8mb4_general_ci - - - utf8mb4_general_ci - - - utf8mb4_general_ci - - - utf8_general_ci - - - utf8mb4_general_ci - - - utf8mb4_general_ci - - - utf8mb4_general_ci - - - utf8mb4_general_ci - - - utf8mb4_general_ci - - - utf8_general_ci - - - utf8mb4_unicode_ci - - - utf8mb4_general_ci - - - 数据资源表 - InnoDB - utf8mb4_general_ci -
- - 角色表 - InnoDB - utf8mb4_general_ci -
- - 角色和资源表映射关系 - InnoDB - utf8mb4_general_ci -
- - 用户表 - InnoDB - utf8mb4_general_ci -
- - 用户表和角色表映射 - InnoDB - utf8mb4_general_ci -
- - 2 - int(11)|0s - 1 - 1 - - - 权限代号 - varchar(255)|0s - 2 - - - 路由层次 - varchar(255)|0s - 3 - - - 路由 - varchar(255)|0s - 4 - - - 功能描述 - varchar(255)|0s - 5 - - - 状态 0-废弃 1-正在使用 - tinyint(4)|0s - 6 - - - id - btree - 1 - - - 1 - 1 - PRIMARY - - - 3 - int(11)|0s - 1 - 1 - - - 角色名称 - varchar(34)|0s - 2 - - - 角色具体描述 - varchar(36)|0s - 3 - - - id - btree - 1 - - - 1 - 1 - PRIMARY - - - 4 - int(11)|0s - 1 - 1 - - - varchar(255)|0s - 2 - - - 可以访问的路由编码 - varchar(255)|0s - 3 - - - id - btree - 1 - - - 1 - 1 - PRIMARY - - - 3 - int(11)|0s - 1 - 1 - - - 用户名 - varchar(50)|0s - 2 - - - 密码 - varchar(255)|0s - 3 - - - 角色 - varchar(50)|0s - 4 - - - 手机号码 - varchar(32)|0s - 5 - - - 状态 1-正常 2-废弃 - int(11)|0s - 6 - - - 电子邮箱 - varchar(255)|0s - 7 - - - 账号 - varchar(255)|0s - 8 - - - text|0s - 9 - - - id - btree - 1 - - - 1 - 1 - PRIMARY - - - 3 - int(11)|0s - 1 - 1 - - - varchar(255)|0s - 2 - - - varchar(255)|0s - 3 - - - varchar(255)|0s - 4 - - - id - btree - 1 - - - 1 - 1 - PRIMARY - -
-
\ No newline at end of file diff --git a/.idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9/storage_v2/_src_/schema/etl.nYkBAA.meta b/.idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9/storage_v2/_src_/schema/etl.nYkBAA.meta deleted file mode 100644 index 904c6e4..0000000 --- a/.idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9/storage_v2/_src_/schema/etl.nYkBAA.meta +++ /dev/null @@ -1,2 +0,0 @@ -#n:etl -! [1719216067000, 0, null, null, -2147483648, -2147483648] diff --git a/.idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9/storage_v2/_src_/schema/information_schema.FNRwLQ.meta b/.idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9/storage_v2/_src_/schema/information_schema.FNRwLQ.meta deleted file mode 100644 index 1ff3db2..0000000 --- a/.idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9/storage_v2/_src_/schema/information_schema.FNRwLQ.meta +++ /dev/null @@ -1,2 +0,0 @@ -#n:information_schema -! [null, 0, null, null, -2147483648, -2147483648] diff --git a/.idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9/storage_v2/_src_/schema/mysql.osA4Bg.meta b/.idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9/storage_v2/_src_/schema/mysql.osA4Bg.meta deleted file mode 100644 index 86a53f1..0000000 --- a/.idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9/storage_v2/_src_/schema/mysql.osA4Bg.meta +++ /dev/null @@ -1,2 +0,0 @@ -#n:mysql -! [null, 0, null, null, -2147483648, -2147483648] diff --git a/.idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9/storage_v2/_src_/schema/performance_schema.kIw0nw.meta b/.idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9/storage_v2/_src_/schema/performance_schema.kIw0nw.meta deleted file mode 100644 index 9394db1..0000000 --- a/.idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9/storage_v2/_src_/schema/performance_schema.kIw0nw.meta +++ /dev/null @@ -1,2 +0,0 @@ -#n:performance_schema -! [null, 0, null, null, -2147483648, -2147483648] diff --git a/.idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9/storage_v2/_src_/schema/sys.zb4BAA.meta b/.idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9/storage_v2/_src_/schema/sys.zb4BAA.meta deleted file mode 100644 index 2f4470b..0000000 --- a/.idea/dataSources/6b8f28b8-a5cd-487d-8bae-93c3ccefe4a9/storage_v2/_src_/schema/sys.zb4BAA.meta +++ /dev/null @@ -1,2 +0,0 @@ -#n:sys -! [null, 0, null, null, -2147483648, -2147483648] diff --git a/.idea/easyCodeTableSetting.xml b/.idea/easyCodeTableSetting.xml deleted file mode 100644 index 09e6015..0000000 --- a/.idea/easyCodeTableSetting.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml index ad79a25..603407b 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -15,16 +15,10 @@ - - - - - - diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml index ee9f695..8d66637 100644 --- a/.idea/inspectionProfiles/Project_Default.xml +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -1,68 +1,5 @@ \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 944e70f..d68b839 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,28 +4,16 @@ - - - + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index f238179..e5536fd 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,7 @@ - + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml deleted file mode 100644 index 2b63946..0000000 --- a/.idea/uiDesigner.xml +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 4b646b6..3bb657d 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -4,48 +4,254 @@ - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - + + + - + + - - + + + + + + + - + + + + + + + + + + + + + + + + - - - - - - - - - - - + - + 1710157283817 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/etl-auth/etl-auth-common/etl-auth-common.iml b/etl-auth/etl-auth-common/etl-auth-common.iml deleted file mode 100644 index ca87593..0000000 --- a/etl-auth/etl-auth-common/etl-auth-common.iml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/etl-auth/etl-auth-common/pom.xml b/etl-auth/etl-auth-common/pom.xml index 60a68f6..f1a8fab 100644 --- a/etl-auth/etl-auth-common/pom.xml +++ b/etl-auth/etl-auth-common/pom.xml @@ -52,7 +52,4 @@ compile - - - diff --git a/etl-auth/etl-auth-server/pom.xml b/etl-auth/etl-auth-server/pom.xml index 9a080dc..ac19771 100644 --- a/etl-auth/etl-auth-server/pom.xml +++ b/etl-auth/etl-auth-server/pom.xml @@ -16,11 +16,6 @@ 2021.0.5.0 - - com.bwie - etl-auth-common - 1.0-SNAPSHOT - org.springframework.boot spring-boot-starter-thymeleaf @@ -32,9 +27,9 @@ 1.4.0 - io.springfox - springfox-swagger2 - 3.0.0 + com.github.xiaoymin + knife4j-openapi2-spring-boot-starter + 4.4.0 com.bwie @@ -56,11 +51,7 @@ com.mysql mysql-connector-j - - com.github.xiaoymin - knife4j-spring-boot-starter - 3.0.3 - + com.baomidou mybatis-plus-boot-starter diff --git a/etl-auth/etl-auth-server/src/main/java/com/auth/server/config/MvcConfig.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/config/MvcConfig.java deleted file mode 100644 index d9d7556..0000000 --- a/etl-auth/etl-auth-server/src/main/java/com/auth/server/config/MvcConfig.java +++ /dev/null @@ -1,18 +0,0 @@ -//package com.auth.server.config; -//import com.auth.server.interceptor.UserInterceptor; -//import com.auth.server.mapper.UserMangeMapper; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.context.annotation.Configuration; -//import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -//import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -//@Configuration -//public class MvcConfig implements WebMvcConfigurer { -// @Autowired -// private UserMangeMapper userMangeMapper; -// @Override -// public void addInterceptors(InterceptorRegistry registry) { -// //添加拦截器,排除/路径和 /login路径 -// registry.addInterceptor(new UserInterceptor(userMangeMapper)) -// .excludePathPatterns("/","/user/login"); -// } -//} diff --git a/etl-auth/etl-auth-server/src/main/java/com/auth/server/controller/LoginControler.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/controller/LoginControler.java index 7aa273d..ddf260b 100644 --- a/etl-auth/etl-auth-server/src/main/java/com/auth/server/controller/LoginControler.java +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/controller/LoginControler.java @@ -2,8 +2,8 @@ package com.auth.server.controller; import com.alibaba.fastjson2.JSON; import com.alibaba.nacos.api.model.v2.Result; -import com.auth.common.entity.UserAccount; -import com.auth.common.enums.PermissionConstants; + +import com.auth.server.entity.UserAccount; import com.auth.server.service.UserManageService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.etl.common.enums.ResponseCodeEnum; diff --git a/etl-auth/etl-auth-server/src/main/java/com/auth/server/controller/PermissionController.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/controller/PermissionController.java index 1569cd3..1221762 100644 --- a/etl-auth/etl-auth-server/src/main/java/com/auth/server/controller/PermissionController.java +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/controller/PermissionController.java @@ -1,8 +1,8 @@ package com.auth.server.controller; -import com.auth.common.entity.PathPermission; -import com.auth.common.entity.RolesPermission; -import com.auth.common.enums.PermissionConstants; +import com.auth.server.entity.PathPermission; +import com.auth.server.entity.RolesPermission; +import com.auth.server.enums.PermissionConstants; import com.auth.server.service.PathService; import com.auth.server.service.PermissionService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; diff --git a/etl-auth/etl-auth-common/src/main/java/com/auth/common/entity/PathPermission.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/entity/PathPermission.java similarity index 96% rename from etl-auth/etl-auth-common/src/main/java/com/auth/common/entity/PathPermission.java rename to etl-auth/etl-auth-server/src/main/java/com/auth/server/entity/PathPermission.java index 43726c2..cf9c9f9 100644 --- a/etl-auth/etl-auth-common/src/main/java/com/auth/common/entity/PathPermission.java +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/entity/PathPermission.java @@ -1,4 +1,4 @@ -package com.auth.common.entity; +package com.auth.server.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/etl-auth/etl-auth-common/src/main/java/com/auth/common/entity/RolesPermission.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/entity/RolesPermission.java similarity index 95% rename from etl-auth/etl-auth-common/src/main/java/com/auth/common/entity/RolesPermission.java rename to etl-auth/etl-auth-server/src/main/java/com/auth/server/entity/RolesPermission.java index 7860c7d..2fcb3b4 100644 --- a/etl-auth/etl-auth-common/src/main/java/com/auth/common/entity/RolesPermission.java +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/entity/RolesPermission.java @@ -1,4 +1,4 @@ -package com.auth.common.entity; +package com.auth.server.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/etl-auth/etl-auth-common/src/main/java/com/auth/common/entity/UserAccount.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/entity/UserAccount.java similarity index 85% rename from etl-auth/etl-auth-common/src/main/java/com/auth/common/entity/UserAccount.java rename to etl-auth/etl-auth-server/src/main/java/com/auth/server/entity/UserAccount.java index bca0ee1..f7f32e3 100644 --- a/etl-auth/etl-auth-common/src/main/java/com/auth/common/entity/UserAccount.java +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/entity/UserAccount.java @@ -1,4 +1,4 @@ -package com.auth.common.entity; +package com.auth.server.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -21,4 +21,6 @@ public class UserAccount { @ApiModelProperty("密码/") private String password; +// @ApiModelProperty("uuid") +// private String UUID; } diff --git a/etl-auth/etl-auth-common/src/main/java/com/auth/common/enums/PermissionConstants.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/enums/PermissionConstants.java similarity index 93% rename from etl-auth/etl-auth-common/src/main/java/com/auth/common/enums/PermissionConstants.java rename to etl-auth/etl-auth-server/src/main/java/com/auth/server/enums/PermissionConstants.java index 25a97d9..452b326 100644 --- a/etl-auth/etl-auth-common/src/main/java/com/auth/common/enums/PermissionConstants.java +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/enums/PermissionConstants.java @@ -1,4 +1,4 @@ -package com.auth.common.enums; +package com.auth.server.enums; public class PermissionConstants { public static final String ROLES = "roles"; diff --git a/etl-auth/etl-auth-server/src/main/java/com/auth/server/mapper/PathMapper.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/mapper/PathMapper.java index e243793..8d277f8 100644 --- a/etl-auth/etl-auth-server/src/main/java/com/auth/server/mapper/PathMapper.java +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/mapper/PathMapper.java @@ -1,7 +1,7 @@ package com.auth.server.mapper; -import com.auth.common.entity.PathPermission; -import com.auth.common.entity.RolesPermission; + +import com.auth.server.entity.PathPermission; import com.baomidou.mybatisplus.core.mapper.BaseMapper; public interface PathMapper extends BaseMapper { diff --git a/etl-auth/etl-auth-server/src/main/java/com/auth/server/mapper/PermissionMapper.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/mapper/PermissionMapper.java index 42e3bed..8ec48cc 100644 --- a/etl-auth/etl-auth-server/src/main/java/com/auth/server/mapper/PermissionMapper.java +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/mapper/PermissionMapper.java @@ -1,7 +1,8 @@ package com.auth.server.mapper; -import com.auth.common.entity.RolesPermission; + +import com.auth.server.entity.RolesPermission; import com.baomidou.mybatisplus.core.mapper.BaseMapper; public interface PermissionMapper extends BaseMapper { diff --git a/etl-auth/etl-auth-server/src/main/java/com/auth/server/mapper/UserMangeMapper.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/mapper/UserMangeMapper.java index 9a770ef..da33f1f 100644 --- a/etl-auth/etl-auth-server/src/main/java/com/auth/server/mapper/UserMangeMapper.java +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/mapper/UserMangeMapper.java @@ -1,7 +1,8 @@ package com.auth.server.mapper; -import com.auth.common.entity.UserAccount; + +import com.auth.server.entity.UserAccount; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; diff --git a/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/PathService.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/PathService.java index b555b70..487fdc9 100644 --- a/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/PathService.java +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/PathService.java @@ -1,8 +1,7 @@ package com.auth.server.service; -import com.auth.common.entity.PathPermission; -import com.auth.common.entity.RolesPermission; -import com.auth.common.entity.UserAccount; + +import com.auth.server.entity.PathPermission; import com.baomidou.mybatisplus.extension.service.IService; public interface PathService extends IService { diff --git a/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/PermissionService.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/PermissionService.java index d487e57..503760e 100644 --- a/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/PermissionService.java +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/PermissionService.java @@ -1,7 +1,7 @@ package com.auth.server.service; -import com.auth.common.entity.RolesPermission; -import com.auth.common.entity.UserAccount; + +import com.auth.server.entity.RolesPermission; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; diff --git a/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/UserManageService.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/UserManageService.java index 949f8b8..f7ed4ab 100644 --- a/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/UserManageService.java +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/UserManageService.java @@ -1,8 +1,8 @@ package com.auth.server.service; import com.alibaba.nacos.api.model.v2.Result; -import com.auth.common.entity.UserAccount; +import com.auth.server.entity.UserAccount; import com.baomidou.mybatisplus.extension.service.IService; import com.etl.common.result.CommonResult; diff --git a/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/impl/PathServiceImpl.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/impl/PathServiceImpl.java index 8e4475a..a7888fe 100644 --- a/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/impl/PathServiceImpl.java +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/impl/PathServiceImpl.java @@ -1,7 +1,7 @@ package com.auth.server.service.impl; -import com.auth.common.entity.PathPermission; -import com.auth.common.entity.RolesPermission; + +import com.auth.server.entity.PathPermission; import com.auth.server.mapper.PathMapper; import com.auth.server.mapper.PermissionMapper; import com.auth.server.service.PathService; diff --git a/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/impl/PermissionServiceImpl.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/impl/PermissionServiceImpl.java index dc99f92..f48a094 100644 --- a/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/impl/PermissionServiceImpl.java +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/impl/PermissionServiceImpl.java @@ -1,7 +1,8 @@ package com.auth.server.service.impl; -import com.auth.common.entity.RolesPermission; -import com.auth.common.enums.PermissionConstants; + +import com.auth.server.entity.RolesPermission; +import com.auth.server.enums.PermissionConstants; import com.auth.server.mapper.PermissionMapper; import com.auth.server.service.PermissionService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; diff --git a/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/impl/UserManageServiceImpl.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/impl/UserManageServiceImpl.java index a594d0a..16d41d6 100644 --- a/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/impl/UserManageServiceImpl.java +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/impl/UserManageServiceImpl.java @@ -3,9 +3,9 @@ package com.auth.server.service.impl; import com.alibaba.fastjson2.JSON; import com.alibaba.nacos.api.model.v2.Result; -import com.auth.common.entity.UserAccount; -import com.auth.common.enums.PermissionConstants; import com.auth.server.config.MD5s; +import com.auth.server.entity.UserAccount; +import com.auth.server.enums.PermissionConstants; import com.auth.server.mapper.UserMangeMapper; import com.auth.server.service.UserManageService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; diff --git a/etl-auth/etl-auth-server/src/main/java/com/auth/server/util/UserRealm.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/util/UserRealm.java index b9218f5..84cf367 100644 --- a/etl-auth/etl-auth-server/src/main/java/com/auth/server/util/UserRealm.java +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/util/UserRealm.java @@ -1,7 +1,8 @@ package com.auth.server.util; -import com.auth.common.entity.UserAccount; + +import com.auth.server.entity.UserAccount; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.auth.server.service.UserManageService; import lombok.extern.slf4j.Slf4j; @@ -19,15 +20,13 @@ import org.springframework.beans.factory.annotation.Autowired; public class UserRealm extends AuthorizingRealm { @Autowired private UserManageService userManageService; - //授权 @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { - /**配置权限 *此处User实体需配置属性roles,用户权限 *获取当前用户对象 - * */ + */ SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo(); Subject subject= SecurityUtils.getSubject(); UserAccount currentUser =(UserAccount) subject.getPrincipal(); @@ -35,7 +34,6 @@ public class UserRealm extends AuthorizingRealm { log.info("用户权限为:"+currentUser.getRoles()); return authorizationInfo; } - //认证 @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { @@ -56,9 +54,8 @@ public class UserRealm extends AuthorizingRealm { }else { log.info(user.getUsername()); } - //principal:认证的实体信息,可以是username,也可以是数据库表对应的用户的实体对象 - // Object principal = user.getUsername(); + // Object principal = user.getUsername(); ByteSource salt = ByteSource.Util.bytes(username); return new SimpleAuthenticationInfo(user.getUsername(), user.getPassword() , salt,getName()); } diff --git a/etl-auth/etl-auth-server/target/classes/com/auth/server/controller/LoginControler.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/controller/LoginControler.class index 6be0a47b2b2f2ccbff43a9158a1317ac31585b66..0474618948f80b6d26c5a5d1d6c34642c0c43586 100644 GIT binary patch delta 45 pcmca7a8F=E9wS?EYEfBg(d2)O)|1yWio&?381^vK*#P>n4LJY+ delta 35 lcmaDY_F8Pi6Gpb={M_99yvYSD;+q+nGMS+K%>^vK*#P*f4IKag diff --git a/etl-auth/etl-auth-server/target/production/etl-auth-common/com/auth/common/entity/UserAccount.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/entity/UserAccount.class similarity index 90% rename from etl-auth/etl-auth-server/target/production/etl-auth-common/com/auth/common/entity/UserAccount.class rename to etl-auth/etl-auth-server/target/classes/com/auth/server/entity/UserAccount.class index 7e2c105d3205c2e18a0437d2f1d8be83ced4886a..1eb0be2dc9bd27fd65ead1e12ad32941688e901b 100644 GIT binary patch delta 31 gcmX>raaLl(D@L~B)S|M~qRk%|>zQEeQkEO+0M!r-&;S4c delta 31 gcmX>raaLl(D@L~D{M_99yv-jN>zQEeQkEO+0MkMYv;Y7A diff --git a/etl-auth/etl-auth-server/target/production/etl-auth-common/com/auth/common/enums/PermissionConstants.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/enums/PermissionConstants.class similarity index 76% rename from etl-auth/etl-auth-server/target/production/etl-auth-common/com/auth/common/enums/PermissionConstants.class rename to etl-auth/etl-auth-server/target/classes/com/auth/server/enums/PermissionConstants.class index da08aaa1a96a5d85de0666f6f98f44d42a558fef..b062b79feb92f2ffa6c51b378cfc4b70cafc18dd 100644 GIT binary patch delta 30 gcmdnbx}S9e6C+!3YEfBg(PR$B5GZqV5@ReQ0GqrC+5i9m delta 30 gcmdnbx}S9e6C+!4er|4l-eeBO5GZqV5@ReQ0Ga#=z5oCK diff --git a/etl-auth/etl-auth-server/target/classes/com/auth/server/mapper/PathMapper.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/mapper/PathMapper.class index 1b0aab4ad60efd1b438d967d384bd644f80c27be..e5c5fe05946832999f816621757f4d047cff6896 100644 GIT binary patch delta 16 XcmdnSw2f&(K3j2WQCVuy#L|NRHIW9? delta 16 XcmdnSw2f&(K3j5rZf<_w#L|NRH5vxS diff --git a/etl-auth/etl-auth-server/target/classes/com/auth/server/mapper/PermissionMapper.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/mapper/PermissionMapper.class index 8ee93170d06ecc08d8b4705ac183cae18df1ad67..fa347639511a061fe82a1d191711299b59eec146 100644 GIT binary patch delta 16 XcmX@ibeL&EK3j2WQCVuy#L{yBHzWr8 delta 16 XcmX@ibeL&EK3j5rZf<_w#L{yBHmwHj diff --git a/etl-auth/etl-auth-server/target/classes/com/auth/server/mapper/UserMangeMapper.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/mapper/UserMangeMapper.class index a8b6b557fb1cd4e72bc38414a812b5c92db2fc64..40dbb6ad6fac9ef5d6e3d1521115ef110edf298f 100644 GIT binary patch delta 17 YcmeBU?qi;i&sLmTRF+z_u~d=~05-G*{{R30 delta 17 YcmeBU?qi;i&z78@o134vu~d=~05&fL@c;k- diff --git a/etl-auth/etl-auth-server/target/classes/com/auth/server/service/PathService.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/service/PathService.class index 88233ecb5a7d6062d1f1de5079f5c2f8219e424d..1bc22e4154ef03a98ac98b27fd415fe9508fa06e 100644 GIT binary patch delta 16 XcmX@ebdYI6Fr@ delta 16 XcmX@ebdYI6FgKy^9{q73>#RfY`e3`Rhf e@#GTTS)Aq!EDRP5JPcNo#ret^g(mm&$pHXU)JzWm diff --git a/etl-auth/etl-auth-server/target/classes/com/auth/server/service/impl/UserManageServiceImpl.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/service/impl/UserManageServiceImpl.class index e29edb7e8d2cc363a6d4e359170832dc068a2faa..966705712660c2d6b763aa211088b4317dadb8b2 100644 GIT binary patch delta 92 zcmZ4Iw9aY6G-kHq)S|M~qRDfZKSPe`NA7Y diff --git a/etl-auth/etl-auth-server/target/etl-auth-server-1.0-SNAPSHOT.jar b/etl-auth/etl-auth-server/target/etl-auth-server-1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..0ae55d1ca2ed9520f7c815e228e44377900a8a65 GIT binary patch literal 28801 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

vgX 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 delta 1127 zcmaJ@Xkdo1$gBvm?|Z*B^iP9t&*i-Dd){--d*cl;J3|PZ zHWr(U=-<1B#C5?QR)T`^+bmiw$N_#RX~2bq2GB~B14ao$S}Sm)oQvNRT+p8hBcOsT z19Xvk8YeH3eOW+$=d2JwmN^p)8Q~=u(koD9!_rv(FE)@7NjnK-O=@9?PQITZ-Ni#p z@Wx&-LnOKov&EoEn*&)7t9ltnS$%~qpxW>(e(0JRU?JqhMJ^d$4ChULsyoMm;FI;^ zOdI*uKOArhTrpU}Q?1P5ms?G+P~>^c=FsJup7pHt;Y54$V2Q(>(!6dq7~O_PPmJYp zV}(tn&Z;`?4X{djoVdysAs^L=pd*zALr z@qn)i{J5_U@Tadjt!22yUjqERzZUSNzXp&OU}`x6R?s&C&48&u3t&Ug0~iZh09S*I zZ|Pw0PRG$a`j%EtIEKFx2;E~Nq{p024ZhmBTS2c}D!!a|I2$3m2qE33bH$=Pay;L8 z0LltOGLleZJt@KJecSOwh!44D(b)^iEQEUb2&uQ^N=vEWow!;jq=TWxbE-zP3~GD{ zNx(^{|=!-cdp9FdXT7I3cBORz1%?9fKp zJL=OmACE=E(52`5t;!HJa8uMNRa?3gAEAOxUium~`AC=%BDAsb!i|vQkgG=9&}h-0 z3Z4n~=>Inkk}b(AZtU+;LmL^NBFc=QcTluYK~gL_&coAP8Z!7#7C{~iI2GSdePx+E fgksT!wsf8l^SoTK)0Rb@kS?x7cd1z&Jw~g)&&r3M diff --git a/etl-common/target/maven-archiver/pom.properties b/etl-common/target/maven-archiver/pom.properties index a1eb5b5..0427b5a 100644 --- a/etl-common/target/maven-archiver/pom.properties +++ b/etl-common/target/maven-archiver/pom.properties @@ -1,5 +1,5 @@ #Generated by Maven -#Tue Jun 25 09:14:51 CST 2024 +#Wed Jul 03 15:15:40 CST 2024 version=1.0-SNAPSHOT groupId=com.bwie artifactId=etl-common diff --git a/etl-common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/etl-common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst index 2380f1d..25f0682 100644 --- a/etl-common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ b/etl-common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -3,6 +3,7 @@ com\etl\common\result\PageResult.class com\etl\common\constants\JwtConstants.class com\etl\common\Entity.class com\etl\common\handler\ExceptionHandlers.class +com\etl\common\exception\LimitException.class com\etl\common\util\JwtUtils.class com\etl\common\result\CommonResult.class com\etl\common\util\RequestUtil.class diff --git a/etl-common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/etl-common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index 6074707..cd2ff3a 100644 --- a/etl-common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/etl-common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -8,6 +8,7 @@ D:\workspace\ETL\etl-common\src\main\java\com\etl\common\result\CommonResult.jav D:\workspace\ETL\etl-common\src\main\java\com\etl\common\result\Result.java D:\workspace\ETL\etl-common\src\main\java\com\etl\common\constants\TokenConstants.java D:\workspace\ETL\etl-common\src\main\java\com\etl\common\util\JwtUtils.java +D:\workspace\ETL\etl-common\src\main\java\com\etl\common\exception\LimitException.java D:\workspace\ETL\etl-common\src\main\java\com\etl\common\util\RequestUtil.java D:\workspace\ETL\etl-common\src\main\java\com\etl\common\exception\AllException.java D:\workspace\ETL\etl-common\src\main\java\com\etl\common\util\StringUtils.java diff --git a/etl-auth/etl-auth-server/etl-auth-server.iml b/etl-database/etl-database-common/etl-database-common.iml similarity index 100% rename from etl-auth/etl-auth-server/etl-auth-server.iml rename to etl-database/etl-database-common/etl-database-common.iml diff --git a/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/DataSources.java b/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/DataSources.java index 737c589..a68aae7 100644 --- a/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/DataSources.java +++ b/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/DataSources.java @@ -38,12 +38,11 @@ public class DataSources extends BaseMate { @ApiModelProperty(value = "状态 0-停用 1-启用") @Min(value = 0, message = "状态值不能小于0") - @Max(value = 1, message = "状态值不能大于1") private Integer status; @Size(max = 100, message = "备注不能超过100个字符") @ApiModelProperty(value = "备注") - private String explain; + private String explaina; @ApiModelProperty(value = "额外配置") private String extraEvlop; @@ -54,4 +53,11 @@ public class DataSources extends BaseMate { @TableField(exist = false) @ApiModelProperty(value = "数据库类型") private String dataSourceTypeName; + + @ApiModelProperty(value = "用户名") + private String username; + + @ApiModelProperty(value = "密码") + private String password; + } diff --git a/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/File.java b/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/File.java index 4cd0d27..8c39ac9 100644 --- a/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/File.java +++ b/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/File.java @@ -2,6 +2,7 @@ package com.etl.database.common.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import com.etl.database.common.entity.database.BaseMate; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -12,6 +13,7 @@ import lombok.Data; */ @Data @ApiModel("文件") +@TableName("t_file") public class File extends BaseMate { @ApiModelProperty(value = "文件id") @TableId(value = "id",type = IdType.AUTO) @@ -31,4 +33,7 @@ public class File extends BaseMate { @ApiModelProperty(value = "说明") private String expalin; + + @ApiModelProperty(value = "1-私有文件夹 2-共有文件夹") + private Integer fileOption; } diff --git a/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/Node.java b/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/Node.java new file mode 100644 index 0000000..d52e57f --- /dev/null +++ b/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/Node.java @@ -0,0 +1,32 @@ +package com.etl.database.common.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "节点实体类") +@TableName("t_node") +public class Node { + @ApiModelProperty(value = "id") + @TableId(value = "id",type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "任务id") + private Integer taskId; + + @ApiModelProperty(value = "表名") + private String tableName; + + @ApiModelProperty(value = "类型id") + private Integer type; + + @ApiModelProperty(value = "数据源id") + private Integer dataSourceId; + + @ApiModelProperty(value = "别名") + private String alias; +} diff --git a/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/Rule.java b/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/Rule.java index 6626367..741f0ed 100644 --- a/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/Rule.java +++ b/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/Rule.java @@ -32,4 +32,7 @@ public class Rule { @ApiModelProperty(value = "公开方式 1-仅自己可见 2-公开") private Integer publicWay; + + @ApiModelProperty(value = "规则唯一id") + private Integer regulationId; } diff --git a/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/SelectField.java b/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/SelectField.java new file mode 100644 index 0000000..23d2765 --- /dev/null +++ b/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/SelectField.java @@ -0,0 +1,23 @@ +package com.etl.database.common.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@TableName("t_select_field") +public class SelectField { + @TableId(value = "id",type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "节点id") + private Integer nodeId; + + @ApiModelProperty(value = "字段名称") + private String fieldName; + + @ApiModelProperty(value = "规则id") + private Integer ruleId; +} diff --git a/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/Task.java b/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/Task.java index 1bb042e..c57bfe1 100644 --- a/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/Task.java +++ b/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/Task.java @@ -1,6 +1,7 @@ package com.etl.database.common.entity; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.etl.database.common.entity.database.BaseMate; @@ -38,6 +39,7 @@ public class Task extends BaseMate { @ApiModelProperty(value = "任务权重") private Integer weightId; + @TableField(exist = false) @ApiModelProperty(value = "任务等级") private Integer weightName; @@ -46,5 +48,5 @@ public class Task extends BaseMate { private Integer status; @ApiModelProperty(value = "任务备注") - private String explain; + private String explaina; } diff --git a/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/req/DruidReq.java b/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/req/DruidReq.java index 9ad4177..56e929f 100644 --- a/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/req/DruidReq.java +++ b/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/req/DruidReq.java @@ -15,6 +15,9 @@ import javax.validation.constraints.NotBlank; @NoArgsConstructor @ToString public class DruidReq { + @ApiModelProperty(value = "数据源id") + private Integer id; + @NotBlank(message = "数据库连接地址不能为空") @ApiModelProperty(value = "地址") private String url; diff --git a/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/req/FileReq.java b/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/req/FileReq.java new file mode 100644 index 0000000..502b3f5 --- /dev/null +++ b/etl-database/etl-database-common/src/main/java/com/etl/database/common/entity/req/FileReq.java @@ -0,0 +1,19 @@ +package com.etl.database.common.entity.req; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel("文件请求参数") +public class FileReq { + + @ApiModelProperty(value = "文件路径") + private String filePath; + + @ApiModelProperty(value = "页数") + private Integer pageNum = 1; + + @ApiModelProperty(value = "条数") + private Integer pageSize = 3; +} diff --git a/etl-database/etl-database-common/target/classes/com/etl/database/common/entity/DataSources.class b/etl-database/etl-database-common/target/classes/com/etl/database/common/entity/DataSources.class index da8ea5de8721ed3ee29cd39e378e95f1b6604937..61e0b936025709027352190c7ca26e1f50db85ef 100644 GIT binary patch literal 7957 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 wXR(e3&H8NC&w!YqXz7Hix*fN4$zAs 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 diff --git a/etl-database/etl-database-common/target/classes/com/etl/database/common/entity/File.class b/etl-database/etl-database-common/target/classes/com/etl/database/common/entity/File.class index 4e57d3788136948f6771d0cca732d1324a0c69dc..024e692cb3e6eafd5e9d6551db967aad3d2e6d48 100644 GIT binary patch literal 4750 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 diff --git a/etl-database/etl-database-common/target/classes/com/etl/database/common/entity/Node.class b/etl-database/etl-database-common/target/classes/com/etl/database/common/entity/Node.class new file mode 100644 index 0000000000000000000000000000000000000000..1af3fa3876068e1e50e2a9205cc70d6b2ecbe631 GIT binary patch literal 4133 zcmb7GYi}G^8GdHHbJ^Y5OE$67rJ+q52Yl^vDVMI3g4?Fl)OJGRhNKkQv3Ia1S?_Ll zXH(3bluJno4MGTns!CC%rV>$UCF+U>5PT^TANhpDC!{**k4P!cJ7@OlscNLvJI|c= zdCocS<(%1n{P)ej0Js~MlDG}^1S~u$rXi*&#uw8PbI!z5Nj|?JW<&Vj6!a}I-xl*7 zG2a#QJ@J0u#1E3lqi*56Jf9ZxLkmB$@M8-U-<%Nw4WGSKQfZwdOm%SF1KPjL&&0cKw(gZ{t>XH|GG}YnE3IbF48>u#w-JOV%hy(%%1Ni;$(F*wxWDFcvV%du zu3st2(#uZMEi!TIwQA92J^YR0A}5u+uDZT#X?SeBCzx*i67(;HS+E1#iGEL?q!Yg> ztRU%Gq6hi{w>UDZqSc#f;gPY3btUWs37wS#+*x_JR}(HQ5>seuX`+FpIT9{yxKFm6 z3X{|~&(Y;G?utJ%{-_46)?eGu#cb95HMhZqB*~*vJS!LpU@91Fw~VbE?bn2I2AfNU zuHa=?;OOs*w%r_KJ$8I<;RusKY&6_vtKzdGgGkNMc3AqTI$!D0{>>)I=xoav4L4!= zHB~JQNp%_?^eSxagf!z_a(!sHY1u?h^AcOlmkFcg_c#B^zJG7j4{wl8re*GlK3F z^EokxaM;G@#e5BqYuMYpELBSGYk8Hj^p+*b81u?xUc}GEJjV=8?N=#3ticu>CYP@! zU)f1S*{S`#Rp5vR|Pp&%UiPiGBR`0eW9P z?%*fpHh#7Y#3bWjwfS}{-|i$n(B$AKUjlH@#YgZ_zOgDHF~w&{9H)bo+U}U5gVo#a zn5Kgj-R>yT!76Wed>p$t$o8PUoBJ&Csqv{#yaDYsf*3wUYXpNye45x+1bhac<(nqm zK-(|=17fcZh;xx*Hc*6kXi&U6Qp|RX5XT3_BavcuZG>1K6c-}J?Dhz;F(}>_Ddqu* z5SxSI+atxZxGxl!SeuyCW@7Sn#G-38q8MSVq>id3HQXOP&(KciQ5~z{0UU|iPkg8I zs0P>YVDx_UozA1qgN83e&tvR#9(8;)JQN+5xzl;nY18DIRQZX;S&J;|b#rp!CFt?1 zlYfKtTj)bqC;tj-VQOL%iQttWxj02rickL?sY3iM?79Mbx)9$)s?D%VIw^L^DCoj5 z-a`Hg(gnR>^pMgelcaRXDwsmDLXugqdPtd4f}~6-Sx5*e8Ilr(WDhA@N|BT;*@cvl z?2ts%L&}xXB;`t(LRv_fkd!WD+NAhZ#y_;}M){4(OQ%b3;$h4)Ys0vK1>Q0--kATw zBFBb!A^sCbiQ=sE>o`WFlk2Skh9;l`iRli`^86tb*QlWlBciGCD5ym{Mg+X5eCbg(|b{ z%9X6ZWp!L^I;!?Xx4>g6f-ue@yoe{@Fg_iZu}l5hT|@r#8`z!S zvx#A8u1$>O_bSZOKa#&i;Vd8dg2HJT|B%8w{3H2W70wA~AI&B{Jovfm{c~|D?1LE2 Y1gGL`@E>XqcU0k?_}6J2RRwDQ16a)l!Tc7 zHf^DSCM6+|HutvVEuP7E3UnH~4Ghz~q%(c)Q~T7J$l*WeOKJN1_N=Uxy)>Q6sYC=*K+#gomH9>Jd+zMJJyU<9TlV>sh1tQWKG#Md%9@tFPAHh>DZNWP0+x& zUCGs+HfKQ1nJr6h|C~KhDOknHYGuxQwFW3}~A4t8wxC#|u{k#hK1KjKR^Aw0(T_TI13S?0K|?7}ODgZJy=a(#omR zJ-bWuwG+jjJv~*cV8a^A7tLC2(sX8lp}x6%xpCtR@LYYmXy+d>=LOx_IJ?-mern~l zKQ*pj=-EB;(Y3QTpL@5le6?}m^38?QJ$ptZ0UlPZnR?NUz0aw}E0;g|<0;pvy>{7l z?iJM0KQM)JA3z2KrN`~Eb*NsNwyJI<`S_K*S)4MfHb>T53_G*z@h&&EmQ&0XOvjuy zYgP_9Dpkrk3svCE=Z+vOoXr`_VJEu!2YkV7RZRkRrpkbCZey*6Jn4~|VUA&b)C;Tz ze4rIQo=&!cmS$yJG$J+WP)xAM;Dz+-|$rM(tC6QWyjX056qg_F|9xmDd27pC1se|cu4(Z7^% zNzE$NB%wJ?xkg_NrlsAt(kXwW?L1lUXWAB%tKP^|r&_*v3ogOe2;PtRR+5Nt{;3Ib z&aFjUdhVU1=FRd!jv!7yYu09EIit465TMB;V-p7vLEvcBs@01Q%H9o6qR$@(rLTGD zc%Sch$-eepin$``aJK!gTB%p_)&q7CT@~X}x{L2iLA{@L3!-1rE3aNz zIsdzr_b{Tdx%bU&kmJbZ(P2YI-U4rufM4>lbaw59c)kiogHZWjw&uqub8 z-!AOa=r{CR9xkEthI`m=KE*zCn4HN5!#p}QQFk##`+zk`pnK_Smkp|qbUN!(Y4|`0>x;s0I{-GydzMI#taav zYsI?)#bfkMPi!EuAx`Yz(0ddLPIR|qc!}mBkcBSjAsP?br(>i0$UYD>5$sQRqx;CV z5p*bcpU6h{kzFR}aPYaJ8{J1XrJ%`Rf0T{xBYRlTw}SUkH@c5(dBHcl%vb0^M)dF!X-!7b zh=7tbqI!fm(GMxRKuJBKM}4G}p@5V!R9#_`>X8&(^^wv>45YLX*JDhId!(2i_mMJ2 z0;G(g=?Nxj9tp@t>NJudbs8x>$)uD=O6n;eDQl!b${HCx&7_P+O6!>>DZGg0=va66 zEz00ETSD~GF?txG?GhSI;XVxEEpUq-!CD8d{D0B6fx>vB{+%8LilE^CMvnnSsYvh9 zcYqYC(q;NCkV-GpMfx64j9#a6^nIW>Ezwi-I8cJFlSNMeY4i`glue){{S&wEG*Ak6 zb}!|D(jtntPyr|dKEao*iu!L#DfHwm>Q-n5e^qe{t1gWFzYxd57ld~U+=D0ICJ`$c~xhB-Cr;53z?ZL(Kq&%D#f)2WY)E05{2vS=D;=?af8DZ(btNIdEfWlxuOLIUG zl+Y}l0E&`>LaGAc|NOLvYCtNzOIxtc#e=kq8A^SEg)q`C1X4{xe1dIT^AIm|QKU&| za>DIP9xdvlwU}#HJ+jhHZt(*Qoz7_a3i;!yaE&%Ux=dZ!?j_p7WxPaNv%18ccw|2#agx`!NsQ}hYj(TDS>}9J;xw;+ vPGa0nTeEinFHz6h7ry`7tl*Vch)%k___X_Nx*6X60RG{Vbe?`F!H@n6yZ5l; literal 4255 zcmb7GZI2t(6+Yvg@r>>9OPuV6X;R`OOW9Z41p2~kLL1Tm3%kiS2_aAl%-Yl434V(` z4&6da0ttlBkWi^DAcTY}u@Z_%B9)CG5rQuu@sUrJ`l(XA$&U!o=gb}3v%7=XO4gm{ z-t(M0=brQ2Gyd|Mk3S)zyXY@*x|QlN(x}0M%R`fgV>~>=!|zp^i{tqR9-d|XbBzAT z!=HF~o`>T+oM7ts`F|eTY0W=w3OSP ztJ_5f)>xrrH5yZvI|~f&8&@v2J~;_oYfhJ(!Xwt4M7Ot2U1(i9zWBF~TG!6ywvGPx z>Zuzqzu&rYxpnU1jrkL~?W2N#m+o*Xj(d+pJp+S>aIW3Rutezzr(*AImZ$BymnlA8 zwP2MFS#^gq=P%0cEJt*kmpj`n<%^bUO=*HrvvZqW{0O!-J~cD@%p}jkhk;U6CiZo-y5X) zuV+@$XLSO=yb}O$FaS&g0YvSiO{;{2E!leC^bxz@jtxF0kyKr(Bj1F~Roz*;E|JO! z?`N@S-iim)-eOQ%8DR`AB|K7FVY(o+rzy`E&`(;}11rhSOGI^2-BZYebNAdhxH9 z7SDdL`0;shXC=z7s*!jZ;JC0y)P0hVqN8vBM5j%Z(`k@~bQ)oF2M<5y>2}IVw3VCN z_uMp{o}>w##%PC54>9@$qhIoHFAqEE9-Vga@D$;g>$?qFq~zYFQ!29BG)~5VQ{1W3 zIXch7>$oH%IgXZN--*j0X5ubj9vjJtLICR{xlYE#v{M;Or9qvZCN!Q*_x(ce$cR;| z*%hdKH0%xrZts$Sk;*0f_Qm>6K5fRw?N)p+qZHx16Kamx2F$hqZ*5RN-G&LkCi;<0 zx6=S-sEtod;OP^GVL-iB8b)D24ObfSFrcn04clNqtydcEq%~NCNHG2sapv)q@KlDb zkaQU!LO;V8^%hg~b6{N%=x#DGlUNfNmpcEGBA1pquMKsEZbF=UmOJ-_IzxjY&hm0+ zBh(q%4RKbMJ8ukihSEcvqsyH)g*xNHggC3qowtNK@1|e*&L(OT;o1xhe@Kz=TJ;Hr zUn{PokfcO==)SOhdRDuSP^?7vhsPtYb{`>di5>{wM_KJY;yy?;9)7OqYWES>N1_MA z<55?;kGO3TH%pP{h>TjKQLmfBL+_CyUl{(3w6{p@BwxV!dscLm zH$+}KD!oaQv=>?HrR%g0T_%E_`7fHnS`V7rSM+Nj8Or;R_5&$kU!(&-Q7X}SItZjv zozBq1KpMS{Pr@Of82z1WdITs=3sA{npafmRN9<7`o&JqR{TNV^{)2Y?8=w?Dj(8`i zSJiG(N~Pa^O?@gofuAOQO}7Xb`@bOK#)s6ud3WQsPfc)yn!+ad4t~cXM&nM zC(TgWrj!}=Owo=B8WUb=Q}s-cm+z&vO&L@3Oj^eT(ZOqDxC9;-C-BeNL;s*@D&Twy zy-P))2#WSL%EuDeN-xsyfMhh`S(*V-P{K)ImVk>7odcxeuf=*g0;F*nr7fg?iv<~F zlq8gnBwxl%i>y~zU+E|(|BZW5g47IFKY;#Wc&kx wGtAi_Fd9K$b|dft{c!o`F8Jr-u&;v%E;QeYviBcq9Z&@^;jdGbY62YnAJp(jg8%>k diff --git a/etl-database/etl-database-common/target/classes/com/etl/database/common/entity/SelectField.class b/etl-database/etl-database-common/target/classes/com/etl/database/common/entity/SelectField.class new file mode 100644 index 0000000000000000000000000000000000000000..058ffd4ef49f734f81103af29ae62753cc42c90d GIT binary patch literal 3182 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 z zy4%CkXTWU{u0Gxt@Rzc+wboo?zVY1boAjxb;Nc zEFwfLYwViXZ%sOz1|F73sD0%0y}NirbQ`6`v*o4j@^4kMt2}y;Nw-RRxdgdMcrU1eg4i9ea%gFc)V~> z>GNGrxM(q}_BA|Gor=gj%x|{KwzE~DXM%O%w@9F(yiy6wgn&NuRG<(M0+eHNZ>3(H zwC=NuXwbwsg1?^c6p4Cob=INvGTs^Y+jCdnetzMtD-z|Gbhx_-;%LD}+Xb^2KwD6G5XgJ*3e#+K%*V^kp7=fwpV(MJ79$j54{O zMl>2@QlS}%Ry1!?5u@#OyI8QQ8hw+#jnd)B^xK6k8qLzHOkP9753OO>c_Uj8JTV$6 zfQQ5{8jMo@sEHJX16gutjaM!hNCO&ugHVij-eRMT6LC9^#Zl8i?y}7dh;~P4&6ydi zj3yrr)|_7gfeLHcF>=y^_s^A^;_)U?@t;Vc2xk$r52IE1-a&YB)My>`V=z#IG-uHu z4bd+<(5nC5q+X6TWda<>8s2h{0UC?{65JMzU?aGmM<=aD*(I_Fx(RSsvp~`5m5M{Ytd0nV7 z8Z$&W)~=ijRYpUHD978C*M}YZ0CV+JF%tO5j`i- zzHmG7rP|>ZWq%$FkF&B=JEChPzE)rjT^6|?IqgK_^$zAo4hCr+2wVV^HBta&jkKO( zP}&2f^mG8!X=DKEG_rbzL0J!!(X&2CzJQj9297V$5*I}9{Fab<>0$Z`Lfa#0^azeL zzDsVUqsPF-sYr8Vf>WqUzoQ9o`1MVvX%bw5UZ9gy z0GFhBIzSe<4*C+X~vcYAfIPS9j;Ihypl+a2={ST!T zD&C;w3YG9rm2P0xWfLEk#kTNr5miNZjLV55ceBGJ=0^^(cmzIjk>f!l%tU?< zy(F~X&2HK(Z*fa-b#~J<3Q)}s&XO`bPhF4kyk^KO&}C1ea#;#d%80olRHUn<>M>uG zHsY=*-VmWqg;vH;ToFpt(^7m<)=*uM+7O{|g;uALa7CzDPb=YyR)-hQ<6?7O2%_{3 zJ%QxoU60h(!13lUl7p~B(f{YD4o;@6bc_yyiy_+6bO>A=m{B?mPQf2#HqsGrD!ooC z=Zk-EEj=4m;X z@jR{QS}Ay(Fw47i!QgH5!~AW6@5HC;qagEid;5hi&L{D_ zDtIL(;n%>oJm1d3Hx<4Ojuu@r z-R`qskFe9|3TxmH4%CerXuu|``YEl_)(a`8~kasj>~-Ke{8L6Gynhq diff --git a/etl-database/etl-database-common/target/classes/com/etl/database/common/entity/req/DruidReq.class b/etl-database/etl-database-common/target/classes/com/etl/database/common/entity/req/DruidReq.class index 126ddd52c75ffad25fba6c6d14301588c586b0b8..e7efc584875f2a525dbd57f42ee9971b590c6364 100644 GIT binary patch literal 5656 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 diff --git a/etl-database/etl-database-common/target/maven-archiver/pom.properties b/etl-database/etl-database-common/target/maven-archiver/pom.properties deleted file mode 100644 index 2e9fac8..0000000 --- a/etl-database/etl-database-common/target/maven-archiver/pom.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Generated by Maven -#Wed Jun 26 17:13:09 CST 2024 -version=1.0-SNAPSHOT -groupId=com.bwie -artifactId=etl-database-common diff --git a/etl-database/etl-database-common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/etl-database/etl-database-common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst deleted file mode 100644 index e73a2b6..0000000 --- a/etl-database/etl-database-common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ /dev/null @@ -1,10 +0,0 @@ -com\etl\database\common\entity\req\DruidReq.class -com\etl\database\common\entity\resp\ColumnInfo.class -com\etl\database\common\entity\req\DataSourceReq.class -com\etl\database\common\annoation\Limit.class -com\etl\database\common\entity\DataSources.class -com\etl\database\common\entity\DataSourceType.class -com\etl\database\common\entity\constants\DataSourceConstants.class -com\etl\database\common\entity\DatabaseRedis.class -com\etl\database\common\entity\database\BaseMate.class -com\etl\database\ennum\LimitType.class diff --git a/etl-database/etl-database-common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/etl-database/etl-database-common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst deleted file mode 100644 index 21c4ea7..0000000 --- a/etl-database/etl-database-common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ /dev/null @@ -1,10 +0,0 @@ -D:\workspace\ETL\etl-database\etl-database-common\src\main\java\com\etl\database\common\annoation\Limit.java -D:\workspace\ETL\etl-database\etl-database-common\src\main\java\com\etl\database\common\entity\DataSources.java -D:\workspace\ETL\etl-database\etl-database-common\src\main\java\com\etl\database\common\entity\resp\ColumnInfo.java -D:\workspace\ETL\etl-database\etl-database-common\src\main\java\com\etl\database\ennum\LimitType.java -D:\workspace\ETL\etl-database\etl-database-common\src\main\java\com\etl\database\common\entity\DatabaseRedis.java -D:\workspace\ETL\etl-database\etl-database-common\src\main\java\com\etl\database\common\entity\DataSourceType.java -D:\workspace\ETL\etl-database\etl-database-common\src\main\java\com\etl\database\common\entity\req\DruidReq.java -D:\workspace\ETL\etl-database\etl-database-common\src\main\java\com\etl\database\common\entity\req\DataSourceReq.java -D:\workspace\ETL\etl-database\etl-database-common\src\main\java\com\etl\database\common\entity\constants\DataSourceConstants.java -D:\workspace\ETL\etl-database\etl-database-common\src\main\java\com\etl\database\common\entity\database\BaseMate.java diff --git a/etl-database/etl-database-common/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/etl-database/etl-database-common/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst deleted file mode 100644 index a5211fb..0000000 --- a/etl-database/etl-database-common/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst +++ /dev/null @@ -1 +0,0 @@ -com\etl\database\common\EtlDatabaseCommonApplicationTests.class diff --git a/etl-database/etl-database-common/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/etl-database/etl-database-common/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst deleted file mode 100644 index 2921f28..0000000 --- a/etl-database/etl-database-common/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst +++ /dev/null @@ -1 +0,0 @@ -D:\workspace\ETL\etl-database\etl-database-common\src\test\java\com\etl\database\common\EtlDatabaseCommonApplicationTests.java diff --git a/etl-database/etl-database-common/target/test-classes/com/etl/database/common/EtlDatabaseCommonApplicationTests.class b/etl-database/etl-database-common/target/test-classes/com/etl/database/common/EtlDatabaseCommonApplicationTests.class deleted file mode 100644 index 5e10b3cf177be2cfd63922556e88c898fa4599f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 584 zcmbVJO-lnY5PjLUuC}YK)r;W4llTGVB7#(eTJ^Lj*wTA;8*A!rvg~HnzvW5r;1BRe ziL+@Bf(OAsW->4H-pnwcU+*6Pjs_a oU2.6.13 + + org.codehaus.groovy + groovy-all + 2.4.7 + io.springfox springfox-swagger2 diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/CodeTypeController.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/CodeTypeController.java new file mode 100644 index 0000000..a265322 --- /dev/null +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/CodeTypeController.java @@ -0,0 +1,25 @@ +package com.etl.database.server.controller; + +import com.etl.common.result.Result; +import com.etl.database.common.entity.CodeType; +import com.etl.database.server.service.CodeTypeService; +import io.swagger.annotations.Api; +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; + +@RestController +@RequestMapping(value = "/codeType") +@Api(tags = "编码类型-API") +public class CodeTypeController { + @Autowired + private CodeTypeService codeTypeervice; + + @RequestMapping(value = "/findCodeType") + public Result findCodeType() { + List list = codeTypeervice.findCodeType(); + return Result.success(list); + } +} diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/FileController.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/FileController.java index b2be6b5..cd8b180 100644 --- a/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/FileController.java +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/FileController.java @@ -1,11 +1,15 @@ package com.etl.database.server.controller; import com.etl.common.result.Result; +import com.etl.database.common.entity.File; +import com.etl.database.common.entity.req.FileReq; import com.etl.database.server.service.FileService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.List; /** * 文件控制层 @@ -16,10 +20,19 @@ import org.springframework.web.bind.annotation.RestController; public class FileController { @Autowired private FileService fileService; - - @RequestMapping(value = "/createFile") + + @RequestMapping(value = "/createFile",method = RequestMethod.POST) + @ApiOperation(value = "创建文件") public Result createFile() { - fileService.createFile(); - return Result.success(); + String filePath =fileService.createFile(); + return Result.success(filePath); + } + + + @RequestMapping(value ="/fileList",method = RequestMethod.POST) + @ApiOperation(value = "文件列表") + public Result fileList(@RequestBody FileReq fileReq) { + List fileList =fileService.fileList(fileReq); + return Result.success(fileList); } } diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/NodeController.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/NodeController.java new file mode 100644 index 0000000..018d0fb --- /dev/null +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/NodeController.java @@ -0,0 +1,28 @@ +package com.etl.database.server.controller; + +import com.etl.common.result.Result; +import com.etl.database.common.entity.Node; +import com.etl.database.server.service.NodeService; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +/** + * 节点控制层 + */ +@RestController +@RequestMapping(value = "/node") +@Api(tags = "节点-API") +public class NodeController { + @Autowired + private NodeService nodeService; + + @RequestMapping(value = "/addNode",method = RequestMethod.POST) + public Result addNode(@RequestBody Node node){ + nodeService.addNode(node); + return Result.success(); + } +} diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/RedisController.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/RedisController.java index 01bbc8b..9500670 100644 --- a/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/RedisController.java +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/RedisController.java @@ -19,16 +19,17 @@ import java.util.Map; * redis控制层 */ @RestController -@RequestMapping(value ="/redis") +@RequestMapping(value = "/redis") @Api(tags = "数据源-redis") public class RedisController { @Autowired private RedisService redisService; + @PostMapping("/testDatabaseRedis") @ApiOperation(value = "测试redis连接") @Limit(key = "testDatabaseRedis", permitsPerSecond = 1, timeout = 500, msg = "当前排队人数较多,请稍后再试!") - public Result> testDatabaseRedis(@Valid @RequestBody DatabaseRedisReq databaseRedis) { - Map map = redisService.testDatabaseRedis(databaseRedis); + public Result> testDatabaseRedis(@Valid @RequestBody DatabaseRedisReq databaseRedis) { + Map map = redisService.testDatabaseRedis(databaseRedis); return Result.success(map); } } diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/RuleController.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/RuleController.java index 8d2ea5a..c5f36ec 100644 --- a/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/RuleController.java +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/RuleController.java @@ -3,6 +3,7 @@ package com.etl.database.server.controller; import com.etl.common.result.Result; import com.etl.database.common.entity.Code; import com.etl.database.common.entity.Rule; +import com.etl.database.common.entity.RuleType; import com.etl.database.common.entity.req.RuleReq; import com.etl.database.server.service.RuleService; import io.swagger.annotations.Api; @@ -16,15 +17,16 @@ import java.util.List; * 规则控制层 */ @RestController -@RequestMapping(value ="/rule") +@RequestMapping(value = "/rule") @Api(tags = "规则-API") public class RuleController { @Autowired private RuleService ruleService; + @GetMapping("findRule") @ApiOperation(value = "查询规则") public Result findRule(@RequestBody RuleReq ruleReq) { - List ruleList=ruleService.findRule(ruleReq); + List ruleList = ruleService.findRule(ruleReq); return Result.success(ruleList); } diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/RuleTypeController.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/RuleTypeController.java new file mode 100644 index 0000000..26d23ba --- /dev/null +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/RuleTypeController.java @@ -0,0 +1,28 @@ +package com.etl.database.server.controller; + +import com.etl.common.result.Result; +import com.etl.database.common.entity.RuleType; +import com.etl.database.server.service.RuleTypeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping(value = "/ruleType") +@Api(tags = "规则类型-API") +public class RuleTypeController { + @Autowired + private RuleTypeService ruleTypeService; + + @GetMapping("/findRuleType") + @ApiOperation(value = "查询规则类型") + public Result findRuleType() { + List ruleTypeList =ruleTypeService.findRuleType(); + return Result.success(ruleTypeList); + } +} diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/TaskController.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/TaskController.java index 99c203a..cf42b7f 100644 --- a/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/TaskController.java +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/TaskController.java @@ -16,37 +16,46 @@ import java.util.List; */ @RestController @Api(tags = "任务-API") -@RequestMapping(value ="/task") +@RequestMapping(value = "/task") public class TaskController { @Autowired private TaskService taskService; @GetMapping("/findTask") @ApiOperation("查询任务") - public Result> findTask(){ + public Result> findTask() { return Result.success(taskService.findTask()); } + @PostMapping("/addTask") @ApiOperation("添加任务") - public Result addTask(@RequestBody Task task){ + public Result addTask(@RequestBody Task task) { taskService.addTask(task); return Result.success(); } + @PostMapping("/updateTask") @ApiOperation("修改任务") - public Result updateTask(@RequestBody Task task){ + public Result updateTask(@RequestBody Task task) { taskService.updateTask(task); return Result.success(); } + @DeleteMapping("/deleteTask/{id}") @ApiOperation("删除任务") - public Result deleteTask(@PathVariable Long id){ + public Result deleteTask(@PathVariable Long id) { taskService.deleteTask(id); return Result.success(); } + @GetMapping("/findTaskById/{id}") @ApiOperation("根据id查询任务") - public Result findTaskById(@PathVariable Long id){ + public Result findTaskById(@PathVariable Long id) { return Result.success(taskService.findTaskById(id)); } + + @GetMapping("executeTask") + public Result executeTask(@RequestParam Integer taskId) { + return taskService.executeTask(taskId); + } } diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/TaskWeightController.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/TaskWeightController.java index 2177850..f6fdda5 100644 --- a/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/TaskWeightController.java +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/controller/TaskWeightController.java @@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RestController; * 任务权重 */ @RestController -@RequestMapping(value ="/taskweight") +@RequestMapping(value = "/taskweight") @Api(tags = "任务权重-API") public class TaskWeightController { @Autowired diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/mapper/MysqlMapper.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/mapper/MysqlMapper.java index 457eae6..f629be9 100644 --- a/etl-database/etl-database-server/src/main/java/com/etl/database/server/mapper/MysqlMapper.java +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/mapper/MysqlMapper.java @@ -6,4 +6,5 @@ import org.springframework.stereotype.Repository; @Repository public interface MysqlMapper extends MPJBaseMapper { + } diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/mapper/NodeMapper.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/mapper/NodeMapper.java new file mode 100644 index 0000000..002a048 --- /dev/null +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/mapper/NodeMapper.java @@ -0,0 +1,11 @@ +package com.etl.database.server.mapper; + +import com.etl.database.common.entity.File; +import com.etl.database.common.entity.Node; +import com.github.yulichang.base.MPJBaseMapper; +import org.springframework.stereotype.Repository; + +@Repository +public interface NodeMapper extends MPJBaseMapper { + +} diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/mapper/RuleMapper.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/mapper/RuleMapper.java index 706b653..e97642b 100644 --- a/etl-database/etl-database-server/src/main/java/com/etl/database/server/mapper/RuleMapper.java +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/mapper/RuleMapper.java @@ -2,9 +2,12 @@ package com.etl.database.server.mapper; import com.etl.database.common.entity.DataSources; import com.etl.database.common.entity.Rule; +import com.etl.database.common.entity.RuleType; import com.github.yulichang.base.MPJBaseMapper; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface RuleMapper extends MPJBaseMapper { } diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/mapper/SelectFieldMapper.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/mapper/SelectFieldMapper.java new file mode 100644 index 0000000..99ad84e --- /dev/null +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/mapper/SelectFieldMapper.java @@ -0,0 +1,11 @@ +package com.etl.database.server.mapper; + +import com.etl.database.common.entity.Code; +import com.etl.database.common.entity.SelectField; +import com.github.yulichang.base.MPJBaseMapper; +import org.springframework.stereotype.Repository; + +@Repository +public interface SelectFieldMapper extends MPJBaseMapper { + +} diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/CodeTypeService.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/CodeTypeService.java new file mode 100644 index 0000000..c67f959 --- /dev/null +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/CodeTypeService.java @@ -0,0 +1,12 @@ +package com.etl.database.server.service; + +import com.etl.database.common.entity.CodeType; +import com.etl.database.common.entity.DataSources; +import com.etl.database.server.mapper.CodeTypeMapper; +import com.github.yulichang.base.MPJBaseService; + +import java.util.List; + +public interface CodeTypeService extends MPJBaseService { + List findCodeType(); +} diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/DataSouceService.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/DataSouceService.java index be6f92e..011164e 100644 --- a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/DataSouceService.java +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/DataSouceService.java @@ -13,4 +13,6 @@ public interface DataSouceService extends MPJBaseService { Result updateMysqlDataSource(DataSources dataSources); Result deleteMysqlDataSource(Long id); + + DataSources findById(Integer dataSourceId); } diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/FileService.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/FileService.java index 802fc06..427a794 100644 --- a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/FileService.java +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/FileService.java @@ -2,10 +2,15 @@ package com.etl.database.server.service; import com.etl.database.common.entity.DataSources; import com.etl.database.common.entity.File; +import com.etl.database.common.entity.req.FileReq; import com.github.yulichang.base.MPJBaseService; +import java.util.List; public interface FileService extends MPJBaseService { - void createFile(); + String createFile(); + + List fileList(FileReq fileReq); + } diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/NodeService.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/NodeService.java new file mode 100644 index 0000000..43cf0bb --- /dev/null +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/NodeService.java @@ -0,0 +1,12 @@ +package com.etl.database.server.service; + +import com.etl.database.common.entity.Node; +import com.github.yulichang.base.MPJBaseService; + +import java.util.List; + +public interface NodeService extends MPJBaseService { + void addNode(Node node); + + List findByTaskId(Integer taskId); +} diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/RuleService.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/RuleService.java index 8def3dc..894cb09 100644 --- a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/RuleService.java +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/RuleService.java @@ -2,6 +2,7 @@ package com.etl.database.server.service; import com.etl.database.common.entity.Code; import com.etl.database.common.entity.Rule; +import com.etl.database.common.entity.RuleType; import com.etl.database.common.entity.req.RuleReq; import com.github.yulichang.base.MPJBaseService; @@ -17,4 +18,5 @@ public interface RuleService extends MPJBaseService { void deleteRule(Long id); void addCode(Code code); + } diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/RuleTypeService.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/RuleTypeService.java new file mode 100644 index 0000000..e0a69ad --- /dev/null +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/RuleTypeService.java @@ -0,0 +1,10 @@ +package com.etl.database.server.service; + +import com.etl.database.common.entity.RuleType; +import com.github.yulichang.base.MPJBaseService; + +import java.util.List; + +public interface RuleTypeService extends MPJBaseService { + List findRuleType(); +} diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/SelectFieldService.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/SelectFieldService.java new file mode 100644 index 0000000..3d59068 --- /dev/null +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/SelectFieldService.java @@ -0,0 +1,10 @@ +package com.etl.database.server.service; + +import com.etl.database.common.entity.SelectField; +import com.github.yulichang.base.MPJBaseService; + +import java.util.List; + +public interface SelectFieldService extends MPJBaseService { + List findByNodeId(Integer id); +} diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/TaskService.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/TaskService.java index 3f96987..2ee1c63 100644 --- a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/TaskService.java +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/TaskService.java @@ -1,5 +1,6 @@ package com.etl.database.server.service; +import com.etl.common.result.Result; import com.etl.database.common.entity.Task; import com.github.yulichang.base.MPJBaseService; @@ -15,4 +16,6 @@ public interface TaskService extends MPJBaseService { void deleteTask(Long id); Task findTaskById(Long id); + + Result executeTask(Integer taskId); } diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/CodeTypeServiceImpl.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/CodeTypeServiceImpl.java new file mode 100644 index 0000000..8f44ea7 --- /dev/null +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/CodeTypeServiceImpl.java @@ -0,0 +1,27 @@ +package com.etl.database.server.service.impl; + +import com.etl.database.common.entity.CodeType; +import com.etl.database.common.entity.File; +import com.etl.database.common.entity.Task; +import com.etl.database.server.mapper.CodeTypeMapper; +import com.etl.database.server.service.CodeTypeService; +import com.github.yulichang.base.MPJBaseServiceImpl; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@Slf4j +public class CodeTypeServiceImpl extends MPJBaseServiceImpl implements CodeTypeService { + @Autowired + private CodeTypeMapper codeTypeMapper; + @Override + public List findCodeType() { + MPJLambdaWrapper taskMPJLambdaWrapper = new MPJLambdaWrapper() + .selectAll(CodeType.class); + return codeTypeMapper.selectJoinList(CodeType.class, taskMPJLambdaWrapper); + } +} diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/DataSouceServiceImpl.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/DataSouceServiceImpl.java index 3d1685e..c974f21 100644 --- a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/DataSouceServiceImpl.java +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/DataSouceServiceImpl.java @@ -71,4 +71,10 @@ public class DataSouceServiceImpl extends MPJBaseServiceImpl implements FileService { + + @Autowired + private FileMapper fileMapper; @Value("${file.path}") String filePath; - @Override - public void createFile() { - // 指定文件夹路径 - String folderPath = filePath; + @Value("${file.name}") + String fileName; + @Override + public String createFile() { + // 指定文件夹路径 + String folderPath = filePath + fileName; // 创建File对象 java.io.File folder = new java.io.File(folderPath); - // 创建文件夹 if (!folder.exists()) { if (folder.mkdirs()) { @@ -35,5 +47,19 @@ public class FileServiceImpl extends MPJBaseServiceImpl implem } else { log.info("文件夹已存在!"); } + return folderPath; + } + + @Override + public List fileList(FileReq fileReq) { + MPJLambdaWrapper taskMPJLambdaWrapper = new MPJLambdaWrapper() + .selectAll(File.class); + if (fileReq.getFilePath() != null && !fileReq.getFilePath().isEmpty()) { + taskMPJLambdaWrapper.like(File::getFilePath, fileReq.getFilePath()); + } + Page page = new Page<>(fileReq.getPageNum(), fileReq.getPageSize()); + IPage dataSourceReqIPage = fileMapper.selectJoinPage(page, File.class, taskMPJLambdaWrapper); + List records = dataSourceReqIPage.getRecords(); + return fileMapper.selectJoinList(File.class, taskMPJLambdaWrapper); } } diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/MysqlServiceImpl.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/MysqlServiceImpl.java index c9ed6cf..7025aaf 100644 --- a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/MysqlServiceImpl.java +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/MysqlServiceImpl.java @@ -28,8 +28,10 @@ import java.util.*; public class MysqlServiceImpl extends MPJBaseServiceImpl implements MysqlService { @Autowired private MysqlMapper mysqlMapper; + /** * 测试连接mysql + * * @param druidReq * @return */ @@ -50,6 +52,7 @@ public class MysqlServiceImpl extends MPJBaseServiceImpl findDatabaseTable(DruidReq druidReq) { List tableNames = new ArrayList<>(); @@ -100,12 +104,7 @@ public class MysqlServiceImpl extends MPJBaseServiceImpl findDatabaseTableField(DruidReq druidReq) { - if (StringUtils.isNull(druidReq.getDatabaseName())) { - throw new RuntimeException("请选择数据库"); - } - if (StringUtils.isNull(druidReq.getTableName())) { - throw new RuntimeException("请选择表"); - } + checkDruidReq(druidReq); List columnInfos = new ArrayList<>(); Connection connection = null; PreparedStatement preparedStatement = null; @@ -141,7 +140,8 @@ public class MysqlServiceImpl extends MPJBaseServiceImpl> findDatabaseTableFieldPrice(DruidReq druidReq) { List> results = new ArrayList<>(); @@ -268,7 +277,6 @@ public class MysqlServiceImpl extends MPJBaseServiceImpl implements NodeService { + @Autowired + private NodeMapper nodeMapper; + @Override + public void addNode(Node node) { + nodeMapper.insert(node); + } + + @Override + public List findByTaskId(Integer taskId) { + MPJLambdaWrapper nodeMPJLambdaWrapper = new MPJLambdaWrapper() + .selectAll(Node.class) + .eq(Node::getTaskId,taskId); + List nodes = this.selectJoinList(Node.class, nodeMPJLambdaWrapper); + return nodes; + } +} diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/RuleServiceImpl.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/RuleServiceImpl.java index 9d21ed1..832eea1 100644 --- a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/RuleServiceImpl.java +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/RuleServiceImpl.java @@ -2,6 +2,7 @@ package com.etl.database.server.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.etl.common.result.Result; import com.etl.database.common.entity.*; import com.etl.database.common.entity.req.RuleReq; import com.etl.database.server.mapper.CodeMapper; @@ -23,6 +24,7 @@ public class RuleServiceImpl extends MPJBaseServiceImpl implem @Autowired private CodeMapper codeMapper; + @Override public List findRule(RuleReq ruleReq) { MPJLambdaWrapper ruleMPJLambdaWrapper = new MPJLambdaWrapper<>(); @@ -46,29 +48,30 @@ public class RuleServiceImpl extends MPJBaseServiceImpl implem @Override public void addRule(Rule rule) { - if (rule != null){ + if (rule != null) { ruleMapper.insert(rule); } } @Override public void updateRule(Rule rule) { - if (rule != null){ + if (rule != null) { ruleMapper.updateById(rule); } } @Override public void deleteRule(Long id) { - if (id != null){ + if (id != null) { ruleMapper.deleteById(id); } } @Override public void addCode(Code code) { - if (code != null){ + if (code != null) { codeMapper.insert(code); } } + } diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/RuleTypeServiceImpl.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/RuleTypeServiceImpl.java new file mode 100644 index 0000000..62421b6 --- /dev/null +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/RuleTypeServiceImpl.java @@ -0,0 +1,28 @@ +package com.etl.database.server.service.impl; + +import com.etl.database.common.entity.RuleType; +import com.etl.database.server.mapper.RuleTypeMapper; +import com.etl.database.server.service.RuleTypeService; +import com.github.yulichang.base.MPJBaseServiceImpl; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@Slf4j +public class RuleTypeServiceImpl extends MPJBaseServiceImpl implements RuleTypeService { + @Autowired + private RuleTypeMapper ruleTypeMapper; + + + @Override + public List findRuleType() { + MPJLambdaWrapper LambdaWrapper = new MPJLambdaWrapper() + .selectAll(RuleType.class); + List ruleTypes = ruleTypeMapper.selectJoinList(RuleType.class, LambdaWrapper); + return ruleTypes; + } +} diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/SelectFieldServiceImpl.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/SelectFieldServiceImpl.java new file mode 100644 index 0000000..aab9fe8 --- /dev/null +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/SelectFieldServiceImpl.java @@ -0,0 +1,29 @@ +package com.etl.database.server.service.impl; + +import com.etl.database.common.entity.Node; +import com.etl.database.common.entity.SelectField; +import com.etl.database.server.mapper.SelectFieldMapper; +import com.etl.database.server.service.SelectFieldService; +import com.github.yulichang.base.MPJBaseServiceImpl; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@Slf4j +public class SelectFieldServiceImpl extends MPJBaseServiceImpl implements SelectFieldService { + @Autowired + private SelectFieldMapper selectFieldMapper; + @Override + public List findByNodeId(Integer id) { + MPJLambdaWrapper selectFieldMPJLambdaWrapper = new MPJLambdaWrapper() + .selectAll(SelectField.class) + .leftJoin(Node.class, Node::getId, SelectField::getNodeId) + .eq(Node::getId, id); + List selectFields = selectFieldMapper.selectJoinList(SelectField.class, selectFieldMPJLambdaWrapper); + return selectFields; + } +} diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/TaskServiceImpl.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/TaskServiceImpl.java index 55244e9..e018f28 100644 --- a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/TaskServiceImpl.java +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/TaskServiceImpl.java @@ -1,16 +1,36 @@ package com.etl.database.server.service.impl; +import com.etl.common.result.Result; +import com.etl.database.common.entity.DataSources; +import com.etl.database.common.entity.Node; +import com.etl.database.common.entity.SelectField; import com.etl.database.common.entity.Task; import com.etl.database.server.mapper.TaskMapper; +import com.etl.database.server.service.DataSouceService; +import com.etl.database.server.service.NodeService; +import com.etl.database.server.service.SelectFieldService; import com.etl.database.server.service.TaskService; import com.github.yulichang.base.MPJBaseServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; +import groovy.lang.Binding; +import groovy.lang.GroovyShell; +import groovy.lang.Script; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.io.File; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; -import java.util.List; @Service @Slf4j @@ -18,6 +38,15 @@ public class TaskServiceImpl extends MPJBaseServiceImpl implem @Autowired private TaskMapper taskMapper; + @Autowired + private NodeService nodeService; + + @Autowired + private DataSouceService dataSourceService; + + @Autowired + private SelectFieldService selectFieldService; + @Override public List findTask() { MPJLambdaWrapper taskMPJLambdaWrapper = new MPJLambdaWrapper() @@ -44,4 +73,154 @@ public class TaskServiceImpl extends MPJBaseServiceImpl implem public Task findTaskById(Long id) { return taskMapper.selectById(id); } + + @Override + public Result executeTask(Integer taskId) { + try { + // 根据任务id查询所有节点 + List nodes = nodeService.findByTaskId(taskId); + if (nodes == null || nodes.isEmpty()) { + return Result.error("该任务没有节点"); + } + + // 筛选输入节点 + List inputNodes = nodes.stream().filter(node -> node.getType() == 1).collect(Collectors.toList()); + if (inputNodes == null || inputNodes.isEmpty()) { + return Result.error("该任务没有输入节点"); + } + + // 查询输入节点的数据源 + DataSources dataSource = dataSourceService.findById(inputNodes.get(0).getDataSourceId()); + if (dataSource == null) { + return Result.error("输入节点的数据源不存在"); + } + // 通过节点获取所有选择字段以及对应的规则id + List selectFields = selectFieldService.findByNodeId(inputNodes.get(0).getId()); + if (selectFields.size() == 0 || CollectionUtils.isEmpty(selectFields)) { + return Result.error("该任务没有选择字段"); + } + // 创建数据源 + javax.sql.DataSource dataSource1 = createDataSource(dataSource); + JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource1); + + // 查询输入节点表的字段名 + String sql = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?"; + List columnNames = jdbcTemplate.query(sql, new Object[]{dataSource.getDatabaseName(), inputNodes.get(0).getTableName()}, new RowMapper() { + @Override + public String mapRow(ResultSet rs, int rowNum) throws SQLException { + return rs.getString("COLUMN_NAME"); + } + }); + if (columnNames.isEmpty()) { + return Result.error("输入节点表没有字段"); + } + + // 获取输出节点 + List outputNodes = nodes.stream().filter(node -> node.getType() == 2).collect(Collectors.toList()); + if (outputNodes == null || outputNodes.isEmpty()) { + return Result.error("该任务没有输出节点"); + } + + DataSources dataSource2 = dataSourceService.findById(outputNodes.get(0).getDataSourceId()); + if (dataSource2 == null) { + return Result.error("输出节点的数据源不存在"); + } + + // 创建新的数据源 + javax.sql.DataSource newDataSource = createDataSource(dataSource2); + JdbcTemplate newJdbcTemplate = new JdbcTemplate(newDataSource); + + ArrayList> maps = new ArrayList<>(); + String groovyScript = getGroovyScriptContent(); + + // 创建Binding对象 + Binding binding = new Binding(); + + // 对于每个字段,执行Groovy脚本 + for (int i = 0; i < columnNames.size(); i++) { + String columnName = columnNames.get(i); + if (selectFields.stream().anyMatch(selectField -> selectField.getFieldName().equals(columnName))) { + // 获取字段值 + String sql1 = "SELECT " + columnName + " FROM " + inputNodes.get(0).getTableName(); + List values = jdbcTemplate.queryForList(sql1, String.class); + + // 将values绑定到脚本中 + binding.setVariable("values", values); + + // 创建GroovyShell实例,并传入Binding对象 + GroovyShell shell = new GroovyShell(binding); + + // 执行Groovy脚本,脚本应该返回处理后的values + List newValues = (List) shell.evaluate(groovyScript); + + HashMap map = new HashMap<>(); + map.put(columnName, newValues); + maps.add(map); + } + } + // 获取最大数据长度 + int maxDataSize = maps.stream() + .map(map -> map.values().stream() + .filter(val -> val instanceof List) + .map(val -> ((List) val).size()) + .max(Integer::compare) + .orElse(0)) + .max(Integer::compare) + .orElse(0); + + // 循环处理数据 + for (int i = 0; i < maxDataSize; i++) { + System.out.println("Processing data at index: " + i); + StringBuilder columnNames1 = new StringBuilder(); + StringBuilder values = new StringBuilder(); + + // 输出当前maps中的数据 + System.out.println("Data in maps: " + maps); + + for (Map map : maps) { + for (Map.Entry entry : map.entrySet()) { + String key = entry.getKey(); + Object value = entry.getValue(); + + if (value instanceof List) { + List listValue = (List) value; + if (listValue.size() > i) { + columnNames1.append(key).append(","); + values.append("'").append(listValue.get(i)).append("',"); + } + } + } + } + + if (columnNames1.length() > 0) { + String insertSql = "INSERT INTO " + outputNodes.get(0).getTableName() + " (" + columnNames1.substring(0, columnNames1.length() - 1) + ") VALUES (" + values.substring(0, values.length() - 1) + ")"; + System.out.println("Inserting data: " + insertSql); + newJdbcTemplate.update(insertSql); + } else { + System.out.println("No data to insert for index " + i); + } + } + + System.out.println("数据插入成功"); + } catch (Exception e) { + return Result.error("执行任务失败:" + e.getMessage()); + } + return Result.success(); + } + + private String getGroovyScriptContent() { + // 这里应该从某个地方获取Groovy脚本的内容 + return "values.collect { it + 'abcd' }"; + } + + private javax.sql.DataSource createDataSource(DataSources dataSource) { + // 使用DriverManagerDataSource创建数据源 + DriverManagerDataSource dataSource1 = new DriverManagerDataSource(); + // 设置数据源的驱动类名、URL、用户名和密码 + dataSource1.setDriverClassName("com.mysql.cj.jdbc.Driver"); + dataSource1.setUrl("jdbc:mysql://" + dataSource.getLinkAddress() + ":" + dataSource.getPort() + "/" + dataSource.getDatabaseName()); + dataSource1.setUsername(dataSource.getUsername()); + dataSource1.setPassword(dataSource.getPassword()); + return dataSource1; + } } diff --git a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/TaskWeightServiceImpl.java b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/TaskWeightServiceImpl.java index 2133ef8..b0de8bf 100644 --- a/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/TaskWeightServiceImpl.java +++ b/etl-database/etl-database-server/src/main/java/com/etl/database/server/service/impl/TaskWeightServiceImpl.java @@ -1,12 +1,8 @@ package com.etl.database.server.service.impl; import com.etl.common.result.Result; -import com.etl.database.common.entity.DataSourceType; -import com.etl.database.common.entity.DataSources; import com.etl.database.common.entity.TaskWeight; -import com.etl.database.server.mapper.DataSourceMapper; import com.etl.database.server.mapper.TaskWeightMapper; -import com.etl.database.server.service.DataSouceService; import com.etl.database.server.service.TaskWeightService; import com.github.yulichang.base.MPJBaseServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; diff --git a/etl-database/etl-database-server/src/main/resources/bootstrap.yml b/etl-database/etl-database-server/src/main/resources/bootstrap.yml index 18d2451..d95858c 100644 --- a/etl-database/etl-database-server/src/main/resources/bootstrap.yml +++ b/etl-database/etl-database-server/src/main/resources/bootstrap.yml @@ -38,4 +38,5 @@ mybatis-plus: mapper-locations: classpath:/mapper/*mapper.xml typeAliasesPackage: com.etl.database.common.entity file: - path: "D:\\newFiles" + path: "D:\\" + name: "美美子新创建的文件" diff --git a/etl-database/etl-database-server/src/main/resources/bpmn.bpmn20.xml b/etl-database/etl-database-server/src/main/resources/bpmn.bpmn20.xml new file mode 100644 index 0000000..171a4e1 --- /dev/null +++ b/etl-database/etl-database-server/src/main/resources/bpmn.bpmn20.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/etl-database/etl-database-server/src/main/resources/diagram.png b/etl-database/etl-database-server/src/main/resources/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..b3fa5f4282dde1b97e7925bfc634d2fee3471a0f GIT binary patch literal 14702 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 H5&Ay>`f`VZ literal 0 HcmV?d00001 diff --git a/etl-database/etl-database-server/src/test/java/com/etl/database/server/EtlDatabaseServerApplicationTests.java b/etl-database/etl-database-server/src/test/java/com/etl/database/server/EtlDatabaseServerApplicationTests.java index d281749..04ac55d 100644 --- a/etl-database/etl-database-server/src/test/java/com/etl/database/server/EtlDatabaseServerApplicationTests.java +++ b/etl-database/etl-database-server/src/test/java/com/etl/database/server/EtlDatabaseServerApplicationTests.java @@ -1,5 +1,7 @@ package com.etl.database.server; +import groovy.lang.GroovyShell; +import groovy.lang.Script; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @@ -10,5 +12,18 @@ class EtlDatabaseServerApplicationTests { void contextLoads() { } + public static void main(String[] args) { + //创建GroovyShell + GroovyShell groovyShell = new GroovyShell(); + //装载解析脚本代码 + Script script = groovyShell.parse("package groovy\n" + + "\n" + + "def HelloWorld(){\n" + + " println \"hello world\"\n" + + "}"); + //执行 + script.invokeMethod("HelloWorld", null); + } + } diff --git a/etl-database/etl-database-server/target/classes/bootstrap.yml b/etl-database/etl-database-server/target/classes/bootstrap.yml index 18d2451..d95858c 100644 --- a/etl-database/etl-database-server/target/classes/bootstrap.yml +++ b/etl-database/etl-database-server/target/classes/bootstrap.yml @@ -38,4 +38,5 @@ mybatis-plus: mapper-locations: classpath:/mapper/*mapper.xml typeAliasesPackage: com.etl.database.common.entity file: - path: "D:\\newFiles" + path: "D:\\" + name: "美美子新创建的文件" diff --git a/etl-database/etl-database-server/target/classes/bpmn.bpmn20.xml b/etl-database/etl-database-server/target/classes/bpmn.bpmn20.xml new file mode 100644 index 0000000..171a4e1 --- /dev/null +++ b/etl-database/etl-database-server/target/classes/bpmn.bpmn20.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/controller/CodeTypeController.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/controller/CodeTypeController.class new file mode 100644 index 0000000000000000000000000000000000000000..b368e71b4f1af57900c0b07ff2c5686293aa28e2 GIT binary patch literal 1259 zcmb7DTTc@~6h2c*E2UgSEux6vwSX|uXf!DyX-G^=Ry06Jj8C)Mp$=|$>dq_;k3ReE zqwyz5V&XOa0RM;KUl_mLZd*{%@X-Bw&iT&$%=e$4zY)=G;swglr2*=v%Y$@9pyjwZ0Ybhcclmn-x8kH;Vu_l2VRY=ZmCe# z5H`1@0%eyO^_6Eg8D-2Btd&1uop^D{HnYGUp(%(I@9Zv@~ z)V`0-IvuTaRmfi4QbDa_VKiNy?S{gH8am*iG?8!lS_1IM`pQ^Fqt3S25j?WW=MFTm zlnz&jai>*Qe&a56b9ASlCX<-3-R+iISw`5u&$cC9?xOaCV_lOkB5CYH(QIN5aP8j_ zeuUW#@xyHv)^!wm^1g}(JKkx(H<-n^x8r3tw&#w_1Kdjwh|#2@G&e0#uVV|nD=@s; zRG?<9sAGqt`(I!0zkRvC_vOc%R}0n04~jHM#UkbDM4sk~G)D7zx>2MBT4Z$RsPp~j zzL6wZnlFMnf8=gU4~s;h$9f64L>$Q<%b)CoNjG`uY#8ND lJPbUG-^5d5hR(tFJhT~_OsrGLaRG9VF+~@_o=(^^zW{_{S)~8~ literal 0 HcmV?d00001 diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/controller/FileController.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/controller/FileController.class index e35e332bc7039f46fadc6959a15a7638113abbc3..b36a94a3518168fb03a450d84684ca7ef12c7240 100644 GIT binary patch literal 1884 zcmb7E%W@k<6g{nnCzb|m65}Mq#Bm-VztZG|12zVeD%dF4Wv9Gh)f%JCc_RbnaJ2>fnsfXQ=oJ&ZnC(Mx{35x-F8DK4-~TroUX@#3O7|^oZj0k z*=@u0w~mAo#F0(nFeEC6=3ZZA=1P!gWwqNExKx|&2O%%*IFgA@yP=iqnV|hCN8g&V z+pd_0YDdXXMJ>5u9crGxnuJ~5kPQc$KU_^<4*#Y50Al`a_w$)a%djzobeuwylivmXYcgDaNM)~)11H6UP)C8|)j8@M1OKJtmk(pmnc!DBl zc=ivJe&$vlrji|BVE&0L)Oc>*3spfGZ)2Q6TzykKJIn9f*AOYr;~h$k3-o-K7Uxo2 zq?p7d0&uyTG%Zq&y4~Ppu4Clbn@!G4_(~2#%jRKj z2H`Ea={4~l$AV+u)5bf-o&!3D<)7K^G86(F}HHCo+KNE|+ui@kDsk9{IBJd$4C>BkaN3Ms5={o22z l@;50SRcU@%Z{-|wCDMwF)7|>yJ_+mcf5Zko(VI2B^#dT_9+3b5 diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/controller/NodeController.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/controller/NodeController.class new file mode 100644 index 0000000000000000000000000000000000000000..4c17692c84f36ad8ed3ee582533f3164585f8615 GIT binary patch literal 1362 zcmb7E-A)rh6#k~PT__b06h#pMMGFWc{zMauNhOk)R3JdO@oIK=D1+Obx;sn5Etfux zCMJp(K7cQxPhmW>)MAyQ+|0LU&N<(i^S57reEtI90qzx$$5an;xYdi>C>1b`83(ft z?lAO*+Ls$L+Ebonn5%fY#-$0kFN|=FfK=&z_yt|T>AMw^17F$`9;CxR^zDJwTGvt~z8`1>7G@pNb+9R!q>&1R`3 zQe;Q?zP)64UizDWic`}emz1;FPn{R1TUJeFB;zD7d_4tX%!Vo5RLiba*%R10Rjnai z?yAuLyyO}udQxuGEBC2 zdQI4l8X2{<{NY)nJk$O@#VBm(B=Y34vP~UoZ_50x*b`@~OKjSDn&U?;7_BJHHO>>(*nSRl+0Qkm#HM-nGwgt?iIVDD3PADz}17(zdt)|3n|fb)d3#B|@4 zIxiDhhVJ@iJ|HuDh^`DiA^VPQGO#R#R69a=C1n~uvTibwA1>e`G1}){CbarXufSrG pMhGSOUBxJA9s9~_De+i(UQeCI=po}I50m!DaRQU{eIq5g`4h*Ad{6)Y literal 0 HcmV?d00001 diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/controller/RedisController.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/controller/RedisController.class index e4a7f92f0e95894b630f715a5c641eae9315fa94..793f02d584707d746b43761615f485877d23b275 100644 GIT binary patch delta 17 YcmbO&Fk4_lFgvRP12==>BY6__W=9SZ>D1`+rG delta 75 zcmew)_DO8R3=T%o$ul|JS*01c8Du6u<(SH<#K6U%Jh`5;l2sGP(gLznCo6G9=Mm!o diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/controller/RuleTypeController.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/controller/RuleTypeController.class new file mode 100644 index 0000000000000000000000000000000000000000..6f8f16d319ae589d6ab718dca3139d16c3547f40 GIT binary patch literal 1393 zcmah}-A+?M5S}fil~OFCf+!-WXaQk`U^FQqX-G6CM=?N1j91&!r7oVHQ}^tl;ob`q zpTHYUOpKRGV&Y%o1Na^&PhtGdp+8hxyxG~Eo%v?wo7w&G`|EciTA=w9C1|3Dy6H+U zU8QV_CTS{3(@DCMuJ2Ujn$+9MmW<{s+beTv99|Sg6ofCik2|R&0TaI3>XKtL zyc)PhmF0%=Rl$*Y*Y%7r%5!~2w=7SWxL?uAEp2L1mQ_zb;RPvNpKl7=czTD6h6B$B z#;YnVi-1imDp#2$MqSy-4My>0uZRRQmU89&pj?o8T_75x0n4+6vmvw!&oyP-JXQ#Q zvtv27=Nj!f4l1ixwA@f3dU{j2#rh4SvFv063JjG!muu+z$8rl)0O872L|wxy3c=d%aShmy$sXW(fZe@X&>45L`c z2V@UU3CI*=3=&jf?Zb&fGRW?!PsDbk>*H8MV*-g8tf46ksGm+iq98g6kkI)dPBF;L z)JKYap)N+&^k<5HfU1i^m{fE<40$$!8ayzsL8SnCicSM$5Vm2M1I-Y2Va7wSK7;-6 lBVs-f&V_rQMxZ{A>llqjW}^sp0q3!X={Q}){!-+2`48--j|>0+ literal 0 HcmV?d00001 diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/controller/TaskController.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/controller/TaskController.class index 25a1771961eb3796957f287e5e012811b5057b3e..8f39f8dbad3f0e8b982b8962eca746775631384d 100644 GIT binary patch delta 1062 zcmbVK>rT^P7=FI8wxR9jVLFEBCg5Qk%0O_46+skqf({jrs7a&E5)Z_%N&L5KFuehP z`V*pwVvHBy1#koY^CFDT*RCx>OpJftL;HTu^Sp=6%+Kuf_g`PW0T{(&0~W4y!bH`? zRm>Tf$2A#Umr+ed3)0+>=B6~abS&z)y*}|??K9ms?vvL|chPA)7Z@qbKXX={@(X9V zUal@T-MYKty;Af2wt&`TN%g5fdS?xPSG=!@qW4bIwFPIzd1-q;)Xnid*lQt)l#V+V zvbd|`o`w5(V4)XFGU~Q4AfrJ%v@nK87Hpgo7=ByJeo*x}(K6W_AfQMX`d!R4`rY(8 zJsD`z%*ynFUM+osSZAPMAFV6~qy4m2P=E}&mtj+eU4F$oRSK~9ZxA2?Mu1!qfJT=SP kmNy>r+A-avzq2XdUhqqEB%Wq|kxwr97dOL&hu3%cHzI~+ApigX delta 827 zcmb7?NlpS$5QhJ5g_fp4MFkXPZ~$cxLBtUUR8*YBA7PKl*;E=Gbz=ItLy9)MDQV_&GQ(gs8rV=<%kj3HM zwR9$&G9(~CWVvLWz2xr=OQmjRv>GMK0v6D5YeUw0qyjGO7H-5z)hY&ZFtcD zmwIgTUshv%HL(sowv*TE;&=~L_EC2C34}6w;Agsw0GS{{Xyn}#C`hCvXY?Lo>p5-rL4)YM2^k=c~ E4JT4RX#fBK diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/mapper/NodeMapper.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/mapper/NodeMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..f0f9d4d1bbf2b609737bdbbd771818ca9b4c8020 GIT binary patch literal 386 zcma)2u};H44D}UAXaT{>7a)X$7q%iK7#L6rsFm0+sY$OS=g8+2<<}Va06q$FNhg>X z>?irze$W2;{`drdD>zDFlEOg>hX%$AS9+_hkbyi~+l|G_`Vyb=H5EF|3a+tqx@vRm z+R7EHp3H3^oIO9>MV#5DA-NtJNh@4hwF4g~YxYQ9op$)hOPbzH4NMl?Nz(vMVVrazq@>Oh2?<{W^l!REjhHy>|2d6Au z6guy%|8f*aHY8XNjt56uX#*#J4>xf3&&v}721YS<;%_15-IzzP2g!gb>_# D{ycVH literal 0 HcmV?d00001 diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/mapper/SelectFieldMapper.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/mapper/SelectFieldMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..b0d469399a5f6684b2d71f0fe05a2a7ae925ab0b GIT binary patch literal 407 zcma)&u};H442FFL5?VlFLgEP+kT3&V5E2X>P%BU)v0qY?x?Jv}JEthG#=rycP>4&q z6efoAKm2F=^Z)hz@d*GoaFW6#g`*UX6^wJPtd`c30-mk)Mx)WT!lz$F1*7=(V&D+#eyk%nfMn1V L4x=W~9|QaV0bYKt literal 0 HcmV?d00001 diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/service/CodeTypeService.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/service/CodeTypeService.class new file mode 100644 index 0000000000000000000000000000000000000000..5763430a75036e6b3e99fe94e06c843823904738 GIT binary patch literal 433 zcmb7>!A`?442JD7RyGDgh=&*#eBoB$01^jO1X6i{G&NnOEJbZHsjtR?2jHO)PPZWt z7dTjn9sB>kB<~-uZvb!(hY9Q_Fiqe9Vft)bc~h7C)V(mm@$58PsFkANjit=AK1CSk zrgF-MMj9@EHC$x6UJ`ptrShs!Et3?MwIg=k_>Q*f>6K_zYk8|&MGwV-wNLx`%J_LG zs0-HUc|7ce?jP^2MKI@PWi`FG0YygSGdbbDTzB2g)RBnRz literal 0 HcmV?d00001 diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/service/DataSouceService.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/service/DataSouceService.class index 00fa837aedb66ceac3af9cdec117a68fb9679aa2..e0cae328d32333293da77f567857f474e7be4821 100644 GIT binary patch delta 104 zcmeBYea0$$>ff$?3=9k=3?l3dg6s@J>HGHxX%M$f- z67$maJ@ZOZ(^HGAH79p7>TGsklwo9KogB-gAjQJSz|Ft|G>VCV7fkXo@Plaq09Rxc A00000 delta 58 zcmaFH+RrL{>ff$?3=9k=3_|P-{Ok+@> GB0K<^1Tzl+ delta 86 zcmZ3;a)!z1)W2Q(7#J8#7&%G$#Ok@DP{) diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/service/NodeService.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/service/NodeService.class new file mode 100644 index 0000000000000000000000000000000000000000..3de6253a4c49c4322f7dafd1b460895fae575a81 GIT binary patch literal 516 zcma)3%}T>S5dOB-#@4ER2_Z#rFWw>^dJrnn79!p^yKA~N-9WM_lR+In6;Ey!M?%e|4hKg%R3>Qd@Qlaqs) zkK?%F*869;`4?bC6uRWT5mTGsafBB9hSo`@8~6o%G>;e<22>|>(ZP^mh*N<22mzsI O9>tiddrffOBGUtZnw$av literal 0 HcmV?d00001 diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/service/RuleTypeService.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/service/RuleTypeService.class new file mode 100644 index 0000000000000000000000000000000000000000..5a4b2109018e8bd5b694d59d9cb16157cfc04b9d GIT binary patch literal 433 zcmb7>!A`?442JD7RyM|j5Dzgf_`kBp;t|?*MQClLQVE7$ zDV_46mWHc84VRg&mc-uDOnFtPhDi#`$`Lznd`nyP^jfsawY*iXq=#a`+Na%oY5Y7C z)COzxJRWvJ_m6isBA9c%GMaaD8s$}}HQyR5*r!{FjnsL(Btj(pjoyeA*Ay3V{AS;b rAslzF^8+7Y8b$uYKR`g}N$kltU>~6m`;rYL>p>#1-W|ZOtBk$?-;jfd literal 0 HcmV?d00001 diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/service/SelectFieldService.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/service/SelectFieldService.class new file mode 100644 index 0000000000000000000000000000000000000000..ebedb094531a6dc5812e0056d8b98615083d9628 GIT binary patch literal 483 zcmb7B%}T>S5T2>Ev9*dfpFpS=7sOk{Ll1>Ys=_|OW_L_CY&Vc>3VAgTK7bD;PLhHF zFZD3&&bQ3>GyC=Z@d*GAa2dgQ1oH?k5a#dJn`QG-7+M>In?;hVy%J9OOssvNjLP`7 z$Le66NNg2igsHTdSD`KmK^`;nnCN0BC^%tMP^qd&Ft97UARlaKgd|5gtSmVbKe0kS zF!Gw_{1$fyJ7o3) D12mO{ literal 0 HcmV?d00001 diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/service/TaskService.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/service/TaskService.class index d8643874087f9b07a6979a3c9fcbaeb778e285da..41904fdd96bd9891f7eb3bdb2d57a71ad6d655dc 100644 GIT binary patch delta 131 zcmaFOvYl1<)W2Q(7#J8#7{u8bMA#Wb*%`z(3QI6La;H|LCYP3^h9nkeGcp)!_+%xP zCFZg|E=mY88{5<`l)Z)^d68#`BwOE6Zk&$h(CX;~_ W3nK$Rg8$n(0sxMm3Hbm3 diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/CodeTypeServiceImpl.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/CodeTypeServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..f74f31848c66ffc78cdff1974219ffb27e70f4fd GIT binary patch literal 1850 zcmb7F>rN9v6h6};rDZ{>3WE20i@2_EK_R{RmN_Z=cMnw}J zz=tw^vs)VJ7R3ITvvcOmcg{EG(qF&7|0JSWTBy($rqy4k`W_rJE6~| z_IOih(GaoZv5el!i2JDpf3oKSAjV%OfmXg;Rk3P#aw!NxEwl=Qn9*G3vlXepU5kV- zx58+XH>3z+z9t+UM%!F;F7Ty9hg&L=O~Cdqs6gpOL|?0~GU_va86CA%AYUeaLq;nC z-cnkQ@K!~n%)YJc)9VWEAMQ)Wa8i!s%5QlcO3Rt@8FUE1T2n!Dmo5C%>h^|sFLFsk*e>{!c4h8pSP zyO0(grxT2(Of z;CZM5)6tAx<)i2wgbI*qj4&CSb~Yt#KoD|nMvQfj-KW{$1ASNOY!WlNns;2!4{W-K zxjsl3P8jO6(&(3N(t<7!%CLuv(b` zouYB<7{E`%%3NLtSOIe42Nm9arDC=33mvg1KU06T@5T<5iu3`e#T0QEl7LqR&Jd6c z@@RIujXVVX89ECO=Wu4cW}5T(x&TcfrFf|m`bFr?uUsAYM&(abG2vrgV$H%Ify)cn Q73eZuN#)hfOI#!R15Sn(Z~y=R literal 0 HcmV?d00001 diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/DataSouceServiceImpl.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/DataSouceServiceImpl.class index 3dc29cf830cd591b41f4b24d757beb59c3e0f2b0..cebf11d5abb2e3fefd0f98844d9fe9206dd8f1bc 100644 GIT binary patch delta 2198 zcma)630PEB6#nm<%WSNfTxKE-LIuful1_N=w4G&e2@OwbcuK;j zHLTIFR>E~U0$48>eMUozw5=L8XxONsO@=nf;aLp}bv%bwNj7WPBJEZU+oavDp-I~3 zHJsV5VZMePDqhg=qK^J}NyW=Lc4C(-^A#1lRlFKVWwXs}USNsE!_u`W)wPv_8%rt~ z2K6kR>YeTN)Oc&FJSDXazA9gRK`*g~yRv2$Fz`xmgSULftoq45nVoQoWCs02lGtvY z$Myt@R1dQb#|VZ@F;R7hCau`I7q2noh>F-8VZ*85D+f6a;V{RSGCUk#ah!`{6<>3FgKt%Q$MHRWQ1K(j5&Xn)8GaUNdYbkNe&zU$ z$S^(4^gI3#)AUpi$DcT=;uyzqv~zUeFoUDY*H9Gg(%8m2-$?ItA7@}p1oW(QrqJrl zL?tsbXBM6$dy*1Tyy_0Huq9ZnOoiU#!Cveu8IXPP7?%HI-Hp*cGRkSQ2mnDmR39DF& zXzX0-A4qqNVF+E4WLXj&o+2AdzF~x|WJ}0uWa&Ggv6PsHEF)`iwSuiBprDLKnG7Uh zB#k_jfb%el7{h3cp^+xD3d*yRZ|No|<6A|MV<{^W`yDxcIc-2F6rM&&D92cus9`b2 z;e1-C5vjNU7t$TS5%Cz0i(tm>H0xqafCZP3hKoF*{EBG)#AyDd(R?rEPon%7C`VDM z#$s}3TB#B~S*Tc%=q{I=GALi}*oHo|USBxSFSx-pQUp?>m8M_{s%WMScKY_JX=SNR zEjbE@?AFwZqow3AhMHrKHph;7 z%p|!uN^GDuDfEHQ!tBrj%4m|O1r)QZ1wBfY!i*O56#bkTy?eF5)eMiRa5Y>R2Dyo) zn~8PJFx)|wU?CQlVPp~$i<~|Dy|tBWI_Y?fJ}v0m%)ErpGWrGaIKo-R*+E=FINQhx z;zGi?MqUv2ZG#G|A&*q*MmD09L^z^kBOF#j2jOfZU(Uu6KasE$4z|$&M5Hj3B4H`y z5e`cslW;^Top40TK{(ea2+GE^(Q!tV7E>gmw199#X%1n3L~0t5h}1;F5vlUON&Ww# zf}O%Yiqfg5P3S+~C~U=mEp+ZC_el?dBlsx<9|FaUIkH1zz^KPK$;wIdTTf%H{n5Be*x6vDNBDgff{sMF*z<2-v delta 1870 zcma)+cXSk06vlsVOJ;WVr8p3h5XIzhj$jf9NFWpw6hsV0rHFzkF$gLGiVZ}N6;OL3#!fT#DvRl^gl8Laokf+4Vzw(J=DEq?X687|WuA+_$#;wKc_#l> zi`xvj-C+TD7_`u#1&czIa%Y&kxI0W_G50tuVX5Kw+AOnKZuotMudrEZbH9NP*gR_zV%i(Irevauh}hRtCQpZfj!=Cr%kfOkD8xo(EQ8}FE^YO;1_=NO2b8M_|0tc zyJ_kVO(PA8VCBS#&lkh)gj)Zmdljum8O?RN@a8vePrfZn-=8cedd6~ z*I#gw*b~HBV&${RdZMsGu}W+(uMSlsz(={PCK)m~NmkvIz{#8EmbNO6n6lEQP`pf%7|akUv}ImTWvFa4g*KeV>2hVNNM#tq2{2!( z&R_&V&J>M2@igV1)to=FIlrPg|7^*xl>89BM#`;ZMzxfk&SA7^)Ek{qAbrix$mnJI z%8`1=Ztg3aF`O%TVbWw`&X;|Rk{m!I>E>+4##MI4RMIm4Tjhd-sElKLtd~)lrkA;y z8G{er%LFcr_wp~5G>40rXjJ4Y4U)Hz_wWVsYB{3ZSCU^#J8xK4e#iE;9J!D}f5}Sn z@?D7v%MA!SG~bmZVJ(8fQu5sbVO~vEyGRFniJBmp9o@oOIxSR{f;+oM#qdzUUEHD= zE)(3i6oR}2~H?Y792@PjT4fPst}xz z8uB-(|KC*Xr1(cujx@EFUc=p^>nK?-ljbit;Krr@b>n;iF6I(RFynX_;k^`DTIIcBeD{u@k@)D-bKDEV`xsbsQ< i2=6KP>T0Q*!Axdx4cErm^>LQn6uf~O4+ze0Vt)b^j)m0# diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/FileServiceImpl.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/FileServiceImpl.class index ca1301996735c53bb4d284ffc2d8b1d0d19cef90..eaeab7b97aeeada13c6434ed9e7a977ce7f63675 100644 GIT binary patch literal 5570 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 Kd=MYPhyMo?sgyea delta 634 zcmYk2%TE(g6vlsd#xgVQwA5;$lp+NyN?WN~9zJRXACM@nbR)aQps67k6?I8m7>$W0 z<|ZcU*2IMgMle(;apBUne}Z+ZZjBnx9Sw0Y=QZCw-}jvlg}eUL$KUJkfnlb?#3*|B z>~$ClV^cC=p9%ZT_<&0}BES)sQI|1?gJBMF*x`snd2;V_bG7wit<_j=-GAO{u7BOQ<8a*P1XX>>9T5pj(UgAZ zxOyYp;hpq3#iXLBU)xFjEj*(iMNaFP`1B%uVl0ND9gDPCFSo!bk=b^sB9fExb=;s+ z4xvO)m&COEDoIw7L-_{kjT9E$65E1doQ%}|UjRMqkWSIN`FKf|*(}0D{w>yY6Z=A; z!IrbdRYK3mNospad>JRIVdhi z$uZ7ApeiePAr{1KBP&FOY+yJ>S)l!5WT(ud*uNNb$T{rtJ=s05slG4p1zy5`M|1_p Zh*1C8Zx@Q)GPBqt^d{$nbDHB6;1BziUVQ)n diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/MysqlServiceImpl.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/MysqlServiceImpl.class index ffa4aa98bf2744f8f030ff8efac867e5e6eaecec..a411b25ec8f95066a5d80bddac3cc382e9e577f2 100644 GIT binary patch delta 5340 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 delta 5194 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 diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/NodeServiceImpl.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/NodeServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..7c6baf4aac17967dab0c4edd5413ed631e7f8a4e GIT binary patch literal 3940 zcmbVP`*#%89sk_TV>iQ?ge63gNTECo2{1nJfdOnnL4%t>4GqNydUy9`Gs*1CGBX

4!85QKwJgpV@DXVKVHWi)<^)dYR>7-Ols_b3xL#R}$y!bM0)vH;SG82=SY;W?q70N3D1T1*RyBgK#+QJJy6Mrn z8`@PhX$N-EQNyn5g)+1~HxRf#=2i1;w=(6+sygravsO__H?XE;DfIk#OD-W;!}ZWR zZ~LlDvh4?L*A5R;>i*r60*cwjTWPk6f zifDc8lCtb-&56{Rhz~}&C-bZ~H4Irc>r+j|E^O*66GId4{346Yce z9D^Lh32aY!b~OqDH%)}HG|QZgVm^!W0=a`FC&`+>H+Myp%=GpM zlR6dhO_Zi)%`<+DPHO~9DC$Y4p3bjC1bWz*@ald^9kX>#_oVK0M()#@!CY)wO@dJQ z$_p8V+RmEvkcr(GFtHQ6vbbPk9v21n>YBFZ1fUZdYG7m9n|KD#GDSu_FAPHF(wGXT zy>igij_0~D)76IOyYWH`D}9?DU}73Cns^B>oA@<;lf`dMT*77g&cyF$Fh&8Y`g$@7&JdY&_DhgMLp)jU76CXUtJ zlCHv8ylUc4nnD|EfirL7s^08MhiMXmNwrBwrHR*Y*~IG_Wn+IDV6j9A{4`a!97k28 zGwfIDRhGx27fPz8g%H>>>drAy%3I?g-+Ci;qF$jr_J+Xz2BWVCnr8Jni#JWYg||&? z2NQ6QrqST&RRW*Q?)zA#Vv(-Cq3cAbyPCl6)d(~+OBQe2r9z>$Wh%!P%|FTj2$aKW zFzh%2BWai;jtm0Uji$=2TE-2$gLe(IMq#2<4zqs|FD6|?^_ z6dEN;2jWuw?2K)9+_PQXD+NwA8nC(jY_?mU?-3Q~PN-|6CbC$i)7^L54garFnFZD} ziFMVAi@`WwJ*;TUawiTQS|&FwgX#EX!)Fft->%NprNg${G(a9(N&FE$Ap|y);bOW= zM<-^aOcXN9LN+#)z}DsnX@Pfs7f7n7nu)Rrv)*JIlS;uY(6RT8?1&MEQURN&nmSpAc#3Un=<(F;Vl7A=B?w2P<4oA0 zqMD!3A`OAqOcK`J?}p=llr8*dEM#!2E}(2v8QnQ~c01SYoclSqab{EHILMvFS?JS& z>kyxDk-;908W`xtUXErAfPDl8*LUDfjvD#rgwAM)fiI95{0CYxIDLbL5#4RXI`l?# zdSlpxj;4DT?j|KR3*5syP4OMH@Q)O*{cE(IxsJAc`vS6GAqNaDpyS_Y9UI8E?^%E` zzV}mtwM4@9QYTR74*p-tqYs;KTVxF_{6I`@iRpISi~GoO6Aavs17y36-vbyTt%HQu zLdJK8mhKMo?m^yV@Uw0M!x%}_|CZ2uC@0=hrVFe+>t?-jMH!)_b|$nD33&+qk|te@nF9 z$n~cDt2m@s<&gHc-f zp{2Ock)(ee`7K}KC!b@h_A6U5$CzjrjUF52VWMi|9A65vN4WnBKZ6(_;3NE*CY|8E RoBLD5`z0oE8o$Ds{{t&9aDM;* literal 0 HcmV?d00001 diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/RuleServiceImpl.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/RuleServiceImpl.class index 77904edb66608898c54e4e36a04ae3d07e1a7669..3f633d48f12d4a110b6e936eaab2bce489b61312 100644 GIT binary patch delta 157 zcmZ2(v)pFGX%R-z&1XdT7%k-(I2hy^Oc)dxoEa1uf*6z-QW%sO${17_su)xm8X43W z`WZABrZH$TEMd@Q*u$X1aGF7v;R=J^WMQ!boW=|+K)w77W|Qs3H72u&8*y3zMXZ4$ ywm^|6PDdcm3CME+^28_a6nEzI0E&15MZ7^Gn`I=fvoH!z{vuPyC^ETNb_)P__8;K@ delta 157 zcmZ2(v)pFGX%R+|&1XdT7%gQOI2dFZOc>-CoEhX9f*2GSQWz8&${3Uwsu+|R8W~g= z`We(1rZK29EMd@O*u$X3aGF7z;R=J!WMQ!boQ4c63`Pw63?`H9#Wg0gh#PTQ07Wc; zBGy2WC{BAI&jHAD0`kNs?-Y0DbOVaG14TSRBAaC-uCp)-P5vTN$0$6xSau5lW-TA6 diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/RuleTypeServiceImpl.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/RuleTypeServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..ee16a4a769b85c7020c586392dc7f1ee6a013584 GIT binary patch literal 1962 zcmb7F>rN9v6#k|yl$Ih`6%_9mv_*8hpdvQ|CMJ@_5Fi-+H*JSybi3Qk&Pw>}6KOPF z6Cc2bGM?#{2D(L|P4?{0oZENKH)nqT`SA{;!pd7Y^x<|tIPPR| zH;;R`Z&xO>c#y?IhO`&B3`Hl`ka-%^B*UPieEA}(SEODS z6s-xXD!dJ$mHlolX3UnN@Y4r^v6xgb1)RW1hFkWq9-0IUHxh@tI|~YUgsB1sF_gvQ0;WM2rV_Rt zun#&*Skp|NL!gf@Xj#MZ;Sv3ou$FNw6sqEQf_|y|&I8*M< zqko*yW|a>;5^1Q$2`mN5w{wDFC7DI{B$Q9BrokvfJ1Z=utrJQ)F?mKhhxxO3oDzIj zns~l5j3on?lh*()({0fY8hLb?jM^^IU6Zoir?uns-b=DbGEI_rN6%CA#Yr-fJ>y@& zKGI7H!}PSuAkz_g7GedQ#u@rzyNQEKTyzf*xo5GkS}eo8OU5 zV|n5O?WdbQi^$OX2y*0UfP9V8-}=84`)K(epp?(yd^1i87jThcT_UYvlJVZ<_TCj* syGna0TqE#fZBSOj{&K~>Z^(T@-U4HLfDKZ}*zh`T&|V6qc8$uwU!XlVQ2+n{ literal 0 HcmV?d00001 diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/SelectFieldServiceImpl.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/SelectFieldServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..b1fae92b06f428e44e33a701a926d0aa1cc778be GIT binary patch literal 4366 zcmb_f`*##)8GgP^HoMslBn%Cdq*6jd2?=y6RtsH%BuMPiO-j2+OKWXscfV|g%+4$` zv!SV%dTYI6y;tnLT5I)}YBeZ5$J>vd;~(JhAJOB{sdHzbhApxlW1gdHj5J(cv<*4+=d{7W)90Z zr^Gy!!Ab^C3-s7-O+YWYUd{0Bg}cufMYmRyUS436FKt-~W-Vz~=gdY!dII~46}N84 zz&5I8V3ti^8ouQyVd(^E;fq|ms z$oXcyEWMK^rG>^-O#77SS!x|`_6Ca<#ZPs$N10_+q+!(?cG9X+v|r#hb{z^?J)8FSe*Y}2V31t*ZolY64QW?**en|>P1~w0DpBX6@5bCZ0;OSs9}OOCS7uAmP5Ni0(elyb*C*^yyDtfr zy6YH{;SW}lUd$h+YKPb9a@`F2OIFP>gQmwQm)?)-uUo?Av8p5zEYr50mQgIm1nx=7 zvYcgiNz%CZR5d!*3VR5J2g+xdNi@074&y0sdm{MVI0$Sg1!iT5$rqwFgHH=&4^`|K z_kZaepD-(lgc)XM0<9fvr)5`7-Rlcz`{|g!8dNGJYD26SJ(4TAO|K$nEtRSx?MGCi z-KmmFV7z0k@B`^dHy~_P43wa}hJCnGV4td0?>konCfaISSNv-D3_i;!UV}o_1?Jq0 z>jr+n9G#QFqFeO``tZ3yI0I=sGllu7Q!#8oBSkUk-JTK5+lR;E}G<+N15lC~RP}T5VJg?zOQK!F3plUgM~Y-k$?d2nC@x!G z3e@e#NJgc4+O`E|l0H6ao4(J2(owChwLgcK@k$PTcvaxwczbq|TcS8C2z9PmdB#pj zz5xK`bLhou0!OYXKH;LyT4Zgx5FB?c;^BpM-`uc*H%yqs^ICaN$+H4aM8@8TyAqc| z_q-Cgs~h0DHDLl9BWx)Lsvbn(L>DKv!QNsUM%X4uN_5J&6_@8w=YKFC$iob640C+pk*Mt?Rq; z*{CCqihk6nuWLG6rD8p0K7-dayn&x-Sio5gRS>C(>Kg|v>RqUy88_cVj%f#pjSPOy zNEBUnso7w6S#TWbg+e6*^IS48G0Vu>`%I^5OMfgP%qM^z+nd6SJ$cG85m%hk_els}ht@rT+S{E0TK?gw7fDRm`tZ<6yqj(a)w za%9`Vx51UcQE*I8T!i=)Cn?;;w>k`L!Uy@*q665E4{;^w7%maM*m1#qi9C>8MureaRf*4F@8VBX9$`9U@U`Ku^~77Zxs0dUnmeT zA78`eXy`bgU*GvV-2N`c6gGLI@E!3UL^_V;eI!*rKfVU@`?-FTPmUBn!CUw#vGgF< X+j;6C(v@%$pTH?R9IsB}QMLLXpV$ci literal 0 HcmV?d00001 diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/TaskServiceImpl$1.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/TaskServiceImpl$1.class new file mode 100644 index 0000000000000000000000000000000000000000..96ca55398d39df0e9a9f6c39f08720b86a6ba72d GIT binary patch literal 1306 zcmbVLT~8B16g^XFmu^?775qd+tQt)ua2?6r{=nl0B0Oo6pBzoH*9c+V_1$QL z;az1ii0UCjb}Q&gh8f%S}lQPJ7U;t5a% zXEX-`YciPI=Z+jiZs3OoURH`k&;Hoj{j|H;+BVRz@ER)?Zef;mHHoas4TfS&M7;9RunbFA zoR(oOWwHIiPS?+{I!QM)pFEe&Fe3ehCk!izNaEg_ek6NRtyNR?QHg%wa}~=cQ4#HW zs-lHnN*hb%MI`rRG-8EeaU49M>Js^3fnH<-4AWr6qNal0_$m4oV3GGa-8PV+FJRW{ z-@$4>k@-ee1~=%LqZq)$3_Wj;qEJMMEQ*iONV=Lp`cGr+(5cb$_0rTYWHb0m#yC_E zLoJMgQm8!U2ws=U;|}gp#yz@c$#cKBN$?L6_y*-^c%xRI|AA{4!AE`SxhNz7Pk{(- cp8Od+#H09pOuNxVp5Q5N(#@p29G&#}4|}mnLjV8( literal 0 HcmV?d00001 diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/TaskServiceImpl.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/TaskServiceImpl.class index ad2fee909575ea867a6009aa0d01b494e8040072..a8f46a400282f597639631f69ac7edefdd6c5662 100644 GIT binary patch literal 13043 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 O;*#zHz1hP}Ps1L;#y$}M diff --git a/etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/TaskWeightServiceImpl.class b/etl-database/etl-database-server/target/classes/com/etl/database/server/service/impl/TaskWeightServiceImpl.class index 6aecd574733f730a5a4dd7dadc21f50ed6632377..2d93b0a1a6172d9e84adb5213282e21cd38621d7 100644 GIT binary patch delta 37 tcmbO#FjZiK5<8>dWM%d+UU3Fa1_=gU21y1f2C2zy>;;ShlfSde0RV?12RHx# delta 37 tcmbO#FjZiK5<8>lWM%d+UTFqS1{nrk23ZCv2D!;?>;;S>lfSde0RV`*2T%Y2 diff --git a/etl-database/etl-database-server/target/classes/diagram.png b/etl-database/etl-database-server/target/classes/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..b3fa5f4282dde1b97e7925bfc634d2fee3471a0f GIT binary patch literal 14702 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 H5&Ay>`f`VZ literal 0 HcmV?d00001 diff --git a/etl-database/etl-database-server/target/etl-database-server-1.0-SNAPSHOT.jar b/etl-database/etl-database-server/target/etl-database-server-1.0-SNAPSHOT.jar deleted file mode 100644 index dc72eb2637188b975138a84854130c3ad51fe73b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25797 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 npg|STByz=*52-52zlhBrM7AJ?)L6={Qm$al#} + + + + \ No newline at end of file diff --git a/etl-easycode/etl-easycode.iml b/etl-easycode/etl-easycode.iml new file mode 100644 index 0000000..9e3449c --- /dev/null +++ b/etl-easycode/etl-easycode.iml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/etl-easycode/target/etl-easycode-1.0-SNAPSHOT.jar b/etl-easycode/target/etl-easycode-1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..2fca75c87be60f3c1384a7e2fb479a1bec6c3e2c GIT binary patch literal 8987 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 literal 0 HcmV?d00001 diff --git a/etl-easycode/target/maven-archiver/pom.properties b/etl-easycode/target/maven-archiver/pom.properties new file mode 100644 index 0000000..8d1235c --- /dev/null +++ b/etl-easycode/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Tue Jul 02 20:35:38 CST 2024 +version=1.0-SNAPSHOT +groupId=com.bwie +artifactId=etl-easycode diff --git a/etl-database/etl-database-server/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/etl-easycode/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst similarity index 100% rename from etl-database/etl-database-server/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst rename to etl-easycode/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst diff --git a/etl-easycode/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/etl-easycode/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..3577f0e --- /dev/null +++ b/etl-easycode/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,6 @@ +D:\workspace\ETL\etl-easycode\src\main\java\com\EtlEasycodeApplication.java +D:\workspace\ETL\etl-easycode\src\main\java\com\service\impl\TUserServiceImpl.java +D:\workspace\ETL\etl-easycode\src\main\java\com\entity\TUser.java +D:\workspace\ETL\etl-easycode\src\main\java\com\mapper\TUserDao.java +D:\workspace\ETL\etl-easycode\src\main\java\com\service\TUserService.java +D:\workspace\ETL\etl-easycode\src\main\java\com\controller\TUserController.java diff --git a/etl-easycode/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/etl-easycode/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/etl-easycode/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/etl-easycode/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..235e378 --- /dev/null +++ b/etl-easycode/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -0,0 +1 @@ +D:\workspace\ETL\etl-easycode\src\test\java\com\etl\easycode\EtlEasycodeApplicationTests.java diff --git a/etl-gateway/.gitignore b/etl-gateway/.gitignore deleted file mode 100644 index 549e00a..0000000 --- a/etl-gateway/.gitignore +++ /dev/null @@ -1,33 +0,0 @@ -HELP.md -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/**/target/ -!**/src/test/**/target/ - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ -!**/src/main/**/build/ -!**/src/test/**/build/ - -### VS Code ### -.vscode/ diff --git a/etl-gateway/etl-gateway.iml b/etl-gateway/etl-gateway.iml new file mode 100644 index 0000000..9e3449c --- /dev/null +++ b/etl-gateway/etl-gateway.iml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/etl-gateway/pom.xml b/etl-gateway/pom.xml index 3d93677..2ef021b 100644 --- a/etl-gateway/pom.xml +++ b/etl-gateway/pom.xml @@ -17,6 +17,11 @@ 2021.0.5 + + org.springframework.cloud + spring-cloud-starter-openfeign + 3.1.8 + com.alibaba fastjson diff --git a/etl-gateway/src/main/java/com/etl/gateway/config/FeignConfig.java b/etl-gateway/src/main/java/com/etl/gateway/config/FeignConfig.java new file mode 100644 index 0000000..14e7205 --- /dev/null +++ b/etl-gateway/src/main/java/com/etl/gateway/config/FeignConfig.java @@ -0,0 +1,19 @@ +package com.etl.gateway.config; + +import org.springframework.beans.factory.ObjectProvider; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.http.HttpMessageConverters; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.converter.HttpMessageConverter; + +import java.util.stream.Collectors; + +@Configuration +public class FeignConfig { + @Bean + @ConditionalOnMissingBean + public HttpMessageConverters messageConverters(ObjectProvider> converters) { + return new HttpMessageConverters(converters.orderedStream().collect(Collectors.toList())); + } +} diff --git a/etl-gateway/src/main/java/com/etl/gateway/service/PermissionService.java b/etl-gateway/src/main/java/com/etl/gateway/service/PermissionService.java new file mode 100644 index 0000000..2407dcf --- /dev/null +++ b/etl-gateway/src/main/java/com/etl/gateway/service/PermissionService.java @@ -0,0 +1,13 @@ +package com.etl.gateway.service; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +@FeignClient(value = "cloud-roles-manage") +public interface PermissionService { + @GetMapping("/path/get") + List pathGet(@RequestParam("roles") String roles); +} diff --git a/etl-gateway/src/main/resources/bootstrap.yml b/etl-gateway/src/main/resources/bootstrap.yml index d13bfdd..515d871 100644 --- a/etl-gateway/src/main/resources/bootstrap.yml +++ b/etl-gateway/src/main/resources/bootstrap.yml @@ -31,3 +31,9 @@ auth: pwdParamName: password # 用户登录认证密码参数名称 useDefaultController: true # 是否使用默认的JwtAuthController skipValidUrl: /auth/login + ignore: + whites: # 自定义白名单 + - /auth/login + - /auth/token/refresh + + diff --git a/etl-gateway/target/classes/bootstrap.yml b/etl-gateway/target/classes/bootstrap.yml new file mode 100644 index 0000000..515d871 --- /dev/null +++ b/etl-gateway/target/classes/bootstrap.yml @@ -0,0 +1,39 @@ +server: + port: 18080 +spring: + application: + name: engine-gateway + profiles: + active: dev + cloud: + nacos: + #注册服务 + discovery: + server-addr: 115.159.33.152:8848 + namespace: f9f293d4-55ce-45c1-aa15-124ca461c060 + # 配置 + config: + server-addr: 115.159.33.152:8848 + namespace: f9f293d4-55ce-45c1-aa15-124ca461c060 + # 配置文件格式 + file-extension: yml +logging: + level: + com.bwie: DEBUG + +auth: + jwt: + enabled: true # 是否开启JWT登录认证功能 + secret: passjava # JWT 私钥,用于校验JWT令牌的合法性 + expiration: 3600000 # JWT 令牌的有效期,用于校验JWT令牌的合法性,一个小时 + header: Authorization # HTTP 请求的 Header 名称,该 Header作为参数传递 JWT 令牌 + userParamName: userId # 用户登录认证用户名参数名称 + pwdParamName: password # 用户登录认证密码参数名称 + useDefaultController: true # 是否使用默认的JwtAuthController + skipValidUrl: /auth/login + ignore: + whites: # 自定义白名单 + - /auth/login + - /auth/token/refresh + + diff --git a/etl-gateway/target/classes/com/etl/gateway/EtlGatewayApplication.class b/etl-gateway/target/classes/com/etl/gateway/EtlGatewayApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..23c8cab3031115c9c817dffc0fc57274e1ea1ac9 GIT binary patch literal 846 zcma)4O>fgc5Pj>WbufmOlonb(3I{}*L-vAt393{g;9>zHC>(lPo2}W@-i_940zZor zhyy=>ABC88DiWlCu%(^dH#=`;-p-Go-@XHQgnJQMxEW$E!ai<=xXrNfSZU>s8P>Xo zV}{nyyps%@iPG{#U8d5$5otk4Co!2Q#=sZRR_T1uq!%_P!tE7qhG=AJo5^R&*R#Je zMc=bB?7gnFQ>7fMN>Q~ZS{v7tK-|ZPu{p1%KIfSgrJNai&QoI?7qv5)(Pt{Jt>mNT z$`f+@*~8IF0*Z6;BXRuB#fPSx8ZEUOWx_Wfr=pUtM0PH6Nrh~YXnhi`Kbg6H?NmV` zFGKT6Vyt6>;lY0?9O6!lyEq{7g}g7*iOd{B@2`E&J6-CMroqq zU@@)`;)9PGGN9cFdS9{jb`c+u$47>AcfrxdRcsO-V5?cLp+k0u&f8?K6YI_?f(pA8 GZu|nql;!FG literal 0 HcmV?d00001 diff --git a/etl-gateway/target/classes/com/etl/gateway/config/FeignConfig.class b/etl-gateway/target/classes/com/etl/gateway/config/FeignConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..e7cfb52317bb3f638865ee283b06c9c3a566d3ed GIT binary patch literal 1634 zcmb_c-%k@k5dO9;J!y;l5J5yy5w!(j5z&_t5+ore7BOO)_++;2QWmeb&EB@if29uw z(Zu-dA7z}o9tG`*A$kvcyR$Rjd^0;U-+z4m3Sb$JGU&$*2RF00h3O1#V?%VtUnn!A)^$xX43?B9pSKznXIRqA<#l1@zBu4j?d_;K-;k>At%v&}!*E0TzNkwQw574qkm-KDq)nasO{2W} zju8#HugzOtk;3!&j;LB~4)|7OPgd;xJuFVZ&Rj)rKlM`oPw`$i&N*XH`R%m9MDA);v#JVU_l%PUd41M7go@9X)$jl|P|3qkKGz)vxr{2tm|T z;DoOq?}WSMZ7ScVij2@Q+qz|{azh23Fm$S_7xqM3Fg%X+7Q>EwP+zo67*;Wd46+Ps zu^rG$_0Q$(U@nLIn0K&{1IMC+2RSU^A;V}ukhiRIDL&VwHlk1izsn5MfA3m~HUw~m zSC86|VKJ8P8NI?Vpbd4dtZiE(MT227Unre0^Ft}`T+-uB_FP5Wbucp0R+p4-8K&Yu zx|)PD-h*@O->G(zLBZsEiJV|WEKh|`uoI_EB3;UAu~4Q_dx6Go@FhSa23cBjbmH`9 z^zWNJ1p5$P573$pg#)-q`&>r>gBYR{O-qa*85+Mqir|2WFG#$eJ3^A-6H-U$OW+&Q zhj8B0WfCWV!y({U$0!0Mb6mnG0blMq3nXJC87D~sS4acIIf1M6pA2Q!!u5K16Of$( FegaGq@t*(y literal 0 HcmV?d00001 diff --git a/etl-gateway/target/classes/com/etl/gateway/config/IgnoreWhiteConfig.class b/etl-gateway/target/classes/com/etl/gateway/config/IgnoreWhiteConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..f166ee63598f4a447b65aba505b6eaa6983632e7 GIT binary patch literal 2709 zcma)8+jA3D82_EzHcb}@>5W3MMJlu@C5jb=wB=G;Ev5w;ECOEGrki9-x*InefpL7( z7iXBk2OspwCwXB;6fG!IMqhNs|Dywcgo?kjyGhf_05i=w-}jyK{l5Fz{{7!?4*?9J z+=Lk3j$%^5J26b-bTiK2tQ5|~(1EOib1_8a{%(xIS-G5-C-2GSf`W@NY(qAROLBi- zE+0hkq1-=;;W9J@a{|GVRS?*dvFt)hD{Hx;o}#2+m<72HEu=E!bUQ5&xmq+Fy&@3L zENGu-sj6d?QW>M-@T@6o6im&j+PXmRy5nJwFKL9#IyRBhqf(`!JLi4GmcDg5>Hb-P z(3mw(ylol7)TgV9bGm&_n=4V0$XGe8G^^Q$mAxO2G*f0%el!@$O0=MM-4M-b=D4&g5G`tzqE`WiHc8ksGm}%}v`ac->y>KB5m4%YQOEMC zE6`etv9abv9L|;eWW};p)z0Y?hAe0MhSD6AQ3-U;R87ZN)Mt%~!9t%fP0P_7!!ntb z!*0h`%CevGwzjBWwd^ah){cJ7Non<~DX-X7+f`)EPj0SQva0iSb-!gAP-gTzLoQ}> zR#_*=_@*FpmgUqj$~Ldsj-gl9x^Sj0Cr+en>v`iE3C<7OQ^gK+3cRrL<#&&lmme*E zwerQ?$M=3%dHDIGZ6-5{-c4C)`{pb^DSsn2cwyj;4bMD)G zp4n1y7=tSMkyLR&Qm^9;fsWN?^;+d*)hNx&R_)x-0)1ZJj;L6`6}hk_MZby>j4D`E zVS?=+Uj_6AL!jqbX?g0E8j9*zGLf~0KD)^XUUDCr=P5wie+Jf0L-#XYT)uyXnP-r- zx2RElo8Lc93%Yruhmt%(q<|eiK_mhL z!DR&RBlIi6K_mx$LF7lC1&Io5fE7LnETj3@_U3sw+H?}>|3Vd_Q3CmO&v%sq1k0g zsM80y91RWrh33xCpV)p2>R@MR30vG7q1%M<^5(hF>iR$A!PoOOhJ%ovw{d@&ISlaE zjaMjR`dPh0q(XR=SZ#;h+zrAkRZep#=go2gsdx{FyFfgLdZIIJ-{}$OFXfC z2?^=s5?T_iq?gdPzWiS7Uhj1Iu0?UI-iLc!M4%}VyN~v}5VGm{A0Ah)cx`m)IJp2$ f;3W4J@?+fJ#Bo=}_92o(c>-V^J88_JnnDa4 z32dgxzR$}Ce0`ml8wu3XNTQm=hitca*-qjkwjU>OQy_lSa+K@|Wa@YAZ*8luoVHbW zda5Fj+I5<)t@^$cSebZT4bN@cZCbm^cid)WlS1NE$92@EKrCO_6VPkk0R_+19arA! zclM?KxxL?}n{3@{*zG;rclaD#>Z;`slGS>{>sV5?t){Kyk^R7Gc&+HN=4J-B!{h9(vK#ky>~6p* z$s(9?vSGVhTvs63vU{y?EHoohfN}fI&7Cc(%WCjtuisVziDAN|^1}HFoI4?Mbm{`> zU9ayq$(w)AmoQ~XcdJYZ!y6bw%R*vTq8O6HiH?3Zmg>>lK9eL#W z_pF|hzVsB)Y}LF@*K?)Iy4;%TyzhC6m7?T*Wp#%Np-2`_-w#TSDJS0b<)L$*7`6MV zwMJt1d}-nw7EEMtmQekFA(~jlWfK>XGw}-V%2*RPe>%pH#2bC5eZWJ!IEANtIMWRi zpWsto>NJ&ti8rxM-{)znP%JbpyW5rSfk1gwO3~LCeF!6?ifR*qWBw=78l?$&rS&rF}z4gUcz#eq)t}jlEu=`&=^7tlMog|j|c+83wwH*yhC_=Gf#QL z3YTa{6Qz}5KB8!YY^_xM0fv5D`W>S{y(Rj|CH)Va zeF(F>qz@1eJoIBq^DMmeF#Ql-4J&w+iZ5UdSBN!@&daz;cQF*nD^EKe1BhS3;q5Bp*u?k7mToD2}0} zWv2^k8z3x&vXrK!Z76+=6QI5C1-}9)cl`rAh4;)zwj56q$Q8OcGjq^#nV6`EKyxyCVP$}G&#xx50q?m%8 z#sSQv;h-eprr_z>q=cw(j>xEWmdu||bW7hKvW>EHRw=nHnB{l2$GiFX%ZeUJZ`Ox#{Oly(B z++GR2S=(1r6x+^+9gL|`*`W;r*CmRYvO>#@C~2av%#nH~N@*RXe^yxWDPjM&m#{T^ zz&dD|j^!52(NKGlS-G=~dRn&Ht{rX@XzcEp5NPW2rl|4UtnI4dN-3xOF^kv`?yQ%$ zoC(Xf^>=l%DJ%0H-lb2NHPs@%>) z`67K#nM97f<5i{>Lmi7Z`{T&RYWs?o?PhwizKVhtV_mM~96Kmd&yeSOv`o;!wRQMV zt19bE;8{vlO%S*?(TLNUEznE{Y**msMCNbm0nwX{GF@O*Y-lC49W!eOA#Iety0@Z& zP+)7KmSPx|YtTkW*auY=;{hIx#M~6rRJOvR4)%)dp^}mn=8KB)7I)IE(3??oOI8@N zJ!($i{N))kSFUAA*GUE^Ju9SG(z!UhT#6t#tgFX;8qY{PYhVYSBY*~5`EL#U4u=J< zs=LEwTVp14o#sMt;f zUc2KJZ1tC!+b{-;aO(%4?Bfe=+bb{%YWF z_`ASmHJ@uEA?_3P&51>|WX9gy0hMPdU7r+|I68Fv8#4@nrmB4DzYwE+-r7Bc9r9G~GQXH3t?@ zngrFBB(RMXXKyQ|wNTpl2+MF)O_!@elRG>!B3P>5>}4d~7d5~&HQM?CDsXYl%WC;V zfW{DvvmLWFUeUd>b)M{D58LPMXVJ&bG{rP-1Il9Y(2(xa;ij8@m69lQof6+Vy11|H zvVA>eu1xT<8p!2sdIJ{ZT!1+`P(YI9AlCMmDI8@+!9N%J)5gL9XYqYAhaxo9dmcUb}j-wr3s)JeTzy^(nK@vFuV% zP4w~F_-wJtW#zItY)%xi)Ss5MNlHnDUabnRNs8oYZJ}qaTDalX-V%6 z&vSVHrN-4OHd#u!_;|u{DvS+plML(nh)~B;Pnvwi_c_JPG2XeydFf=q4Gj*DkL?^~ zWz`i)0x6ZYs6%Dmum$=P?A(0@_9Q>}Kjc#W!D+zd=;GR-$0|4?`KP0W&u%^&^o-)V zF?!#$?5vSAoW@*Do|=3LKASgu0P$W#el=Gu2w0D6xEe75uElly5}eA{Q#6^yCul}1 z_l|G)CmQC_IK1&Vn%JY8I-8E8SzsP5z0IA?n-?H&Xj$8G1Z|s0k!rv(P0-3V+BOfP zS9Zz;v>!owW5+oQIQN+TTs8R)Pf{B@I%+%T^`@w1&4*aK{{x)galt&k*O}rnkIs2~ ze;yaUqy?Q)2Y)>LDQDK`#$4afznoB#j- literal 0 HcmV?d00001 diff --git a/etl-gateway/target/classes/com/etl/gateway/filters/JwtAuthCheckFilter.class b/etl-gateway/target/classes/com/etl/gateway/filters/JwtAuthCheckFilter.class new file mode 100644 index 0000000000000000000000000000000000000000..b079d7c746d651f4d6b00d5776680cff05c83b42 GIT binary patch literal 9508 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 literal 0 HcmV?d00001 diff --git a/etl-gateway/target/classes/com/etl/gateway/utils/GatewayUtils.class b/etl-gateway/target/classes/com/etl/gateway/utils/GatewayUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..56130b6169c88fc4d43c4d3ece647788c51db612 GIT binary patch literal 6265 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 literal 0 HcmV?d00001 diff --git a/etl-gateway/target/etl-gateway-1.0-SNAPSHOT.jar b/etl-gateway/target/etl-gateway-1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..ecad299f357aebe56625dcb2833720c3d7ed3ad3 GIT binary patch literal 17184 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 Rg!%eI{2D&?Ur~U7{vQ)pIK%(| literal 0 HcmV?d00001 diff --git a/etl-gateway/target/maven-archiver/pom.properties b/etl-gateway/target/maven-archiver/pom.properties new file mode 100644 index 0000000..faef141 --- /dev/null +++ b/etl-gateway/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Wed Jul 03 15:15:42 CST 2024 +version=1.0-SNAPSHOT +groupId=com.bwie +artifactId=etl-gateway diff --git a/etl-gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/etl-gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..e0b90ed --- /dev/null +++ b/etl-gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,9 @@ +com\etl\gateway\service\PermissionService.class +com\etl\gateway\config\WhiteListProperties.class +com\etl\gateway\filters\LogFilter.class +com\etl\gateway\utils\GatewayUtils.class +com\etl\gateway\filters\JwtAuthCheckFilter.class +com\etl\gateway\EtlGatewayApplication.class +com\etl\gateway\config\IgnoreWhiteConfig.class +com\etl\gateway\config\FeignConfig.class +com\etl\gateway\filters\AuthFilter.class diff --git a/etl-gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/etl-gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..bb405eb --- /dev/null +++ b/etl-gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,9 @@ +D:\workspace\ETL\etl-gateway\src\main\java\com\etl\gateway\config\WhiteListProperties.java +D:\workspace\ETL\etl-gateway\src\main\java\com\etl\gateway\config\IgnoreWhiteConfig.java +D:\workspace\ETL\etl-gateway\src\main\java\com\etl\gateway\utils\GatewayUtils.java +D:\workspace\ETL\etl-gateway\src\main\java\com\etl\gateway\filters\AuthFilter.java +D:\workspace\ETL\etl-gateway\src\main\java\com\etl\gateway\EtlGatewayApplication.java +D:\workspace\ETL\etl-gateway\src\main\java\com\etl\gateway\filters\JwtAuthCheckFilter.java +D:\workspace\ETL\etl-gateway\src\main\java\com\etl\gateway\config\FeignConfig.java +D:\workspace\ETL\etl-gateway\src\main\java\com\etl\gateway\filters\LogFilter.java +D:\workspace\ETL\etl-gateway\src\main\java\com\etl\gateway\service\PermissionService.java diff --git a/etl-groovy/etl-groovy.iml b/etl-groovy/etl-groovy.iml new file mode 100644 index 0000000..9e3449c --- /dev/null +++ b/etl-groovy/etl-groovy.iml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/etl-groovy/pom.xml b/etl-groovy/pom.xml new file mode 100644 index 0000000..ae9594e --- /dev/null +++ b/etl-groovy/pom.xml @@ -0,0 +1,68 @@ + + + 4.0.0 + + com.bwie + etl-cloud + 1.0-SNAPSHOT + + etl-groovy + etl-groovy + + 1.8 + UTF-8 + UTF-8 + + + + org.springframework.boot + spring-boot-starter-web + + + com.bwie + etl-common + 1.0-SNAPSHOT + + + com.baomidou + mybatis-plus-boot-starter + + + + + + org.springframework.boot + spring-boot-starter-data-jdbc + 2.6.13 + + + + + mysql + mysql-connector-java + + + + org.springframework.cloud + spring-cloud-starter-bootstrap + + + org.codehaus.groovy + groovy-all + 2.4.7 + + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-test + test + + + + diff --git a/etl-groovy/src/main/java/com/etl/groovy/SpringBootGroovyApplication.java b/etl-groovy/src/main/java/com/etl/groovy/SpringBootGroovyApplication.java new file mode 100644 index 0000000..8780772 --- /dev/null +++ b/etl-groovy/src/main/java/com/etl/groovy/SpringBootGroovyApplication.java @@ -0,0 +1,15 @@ +package com.etl.groovy; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; + + +@SpringBootApplication(scanBasePackages = {"com.etl.groovy"}) +@ComponentScan("com.etl.groovy.config") +public class SpringBootGroovyApplication { + + public static void main(String[] args) { + SpringApplication.run(SpringBootGroovyApplication.class, args); + } +} diff --git a/etl-groovy/src/main/java/com/etl/groovy/controller/GroovyTestController.java b/etl-groovy/src/main/java/com/etl/groovy/controller/GroovyTestController.java new file mode 100644 index 0000000..cbe7dfb --- /dev/null +++ b/etl-groovy/src/main/java/com/etl/groovy/controller/GroovyTestController.java @@ -0,0 +1,48 @@ +package com.etl.groovy.controller; + +import groovy.lang.GroovyShell; +import groovy.lang.Script; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @ClassName GrooyTestController + * @Description 描述 + * @Author ZeZhang.Liu + * @Date 2024/6/26 16:58 + */ +@RestController +@RequestMapping("/groovy") +public class GroovyTestController { + @GetMapping("/test") + public Object test() { + // 创建GroovyShell + GroovyShell groovyShell = new GroovyShell(); + + // 装载解析脚本代码 + String scriptText = + "import com.etl.groovy.service.GroovyTestService\n" + + "import com.etl.groovy.util.SpringContextUtil\n" + + "\n" + + "def getBean() {\n" + + " GroovyTestService groovyTestService = SpringContextUtil.getBean(GroovyTestService.class);\n" + + " groovyTestService.removeDashesFromAddress()\n" + + "}\n" + + "\n" + + "// 如果需要,你可以在这里定义方法或变量来模拟静态变量的行为\n" + + "def getParam1() {\n" + + " return \"通过方法获取的模拟静态变量\"\n" + + "}\n"; + + // 解析脚本 + Script script = groovyShell.parse(scriptText); + + // 执行getBean方法 + script.invokeMethod("getBean", null); + + // 尝试获取模拟的静态变量(通过方法) + Object param1 = script.invokeMethod("getParam1", null); + return param1; + } +} diff --git a/etl-groovy/src/main/java/com/etl/groovy/entity/Address.java b/etl-groovy/src/main/java/com/etl/groovy/entity/Address.java new file mode 100644 index 0000000..d8f2757 --- /dev/null +++ b/etl-groovy/src/main/java/com/etl/groovy/entity/Address.java @@ -0,0 +1,15 @@ +package com.etl.groovy.entity; + +import lombok.Data; + +/** + * @ClassName Address + * @Description 描述 + * @Author TingTing.Yao + * @Date 2024/06/26 14:08 + */ +@Data +public class Address { + private Integer id; + private String address; +} diff --git a/etl-groovy/src/main/java/com/etl/groovy/mapper/AddressMapper.java b/etl-groovy/src/main/java/com/etl/groovy/mapper/AddressMapper.java new file mode 100644 index 0000000..f5d8519 --- /dev/null +++ b/etl-groovy/src/main/java/com/etl/groovy/mapper/AddressMapper.java @@ -0,0 +1,12 @@ +package com.etl.groovy.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.etl.groovy.entity.Address; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Update; + +@Mapper +public interface AddressMapper extends BaseMapper

{ + @Update("UPDATE address SET address = REPLACE(address, '-', '') WHERE address LIKE '%-%'") + void removeDashesFromAddress(); +} diff --git a/etl-groovy/src/main/java/com/etl/groovy/service/GroovyTestService.java b/etl-groovy/src/main/java/com/etl/groovy/service/GroovyTestService.java new file mode 100644 index 0000000..d33c5ec --- /dev/null +++ b/etl-groovy/src/main/java/com/etl/groovy/service/GroovyTestService.java @@ -0,0 +1,18 @@ +package com.etl.groovy.service; + +import com.etl.groovy.mapper.AddressMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class GroovyTestService { + + @Autowired + private AddressMapper addressMapper; + + public void removeDashesFromAddress() { + addressMapper.removeDashesFromAddress(); + } + +} + diff --git a/etl-groovy/src/main/java/com/etl/groovy/util/SpringContextUtil.java b/etl-groovy/src/main/java/com/etl/groovy/util/SpringContextUtil.java new file mode 100644 index 0000000..78cc933 --- /dev/null +++ b/etl-groovy/src/main/java/com/etl/groovy/util/SpringContextUtil.java @@ -0,0 +1,57 @@ +package com.etl.groovy.util; + +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; + +/** + * Spring上下文获取 + */ +@Component +public class SpringContextUtil implements ApplicationContextAware { + + private static ApplicationContext applicationContext; + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + SpringContextUtil.applicationContext = applicationContext; + } + + public static ApplicationContext getApplicationContext() { + return applicationContext; + } + + /** + * 通过name获取 Bean. + * + * @param name + * @return + */ + public static Object getBean(String name) { + return getApplicationContext().getBean(name); + } + + /** + * 通过class获取Bean. + * + * @param clazz + * @param + * @return + */ + public static T getBean(Class clazz) { + return getApplicationContext().getBean(clazz); + } + + /** + * 通过name,以及Clazz返回指定的Bean + * + * @param name + * @param clazz + * @param + * @return + */ + public static T getBean(String name, Class clazz) { + return getApplicationContext().getBean(name, clazz); + } +} diff --git a/etl-groovy/src/main/resources/bootstrap.yml b/etl-groovy/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..8e2143c --- /dev/null +++ b/etl-groovy/src/main/resources/bootstrap.yml @@ -0,0 +1,81 @@ +# Tomcat +server: + port: 9010 +# Spring +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://115.159.33.152:3306/lian + username: root + password: lzm@123 + main: + allow-circular-references: true + application: + # 应用名称 + name: etl-groovy + profiles: + # 环境配置 + active: dev +mybatis-plus: + configuration: + map-underscore-to-camel-case: true + type-aliases-package: com.etl.groovy.entity + mapper-locations: classpath:mappers/*xml +liteflow: + #规则文件路径 + rule-source: config/flow.el.xml + #-----------------以下非必须----------------- + #liteflow是否开启,默认为true + enable: true + #liteflow的banner打印是否开启,默认为true + print-banner: true + #zkNode的节点,只有使用zk作为配置源的时候才起作用,默认为/lite-flow/flow + zk-node: /lite-flow/flow + #上下文的最大数量槽,默认值为1024 + slot-size: 1024 + #FlowExecutor的execute2Future的线程数,默认为64 + main-executor-works: 64 + #FlowExecutor的execute2Future的自定义线程池Builder,LiteFlow提供了默认的Builder + main-executor-class: com.yomahub.liteflow.thread.LiteFlowDefaultMainExecutorBuilder + #自定义请求ID的生成类,LiteFlow提供了默认的生成类 + request-id-generator-class: com.yomahub.liteflow.flow.id.DefaultRequestIdGenerator + #并行节点的线程池Builder,LiteFlow提供了默认的Builder + thread-executor-class: com.yomahub.liteflow.thread.LiteFlowDefaultWhenExecutorBuilder + #异步线程最长的等待时间(只用于when),默认值为15000 + when-max-wait-time: 15000 + #异步线程最长的等待时间(只用于when),默认值为MILLISECONDS,毫秒 + when-max-wait-time-unit: MILLISECONDS + #when节点全局异步线程池最大线程数,默认为16 + when-max-workers: 16 + #并行循环子项线程池最大线程数,默认为16 + parallelLoop-max-workers: 16 + #并行循环子项线程池等待队列数,默认为512 + parallelLoop-queue-limit: 512 + #并行循环子项的线程池Builder,LiteFlow提供了默认的Builder + parallelLoop-executor-class: com.yomahub.liteflow.thread.LiteFlowDefaultParallelLoopExecutorBuilder + #when节点全局异步线程池等待队列数,默认为512 + when-queue-limit: 512 + #是否在启动的时候就解析规则,默认为true + parse-on-start: true + #全局重试次数,默认为0 + retry-count: 0 + #是否支持不同类型的加载方式混用,默认为false + support-multiple-type: false + #全局默认节点执行器 + node-executor-class: com.yomahub.liteflow.flow.executor.DefaultNodeExecutor + #是否打印执行中过程中的日志,默认为true + print-execution-log: true + #是否开启本地文件监听,默认为false + enable-monitor-file: false + #是否开启快速解析模式,默认为false + fast-load: false + #简易监控配置选项 + monitor: + #监控是否开启,默认不开启 + enable-log: false + #监控队列存储大小,默认值为200 + queue-limit: 200 + #监控一开始延迟多少执行,默认值为300000毫秒,也就是5分钟 + delay: 300000 + #监控日志打印每过多少时间执行一次,默认值为300000毫秒,也就是5分钟 + period: 300000 diff --git a/etl-groovy/src/main/resources/config/flow.el.xml b/etl-groovy/src/main/resources/config/flow.el.xml new file mode 100644 index 0000000..ef0fc50 --- /dev/null +++ b/etl-groovy/src/main/resources/config/flow.el.xml @@ -0,0 +1,6 @@ + + + + THEN(acmp, bcmp, ccmp); + + diff --git a/etl-groovy/src/test/java/com/etl/groovy/EtlGroovyApplicationTests.java b/etl-groovy/src/test/java/com/etl/groovy/EtlGroovyApplicationTests.java new file mode 100644 index 0000000..5007638 --- /dev/null +++ b/etl-groovy/src/test/java/com/etl/groovy/EtlGroovyApplicationTests.java @@ -0,0 +1,13 @@ +package com.etl.groovy; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class EtlGroovyApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/etl-groovy/target/classes/bootstrap.yml b/etl-groovy/target/classes/bootstrap.yml new file mode 100644 index 0000000..8e2143c --- /dev/null +++ b/etl-groovy/target/classes/bootstrap.yml @@ -0,0 +1,81 @@ +# Tomcat +server: + port: 9010 +# Spring +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://115.159.33.152:3306/lian + username: root + password: lzm@123 + main: + allow-circular-references: true + application: + # 应用名称 + name: etl-groovy + profiles: + # 环境配置 + active: dev +mybatis-plus: + configuration: + map-underscore-to-camel-case: true + type-aliases-package: com.etl.groovy.entity + mapper-locations: classpath:mappers/*xml +liteflow: + #规则文件路径 + rule-source: config/flow.el.xml + #-----------------以下非必须----------------- + #liteflow是否开启,默认为true + enable: true + #liteflow的banner打印是否开启,默认为true + print-banner: true + #zkNode的节点,只有使用zk作为配置源的时候才起作用,默认为/lite-flow/flow + zk-node: /lite-flow/flow + #上下文的最大数量槽,默认值为1024 + slot-size: 1024 + #FlowExecutor的execute2Future的线程数,默认为64 + main-executor-works: 64 + #FlowExecutor的execute2Future的自定义线程池Builder,LiteFlow提供了默认的Builder + main-executor-class: com.yomahub.liteflow.thread.LiteFlowDefaultMainExecutorBuilder + #自定义请求ID的生成类,LiteFlow提供了默认的生成类 + request-id-generator-class: com.yomahub.liteflow.flow.id.DefaultRequestIdGenerator + #并行节点的线程池Builder,LiteFlow提供了默认的Builder + thread-executor-class: com.yomahub.liteflow.thread.LiteFlowDefaultWhenExecutorBuilder + #异步线程最长的等待时间(只用于when),默认值为15000 + when-max-wait-time: 15000 + #异步线程最长的等待时间(只用于when),默认值为MILLISECONDS,毫秒 + when-max-wait-time-unit: MILLISECONDS + #when节点全局异步线程池最大线程数,默认为16 + when-max-workers: 16 + #并行循环子项线程池最大线程数,默认为16 + parallelLoop-max-workers: 16 + #并行循环子项线程池等待队列数,默认为512 + parallelLoop-queue-limit: 512 + #并行循环子项的线程池Builder,LiteFlow提供了默认的Builder + parallelLoop-executor-class: com.yomahub.liteflow.thread.LiteFlowDefaultParallelLoopExecutorBuilder + #when节点全局异步线程池等待队列数,默认为512 + when-queue-limit: 512 + #是否在启动的时候就解析规则,默认为true + parse-on-start: true + #全局重试次数,默认为0 + retry-count: 0 + #是否支持不同类型的加载方式混用,默认为false + support-multiple-type: false + #全局默认节点执行器 + node-executor-class: com.yomahub.liteflow.flow.executor.DefaultNodeExecutor + #是否打印执行中过程中的日志,默认为true + print-execution-log: true + #是否开启本地文件监听,默认为false + enable-monitor-file: false + #是否开启快速解析模式,默认为false + fast-load: false + #简易监控配置选项 + monitor: + #监控是否开启,默认不开启 + enable-log: false + #监控队列存储大小,默认值为200 + queue-limit: 200 + #监控一开始延迟多少执行,默认值为300000毫秒,也就是5分钟 + delay: 300000 + #监控日志打印每过多少时间执行一次,默认值为300000毫秒,也就是5分钟 + period: 300000 diff --git a/etl-groovy/target/classes/com/etl/groovy/SpringBootGroovyApplication.class b/etl-groovy/target/classes/com/etl/groovy/SpringBootGroovyApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..999765bc2340cfa2c7221a5ee130c94bd4ad4443 GIT binary patch literal 880 zcma)4O;6iE5PchxIJhaKq0mCV;1(j3y;NLMAwi_}VzpIMr3X%HcX1c&-DtfIZ<2NQO=S#wL1a=cUBY8)%yD^cHO^umI zavE~|F5_S>tBnSl4E_Ii-owi_USXS|b8GvD@Ki>Qc>d|c+~UgI^i*t4_ZRjm*EdQ; zmJJu&*zUdKk8Uh3-c+Rpr3-h4*g=h6Z1L4Vj-W}=BgAQCv^M%zV3%dNMX@LYK9(uA z=Nkw;Ahb;QA!Ulg`z0CB>el+#So(5%-lqy^pNEwSM~l!ZdBC O8P>5u|4+*Qr+)yQbMg!T literal 0 HcmV?d00001 diff --git a/etl-groovy/target/classes/com/etl/groovy/controller/GroovyTestController.class b/etl-groovy/target/classes/com/etl/groovy/controller/GroovyTestController.class new file mode 100644 index 0000000000000000000000000000000000000000..f91cabdcd4ecaa7b491fef3e85703e7ba84c5ab4 GIT binary patch literal 1582 zcmb7E-;Wbj6#j18-Ik#OTTv*Aj;kx}!p?y1gAp}B47_xa&}9wrY1&@87p8OTo!g=@ zCW|py4IB5#jcgW$2MAB7F=6G0^6uZUE$x&4f#J+dDL+~hnPle7eD^!wx#!F|_wRpi z{{>(g(*_JoB=M$!7$#EK6WCk|c>|N!o5H>%rjoE2M&A>j&>t|wbNM-j#9>+C3|kAr zS_!X8jM0cev7V4AhJL|%-BC{Mz?0tnon%imJS}Q`PWXcIKIC~)J6cGO z(w;6zRki(k5a={%@N-g~wa@XAT@qf!cKTfVDAzMiy&i37r0KW~s_2Lv)xapqhAQ(T zA}DiqSiP*EL=5lz?|3JkF88yze%2uGN83&Ierg(@F^~Zme$H`mViltNr^A?Qd6F%RhD( zm)n=Fwy$4lU--Fu>0*1~d<5QK{ibteY2%OE4--EgwrM|g#dSk@=6H8uwR3MVQtW)c z-dbKE&q29y+F=?t_A?}V*(Y%zjkoYN!zMx^c?Rp*MwwyT)ALK6O(W$~Gv{)H1DPK_ zg_)?>(K!&!CPP|yO?j5ja6K<8)c-@|9t+T$*&zoCUc)9j4udNOI$e;a=X3OBlVxN_ zCfC7!3zxUhb2J3Uu$A5eDiN>^V`S-+!1E*$IA1`VaA4vNVyD&-FJuxkd-vVM$g!!+ zD7%T|CsUbJVBbw-6TcEMhCqB5$pbGSg`KpMJtRAcET%9HD-1XtiS`1fup8Tn9qf7+ zUc?Sk86#vT`NYX5PUuTW;APU>Lag0%zw#-Vk5`Fl5*nlIgVhYZjgx)7&v@ejbI9x$ literal 0 HcmV?d00001 diff --git a/etl-groovy/target/classes/com/etl/groovy/entity/Address.class b/etl-groovy/target/classes/com/etl/groovy/entity/Address.class new file mode 100644 index 0000000000000000000000000000000000000000..6d3c08614210901bb11d21fbb95c3dadd8d1ef7f GIT binary patch literal 1923 zcma)7U2hvj6g^|_+G}T%x^A7skkSSM_#>_h1WN5B(2ulrvD4C^O7O(SUfEk*J2>k~ z{VV(c@{$LTz?DEk@KPjx13!aDN;!9T{S^#Cwr1|!Idkv1=g!!_{q@6705RdvosQ#fD}*!I2MXHtZo^hMRdqV{ zZvWA~-TTDaZ_|^kcI#IAfz@+l9XK_&PDFuG_ME6jX{{6TuD7jG9yyn_verSS#x(_ZU4?S_al z7bMI$jV%+qxGTdwvRc0oklkV}Sra9!DkR2ne0f=;b#P#JC~9F=<0d*jm6%s+3P0@Q zzv8jVhn3_b4DmxnJd2`mj)4VYnPZx(B4@=}&pn0u)`PvoG2%Jr@G@=F2Ve!~xKg4R z$LYi0A@t3O!}Bu_Q{)+k!zT|f%sl)mUJDMFyu!#cm;WB2*}NBtkxG2tVu=t^?iya7 z6({_EE^9OT9nXQ%2eGOeZ&i?}KE9l|l{Lj#8>$w4RZ%HGvyUwAc6@JBB zT6>1mM=%R%ZGh+yVU%=2j8Y`63nuam$s^3C^>kzi(vF!cjFX+Z?QiyD7oA&N`Su^7c${2J;xmVGnE zUr~8NfdW@Ji{84FF7!hGpyxM4AJNlELg*=ZbwQZlc~0l)Qlh-6ZFzF7B+4y{WhC-P zh!zHjeJ*~Zq{&8F3w8{VkXtLWrP=VK2D!tyjCb)KbLyNg(+crF<`Ui~pD-`k60XqF zJQ?mldqIar8I)q_Q0fIi<8??JDd=Ri4YNImXI^bBIe9F^=u3)%C-PHiCh-*Hi5#D`3Wb`pA5R4 zv8l7o41HvdzwB#$Xb!B-o!Q8;=ep4{@G+YD^SwFTR#^{^rf$?*b%Q`@u6DD4|uraTgfba>D6ab_*cY|1az1pdCu28^vv*Yv(k%lQ20Nuc_BEdogY wUwah^5XhnA@dJ<@0y|JZuZUg+wT80$0z^Rx5oL_#U=Q|FeUPGxh^PR30-{)|`~Uy| literal 0 HcmV?d00001 diff --git a/etl-groovy/target/classes/com/etl/groovy/service/GroovyTestService.class b/etl-groovy/target/classes/com/etl/groovy/service/GroovyTestService.class new file mode 100644 index 0000000000000000000000000000000000000000..0706d41145037e896c2b698c2ee77a67f7c216d3 GIT binary patch literal 697 zcmZ`%T~AX%5IuA0hrPWBqJpR|#+YCq+!r56AS8_jU#ccT`o6s#%3|+sv%4+n&oVJF z@Zb;NM-k?h3Z&r6oXpOgIdgXR;`012fRA{cqKfAYRIuK}242*$S;tGlvhMdihwxR8 zM(hdiI=L$p$DtZ{=O$BC%nGV~w{3^8`D1LODY$Eb=?%GUt&2JuX9HooLeqwS~UuKRDImCnO6A|3-T(}8;*5R1LzIVmk zC?P#?W1sWBDfQOxaX*~si6(44=ru(4?BaC9>Yr4G6wM4Z)a!Va;R%{TUbyT3E=pJ} z<Y>rUXf_+WG_fH7hSm zESn*;#}c#a2CQIJGAeCIEXmt~WnbF*jpPhVgxd+J2toJ_;oVM2=Tj1_Nj1UKo7J8H ER|)*A#sB~S literal 0 HcmV?d00001 diff --git a/etl-groovy/target/classes/com/etl/groovy/util/SpringContextUtil.class b/etl-groovy/target/classes/com/etl/groovy/util/SpringContextUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..e3f943340da2f9b3cf0bd536b9300f86b768884b GIT binary patch literal 1633 zcmb7E*>2NN5Ir|b(>j5+0RjcOL6S^a4(DdSdxP(hvf`bGFZ)E zO(3szyOybIzUkOC$M%gwUtqcJxNX(zx~AQJ<7yq_z;WNHdiYu0?(?V$3~idW>2C=n zi=|zGRLyy92#nTE+j!RNv<$bYwJcilbw}5%UClM+J~F2Kx27ksSl6A7YWSAgb{%K` zNbUKir8WW?k+xT~FxoZG@cU&5tQ9Y+T#8km9_mI{X28o}o$T$w?5oAnMd<}HBzt0L zw!lKMzNhVLs-@X&wc*R;R!cF{^VXiB`#fFBX3Ax%`rrcdagv&)dEQ`-v~Fp~#{%Oq zk`OLXI9r3G?you&{seC}o7F8U8flnqTl0G^Wvy&BAH{Hy>a9Lqp>K%{0vqwK(a~cZ ze>q3(-_g$Di^o?QPS4ei9aFYop|7KsWTFKoUiNI?>=?VIXRaA4wrIJkj>#bZe;KvhY8%2!=xPMSjGQpbb+zc4hZwi7Qfil z+&<7`(Tan-T5L;CmCfn>z5xPDgP`Z%ea!L)GYs|!Uqzmpf1n|*nFNlPxl=g{>@J zh!0#OFdBhC*cjKj5P)&yxf8g8t3*lX$J`}2rz@Y3ICWM6V;(6&B|#wsMFfNgN_dy~ zEk%j~^|2USNz&V#<&*k|#Cy*CQ*o54CDVv3SA<+Aue2&(kSw1dm4L*@4=@uufP!1( zM!+yhl#I1=mLVN7Bx4aPXBeh1O|KcgVNw)KF~`6iz6sn7xaT777f5miWTm>w35Jq^ pyg2zrEIrvs9vw(J&4bO*ISeB$v$TX^=1IE{1YAUsvrJ71_z6WhiC_Q# literal 0 HcmV?d00001 diff --git a/etl-groovy/target/classes/config/flow.el.xml b/etl-groovy/target/classes/config/flow.el.xml new file mode 100644 index 0000000..ef0fc50 --- /dev/null +++ b/etl-groovy/target/classes/config/flow.el.xml @@ -0,0 +1,6 @@ + + + + THEN(acmp, bcmp, ccmp); + + diff --git a/etl-groovy/target/etl-groovy-1.0-SNAPSHOT.jar b/etl-groovy/target/etl-groovy-1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..ee0b310962123c726067bfc527cb7e43419d8cc3 GIT binary patch literal 9159 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 literal 0 HcmV?d00001 diff --git a/etl-groovy/target/maven-archiver/pom.properties b/etl-groovy/target/maven-archiver/pom.properties new file mode 100644 index 0000000..fefb8d7 --- /dev/null +++ b/etl-groovy/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Tue Jul 02 20:35:53 CST 2024 +version=1.0-SNAPSHOT +groupId=com.bwie +artifactId=etl-groovy diff --git a/etl-groovy/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/etl-groovy/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..e81cd39 --- /dev/null +++ b/etl-groovy/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,6 @@ +com\etl\groovy\service\GroovyTestService.class +com\etl\groovy\mapper\AddressMapper.class +com\etl\groovy\controller\GroovyTestController.class +com\etl\groovy\SpringBootGroovyApplication.class +com\etl\groovy\entity\Address.class +com\etl\groovy\util\SpringContextUtil.class diff --git a/etl-groovy/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/etl-groovy/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..7fc92b4 --- /dev/null +++ b/etl-groovy/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,6 @@ +D:\workspace\ETL\etl-groovy\src\main\java\com\etl\groovy\util\SpringContextUtil.java +D:\workspace\ETL\etl-groovy\src\main\java\com\etl\groovy\SpringBootGroovyApplication.java +D:\workspace\ETL\etl-groovy\src\main\java\com\etl\groovy\mapper\AddressMapper.java +D:\workspace\ETL\etl-groovy\src\main\java\com\etl\groovy\service\GroovyTestService.java +D:\workspace\ETL\etl-groovy\src\main\java\com\etl\groovy\controller\GroovyTestController.java +D:\workspace\ETL\etl-groovy\src\main\java\com\etl\groovy\entity\Address.java diff --git a/etl-groovy/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/etl-groovy/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..42ac1fc --- /dev/null +++ b/etl-groovy/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst @@ -0,0 +1 @@ +com\etl\groovy\EtlGroovyApplicationTests.class diff --git a/etl-groovy/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/etl-groovy/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..d76b636 --- /dev/null +++ b/etl-groovy/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -0,0 +1 @@ +D:\workspace\ETL\etl-groovy\src\test\java\com\etl\groovy\EtlGroovyApplicationTests.java diff --git a/etl-groovy/target/test-classes/com/etl/groovy/EtlGroovyApplicationTests.class b/etl-groovy/target/test-classes/com/etl/groovy/EtlGroovyApplicationTests.class new file mode 100644 index 0000000000000000000000000000000000000000..88ca40a95cbfca896c814afb14e327072f31c542 GIT binary patch literal 542 zcma)2O-lnY5Pj*_YFllsUIY=3wSu{b7e%O|UKRygde3fSP2DC-He2;)c@jMM1N>3q zY}$h$f`QD(n|W_0`TTnS0C0q@I?C7x&>PImRhAJ_g2j0ld+FHGRAR7dVIMSANY=Q!u^;gDyTAa|NBCQb}^49 zLQnW@G?lT#9!m7(#VOGxJiLfj0mE literal 0 HcmV?d00001 diff --git a/etl-jwt-manage/target/classes/META-INF/spring-configuration-metadata.json b/etl-jwt-manage/target/classes/META-INF/spring-configuration-metadata.json index 52c9406..801feb4 100644 --- a/etl-jwt-manage/target/classes/META-INF/spring-configuration-metadata.json +++ b/etl-jwt-manage/target/classes/META-INF/spring-configuration-metadata.json @@ -10,7 +10,8 @@ { "name": "auth.jwt.enabled", "type": "java.lang.Boolean", - "sourceType": "com.etl.jwt.config.AuthJwtProperties" + "sourceType": "com.etl.jwt.config.AuthJwtProperties", + "defaultValue": true }, { "name": "auth.jwt.expiration", @@ -26,7 +27,8 @@ "name": "auth.jwt.pwd-param-name", "type": "java.lang.String", "description": "用户登录-密码参数名称", - "sourceType": "com.etl.jwt.config.AuthJwtProperties" + "sourceType": "com.etl.jwt.config.AuthJwtProperties", + "defaultValue": "password" }, { "name": "auth.jwt.secret", @@ -41,13 +43,15 @@ { "name": "auth.jwt.use-default-controller", "type": "java.lang.Boolean", - "sourceType": "com.etl.jwt.config.AuthJwtProperties" + "sourceType": "com.etl.jwt.config.AuthJwtProperties", + "defaultValue": false }, { "name": "auth.jwt.user-param-name", "type": "java.lang.String", "description": "用户登录-用户名参数名称", - "sourceType": "com.etl.jwt.config.AuthJwtProperties" + "sourceType": "com.etl.jwt.config.AuthJwtProperties", + "defaultValue": "userId" } ], "hints": [] diff --git a/etl-jwt-manage/target/etl-jwt-manage-1.0-SNAPSHOT.jar b/etl-jwt-manage/target/etl-jwt-manage-1.0-SNAPSHOT.jar index 91f48628ac461dd9bbfc9687880b9f0a425c4cd2..0bd7540cd2967a8b84b327a52e4774d7786fcfef 100644 GIT binary patch delta 381 zcmZp4`|rvd;LXg!#Q*|dD<4nfRbl=Dq)g^9gLqfv!PIwU5H(qrQ5{UXGwOlq3Pv3e zy?HsK8V8thfwP(y%Ie6m0iI(ZBb+)dsFt$H`E#SO^`Hl023O5ehw@laGtFeE} z0pp`)miFQLD{YLYPS@VJLd96ua3_n#jHpSAXNSfunmv2Q^cj3pm>2@Q8JR?w;oge? z`x8oVg6YXOL^k z*4bbKqfmnlTZ~LL8kq(a@bLv27#SEne5&QGt99hu@S)Sjs>V_wP-;LXS+!VLFd z1lXrgf)hwjzAC2-^77>0a`s@S+RE#L>3n&xlP52gHwW|Y%iDoz1qB;09j_1yrnf8j ifoTrKFfg5{Xa%O{DLRAcCyMKkd^}qzj%~Xf$bJCyE0+cU diff --git a/etl-jwt-manage/target/maven-archiver/pom.properties b/etl-jwt-manage/target/maven-archiver/pom.properties index 918f375..3b6f1e7 100644 --- a/etl-jwt-manage/target/maven-archiver/pom.properties +++ b/etl-jwt-manage/target/maven-archiver/pom.properties @@ -1,5 +1,5 @@ #Generated by Maven -#Tue Jun 25 09:14:52 CST 2024 +#Wed Jul 03 15:15:41 CST 2024 version=1.0-SNAPSHOT groupId=com.bwie artifactId=etl-jwt-manage diff --git a/etl-roles/etl-roles.iml b/etl-roles/etl-roles.iml new file mode 100644 index 0000000..9e3449c --- /dev/null +++ b/etl-roles/etl-roles.iml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/etl-roles/pom.xml b/etl-roles/pom.xml new file mode 100644 index 0000000..01010c3 --- /dev/null +++ b/etl-roles/pom.xml @@ -0,0 +1,113 @@ + + + 4.0.0 + com.roles + etl-roles + 0.0.1-SNAPSHOT + etl-roles + etl-roles + + 1.8 + UTF-8 + UTF-8 + 2.6.13 + 2021.0.5.0 + 2021.0.5 + + + + org.springframework.cloud + spring-cloud-starter-bootstrap + + + com.bwie + etl-auth-common + 1.0-SNAPSHOT + + + com.mysql + mysql-connector-j + + + org.springframework.boot + spring-boot-starter-web + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + org.springframework.cloud + spring-cloud-starter + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${spring-cloud-alibaba.version} + pom + import + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + UTF-8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + com.etl.roles.EtlRolesApplication + true + + + + repackage + + repackage + + + + + + + + diff --git a/etl-roles/src/main/java/com/etl/roles/EtlRolesApplication.java b/etl-roles/src/main/java/com/etl/roles/EtlRolesApplication.java new file mode 100644 index 0000000..40ba81d --- /dev/null +++ b/etl-roles/src/main/java/com/etl/roles/EtlRolesApplication.java @@ -0,0 +1,15 @@ +package com.etl.roles; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +@MapperScan("com.etl.roles.mapper") +public class EtlRolesApplication { + + public static void main(String[] args) { + SpringApplication.run(EtlRolesApplication.class, args); + } + +} diff --git a/etl-roles/src/main/java/com/etl/roles/controlller/PermissionController.java b/etl-roles/src/main/java/com/etl/roles/controlller/PermissionController.java new file mode 100644 index 0000000..736f502 --- /dev/null +++ b/etl-roles/src/main/java/com/etl/roles/controlller/PermissionController.java @@ -0,0 +1,52 @@ +package com.etl.roles.controlller; + +import com.auth.common.entity.PathPermission; +import com.auth.common.entity.RolesPermission; +import com.auth.common.enums.PermissionConstants; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.etl.roles.service.PathService; +import com.etl.roles.service.PermissionService; +import io.swagger.annotations.Api; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 角色权限 controller层 + */ +@RestController +@Api(tags ="权限-API") +@RequestMapping("/permission") +public class PermissionController { + @Autowired + private PermissionService permissionService; + + @Resource + private PathService pathService; + + @PostMapping("/permission/add") + public boolean permissionAdd(@RequestBody Map map) { + String roles = (String) map.get(PermissionConstants.ROLES); + List codeList = (List) map.get(PermissionConstants.CODE_LIST); + return permissionService.permissionAdd(roles, codeList); + } + + @GetMapping("/get") + public List pathGet(@RequestParam("roles") String roles) { + RolesPermission permission = permissionService.getOne(new QueryWrapper().eq(PermissionConstants.ROLE,roles)); + String codes = StringUtils.strip(permission.getPermissionCode(), "[]"); + List list = Arrays.asList(codes.split(",")); + List pathList = new ArrayList<>(); + for(String code:list){ + String api = pathService.getOne(new QueryWrapper().eq(PermissionConstants.PERMISSION_CODE,code.trim())).getPath(); + pathList.add(api); + } + return pathList; + } +} diff --git a/etl-roles/src/main/java/com/etl/roles/controlller/Test.java b/etl-roles/src/main/java/com/etl/roles/controlller/Test.java new file mode 100644 index 0000000..5a03f54 --- /dev/null +++ b/etl-roles/src/main/java/com/etl/roles/controlller/Test.java @@ -0,0 +1,35 @@ +package com.etl.roles.controlller; + +import java.util.concurrent.TimeUnit; + +public class Test { + public static void main(String[] args) { + //设置一个钩子线程, 退出时输出日志 + Runtime.getRuntime().addShutdownHook(new Thread(() -> { + System.out.println("JVM退出"); + })); + Thread thread = new Thread(() -> { + while (true) { + try { + // + TimeUnit.SECONDS.sleep(1); + System.out.println("线程执行中"); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + }); + + // + thread.setDaemon(true); + thread.start(); + + try { + TimeUnit.SECONDS.sleep(2); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + System.out.println("主线程已经退出"); + } +} diff --git a/etl-roles/src/main/java/com/etl/roles/mapper/PathMapper.java b/etl-roles/src/main/java/com/etl/roles/mapper/PathMapper.java new file mode 100644 index 0000000..ca92afc --- /dev/null +++ b/etl-roles/src/main/java/com/etl/roles/mapper/PathMapper.java @@ -0,0 +1,9 @@ +package com.etl.roles.mapper; + +import com.auth.common.entity.PathPermission; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +@Repository +public interface PathMapper extends BaseMapper { +} diff --git a/etl-roles/src/main/java/com/etl/roles/mapper/PermissionMapper.java b/etl-roles/src/main/java/com/etl/roles/mapper/PermissionMapper.java new file mode 100644 index 0000000..0df136f --- /dev/null +++ b/etl-roles/src/main/java/com/etl/roles/mapper/PermissionMapper.java @@ -0,0 +1,10 @@ +package com.etl.roles.mapper; + + +import com.auth.common.entity.RolesPermission; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +@Repository +public interface PermissionMapper extends BaseMapper { +} diff --git a/etl-roles/src/main/java/com/etl/roles/service/PathService.java b/etl-roles/src/main/java/com/etl/roles/service/PathService.java new file mode 100644 index 0000000..dc85f6c --- /dev/null +++ b/etl-roles/src/main/java/com/etl/roles/service/PathService.java @@ -0,0 +1,9 @@ +package com.etl.roles.service; + +import com.auth.common.entity.PathPermission; +import com.auth.common.entity.RolesPermission; +import com.auth.common.entity.UserAccount; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface PathService extends IService { +} diff --git a/etl-roles/src/main/java/com/etl/roles/service/PermissionService.java b/etl-roles/src/main/java/com/etl/roles/service/PermissionService.java new file mode 100644 index 0000000..ae2c5b9 --- /dev/null +++ b/etl-roles/src/main/java/com/etl/roles/service/PermissionService.java @@ -0,0 +1,11 @@ +package com.etl.roles.service; + +import com.auth.common.entity.RolesPermission; +import com.auth.common.entity.UserAccount; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +public interface PermissionService extends IService { + boolean permissionAdd(String roles, List codeList); +} diff --git a/etl-roles/src/main/java/com/etl/roles/service/impl/PathServiceImpl.java b/etl-roles/src/main/java/com/etl/roles/service/impl/PathServiceImpl.java new file mode 100644 index 0000000..e57c5a1 --- /dev/null +++ b/etl-roles/src/main/java/com/etl/roles/service/impl/PathServiceImpl.java @@ -0,0 +1,13 @@ +package com.etl.roles.service.impl; + +import com.auth.common.entity.PathPermission; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.etl.roles.mapper.PathMapper; +import com.etl.roles.service.PathService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +@Service +@Slf4j +public class PathServiceImpl extends ServiceImpl implements PathService { +} diff --git a/etl-roles/src/main/java/com/etl/roles/service/impl/PermissionServiceImpl.java b/etl-roles/src/main/java/com/etl/roles/service/impl/PermissionServiceImpl.java new file mode 100644 index 0000000..65902f6 --- /dev/null +++ b/etl-roles/src/main/java/com/etl/roles/service/impl/PermissionServiceImpl.java @@ -0,0 +1,61 @@ +package com.etl.roles.service.impl; + +import com.auth.common.entity.RolesPermission; +import com.auth.common.enums.PermissionConstants; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.etl.roles.mapper.PermissionMapper; +import com.etl.roles.service.PermissionService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; + +@Service +@Slf4j +public class PermissionServiceImpl extends ServiceImpl implements PermissionService { + @Autowired + private PermissionMapper permissionMapper; + + @Override + public boolean permissionAdd(String roles, List codeList) { + RolesPermission rolesPermission = new RolesPermission(); + rolesPermission.setRole(roles); + int result = 0; + RolesPermission role = getRoleByName(roles); + + if (role != null) { + result = updateRolePermission(rolesPermission, role, codeList); + } else { + result = insertRolePermission(rolesPermission, codeList); + } + return result > 0; + } + + private RolesPermission getRoleByName(String roleName) { + return permissionMapper.selectOne(new QueryWrapper().eq(PermissionConstants.ROLE, roleName)); + } + + private int updateRolePermission(RolesPermission rolesPermission, RolesPermission role, List codeList) { + //去掉头尾括号,并转为列表 + List list = new java.util.ArrayList<>(Collections.singletonList( + StringUtils.strip(role.getPermissionCode(), "[]"))); + //将新数据添加至列表 + list.addAll(codeList); + + rolesPermission.setPermissionCode(list.toString()); + rolesPermission.setId(role.getId()); + return permissionMapper.updateById(rolesPermission); + } + + private int insertRolePermission(RolesPermission rolesPermission, List codeList) { + if (codeList != null) { + rolesPermission.setPermissionCode(codeList.toString()); + } + return permissionMapper.insert(rolesPermission); + } + +} diff --git a/etl-roles/src/main/resources/bootstrap.yml b/etl-roles/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..ece1726 --- /dev/null +++ b/etl-roles/src/main/resources/bootstrap.yml @@ -0,0 +1,40 @@ +server: + port: 9097 +spring: + application: + name: engine-roles + redis: + host: 115.159.33.152 + port: 6379 + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://115.159.33.152:3306/etl + username: root + password: lzm@123 + mvc: + pathmatch: + matching-strategy: ant_path_matcher + profiles: + active: dev + cloud: + nacos: + #注册服务 + discovery: + server-addr: 115.159.33.152:8848 + namespace: f9f293d4-55ce-45c1-aa15-124ca461c060 + # 配置 + config: + server-addr: 115.159.33.152:8848 + namespace: f9f293d4-55ce-45c1-aa15-124ca461c060 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} +logging: + level: + com.bwie: DEBUG +mybatis-plus: + mapper-locations: classpath:/mapper/*mapper.xml + typeAliasesPackage: com.etl.database.common.entity + diff --git a/etl-roles/src/main/resources/static/index.html b/etl-roles/src/main/resources/static/index.html new file mode 100644 index 0000000..e2d94a2 --- /dev/null +++ b/etl-roles/src/main/resources/static/index.html @@ -0,0 +1,6 @@ + + +

hello word!!!

+

this is a html page

+ + \ No newline at end of file diff --git a/etl-roles/src/test/java/com/etl/roles/EtlRolesApplicationTests.java b/etl-roles/src/test/java/com/etl/roles/EtlRolesApplicationTests.java new file mode 100644 index 0000000..ea3ca5e --- /dev/null +++ b/etl-roles/src/test/java/com/etl/roles/EtlRolesApplicationTests.java @@ -0,0 +1,13 @@ +package com.etl.roles; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class EtlRolesApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/etl-roles/target/classes/bootstrap.yml b/etl-roles/target/classes/bootstrap.yml new file mode 100644 index 0000000..ece1726 --- /dev/null +++ b/etl-roles/target/classes/bootstrap.yml @@ -0,0 +1,40 @@ +server: + port: 9097 +spring: + application: + name: engine-roles + redis: + host: 115.159.33.152 + port: 6379 + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://115.159.33.152:3306/etl + username: root + password: lzm@123 + mvc: + pathmatch: + matching-strategy: ant_path_matcher + profiles: + active: dev + cloud: + nacos: + #注册服务 + discovery: + server-addr: 115.159.33.152:8848 + namespace: f9f293d4-55ce-45c1-aa15-124ca461c060 + # 配置 + config: + server-addr: 115.159.33.152:8848 + namespace: f9f293d4-55ce-45c1-aa15-124ca461c060 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} +logging: + level: + com.bwie: DEBUG +mybatis-plus: + mapper-locations: classpath:/mapper/*mapper.xml + typeAliasesPackage: com.etl.database.common.entity + diff --git a/etl-roles/target/classes/com/etl/roles/EtlRolesApplication.class b/etl-roles/target/classes/com/etl/roles/EtlRolesApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..aba539a1edc64082fe4cd27120752108e6927422 GIT binary patch literal 797 zcmah{O>fgc5Ph2_aWH|Fw3L>ws^XI7ki8%-L6u4bCj(N0!l9?N*_ti(uC-nl_*tAl z9QXnJD8%eGB0&nmmUcYzX5P#^@6TV~e*k!lgBWexiLe)AA9o|%W9U9rTDfC}jp5Op zp*=P4B*SK+w0zZ+skCoIT2N$=m`oINVU_n6!M1y^YKBKiW=bwy!L2D|&7ZsC)PI~* zRiQHBl+hESE``zzyTh~OLR<=72%Ynpvr6Za&|27>$hOzO4Drk~Hj^)upJi`NgR$pi z*gtKwQ>C1%TG5;*S{oMzAm-!5*qqmu?|5!SDL)$ffv3heE*fVtqt8{|SjlH0!je=Pe_HUDqN=2wWx}u9xfDf1!|sqaW71|Ev>BHnr;iT042S>KEyDdi z9^fIv)>5?B>4nT3!|0#;Ty3y2J^f$XkoxIxMf_Uy$9@1wO!kw8vmk<14T|{UCxHy; t4O*jb*m%3Fj|uUW5#=s9dbo*Ainp*8&RZCe9gx3Gc86GRpMllb{SEvK)E@u< literal 0 HcmV?d00001 diff --git a/etl-roles/target/classes/com/etl/roles/controlller/PermissionController.class b/etl-roles/target/classes/com/etl/roles/controlller/PermissionController.class new file mode 100644 index 0000000000000000000000000000000000000000..378758ef07b08ccc2d1a446f43c7726b235b554a GIT binary patch literal 3590 zcmb7GYjYE26n-{Mx@of9$~D~NQcABZ%Dn|NR6(>YrG+9O!X{bLg=9DEZYcGJiZ>Lc z-bKaxj9>hqGfts05l4@7Sw_1s@)P2gGJLd^7^ph7^$3|G)>FZ zTzYdP?CiDdtm+hO!_1zwwY)xR+2_@iu9=Q{R!h5cTEE*c4R^1Ex|Y^q3E>_q!&K+>8m8V~%%^nw zh{pIOH1=9)EjO&$hIlUv!|sT|gf>r$BW;;3A!pXG|dcp4ab!*KVT^&TwPL~ z##mu0m2ClC?!Wtf*8$0))HyxvcJHObrhuK;qlTeSYZx-JrsfuHLb-EVt~E?*?IjS| zR(hwn1_c|?EaR$zEqF&lx7Z}5S$QL471jJ$ifru^ zaz%&jX6w9|8N=gml>w8W4~y$Dn-iwn1VJ#8f_HI^Y&dIAWpf4Z;e83s_orE_!4+J` zxP;KjQ!+kK@F6~uAayAC7@x@aRKaKXT*5*>*Q9N0W2J;|;0yM-f-muvf}8kSK`Yuw z3jUm(7Neu!8;r~NR>FoELK@&i`OT)_JB%y%9zRIfBrNiB(DKe((p$ zL>do79vHrm%|fQ|2B$elD`i$L(~395Ws!u9)p5;ubTj9m%krr*ou~vAhx7~67^A$| z{oGwMqIxE9$mH1WFHzg9dav9u-8DTfphv$dJsyWHY6+@V4#_6*1)>$S^oVF}L8p!? z0NYYNN00It=1@l*o~i_U>ck2XV<644+nPH?I79|1ZetBtTTkBaWU3>)4*{=t8ArY5 zln8u7OVFgc;GTt0BPm6VO5-eVr~?J!I1@+g;$Z4iF`vL%eu*~m8#u&2QW1y|-|Bg9@uZy1fUKReI=+(; zdELY}m3N8vNZTz)zj`JrufhSa9GiJnN(y)wkMK<*(``lAGaje2Fl9~cjdha zzV^oY^0VCE_8X!dos(#&!_U;K<95JY-odaH2EL3zi#^&(e#(2$Ber2X_fn{_13Q`A zGCuD@7j3(#zl4&K)^2K**7k61FQp+o>VYtqE06I%c@mO?edytuEV6x^4-%fh{!$uJ ziuVS}u8VN*Aa?u~;*CoC1m@hu+)2z6dCl+Zn81R@#@krf-`Tim0*h~BNmuv|mQs6J zS0oXhL_$JWeS+C9mv93~@w7q`m~_eXymHF(s)Rg&)l=Rd65iKLU~N}45lKWRu`YyT zKi#{Ni2TBk!X9GHUU+R-g?47v!8&vjg-tlY)yu^1Dsj6;sX%fNQOaUCK-8k1#*=)K zMS2xbbdQ!31nN@0#x3N!2#MiGTMCWH=y3*i~M4dJ+_znWp4;5+Mx OXT4&c!gCe-)Bgc*r|7Bx literal 0 HcmV?d00001 diff --git a/etl-roles/target/classes/com/etl/roles/controlller/Test.class b/etl-roles/target/classes/com/etl/roles/controlller/Test.class new file mode 100644 index 0000000000000000000000000000000000000000..daa515aa89022e0c4108a071c80c111cbd33a228 GIT binary patch literal 2061 zcma)7T~iZR7=AVcmMlwyL6oKy&_Wx)8g0>j#M)Lw1%qFSv}(T&$q`mJyXodc%bjDvl~l-)M;k2yYI(&-{*bK`=0aY@AcmROyIVK zejK)N1n-!5H$~n17TWNE)_j=wHmD^ofa2O`Nol#AE`eFx83E z7S7;oC#EgDf|*X7Gm$qjYoOz}<2mYtfws)(oPqeHUzP@vdB>CI>y>#K6veztO)Bq~ zggYk!N6QUmTrD~^14H?eU&%`4W&_`qwQR}v6u(?o2HB#lsT|{0gyR|5lewP1DQ=6b zE4+nlK?RPtkkfe$rWk56O?yfPLA|PEdFs28tSZO%bQlpVFk$ZwQCNyv45TP)tXnyX zp^i(t3rdu3&5CM>-NXoqB~LWCqB36=!y4i6k!|u}16IMW2PJvh(KIAWa zU)cB(U)lH?-xwI!3cV982GUy&m+PK#D)L{>bP8c&-bM*zrtk5Cjm`Cko4@?{WNl@0 zG6YKZ7d?qs%PeABUhq%`Chj$abf~t z{vGeE?=w_ivu~q6M(1=Mm!;OEIwfSqXSR6envT$3QzBp$`@$;f%5imvm+C<2)UuU|$ zD2d}|FLI0&he?VGL-&R-Th#kEl%$D@4G)2hw~@ASP&dMX zt&McN+x{(?&4CM!aZL z&I+&0lVmtrm}}bG2H+-5%fjMPRW`f-e`A#Lc)OHV}E#{$9dTEpyBg1%2~b*zT3yvVBFW|JznRtBT`}?zwO5N00t=~FvMWd z;zx+{z5vcVKx_kTSJx?H4ehJwh(t3K^W*VVbdIkgu>xy1x>nJ>jPBVDB(EM^L(jt% z>`J9p(R-g^GrW%`c%!t1Fvegpd?!-qV)A|r6M2S~Ba|ix?kEO$JMG7590;Kfaotfu zJb*V?2!V0M2;YNT^(Nj5;{&~jJ>&A2iBS_{FieamdMw?Kjk+ofqe)2M0 zM?&1BS?Amnk^-9ao>-wNK|1s;eTbSEx9{7~V!%fYRnjv-c@Hf|>2nP4@gIHVaO@ur CSOf#1BBi3tJEp3`{{(t;Bu_CcScZj(m5Z{51xC06z+GNrjNu z82oI>AMZVXe!YJHz$F|NFfZVsfI|hdm1(_>Nl1aMHu_bg)xO1tdP7YttA-ucnw@## zgs!i3G@-L8V8cS_bk~vKtqycQmRI9~PH~+FoMVsVqlrB(bX+e;oC(3OFRx1l^A#s) z=+4;8eLM_oZ(Iy26r3(oUUl?nf~hUtc+WAjvkwZ+E0z{RC&stWq8+`lykLkV#If%P zm(+1Ek)_W>XM+if7KJT^AJM;r3QqnSS1{=RkMpSl1(O^*`NxoPH{%5MU^?ak_H&-* H{tVz7*Nl4_ literal 0 HcmV?d00001 diff --git a/etl-roles/target/classes/com/etl/roles/mapper/PermissionMapper.class b/etl-roles/target/classes/com/etl/roles/mapper/PermissionMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..60d37a5927d7caf3b2c0c1e5df5e3a015f03b89e GIT binary patch literal 407 zcmb7AJx|0i40R5;atBB(4Ez8lB)qT{A;G{@1nNobX)z^75=Tx7>R)5v2k@g1X%RxY zjlmz1?f0JF=hyoO0Gz`?0m}mR3fNb$Seef2)C(za)mp!5wAy!g*Q}{cW!197Mzb@I z+@l*BolFe2kJz#hIvoNDUh7D=Q+qKT=srE?1?Si!`DD_7HCu}JB+kTW*q4{3g5`>P zY3at;On&q?{DC?f#V9zg`;6e|!9>$oy7Hb=7QsF$IIUPZj6sa=oRyG`R-p+XjJ20PW0lT@* I^LzpD4a~oQ*8l(j literal 0 HcmV?d00001 diff --git a/etl-roles/target/classes/com/etl/roles/service/PathService.class b/etl-roles/target/classes/com/etl/roles/service/PathService.class new file mode 100644 index 0000000000000000000000000000000000000000..e7a6fb2752c9673546cd135b6af146a7efc741bf GIT binary patch literal 319 zcmbV|J8r^25Qb+7U>*%u$OV`JI!7rZAz8wbPp~#4d(l47?ks|xF7|7*VPw@(1r!ZL$d2J;LS0_K%!t>oxQz^OROvqUXzi~IUW4d+GU4A#;ab#M{Q zwU(^HNymV6VX{Fvi-G)EHH5qBdwClm8M(tmo1`GiimzBo?n?4Tg`Ugba{-IWMc>ee z(#e0-3x1BQ`zQildw*h$-f0TIR)2&E`=46C=84!-0Rl#;Uec2wZR4R&U^>j~0ne>u AB>(^b literal 0 HcmV?d00001 diff --git a/etl-roles/target/classes/com/etl/roles/service/PermissionService.class b/etl-roles/target/classes/com/etl/roles/service/PermissionService.class new file mode 100644 index 0000000000000000000000000000000000000000..5bcb8ee93f072c3ae4a581c0ed17bc810a3f896f GIT binary patch literal 464 zcmbVJO-lnY5S^*DYpWGc{sU1j&OtA-rQk&H*lQ5VFE`9j1k65>1yS@vgWR;5Y8^Lg;)vF!ptdWr_4O< zI)Rm@OnFW(pAm++nj68vNrc`6zrAkS&yh|o6NCbYNh_2&?G^}_{PgYC+xbc`yQ-o1&gDd5|(oy{BcKE|} z)f@ofypbVUlWQn8FYc@(oNO=FSwOh{hlc?ILNCT%{3Yxo^kF|%gIM(-iP2>TFl;-c EZ=rCJN&o-= literal 0 HcmV?d00001 diff --git a/etl-roles/target/classes/com/etl/roles/service/impl/PathServiceImpl.class b/etl-roles/target/classes/com/etl/roles/service/impl/PathServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..a6192849048b9280a322d62d6766759285234697 GIT binary patch literal 878 zcmbVK%We}f6g|#^Nzy=RD3q2*$pR^@5Z-h*Q6*HV5>h}FLD@S~cjDr)N4BRWzr+r) z0I}c$_$b7kNkE}xfmqD7@ALSax!-?${RZFw{SKPgig3S!ZS1sB!-EJ9BRpcLYnw9k zM%Ja=>$8J%KC)>lUCeM}sEi7SR5RF{Ff@+rsbp9mDI;GO*;Kl>VyY=Z&56(x;Z*4_ zgN-m#p5fUju^E>^b7!^m+)H<%63JDTYknfaY`h4(B%dH#!$dDZ+hdg)5ei2LAF3%+ zVKa4V3!crVA}F8h!gKjPNaK|?e~w-mJG}CQOys$A75J;_8dn9P2s2KP&1jS~L4|o$ zaw1)(dZt(I%8Y7L>{YBo6VJ6$?^HQxDX86Zwi9Q;y+ zJMIc$hOMh>bu5x#-JGGF%COiphNpv3DGS%ar2I$=@8iAe3yD7MZ4O*I{5PR+WOy`-pX3d&f?wH9?-%aPf- zv~KF|DBAap!e%f21l1N3(D0 zSxwOkMWZ5=X@7c>X3245nT)YqPT)XaWxpDNDswVtT5ar#FHfWe%oYHG7?M!Q+$iSfGAd&zq`SvdR33%_*sAm}zRv zYc2I+n_+Q5k(m2pr_9yZNz~;lPz~5@RyP@tlko@S=3xkl87dl6t~F z_*=@OU}IA?o$sJ>Uyj;u;w^oZqCra)=;5QH7S-%Lrztl*$7{MrgRXm#+ATHps6#!t zSjEV?zFgU?V!nOP$1$I!%RC5|7o+s(H(z=e@Nz>K*D_)dzc)hJM zq}62x8uz>BsU_da#zf*SSLZhwf%fWK8HD>NIYsjzdXOt(n3;x~A@h zpl1l3eER4P9pY+6a|h|Yj-I{2ld2?r_0yL^PeIRU{|dx!^b*2AAO!5hAic}J0ETdg zz67ZpCMj0_2N5z0r0*egc?ID!Lj%i*ghwL%11pFoqaD!)XzCy8hz_oxZY1(E8v2Lm zRT_!3Mt*`s6Or&Qq#yBo?njK?J80}gBX-d(eK*?CP2(PdyAMxMNQ`IH_Zi?J@3eBn z!?j`;Tb_cDRxqj zA7c;!nb{E@2xR21Uo?@BCUJrJgueb)g z3#UBTA?`i2#^&#n`6xY;_t12Ca2Y$Ao9|%f9ki^VH5uuM4BbUr2$u#rBFkuB#uEc1 z)3Jn5st$*V$vGnK=>w>3;jk2cPSq(>Hq zn)FBwll}obPZ|-AKtCE@OOZc+Ek$cSX%iF=HPaxfTl5T*rS`!GXkf?;J%GI1hwNv- zHc#vrnK@27l=L9(^;Op(wy!~K_ke{wIR1X}%<6uIA>;tfBqhX4YZ<@KOBJBLx$6$P cf5#rqdQp+}&E(M!<7H%MErio+2j~p&FERD{*Z=?k literal 0 HcmV?d00001 diff --git a/etl-roles/target/classes/static/index.html b/etl-roles/target/classes/static/index.html new file mode 100644 index 0000000..e2d94a2 --- /dev/null +++ b/etl-roles/target/classes/static/index.html @@ -0,0 +1,6 @@ + + +

hello word!!!

+

this is a html page

+ + \ No newline at end of file diff --git a/etl-roles/target/test-classes/com/etl/roles/EtlRolesApplicationTests.class b/etl-roles/target/test-classes/com/etl/roles/EtlRolesApplicationTests.class new file mode 100644 index 0000000000000000000000000000000000000000..6b20edaf3bf985cd229619aa3dcdf6b5cd16fe34 GIT binary patch literal 537 zcma)2O-lnY5PjKxthTGI)r+9uNveXmh!;huqNhcnExl*Av8L`OOE#yh+rV|@n+teNj|^cKLDIytA!dieDr*5GBnSXR_=nK)<2jq)UV7`GIT7-U(ZV&Rn0W0|}Bj3J1P zcJjrAMofvhJuI|Sshp@>k?cTggsyZ$Sucid3qrtHMzvnS@%V|6j zddBafxr`n5;L&fF$D>PXpf9J0lV{``hi_o7RoN%otUw