From 771133a4b70e28ad7362cf52d68113d1f6f2e3fd Mon Sep 17 00:00:00 2001 From: fst1996 <2411194573@qq.com> Date: Tue, 10 Oct 2023 19:25:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 8 + .idea/compiler.xml | 28 ++ .idea/encodings.xml | 12 + .idea/inspectionProfiles/Project_Default.xml | 36 ++ .idea/jarRepositories.xml | 20 ++ .idea/misc.xml | 14 + .idea/vcs.xml | 6 + bwie-auth/pom.xml | 28 ++ .../java/com/bwie/auth/AuthApplication.java | 13 + .../auth/config/ConfirmCallbackConfig.java | 48 +++ .../auth/config/ReturnCallbackConfig.java | 41 +++ .../bwie/auth/controller/AuthController.java | 78 +++++ .../com/bwie/auth/feign/UserFeignService.java | 19 ++ .../com/bwie/auth/service/AuthService.java | 14 + .../auth/service/impl/AuthServiceImpl.java | 96 ++++++ bwie-auth/src/main/resources/bootstrap.yml | 30 ++ bwie-auth/target/bwie-auth-1.0-SNAPSHOT.jar | Bin 0 -> 10491 bytes bwie-auth/target/classes/bootstrap.yml | 30 ++ .../com/bwie/auth/AuthApplication.class | Bin 0 -> 815 bytes .../auth/config/ConfirmCallbackConfig.class | Bin 0 -> 2283 bytes .../auth/config/ReturnCallbackConfig.class | Bin 0 -> 1929 bytes .../bwie/auth/controller/AuthController.class | Bin 0 -> 3264 bytes .../bwie/auth/feign/UserFeignService.class | Bin 0 -> 705 bytes .../com/bwie/auth/service/AuthService.class | Bin 0 -> 578 bytes .../auth/service/impl/AuthServiceImpl.class | Bin 0 -> 4915 bytes .../target/maven-archiver/pom.properties | 3 + .../compile/default-compile/createdFiles.lst | 7 + .../compile/default-compile/inputFiles.lst | 7 + .../default-testCompile/createdFiles.lst | 0 .../default-testCompile/inputFiles.lst | 0 bwie-common/pom.xml | 113 +++++++ .../com/bwie/common/config/RedisConfig.java | 40 +++ .../com/bwie/common/constants/Constants.java | 18 + .../bwie/common/constants/JwtConstants.java | 29 ++ .../bwie/common/constants/TokenConstants.java | 24 ++ .../com/bwie/common/domain/Repayment.java | 38 +++ .../common/domain/request/LoanRequest.java | 49 +++ .../common/domain/request/LoginRequest.java | 9 + .../common/domain/response/JwtResponse.java | 9 + .../com/bwie/common/domain/response/Loan.java | 69 ++++ .../common/domain/response/UserResponse.java | 17 + .../com/bwie/common/result/PageResult.java | 34 ++ .../java/com/bwie/common/result/Result.java | 76 +++++ .../java/com/bwie/common/utils/FastUtil.java | 55 ++++ .../java/com/bwie/common/utils/HttpPost.java | 77 +++++ .../java/com/bwie/common/utils/HttpUtils.java | 310 ++++++++++++++++++ .../java/com/bwie/common/utils/JwtUtils.java | 109 ++++++ .../java/com/bwie/common/utils/MsgUitl.java | 76 +++++ .../java/com/bwie/common/utils/OssUtil.java | 153 +++++++++ .../com/bwie/common/utils/StringUtils.java | 68 ++++ .../com/bwie/common/utils/TelSmsUtils.java | 87 +++++ .../target/bwie-common-1.0-SNAPSHOT.jar | Bin 0 -> 36559 bytes .../com/bawei/common/utils/TelSmsUtils.class | Bin 0 -> 3753 bytes .../com/bwie/common/config/RedisConfig.class | Bin 0 -> 3159 bytes .../com/bwie/common/constants/Constants.class | Bin 0 -> 651 bytes .../bwie/common/constants/JwtConstants.class | Bin 0 -> 544 bytes .../common/constants/TokenConstants.class | Bin 0 -> 526 bytes .../com/bwie/common/domain/Repayment.class | Bin 0 -> 4400 bytes .../common/domain/request/LoanRequest.class | Bin 0 -> 5444 bytes .../common/domain/request/LoginRequest.class | Bin 0 -> 1944 bytes .../common/domain/response/JwtResponse.class | Bin 0 -> 1907 bytes .../bwie/common/domain/response/Loan.class | Bin 0 -> 7659 bytes .../common/domain/response/UserResponse.class | Bin 0 -> 3849 bytes .../com/bwie/common/result/PageResult.class | Bin 0 -> 3304 bytes .../com/bwie/common/result/Result.class | Bin 0 -> 4886 bytes .../com/bwie/common/utils/FastUtil.class | Bin 0 -> 2597 bytes .../com/bwie/common/utils/HttpPost.class | Bin 0 -> 3049 bytes .../com/bwie/common/utils/HttpUtils$1.class | Bin 0 -> 992 bytes .../com/bwie/common/utils/HttpUtils.class | Bin 0 -> 10290 bytes .../com/bwie/common/utils/JwtUtils.class | Bin 0 -> 2874 bytes .../com/bwie/common/utils/MsgUitl.class | Bin 0 -> 2886 bytes .../com/bwie/common/utils/OssUtil.class | Bin 0 -> 5195 bytes .../com/bwie/common/utils/StringUtils.class | Bin 0 -> 1808 bytes .../target/maven-archiver/pom.properties | 3 + .../compile/default-compile/createdFiles.lst | 21 ++ .../compile/default-compile/inputFiles.lst | 19 ++ .../default-testCompile/createdFiles.lst | 0 .../default-testCompile/inputFiles.lst | 0 bwie-gateway/pom.xml | 38 +++ .../com/bwie/gateway/GatewayApplication.java | 11 + .../gateway/config/IgnoreWhiteConfig.java | 32 ++ .../com/bwie/gateway/filters/MyFilter.java | 63 ++++ .../com/bwie/gateway/utils/GatewayUtils.java | 98 ++++++ bwie-gateway/src/main/resources/bootstrap.yml | 29 ++ .../target/bwie-gateway-1.0-SNAPSHOT.jar | Bin 0 -> 9265 bytes bwie-gateway/target/classes/bootstrap.yml | 29 ++ .../com/bwie/gateway/GatewayApplication.class | Bin 0 -> 767 bytes .../gateway/config/IgnoreWhiteConfig.class | Bin 0 -> 2590 bytes .../com/bwie/gateway/filters/MyFilter.class | Bin 0 -> 3960 bytes .../com/bwie/gateway/utils/GatewayUtils.class | Bin 0 -> 6222 bytes .../target/maven-archiver/pom.properties | 3 + .../compile/default-compile/createdFiles.lst | 4 + .../compile/default-compile/inputFiles.lst | 4 + .../default-testCompile/createdFiles.lst | 0 .../default-testCompile/inputFiles.lst | 0 bwie-modules/bwie-es/pom.xml | 38 +++ .../main/java/com/bwie/es/EsApplication.java | 24 ++ .../es/config/InitEsRestHighLevelClient.java | 36 ++ .../com/bwie/es/controller/EsController.java | 57 ++++ .../com/bwie/es/feign/LoanFeignService.java | 18 + .../java/com/bwie/es/service/EsService.java | 12 + .../bwie/es/service/impl/EsServiceImpl.java | 90 +++++ .../bwie-es/src/main/resources/bootstrap.yml | 22 ++ .../bwie-es/target/bwie-es-1.0-SNAPSHOT.jar | Bin 0 -> 9631 bytes .../bwie-es/target/classes/bootstrap.yml | 22 ++ .../classes/com/bwie/es/EsApplication.class | Bin 0 -> 1186 bytes .../es/config/InitEsRestHighLevelClient.class | Bin 0 -> 3505 bytes .../com/bwie/es/controller/EsController.class | Bin 0 -> 2387 bytes .../com/bwie/es/feign/LoanFeignService.class | Bin 0 -> 492 bytes .../com/bwie/es/service/EsService.class | Bin 0 -> 311 bytes .../bwie/es/service/impl/EsServiceImpl.class | Bin 0 -> 5577 bytes .../target/maven-archiver/pom.properties | 3 + .../compile/default-compile/createdFiles.lst | 6 + .../compile/default-compile/inputFiles.lst | 6 + .../default-testCompile/createdFiles.lst | 0 .../default-testCompile/inputFiles.lst | 0 bwie-modules/bwie-loan/pom.xml | 54 +++ .../java/com/bwie/loan/LoanApplication.java | 29 ++ .../loan/config/ConfirmCallbackConfig.java | 48 +++ .../com/bwie/loan/config/ProductConfig.java | 45 +++ .../loan/config/ReturnCallbackConfig.java | 41 +++ .../bwie/loan/controller/LoanController.java | 62 ++++ .../loan/controller/RepaymentController.java | 77 +++++ .../com/bwie/loan/feign/UserFeignService.java | 18 + .../java/com/bwie/loan/mapper/LoanMapper.java | 20 ++ .../com/bwie/loan/mapper/RepaymentMapper.java | 18 + .../com/bwie/loan/service/LoanService.java | 17 + .../bwie/loan/service/RepaymentService.java | 15 + .../loan/service/impl/LoanServiceImpl.java | 136 ++++++++ .../service/impl/RepaymentServiceImpl.java | 97 ++++++ .../src/main/resources/bootstrap.yml | 29 ++ .../src/main/resources/mapper/LoanMapper.xml | 26 ++ .../main/resources/mapper/RepaymentMapper.xml | 22 ++ .../target/bwie-loan-1.0-SNAPSHOT.jar | Bin 0 -> 20144 bytes .../bwie-loan/target/classes/bootstrap.yml | 29 ++ .../com/bwie/loan/LoanApplication.class | Bin 0 -> 1672 bytes .../loan/config/ConfirmCallbackConfig.class | Bin 0 -> 2283 bytes .../bwie/loan/config/ProductConfig$1.class | Bin 0 -> 869 bytes .../com/bwie/loan/config/ProductConfig.class | Bin 0 -> 2702 bytes .../loan/config/ReturnCallbackConfig.class | Bin 0 -> 1929 bytes .../bwie/loan/controller/LoanController.class | Bin 0 -> 2664 bytes .../loan/controller/RepaymentController.class | Bin 0 -> 3470 bytes .../bwie/loan/feign/UserFeignService.class | Bin 0 -> 689 bytes .../com/bwie/loan/mapper/LoanMapper.class | Bin 0 -> 820 bytes .../bwie/loan/mapper/RepaymentMapper.class | Bin 0 -> 694 bytes .../com/bwie/loan/service/LoanService.class | Bin 0 -> 639 bytes .../bwie/loan/service/RepaymentService.class | Bin 0 -> 622 bytes .../loan/service/impl/LoanServiceImpl.class | Bin 0 -> 7006 bytes .../service/impl/RepaymentServiceImpl.class | Bin 0 -> 3837 bytes .../target/classes/mapper/LoanMapper.xml | 26 ++ .../target/classes/mapper/RepaymentMapper.xml | 22 ++ .../target/maven-archiver/pom.properties | 3 + .../compile/default-compile/createdFiles.lst | 14 + .../compile/default-compile/inputFiles.lst | 9 + .../default-testCompile/createdFiles.lst | 0 .../default-testCompile/inputFiles.lst | 0 bwie-modules/bwie-system/bwie-system.iml | 2 + bwie-modules/bwie-system/pom.xml | 51 +++ .../com/bwie/system/SystemApplication.java | 11 + .../system/controller/UserController.java | 59 ++++ .../com/bwie/system/mapper/UserMapper.java | 14 + .../com/bwie/system/service/UserService.java | 10 + .../system/service/impl/UserServiceImpl.java | 37 +++ .../src/main/resources/bootstrap.yml | 29 ++ .../src/main/resources/mapper/UserMapper.xml | 14 + .../target/bwie-system-1.0-SNAPSHOT.jar | Bin 0 -> 6983 bytes .../bwie-system/target/classes/bootstrap.yml | 29 ++ .../com/bwie/system/SystemApplication.class | Bin 0 -> 762 bytes .../system/controller/UserController.class | Bin 0 -> 2711 bytes .../com/bwie/system/mapper/UserMapper.class | Bin 0 -> 549 bytes .../com/bwie/system/service/UserService.class | Bin 0 -> 416 bytes .../system/service/impl/UserServiceImpl.class | Bin 0 -> 1381 bytes .../target/classes/mapper/UserMapper.xml | 14 + .../target/maven-archiver/pom.properties | 3 + .../compile/default-compile/createdFiles.lst | 5 + .../compile/default-compile/inputFiles.lst | 5 + .../default-testCompile/createdFiles.lst | 0 .../default-testCompile/inputFiles.lst | 0 bwie-modules/pom.xml | 21 ++ month1010-fst.iml | 2 + pom.xml | 62 ++++ 181 files changed, 3911 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml create mode 100644 bwie-auth/pom.xml create mode 100644 bwie-auth/src/main/java/com/bwie/auth/AuthApplication.java create mode 100644 bwie-auth/src/main/java/com/bwie/auth/config/ConfirmCallbackConfig.java create mode 100644 bwie-auth/src/main/java/com/bwie/auth/config/ReturnCallbackConfig.java create mode 100644 bwie-auth/src/main/java/com/bwie/auth/controller/AuthController.java create mode 100644 bwie-auth/src/main/java/com/bwie/auth/feign/UserFeignService.java create mode 100644 bwie-auth/src/main/java/com/bwie/auth/service/AuthService.java create mode 100644 bwie-auth/src/main/java/com/bwie/auth/service/impl/AuthServiceImpl.java create mode 100644 bwie-auth/src/main/resources/bootstrap.yml create mode 100644 bwie-auth/target/bwie-auth-1.0-SNAPSHOT.jar create mode 100644 bwie-auth/target/classes/bootstrap.yml create mode 100644 bwie-auth/target/classes/com/bwie/auth/AuthApplication.class create mode 100644 bwie-auth/target/classes/com/bwie/auth/config/ConfirmCallbackConfig.class create mode 100644 bwie-auth/target/classes/com/bwie/auth/config/ReturnCallbackConfig.class create mode 100644 bwie-auth/target/classes/com/bwie/auth/controller/AuthController.class create mode 100644 bwie-auth/target/classes/com/bwie/auth/feign/UserFeignService.class create mode 100644 bwie-auth/target/classes/com/bwie/auth/service/AuthService.class create mode 100644 bwie-auth/target/classes/com/bwie/auth/service/impl/AuthServiceImpl.class create mode 100644 bwie-auth/target/maven-archiver/pom.properties create mode 100644 bwie-auth/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 bwie-auth/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 bwie-auth/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 bwie-auth/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 bwie-common/pom.xml create mode 100644 bwie-common/src/main/java/com/bwie/common/config/RedisConfig.java create mode 100644 bwie-common/src/main/java/com/bwie/common/constants/Constants.java create mode 100644 bwie-common/src/main/java/com/bwie/common/constants/JwtConstants.java create mode 100644 bwie-common/src/main/java/com/bwie/common/constants/TokenConstants.java create mode 100644 bwie-common/src/main/java/com/bwie/common/domain/Repayment.java create mode 100644 bwie-common/src/main/java/com/bwie/common/domain/request/LoanRequest.java create mode 100644 bwie-common/src/main/java/com/bwie/common/domain/request/LoginRequest.java create mode 100644 bwie-common/src/main/java/com/bwie/common/domain/response/JwtResponse.java create mode 100644 bwie-common/src/main/java/com/bwie/common/domain/response/Loan.java create mode 100644 bwie-common/src/main/java/com/bwie/common/domain/response/UserResponse.java create mode 100644 bwie-common/src/main/java/com/bwie/common/result/PageResult.java create mode 100644 bwie-common/src/main/java/com/bwie/common/result/Result.java create mode 100644 bwie-common/src/main/java/com/bwie/common/utils/FastUtil.java create mode 100644 bwie-common/src/main/java/com/bwie/common/utils/HttpPost.java create mode 100644 bwie-common/src/main/java/com/bwie/common/utils/HttpUtils.java create mode 100644 bwie-common/src/main/java/com/bwie/common/utils/JwtUtils.java create mode 100644 bwie-common/src/main/java/com/bwie/common/utils/MsgUitl.java create mode 100644 bwie-common/src/main/java/com/bwie/common/utils/OssUtil.java create mode 100644 bwie-common/src/main/java/com/bwie/common/utils/StringUtils.java create mode 100644 bwie-common/src/main/java/com/bwie/common/utils/TelSmsUtils.java create mode 100644 bwie-common/target/bwie-common-1.0-SNAPSHOT.jar create mode 100644 bwie-common/target/classes/com/bawei/common/utils/TelSmsUtils.class create mode 100644 bwie-common/target/classes/com/bwie/common/config/RedisConfig.class create mode 100644 bwie-common/target/classes/com/bwie/common/constants/Constants.class create mode 100644 bwie-common/target/classes/com/bwie/common/constants/JwtConstants.class create mode 100644 bwie-common/target/classes/com/bwie/common/constants/TokenConstants.class create mode 100644 bwie-common/target/classes/com/bwie/common/domain/Repayment.class create mode 100644 bwie-common/target/classes/com/bwie/common/domain/request/LoanRequest.class create mode 100644 bwie-common/target/classes/com/bwie/common/domain/request/LoginRequest.class create mode 100644 bwie-common/target/classes/com/bwie/common/domain/response/JwtResponse.class create mode 100644 bwie-common/target/classes/com/bwie/common/domain/response/Loan.class create mode 100644 bwie-common/target/classes/com/bwie/common/domain/response/UserResponse.class create mode 100644 bwie-common/target/classes/com/bwie/common/result/PageResult.class create mode 100644 bwie-common/target/classes/com/bwie/common/result/Result.class create mode 100644 bwie-common/target/classes/com/bwie/common/utils/FastUtil.class create mode 100644 bwie-common/target/classes/com/bwie/common/utils/HttpPost.class create mode 100644 bwie-common/target/classes/com/bwie/common/utils/HttpUtils$1.class create mode 100644 bwie-common/target/classes/com/bwie/common/utils/HttpUtils.class create mode 100644 bwie-common/target/classes/com/bwie/common/utils/JwtUtils.class create mode 100644 bwie-common/target/classes/com/bwie/common/utils/MsgUitl.class create mode 100644 bwie-common/target/classes/com/bwie/common/utils/OssUtil.class create mode 100644 bwie-common/target/classes/com/bwie/common/utils/StringUtils.class create mode 100644 bwie-common/target/maven-archiver/pom.properties create mode 100644 bwie-common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 bwie-common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 bwie-common/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 bwie-common/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 bwie-gateway/pom.xml create mode 100644 bwie-gateway/src/main/java/com/bwie/gateway/GatewayApplication.java create mode 100644 bwie-gateway/src/main/java/com/bwie/gateway/config/IgnoreWhiteConfig.java create mode 100644 bwie-gateway/src/main/java/com/bwie/gateway/filters/MyFilter.java create mode 100644 bwie-gateway/src/main/java/com/bwie/gateway/utils/GatewayUtils.java create mode 100644 bwie-gateway/src/main/resources/bootstrap.yml create mode 100644 bwie-gateway/target/bwie-gateway-1.0-SNAPSHOT.jar create mode 100644 bwie-gateway/target/classes/bootstrap.yml create mode 100644 bwie-gateway/target/classes/com/bwie/gateway/GatewayApplication.class create mode 100644 bwie-gateway/target/classes/com/bwie/gateway/config/IgnoreWhiteConfig.class create mode 100644 bwie-gateway/target/classes/com/bwie/gateway/filters/MyFilter.class create mode 100644 bwie-gateway/target/classes/com/bwie/gateway/utils/GatewayUtils.class create mode 100644 bwie-gateway/target/maven-archiver/pom.properties create mode 100644 bwie-gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 bwie-gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 bwie-gateway/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 bwie-gateway/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 bwie-modules/bwie-es/pom.xml create mode 100644 bwie-modules/bwie-es/src/main/java/com/bwie/es/EsApplication.java create mode 100644 bwie-modules/bwie-es/src/main/java/com/bwie/es/config/InitEsRestHighLevelClient.java create mode 100644 bwie-modules/bwie-es/src/main/java/com/bwie/es/controller/EsController.java create mode 100644 bwie-modules/bwie-es/src/main/java/com/bwie/es/feign/LoanFeignService.java create mode 100644 bwie-modules/bwie-es/src/main/java/com/bwie/es/service/EsService.java create mode 100644 bwie-modules/bwie-es/src/main/java/com/bwie/es/service/impl/EsServiceImpl.java create mode 100644 bwie-modules/bwie-es/src/main/resources/bootstrap.yml create mode 100644 bwie-modules/bwie-es/target/bwie-es-1.0-SNAPSHOT.jar create mode 100644 bwie-modules/bwie-es/target/classes/bootstrap.yml create mode 100644 bwie-modules/bwie-es/target/classes/com/bwie/es/EsApplication.class create mode 100644 bwie-modules/bwie-es/target/classes/com/bwie/es/config/InitEsRestHighLevelClient.class create mode 100644 bwie-modules/bwie-es/target/classes/com/bwie/es/controller/EsController.class create mode 100644 bwie-modules/bwie-es/target/classes/com/bwie/es/feign/LoanFeignService.class create mode 100644 bwie-modules/bwie-es/target/classes/com/bwie/es/service/EsService.class create mode 100644 bwie-modules/bwie-es/target/classes/com/bwie/es/service/impl/EsServiceImpl.class create mode 100644 bwie-modules/bwie-es/target/maven-archiver/pom.properties create mode 100644 bwie-modules/bwie-es/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 bwie-modules/bwie-es/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 bwie-modules/bwie-es/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 bwie-modules/bwie-es/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 bwie-modules/bwie-loan/pom.xml create mode 100644 bwie-modules/bwie-loan/src/main/java/com/bwie/loan/LoanApplication.java create mode 100644 bwie-modules/bwie-loan/src/main/java/com/bwie/loan/config/ConfirmCallbackConfig.java create mode 100644 bwie-modules/bwie-loan/src/main/java/com/bwie/loan/config/ProductConfig.java create mode 100644 bwie-modules/bwie-loan/src/main/java/com/bwie/loan/config/ReturnCallbackConfig.java create mode 100644 bwie-modules/bwie-loan/src/main/java/com/bwie/loan/controller/LoanController.java create mode 100644 bwie-modules/bwie-loan/src/main/java/com/bwie/loan/controller/RepaymentController.java create mode 100644 bwie-modules/bwie-loan/src/main/java/com/bwie/loan/feign/UserFeignService.java create mode 100644 bwie-modules/bwie-loan/src/main/java/com/bwie/loan/mapper/LoanMapper.java create mode 100644 bwie-modules/bwie-loan/src/main/java/com/bwie/loan/mapper/RepaymentMapper.java create mode 100644 bwie-modules/bwie-loan/src/main/java/com/bwie/loan/service/LoanService.java create mode 100644 bwie-modules/bwie-loan/src/main/java/com/bwie/loan/service/RepaymentService.java create mode 100644 bwie-modules/bwie-loan/src/main/java/com/bwie/loan/service/impl/LoanServiceImpl.java create mode 100644 bwie-modules/bwie-loan/src/main/java/com/bwie/loan/service/impl/RepaymentServiceImpl.java create mode 100644 bwie-modules/bwie-loan/src/main/resources/bootstrap.yml create mode 100644 bwie-modules/bwie-loan/src/main/resources/mapper/LoanMapper.xml create mode 100644 bwie-modules/bwie-loan/src/main/resources/mapper/RepaymentMapper.xml create mode 100644 bwie-modules/bwie-loan/target/bwie-loan-1.0-SNAPSHOT.jar create mode 100644 bwie-modules/bwie-loan/target/classes/bootstrap.yml create mode 100644 bwie-modules/bwie-loan/target/classes/com/bwie/loan/LoanApplication.class create mode 100644 bwie-modules/bwie-loan/target/classes/com/bwie/loan/config/ConfirmCallbackConfig.class create mode 100644 bwie-modules/bwie-loan/target/classes/com/bwie/loan/config/ProductConfig$1.class create mode 100644 bwie-modules/bwie-loan/target/classes/com/bwie/loan/config/ProductConfig.class create mode 100644 bwie-modules/bwie-loan/target/classes/com/bwie/loan/config/ReturnCallbackConfig.class create mode 100644 bwie-modules/bwie-loan/target/classes/com/bwie/loan/controller/LoanController.class create mode 100644 bwie-modules/bwie-loan/target/classes/com/bwie/loan/controller/RepaymentController.class create mode 100644 bwie-modules/bwie-loan/target/classes/com/bwie/loan/feign/UserFeignService.class create mode 100644 bwie-modules/bwie-loan/target/classes/com/bwie/loan/mapper/LoanMapper.class create mode 100644 bwie-modules/bwie-loan/target/classes/com/bwie/loan/mapper/RepaymentMapper.class create mode 100644 bwie-modules/bwie-loan/target/classes/com/bwie/loan/service/LoanService.class create mode 100644 bwie-modules/bwie-loan/target/classes/com/bwie/loan/service/RepaymentService.class create mode 100644 bwie-modules/bwie-loan/target/classes/com/bwie/loan/service/impl/LoanServiceImpl.class create mode 100644 bwie-modules/bwie-loan/target/classes/com/bwie/loan/service/impl/RepaymentServiceImpl.class create mode 100644 bwie-modules/bwie-loan/target/classes/mapper/LoanMapper.xml create mode 100644 bwie-modules/bwie-loan/target/classes/mapper/RepaymentMapper.xml create mode 100644 bwie-modules/bwie-loan/target/maven-archiver/pom.properties create mode 100644 bwie-modules/bwie-loan/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 bwie-modules/bwie-loan/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 bwie-modules/bwie-loan/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 bwie-modules/bwie-loan/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 bwie-modules/bwie-system/bwie-system.iml create mode 100644 bwie-modules/bwie-system/pom.xml create mode 100644 bwie-modules/bwie-system/src/main/java/com/bwie/system/SystemApplication.java create mode 100644 bwie-modules/bwie-system/src/main/java/com/bwie/system/controller/UserController.java create mode 100644 bwie-modules/bwie-system/src/main/java/com/bwie/system/mapper/UserMapper.java create mode 100644 bwie-modules/bwie-system/src/main/java/com/bwie/system/service/UserService.java create mode 100644 bwie-modules/bwie-system/src/main/java/com/bwie/system/service/impl/UserServiceImpl.java create mode 100644 bwie-modules/bwie-system/src/main/resources/bootstrap.yml create mode 100644 bwie-modules/bwie-system/src/main/resources/mapper/UserMapper.xml create mode 100644 bwie-modules/bwie-system/target/bwie-system-1.0-SNAPSHOT.jar create mode 100644 bwie-modules/bwie-system/target/classes/bootstrap.yml create mode 100644 bwie-modules/bwie-system/target/classes/com/bwie/system/SystemApplication.class create mode 100644 bwie-modules/bwie-system/target/classes/com/bwie/system/controller/UserController.class create mode 100644 bwie-modules/bwie-system/target/classes/com/bwie/system/mapper/UserMapper.class create mode 100644 bwie-modules/bwie-system/target/classes/com/bwie/system/service/UserService.class create mode 100644 bwie-modules/bwie-system/target/classes/com/bwie/system/service/impl/UserServiceImpl.class create mode 100644 bwie-modules/bwie-system/target/classes/mapper/UserMapper.xml create mode 100644 bwie-modules/bwie-system/target/maven-archiver/pom.properties create mode 100644 bwie-modules/bwie-system/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 bwie-modules/bwie-system/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 bwie-modules/bwie-system/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 bwie-modules/bwie-system/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 bwie-modules/pom.xml create mode 100644 month1010-fst.iml create mode 100644 pom.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..73f69e0 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..9201a2f --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..9bb4b5b --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..6560a98 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,36 @@ + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..2a89eda --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..4b661a5 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/bwie-auth/pom.xml b/bwie-auth/pom.xml new file mode 100644 index 0000000..27a2320 --- /dev/null +++ b/bwie-auth/pom.xml @@ -0,0 +1,28 @@ + + + + month1010-fst + com.bwie + 1.0-SNAPSHOT + + 4.0.0 + + bwie-auth + + + + + com.bwie + bwie-common + + + + org.springframework.boot + spring-boot-starter-web + + + + + diff --git a/bwie-auth/src/main/java/com/bwie/auth/AuthApplication.java b/bwie-auth/src/main/java/com/bwie/auth/AuthApplication.java new file mode 100644 index 0000000..74f582d --- /dev/null +++ b/bwie-auth/src/main/java/com/bwie/auth/AuthApplication.java @@ -0,0 +1,13 @@ +package com.bwie.auth; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; + +@SpringBootApplication +@EnableFeignClients +public class AuthApplication { + public static void main(String[] args) { + SpringApplication.run(AuthApplication.class); + } +} diff --git a/bwie-auth/src/main/java/com/bwie/auth/config/ConfirmCallbackConfig.java b/bwie-auth/src/main/java/com/bwie/auth/config/ConfirmCallbackConfig.java new file mode 100644 index 0000000..7b7c230 --- /dev/null +++ b/bwie-auth/src/main/java/com/bwie/auth/config/ConfirmCallbackConfig.java @@ -0,0 +1,48 @@ +package com.bwie.auth.config; + +import lombok.extern.log4j.Log4j2; +import org.springframework.amqp.rabbit.connection.CorrelationData; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; + +/** + * 消息发送确认配置 + * 消息发送到交换机的回调 + */ +@Component +@Log4j2 +public class ConfirmCallbackConfig implements RabbitTemplate.ConfirmCallback { + + @Autowired + private RabbitTemplate rabbitTemplate; + + /** + * @PostContruct是spring框架的注解,在⽅法上加该注解会在项⽬启动的时候执⾏该⽅法,也可以理解为在spring容器初始化的时候执 + */ + @PostConstruct + public void init() { + rabbitTemplate.setConfirmCallback(this); + } + + /** + * 交换机不管是否收到消息的一个回调方法 + * + * @param correlationData 消息相关数据 + * @param ack 交换机是否收到消息 + * @param cause 失败原因 + */ + @Override + public void confirm(CorrelationData correlationData, boolean ack, String cause) { + if (!ack) { + String exchange = correlationData.getReturned().getExchange(); + String message = correlationData.getReturned().getMessage().getBody().toString(); + // 发送异常 + log.error("消息:{},发送到交换机:{}失败,原因是:{}", message, exchange, cause); + // TODO 可以把异常信息 以及 消息的内容直接添加到 MYSQL + } + } + +} diff --git a/bwie-auth/src/main/java/com/bwie/auth/config/ReturnCallbackConfig.java b/bwie-auth/src/main/java/com/bwie/auth/config/ReturnCallbackConfig.java new file mode 100644 index 0000000..f3c2220 --- /dev/null +++ b/bwie-auth/src/main/java/com/bwie/auth/config/ReturnCallbackConfig.java @@ -0,0 +1,41 @@ +package com.bwie.auth.config; + +import lombok.extern.log4j.Log4j2; +import org.springframework.amqp.core.ReturnedMessage; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; + +/** + * 消息发送到队列的确认 + */ +@Component +@Log4j2 +public class ReturnCallbackConfig implements RabbitTemplate.ReturnsCallback { + + @Autowired + private RabbitTemplate rabbitTemplate; + + /** + * @PostContruct是spring框架的注解,在⽅法上加该注解会在项⽬启动的时候执⾏该⽅法,也可以理解为在spring容器初始化的时候执 + */ + @PostConstruct + public void init() { + rabbitTemplate.setReturnsCallback(this); + } + + /** + * 消息发送失败 则会执行这个方法 + * + * @param returnedMessage the returned message and metadata. + */ + @Override + public void returnedMessage(ReturnedMessage returnedMessage) { + log.error("消息:{},被交换机:{} 回退!退回原因为:{}", + returnedMessage.getMessage().toString(), returnedMessage.getExchange(), returnedMessage.getReplyText()); + // TODO 回退了所有的信息,可做补偿机制 + } + +} diff --git a/bwie-auth/src/main/java/com/bwie/auth/controller/AuthController.java b/bwie-auth/src/main/java/com/bwie/auth/controller/AuthController.java new file mode 100644 index 0000000..5aec95e --- /dev/null +++ b/bwie-auth/src/main/java/com/bwie/auth/controller/AuthController.java @@ -0,0 +1,78 @@ +package com.bwie.auth.controller; + +import com.bwie.auth.service.impl.AuthServiceImpl; +import com.bwie.common.domain.request.LoginRequest; +import com.bwie.common.domain.response.JwtResponse; +import com.bwie.common.domain.response.UserResponse; +import com.bwie.common.result.Result; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; + +@RestController +@Log4j2 +public class AuthController { + @Autowired + private AuthServiceImpl authService; + + @Autowired + private HttpServletRequest request; + + /** + * 登录 + * @param loginRequest + * @return + */ + @PostMapping("login") + public Result login(@RequestBody LoginRequest loginRequest){ + log.info("功能:登录,请求路径:{},请求方式:{},请求参数:{}", + request.getRequestURI(),request.getMethod(),loginRequest); + + Result result = authService.login(loginRequest); + + log.info("功能:登录,请求路径:{},请求方式:{},响应结果:{}", + request.getRequestURI(),request.getMethod(),result); + + return result; + } + + /** + * 获取当前用户信息 + * @return + */ + @GetMapping("getInfo") + public Result getInfo(){ + log.info("功能:获取当前用户信息,请求路径:{},请求方式:{},请求参数:{}", + request.getRequestURI(),request.getMethod(),""); + + Result result = authService.getInfo(); + + log.info("功能:获取当前用户信息,请求路径:{},请求方式:{},响应结果:{}", + request.getRequestURI(),request.getMethod(),result); + + return result; + } + + + /** + * 登出 + * @return + */ + @PostMapping("logout") + public Result logout(){ + log.info("功能:登出,请求路径:{},请求方式:{},请求参数:{}", + request.getRequestURI(),request.getMethod(),""); + + Result result = authService.logout(); + + log.info("功能:登出,请求路径:{},请求方式:{},响应结果:{}", + request.getRequestURI(),request.getMethod(),result); + + return result; + } +} diff --git a/bwie-auth/src/main/java/com/bwie/auth/feign/UserFeignService.java b/bwie-auth/src/main/java/com/bwie/auth/feign/UserFeignService.java new file mode 100644 index 0000000..d89b2b9 --- /dev/null +++ b/bwie-auth/src/main/java/com/bwie/auth/feign/UserFeignService.java @@ -0,0 +1,19 @@ +package com.bwie.auth.feign; + +import com.bwie.common.domain.response.UserResponse; +import com.bwie.common.result.Result; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +@FeignClient("bwie-system") +public interface UserFeignService { + + /** + * 根据用户名查找用户 + * @param userName + * @return + */ + @GetMapping("/findByUserName/{userName}") + public Result findByUserName(@PathVariable String userName); +} diff --git a/bwie-auth/src/main/java/com/bwie/auth/service/AuthService.java b/bwie-auth/src/main/java/com/bwie/auth/service/AuthService.java new file mode 100644 index 0000000..a77e116 --- /dev/null +++ b/bwie-auth/src/main/java/com/bwie/auth/service/AuthService.java @@ -0,0 +1,14 @@ +package com.bwie.auth.service; + +import com.bwie.common.domain.request.LoginRequest; +import com.bwie.common.domain.response.JwtResponse; +import com.bwie.common.domain.response.UserResponse; +import com.bwie.common.result.Result; + +public interface AuthService { + Result login(LoginRequest loginRequest); + + Result getInfo(); + + Result logout(); +} diff --git a/bwie-auth/src/main/java/com/bwie/auth/service/impl/AuthServiceImpl.java b/bwie-auth/src/main/java/com/bwie/auth/service/impl/AuthServiceImpl.java new file mode 100644 index 0000000..a72754b --- /dev/null +++ b/bwie-auth/src/main/java/com/bwie/auth/service/impl/AuthServiceImpl.java @@ -0,0 +1,96 @@ +package com.bwie.auth.service.impl; + +import com.alibaba.fastjson.JSON; +import com.bwie.auth.feign.UserFeignService; +import com.bwie.auth.service.AuthService; +import com.bwie.common.constants.JwtConstants; +import com.bwie.common.constants.TokenConstants; +import com.bwie.common.domain.request.LoginRequest; +import com.bwie.common.domain.response.JwtResponse; +import com.bwie.common.domain.response.UserResponse; +import com.bwie.common.result.Result; +import com.bwie.common.utils.JwtUtils; +import com.bwie.common.utils.StringUtils; +import io.jsonwebtoken.Jwt; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.UUID; +import java.util.concurrent.TimeUnit; + +@Service +public class AuthServiceImpl implements AuthService { + + @Autowired + private UserFeignService userFeignService; + + @Autowired + private RedisTemplate redisTemplate; + + @Autowired + private HttpServletRequest request; + + /** + * 登录 + * @param loginRequest + * @return + */ + @Override + public Result login(LoginRequest loginRequest) { + //非空验证 + if (StringUtils.isAnyBlank(loginRequest.getUserName(),loginRequest.getPassword())){ + return Result.error("账号密码不能为空"); + } + Result byUserName = userFeignService.findByUserName(loginRequest.getUserName()); + UserResponse user = byUserName.getData(); + //判断用户是否存在 + if (user==null){ + return Result.error("账号未注册"); + } + //判断密码是否正确 + if (!user.getPassword().equals(loginRequest.getPassword())){ + return Result.error("账号密码错误"); + } + //登录成功 生成token 用户数据存入redis + String userKey = UUID.randomUUID().toString().replaceAll("-", ""); + HashMap map = new HashMap<>(); + map.put(JwtConstants.USER_KEY,userKey); + map.put(JwtConstants.DETAILS_USER_ID,user.getId()); + String token = JwtUtils.createToken(map); + redisTemplate.opsForValue().set(TokenConstants.LOGIN_TOKEN_KEY+userKey, + JSON.toJSONString(user),60, TimeUnit.MINUTES); + //生成jwt + JwtResponse jwtResponse = new JwtResponse(); + jwtResponse.setToken(token); + jwtResponse.setExpire("60Min"); + return Result.success(jwtResponse); + } + + /** + * 获取用户信息 + * @return + */ + @Override + public Result getInfo() { + String token = request.getHeader("token"); + String userKey = JwtUtils.getUserKey(token); + String s = redisTemplate.opsForValue().get(TokenConstants.LOGIN_TOKEN_KEY + userKey); + UserResponse userResponse = JSON.parseObject(s, UserResponse.class); + return Result.success(userResponse); + } + + /** + * 登出 + * @return + */ + @Override + public Result logout() { + String token = request.getHeader("token"); + String userKey = JwtUtils.getUserKey(token); + redisTemplate.delete(TokenConstants.LOGIN_TOKEN_KEY + userKey); + return Result.success(); + } +} diff --git a/bwie-auth/src/main/resources/bootstrap.yml b/bwie-auth/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..2a1fe00 --- /dev/null +++ b/bwie-auth/src/main/resources/bootstrap.yml @@ -0,0 +1,30 @@ +# Tomcat +server: + port: 9001 +# Spring +spring: + main: + allow-circular-references: true + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + application: + # 应用名称 + name: bwie-auth + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 192.168.111.133:8848 + config: + # 配置中心地址 + server-addr: 192.168.111.133:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + diff --git a/bwie-auth/target/bwie-auth-1.0-SNAPSHOT.jar b/bwie-auth/target/bwie-auth-1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..b29c4da4643b5326123fd2c4de09e5955e3058ad GIT binary patch literal 10491 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 literal 0 HcmV?d00001 diff --git a/bwie-auth/target/classes/com/bwie/auth/config/ConfirmCallbackConfig.class b/bwie-auth/target/classes/com/bwie/auth/config/ConfirmCallbackConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..b70cddb5a8d94d480683ac09e707f829d82eb73d GIT binary patch literal 2283 zcmbtWTT@$A7+pIggoMLItW^-((u*b`aIB@a5=4Qvwl=f~h}u5wgiSa!IVYZTB4r$B z>{}najBlOljF+j;TJ1#bbo>GS4q^1E|G;tWlgOo{6m=N(_50TPuKVP-zwZ7DU5miWlNIhM_o)<3&B3h~p$)(jvoJB-4VCR=kYSC|-%s(}Q_(31 z^kp5lV9K)0FDjEK1jMitj92u9_!o^N3|z{wQ5aBe%*;1yg_=|MFUa$)0gr3~ege(?wGJhr57DyS^i~q%7BC+c~NH zMQ46W>KgHt%Q&};Jd>n{z_RfSf#RKE8EW) z*o!9(bm8$R&KP(NXQMc0;B}mjB5Pn07Ytm)R1|L*n8u8OS$)!p#~6;a>h-m2-`&4= z^ZgI*-}`9w)6f3=@Y?G2?|;90YwhE2*1otK+^pWZ{l}ee_5CMbu73X2+Krk*6mJ@s z!&@|V_k|S2+XmhNBiOl-x{J9bmVf{YpkV&X9y|O%6q)sHC&oF}m^)FFo~M|QWB-AM zt>h_P<(qp$;OuS+eA~P5pv^&94?o(fhjofTYeD(b%CES#nin{lNH#2=pzmt$R9$wm z)+%h;frrvJQm8SWUT?%bWZcMSy;%j~G^f7~0Gq zlxe1xz#Xj5ppT!rcCg+NLXYleeknux8Q|F-uA4bO!8y#CF9gS@xHCBm&XLql5VyGq zp_`)?1|fPl8Z`ktjb82qo}qFmP(Hy~%f(W65K2|iv;h$36{yler45i+9poQ-_630Z zai9+PH6o-2(!Dp4>aQYPMPxW!TQpY@t)gW(@&jUB@$N`>c;FYbMxZ&H0;Bg*8+eW$ zCeVf?nfv)S81Ro0w+;IkrGvchWt0warRCFgoAl~1jsy;+@how)2Wes*Bz`hr5&cMU z(bhysPzJmOee7S4XJ4StkaQV8qwPn;w0ZpQbF9U*lVEA?LKs+2%OLls`5&ib2Y=6; HYL5L4D6WJr literal 0 HcmV?d00001 diff --git a/bwie-auth/target/classes/com/bwie/auth/config/ReturnCallbackConfig.class b/bwie-auth/target/classes/com/bwie/auth/config/ReturnCallbackConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..5bdde91add99e9f142a88ceee46a477b3fb78999 GIT binary patch literal 1929 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 + + + month1010-fst + com.bwie + 1.0-SNAPSHOT + + 4.0.0 + + bwie-common + + + + + org.springframework.cloud + spring-cloud-starter-bootstrap + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-sentinel + + + + org.springframework.cloud + spring-cloud-starter-loadbalancer + + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + + io.jsonwebtoken + jjwt + 0.9.1 + + + + com.alibaba + fastjson + 1.2.80 + + + + org.springframework.boot + spring-boot-starter-data-redis + + + + org.springframework.boot + spring-boot-starter-validation + + + + org.apache.commons + commons-lang3 + + + + org.projectlombok + lombok + + + + cn.hutool + hutool-all + 5.8.3 + + + + com.aliyun + dysmsapi20170525 + 2.0.1 + + + + com.aliyun.oss + aliyun-sdk-oss + 3.12.0 + + + + org.springframework.boot + spring-boot-starter-amqp + + + + com.github.tobato + fastdfs-client + 1.26.5 + + + + + diff --git a/bwie-common/src/main/java/com/bwie/common/config/RedisConfig.java b/bwie-common/src/main/java/com/bwie/common/config/RedisConfig.java new file mode 100644 index 0000000..b62e4b1 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/config/RedisConfig.java @@ -0,0 +1,40 @@ +package com.bwie.common.config; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +@Configuration +public class RedisConfig { + + @Bean + public RedisTemplate redisTemplate(RedisConnectionFactory factory) { + RedisTemplate template = new RedisTemplate<>(); + template.setConnectionFactory(factory); + Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new + Jackson2JsonRedisSerializer(Object.class); + ObjectMapper om = new ObjectMapper(); + om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); + jackson2JsonRedisSerializer.setObjectMapper(om); + + StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); + // key采用String的序列化方式 + template.setKeySerializer(stringRedisSerializer); + // hash的key也采用String的序列化方式 + template.setHashKeySerializer(stringRedisSerializer); + // value序列化方式采用jackson + template.setValueSerializer(jackson2JsonRedisSerializer); + // hash的value序列化方式采用jackson + template.setHashValueSerializer(jackson2JsonRedisSerializer); + template.afterPropertiesSet(); + + return template; + } +} diff --git a/bwie-common/src/main/java/com/bwie/common/constants/Constants.java b/bwie-common/src/main/java/com/bwie/common/constants/Constants.java new file mode 100644 index 0000000..2fdc9fe --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/constants/Constants.java @@ -0,0 +1,18 @@ +package com.bwie.common.constants; + +/** + * @description: 系统常量 + * @author DongZl + */ +public class Constants { + /** + * 成功标记 + */ + public static final Integer SUCCESS = 200; + public static final String SUCCESS_MSG = "操作成功"; + /** + * 失败标记 + */ + public static final Integer ERROR = 500; + public static final String ERROR_MSG = "操作异常"; +} diff --git a/bwie-common/src/main/java/com/bwie/common/constants/JwtConstants.java b/bwie-common/src/main/java/com/bwie/common/constants/JwtConstants.java new file mode 100644 index 0000000..03692c1 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/constants/JwtConstants.java @@ -0,0 +1,29 @@ +package com.bwie.common.constants; + +/** + * @author DongZl + * @description: Jwt常量 + */ +public class JwtConstants { + + /** + * 用户ID字段 + */ + public static final String DETAILS_USER_ID = "user_id"; + + /** + * 用户名字段 + */ + public static final String DETAILS_USERNAME = "username"; + + /** + * 用户标识 + */ + public static final String USER_KEY = "user_key"; + + /** + * 令牌秘钥 + */ + public final static String SECRET = "abcdefghijklmnopqrstuvwxyz"; + +} diff --git a/bwie-common/src/main/java/com/bwie/common/constants/TokenConstants.java b/bwie-common/src/main/java/com/bwie/common/constants/TokenConstants.java new file mode 100644 index 0000000..1871fb7 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/constants/TokenConstants.java @@ -0,0 +1,24 @@ +package com.bwie.common.constants; + +/** + * @author DongZl + * @description: 令牌常量 + */ +public class TokenConstants { + /** + * 缓存有效期,默认720(分钟) + */ + public final static long EXPIRATION = 720; + /** + * 缓存刷新时间,默认120(分钟) + */ + public final static long REFRESH_TIME = 120; + /** + * 权限缓存前缀 + */ + public final static String LOGIN_TOKEN_KEY = "login_tokens:"; + /** + * token标识 + */ + public static final String TOKEN = "token"; +} diff --git a/bwie-common/src/main/java/com/bwie/common/domain/Repayment.java b/bwie-common/src/main/java/com/bwie/common/domain/Repayment.java new file mode 100644 index 0000000..72a8955 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/domain/Repayment.java @@ -0,0 +1,38 @@ +package com.bwie.common.domain; + +import lombok.Data; + +import java.util.Date; + +/** + * 还款计划 + */ +@Data +public class Repayment { + private Integer id; + private Integer loanId; + /** + * 还款金额 + */ + private Double repaymentAmount; + + /** + * 本期利息 + */ + private Double currentProfit; + + /** + * 状态 0未还款 1已还款 + */ + private Integer status; + + /** + * 代表还款第几期 + */ + private Integer period; + + /** + * 还款日期 + */ + private Date repaymentDate; +} diff --git a/bwie-common/src/main/java/com/bwie/common/domain/request/LoanRequest.java b/bwie-common/src/main/java/com/bwie/common/domain/request/LoanRequest.java new file mode 100644 index 0000000..131a362 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/domain/request/LoanRequest.java @@ -0,0 +1,49 @@ +package com.bwie.common.domain.request; + +import lombok.Data; + +import java.util.Date; +@Data +public class LoanRequest { + private Integer id; + /** + * 借款金额 + */ + private Double loanAmount; + + /** + * 期数 + */ + private Integer periods; + + /** + * 手续费 + */ + private Double handlingCharge; + + /** + * 借款人 + */ + private Integer createBy; + + /** + * 借款时间 + */ + private Date createTime; + + /** + * 放款机构id + */ + private Integer lendingInstitutionId; + + + /** + * 状态 0申请中 1申请通过 2申请失败 + */ + private Integer status; + + /** + * 利息 + */ + private Double loanInterest; +} diff --git a/bwie-common/src/main/java/com/bwie/common/domain/request/LoginRequest.java b/bwie-common/src/main/java/com/bwie/common/domain/request/LoginRequest.java new file mode 100644 index 0000000..e312b3f --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/domain/request/LoginRequest.java @@ -0,0 +1,9 @@ +package com.bwie.common.domain.request; + +import lombok.Data; + +@Data +public class LoginRequest { + private String userName; + private String password; +} diff --git a/bwie-common/src/main/java/com/bwie/common/domain/response/JwtResponse.java b/bwie-common/src/main/java/com/bwie/common/domain/response/JwtResponse.java new file mode 100644 index 0000000..1bb9b44 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/domain/response/JwtResponse.java @@ -0,0 +1,9 @@ +package com.bwie.common.domain.response; + +import lombok.Data; + +@Data +public class JwtResponse { + private String token; + private String expire; +} diff --git a/bwie-common/src/main/java/com/bwie/common/domain/response/Loan.java b/bwie-common/src/main/java/com/bwie/common/domain/response/Loan.java new file mode 100644 index 0000000..afb4267 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/domain/response/Loan.java @@ -0,0 +1,69 @@ +package com.bwie.common.domain.response; + +import lombok.Data; + +import java.util.Date; + +@Data +public class Loan { + private Integer id; + /** + * 借款金额 + */ + private Double loanAmount; + + /** + * 期数 + */ + private Integer periods; + + /** + * 最近还款时间 + */ + private Date lastPaymentDate; + + /** + * 手续费 + */ + private Double handlingCharge; + + /** + * 借款人 + */ + private Integer createBy; + + /** + * 借款时间 + */ + private Date createTime; + + /** + * 放款机构id + */ + private Integer lendingInstitutionId; + + /** + * 放款机构 + */ + private String lendingInstitution; + + /** + * 状态 0申请中 1申请通过 2申请失败 + */ + private Integer status; + + /** + * 已还本金 + */ + private Double repaidPrincipal; + + /** + * 未还本金 + */ + private Double outstandingPrincipal; + + /** + * 利息 + */ + private Double loanInterest; +} diff --git a/bwie-common/src/main/java/com/bwie/common/domain/response/UserResponse.java b/bwie-common/src/main/java/com/bwie/common/domain/response/UserResponse.java new file mode 100644 index 0000000..026ea54 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/domain/response/UserResponse.java @@ -0,0 +1,17 @@ +package com.bwie.common.domain.response; + +import lombok.Data; + +@Data +public class UserResponse { + private Integer id; + private String userName; + private String password; + private Integer roleId; + /** + * 借款额度额度 + */ + private Double loanLimit; + + private String phone; +} diff --git a/bwie-common/src/main/java/com/bwie/common/result/PageResult.java b/bwie-common/src/main/java/com/bwie/common/result/PageResult.java new file mode 100644 index 0000000..85ecdda --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/result/PageResult.java @@ -0,0 +1,34 @@ +package com.bwie.common.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author DongZl + * @description: 列表返回结果集 + */ +@Data +public class PageResult implements Serializable { + /** + * 总条数 + */ + private long total; + /** + * 结果集合 + */ + private List list; + public PageResult() { + } + public PageResult(long total, List list) { + this.total = total; + this.list = list; + } + public static PageResult toPageResult(long total, List list){ + return new PageResult(total , list); + } + public static Result> toResult(long total, List list){ + return Result.success(PageResult.toPageResult(total,list)); + } +} diff --git a/bwie-common/src/main/java/com/bwie/common/result/Result.java b/bwie-common/src/main/java/com/bwie/common/result/Result.java new file mode 100644 index 0000000..30b1e73 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/result/Result.java @@ -0,0 +1,76 @@ +package com.bwie.common.result; + +import com.bwie.common.constants.Constants; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author DongZl + * @description: 响应信息主体 + */ +@Data +public class Result implements Serializable { + + private static final long serialVersionUID = 1L; + /** + * 成功 + */ + public static final int SUCCESS = Constants.SUCCESS; + /** + * 失败 + */ + public static final int FAIL = Constants.ERROR; + /** + * 返回状态码 + */ + private int code; + /** + * 响应信息 + */ + private String msg; + /** + * 响应数据 + */ + private T data; + + public static Result success() { + return restResult(null, SUCCESS, Constants.SUCCESS_MSG); + } + + public static Result success(T data) { + return restResult(data, SUCCESS, Constants.SUCCESS_MSG); + } + + public static Result success(T data, String msg) { + return restResult(data, SUCCESS, msg); + } + + public static Result error() { + return restResult(null, FAIL, Constants.ERROR_MSG); + } + + public static Result error(String msg) { + return restResult(null, FAIL, msg); + } + + public static Result error(T data) { + return restResult(data, FAIL, Constants.ERROR_MSG); + } + + public static Result error(T data, String msg) { + return restResult(data, FAIL, msg); + } + + public static Result error(int code, String msg) { + return restResult(null, code, msg); + } + + private static Result restResult(T data, int code, String msg) { + Result apiResult = new Result<>(); + apiResult.setCode(code); + apiResult.setData(data); + apiResult.setMsg(msg); + return apiResult; + } +} diff --git a/bwie-common/src/main/java/com/bwie/common/utils/FastUtil.java b/bwie-common/src/main/java/com/bwie/common/utils/FastUtil.java new file mode 100644 index 0000000..94b1722 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/utils/FastUtil.java @@ -0,0 +1,55 @@ +package com.bwie.common.utils; + +import org.springframework.stereotype.Component; +import com.github.tobato.fastdfs.domain.fdfs.StorePath; +import com.github.tobato.fastdfs.service.FastFileStorageClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.util.StringUtils; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; + +/** + * @BelongsProject: 0107day02 + * @BelongsPackage: com.bw.config + * @Author: zhupengfei + * @CreateTime: 2023-02-01 08:52 + */ +@Component +public class FastUtil { + private static final Logger log = LoggerFactory.getLogger(FastUtil.class); + + @Resource + private FastFileStorageClient storageClient ; + + /** + * 上传文件 + */ + public String upload(MultipartFile multipartFile) throws Exception{ + String originalFilename = multipartFile.getOriginalFilename(). + substring(multipartFile.getOriginalFilename(). + lastIndexOf(".") + 1); + StorePath storePath = this.storageClient.uploadImageAndCrtThumbImage( + multipartFile.getInputStream(), + multipartFile.getSize(),originalFilename , null); + return storePath.getFullPath() ; + } + /** + * 删除文件 + */ + public String deleteFile(String fileUrl) { + if (StringUtils.isEmpty(fileUrl)) { + log.info("fileUrl == >>文件路径为空..."); + return "文件路径不能为空"; + } + try { + StorePath storePath = StorePath.parseFromUrl(fileUrl); + storageClient.deleteFile(storePath.getGroup(), storePath.getPath()); + } catch (Exception e) { + log.error(e.getMessage()); + } + return "删除成功"; + } + +} diff --git a/bwie-common/src/main/java/com/bwie/common/utils/HttpPost.java b/bwie-common/src/main/java/com/bwie/common/utils/HttpPost.java new file mode 100644 index 0000000..93380f0 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/utils/HttpPost.java @@ -0,0 +1,77 @@ +package com.bwie.common.utils; + + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; + + +public class HttpPost { + public static void main(String[] args) { + //你的本地地址 配你的项目地址 这个是我电脑本地的地址 + String doGet = doGet("http://127.0.0.1:8081/sell/list"); + System.out.println("----------SSSS---DDS--S--"+doGet); + } + public static String doGet(String httpUrl){ + //链接 + HttpURLConnection connection=null; + + InputStream is=null; + BufferedReader br = null; + StringBuffer result=new StringBuffer(); + try { + //创建连接 + URL url=new URL(httpUrl); + connection= (HttpURLConnection) url.openConnection(); + //设置请求方式 + connection.setRequestMethod("GET"); + //设置连接超时时间 + connection.setConnectTimeout(15000); + //设置读取超时时间 + connection.setReadTimeout(15000); + + //开始连接 + connection.connect(); + //获取响应数据 + if(connection.getResponseCode()==200){ + //获取返回的数据 + is=connection.getInputStream(); + if(is!=null){ + br=new BufferedReader(new InputStreamReader(is,"UTF-8")); + String temp = null; + while ((temp=br.readLine())!=null){ + result.append(temp); + } + } + } + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + }finally { + if(br!=null){ + try { + br.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if(is!=null){ + try { + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + connection.disconnect();// 关闭远程连接 + } + return result.toString(); + } + + + +} diff --git a/bwie-common/src/main/java/com/bwie/common/utils/HttpUtils.java b/bwie-common/src/main/java/com/bwie/common/utils/HttpUtils.java new file mode 100644 index 0000000..1c7e2f3 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/utils/HttpUtils.java @@ -0,0 +1,310 @@ +package com.bwie.common.utils; + +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.HttpClient; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpDelete; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpPut; +import org.apache.http.conn.ClientConnectionManager; +import org.apache.http.conn.scheme.Scheme; +import org.apache.http.conn.scheme.SchemeRegistry; +import org.apache.http.conn.ssl.SSLSocketFactory; +import org.apache.http.entity.ByteArrayEntity; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.message.BasicNameValuePair; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.X509Certificate; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class HttpUtils { + /** + * get + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @return + * @throws Exception + */ + public static HttpResponse doGet(String host, String path, String method, + Map headers, + Map querys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpGet request = new HttpGet(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + return httpClient.execute(request); + } + + /** + * post form + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param bodys + * @return + * @throws Exception + */ + public static HttpResponse doPost(String host, String path, String method, + Map headers, + Map querys, + Map bodys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (bodys != null) { + List nameValuePairList = new ArrayList(); + + for (String key : bodys.keySet()) { + nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key))); + } + UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8"); + formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8"); + request.setEntity(formEntity); + } + + return httpClient.execute(request); + } + + /** + * Post String + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPost(String host, String path, String method, + Map headers, + Map querys, + String body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (StringUtils.isNotBlank(body)) { + request.setEntity(new StringEntity(body, "utf-8")); + } + + return httpClient.execute(request); + } + + /** + * Post stream + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPost(String host, String path, String method, + Map headers, + Map querys, + byte[] body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (body != null) { + request.setEntity(new ByteArrayEntity(body)); + } + + return httpClient.execute(request); + } + + /** + * Put String + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPut(String host, String path, String method, + Map headers, + Map querys, + String body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPut request = new HttpPut(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (StringUtils.isNotBlank(body)) { + request.setEntity(new StringEntity(body, "utf-8")); + } + + return httpClient.execute(request); + } + + /** + * Put stream + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPut(String host, String path, String method, + Map headers, + Map querys, + byte[] body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPut request = new HttpPut(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (body != null) { + request.setEntity(new ByteArrayEntity(body)); + } + + return httpClient.execute(request); + } + + /** + * Delete + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @return + * @throws Exception + */ + public static HttpResponse doDelete(String host, String path, String method, + Map headers, + Map querys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpDelete request = new HttpDelete(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + return httpClient.execute(request); + } + + private static String buildUrl(String host, String path, Map querys) throws UnsupportedEncodingException { + StringBuilder sbUrl = new StringBuilder(); + sbUrl.append(host); + if (!StringUtils.isBlank(path)) { + sbUrl.append(path); + } + if (null != querys) { + StringBuilder sbQuery = new StringBuilder(); + for (Map.Entry query : querys.entrySet()) { + if (0 < sbQuery.length()) { + sbQuery.append("&"); + } + if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) { + sbQuery.append(query.getValue()); + } + if (!StringUtils.isBlank(query.getKey())) { + sbQuery.append(query.getKey()); + if (!StringUtils.isBlank(query.getValue())) { + sbQuery.append("="); + sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8")); + } + } + } + if (0 < sbQuery.length()) { + sbUrl.append("?").append(sbQuery); + } + } + + return sbUrl.toString(); + } + + private static HttpClient wrapClient(String host) { + HttpClient httpClient = new DefaultHttpClient(); + if (host.startsWith("https://")) { + sslClient(httpClient); + } + + return httpClient; + } + + private static void sslClient(HttpClient httpClient) { + try { + SSLContext ctx = SSLContext.getInstance("TLS"); + X509TrustManager tm = new X509TrustManager() { + public X509Certificate[] getAcceptedIssuers() { + return null; + } + public void checkClientTrusted(X509Certificate[] xcs, String str) { + + } + public void checkServerTrusted(X509Certificate[] xcs, String str) { + + } + }; + ctx.init(null, new TrustManager[] { tm }, null); + SSLSocketFactory ssf = new SSLSocketFactory(ctx); + ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); + ClientConnectionManager ccm = httpClient.getConnectionManager(); + SchemeRegistry registry = ccm.getSchemeRegistry(); + registry.register(new Scheme("https", 443, ssf)); + } catch (KeyManagementException ex) { + throw new RuntimeException(ex); + } catch (NoSuchAlgorithmException ex) { + throw new RuntimeException(ex); + } + } + +} diff --git a/bwie-common/src/main/java/com/bwie/common/utils/JwtUtils.java b/bwie-common/src/main/java/com/bwie/common/utils/JwtUtils.java new file mode 100644 index 0000000..f560aa9 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/utils/JwtUtils.java @@ -0,0 +1,109 @@ +package com.bwie.common.utils; + +import com.bwie.common.constants.JwtConstants; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; + +import java.util.Map; + +/** + * @description: Jwt工具类 + * @author DongZl + */ +public class JwtUtils { + + /** + * 秘钥 + */ + public static String secret = JwtConstants.SECRET; + + /** + * 从数据声明生成令牌 + * + * @param claims 数据声明 + * @return 令牌 + */ + public static String createToken(Map claims){ + String token = Jwts.builder().setClaims(claims).signWith(SignatureAlgorithm.HS512, secret).compact(); + return token; + } + + /** + * 从令牌中获取数据声明 + * + * @param token 令牌 + * @return 数据声明 + */ + public static Claims parseToken(String token){ + return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody(); + } + /** + * 根据令牌获取用户标识 + * + * @param token 令牌 + * @return 用户ID + */ + public static String getUserKey(String token){ + Claims claims = parseToken(token); + return getValue(claims, JwtConstants.USER_KEY); + } + /** + * 根据令牌获取用户标识 + * + * @param claims 身份信息 + * @return 用户ID + */ + public static String getUserKey(Claims claims){ + return getValue(claims, JwtConstants.USER_KEY); + } + /** + * 根据令牌获取用户ID + * + * @param token 令牌 + * @return 用户ID + */ + public static String getUserId(String token){ + Claims claims = parseToken(token); + return getValue(claims, JwtConstants.DETAILS_USER_ID); + } + /** + * 根据身份信息获取用户ID + * + * @param claims 身份信息 + * @return 用户ID + */ + public static String getUserId(Claims claims){ + return getValue(claims, JwtConstants.DETAILS_USER_ID); + } + /** + * 根据令牌获取用户名 + * + * @param token 令牌 + * @return 用户名 + */ + public static String getUserName(String token){ + Claims claims = parseToken(token); + return getValue(claims, JwtConstants.DETAILS_USERNAME); + } + /** + * 根据身份信息获取用户名 + * + * @param claims 身份信息 + * @return 用户名 + */ + public static String getUserName(Claims claims){ + return getValue(claims, JwtConstants.DETAILS_USERNAME); + } + /** + * 根据身份信息获取键值 + * + * @param claims 身份信息 + * @param key 键 + * @return 值 + */ + public static String getValue(Claims claims, String key){ + Object obj = claims.get(key); + return obj == null ? "" : obj.toString(); + } +} diff --git a/bwie-common/src/main/java/com/bwie/common/utils/MsgUitl.java b/bwie-common/src/main/java/com/bwie/common/utils/MsgUitl.java new file mode 100644 index 0000000..f8fb683 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/utils/MsgUitl.java @@ -0,0 +1,76 @@ +package com.bwie.common.utils; + +import org.apache.http.HttpResponse; +import org.apache.http.util.EntityUtils; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author markguo + * @version 1.0.0 + * @ClassName MsgUitl.java + * @Description TODO + * @createTime 2022年07月22日 15:38:00 + */ +@Component +public class MsgUitl { + + public static String sendMsg(String phone,String code) { + String host = "https://gyytz.market.alicloudapi.com"; + String path = "/sms/smsSend"; + String method = "POST"; + String appcode = "b491bc5d56bb4fa59171e19aaab030bb"; + Map headers = new HashMap(); + //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105 + headers.put("Authorization", "APPCODE " + appcode); + Map querys = new HashMap(); + querys.put("mobile", phone); + querys.put("param", "code"+code); + querys.put("smsSignId", "2e65b1bb3d054466b82f0c9d125465e2"); + querys.put("templateId", "908e94ccf08b4476ba6c876d13f084ad"); + Map bodys = new HashMap(); + + String message=""; + try { + /** + * 重要提示如下: + * HttpUtils请从 + * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java + * 下载 + * + * 相应的依赖请参照 + * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml + */ + HttpResponse response = com.bwie.common.utils.HttpUtils.doPost(host, path, method, headers, querys, bodys); + System.out.println(response.toString()); +// 获取response的body + message = EntityUtils.toString(response.getEntity()); + System.out.println(EntityUtils.toString(response.getEntity())); + + } catch (Exception e) { + e.printStackTrace(); + } + return message; + } + + @CachePut(value="aaa", key="#mobile") + public String saveCode(String mobile,String code){ + return code; + } + + /** + * 获得验证码 + * @param mobile + * @return + */ + + @Cacheable(value="aaa", key="#mobile") + public String getCode(String mobile){ + return "1234"; + } + +} diff --git a/bwie-common/src/main/java/com/bwie/common/utils/OssUtil.java b/bwie-common/src/main/java/com/bwie/common/utils/OssUtil.java new file mode 100644 index 0000000..9c1383f --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/utils/OssUtil.java @@ -0,0 +1,153 @@ +package com.bwie.common.utils; + +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import com.aliyun.oss.model.GetObjectRequest; +import com.aliyun.oss.model.PutObjectRequest; +import lombok.extern.log4j.Log4j2; +import org.springframework.web.multipart.MultipartFile; + +import java.io.*; +import java.time.LocalDateTime; +import java.util.UUID; + +/** + * Oss服务调用 + */ +@Log4j2 +public class OssUtil { + + /** + * Endpoint 存储对象概述 阿里云主账号AccessKey,accessKeySecret拥有所有API的访问权限 访问路径前缀 存储对象概述 + */ + private static String endPoint = "oss-cn-shanghai.aliyuncs.com"; + private static String accessKeyId = "LTAI5tD2tppzLQ4Rb6yKYyph"; + private static String accessKeySecret = "KEKNKwVvDq7PZLjE63NPBouqHXox4Q"; + private static String accessPre = "https://dzlmuyu.oss-cn-shanghai.aliyuncs.com/"; + + /** + * bucket名称 + * @return + */ + private static String bucketName = "dzlmuyu"; + + private static OSS ossClient ; + + static { + ossClient = new OSSClientBuilder().build( + endPoint, + accessKeyId, + accessKeySecret); + log.info("oss服务连接成功!"); + } + + /** + * 默认路径上传本地文件 + * @param filePath + */ + public static String uploadFile(String filePath){ + return uploadFileForBucket(bucketName,getOssFilePath(filePath) ,filePath); + } + + /** + * 默认路径上传multipartFile文件 + * @param multipartFile + */ + public static String uploadMultipartFile(MultipartFile multipartFile) { + return uploadMultipartFile(bucketName,getOssFilePath(multipartFile.getOriginalFilename()),multipartFile); + } + /** + * 上传 multipartFile 类型文件 + * @param bucketName + * @param ossPath + * @param multipartFile + */ + public static String uploadMultipartFile(String bucketName , String ossPath , MultipartFile multipartFile){ + InputStream inputStream = null; + try { + inputStream = multipartFile.getInputStream(); + } catch (IOException e) { + e.printStackTrace(); + } + uploadFileInputStreamForBucket(bucketName, ossPath, inputStream); + return accessPre+ossPath; + } + + /** + * 使用File上传PutObject上传文件 ** 程序默认使用次方法上传 + * @param bucketName 实例名称 + * @param ossPath oss存储路径 + * @param filePath 本地文件路径 + */ + public static String uploadFileForBucket(String bucketName , String ossPath , String filePath) { + // 创建PutObjectRequest对象。 + PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, ossPath, new File(filePath)); + + // 上传 + ossClient.putObject(putObjectRequest); + return accessPre+ossPath; + } + + /** + * 使用文件流上传到指定的bucket实例 + * @param bucketName 实例名称 + * @param ossPath oss存储路径 + * @param filePath 本地文件路径 + */ + public static String uploadFileInputStreamForBucket(String bucketName , String ossPath , String filePath){ + + // 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。 + InputStream inputStream = null; + try { + inputStream = new FileInputStream(filePath); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + // 填写Bucket名称和Object完整路径。Object完整路径中不能包含Bucket名称。 + uploadFileInputStreamForBucket(bucketName, ossPath, inputStream); + return accessPre+ossPath; + } + + public static void uploadFileInputStreamForBucket(String bucketName , String ossPath , InputStream inputStream ){ + ossClient.putObject(bucketName, ossPath, inputStream); + } + + /** + * 下载 + * @param ossFilePath + * @param filePath + */ + public static void downloadFile(String ossFilePath , String filePath ){ + downloadFileForBucket(bucketName , ossFilePath , filePath); + } + /** + * 下载 + * @param bucketName 实例名称 + * @param ossFilePath oss存储路径 + * @param filePath 本地文件路径 + */ + public static void downloadFileForBucket(String bucketName , String ossFilePath , String filePath ){ + ossClient.getObject(new GetObjectRequest(bucketName, ossFilePath), new File(filePath)); + } + + /** + * + * @return + */ + public static String getOssDefaultPath(){ + LocalDateTime now = LocalDateTime.now(); + String url = + now.getYear()+"/"+ + now.getMonth()+"/"+ + now.getDayOfMonth()+"/"+ + now.getHour()+"/"+ + now.getMinute()+"/"; + return url; + } + + public static String getOssFilePath(String filePath){ + String fileSuf = filePath.substring(filePath.indexOf(".") + 1); + return getOssDefaultPath() + UUID.randomUUID().toString() + "." + fileSuf; + } + +} diff --git a/bwie-common/src/main/java/com/bwie/common/utils/StringUtils.java b/bwie-common/src/main/java/com/bwie/common/utils/StringUtils.java new file mode 100644 index 0000000..93c47fd --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/utils/StringUtils.java @@ -0,0 +1,68 @@ +package com.bwie.common.utils; + +import org.springframework.util.AntPathMatcher; + +import java.util.Collection; +import java.util.List; + +/** + * @author DongZl + * @description: 字符串处理工具类 + */ +public class StringUtils extends org.apache.commons.lang3.StringUtils { + + /** + * * 判断一个对象是否为空 + * + * @param object Object + * @return true:为空 false:非空 + */ + public static boolean isNull(Object object) { + return object == null; + } + + /** + * * 判断一个Collection是否为空, 包含List,Set,Queue + * + * @param coll 要判断的Collection + * @return true:为空 false:非空 + */ + public static boolean isEmpty(Collection coll) { + return isNull(coll) || coll.isEmpty(); + } + + /** + * 查找指定字符串是否匹配指定字符串列表中的任意一个字符串 + * + * @param str 指定字符串 + * @param strs 需要检查的字符串数组 + * @return 是否匹配 + */ + public static boolean matches(String str, List strs) { + if (isEmpty(str) || isEmpty(strs)) { + return false; + } + for (String pattern : strs) { + if (isMatch(pattern, str)) + { + return true; + } + } + return false; + } + + /** + * 判断url是否与规则配置: + * ? 表示单个字符; + * * 表示一层路径内的任意字符串,不可跨层级; + * ** 表示任意层路径; + * + * @param pattern 匹配规则 + * @param url 需要匹配的url + * @return + */ + public static boolean isMatch(String pattern, String url) { + AntPathMatcher matcher = new AntPathMatcher(); + return matcher.match(pattern, url); + } +} diff --git a/bwie-common/src/main/java/com/bwie/common/utils/TelSmsUtils.java b/bwie-common/src/main/java/com/bwie/common/utils/TelSmsUtils.java new file mode 100644 index 0000000..3c8930c --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/utils/TelSmsUtils.java @@ -0,0 +1,87 @@ +package com.bawei.common.utils; + +import com.alibaba.fastjson.JSONObject; +import com.aliyun.dysmsapi20170525.Client; +import com.aliyun.dysmsapi20170525.models.SendSmsRequest; +import com.aliyun.dysmsapi20170525.models.SendSmsResponse; +import com.aliyun.teaopenapi.models.Config; +import lombok.extern.log4j.Log4j2; + +import java.util.Map; + +/** + * 短信工具类 + */ +@Log4j2 +public class TelSmsUtils { + + /** + * 阿里云主账号AccessKey,accessKeySecret拥有所有API的访问权限 + */ + private static String accessKeyId = "LTAIEVXszCmcd1T5"; + private static String accessKeySecret = "2zHwciQXln8wExSEnkIYtRTSwLeRNd"; + + /** + * 短信访问域名 + */ + private static String endpoint = "dysmsapi.aliyuncs.com"; + /** + * 短信签名 + */ + private static String signName = "登录验证"; + + /** + * 实例化短信对象 + */ + private static Client client; + + static { + log.info("初始化短信服务开始"); + long startTime = System.currentTimeMillis(); + try { + client = initClient(); + log.info("初始化短信成功:{}",signName); + } catch (Exception e) { + e.printStackTrace(); + } + log.info("初始化短信服务结束:耗时:{}MS",(System.currentTimeMillis()-startTime)); + } + /** + * 初始化短信对象 + * @return + * @throws Exception + */ + private static Client initClient() throws Exception{ + Config config = new Config() + // 您的AccessKey ID + .setAccessKeyId(accessKeyId) + // 您的AccessKey Secret + .setAccessKeySecret(accessKeySecret); + // 访问的域名 + config.endpoint = endpoint; + return new Client(config); + } + + /** + * 发送单条短信 + * @param tel + * @param templateCode SMS_153991546 + * @param sendDataMap + */ + public static String sendSms(String tel , String templateCode , Map sendDataMap){ + SendSmsRequest sendSmsRequest = new SendSmsRequest() + .setPhoneNumbers(tel) + .setSignName(signName) + .setTemplateCode(templateCode) + .setTemplateParam(JSONObject.toJSONString(sendDataMap)); + SendSmsResponse sendSmsResponse = null; + try { + log.info("发送短信验证码:消息内容是:【{}】", JSONObject.toJSONString(sendDataMap)); + sendSmsResponse = client.sendSms(sendSmsRequest); + } catch (Exception e) { + log.error("短信发送异常,手机号:【{}】,短信内容:【{}】,异常信息:【{}】", tel, sendDataMap, e); + } + return JSONObject.toJSONString(sendSmsResponse.getBody()); + } + +} diff --git a/bwie-common/target/bwie-common-1.0-SNAPSHOT.jar b/bwie-common/target/bwie-common-1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..8a82b9a694617a946a777be01d9dcb99026aba81 GIT binary patch literal 36559 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 literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/config/RedisConfig.class b/bwie-common/target/classes/com/bwie/common/config/RedisConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..e636e574e23156ace6e4a6fa8918d1b8dc298320 GIT binary patch literal 3159 zcmc&%ZBrUo6n-u*uF&IsiFU+ z{S9qC;7pzA59p8T^xOq466oSgXUYuc?!BDz+;g6L&biBNdk< zI&W6A+_5e+dZ?HN4MtHfX*;5z+biyKf?>##(_K-imbpWa$5Uz3Drt7r(v4El;uUdh zTCcPMcev)NN*F`r9i0%*pjz`ao_9>Eo|yKAutd}NY-937DK^a+mc8x0TwoY<&SRSQ z#_QtGwIiN?Wt+y`4H9moSwTdX^`C^r@YoB}K3CQ@dIM41KC{9w>z-DT+m5haSISyz zZ)B9o-bpp;_4GGUbQ_%HU8|FB#maS(KJP|37KjxBJnZn&Idb zv8UTQm14>;Ooz)Fp*Uu{(ne+Eh}VwB&sDW$!40A!oHc7!UaaY|#7EC+j7s;mD1itq5fiXZSo#Y+%Z5BqnzYdNUMA+Mq!g^;2sMM)BQ!@IvSjN8JY zW4PELiOc^Yo#|#6pK7b7l`^;OguF23x>MPfYTK4cjl`*^@_Av~CN(sFDxGGS@6m_; z#WbPdkRk55rEH_Anq#g~dFP!;w^H=7?$jyc+b8Ne(Pg>82&x``Ds#ZF=!c{*ZPMF?=^n=NUhUT3A9Sa)tNP@sDDqm_*{xUUN}ymn=Aq11=Ed52 zCPnAlD~LXTiN-Nu$QO+c{G(oE_5*rZVn*mB+wVe#JD1wtt&dRxc`EAd_j%H@BHQ{~ z$F=KX%1VF2?ZXb-h|D}*u8H=|CR)00{Se_ry8Bw0rwcnP90vLR)}=AFmE^^|!*yJx zH&yxZfyu5<@_m|VG%^~4w@$!*bAP@@a==|2#s~DQHWlz8KB5`J$M^&RY0P}^yPz*m z;X62ie=|1IK;RU?gUG-Ml*}mxX*m=RL<4USeuH-!Q1|8YPy@sJv(Z2UBc~W8opxc9!j$x7!dUqbf5XLE}3G(JDVieK>1(hJJRq}L$ zyxgXspW!B+W0Jc6XKpOXroXLNKo`Pw+@P2S>9V*g&NF?8<~RjL#z zYoz>!C__+`c8>Bp3cnz8)w6+wZe8x4d+zSN$9KN{bM*_r4z?5|@l3&Utfr8_i_pB3 z@JhmKf@FNGRH}wS$kq?dfvG#D+tF)oAUeX|B|MtuKfO2h2${JWBk*mv!zGIq&+P@K z8?;QPFJu%5iE6XiXcAJ94|`>-5t3!wwS%{Wg<`2ih*!MNg0Nh-UGbscZ3}YimfEz`HdcuK~D1G`7qtXp1JZ-2Fg&Y?Y%T`b{Y+zG`1X;x*WWxG?j3J~ScGhSg3M(L}kA5OXeF4!o@Yd5OT#@X>P@{GoZjHOY$+}$cGXc<&lB{z7OLVRE}A7#4pY9 z%ba78(AZ`;tFtHeiS0|!dDNO^n~X>aj~T0z0<0j%k&Gw*G&6;)hMOT`7g*5fE&}oJ VDgJ}lDm)RaD#cR?PZ`IM{|oAmkthHF literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/constants/JwtConstants.class b/bwie-common/target/classes/com/bwie/common/constants/JwtConstants.class new file mode 100644 index 0000000000000000000000000000000000000000..452b534641592a2df98eeb0dd2a45ec22a968bba GIT binary patch literal 544 zcma)(%TB{E5Jj&`OG7D-miJR)gMbCuumd4gZIB89BvLA|s+`mmw}}IJP|9DiLSn%O z@KK0K0FfmNkM9|4u4n9z&$o8~2iPoO3`<2U7qP-H(=b}KrfGGqE#s=wY%o;KK7Zu8 z%T-UeqCl$NA;VPNS7F3e)aGt1G^{erW-Bjh=Z1zg1}*hDGj24jGmKkC{mN)**dTo* zm5h!V#&&kw4Eeg>6?DHTmAHsKTLdj`yOgP#zQf%%4`jkW$$WGtLxvsG@jcxhN}-eR zd_~)LU!i_FjDDL8spFF6$AKeGWa3%L9_}ael`)MOhVB3P(X@Y$a%uO46EPIyPy`*> zrJ)n0xJNgovNI4PhE;AmU2)sHll_6~DgXW<2&4FM_%wRP7IO3pKprc!3ZUm9%7Oj_ zT81ZxOBtRdE@ya(Dp@iL#aVLDQw9oquV62!WrgB6r9tLZise)nFo$^}h6Rc_EPesg Cd3opn literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/constants/TokenConstants.class b/bwie-common/target/classes/com/bwie/common/constants/TokenConstants.class new file mode 100644 index 0000000000000000000000000000000000000000..684ace3b3539ed572fbe090abfff328502045cc6 GIT binary patch literal 526 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 literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/domain/request/LoginRequest.class b/bwie-common/target/classes/com/bwie/common/domain/request/LoginRequest.class new file mode 100644 index 0000000000000000000000000000000000000000..d4bb156c23ae748db09b5c334aa23c99ae694a3e GIT binary patch literal 1944 zcmb7F+in|G6kW%j@r<2G>bQwhLkek0sV{L2v;}G>0otZF><}ewC3s?DkK!q|CydAR zU-$s>k_V8$l|Vx9(n@>-pTQ%gtTQvd#PI{j);as^voC9}y^sCJKR^Ep;2Nq4%%dEK zf{I+$HEblfZ_4E(dH1oDK9SN*4Yv|VpseGz+_!Yx(Q#Lb_cYuW(0g6W-8S2nK&tx0 z{KhP`%+5h+&vWh0L525+X1Dv)aT@}$b-QDGn*z~n?y-P!%W2T-Ox5mK+r9R__bRzB1cY;vvhYekb-bqK3e3uqS4aHL`T8+MU@#&$G#Dvn_dK)yRn0u~No1RY zmetM9mITM{G|g@^=mVR=cB(tO_iI}OM>*zN-CoNRh>zurua3g&o)h$0AhGB4+`4tg zmJOUAZ^9Kh6b2TNHju(u0}D7SQ1~BhG*H5-fn}UG@RpR`kkUJNS72#!;%@frRzs4P z9>Z~(Y_Qmzfe&z=O&x^`x8ww6eiJJ!M`kYjg%M}I@Dn1_ai?h`D+zE*NfIGQ4a?>1Bgw;4 zHKgQp7;?c6$r%Yz{>5Emwq_y!9aQDG@H>=mp+=7jzd@<3<@-?mBZb)Z8ke$Ce1Vya z@*ML=Fp3$a4{czfmsOhR=$ z;}XeGy1y_~G9D;qwE z%gIWU6za*s5wv0-@h_!bFDvpQql7oQB$ijp(+Rs4L=9m?`8MCfRpwN2o&R1}nKi-Z zf1S{x{6Sd4`;-))oCi=|QK66=AxH>>ctxYpIU*H{PzMGB8|9>mX3WRmgs{?G<`k?n r`wJ4EKf_GQ=wntE%q=w+$hwrzaOopC`JB|T=adcW68O+>!i|3cOPo!d literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/domain/response/JwtResponse.class b/bwie-common/target/classes/com/bwie/common/domain/response/JwtResponse.class new file mode 100644 index 0000000000000000000000000000000000000000..45fe8c30d6b7912f0d345449912e0d6c43e77f39 GIT binary patch literal 1907 zcmb7FU2hvj6g^|lde_dTb=-W^kV1fz`XjD^wm|J9K-=^q*riIUO7O(SUd7wmyT)Eq zehWW-21bb;ou5O@VkW|3E-q_nNext~suKchK3hd-tuqHZ7T& z*Ra|Tte&IRkx}|Br!P>dHM~xF@3CW-2|AuzZh9Tdamzis-}T(SUEY4|??jl%jeXm{ zACjBT<)_h0(qk)PX!OV43%Qfdigmhf`z^0|&+1tn+qZkvyyG%OTh!3=TXs(%r3zh*1f29 zXtrTu8=tZ%YbzoD4HlR;@d3_}@ykG=?yT49c5S!Gn>DTBC+H4XHF8 zhnx>W@^(Zl|KhAOTdP?34w^hH{to#qwD@81H^};0VF)c)5+v@faj3}BGt6Y=Q_LN} zEM?^o`pCnmXml|uiL9o45>Jsiz-(5_CPq&3kh$WR?BDH>!&rwF&f{&8UcfFcu%|Kd zy@4EUaTKtLJdwmL>Qo@oP^V9kD1kM`UqMng{>CXCrRP}Gagkp`JjdA(CdXo℞Q_ znn;YROsN{8DHRmc*a@a#$Fwn1jr~a`2q7moYd=HnHQ^OVhFj_@M#W1q$i(~cH}wbqPhe=44QEDUu#-Er~m)} literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/domain/response/Loan.class b/bwie-common/target/classes/com/bwie/common/domain/response/Loan.class new file mode 100644 index 0000000000000000000000000000000000000000..e1b6cc2787819f5f30d510798cc74bfb02da0461 GIT binary patch literal 7659 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 literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/domain/response/UserResponse.class b/bwie-common/target/classes/com/bwie/common/domain/response/UserResponse.class new file mode 100644 index 0000000000000000000000000000000000000000..f11dda6d9f201c23cecb57b2e8f8bfa4cd3f2d07 GIT binary patch literal 3849 zcmb7GOLG)e6#jaqUo+D)83GB6pauw%C!>fDI)KVcq6uJl2#882X)^`6od9PIu3frYcmW?)~mP-#NMGobTSAKmPmi z7XaJvQ4;sTO~Aw}GR(!N{Iljw$P z;)2Yt$?&>~H%z=~;w=+zn|Q~>yR!YBf%g@}in9t zth$wh&b+IjyM=J1RwociCYfY79c#M1TZB)*edt@qEq6(ZsQ)BKI_iZ#s*I* zP`vhLhbGqBs}-MFG@509UrFr&AM=`z))Xid}E84x&nL4PTHq5HJS++&5eN2 z6lq9kZY2E(p&(O%d$>v;sW~&}CY=RealD28Wie-*@;)gB6Dc^=LLgcyc$~Q&o*JLr z$6^rc6yRcsS0L_ZYV_CBO7^!TkmzroHPPQZmfjy8!mN2gOBE!Kc#D-8cYjgt#0u$u zUDjLV>RK4UpoROlXt&zS);kYzM`uq|RDolGCTls&QCkXV%HaH6lZkehZjk+Z*SFY{Id?(uYb)nyp z&x)ITdjTCWX#r78y5P@jgg>(v{>*mxGdse01r+HV$04rroE6U6&^0LE`?O(>da#KR zVk^X>*us?}{o&Z|`~za&bvPT5&TM3abG*~pjC7^|BAnGu=R~A4#T4PJbvh>_ohiZy zXT8%o6X{IJMmQUt&e=%k$FZHQm1^6ZW1RJ&;j4&6_o_EwAn29!QN*Fpmn~Mf$Z|1; z9Z@0U%MB?yYlK|yhuj$*QeAFHk!&O6MnB}P=)|?j=BWox8Zww}|3qhCk&Wu$XjPH!QlZG)t=ZRQLi znIXx@nJuJ@oggV=CvyoQB|}momuw+**(s8`Y%7-%k`-kJk7m0@6Mk%K%{bg72`x2Ch;wv zA<|L8r+AjgKm{LTg2=>YI7h}lB=9+093)C&iE$4RrSLOVbePD(-+XePBTC~Rti=>j z21j__3G^7|4P*=)y@_4}$M|O|H?bywiMxXJySta-P~{65N_acdmFGYcRY;X$w^b>4 z4YWp;H0B^x3SWc$zTEgNvJ!W`{4s7+u1OGqP{l zsu*%=XfZ`-fhlckzKI(1oy?q8H)U+yH|Y%%l^1w**@kbT=t3`}ZpzxGZ!#MuN|9dc zqJ?of$RJEPj&E=hrdwlbieq zL+E1O=F;?vwuO#~D95Jn9nExSz4`knP!)f4#fX3tKcV~NHLUDjwS*oK*AjZWR|lBa wy{CIkfV%|e0?fCfxBH#|rvOjGae?eyd2RH_q%>V!Z literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/result/PageResult.class b/bwie-common/target/classes/com/bwie/common/result/PageResult.class new file mode 100644 index 0000000000000000000000000000000000000000..29e968719446abaf49c470a4316b9171a1318eea GIT binary patch literal 3304 zcmb_dZF3V<6n-|@%^O>q7Fr0lkjh({wnU+#HfdF`C?$oySq0zNrfaj1CNXLJSvBQuVUGcw~}@UN)&oZU^bO)2dMr|G@to_p_k&dYP|{`v3EzW^A= zMhyK}h(g7p3`=3W6XU!r!@DuOhwCEUkl}q9K9KVt%J5MbAIH#zg$QoSY{;+@K|$u# z2uztj31cmcq5{pX*hWc#GNV8(Sv6ZhJb%mh%*fPjtCY!8lT{F1wARXoU9Xx7`Z~6A zOH0`)o(biwvSm*x2&RUYY3yQUm8ZM&R@uB-Utck+OU6oxn%;b+V3d}PswHbrsoF)W zrr>zKP+8Bc+_B6Ih4o4~Q#EV#lAW0|*31P*BvSuY3!iT^t)zCp-t_ihYNjKOtau%t zHSJ<$b!xj1=~H6cN!NxP*X>H%GX>|j9nB8!?h+$f&Mi&2?v#x3TISlyEwf-} zr?#2%kaxG)3^QU^+_Wh;yUp6p&b3l~=l^lcwU^tg-$JLznrSb&+$5pM&M*~1M=~fi z+*vyXhqftOIjFTPsi_$$TbLTx)PYo|CD}jRsclz0WPVyVN~A@fcgA0^;TvqEics9? zApaIStzs9=Dtk$&e!^|Fn4|L+r}mJZw4|nM(KZUVXN?V~dH6E0nVGPHQJxm(C>D)c z(d|Fx?lQ6G7B0_D(>cnas?$dlPI$eqc@B^)i+0s2)7ZggHk}w;Es>|5PKWK`x*DsJ zSv1+_CF=|6bsC5*R_fJ)dC8KOpu62WXCz@dj^db(!${~jg69+r?fM$XmD4)X7zxAD zaSOL~Oe3q~1-z)^EY9hekmV)3MT)em;zo3#Zk1N0COvIWQchAPb(F9!Lz#3LO-i{O z9jmJh>zKt=J{E0zZpSijj;bSW1%o>T((KJ}tzIaYHPY(b(`dC5FBY@@46q@5)!UL5Zf`N?y-GWu#}Ge6{a~UI;2-PAPgy`pN!@@W4??HR zGILB)GtF7ytfe17`H4c1Mt~Tvfu>ZNdY+P8;vpQz3C<_CXijk@CQtKjl5(B1%DG!i zrjOl6AU$>;!M5>UXZtY61fukAKm8MsBro!s2O^S0Ai&*D3_%CD-*HV&39!32$eSt3 zQ3)D63@_Ya0+5@YXLF1|AYzZ8UOzhe0NRgSxeT z1sx^m7|wX0*EkDk^yuhAgdQT?iJA0aMq8MYn5~$i*%32C_t|nBlf-(1u1Vgs^gRTA zpx}?OXO9(S^U{oKu1S)62zI*Pw{Ll_~}5LATQ$;8W-P}2_{?)rAM}q@Yx`4%Ls_eg(e8?I8{)Za7PH|#`Y>< z`P6x_{Y7?bygomY{vMjTIr1CS@1O-YM}CDmJDP4F;w&jdNBRHFx3bAq>?)VB33co- z_9fIm&~q31SVC=JpL1T_q*2xBQGW#EE?6r~^T=V64)t-KV$TNn6d%KD)CHND1YW14 z`r2vUOQL&T=ySn|Jsghwjs0O-^{$Fn(gQnGhpAf7D_#gktSef9NC(ZnV+ zQ6;p;h{Q+kB9hP=&~Hu-JS%nMUh0DEp|^3FXc{t@p%h^Ir*VZz3$pzVAy0=j-%}tr z#bHUl@&a0=S!vbOBXnJVfc?GQ4a6m`26}pX nT{+gkf!>3Z8|dq7KR2)L`<(KEXlGM2;#|NZ={3wbtNH%`Ddljg literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/result/Result.class b/bwie-common/target/classes/com/bwie/common/result/Result.class new file mode 100644 index 0000000000000000000000000000000000000000..39ab3dfd2df09fa0efb52e5b4f2651548baaceb0 GIT binary patch literal 4886 zcmb_gTX!2*75+w^(MZZTu@zscByFyMBU?6YOaa?*F1`>2UsBr%v_RXjJlINY$&KYa0$g$1BD?VqRefHUVpKo8z z#Q*ruAO8Yi5Wk7TM%hLshH8T3GqQd*hA-K8PS)3C__7RNk>RTe9LF`0`I-!0m*E?- z@l6??m*HC?@@=8MBh(8vUQD11*J5}{=I_ezatz;#;rl{fkKqS0|1gdSUP<6b__0v0 z+W3i$pBiW@d!@X)dc`Z1^TopD?6?8rqJh@2Vxe4d3zaMGYSpuN7x^&^*z=di#wODtVE zZavs&oAxRz#idJb$zAg*41$3(TX;>cwy_>KKGDSS&{cF$woyg^9@*NHU8@Uxv%FHN zSZV-w#~#gW;nDx>&R|b=*Jp{$>=u6PURi)kf>~WrDQ#e~NdR}RntsOJ^?ac8@V13? z;@%R0t8-gio(Z~pCj+I?k$fRv8D$6PIeCROU0KPq7VKrOqN1mn*vJpCJC+CSJ5LSD!RO$gw#PAy#|gqw*8!bk;((X+eCz&_g=mJ z&p*HR-b=6CdHHn*6PR?+C&%^1oj*N)=k{#__cv-&m(`DmgHL11!DU==@F*U0@ELs8 zK?c1J`Z3_(qj=E43clcA2D1(>;SmR)m*pJh9po`$(*MFDt=kHQ-C- z?)th{STc}lmd~Lusn}|78J9z>hkI;qQl~?FFZul;UD-m#TlPvc(q6xZW-__*`fG!= zF)=qcJBOqE$Ti|6`7?t?`GP$9X{6*I+w-} z_Z=lAiNn?KCeA6YM)+$P+=e!D+BY+*&CGI+a4#-qdbM|9EB(HeE+wR`P+YQ=mh1N7 z+zaf*Bfh=<4V!0p;A~S!tYowaBoBokIg4}J*HapjIH9!C`dB1{$ipE-l!qJlulsV| z_oW%kbzi~&426^?GywH$3n#etT`-?TGnlPrFpvKKU>?(O4eQX_#(}_M7_9Rli?(zi zMhh$h6&yw0`>A(eKl(OeGns=m#53s{5}Cdl_GBc{6_Q<$ z@A^r^@F}$70+Pt08y9^K(n^U&R?19#k0nkcc(@g+fsv(e%}ZmUWQ$=L2jgOLL>WjYDD$> zdNKw^AC= zYV(&Q+F45Nuge}6$r-MaLuTgh*po8fMf*)SnUq<>{y@BA$f8KcP&8$UO!QqOZ=yA2 zrJ{k5DOqZUx~59{3(BF5cvbPZ|EhK3Nj$+qh;TJd`a!>7M&Xh&vA~yek(5P54(S&A4S5B{Tq92e9?IyT{f2aFJ`=t`xF`9fbVfe%apGn1ski_AVp*a zuf}3i*HCE})GkHoygbhJvPXKLv5`5i;1Y@|%R6O)K=>riu~2bF$}bPGGuRlng`ID@B1MbN=4TBX}9 zteI}CkupOU7}ux@mKR}uKtN4mX&8i$e>eGn$Li~dFgjrc0)dRVnME<)pPzyng>`x% zU2^apbg{R0C-18vB|y}0Ajvi_bdpo@kfJ+kxIg&-=^73<_L*=~9n`n3heJ5h1!5>} u^l16Ake~f;;7AQe{{TMt$9%$)5>+2h2|pF~^EK}#rP|awp5}f8rT+r2x1c!y literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/utils/FastUtil.class b/bwie-common/target/classes/com/bwie/common/utils/FastUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..c87c0cf6c05b85794a685c3104182abeabc781ac GIT binary patch literal 2597 zcmbVOYi|@)7=BK-?d)y`D5cm|5DRi?x6lzq6iTaDTP(H|S*VD&&hDPwPMOO(GfN9z z_@Ifz#Kcb~BqsX7#P~_Pq)>?b0DlJ{{t4rAX12>xwnlBz_uSs|zR!C(&+PAi-MkIp z04}HTIELFWf)|r`DUG9eS&7jUy77wI9#dkx4ae|m8WT94#%q{Vr&CFsXu~v4Ch@vD zIi*BaiPK8^jE0#sI`M|mIh(|r8qTHh7T(tIjzGfpN&+2|o?kKoyLe#UnDj~|=?@94 z3qsE~OLEkuF)#w@U$FAh80UK2vSqgZDsA);5h(GVm&XUh-z^5zDp05hCsDpAl#t z^$Jp8!=&ZP6BQ>X{nI85Mj_-)d&cxFwXSY9hjSJ^^hU^Y3zjq(g5$YHCA91yLVJcY z<)%`$J+mM%))(iZ>|1WB=$npQ@ci?}g3K9C#SX2q>4(PD%1p&N)E@<4*rr=DvZ1=C zvRBhqIs*Iuvsr<5&$mjJYud_$ODHN#m8@01QmRt&q#4dBKWkU1;5nw{8bwtxRiWq# zv8Kls^RiqmNBfiv=e)v6Q^g)ipZQA{q|Ip@$nL&JAvDZ@Al%J$x-}>Cs1+H}8Q*4} zvZ0wjKV_DqlCf6>l1K7(wdm<=)CaNWb*j5my#`ed1Tqa%8W6Me!i!~TjCxMlbJ@H@ zI<{knhIe(mhgktJsKL~cLtaM#QpXe6rlW|GjyYHw=5?Hht-;aZVpfBvqm1`;Y{6E6 z9aZeT!^6EJBlo`g?9Q#F``3TGd;8NnH*Ws%!_C1#TK9DX;G^k&`236epZpeU>8Rj> zjs?u>SXAN}Tol;!pt`km>A0lMKTziMyH~#b^Xhl^u6%j-^KS&Usamhy*BU<5@ew{| zCq1w`otu|=nlhp%|L@zJ;7T%_exxHi`x;ii&SU&01lnxYZ^A9e#pxnjqfsAC2&95a zE{I-{(wS&zd_9p&xaCSn)6#SVx>i6~o>6z8I*qDX>k@mB1ae&9`L&VDdMxq&62LexW-pa9;V>3rG73EW0 z85{-2mdtgCpEzm4PD-T=e$jVP>ahZLV-HsXedtFby8Jcunz?siU>QvUvFu1Jp}Bc> z2`y8ZU(w1=nyMwc^CSC8V$MUhHc(Qk-vtMwsgfaTCWbLflG_JLspMbAzZ9 zmQ3ugibegX$zXt(x=62kv5yuFv|x}jfv2gjg6+h9&RR(390W=5S*oenZ&4}1ad_Yc z+ODGgXXqX4ma)DG9UHE3uRRK2?-DlhzhfDj68N5*RO5Q{G9II1*R{w)hQ2##Oyw?) zC&PFKu#u=biKd5WGIYF;SOy8d!D#bPt)APdsQywN-8azl3v^XeQCHK=w0@X-O&F@R#S!3dS2w)W literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/utils/HttpPost.class b/bwie-common/target/classes/com/bwie/common/utils/HttpPost.class new file mode 100644 index 0000000000000000000000000000000000000000..8c159dd3e285996b53a9b1c3bae282e09cbe2b0a GIT binary patch literal 3049 zcma)8TWl0%6#jnN-PtbFJ1s0CR8TCvutfyQa+9{SRJWzjf>scm-5uJ&-JNB2mf~Ge zyx&l~BtB@22{F+`4A~l+h>1xVLpW+Cf{`&p4|0<*lfjH_#M8m;ww)R<)Ak1HO=w0^puTZ$ z_>gu)3&yqNNN~`$jO54$$F63LP*d$J#{!<1*`wRihZ$Ibsy^KwHDd#sr6qJ*x2R=# z<4nO7Gg@K%DF=YPqW+4v5UlmO2@pv$9 zq-~WAu};BrDxSv+0`qUbzmAL%r|SZN*8FFXA3k(-k@8=~i+D-J%Q&Xs6&0`IILm0J z9+?RN)j7yrq4e>%ir4VEz{32&jHL7ad$tX!ctZ-miMLd|Ey+7*Qt>X{Q}I4Nm@>&a zn4WZc?r4?;Qn)JjLRh%Fhq_zar5`6G`B242I3@!+sp4aqzuG*wP+clMK@)F8#ivqa zao+P;3ylK*-+b&4M}t!fJ0gczhtpVY6BfHth+~TDV24I6bIctEMH&a6PP2)aLo-9Y zg~ASdfIm9jX*V7Ihi3Np*!)HHulPCR^do%u{>Xix;@Ux zIwBRNQ)V))yR(*qx0ev|izlD9^*YRQv~sVy0$535pbTwTMJWm1M`d%kHq^}d5hdXtP&xt6@Ho6RN*2Cm zezPdc!e7u^K?L~f^P(C{P~+&YcXi+atmc^)3pt|J(B@h`c?8+gD5sWdwB#R(lmTMB z2#Y?^KY_WlsD@~|e3(I0gggOH7L~uCD%@OCokdM^b?CD!YTacXy{hB4z8dGg#9Hp= z_q9x-bpi{9ClDBJsaZIVyT-AoUxd7^S=>Dw@=l^6P#W-NvG~zbxBhCKL^ThVoPysq zbr12?Em56m&LAYbC-Oj8kF^?TjGA7&bAA4SWS{oDe z54~KCuUSIh5ceH%r-?g5T$Z>A;?5HHD{+&=og?md;{G7+JnQfRy}3x-CE_j8^uCw5sR@^EJYVH(;@Chr)Z)4 zYHWA9;9GV?gt=*_O_`VdSWk-{#^#~LjijICcV9cZO{Cd8?_7R&A-}tt-`$+r(HB>r zj~?W9vYD`%cG>-69pie4-B&8sFuD%jm6twtGRhKEiYDG*H}9^8vKH!Z(Pc%!b_Kl( z9#-&(g0O-62J@1e37ctNV5f8# GyZ!^i5y*Z3 literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/utils/HttpUtils$1.class b/bwie-common/target/classes/com/bwie/common/utils/HttpUtils$1.class new file mode 100644 index 0000000000000000000000000000000000000000..bc75c8266538862717e657f9e11b0aea0b59f65b GIT binary patch literal 992 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 Tivxu)PIU+;11$35oC5v6*|b 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

-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 R_fh9~c!7^%X%g(+e*i$qj(Gq8 literal 0 HcmV?d00001 diff --git a/bwie-common/target/maven-archiver/pom.properties b/bwie-common/target/maven-archiver/pom.properties new file mode 100644 index 0000000..b19b7dc --- /dev/null +++ b/bwie-common/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=bwie-common +groupId=com.bwie +version=1.0-SNAPSHOT diff --git a/bwie-common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/bwie-common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..a1f95c4 --- /dev/null +++ b/bwie-common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,21 @@ +com\bwie\common\result\PageResult.class +com\bwie\common\domain\request\LoginRequest.class +com\bwie\common\domain\response\UserResponse.class +com\bwie\common\utils\HttpUtils.class +com\bwie\common\utils\JwtUtils.class +com\bwie\common\utils\StringUtils.class +com\bwie\common\constants\JwtConstants.class +com\bwie\common\utils\HttpUtils$1.class +com\bwie\common\constants\Constants.class +com\bwie\common\utils\HttpPost.class +com\bwie\common\constants\TokenConstants.class +com\bawei\common\utils\TelSmsUtils.class +com\bwie\common\utils\OssUtil.class +com\bwie\common\domain\request\LoanRequest.class +com\bwie\common\result\Result.class +com\bwie\common\domain\Repayment.class +com\bwie\common\utils\MsgUitl.class +com\bwie\common\domain\response\Loan.class +com\bwie\common\config\RedisConfig.class +com\bwie\common\utils\FastUtil.class +com\bwie\common\domain\response\JwtResponse.class diff --git a/bwie-common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/bwie-common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..b6f3abe --- /dev/null +++ b/bwie-common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,19 @@ +D:\lv6\month1010-fst\bwie-common\src\main\java\com\bwie\common\utils\TelSmsUtils.java +D:\lv6\month1010-fst\bwie-common\src\main\java\com\bwie\common\result\PageResult.java +D:\lv6\month1010-fst\bwie-common\src\main\java\com\bwie\common\utils\StringUtils.java +D:\lv6\month1010-fst\bwie-common\src\main\java\com\bwie\common\constants\Constants.java +D:\lv6\month1010-fst\bwie-common\src\main\java\com\bwie\common\utils\HttpUtils.java +D:\lv6\month1010-fst\bwie-common\src\main\java\com\bwie\common\utils\HttpPost.java +D:\lv6\month1010-fst\bwie-common\src\main\java\com\bwie\common\domain\request\LoginRequest.java +D:\lv6\month1010-fst\bwie-common\src\main\java\com\bwie\common\domain\response\UserResponse.java +D:\lv6\month1010-fst\bwie-common\src\main\java\com\bwie\common\domain\Repayment.java +D:\lv6\month1010-fst\bwie-common\src\main\java\com\bwie\common\utils\MsgUitl.java +D:\lv6\month1010-fst\bwie-common\src\main\java\com\bwie\common\domain\response\JwtResponse.java +D:\lv6\month1010-fst\bwie-common\src\main\java\com\bwie\common\utils\OssUtil.java +D:\lv6\month1010-fst\bwie-common\src\main\java\com\bwie\common\config\RedisConfig.java +D:\lv6\month1010-fst\bwie-common\src\main\java\com\bwie\common\utils\JwtUtils.java +D:\lv6\month1010-fst\bwie-common\src\main\java\com\bwie\common\domain\response\Loan.java +D:\lv6\month1010-fst\bwie-common\src\main\java\com\bwie\common\constants\TokenConstants.java +D:\lv6\month1010-fst\bwie-common\src\main\java\com\bwie\common\utils\FastUtil.java +D:\lv6\month1010-fst\bwie-common\src\main\java\com\bwie\common\constants\JwtConstants.java +D:\lv6\month1010-fst\bwie-common\src\main\java\com\bwie\common\result\Result.java diff --git a/bwie-common/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/bwie-common/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/bwie-common/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/bwie-common/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/bwie-gateway/pom.xml b/bwie-gateway/pom.xml new file mode 100644 index 0000000..f13e930 --- /dev/null +++ b/bwie-gateway/pom.xml @@ -0,0 +1,38 @@ + + + + month1010-fst + com.bwie + 1.0-SNAPSHOT + + 4.0.0 + + bwie-gateway + + + + + com.bwie + bwie-common + + + + + org.springframework.cloud + spring-cloud-starter-gateway + + + + com.alibaba.cloud + spring-cloud-alibaba-sentinel-gateway + + + + com.alibaba.csp + sentinel-spring-cloud-gateway-adapter + + + + diff --git a/bwie-gateway/src/main/java/com/bwie/gateway/GatewayApplication.java b/bwie-gateway/src/main/java/com/bwie/gateway/GatewayApplication.java new file mode 100644 index 0000000..3619137 --- /dev/null +++ b/bwie-gateway/src/main/java/com/bwie/gateway/GatewayApplication.java @@ -0,0 +1,11 @@ +package com.bwie.gateway; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class GatewayApplication { + public static void main(String[] args) { + SpringApplication.run(GatewayApplication.class); + } +} diff --git a/bwie-gateway/src/main/java/com/bwie/gateway/config/IgnoreWhiteConfig.java b/bwie-gateway/src/main/java/com/bwie/gateway/config/IgnoreWhiteConfig.java new file mode 100644 index 0000000..5705d6f --- /dev/null +++ b/bwie-gateway/src/main/java/com/bwie/gateway/config/IgnoreWhiteConfig.java @@ -0,0 +1,32 @@ +package com.bwie.gateway.config; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; +import lombok.extern.log4j.Log4j2; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.context.annotation.Configuration; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: 放行白名单配置 + * @author DongZl + */ +@Configuration +@RefreshScope +@ConfigurationProperties(prefix = "ignore") +@Data +@Log4j2 +public class IgnoreWhiteConfig { + /** + * 放行白名单配置,网关不校验此处的白名单 + */ + private List whites = new ArrayList<>(); + + public void setWhites(List whites) { + log.info("加载网关路径白名单:{}", JSONObject.toJSONString(whites)); + this.whites = whites; + } +} diff --git a/bwie-gateway/src/main/java/com/bwie/gateway/filters/MyFilter.java b/bwie-gateway/src/main/java/com/bwie/gateway/filters/MyFilter.java new file mode 100644 index 0000000..8dfc9b2 --- /dev/null +++ b/bwie-gateway/src/main/java/com/bwie/gateway/filters/MyFilter.java @@ -0,0 +1,63 @@ +package com.bwie.gateway.filters; + +import com.bwie.common.constants.TokenConstants; +import com.bwie.common.utils.JwtUtils; +import com.bwie.common.utils.StringUtils; +import com.bwie.gateway.config.IgnoreWhiteConfig; +import com.bwie.gateway.utils.GatewayUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.gateway.filter.GatewayFilter; +import org.springframework.cloud.gateway.filter.GatewayFilterChain; +import org.springframework.core.Ordered; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.http.server.reactive.ServerHttpRequest; +import org.springframework.stereotype.Component; +import org.springframework.web.server.ServerWebExchange; +import reactor.core.publisher.Mono; + +import java.util.List; +import java.util.concurrent.TimeUnit; + +@Component +public class MyFilter implements Ordered, GatewayFilter { + @Autowired + private IgnoreWhiteConfig ignoreWhiteConfig; + + @Autowired + private RedisTemplate redisTemplate; + + @Override + public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { + //获取白名单 + List whites = ignoreWhiteConfig.getWhites(); + ServerHttpRequest request = exchange.getRequest(); + //验证路径是否在白名单中 + if (StringUtils.matches(request.getURI().getPath(),whites)){ + return chain.filter(exchange); + } + //token非空验证 + String token = request.getHeaders().getFirst("token"); + if (StringUtils.isEmpty(token)){ + return GatewayUtils.errorResponse(exchange,"token不能为空"); + } + //token合法性验证 + try { + JwtUtils.parseToken(token); + } catch (Exception exception) { + return GatewayUtils.errorResponse(exchange,"token格式错误"); + } + //token有效性验证 + String userKey = JwtUtils.getUserKey(token); + if (!redisTemplate.hasKey(TokenConstants.LOGIN_TOKEN_KEY+userKey)){ + return GatewayUtils.errorResponse(exchange,"token过期"); + } + //续期 + redisTemplate.expire(TokenConstants.LOGIN_TOKEN_KEY+userKey,15, TimeUnit.MINUTES); + return chain.filter(exchange); + } + + @Override + public int getOrder() { + return 0; + } +} diff --git a/bwie-gateway/src/main/java/com/bwie/gateway/utils/GatewayUtils.java b/bwie-gateway/src/main/java/com/bwie/gateway/utils/GatewayUtils.java new file mode 100644 index 0000000..7b789e5 --- /dev/null +++ b/bwie-gateway/src/main/java/com/bwie/gateway/utils/GatewayUtils.java @@ -0,0 +1,98 @@ +package com.bwie.gateway.utils; + +import com.alibaba.fastjson.JSONObject; +import com.bwie.common.result.Result; +import com.bwie.common.utils.StringUtils; +import lombok.extern.log4j.Log4j2; +import org.springframework.core.io.buffer.DataBuffer; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.server.reactive.ServerHttpRequest; +import org.springframework.http.server.reactive.ServerHttpResponse; +import org.springframework.web.server.ServerWebExchange; +import reactor.core.publisher.Mono; + +/** + * @author DongZl + * @description: 网关处理工具类 + */ +@Log4j2 +public class GatewayUtils { + /** + * 添加请求头参数 + * @param mutate 修改对象 + * @param key 键 + * @param value 值 + */ + public static void addHeader(ServerHttpRequest.Builder mutate, String key, Object value) { + if (StringUtils.isEmpty(key)){ + log.warn("添加请求头参数键不可以为空"); + return; + } + if (value == null) { + log.warn("添加请求头参数:[{}]值为空",key); + return; + } + String valueStr = value.toString(); + mutate.header(key, valueStr); + log.info("添加请求头参数成功 - 键:[{}] , 值:[{}]", key , value); + } + + /** + * 删除请求头参数 + * @param mutate 修改对象 + * @param key 键 + */ + public static void removeHeader(ServerHttpRequest.Builder mutate, String key) { + if (StringUtils.isEmpty(key)){ + log.warn("删除请求头参数键不可以为空"); + return; + } + mutate.headers(httpHeaders -> httpHeaders.remove(key)).build(); + log.info("删除请求头参数 - 键:[{}]",key); + } + + /** + * 错误结果响应 + * @param exchange 响应上下文 + * @param msg 响应消息 + * @return + */ + public static Mono errorResponse(ServerWebExchange exchange, String msg, HttpStatus httpStatus) { + ServerHttpResponse response = exchange.getResponse(); + //设置HTTP响应头状态 + response.setStatusCode(httpStatus); + //设置HTTP响应头文本格式 + response.getHeaders().add(HttpHeaders.CONTENT_TYPE, "application/json"); + //定义响应内容 + Result result = Result.error(msg); + String resultJson = JSONObject.toJSONString(result); + log.error("[鉴权异常处理]请求路径:[{}],异常信息:[{}],响应结果:[{}]", exchange.getRequest().getPath(), msg, resultJson); + DataBuffer dataBuffer = response.bufferFactory().wrap(resultJson.getBytes()); + //进行响应 + return response.writeWith(Mono.just(dataBuffer)); + } + + /** + * 错误结果响应 + * @param exchange 响应上下文 + * @param msg 响应消息 + * @return + */ + public static Mono errorResponse(ServerWebExchange exchange, String msg) { + ServerHttpResponse response = exchange.getResponse(); + //设置HTTP响应头状态 + response.setStatusCode(HttpStatus.OK); + //设置HTTP响应头文本格式 + response.getHeaders().add(HttpHeaders.CONTENT_TYPE, "application/json"); + //定义响应内容 + Result result = Result.error(msg); + String resultJson = JSONObject.toJSONString(result); + log.error("[鉴权异常处理]请求路径:[{}],异常信息:[{}],响应结果:[{}]", exchange.getRequest().getPath(), msg, resultJson); + DataBuffer dataBuffer = response.bufferFactory().wrap(resultJson.getBytes()); + //进行响应 + return response.writeWith(Mono.just(dataBuffer)); + } + + +} diff --git a/bwie-gateway/src/main/resources/bootstrap.yml b/bwie-gateway/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..74fb31e --- /dev/null +++ b/bwie-gateway/src/main/resources/bootstrap.yml @@ -0,0 +1,29 @@ +# Tomcat +server: + port: 18080 +# Spring +spring: + application: + # 应用名称 + name: bwie-gateway + profiles: + # 环境配置 + active: dev + main: + # 允许使用循环引用 + allow-circular-references: true + # 允许定义相同的bean对象 去覆盖原有的 + allow-bean-definition-overriding: true + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 192.168.111.133:8848 + config: + # 配置中心地址 + server-addr: 192.168.111.133:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} diff --git a/bwie-gateway/target/bwie-gateway-1.0-SNAPSHOT.jar b/bwie-gateway/target/bwie-gateway-1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..4e92106c119269818a8ddd198982c20c521e991d GIT binary patch literal 9265 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 literal 0 HcmV?d00001 diff --git a/bwie-gateway/target/classes/bootstrap.yml b/bwie-gateway/target/classes/bootstrap.yml new file mode 100644 index 0000000..74fb31e --- /dev/null +++ b/bwie-gateway/target/classes/bootstrap.yml @@ -0,0 +1,29 @@ +# Tomcat +server: + port: 18080 +# Spring +spring: + application: + # 应用名称 + name: bwie-gateway + profiles: + # 环境配置 + active: dev + main: + # 允许使用循环引用 + allow-circular-references: true + # 允许定义相同的bean对象 去覆盖原有的 + allow-bean-definition-overriding: true + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 192.168.111.133:8848 + config: + # 配置中心地址 + server-addr: 192.168.111.133:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} diff --git a/bwie-gateway/target/classes/com/bwie/gateway/GatewayApplication.class b/bwie-gateway/target/classes/com/bwie/gateway/GatewayApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..0b230eb8ed64b712010c4809aa5918d8a0bc3203 GIT binary patch literal 767 zcma)4O>fjN5PjaSwAqE0ZD}cA6+)G^J>W|()uKveCAfqSv1mDPa#A;So7gMI>9#+M z6BQEt0De@}akhvB7Kucev1cZ4-m~Y&)z|L;cCi_viM0Uh0q%v^!2JLZ7+TMjR&Jl6 z-rF8AGzR8SGAu<(%Qs~nOZ!2@8AZC0NkldhR{8x+u;GqX!LSu2Cg<@)NuCNPC*p#? zn)-wBI8%vm%IH3U=R#?Qwce-bM4Snp37ztxvr4D^s=2T!!L7_mGc3QB?${i@6ISHX zNlS&{(3CcjFO?^_{&&k~z6-;~`%*iV%aJM+aX--7xQY@%>_^6?ycl~9M;>`%>?x0p zaa@$nBt{>pw6u~BtCAO#nAOxl3jxE^|Ikkg{uCYHVF!=!__x&C_(Ud-VdtO3rc`EV z(B;{Z4mR%1oa-PHMbV#gl-qM9lTs(o9Ut5%_P0FKg2F!C#}m|OjQmprO%DRH3$)|p z8TsbU7qHJ&dXa3a3I+&i-I*4kO)Fp#w{V+4{Lgz87|`z4>fcbmMC0Qxh>()LJgnZI bFl{Vhnc{coYtq1ytD#%j6|9o?o$mtI{H4dS literal 0 HcmV?d00001 diff --git a/bwie-gateway/target/classes/com/bwie/gateway/config/IgnoreWhiteConfig.class b/bwie-gateway/target/classes/com/bwie/gateway/config/IgnoreWhiteConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..a84d0200dec19a49eeccf18abe06212fb4622641 GIT binary patch literal 2590 zcma)7TXR!Y6#jOaG?yMq=nadJT0v+NN>D2bX^T*c7SoF@7Qq`k=}B@*dQLn!u`rHr z`r-^T_~3&+`6MsQh@u5$%IJ&E_&+-EBUJqMIVWjaI^s;b*V^ms_3d@}*3O^*{BjS# zFfK(A#p@AF#&8C2v>}TrWtonl2Qy*J#t>HW%@~byYMEDG&Z_0DFcxBH$4mt0lzdw) z=OehFSSa@)jI;H@KuX*gpn z?tt1xiyN7C3=D2fRp7uQ#%-YqtbbUOWyaF&$Kn=sCby*Loy_0`0b!}?xb12FBoMNk zl5PvMsVeQScT#h$jqQ$kN9He0$%pwqxkk%^}P-?8IrU*m}XZOocN=#%kD& zCj|DcfBwybwYB?eU#x$2>%r~s*6)3K|Esn2YggB=etG=kPr~>>!$rt2avJhj)XjvLrQxIFAMD6pqba?Q#GT!s7TiPNb?3f z#*J#wQBVut95JY26k}nOG#FUoyRrf3QCgr+#VE^0PUd8~Agj(&)iTp(=4YnsCp5=W z+d9n-Y&RH91K~eFM1IVJ$LGf|3mm8V*f;aG39vqVYV2jDqMM5XL(M_>H~M4WgyNTr z9p7}m4%l?ZrtOUAN%B^pT8(Q{2>ZpkK&-K zkyQ|Q($y1)P=5-0(Skl&a+Cqet{)&e0;xM_`5D0$BvU^j^gZn@c$#ZFCFs>ozfSt~ zbJyef;Ti1XjtGjq#NJO`qx38ZYR^&+kzy2H5C>=^%ekr$#t5#C$CJ0wn!Jnf`P+#2 z*9Y9|WBye^UZAe_;N$+)91A3QLSdzeq_9HC9}&7q#RF({jm^#>-`NW&#qXRFALJ%w zh`!^g zJz>1azeuCPhY{yF4!)nrF{Y)O8&VmlP@1dZh2nLwUJV{)0IG<7&yEmLsJDZws_!*I z1S$LCnUUbATYyA7Q)2p&c H;d$T+3?#wcC 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 + + + bwie-modules + com.bwie + 1.0-SNAPSHOT + + 4.0.0 + + bwie-es + + + + com.bwie + bwie-common + + + org.springframework.boot + spring-boot-starter-web + + + org.elasticsearch.client + elasticsearch-rest-high-level-client + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + diff --git a/bwie-modules/bwie-es/src/main/java/com/bwie/es/EsApplication.java b/bwie-modules/bwie-es/src/main/java/com/bwie/es/EsApplication.java new file mode 100644 index 0000000..93df004 --- /dev/null +++ b/bwie-modules/bwie-es/src/main/java/com/bwie/es/EsApplication.java @@ -0,0 +1,24 @@ +package com.bwie.es; + +import com.bwie.es.service.impl.EsServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.annotation.Bean; + +@SpringBootApplication +@EnableFeignClients +public class EsApplication { + @Autowired + private EsServiceImpl esService; + + public static void main(String[] args) { + SpringApplication.run(EsApplication.class); + } + + @Bean + public void data(){ + esService.dataToEs(); + } +} diff --git a/bwie-modules/bwie-es/src/main/java/com/bwie/es/config/InitEsRestHighLevelClient.java b/bwie-modules/bwie-es/src/main/java/com/bwie/es/config/InitEsRestHighLevelClient.java new file mode 100644 index 0000000..0fcc04a --- /dev/null +++ b/bwie-modules/bwie-es/src/main/java/com/bwie/es/config/InitEsRestHighLevelClient.java @@ -0,0 +1,36 @@ +package com.bwie.es.config; + +import lombok.Data; +import lombok.extern.log4j.Log4j2; +import org.apache.http.HttpHost; +import org.elasticsearch.client.RestClient; +import org.elasticsearch.client.RestClientBuilder; +import org.elasticsearch.client.RestHighLevelClient; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @BelongsProject: day20k-6.12 + * @BelongsPackage: com.bwie.es.conifg + * @Author: LiFan + * @CreateTime: 2023-06-12 14:33 + * @Description: //TODO + * @Version: 1.0 + */ +@Configuration +@ConfigurationProperties(prefix = "es") +@Data +@Log4j2 +public class InitEsRestHighLevelClient { + private String host; + private Integer port; + private String scheme; + + @Bean + public RestHighLevelClient RestHighLevelClient() { + return new RestHighLevelClient( + RestClient.builder(new HttpHost(host,port,scheme)) + ); + } +} diff --git a/bwie-modules/bwie-es/src/main/java/com/bwie/es/controller/EsController.java b/bwie-modules/bwie-es/src/main/java/com/bwie/es/controller/EsController.java new file mode 100644 index 0000000..5727c95 --- /dev/null +++ b/bwie-modules/bwie-es/src/main/java/com/bwie/es/controller/EsController.java @@ -0,0 +1,57 @@ +package com.bwie.es.controller; + +import com.bwie.common.domain.response.Loan; +import com.bwie.common.result.Result; +import com.bwie.es.service.impl.EsServiceImpl; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@RestController +@Log4j2 +public class EsController { + @Autowired + private EsServiceImpl esService; + + @Autowired + private HttpServletRequest request; + + /** + * 借款数据同步es + * @return + */ + @GetMapping("dataToEs") + public Result dataToEs(){ + log.info("功能:借款数据同步es,请求路径:{},请求方式:{},请求参数:{}", + request.getRequestURI(),request.getMethod(),""); + + Result result = esService.dataToEs(); + + log.info("功能:借款数据同步es,请求路径:{},请求方式:{},响应结果:{}", + request.getRequestURI(),request.getMethod(),result); + + return result; + } + + /** + * 借款列表 + * @return + */ + @PostMapping("loanDataList") + public Result> loanDataList(){ + log.info("功能:借款列表,请求路径:{},请求方式:{},请求参数:{}", + request.getRequestURI(),request.getMethod(),""); + + Result> result = esService.loanDataList(); + + log.info("功能:借款列表,请求路径:{},请求方式:{},响应结果:{}", + request.getRequestURI(),request.getMethod(),result); + + return result; + } +} diff --git a/bwie-modules/bwie-es/src/main/java/com/bwie/es/feign/LoanFeignService.java b/bwie-modules/bwie-es/src/main/java/com/bwie/es/feign/LoanFeignService.java new file mode 100644 index 0000000..dfd00c1 --- /dev/null +++ b/bwie-modules/bwie-es/src/main/java/com/bwie/es/feign/LoanFeignService.java @@ -0,0 +1,18 @@ +package com.bwie.es.feign; + +import com.bwie.common.domain.response.Loan; +import com.bwie.common.result.Result; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; + +import java.util.List; + +@FeignClient("bwie-loan") +public interface LoanFeignService { + /** + * 借款数据 + * @return + */ + @GetMapping("loanData") + public Result> loanData(); +} diff --git a/bwie-modules/bwie-es/src/main/java/com/bwie/es/service/EsService.java b/bwie-modules/bwie-es/src/main/java/com/bwie/es/service/EsService.java new file mode 100644 index 0000000..cdf5c9d --- /dev/null +++ b/bwie-modules/bwie-es/src/main/java/com/bwie/es/service/EsService.java @@ -0,0 +1,12 @@ +package com.bwie.es.service; + +import com.bwie.common.domain.response.Loan; +import com.bwie.common.result.Result; + +import java.util.List; + +public interface EsService { + Result dataToEs(); + + Result> loanDataList(); +} diff --git a/bwie-modules/bwie-es/src/main/java/com/bwie/es/service/impl/EsServiceImpl.java b/bwie-modules/bwie-es/src/main/java/com/bwie/es/service/impl/EsServiceImpl.java new file mode 100644 index 0000000..1509653 --- /dev/null +++ b/bwie-modules/bwie-es/src/main/java/com/bwie/es/service/impl/EsServiceImpl.java @@ -0,0 +1,90 @@ +package com.bwie.es.service.impl; + +import com.alibaba.fastjson.JSON; +import com.bwie.common.domain.response.Loan; +import com.bwie.common.result.Result; +import com.bwie.es.feign.LoanFeignService; +import com.bwie.es.service.EsService; +import org.elasticsearch.action.bulk.BulkRequest; +import org.elasticsearch.action.index.IndexRequest; +import org.elasticsearch.action.search.SearchRequest; +import org.elasticsearch.action.search.SearchResponse; +import org.elasticsearch.client.RequestOptions; +import org.elasticsearch.client.RestHighLevelClient; +import org.elasticsearch.common.xcontent.XContentType; +import org.elasticsearch.index.query.BoolQueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.search.SearchHit; +import org.elasticsearch.search.builder.SearchSourceBuilder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +@Service +public class EsServiceImpl implements EsService { + @Autowired + private LoanFeignService loanFeignService; + + @Resource + private RestHighLevelClient restHighLevelClient; + + @Autowired + private RedisTemplate redisTemplate; + + + private static final String INDEX_NAME="loan"; + + /** + * 借款数据同步es + * @return + */ + @Override + public Result dataToEs() { + try { + BulkRequest bulkRequest = new BulkRequest(INDEX_NAME); + Result> listResult = loanFeignService.loanData(); + List list = listResult.getData(); + for (Loan loan : list) { + bulkRequest.add(new IndexRequest(). + id(loan.getId().toString()). + source(JSON.toJSONString(loan), XContentType.JSON)); + } + restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT); + } catch (IOException e) { + e.printStackTrace(); + } + return Result.success(); + } + + /** + * 借款列表 + * @return + */ + @Override + public Result> loanDataList() { + ArrayList loans = new ArrayList<>(); + try { + this.dataToEs(); + SearchRequest searchRequest = new SearchRequest(INDEX_NAME); + SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); + BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); + searchSourceBuilder.query(boolQuery); + searchRequest.source(searchSourceBuilder); + SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT); + SearchHit[] hits = search.getHits().getHits(); + for (SearchHit hit : hits) { + String sourceAsString = hit.getSourceAsString(); + Loan loan = JSON.parseObject(sourceAsString, Loan.class); + loans.add(loan); + } + } catch (IOException e) { + e.printStackTrace(); + } + return Result.success(loans); + } +} diff --git a/bwie-modules/bwie-es/src/main/resources/bootstrap.yml b/bwie-modules/bwie-es/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..086f7ad --- /dev/null +++ b/bwie-modules/bwie-es/src/main/resources/bootstrap.yml @@ -0,0 +1,22 @@ +server: + port: 9006 +spring: + main: + allow-circular-references: true + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + application: + name: bwie-es + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + serverAddr: 192.168.111.133:8848 + config: + serverAddr: 192.168.111.133:8848 + fileExtension: yml + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} diff --git a/bwie-modules/bwie-es/target/bwie-es-1.0-SNAPSHOT.jar b/bwie-modules/bwie-es/target/bwie-es-1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..2776488022ff94819f14312b3daaf19c97b00338 GIT binary patch literal 9631 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 literal 0 HcmV?d00001 diff --git a/bwie-modules/bwie-es/target/classes/bootstrap.yml b/bwie-modules/bwie-es/target/classes/bootstrap.yml new file mode 100644 index 0000000..086f7ad --- /dev/null +++ b/bwie-modules/bwie-es/target/classes/bootstrap.yml @@ -0,0 +1,22 @@ +server: + port: 9006 +spring: + main: + allow-circular-references: true + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + application: + name: bwie-es + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + serverAddr: 192.168.111.133:8848 + config: + serverAddr: 192.168.111.133:8848 + fileExtension: yml + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} diff --git a/bwie-modules/bwie-es/target/classes/com/bwie/es/EsApplication.class b/bwie-modules/bwie-es/target/classes/com/bwie/es/EsApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..cdb9f54781b2ab81d6ff33245dfe2edbda58d979 GIT binary patch literal 1186 zcmZ`&+invv5Is)Prbz=WEwq$!E0>Z4ieHcb1yyRJR6+_DHC1`w$=Num%f^np-WEO! z2?0Wa58$H^<84Yeusp11$DTPpXJ-8K*S8-49$}-5BCZ#4qllYjtl?G(IovMe4(=AQ z&QOw3N7^G5NQP=VFhkxwR+7tzMJ{9_gNe9T-9s5T zhI;03cv&YxQX*&!Y)sASR#Uxdh9Zg@8SSZM7VNYI&2hcF+SC=a?K?yrSx?LT|Lil& z_>S+H7BzpZT00vy${!ldt&HN(@!iBU=*8ve0RoIHm43{H+NYQc%uQaB0s&IvpbGVYMtBG#U J<0|>rfZs$KGw1*S literal 0 HcmV?d00001 diff --git a/bwie-modules/bwie-es/target/classes/com/bwie/es/config/InitEsRestHighLevelClient.class b/bwie-modules/bwie-es/target/classes/com/bwie/es/config/InitEsRestHighLevelClient.class new file mode 100644 index 0000000000000000000000000000000000000000..1262bf3664a154a2fbe7828f9991e337724b8ac1 GIT binary patch literal 3505 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 G9DM=ydXWnN literal 0 HcmV?d00001 diff --git a/bwie-modules/bwie-es/target/classes/com/bwie/es/service/EsService.class b/bwie-modules/bwie-es/target/classes/com/bwie/es/service/EsService.class new file mode 100644 index 0000000000000000000000000000000000000000..a43292052e49e4a8e45dc35c2a91c40b2d45b4c8 GIT binary patch literal 311 zcmaiwzfJ-{5XQd&h3w!V;HMJ1l|BJ8lqd6IFl6Bn1*MDgHP#N1nKZ1|Kxx!XYT7*dvn!1#& zb&9&(#6s$mE#;wINw~lMTO!Bb7GH-5cOBUof8dwhQOYzV5PEtFpf@1&F#uF=R0+fO K6`8tG=f)QZv{(E9 literal 0 HcmV?d00001 diff --git a/bwie-modules/bwie-es/target/classes/com/bwie/es/service/impl/EsServiceImpl.class b/bwie-modules/bwie-es/target/classes/com/bwie/es/service/impl/EsServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..76ae789db38745eecec0c171d23f08a4f2945ec5 GIT binary patch literal 5577 zcmbtY`Ck<09exHDUKoaG@MzZ~iANMfoK}t6#n_-?#IDe|L`2i1!!p9ivV$|Tg1wuh zhp9=M9%<7fZPUZvNo=}es5ZUR^gh!2KL3aQQ2V?yv&$|!uJqH-2WDs9_j|q1_ndkD zKhInSuoeGOp<_~DO5k(@_N%DDYZ_6D*EZpGc)f}@;Ee)rYC&6>rBG`S^f}ci?Oz9>hcP@tsoKyQH{>8}V+uN5y;bK7mJ6EW`Vy><Z0OO$BR{X?t8BnzT&aboJwMPfyOF>QoRvl*@Y7 zxOv!et)YzBmCf3o;aPUpRj?yzJ0rR~;aJ&`F^4I3kz=~versejX`V7Odoq@p^%QLK1)3Sd^{ljO8cuptPy2iNp-Os+S)M#$ zoHC|LwUE%xIcbx-&D3SN{pR>Y#_)LLEs^#P8=j&2lzQ5BOlm4&qLjuIp)tIiLkWZb zyM&#-iF(G!j_4^*Le*KhvWt4up5DFPNABtEI@qnCrILo{*+bYpBkLVDGC5jPzthTE z-Yx~Tt!;-D#P-<3TwRc~vSx2?e8_bA4Z2JUv(rZAu;EzpIb4i+qZWPGS{4Rw5FNTj z$n0Fxtg9d#w#N<2r=Q?? zOh4*K-!zoVj2$vh=ICh!?LN}wp}>%0;OUZ1-#tq#vCCMl7id;+V}-^_(@4&&2tdwx zRz^>9g@P2qwIo=!Y`v$idn#>CNUhvkS`Opsi2{^^)fI*jP*k(Cf;eTRZ+@_%IsRDLH9Uv!X?Pyr*YE@UP{S?QCh#K-KgLf4 zeyZVT_&HO^H@v)bY4`}zl zR7qEXUuhV|uQmJzzm=!_ordH1J;PPQAMi(kKgr)e3;adHUnMwy!`~$i|B&bUCrkOP zF?~ZP%rwi^%A$if-xR{27>lL*p##gh1iR*J4D>KA4URLMP$~~st&Bu6RI44V0j)u@ zmjK%-yZh?W<3x{ZY|({+u0V{Ko-FMO7Bko9!owQXU=>fbv_RnpM&Y!i5u=9NYfceO zju=N-*RuXY9cA|nOIu4N_hdbD#B|7Z{j9ohk?K6V&{oO~3Wp*EH5Ns7MIAq)iiRLo zCK1)gB~(Vn8Zw3q4x+Ai!sXa-Al28)mgm{>reMmtQguP(be5i}Xk3Kj!?2l3+dO#I z(~odGlQ;dWUxX^q7u9&GG1C0{pbaZHS!!HpNdy#C#kEB+RKu>;7^WAF2K70zc}GBA zMakUq%=4|U%%S3t?@xby{=~(8DE4;m>$)@9&-x#6j7TQR-&jR{#7jp^nyBF3Do3t3 z#JsJEvO9#oL}+ntSRmh}Jb!NMcMSQOCfr;)ZMpd9Enmh56&os(bd+EGirJuN>eqK zh$BVE;rwkWdS8}o4uo{l`ba00^|;LD7yOE@>t(#XfWc;Wen(y|g(ly%^_V5+oEi1HP?VZ#A3Kf~HXG^KX!g|Gv+ukyBL3+ID|!2VTaVgn!>zM!yU@aVzO}`Fk-+SLA%kYZq6fCWXIs z8!kY3$|u>)t5gPllG($n77$=By7{EY$%|JqD@SQ!J=Z2@P&3#PyMVgnhNn?~5kkSi zjd?UYi^krLi%=CLV)58TG%0u#TjiamaA0gs)V0sxy1@%r5UEULw|q?Kr~wyRZZI5UnxdlI5K#lQi)f?5`107)Dq z!Ye4Jm;bfoi{X{H!?$5F1m_TCEG1PypDNP#lm1TbwIOx|Yf&d~SYSZlh`^x0QQ+T5 zT%qj>H{|75jAHL1&NV*HmuOZq*&ms~N`iGmazh?B4$R=D!Pq6N8mw)Jr7mFg!5OUK z?%LjI+?96s@&dge9lX4K8k?jW8gK?@i*7i8 z7FxTHtNUqp4{jig>j-2!LEKCjcM!sEg4jm@EkZbfL;P5o!hL)`L#WRZtOtq2!*rN* z%LJPEzX-3Qo8)Ir;X6np?=sv?XR6dNhF8;FHPn;F5dUkb?QV|eCf(Fc_Z-IvUD`+Y zj*_pQ@&otPNL)krHQ*tfpd^L%1aTj%WVj;TcZ+o2F{r-##s#thw!nnINdbp{3X|pv aI#3f30K0ux23hISIFCYVkSpfrDd4}9LX(RC literal 0 HcmV?d00001 diff --git a/bwie-modules/bwie-es/target/maven-archiver/pom.properties b/bwie-modules/bwie-es/target/maven-archiver/pom.properties new file mode 100644 index 0000000..d75f30b --- /dev/null +++ b/bwie-modules/bwie-es/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=bwie-es +groupId=com.bwie +version=1.0-SNAPSHOT diff --git a/bwie-modules/bwie-es/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/bwie-modules/bwie-es/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..f49d116 --- /dev/null +++ b/bwie-modules/bwie-es/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,6 @@ +com\bwie\es\config\InitEsRestHighLevelClient.class +com\bwie\es\controller\EsController.class +com\bwie\es\service\EsService.class +com\bwie\es\service\impl\EsServiceImpl.class +com\bwie\es\feign\LoanFeignService.class +com\bwie\es\EsApplication.class diff --git a/bwie-modules/bwie-es/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/bwie-modules/bwie-es/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..98280a1 --- /dev/null +++ b/bwie-modules/bwie-es/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,6 @@ +D:\lv6\month1010-fst\bwie-modules\bwie-es\src\main\java\com\bwie\es\EsApplication.java +D:\lv6\month1010-fst\bwie-modules\bwie-es\src\main\java\com\bwie\es\service\EsService.java +D:\lv6\month1010-fst\bwie-modules\bwie-es\src\main\java\com\bwie\es\feign\LoanFeignService.java +D:\lv6\month1010-fst\bwie-modules\bwie-es\src\main\java\com\bwie\es\config\InitEsRestHighLevelClient.java +D:\lv6\month1010-fst\bwie-modules\bwie-es\src\main\java\com\bwie\es\controller\EsController.java +D:\lv6\month1010-fst\bwie-modules\bwie-es\src\main\java\com\bwie\es\service\impl\EsServiceImpl.java diff --git a/bwie-modules/bwie-es/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/bwie-modules/bwie-es/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/bwie-modules/bwie-es/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/bwie-modules/bwie-es/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/bwie-modules/bwie-loan/pom.xml b/bwie-modules/bwie-loan/pom.xml new file mode 100644 index 0000000..81862be --- /dev/null +++ b/bwie-modules/bwie-loan/pom.xml @@ -0,0 +1,54 @@ + + + + bwie-modules + com.bwie + 1.0-SNAPSHOT + + 4.0.0 + + bwie-loan + + + + + com.bwie + bwie-common + + + + org.springframework.boot + spring-boot-starter-web + + + + com.alibaba + druid-spring-boot-starter + 1.2.8 + + + + mysql + mysql-connector-java + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 2.2.2 + + + + com.github.pagehelper + pagehelper-spring-boot-starter + 1.4.1 + + + org.springframework.boot + spring-boot-starter-test + + + + diff --git a/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/LoanApplication.java b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/LoanApplication.java new file mode 100644 index 0000000..1c2340b --- /dev/null +++ b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/LoanApplication.java @@ -0,0 +1,29 @@ +package com.bwie.loan; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.annotation.Bean; +import org.springframework.data.redis.core.RedisTemplate; + +@SpringBootApplication +@EnableFeignClients +public class LoanApplication { + @Autowired + private RedisTemplate redisTemplate; + + public static void main(String[] args) { + SpringApplication.run(LoanApplication.class); + } + + //利率存入redis + @Bean + public void addInterest(){ + redisTemplate.opsForValue().set("ONE","0.002"); + redisTemplate.opsForValue().set("TWO","0.003"); + redisTemplate.opsForValue().set("THREE","0.004"); + redisTemplate.opsForValue().set("FOUR","0.005"); + redisTemplate.opsForValue().set("FIVE","0.01"); + } +} diff --git a/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/config/ConfirmCallbackConfig.java b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/config/ConfirmCallbackConfig.java new file mode 100644 index 0000000..275f526 --- /dev/null +++ b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/config/ConfirmCallbackConfig.java @@ -0,0 +1,48 @@ +package com.bwie.loan.config; + +import lombok.extern.log4j.Log4j2; +import org.springframework.amqp.rabbit.connection.CorrelationData; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; + +/** + * 消息发送确认配置 + * 消息发送到交换机的回调 + */ +@Component +@Log4j2 +public class ConfirmCallbackConfig implements RabbitTemplate.ConfirmCallback { + + @Autowired + private RabbitTemplate rabbitTemplate; + + /** + * @PostContruct是spring框架的注解,在⽅法上加该注解会在项⽬启动的时候执⾏该⽅法,也可以理解为在spring容器初始化的时候执 + */ + @PostConstruct + public void init() { + rabbitTemplate.setConfirmCallback(this); + } + + /** + * 交换机不管是否收到消息的一个回调方法 + * + * @param correlationData 消息相关数据 + * @param ack 交换机是否收到消息 + * @param cause 失败原因 + */ + @Override + public void confirm(CorrelationData correlationData, boolean ack, String cause) { + if (!ack) { + String exchange = correlationData.getReturned().getExchange(); + String message = correlationData.getReturned().getMessage().getBody().toString(); + // 发送异常 + log.error("消息:{},发送到交换机:{}失败,原因是:{}", message, exchange, cause); + // TODO 可以把异常信息 以及 消息的内容直接添加到 MYSQL + } + } + +} diff --git a/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/config/ProductConfig.java b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/config/ProductConfig.java new file mode 100644 index 0000000..eac2feb --- /dev/null +++ b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/config/ProductConfig.java @@ -0,0 +1,45 @@ +package com.bwie.loan.config; + +import com.bwie.common.domain.response.Loan; +import com.bwie.common.domain.response.UserResponse; +import com.bwie.common.result.Result; +import com.bwie.loan.feign.UserFeignService; +import com.bwie.loan.service.impl.LoanServiceImpl; +import com.rabbitmq.client.Channel; +import org.springframework.amqp.core.Message; +import org.springframework.amqp.rabbit.annotation.Queue; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; + +import java.util.Date; +import java.util.HashMap; + +@Configuration +public class ProductConfig { + @Autowired + private LoanServiceImpl loanService; + + @Autowired + private UserFeignService userFeignService; + + + @RabbitListener(queuesToDeclare = @Queue("ONE_QUEUE")) + public void productMsg(String msg, Message message, Channel channel){ + //异步发送短信确保数据不会因发送过程而丢失 根据id获取借款申请人 + Loan loan = loanService.findLoanById(Integer.valueOf(msg)); + //如果20分钟内没有抢单操作,系统应发送短信通知借款人,并将借款状态改为未放款(3分) + if (new Date().getTime()-loan.getCreateTime().getTime()>20*60*10000 && loan.getStatus()==0){ + //根据用户id获取用户手机号 发送短信 + Result byUserId = userFeignService.findByUserId(msg); + String phone = byUserId.getData().getPhone(); + com.bawei.common.utils.TelSmsUtils.sendSms(phone,"SMS100001" + ,new HashMap(){{ + put("msg","未放款"); + }}); + //修改状态 + loanService.updateStatus(msg,3); + } + + } +} diff --git a/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/config/ReturnCallbackConfig.java b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/config/ReturnCallbackConfig.java new file mode 100644 index 0000000..da6f6fa --- /dev/null +++ b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/config/ReturnCallbackConfig.java @@ -0,0 +1,41 @@ +package com.bwie.loan.config; + +import lombok.extern.log4j.Log4j2; +import org.springframework.amqp.core.ReturnedMessage; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; + +/** + * 消息发送到队列的确认 + */ +@Component +@Log4j2 +public class ReturnCallbackConfig implements RabbitTemplate.ReturnsCallback { + + @Autowired + private RabbitTemplate rabbitTemplate; + + /** + * @PostContruct是spring框架的注解,在⽅法上加该注解会在项⽬启动的时候执⾏该⽅法,也可以理解为在spring容器初始化的时候执 + */ + @PostConstruct + public void init() { + rabbitTemplate.setReturnsCallback(this); + } + + /** + * 消息发送失败 则会执行这个方法 + * + * @param returnedMessage the returned message and metadata. + */ + @Override + public void returnedMessage(ReturnedMessage returnedMessage) { + log.error("消息:{},被交换机:{} 回退!退回原因为:{}", + returnedMessage.getMessage().toString(), returnedMessage.getExchange(), returnedMessage.getReplyText()); + // TODO 回退了所有的信息,可做补偿机制 + } + +} diff --git a/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/controller/LoanController.java b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/controller/LoanController.java new file mode 100644 index 0000000..ca11095 --- /dev/null +++ b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/controller/LoanController.java @@ -0,0 +1,62 @@ +package com.bwie.loan.controller; + +import com.bwie.common.domain.request.LoanRequest; +import com.bwie.common.domain.response.Loan; +import com.bwie.common.domain.response.UserResponse; +import com.bwie.common.result.Result; +import com.bwie.loan.service.impl.LoanServiceImpl; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@RestController +@Log4j2 +public class LoanController { + + @Autowired + private LoanServiceImpl loanService; + + @Autowired + private HttpServletRequest request; + + /** + * 借款数据 + * @return + */ + @GetMapping("loanData") + public Result> loanData(){ + log.info("功能:借款数据,请求路径:{},请求方式:{},请求参数:{}", + request.getRequestURI(),request.getMethod(),""); + + Result> result = loanService.loanData(); + + log.info("功能:借款数据,请求路径:{},请求方式:{},响应结果:{}", + request.getRequestURI(),request.getMethod(),result); + + return result; + } + + /** + * 借款 + * @param loanRequest + * @return + */ + @PostMapping("insertLoan") + public Result insertLoan(@RequestBody LoanRequest loanRequest){ + log.info("功能:借款,请求路径:{},请求方式:{},请求参数:{}", + request.getRequestURI(),request.getMethod(),loanRequest); + + Result result = loanService.insertLoan(loanRequest); + + log.info("功能:借款,请求路径:{},请求方式:{},响应结果:{}", + request.getRequestURI(),request.getMethod(),result); + + return result; + } +} diff --git a/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/controller/RepaymentController.java b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/controller/RepaymentController.java new file mode 100644 index 0000000..9b724ac --- /dev/null +++ b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/controller/RepaymentController.java @@ -0,0 +1,77 @@ +package com.bwie.loan.controller; + +import com.bwie.common.domain.Repayment; +import com.bwie.common.domain.response.Loan; +import com.bwie.common.result.Result; +import com.bwie.loan.service.impl.LoanServiceImpl; +import com.bwie.loan.service.impl.RepaymentServiceImpl; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@RestController +@Log4j2 +public class RepaymentController { + + @Autowired + private RepaymentServiceImpl repaymentService; + + @Autowired + private HttpServletRequest request; + + /** + * 根据借款id查询借款计划 + * @return + */ + @GetMapping("/repaymentListByLoanId/{loanId}") + public Result> repaymentListByLoanId(@PathVariable Integer loanId){ + log.info("功能:根据借款id查询借款计划,请求路径:{},请求方式:{},请求参数:{}", + request.getRequestURI(),request.getMethod(),loanId); + + Result> result = repaymentService.repaymentListByLoanId(loanId); + + log.info("功能:根据借款id查询借款计划,请求路径:{},请求方式:{},响应结果:{}", + request.getRequestURI(),request.getMethod(),result); + + return result; + } + + /** + * 提前还款 + * @param repayment + * @return + */ + @PostMapping("prepayment") + public Result prepayment(@RequestBody Repayment repayment){ + log.info("功能:提前还款,请求路径:{},请求方式:{},请求参数:{}", + request.getRequestURI(),request.getMethod(),repayment); + + Result result = repaymentService.prepayment(repayment); + + log.info("功能:提前还款,请求路径:{},请求方式:{},响应结果:{}", + request.getRequestURI(),request.getMethod(),result); + + return result; + } + + /** + * 添加还款计划/抢单 + * @param loan + * @return + */ + @PostMapping("insertRepayment") + public Result insertRepayment(@RequestBody Loan loan){ + log.info("功能:添加还款计划,请求路径:{},请求方式:{},请求参数:{}", + request.getRequestURI(),request.getMethod(),loan); + + Result result = repaymentService.insertRepayment(loan); + + log.info("功能:添加还款计划,请求路径:{},请求方式:{},响应结果:{}", + request.getRequestURI(),request.getMethod(),result); + + return result; + } +} diff --git a/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/feign/UserFeignService.java b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/feign/UserFeignService.java new file mode 100644 index 0000000..adec00d --- /dev/null +++ b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/feign/UserFeignService.java @@ -0,0 +1,18 @@ +package com.bwie.loan.feign; + +import com.bwie.common.domain.response.UserResponse; +import com.bwie.common.result.Result; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +@FeignClient("bwie-system") +public interface UserFeignService { + /** + * 根据用户id查找用户 + * @param id + * @return + */ + @GetMapping("/findByUserId/{id}") + public Result findByUserId(@PathVariable String id); +} diff --git a/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/mapper/LoanMapper.java b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/mapper/LoanMapper.java new file mode 100644 index 0000000..85f3b7f --- /dev/null +++ b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/mapper/LoanMapper.java @@ -0,0 +1,20 @@ +package com.bwie.loan.mapper; + +import com.bwie.common.domain.request.LoanRequest; +import com.bwie.common.domain.response.Loan; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Component; + +import java.util.List; +@Mapper +@Component +public interface LoanMapper { + List loanData(); + + void insertLoan(LoanRequest loanRequest); + + Loan findLoanById(@Param("loanId") Integer loanId); + + void updateStatus(@Param("id") String id, @Param("status") Integer status); +} diff --git a/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/mapper/RepaymentMapper.java b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/mapper/RepaymentMapper.java new file mode 100644 index 0000000..3a5380d --- /dev/null +++ b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/mapper/RepaymentMapper.java @@ -0,0 +1,18 @@ +package com.bwie.loan.mapper; + +import com.bwie.common.domain.Repayment; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Mapper +@Component +public interface RepaymentMapper { + List repaymentListByLoanId(@Param("loanId") Integer loanId); + + void updateRepay(Repayment repayment); + + void insertRepayment(Repayment repayment); +} diff --git a/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/service/LoanService.java b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/service/LoanService.java new file mode 100644 index 0000000..2dad32a --- /dev/null +++ b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/service/LoanService.java @@ -0,0 +1,17 @@ +package com.bwie.loan.service; + +import com.bwie.common.domain.request.LoanRequest; +import com.bwie.common.domain.response.Loan; +import com.bwie.common.result.Result; + +import java.util.List; + +public interface LoanService { + Result> loanData(); + + Result insertLoan(LoanRequest loanRequest); + + Loan findLoanById(Integer loanId); + + void updateStatus(String id,Integer status); +} diff --git a/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/service/RepaymentService.java b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/service/RepaymentService.java new file mode 100644 index 0000000..f4d32df --- /dev/null +++ b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/service/RepaymentService.java @@ -0,0 +1,15 @@ +package com.bwie.loan.service; + +import com.bwie.common.domain.Repayment; +import com.bwie.common.domain.response.Loan; +import com.bwie.common.result.Result; + +import java.util.List; + +public interface RepaymentService { + Result> repaymentListByLoanId(Integer loanId); + + Result prepayment(Repayment repayment); + + Result insertRepayment(Loan loan); +} diff --git a/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/service/impl/LoanServiceImpl.java b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/service/impl/LoanServiceImpl.java new file mode 100644 index 0000000..a2824c5 --- /dev/null +++ b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/service/impl/LoanServiceImpl.java @@ -0,0 +1,136 @@ +package com.bwie.loan.service.impl; + +import com.alibaba.fastjson.JSON; +import com.bwie.common.constants.TokenConstants; +import com.bwie.common.domain.Repayment; +import com.bwie.common.domain.request.LoanRequest; +import com.bwie.common.domain.response.Loan; +import com.bwie.common.domain.response.UserResponse; +import com.bwie.common.result.Result; +import com.bwie.common.utils.JwtUtils; +import com.bwie.loan.mapper.LoanMapper; +import com.bwie.loan.service.LoanService; +import org.springframework.amqp.rabbit.connection.CorrelationData; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.UUID; + +@Service +public class LoanServiceImpl implements LoanService { + + @Autowired + private LoanMapper loanMapper; + + @Autowired + private RepaymentServiceImpl repaymentService; + + @Autowired + private RedisTemplate redisTemplate; + + @Autowired + private HttpServletRequest request; + + @Autowired + private RabbitTemplate rabbitTemplate; + + + + /** + * 借款数据 + * @return + */ + @Override + public Result> loanData() { + List loanList = loanMapper.loanData(); + //计算已还本金和未还本金 + if (loanList.size()>0){ + for (Loan loan : loanList) { + //获取当前借款还款计划 + Result> listResult = repaymentService.repaymentListByLoanId(loan.getId()); + List repaymentList = listResult.getData(); + //已还本金 + double repaidPrincipal=0.0; + //未还本金 + double outstandingPrincipal=loan.getLoanAmount(); + //每期还款本金 + double avgMoney = loan.getLoanAmount()/loan.getPeriods(); + //对还款计划集合进行处理 + if (repaymentList.size()>0){ + for (Repayment repayment : repaymentList) { + if (repayment.getStatus()==1) { + repaidPrincipal += avgMoney; + } + } + } + //把未还本金和已还本金添加到借款对象中 + loan.setOutstandingPrincipal(outstandingPrincipal-repaidPrincipal); + loan.setRepaidPrincipal(repaidPrincipal); + } + } + return Result.success(loanList); + } + + /** + * 借款 + * @param loanRequest + * @return + */ + @Override + @Transactional + public Result insertLoan(LoanRequest loanRequest) { + //获取当前登录人 + String token = request.getHeader("token"); + String userKey = JwtUtils.getUserKey(token); + String s = redisTemplate.opsForValue().get(TokenConstants.LOGIN_TOKEN_KEY + userKey); + UserResponse userResponse = JSON.parseObject(s, UserResponse.class); + loanRequest.setCreateBy(userResponse.getId()); + //判断利率 + if (loanRequest.getLoanAmount()<=2000){ + loanRequest.setLoanInterest(Double.valueOf(redisTemplate.opsForValue().get("ONE"))); + }else if (loanRequest.getLoanAmount()<=20000){ + loanRequest.setLoanInterest(Double.valueOf(redisTemplate.opsForValue().get("TWO"))); + }else if (loanRequest.getLoanAmount()<=50000){ + loanRequest.setLoanInterest(Double.valueOf(redisTemplate.opsForValue().get("THREE"))); + }else if (loanRequest.getLoanAmount()<=100000){ + loanRequest.setLoanInterest(Double.valueOf(redisTemplate.opsForValue().get("FOUR"))); + }else { + loanRequest.setLoanInterest(Double.valueOf(redisTemplate.opsForValue().get("FIVE"))); + } + //添加数据到数据库 + loanMapper.insertLoan(loanRequest); + //新增加借款主键id + Integer id = loanRequest.getId(); + //异步发送消息 + rabbitTemplate.convertAndSend("ONE_QUEUE",id.toString(),message -> { + message.getMessageProperties().setMessageId(UUID.randomUUID().toString()); + return message; + }); + return Result.success(); + } + + /** + * 根据借款id查询接口 + * @param loanId + * @return + */ + @Override + public Loan findLoanById(Integer loanId) { + Loan loan = loanMapper.findLoanById(loanId); + return loan; + } + + /** + * 修改为未放款状态 + * @param id + */ + @Override + public void updateStatus(String id,Integer status) { + loanMapper.updateStatus(id,status); + } +} diff --git a/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/service/impl/RepaymentServiceImpl.java b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/service/impl/RepaymentServiceImpl.java new file mode 100644 index 0000000..ce8a2ef --- /dev/null +++ b/bwie-modules/bwie-loan/src/main/java/com/bwie/loan/service/impl/RepaymentServiceImpl.java @@ -0,0 +1,97 @@ +package com.bwie.loan.service.impl; + +import cn.hutool.core.io.unit.DataUnit; +import com.bwie.common.domain.Repayment; +import com.bwie.common.domain.response.Loan; +import com.bwie.common.result.Result; +import com.bwie.loan.mapper.RepaymentMapper; +import com.bwie.loan.service.RepaymentService; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.apache.commons.lang3.time.DateUtils; +import org.assertj.core.util.DateUtil; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +@Service +public class RepaymentServiceImpl implements RepaymentService { + @Autowired + private RepaymentMapper repaymentMapper; + + @Autowired + private LoanServiceImpl loanService; + + /** + * 根据借款id查询借款计划 + * @return + */ + @Override + public Result> repaymentListByLoanId(Integer loanId) { + List list = repaymentMapper.repaymentListByLoanId(loanId); + return Result.success(list); + } + + /** + * 提前还款 + * @param repayment + * @return + */ + @Override + public Result prepayment(Repayment repayment) { + //提前还款不需要支付手续费 + //获取正常还款时间 + long time = repayment.getRepaymentDate().getTime(); + //获取现在时间 + long nowTime = new Date().getTime(); + //相差天数 + int day = (int) ((time-nowTime)/(60*1000*60*24)); + //获取当前借款 + Loan loan = loanService.findLoanById(repayment.getLoanId()); + //减去的手续费 + double money = loan.getLoanAmount()*loan.getLoanInterest()*day*0.01; + //最终本期支付的金额 + repayment.setRepaymentAmount(repayment.getRepaymentAmount()-money); + //修改本条还款计划金额及状态 + repaymentMapper.updateRepay(repayment); + return Result.success(); + } + + /** + * 添加还款计划/抢单 + * @param loan + * @return + */ + @Override + @Transactional + public Result insertRepayment(Loan loan) { + //修改借款状态 + loanService.updateStatus(loan.getId().toString(),1); + //添加还款计划 + Integer periods = loan.getPeriods(); + Repayment repayment = new Repayment(); + //还款金额 每月还本付息金额=(本金/还款月数)+(本金-累计已还本金)×月利率 + double avgMoney = loan.getLoanAmount()/periods; + double avgInterest = loan.getLoanAmount()*loan.getLoanInterest()*30*0.01; + repayment.setRepaymentAmount(avgMoney); + //本期利息 + repayment.setCurrentProfit(avgInterest); + //有几期添加几期 + for (int i = 1; i <= periods; i++) { + repayment.setLoanId(loan.getId()); + repayment.setPeriod(i); + //每期还款时间 + Date createTime = loan.getCreateTime(); + Date date = DateUtils.addMonths(createTime, 1); + repayment.setRepaymentDate(date); + repaymentMapper.insertRepayment(repayment); + } + + return Result.success(); + } + + +} diff --git a/bwie-modules/bwie-loan/src/main/resources/bootstrap.yml b/bwie-modules/bwie-loan/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..36b3c2b --- /dev/null +++ b/bwie-modules/bwie-loan/src/main/resources/bootstrap.yml @@ -0,0 +1,29 @@ +# Tomcat +server: + port: 9003 +# Spring +spring: + main: + allow-circular-references: true + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + application: + # 应用名称 + name: bwie-loan + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 192.168.111.133:8848 + config: + # 配置中心地址 + server-addr: 192.168.111.133:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} diff --git a/bwie-modules/bwie-loan/src/main/resources/mapper/LoanMapper.xml b/bwie-modules/bwie-loan/src/main/resources/mapper/LoanMapper.xml new file mode 100644 index 0000000..5b4123f --- /dev/null +++ b/bwie-modules/bwie-loan/src/main/resources/mapper/LoanMapper.xml @@ -0,0 +1,26 @@ + + + + + + INSERT INTO t_loan + (loan_amount,periods,handling_charge,create_by,create_time,status,loan_interest) + VALUES + (#{loanAmount}, #{periods}, #{handlingCharge}, #{createBy}, now(), 0, #{loanInterest}) + + + + update t_loan set status=#{status} where id=#{id} + + + + + + diff --git a/bwie-modules/bwie-loan/src/main/resources/mapper/RepaymentMapper.xml b/bwie-modules/bwie-loan/src/main/resources/mapper/RepaymentMapper.xml new file mode 100644 index 0000000..9baa837 --- /dev/null +++ b/bwie-modules/bwie-loan/src/main/resources/mapper/RepaymentMapper.xml @@ -0,0 +1,22 @@ + + + + + INSERT INTO t_repayment_schedule + (loan_id, repayment_amount, current_profit, status, period, repayment_date) + VALUES + (#{loanId},#{repaymentAmount},#{currentProfit},0,#{period},#{repaymentDate}); + + + + update t_repayment_schedule set repayment_amount=#{repaymentAmount},status=1 + where id=#{id} + + + + + diff --git a/bwie-modules/bwie-loan/target/bwie-loan-1.0-SNAPSHOT.jar b/bwie-modules/bwie-loan/target/bwie-loan-1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..cc29d1cf9cadb72a24f2182d93787d8f8da5d03b GIT binary patch literal 20144 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 literal 0 HcmV?d00001 diff --git a/bwie-modules/bwie-loan/target/classes/bootstrap.yml b/bwie-modules/bwie-loan/target/classes/bootstrap.yml new file mode 100644 index 0000000..36b3c2b --- /dev/null +++ b/bwie-modules/bwie-loan/target/classes/bootstrap.yml @@ -0,0 +1,29 @@ +# Tomcat +server: + port: 9003 +# Spring +spring: + main: + allow-circular-references: true + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + application: + # 应用名称 + name: bwie-loan + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 192.168.111.133:8848 + config: + # 配置中心地址 + server-addr: 192.168.111.133:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} diff --git a/bwie-modules/bwie-loan/target/classes/com/bwie/loan/LoanApplication.class b/bwie-modules/bwie-loan/target/classes/com/bwie/loan/LoanApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..8f70875c285f19bc1883845ca3f8a63c502fbabb GIT binary patch literal 1672 zcmb7E+j0{}5IrNw)>;z5EQACS!X+1ECwOFR0z{6%R;=JE1%YiuQF$7z#$w27N42|( zlds6Pq$-tLRq_G(s8r6bQ>qXoXI2G!iiT3nh=&M)@th8*{ zm(egZL4Q9~1ASn_?_^KKN~WIDv!RwdlZWa8bGxP=sCX1I!m~Gzu-1B^zE{#$L0|61 z33UBs%Q|r`?2Llg40Ojtrt9mCAh5BDjSV7!JDIp$t%6AID=)U;k5c`AKyHj;dtg`- z!_Kamz{KkU`RYPPpwO^A7IL~}0{w6_=<0A!5lz5tSx@;L6`DjJ8w>GsL-@-r&kkhw zz-Z}P704FF#&GBxFHMjrg@H1G!1?O8FBg}>s<6*MXEU}1=D*SLbK85QlAgpmq+?n2 zdfNg2brcKS$SmKpboe2jEPRuUFq_h@9fh85nxwFEC$e2i`XR8M8MA9G1Cl-l-#2|W zUGApyvdN9?XM!0*ha-+cw>mKi4PQl3J)`*xnO!*QY-8Mn zgu)33nv=$}(aTwRz4AhHwCpfy+OVVikrudJ%}(KDkkq|B)ZyWkB=*YdV4pZfaw1JW zuTPS5Nb=;XFt#joaFvgq%lA-lW!EX+rk2Bbyu)>t_IJ7FxpJl`-=ikE3a&GYzd`)W zpB&z&Oq_uVE~PSczz4WYZ4OsbpycpfdMA5jH<$kl`QK4^dK{v}P2dcYr};Qc8Q1V3 z?H}=*5mb_NKV~|)G@YN)^nk~UzhLH9%(_L_`2%x#9O)&uJf&CMQ&aj|?&&Fg-aV7* w$9Y|3aUdh}WaA2%s1f`=!5^{k<2)aa%ROT56Q0T8dMc|apGkcS)E9yO04>G1djJ3c literal 0 HcmV?d00001 diff --git a/bwie-modules/bwie-loan/target/classes/com/bwie/loan/config/ConfirmCallbackConfig.class b/bwie-modules/bwie-loan/target/classes/com/bwie/loan/config/ConfirmCallbackConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..05f7ea723348dda012527212f822b32ec52118cb GIT binary patch literal 2283 zcmbtWTT@$A6#jNd2nmOaSgRnmr58;?;8;s-C5QrTZEa`~5Vd{U37c?ea!x$wM9MhM z*tb4-8Q(h9881_xwc3f=>G%Wu9m42S|AFJTPa>C+Qq*DC*R|HS*0=j>fuBjC-IUN8P+117L2swWsFAgN*u3ZEQ;|cCIp&_ zPC=kA>$n9|mSuiXnLH_2c0tcWOJS{;VpMi_%vD#{(s=>{58al_j<8 zxK~VBdbe!WM9sY8Dsy^^8Vz+%S8U%ZsX5EDaz!;}+m0`N%dtIylMQX=l(ao_LFRqO zT`}dlf;m?4on^~a^EBH$V%e5I%8(MtIf3wmGfyWwvX-qbR7yGJ&Pt*QbY-2qEY3;S z();>h*k7~=pU&o;l9^k!Gz-#Z0QQ1aFeminmL_Den3MS{!L~riutpR(kX@4R$*Y?k zn{qs#VxI3-@;)V_fhD&jFr8=^;#S&hTjez)M0Q<8y170jeVMrwK$%6!{LJ{8`HT*> zMP1D=@+=5XJF`WC@FnGWQeSs4Cz~w_jQk&e$TkTP5SIiZd0FuY(Kh4rY*Lo%+;&bX zf6MrJ%SONkpfP(oid+hK7EHdlcPKh`5o@db0||=~f*=Ao)nIHoQ5qvp4HDqXZat=2!SUC6brN z*=)X3Ll@YuZS3&Ovx$}KI~8d?7eK#huAnaE_#Yg1F5^ z2;CgDFleHOqfryU)9B?+;2A210_78&wOlN92cc9IO&bQ{yaH8PsI*}uRyXpGKl=iM z`*EOd@M}Z}4WxT-BGq3-xQfVdxVC7nB3ebuaO4NXy5ilD?(o1bXpKN)HU&=ar8e*! zBTS$TNh0_2Z!o|grQJ5{BTEN)-%FMbai!(cb)WR=FpdNPrSUB7=m^rZb&&Rx0gC8H zii@@;N`f-rEf{0}I-h-kJ}K!ken#7mh-vru-RD^2w3Eit+=Vc(o|ZxGPxC)c$qxRW IIn^Bd8^Y^^9{>OV literal 0 HcmV?d00001 diff --git a/bwie-modules/bwie-loan/target/classes/com/bwie/loan/config/ProductConfig$1.class b/bwie-modules/bwie-loan/target/classes/com/bwie/loan/config/ProductConfig$1.class new file mode 100644 index 0000000000000000000000000000000000000000..cfc07631686e52d43616691538825e446e6209c4 GIT binary patch literal 869 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 L9_82ejo!?E0Y4%j literal 0 HcmV?d00001 diff --git a/bwie-modules/bwie-loan/target/classes/com/bwie/loan/controller/LoanController.class b/bwie-modules/bwie-loan/target/classes/com/bwie/loan/controller/LoanController.class new file mode 100644 index 0000000000000000000000000000000000000000..5cedb8e7626c89b0b65b9d6cc8aa615e253426c9 GIT binary patch literal 2664 zcmb_dS#ujj5dKC!ba)dRI~c;1#KyPDawsH@gu!tx6UlMx#1xgMku;Xqtaioj%Em=e zMFpNHQh5mBfuisuFBD0Dig7Uh0sIdMzvUlL^vue#{UEL| z)R}gc;Y7lAvO3T6^sLZHk~OTXoTGDkf_B1*F*KPrx2A+MZ=?moU?Oej^wfeO^|__H z{vW!L%bR3V(Hx^a86TZ2Se}s+(}ruLOfh0vw#Plgwp@lY%DJ0&$mxv3b7H}EKGIWy zTdqFC)1K`t>bzp0j}$z6!Ei)|jtx5E5gyP2(z7dcia3stnhQZ&T0MIc_LydAcH@NX3Tf%MhM2vKIFW4u$CEete$FQ*_6? zSP&^aWmuW&l(;0kB+ut5e+Xd1JU0sjE@BXJ$CJ6pknG)^qskyfaU)6gza>=+W%Zh3 zC|^}2fZGpeXh{lh*3L|Dne3i$D4|XrnCpb?R*~(ft*gqBH3fF?!^@1$*_lO|x$(4F zu9e7?U2xLkq9H4zO~!OH$4|=2+pUaux-QCfZ__-c;RU>?p%rZm*NR^)t$*?7lhyBv zpD&euS}WaqP`dr|lhv=+?=P1g-dbP2UtIf={{8f`imdeQN^$j0t*m(G7FjBphUalK zh=hhD#x-2UI0J&1&~Oct8jj%EAf_~&K*#^!y?FO_@$ol*|8ckU!}rQN!<8+JD!Bg> zmjMhu)sZ^@?5SN0_p-nI3+ij!K5=g;oKX!C+{obtBEsDH)~w7Fj** zsmy46i8OSYsSME2zYO+JnY>J+JOFgyD>Q1p0*>K0?da`72f3BTKca!$0vCQkptY|5 zH`K47fdZx$jr4E^R}gBD`|u+~5>l&ayVihG8hAhl)j>M%KuC>YbQ1aw0?~zT^bpow z4AVS{eg&-EcU}h8O>-w+C4gOIEkXN|Zd&z_BtX_OHiv27N5B4?U@nnipi)A;BD6$= z>PSZs(sqL?`3yY5p`;{qc)Ql1A~Yxo1*!-|5ymO%K~a*OCU8SU=qwQ$B0_OR=(z8^ zOo(9MHJl`X8`J`1L082{j0%_6D_jQf2FZi+Lf@oC2ya!cS<;lBaBK7LX!#WZdDTpT T^RK#%phig+Acz|o^fvG>;9p52 literal 0 HcmV?d00001 diff --git a/bwie-modules/bwie-loan/target/classes/com/bwie/loan/controller/RepaymentController.class b/bwie-modules/bwie-loan/target/classes/com/bwie/loan/controller/RepaymentController.class new file mode 100644 index 0000000000000000000000000000000000000000..aeb7103ebe53960f3cb939929300d37972a3cb17 GIT binary patch literal 3470 zcmcImS#uOs6#i}&W+n_$ zA%J$o>#!0BLRf)=K}1x4XfY1sh-!{5MmKtt?DaYvLo|rqAdaiyi6Bk}aY_yQg6I$6 zbR7mT7{D2UYSSJP*ci2)Ax%%|@nNY^GGtgos&60BqMS*mLtwchQ~Fp^T5i8|E*Nns z&=!r`Ni8;NC?nm{(*6g{NTy7!Z<=}!g>e8le*ezS2~PlsNWc}bT{KL>LX7OkSE5{UNQ4V zWlW11R-!cNj!L&zPoZ7H#5ZAz z;l~L{9CfL}`T~*W`FCLc#0r&oY@FYr!0v^Ex6>stT)18SxRy8WX+ zo4WNw_LDCjJ@{0>@R(hS}U6nZZp>`}pqTUKxd2Hr=_y}y83uv!y>AdfKYW|CB+KV7!>ghBq*IZuI zivb(?09?t(Vl@vfYXnDC>X3rPh~q`<*LgA?>1ncB&RJU6zCaC)ylxo=UrpKJUr<$Fz3n&DOrlo6A1o5sK8ZlBng+N3j!>`C zs++0R>S?v!p`&W3#TyZ1+kg<4U(0?yB~4sZ!xnV0k6^0@Y=gge9vETpdlLaR(Pk@} z8IczHQSg1qHcGZrLWo<~wenYm7rlTjrP2=mv~v(?yo5G>3#iEKskn;XnDDURi#{?DSJi*<>tujFo z+smI%Y*&%kK93k{OC@4UXF@I`w#*~8e5Tec#3Ceihk=XunVnMu8$ncHyqW(hlEB-+Juc%U4&Wgg;&+_GrS{G+kc-0G;lD-D~2NPF! A#sB~S literal 0 HcmV?d00001 diff --git a/bwie-modules/bwie-loan/target/classes/com/bwie/loan/feign/UserFeignService.class b/bwie-modules/bwie-loan/target/classes/com/bwie/loan/feign/UserFeignService.class new file mode 100644 index 0000000000000000000000000000000000000000..549a0aec75ec45073b40dcbca6fd7b062d6d7ed7 GIT binary patch literal 689 zcmb7CO-lnY5S^&CYW=Kw@G2hkpo3VvR0I_&LPfFY#Zz{7TBEzkl4M&%{9_*c0sbg) zvO@hlC`)!Wn>X{`%*)H`(=z}xV7Us5Rag=*-Bmg{yuWm0PZ9w;>+M_FmzYZ3!;ZH~ z_nI5+*kl+D6d`|PMx!NHq#iHI&=fF#O8&+q=hDiIJXt4TL~*srj_PUY3rhmx|5x7o zL7bROs**o9+7SlXtfJgB_gTrxMWMaQ=t?;irF5XR@zN^>3uv^B?V-yaj|v}D@+e^SE8lPeUx;`AOnff=&6TuDvUaAP z>X^dD)KV$)FNbDZ#1rk1?W>r!f>Q#vf2|&;rby7_q`M&n%fzEpk@j4;7Tnx)_s&x$ zU~TAcYNW>Zgzs$Z^2g0Mi*70Q;{w=dzE1#ROu#6N@l)YlMZh?RDz6ckfJu(C44vXt dy9VK48fL?>MS^I^5kFUQH73%r@n6kM>AWy1%K8BL^opYhpMXB zy^38Fw0G0{4a+b7V|ghA&o3LIucE7ySo;g>zDbV`unm_L%a681r`g0|d3H4ov3{~_ z+%&CR>YPwODvr>&MW?9es{J1udyvm$P1d(469%m-XC~%?dqTOq zt1P-`I_*_0veM%*yu+a0Lp#-zS7C&Y7EQ>Y;H^1I1L-PZBZCaO|KYoH#@gqjg+xvt zzE*sqeIXU^|BCF~Q_u5$q^$IDC__2&Fzx-Il(xc3tw=@7(Z=N>5aTIwIihmN#RkBW zS45Vd3ojypl_;19i%F+s{GC$TLk6XEeGF<+g=lQ5l|gx+BQwTl=~075deIX>faWIN zFN3q~VYX(t+%dz7h=#aMfMH;ya^GSn7TUb?ko-VxmjUu8?FU+s%LKkiCyR~Zexhcx z;uR@5yYc^JG{dniFkq0O-v=O@V~~X$ojhfE@|;4EP6qa%M6nuU%XBIs6bM{}eM;8g Z0{|-3{*>r#Jz+S6BZ_6pk0~|)egLS&$Atg@ literal 0 HcmV?d00001 diff --git a/bwie-modules/bwie-loan/target/classes/com/bwie/loan/service/LoanService.class b/bwie-modules/bwie-loan/target/classes/com/bwie/loan/service/LoanService.class new file mode 100644 index 0000000000000000000000000000000000000000..a824ad32db66cd7f901b603678a98223926a473c GIT binary patch literal 639 zcmah{Jx{|h5IvVRrKLdm+}Xl{7q(Ok2q9HU1!^P~CO0{PtHdsjQ^a3m;0N%d5N8ts z5=B*H#dp4Y&-b3+KVIJe;2e&-aM*<-2AhQz>PlF_;3PbaQ(f}evqVmtQY&t-ste1f z{ueRmB{EmS)&?2eud5%$bFmb>wzA-{tnBCye5OkwJ z!v9;JYOJj9oTA@H>&F;Q&_3$yRv1yDMN=`@azZo+3jS} z7IQQ!XjYEHAaKwQW>7COVKK3!AW??DQ4?#V%A-|0cMMvR+JmZT>?gW5DPGHhY#6$0 zCTNy2#WN>3Ir(j)W9FozJM^7-h3x-s@M~lI}hdKBJMxD0$ literal 0 HcmV?d00001 diff --git a/bwie-modules/bwie-loan/target/classes/com/bwie/loan/service/RepaymentService.class b/bwie-modules/bwie-loan/target/classes/com/bwie/loan/service/RepaymentService.class new file mode 100644 index 0000000000000000000000000000000000000000..b97a09171adb350653b6778fc9a26f45ee7ae9b7 GIT binary patch literal 622 zcmbVK+fD*85Iuzj1TUb5UoiM$UwDJ~poxZLjYhtpER(flw19r5&YaWtkGBngAQ*|Db13h{qjFZSEqv(+O+WuPRN+t#m|Jg;N3-l{v*D$()MdPK^@HCheSkoGmEw wO#y)#e+-}=2-FeqsllfP+s8|bXAK7&YNNx@GIR*=)e(+&S0{`V=x*`7Pw=L>uK)l5 literal 0 HcmV?d00001 diff --git a/bwie-modules/bwie-loan/target/classes/com/bwie/loan/service/impl/LoanServiceImpl.class b/bwie-modules/bwie-loan/target/classes/com/bwie/loan/service/impl/LoanServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..cc8f028a90358709cb7df09e01f6164ece61d194 GIT binary patch literal 7006 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 F{1?p*5ElRd literal 0 HcmV?d00001 diff --git a/bwie-modules/bwie-loan/target/classes/mapper/LoanMapper.xml b/bwie-modules/bwie-loan/target/classes/mapper/LoanMapper.xml new file mode 100644 index 0000000..5b4123f --- /dev/null +++ b/bwie-modules/bwie-loan/target/classes/mapper/LoanMapper.xml @@ -0,0 +1,26 @@ + + + + + + INSERT INTO t_loan + (loan_amount,periods,handling_charge,create_by,create_time,status,loan_interest) + VALUES + (#{loanAmount}, #{periods}, #{handlingCharge}, #{createBy}, now(), 0, #{loanInterest}) + + + + update t_loan set status=#{status} where id=#{id} + + + + + + diff --git a/bwie-modules/bwie-loan/target/classes/mapper/RepaymentMapper.xml b/bwie-modules/bwie-loan/target/classes/mapper/RepaymentMapper.xml new file mode 100644 index 0000000..9baa837 --- /dev/null +++ b/bwie-modules/bwie-loan/target/classes/mapper/RepaymentMapper.xml @@ -0,0 +1,22 @@ + + + + + INSERT INTO t_repayment_schedule + (loan_id, repayment_amount, current_profit, status, period, repayment_date) + VALUES + (#{loanId},#{repaymentAmount},#{currentProfit},0,#{period},#{repaymentDate}); + + + + update t_repayment_schedule set repayment_amount=#{repaymentAmount},status=1 + where id=#{id} + + + + + diff --git a/bwie-modules/bwie-loan/target/maven-archiver/pom.properties b/bwie-modules/bwie-loan/target/maven-archiver/pom.properties new file mode 100644 index 0000000..16da2d4 --- /dev/null +++ b/bwie-modules/bwie-loan/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=bwie-loan +groupId=com.bwie +version=1.0-SNAPSHOT diff --git a/bwie-modules/bwie-loan/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/bwie-modules/bwie-loan/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..8c31b03 --- /dev/null +++ b/bwie-modules/bwie-loan/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,14 @@ +com\bwie\loan\controller\LoanController.class +com\bwie\loan\mapper\RepaymentMapper.class +com\bwie\loan\controller\RepaymentController.class +com\bwie\loan\service\LoanService.class +com\bwie\loan\service\impl\RepaymentServiceImpl.class +com\bwie\loan\config\ProductConfig$1.class +com\bwie\loan\config\ConfirmCallbackConfig.class +com\bwie\loan\config\ProductConfig.class +com\bwie\loan\LoanApplication.class +com\bwie\loan\config\ReturnCallbackConfig.class +com\bwie\loan\service\RepaymentService.class +com\bwie\loan\feign\UserFeignService.class +com\bwie\loan\service\impl\LoanServiceImpl.class +com\bwie\loan\mapper\LoanMapper.class diff --git a/bwie-modules/bwie-loan/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/bwie-modules/bwie-loan/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..6a1ff0e --- /dev/null +++ b/bwie-modules/bwie-loan/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,9 @@ +D:\lv6\month1010-fst\bwie-modules\bwie-loan\src\main\java\com\bwie\loan\mapper\RepaymentMapper.java +D:\lv6\month1010-fst\bwie-modules\bwie-loan\src\main\java\com\bwie\loan\service\LoanService.java +D:\lv6\month1010-fst\bwie-modules\bwie-loan\src\main\java\com\bwie\loan\mapper\LoanMapper.java +D:\lv6\month1010-fst\bwie-modules\bwie-loan\src\main\java\com\bwie\loan\service\RepaymentService.java +D:\lv6\month1010-fst\bwie-modules\bwie-loan\src\main\java\com\bwie\loan\controller\LoanController.java +D:\lv6\month1010-fst\bwie-modules\bwie-loan\src\main\java\com\bwie\loan\controller\RepaymentController.java +D:\lv6\month1010-fst\bwie-modules\bwie-loan\src\main\java\com\bwie\loan\LoanApplication.java +D:\lv6\month1010-fst\bwie-modules\bwie-loan\src\main\java\com\bwie\loan\service\impl\RepaymentServiceImpl.java +D:\lv6\month1010-fst\bwie-modules\bwie-loan\src\main\java\com\bwie\loan\service\impl\LoanServiceImpl.java diff --git a/bwie-modules/bwie-loan/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/bwie-modules/bwie-loan/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/bwie-modules/bwie-loan/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/bwie-modules/bwie-loan/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/bwie-modules/bwie-system/bwie-system.iml b/bwie-modules/bwie-system/bwie-system.iml new file mode 100644 index 0000000..78b2cc5 --- /dev/null +++ b/bwie-modules/bwie-system/bwie-system.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/bwie-modules/bwie-system/pom.xml b/bwie-modules/bwie-system/pom.xml new file mode 100644 index 0000000..d29fffa --- /dev/null +++ b/bwie-modules/bwie-system/pom.xml @@ -0,0 +1,51 @@ + + + + bwie-modules + com.bwie + 1.0-SNAPSHOT + + 4.0.0 + + bwie-system + + + + + com.bwie + bwie-common + + + + org.springframework.boot + spring-boot-starter-web + + + + com.alibaba + druid-spring-boot-starter + 1.2.8 + + + + mysql + mysql-connector-java + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 2.2.2 + + + + com.github.pagehelper + pagehelper-spring-boot-starter + 1.4.1 + + + + + diff --git a/bwie-modules/bwie-system/src/main/java/com/bwie/system/SystemApplication.java b/bwie-modules/bwie-system/src/main/java/com/bwie/system/SystemApplication.java new file mode 100644 index 0000000..ce7caee --- /dev/null +++ b/bwie-modules/bwie-system/src/main/java/com/bwie/system/SystemApplication.java @@ -0,0 +1,11 @@ +package com.bwie.system; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SystemApplication { + public static void main(String[] args) { + SpringApplication.run(SystemApplication.class); + } +} diff --git a/bwie-modules/bwie-system/src/main/java/com/bwie/system/controller/UserController.java b/bwie-modules/bwie-system/src/main/java/com/bwie/system/controller/UserController.java new file mode 100644 index 0000000..7bc10a5 --- /dev/null +++ b/bwie-modules/bwie-system/src/main/java/com/bwie/system/controller/UserController.java @@ -0,0 +1,59 @@ +package com.bwie.system.controller; + +import com.bwie.common.domain.response.UserResponse; +import com.bwie.common.result.Result; +import com.bwie.system.service.impl.UserServiceImpl; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; + +@RestController +@Log4j2 +public class UserController { + + @Autowired + private UserServiceImpl userService; + + @Autowired + private HttpServletRequest request; + + /** + * 根据用户名查找用户 + * @param userName + * @return + */ + @GetMapping("/findByUserName/{userName}") + public Result findByUserName(@PathVariable String userName){ + log.info("功能:根据用户名查找用户,请求路径:{},请求方式:{},请求参数:{}", + request.getRequestURI(),request.getMethod(),userName); + + Result result = userService.findByUserName(userName); + + log.info("功能:根据用户名查找用户,请求路径:{},请求方式:{},响应结果:{}", + request.getRequestURI(),request.getMethod(),result); + + return result; + } + + /** + * 根据用户id查找用户 + * @param id + * @return + */ + @GetMapping("/findByUserId/{id}") + public Result findByUserId(@PathVariable String id){ + log.info("功能:根据用户id查找用户,请求路径:{},请求方式:{},请求参数:{}", + request.getRequestURI(),request.getMethod(),id); + + Result result = userService.findByUserId(id); + + log.info("功能:根据用户id查找用户,请求路径:{},请求方式:{},响应结果:{}", + request.getRequestURI(),request.getMethod(),result); + + return result; + } +} diff --git a/bwie-modules/bwie-system/src/main/java/com/bwie/system/mapper/UserMapper.java b/bwie-modules/bwie-system/src/main/java/com/bwie/system/mapper/UserMapper.java new file mode 100644 index 0000000..7543206 --- /dev/null +++ b/bwie-modules/bwie-system/src/main/java/com/bwie/system/mapper/UserMapper.java @@ -0,0 +1,14 @@ +package com.bwie.system.mapper; + +import com.bwie.common.domain.response.UserResponse; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Component; + +@Mapper +@Component +public interface UserMapper { + UserResponse findByUserName(@Param("userName") String userName); + + UserResponse findByUserId(@Param("id") String id); +} diff --git a/bwie-modules/bwie-system/src/main/java/com/bwie/system/service/UserService.java b/bwie-modules/bwie-system/src/main/java/com/bwie/system/service/UserService.java new file mode 100644 index 0000000..49ae9dd --- /dev/null +++ b/bwie-modules/bwie-system/src/main/java/com/bwie/system/service/UserService.java @@ -0,0 +1,10 @@ +package com.bwie.system.service; + +import com.bwie.common.domain.response.UserResponse; +import com.bwie.common.result.Result; + +public interface UserService { + Result findByUserName(String userName); + + Result findByUserId(String id); +} diff --git a/bwie-modules/bwie-system/src/main/java/com/bwie/system/service/impl/UserServiceImpl.java b/bwie-modules/bwie-system/src/main/java/com/bwie/system/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..7b725f5 --- /dev/null +++ b/bwie-modules/bwie-system/src/main/java/com/bwie/system/service/impl/UserServiceImpl.java @@ -0,0 +1,37 @@ +package com.bwie.system.service.impl; + +import com.bwie.common.domain.response.UserResponse; +import com.bwie.common.result.Result; +import com.bwie.system.mapper.UserMapper; +import com.bwie.system.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class UserServiceImpl implements UserService { + @Autowired + private UserMapper userMapper; + + + /** + * 根据用户名查找用户 + * @param userName + * @return + */ + @Override + public Result findByUserName(String userName) { + UserResponse userResponse = userMapper.findByUserName(userName); + return Result.success(userResponse); + } + + /** + * 根据用户id查找用户 + * @param id + * @return + */ + @Override + public Result findByUserId(String id) { + UserResponse userResponse = userMapper.findByUserId(id); + return Result.success(userResponse); + } +} diff --git a/bwie-modules/bwie-system/src/main/resources/bootstrap.yml b/bwie-modules/bwie-system/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..8d6e297 --- /dev/null +++ b/bwie-modules/bwie-system/src/main/resources/bootstrap.yml @@ -0,0 +1,29 @@ +# Tomcat +server: + port: 9002 +# Spring +spring: + main: + allow-circular-references: true + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + application: + # 应用名称 + name: bwie-system + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 192.168.111.133:8848 + config: + # 配置中心地址 + server-addr: 192.168.111.133:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} diff --git a/bwie-modules/bwie-system/src/main/resources/mapper/UserMapper.xml b/bwie-modules/bwie-system/src/main/resources/mapper/UserMapper.xml new file mode 100644 index 0000000..14a1ea2 --- /dev/null +++ b/bwie-modules/bwie-system/src/main/resources/mapper/UserMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/bwie-modules/bwie-system/target/bwie-system-1.0-SNAPSHOT.jar b/bwie-modules/bwie-system/target/bwie-system-1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..a6d41ebdf441423f47908959372030941819a5a7 GIT binary patch literal 6983 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 DHOrR1 literal 0 HcmV?d00001 diff --git a/bwie-modules/bwie-system/target/classes/bootstrap.yml b/bwie-modules/bwie-system/target/classes/bootstrap.yml new file mode 100644 index 0000000..8d6e297 --- /dev/null +++ b/bwie-modules/bwie-system/target/classes/bootstrap.yml @@ -0,0 +1,29 @@ +# Tomcat +server: + port: 9002 +# Spring +spring: + main: + allow-circular-references: true + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + application: + # 应用名称 + name: bwie-system + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 192.168.111.133:8848 + config: + # 配置中心地址 + server-addr: 192.168.111.133:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} diff --git a/bwie-modules/bwie-system/target/classes/com/bwie/system/SystemApplication.class b/bwie-modules/bwie-system/target/classes/com/bwie/system/SystemApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..348654de3bd668bb738cd55363837cddd74fe9bd GIT binary patch literal 762 zcmah{O>fjN5PjaS(Ck9X7M7N;s^YTk0bjUOiz>A%^%P3QqUFHJN!`>Xu~&{m>CfT> zLV_Q_k3x*yA{JQGM47Q?CU4%e=lhQ@-vB(rMvOKF5$;7;i?NRT5gssfo-3`~E<0TBHR<`iaRzF%?$%{Z+8#PF2P5B*{$4({m+xbx}E4@=0)e zvss}s;gr!Mf-Z&941?j@7=E? zcw%as$phu-4gTr))Hh*Re^qOzN;y@PBI0{m8y6T6!fs-0&a0WHaN>c_jeW;cV;mQ? zGnvsRDzB~NlTflxiFrvqbPzFYUMrsH|E)N}!yX>t@gJ#|>6y$N!}fn^T@sliLHA~B zI@NSIcc|k+RMlv~Ic_Z!Ogf$X;Q07TufO2A78LgB5jN4F3Gz<^G&qRJ-k=>P&&ap8 zKY@J==_RtA5R4Ghx_4QCF0Fti+{7&c@jvebFreFSG{2(x8Lcwn;Q?k)sE0!0UAa?ibI&$;LKJNMjk`TL*8 z>j1)-szC!T22qDg0bG{y^;$&GFNZg3F@QIv?yVXO;z|HR0lY1zR|B}_$MqWAz_1_h zFjVMfilI4bS}Cq()WnS7q)BN;O3LsokJ3t55r*2VEvyM)&1nh2&=XCVX&#@~1h*G# zN2ED@m7lnl&ggt{+jf}NLshi^5J@YFf;j z)`vVURKw=eYQizC1+Eqx_+ZvC=QT?tXRu?WYckB-BJl5Lnvw{RDDXdG`ZeXRys2p zLGCKypD+!_GId>8F8iUvk|NekYew?Qg3QVY(POyK?xN+oN{OCuB=Jbc_Lh{}v}tfl z*je4-0`dsF4ML^bfqRn3~DR z6Je;DQ}rx?Y~;l!$QQSc;xvB@^F&Dr_m7F0cSYL z7quk82=piP&BCskFtb)dT+?J3AC+adU5-8Sn(TGw$|Zyj)7f^9C^(5m1ppq{12=7rJtYN|0)03O75$r{DU9!pRaq%r)ytsJY2~y-`QAsm|Oppj2CYg zbop;qb8B~tb-BBD@?Sr4bqZd<2|sQsh$5z71TjBG6^!9s1xInrk8uU3(R}zwa`%>U zkMBSE^Irb@?_4Ad@0TU3B@d75tCGnfhbcp(V|VM`vvv6~q2LxK=@QGT@!HjBd{!i= z;hsHEzhyX*Dm358@nMEz?H%QsSCGuSPC@Pophga&kuO2_ z?!?f=+4D_fII|zhm};o>a8j=$Ufv_h5Z(!QNLOu}y8eE<$fp<0^pH2uqhEnWdF^QC zlf@5)=V@L|^0=#`tFlX1No%^TG`>g{oFpSz)wu$;?7F-}quc-#;1rFDXMmT{L@Orm z7OGt5Ws()7yZQ@!p^DDmP`QdK25(YL58^8PRdN~V`W?ZTw5ln!>UOQVAJIk?kilCJ zps@)-3Uz|yDbk!nD`7oL|HHIm2yHH~(_ZjRU<8Bg&Je(JF+DStY zTS#=!&xcMoVRhuzMZfO%z-+vN9{T2&nc*~Hpi5Yea&0M@BFc(O`ADhN9+Z2D@_C}% zOZ377zK_CRB+7k6`SKo=dk;#vcVEiqizx?ip->{tlmPh`4AuRC`d{IbWy0K(^2(&1 P(ikS453d!fuMhYa2}fT( literal 0 HcmV?d00001 diff --git a/bwie-modules/bwie-system/target/classes/com/bwie/system/mapper/UserMapper.class b/bwie-modules/bwie-system/target/classes/com/bwie/system/mapper/UserMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..49fae52f0f616620c10bebd1f57bfb496b5cd46b GIT binary patch literal 549 zcmah`!A=4(5S=0m2neVrkD6%IgS~j;1STdXpa!D%?(P7^ZM$i^5Pr>rAK*tBXBPvK zn0RQX)4aYn@AdQR{R04Q;kXKiRXAeMnn)e@S1%6jqfp48e>s?oh2V+MQ$F@q>S_0C z5E;e8r9@5#Wi*eC5>j)EE;ZUA&)<)Jnl6LR5dF-=&%zR?N9!2WvW>*qDAQgle3edy z32sn5t&JC65+j52fw5CAQW4FN%aE=e7h3=?UXfI=5J^UJH@8L}Vg@BiTYYRY8{xf7 z2++=F9EvnWdy_k4aI!ncj{LmLks6iY}x-Y>2w5ZnU)TY`2_y&fDn2-Pf literal 0 HcmV?d00001 diff --git a/bwie-modules/bwie-system/target/classes/com/bwie/system/service/UserService.class b/bwie-modules/bwie-system/target/classes/com/bwie/system/service/UserService.class new file mode 100644 index 0000000000000000000000000000000000000000..704c10bd8f3e3e9ce5e798d353de4b3b1eecdc24 GIT binary patch literal 416 zcmb7A!A=4(5S=2hfPnmi7roGf-qv{VKw^SI-1q^dJFX?$*0fy=zvjUY@S_aV#;_)y zymb2VX5PFvU*8{}0B{Xw8B8*mGMK(7Q{L^LJ-SDsk-^o)aw~R%*TPi12u_(Qzg$YI z`Q}|Ar;oOVJM>K*_){u5gV_UyS6i-yBawj4GZ-{S&0(P`BSPayU;bbJ=Fj@lYN3*g zH)}ldXrH_!kl&J@aU1KtWYAIcj0)R0i3?SejaeKi(Cw7Oc?`_p{20>jeL&5rBhpFz wr#R0gl%dan7SL4zI$Z`Q&?VF()ML=6l0^arL=Asaqn4ui)6_IR02JhNMF0Q* literal 0 HcmV?d00001 diff --git a/bwie-modules/bwie-system/target/classes/com/bwie/system/service/impl/UserServiceImpl.class b/bwie-modules/bwie-system/target/classes/com/bwie/system/service/impl/UserServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..d1e4b881acd2f674f692ca44c5e1088d55645d75 GIT binary patch literal 1381 zcmb7ETTc@~7(LTcR>}&9ctHiZcq!M>=z|G_1WZgw3L2`sPq#xE?Cv(ZvylEPO-#Hz z_yhb=#ky6x$&Nr7c=X~FpZ~Notx9(1tYJv5YG?J0nX9~)0g<2M^w8I|_N zHrEs#IWR$OtCiNb%WMUnmC8rzSjmP8>at?fI@T7ttn|kZ0~zT!X;`_J1=3teU2GGK z_udz9({rMmG>IZ-((Dk{LSLDTH-luE{>GDkY)9L}u=Yl!mRcRL)S-&02g)W9`Mm#6 zdcCKnOHW1f+g za~$PLG784R;%A7Doa8XZF$IIyu5onR0F2{0SA22YAW3?8kLWz(*y1PTmcAmN!_M*- z41C~To2SSK+#=KMjBBQi?{M)ZZt^ruut3Bl(RYY12yO#+Gn#ump6V-E=p#8t%K1K$ V(-%ulpOMVrekMLcnzkFWz%RhtWX=Ep literal 0 HcmV?d00001 diff --git a/bwie-modules/bwie-system/target/classes/mapper/UserMapper.xml b/bwie-modules/bwie-system/target/classes/mapper/UserMapper.xml new file mode 100644 index 0000000..14a1ea2 --- /dev/null +++ b/bwie-modules/bwie-system/target/classes/mapper/UserMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/bwie-modules/bwie-system/target/maven-archiver/pom.properties b/bwie-modules/bwie-system/target/maven-archiver/pom.properties new file mode 100644 index 0000000..2b89ea6 --- /dev/null +++ b/bwie-modules/bwie-system/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=bwie-system +groupId=com.bwie +version=1.0-SNAPSHOT diff --git a/bwie-modules/bwie-system/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/bwie-modules/bwie-system/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..8bceecb --- /dev/null +++ b/bwie-modules/bwie-system/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,5 @@ +com\bwie\system\service\UserService.class +com\bwie\system\service\impl\UserServiceImpl.class +com\bwie\system\mapper\UserMapper.class +com\bwie\system\controller\UserController.class +com\bwie\system\SystemApplication.class diff --git a/bwie-modules/bwie-system/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/bwie-modules/bwie-system/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..91dbd0d --- /dev/null +++ b/bwie-modules/bwie-system/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,5 @@ +D:\lv6\month1010-fst\bwie-modules\bwie-system\src\main\java\com\bwie\system\service\UserService.java +D:\lv6\month1010-fst\bwie-modules\bwie-system\src\main\java\com\bwie\system\controller\UserController.java +D:\lv6\month1010-fst\bwie-modules\bwie-system\src\main\java\com\bwie\system\service\impl\UserServiceImpl.java +D:\lv6\month1010-fst\bwie-modules\bwie-system\src\main\java\com\bwie\system\SystemApplication.java +D:\lv6\month1010-fst\bwie-modules\bwie-system\src\main\java\com\bwie\system\mapper\UserMapper.java diff --git a/bwie-modules/bwie-system/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/bwie-modules/bwie-system/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/bwie-modules/bwie-system/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/bwie-modules/bwie-system/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/bwie-modules/pom.xml b/bwie-modules/pom.xml new file mode 100644 index 0000000..e57b6fd --- /dev/null +++ b/bwie-modules/pom.xml @@ -0,0 +1,21 @@ + + + + month1010-fst + com.bwie + 1.0-SNAPSHOT + + 4.0.0 + + bwie-modules + pom + + bwie-system + bwie-loan + bwie-es + + + + diff --git a/month1010-fst.iml b/month1010-fst.iml new file mode 100644 index 0000000..78b2cc5 --- /dev/null +++ b/month1010-fst.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..adf6bda --- /dev/null +++ b/pom.xml @@ -0,0 +1,62 @@ + + + 4.0.0 + + com.bwie + month1010-fst + pom + 1.0-SNAPSHOT + + bwie-common + bwie-gateway + bwie-auth + bwie-modules + + + + + + spring-boot-starter-parent + org.springframework.boot + 2.6.2 + + + + + + + + org.springframework.cloud + spring-cloud-dependencies + 2021.0.0 + pom + import + + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + 2021.1 + pom + import + + + + com.alibaba.nacos + nacos-client + 2.0.4 + + + + + com.bwie + bwie-common + 1.0-SNAPSHOT + + + + + +