From 6484af8cd2640579adc8d7c70ca7809a5e5115b7 Mon Sep 17 00:00:00 2001 From: life <1733802689@qq.com> Date: Thu, 2 Nov 2023 22:06:52 +0800 Subject: [PATCH] =?UTF-8?q?SpringBoot=E7=AE=80=E5=8D=95=E9=85=92=E5=BA=97?= =?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 | 25 ++ .idea/encodings.xml | 13 + .idea/inspectionProfiles/Project_Default.xml | 36 ++ .idea/jarRepositories.xml | 20 ++ .idea/misc.xml | 14 + .idea/uiDesigner.xml | 124 +++++++ .idea/vcs.xml | 6 + Finish.iml | 2 + auth/pom.xml | 33 ++ auth/src/main/java/com/bwie/auth/AuthApp.java | 14 + .../bwie/auth/controller/AuthController.java | 49 +++ .../java/com/bwie/auth/feign/AuthFeign.java | 19 ++ .../com/bwie/auth/service/AuthService.java | 13 + .../auth/service/Impl/AuthServiceImpl.java | 83 +++++ auth/src/main/resources/bootstrap.yml | 32 ++ auth/target/auth-1.0-SNAPSHOT.jar | Bin 0 -> 7957 bytes auth/target/classes/bootstrap.yml | 32 ++ .../classes/com/bwie/auth/AuthApp.class | Bin 0 -> 791 bytes .../bwie/auth/controller/AuthController.class | Bin 0 -> 2685 bytes .../com/bwie/auth/feign/AuthFeign.class | Bin 0 -> 724 bytes .../com/bwie/auth/service/AuthService.class | Bin 0 -> 543 bytes .../auth/service/Impl/AuthServiceImpl.class | Bin 0 -> 4902 bytes auth/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 common/pom.xml | 119 +++++++ .../com/bwie/common/constants/Constants.java | 18 + .../bwie/common/constants/JwtConstants.java | 29 ++ .../common/constants/RabbitMQConstants.java | 9 + .../bwie/common/constants/TokenConstants.java | 24 ++ .../java/com/bwie/common/domain/Hotel.java | 15 + .../java/com/bwie/common/domain/Menu.java | 13 + .../java/com/bwie/common/domain/MyMenu.java | 13 + .../java/com/bwie/common/domain/Order.java | 14 + .../java/com/bwie/common/domain/Stay.java | 18 + .../java/com/bwie/common/domain/User.java | 16 + .../common/domain/request/QueryHotel.java | 16 + .../common/domain/request/RequestUser.java | 9 + .../common/domain/response/ResponseHotel.java | 15 + .../common/domain/response/ResponseUser.java | 9 + .../com/bwie/common/result/PageResult.java | 34 ++ .../java/com/bwie/common/result/Result.java | 76 +++++ .../java/com/bwie/common/utils/FastUtil.java | 56 +++ .../java/com/bwie/common/utils/HttpUtils.java | 319 ++++++++++++++++++ .../java/com/bwie/common/utils/JwtUtils.java | 109 ++++++ .../java/com/bwie/common/utils/MsgUtil.java | 58 ++++ .../com/bwie/common/utils/StringUtils.java | 68 ++++ .../com/bwie/common/utils/TelSmsUtils.java | 87 +++++ .../com/bwie/common/constants/Constants.class | Bin 0 -> 651 bytes .../bwie/common/constants/JwtConstants.class | Bin 0 -> 544 bytes .../common/constants/RabbitMQConstants.class | Bin 0 -> 408 bytes .../common/constants/TokenConstants.class | Bin 0 -> 526 bytes .../com/bwie/common/domain/Hotel.class | Bin 0 -> 4005 bytes .../classes/com/bwie/common/domain/Menu.class | Bin 0 -> 3201 bytes .../com/bwie/common/domain/MyMenu.class | Bin 0 -> 3117 bytes .../com/bwie/common/domain/Order.class | Bin 0 -> 3637 bytes .../classes/com/bwie/common/domain/Stay.class | Bin 0 -> 4994 bytes .../classes/com/bwie/common/domain/User.class | Bin 0 -> 4562 bytes .../common/domain/request/QueryHotel.class | Bin 0 -> 3739 bytes .../common/domain/request/RequestUser.class | Bin 0 -> 2245 bytes .../domain/response/ResponseHotel.class | Bin 0 -> 4055 bytes .../common/domain/response/ResponseUser.class | Bin 0 -> 2244 bytes .../com/bwie/common/result/PageResult.class | Bin 0 -> 3491 bytes .../com/bwie/common/result/Result.class | Bin 0 -> 5080 bytes .../com/bwie/common/utils/FastUtil.class | Bin 0 -> 2594 bytes .../com/bwie/common/utils/HttpUtils$1.class | Bin 0 -> 1011 bytes .../com/bwie/common/utils/HttpUtils.class | Bin 0 -> 11134 bytes .../com/bwie/common/utils/JwtUtils.class | Bin 0 -> 2871 bytes .../com/bwie/common/utils/MsgUtil.class | Bin 0 -> 2642 bytes .../com/bwie/common/utils/StringUtils.class | Bin 0 -> 1805 bytes .../com/bwie/common/utils/TelSmsUtils.class | Bin 0 -> 3742 bytes common/target/common-1.0-SNAPSHOT.jar | Bin 0 -> 37174 bytes common/target/maven-archiver/pom.properties | 3 + .../compile/default-compile/createdFiles.lst | 23 ++ .../compile/default-compile/inputFiles.lst | 22 ++ .../default-testCompile/createdFiles.lst | 0 .../default-testCompile/inputFiles.lst | 0 gateway/pom.xml | 38 +++ .../java/com/bwie/gateway/GatewayApp.java | 11 + .../gateway/config/IgnoreWhiteConfig.java | 32 ++ .../com/bwie/gateway/filters/AuthFilters.java | 64 ++++ .../com/bwie/gateway/utils/GatewayUtils.java | 98 ++++++ gateway/src/main/resources/bootstrap.yml | 31 ++ gateway/target/classes/bootstrap.yml | 31 ++ .../classes/com/bwie/gateway/GatewayApp.class | Bin 0 -> 743 bytes .../gateway/config/IgnoreWhiteConfig.class | Bin 0 -> 2830 bytes .../bwie/gateway/filters/AuthFilters.class | Bin 0 -> 4139 bytes .../com/bwie/gateway/utils/GatewayUtils.class | Bin 0 -> 6207 bytes gateway/target/gateway-1.0-SNAPSHOT.jar | Bin 0 -> 9333 bytes gateway/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 models/pom.xml | 19 ++ models/system/pom.xml | 85 +++++ .../main/java/com/bwie/system/SystemApp.java | 11 + .../system/controller/HotelController.java | 90 +++++ .../system/controller/MenuController.java | 50 +++ .../system/controller/UserController.java | 42 +++ .../com/bwie/system/mapper/HotelMapper.java | 20 ++ .../com/bwie/system/mapper/MenuMapper.java | 17 + .../com/bwie/system/mapper/UserMapper.java | 19 ++ .../com/bwie/system/service/HotelService.java | 22 ++ .../com/bwie/system/service/MenuService.java | 13 + .../com/bwie/system/service/UserService.java | 15 + .../system/service/impl/HotelServiceImpl.java | 85 +++++ .../system/service/impl/MenuServiceImpl.java | 47 +++ .../system/service/impl/UserServiceImpl.java | 35 ++ .../com/bwie/system/util/QiNiuUploadUtil.java | 107 ++++++ .../system/src/main/resources/bootstrap.yml | 43 +++ .../src/main/resources/mapper/HotelMapper.xml | 66 ++++ .../src/main/resources/mapper/MenuMapper.xml | 34 ++ .../src/main/resources/mapper/UserMapper.xml | 63 ++++ models/system/target/classes/bootstrap.yml | 43 +++ .../classes/com/bwie/system/SystemApp.class | Bin 0 -> 738 bytes .../system/controller/HotelController.class | Bin 0 -> 3790 bytes .../system/controller/MenuController.class | Bin 0 -> 3024 bytes .../system/controller/UserController.class | Bin 0 -> 2404 bytes .../com/bwie/system/mapper/HotelMapper.class | Bin 0 -> 657 bytes .../com/bwie/system/mapper/MenuMapper.class | Bin 0 -> 435 bytes .../com/bwie/system/mapper/UserMapper.class | Bin 0 -> 816 bytes .../bwie/system/service/HotelService.class | Bin 0 -> 728 bytes .../com/bwie/system/service/MenuService.class | Bin 0 -> 369 bytes .../com/bwie/system/service/UserService.class | Bin 0 -> 593 bytes .../service/impl/HotelServiceImpl.class | Bin 0 -> 4395 bytes .../system/service/impl/MenuServiceImpl.class | Bin 0 -> 2381 bytes .../system/service/impl/UserServiceImpl.class | Bin 0 -> 1767 bytes .../bwie/system/util/QiNiuUploadUtil.class | Bin 0 -> 4213 bytes .../target/classes/mapper/HotelMapper.xml | 66 ++++ .../target/classes/mapper/MenuMapper.xml | 34 ++ .../target/classes/mapper/UserMapper.xml | 63 ++++ .../target/maven-archiver/pom.properties | 3 + .../compile/default-compile/createdFiles.lst | 14 + .../compile/default-compile/inputFiles.lst | 14 + .../default-testCompile/createdFiles.lst | 0 .../default-testCompile/inputFiles.lst | 0 models/system/target/system-1.0-SNAPSHOT.jar | Bin 0 -> 20168 bytes pom.xml | 55 +++ 142 files changed, 3219 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/uiDesigner.xml create mode 100644 .idea/vcs.xml create mode 100644 Finish.iml create mode 100644 auth/pom.xml create mode 100644 auth/src/main/java/com/bwie/auth/AuthApp.java create mode 100644 auth/src/main/java/com/bwie/auth/controller/AuthController.java create mode 100644 auth/src/main/java/com/bwie/auth/feign/AuthFeign.java create mode 100644 auth/src/main/java/com/bwie/auth/service/AuthService.java create mode 100644 auth/src/main/java/com/bwie/auth/service/Impl/AuthServiceImpl.java create mode 100644 auth/src/main/resources/bootstrap.yml create mode 100644 auth/target/auth-1.0-SNAPSHOT.jar create mode 100644 auth/target/classes/bootstrap.yml create mode 100644 auth/target/classes/com/bwie/auth/AuthApp.class create mode 100644 auth/target/classes/com/bwie/auth/controller/AuthController.class create mode 100644 auth/target/classes/com/bwie/auth/feign/AuthFeign.class create mode 100644 auth/target/classes/com/bwie/auth/service/AuthService.class create mode 100644 auth/target/classes/com/bwie/auth/service/Impl/AuthServiceImpl.class create mode 100644 auth/target/maven-archiver/pom.properties create mode 100644 auth/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 auth/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 auth/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 auth/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 common/pom.xml create mode 100644 common/src/main/java/com/bwie/common/constants/Constants.java create mode 100644 common/src/main/java/com/bwie/common/constants/JwtConstants.java create mode 100644 common/src/main/java/com/bwie/common/constants/RabbitMQConstants.java create mode 100644 common/src/main/java/com/bwie/common/constants/TokenConstants.java create mode 100644 common/src/main/java/com/bwie/common/domain/Hotel.java create mode 100644 common/src/main/java/com/bwie/common/domain/Menu.java create mode 100644 common/src/main/java/com/bwie/common/domain/MyMenu.java create mode 100644 common/src/main/java/com/bwie/common/domain/Order.java create mode 100644 common/src/main/java/com/bwie/common/domain/Stay.java create mode 100644 common/src/main/java/com/bwie/common/domain/User.java create mode 100644 common/src/main/java/com/bwie/common/domain/request/QueryHotel.java create mode 100644 common/src/main/java/com/bwie/common/domain/request/RequestUser.java create mode 100644 common/src/main/java/com/bwie/common/domain/response/ResponseHotel.java create mode 100644 common/src/main/java/com/bwie/common/domain/response/ResponseUser.java create mode 100644 common/src/main/java/com/bwie/common/result/PageResult.java create mode 100644 common/src/main/java/com/bwie/common/result/Result.java create mode 100644 common/src/main/java/com/bwie/common/utils/FastUtil.java create mode 100644 common/src/main/java/com/bwie/common/utils/HttpUtils.java create mode 100644 common/src/main/java/com/bwie/common/utils/JwtUtils.java create mode 100644 common/src/main/java/com/bwie/common/utils/MsgUtil.java create mode 100644 common/src/main/java/com/bwie/common/utils/StringUtils.java create mode 100644 common/src/main/java/com/bwie/common/utils/TelSmsUtils.java create mode 100644 common/target/classes/com/bwie/common/constants/Constants.class create mode 100644 common/target/classes/com/bwie/common/constants/JwtConstants.class create mode 100644 common/target/classes/com/bwie/common/constants/RabbitMQConstants.class create mode 100644 common/target/classes/com/bwie/common/constants/TokenConstants.class create mode 100644 common/target/classes/com/bwie/common/domain/Hotel.class create mode 100644 common/target/classes/com/bwie/common/domain/Menu.class create mode 100644 common/target/classes/com/bwie/common/domain/MyMenu.class create mode 100644 common/target/classes/com/bwie/common/domain/Order.class create mode 100644 common/target/classes/com/bwie/common/domain/Stay.class create mode 100644 common/target/classes/com/bwie/common/domain/User.class create mode 100644 common/target/classes/com/bwie/common/domain/request/QueryHotel.class create mode 100644 common/target/classes/com/bwie/common/domain/request/RequestUser.class create mode 100644 common/target/classes/com/bwie/common/domain/response/ResponseHotel.class create mode 100644 common/target/classes/com/bwie/common/domain/response/ResponseUser.class create mode 100644 common/target/classes/com/bwie/common/result/PageResult.class create mode 100644 common/target/classes/com/bwie/common/result/Result.class create mode 100644 common/target/classes/com/bwie/common/utils/FastUtil.class create mode 100644 common/target/classes/com/bwie/common/utils/HttpUtils$1.class create mode 100644 common/target/classes/com/bwie/common/utils/HttpUtils.class create mode 100644 common/target/classes/com/bwie/common/utils/JwtUtils.class create mode 100644 common/target/classes/com/bwie/common/utils/MsgUtil.class create mode 100644 common/target/classes/com/bwie/common/utils/StringUtils.class create mode 100644 common/target/classes/com/bwie/common/utils/TelSmsUtils.class create mode 100644 common/target/common-1.0-SNAPSHOT.jar create mode 100644 common/target/maven-archiver/pom.properties create mode 100644 common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 common/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 common/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 gateway/pom.xml create mode 100644 gateway/src/main/java/com/bwie/gateway/GatewayApp.java create mode 100644 gateway/src/main/java/com/bwie/gateway/config/IgnoreWhiteConfig.java create mode 100644 gateway/src/main/java/com/bwie/gateway/filters/AuthFilters.java create mode 100644 gateway/src/main/java/com/bwie/gateway/utils/GatewayUtils.java create mode 100644 gateway/src/main/resources/bootstrap.yml create mode 100644 gateway/target/classes/bootstrap.yml create mode 100644 gateway/target/classes/com/bwie/gateway/GatewayApp.class create mode 100644 gateway/target/classes/com/bwie/gateway/config/IgnoreWhiteConfig.class create mode 100644 gateway/target/classes/com/bwie/gateway/filters/AuthFilters.class create mode 100644 gateway/target/classes/com/bwie/gateway/utils/GatewayUtils.class create mode 100644 gateway/target/gateway-1.0-SNAPSHOT.jar create mode 100644 gateway/target/maven-archiver/pom.properties create mode 100644 gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 gateway/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 gateway/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 models/pom.xml create mode 100644 models/system/pom.xml create mode 100644 models/system/src/main/java/com/bwie/system/SystemApp.java create mode 100644 models/system/src/main/java/com/bwie/system/controller/HotelController.java create mode 100644 models/system/src/main/java/com/bwie/system/controller/MenuController.java create mode 100644 models/system/src/main/java/com/bwie/system/controller/UserController.java create mode 100644 models/system/src/main/java/com/bwie/system/mapper/HotelMapper.java create mode 100644 models/system/src/main/java/com/bwie/system/mapper/MenuMapper.java create mode 100644 models/system/src/main/java/com/bwie/system/mapper/UserMapper.java create mode 100644 models/system/src/main/java/com/bwie/system/service/HotelService.java create mode 100644 models/system/src/main/java/com/bwie/system/service/MenuService.java create mode 100644 models/system/src/main/java/com/bwie/system/service/UserService.java create mode 100644 models/system/src/main/java/com/bwie/system/service/impl/HotelServiceImpl.java create mode 100644 models/system/src/main/java/com/bwie/system/service/impl/MenuServiceImpl.java create mode 100644 models/system/src/main/java/com/bwie/system/service/impl/UserServiceImpl.java create mode 100644 models/system/src/main/java/com/bwie/system/util/QiNiuUploadUtil.java create mode 100644 models/system/src/main/resources/bootstrap.yml create mode 100644 models/system/src/main/resources/mapper/HotelMapper.xml create mode 100644 models/system/src/main/resources/mapper/MenuMapper.xml create mode 100644 models/system/src/main/resources/mapper/UserMapper.xml create mode 100644 models/system/target/classes/bootstrap.yml create mode 100644 models/system/target/classes/com/bwie/system/SystemApp.class create mode 100644 models/system/target/classes/com/bwie/system/controller/HotelController.class create mode 100644 models/system/target/classes/com/bwie/system/controller/MenuController.class create mode 100644 models/system/target/classes/com/bwie/system/controller/UserController.class create mode 100644 models/system/target/classes/com/bwie/system/mapper/HotelMapper.class create mode 100644 models/system/target/classes/com/bwie/system/mapper/MenuMapper.class create mode 100644 models/system/target/classes/com/bwie/system/mapper/UserMapper.class create mode 100644 models/system/target/classes/com/bwie/system/service/HotelService.class create mode 100644 models/system/target/classes/com/bwie/system/service/MenuService.class create mode 100644 models/system/target/classes/com/bwie/system/service/UserService.class create mode 100644 models/system/target/classes/com/bwie/system/service/impl/HotelServiceImpl.class create mode 100644 models/system/target/classes/com/bwie/system/service/impl/MenuServiceImpl.class create mode 100644 models/system/target/classes/com/bwie/system/service/impl/UserServiceImpl.class create mode 100644 models/system/target/classes/com/bwie/system/util/QiNiuUploadUtil.class create mode 100644 models/system/target/classes/mapper/HotelMapper.xml create mode 100644 models/system/target/classes/mapper/MenuMapper.xml create mode 100644 models/system/target/classes/mapper/UserMapper.xml create mode 100644 models/system/target/maven-archiver/pom.properties create mode 100644 models/system/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 models/system/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 models/system/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 models/system/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 models/system/target/system-1.0-SNAPSHOT.jar 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..f4784a0 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..b4f9a48 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ 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..5a2f139 --- /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..88aa9a7 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..e96534f --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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/Finish.iml b/Finish.iml new file mode 100644 index 0000000..78b2cc5 --- /dev/null +++ b/Finish.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/auth/pom.xml b/auth/pom.xml new file mode 100644 index 0000000..eda9963 --- /dev/null +++ b/auth/pom.xml @@ -0,0 +1,33 @@ + + + + Finish + com.wzx + 1.0-SNAPSHOT + + 4.0.0 + + auth + + + + com.wzx + common + 1.0-SNAPSHOT + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + + diff --git a/auth/src/main/java/com/bwie/auth/AuthApp.java b/auth/src/main/java/com/bwie/auth/AuthApp.java new file mode 100644 index 0000000..061e21c --- /dev/null +++ b/auth/src/main/java/com/bwie/auth/AuthApp.java @@ -0,0 +1,14 @@ +package com.bwie.auth; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.scheduling.annotation.EnableScheduling; + +@SpringBootApplication +@EnableFeignClients +public class AuthApp { + public static void main(String[] args) { + SpringApplication.run(AuthApp.class); + } +} diff --git a/auth/src/main/java/com/bwie/auth/controller/AuthController.java b/auth/src/main/java/com/bwie/auth/controller/AuthController.java new file mode 100644 index 0000000..3d83914 --- /dev/null +++ b/auth/src/main/java/com/bwie/auth/controller/AuthController.java @@ -0,0 +1,49 @@ +package com.bwie.auth.controller; + +import com.alibaba.fastjson.JSONObject; +import com.bwie.auth.service.AuthService; +import com.bwie.common.domain.User; +import com.bwie.common.domain.request.RequestUser; +import com.bwie.common.domain.response.ResponseUser; +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 AuthService authService; + + @Autowired + private HttpServletRequest request; + + /** + * 登录认证 + * @param requestUser + * @return + */ + @PostMapping("/login") + public Result login(@RequestBody RequestUser requestUser){ + log.info("功能名称:登录认证,请求URI:{},请求方式:{},请求参数:{}",request.getRequestURI(), + request.getMethod(), JSONObject.toJSONString(requestUser)); + Result result=authService.login(requestUser); + log.info("功能名称:登录认证,请求URI:{},请求方式:{},返回结果:{}",request.getRequestURI(), + request.getMethod(), JSONObject.toJSONString(result)); + return result; + } + + @GetMapping("/user/info") + public Result userInfo(){ + Result result=authService.userInfo(); + return result; + } + +} diff --git a/auth/src/main/java/com/bwie/auth/feign/AuthFeign.java b/auth/src/main/java/com/bwie/auth/feign/AuthFeign.java new file mode 100644 index 0000000..1c43136 --- /dev/null +++ b/auth/src/main/java/com/bwie/auth/feign/AuthFeign.java @@ -0,0 +1,19 @@ +package com.bwie.auth.feign; + +import com.bwie.common.domain.User; +import com.bwie.common.domain.request.RequestUser; +import com.bwie.common.result.Result; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@FeignClient("system") +public interface AuthFeign { + /** + * 根据账号密码查询用户信息 + * @param requestUser + * @return + */ + @PostMapping("/user/findByRequestUser") + public Result findByRequestUser(@RequestBody RequestUser requestUser); +} diff --git a/auth/src/main/java/com/bwie/auth/service/AuthService.java b/auth/src/main/java/com/bwie/auth/service/AuthService.java new file mode 100644 index 0000000..d151036 --- /dev/null +++ b/auth/src/main/java/com/bwie/auth/service/AuthService.java @@ -0,0 +1,13 @@ +package com.bwie.auth.service; + +import com.bwie.common.domain.User; +import com.bwie.common.domain.request.RequestUser; +import com.bwie.common.domain.response.ResponseUser; +import com.bwie.common.result.Result; + +public interface AuthService { + Result login(RequestUser requestUser); + + Result userInfo(); + +} diff --git a/auth/src/main/java/com/bwie/auth/service/Impl/AuthServiceImpl.java b/auth/src/main/java/com/bwie/auth/service/Impl/AuthServiceImpl.java new file mode 100644 index 0000000..bec4a4c --- /dev/null +++ b/auth/src/main/java/com/bwie/auth/service/Impl/AuthServiceImpl.java @@ -0,0 +1,83 @@ +package com.bwie.auth.service.Impl; + +import com.alibaba.fastjson.JSONObject; + +import com.bwie.auth.feign.AuthFeign; +import com.bwie.auth.service.AuthService; +import com.bwie.common.constants.JwtConstants; +import com.bwie.common.constants.TokenConstants; +import com.bwie.common.domain.User; +import com.bwie.common.domain.request.RequestUser; +import com.bwie.common.domain.response.ResponseUser; +import com.bwie.common.result.Result; +import com.bwie.common.utils.JwtUtils; +import com.bwie.common.utils.StringUtils; +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 AuthFeign authFeign; + + @Autowired + private RedisTemplate redisTemplate; + + @Autowired + private HttpServletRequest request; + + @Override + public Result login(RequestUser requestUser) { + //判断账号密码是否为空 + if (StringUtils.isAnyEmpty(requestUser.getUsername(),requestUser.getPassword())){ + return Result.error("账号密码不能为空"); + } + //判断账号是否注册 + Result byRequestUser = authFeign.findByRequestUser(requestUser); + User data = byRequestUser.getData(); + if (null==data){ + return Result.error("账号未注册"); + } + //判断密码是否正确 + String password = data.getPassword(); + if (!password.equals(requestUser.getPassword())){ + return Result.error("密码错误"); + } + //生成userKey + String userKey = UUID.randomUUID().toString().replaceAll("-", ""); + //生成token + HashMap map = new HashMap<>(); + map.put(JwtConstants.DETAILS_USER_ID,data.getUserId()); + map.put(JwtConstants.USER_KEY,userKey); + String token = JwtUtils.createToken(map); + //存入redis + redisTemplate.opsForValue().set(TokenConstants.LOGIN_TOKEN_KEY+userKey, JSONObject.toJSONString(data),15, TimeUnit.MINUTES); + //赋值 + ResponseUser responseUser = new ResponseUser(); + responseUser.setToken(token); + responseUser.setExprieTime("15MIN"); + + return Result.success(responseUser); + } + + @Override + public Result userInfo() { + //获取token + String token = request.getHeader(TokenConstants.TOKEN); + //获取userKey + String userKey = JwtUtils.getUserKey(token); + //获取用户信息 + String s = redisTemplate.opsForValue().get(TokenConstants.LOGIN_TOKEN_KEY + userKey); + //反序列化 + User user= JSONObject.parseObject(s, User.class); + + return Result.success(user); + } +} diff --git a/auth/src/main/resources/bootstrap.yml b/auth/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..5e6b042 --- /dev/null +++ b/auth/src/main/resources/bootstrap.yml @@ -0,0 +1,32 @@ +# 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: auth + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 124.221.214.183:8848 + namespace: lc + config: + # 配置中心地址 + server-addr: 124.221.214.183:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + namespace: lc + diff --git a/auth/target/auth-1.0-SNAPSHOT.jar b/auth/target/auth-1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..9a6120eebc83c2f28c05118e42d2e426717e876e GIT binary patch literal 7957 zcma)h1yoes_x6wi4g%5x5+dCtA~19f3|*4aA>Ak;AuS*X2m%7qF*MStv~-FvbST{* z;D3016<_`7_noz7&7E22dG5Yv@3Zed`%#iZK_vhHFfahuij6dj6VPGq001Bc@j?6x zfJ&-~vdSt*u|q`_WThlk)!3j?yU?C)c{x_L0c<%|rrw^uG8K+t?wLhLHVBkO7CPXP zSFW-JWs!TYx&>iT!RTOw_VuW8jB+FAIxxNOksa8FbdF-P$w1Mqc$OD;dRRMT-$UOs z%d#MWvdE(EMaNiWMrmnB`%(v4r`Z<2G8QQg^1)yyW+w(HAuPp0SPJ;ZQiO3o1}5U_ zhoyg>hKiVGY-hv%=NT777c-39EKUD1?b^@N3|*Wp{xX;Jx4Fi4w$6@r*4Czue}P>r z{trw3xrLdjrMc~25JbNroJ<{EEsg*7AY^~U$lBOj|K(;l2;h$uw=r}z{hMXPzfVRy z8k^fg_rKhM{Li2tEB-BRu@P~5z%-X1hXeo&BLe`~2&9pnowJj(qoF;UhmCcnN;d?B zlVFPY1jn}~1~uE2bLq-j7W0{JlnC$m0YQw1(j97uFmhyZiuTYH{GGhDL!W3~(E{^DNO)rZ=OR z=A)uFfC|R!O0^g*#r908lqsesTiy`2EBGB$C%~5Z86Np{E-k`A8Z)UO&tetd2$U|< zH4m-aa^?jJ|3@w6Bn6tcl+$>V3hR3bsLvOZa_JG6bVB`7+9j zFozgCy6ni4th1?A1u&(zorw4}2SE_8(c_w%j`mrSl2W|A)#)uJ!$~(wW~$&L?PK%H zzF@(Dv$O`m7wSXu)DGk!zUnM#MgwA!`2j4C2q#@TQ!3gj)kShR=LUgUEk!#YTB?SR zSN8RND!y{E;e!mwpH3UJX;PldTWdU}@wetPX$WmahxR3Bf9f4tS+@nZnmkOFS!xFrrix@54a9l`rxxGm zb*1Yicti(^WNdtg6@W_FBu%|h^$ZkMe`oB_Wusnt_e)=-0U%{wIhfZO*_o!`b$hWF zHTbGNM)EG->XROF@y&$6u4FFfKdu~uESnYIvN@`GnB?QFSLY>VkY(zd z*63BFhF2$n?QKhS+DAP-p(^^IFCp1&cfhuOZ&h>T@0jvnm-8Clm50gBi>ZyQ81H<2 zF`zuymPER~K-_Np+MKDVQ08hi*UbhMKz-T( zz19}S6zHF!j-jZDC7Hj8GkH5%Nq;;E!&PT6W0rY!$?Qbqh&!oVjU)nU!|ee(-Lv3d zetXD8-jH9RnwgXXIo>V54XchgQP5Gh+{=0jt$Z%YHsT{1Lg--;PrqJDl$GLG7WI%$ z9d<0Y?!tfg)gdjzbp#_4uYYI<4tn9E8z8XYP#V5=vdvdq1brwn{=kpg74vmI^2Zj6 z3GB7`$9bN+LxI2*9KT*gYftH~t-O-sJz*WTu>L&bE0Z{GVUU0#HN_>b)QEgA|nbX3VD3CnzD&&o=9*pBg!ZcB!L%{8pVdF$7y($bn&5Bsh75` z)P6PgH8AveXg0AJ$09{Jv&ZjrlC&wX?0k5>e`x0exD)gMPc7|k00_Gx$Jj!bK+f-F z3uJfoZMytJpi66@sXGmDWMHHEVSqBFn1nbAParHKc{apU-0|5ik^5k!VEb+8>X!0g zJA}#R_BxMvzO8^ITj|YeD*k(e=(IQai#uEfGq?%b3)vyaPLVyZYw_3ed2H*tepYT?m48|s11XU>i*|%!7*L(Z z)I7j&d+za8;gT{*-n6Z`bPc~MKcnc-$tRx|qr!HC4fSQ)Gx_@h@MkcYbfHAdM

*Uqf;Wx_M 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 literal 0 HcmV?d00001 diff --git a/auth/target/classes/com/bwie/auth/service/AuthService.class b/auth/target/classes/com/bwie/auth/service/AuthService.class new file mode 100644 index 0000000000000000000000000000000000000000..72aecc92e8762b1e7acd5446f8fda2548e6ececb GIT binary patch literal 543 zcmb_Z%TB{E5F7{6(3VGjfm^xY4=5nGAR$qKi1+|ET~b$x4USz-{1^v5fR93K5)>g- zs25HB1-<90|Pr=kl`+Z~Ykk+m Hwv(f8x-h1< literal 0 HcmV?d00001 diff --git a/auth/target/classes/com/bwie/auth/service/Impl/AuthServiceImpl.class b/auth/target/classes/com/bwie/auth/service/Impl/AuthServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..f70554e17654d908a852a2c6ba8e2e276bbbcb66 GIT binary patch literal 4902 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 literal 0 HcmV?d00001 diff --git a/auth/target/maven-archiver/pom.properties b/auth/target/maven-archiver/pom.properties new file mode 100644 index 0000000..f6c78d3 --- /dev/null +++ b/auth/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=auth +groupId=com.wzx +version=1.0-SNAPSHOT diff --git a/auth/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/auth/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..483722a --- /dev/null +++ b/auth/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,5 @@ +com\bwie\auth\feign\AuthFeign.class +com\bwie\auth\service\Impl\AuthServiceImpl.class +com\bwie\auth\controller\AuthController.class +com\bwie\auth\AuthApp.class +com\bwie\auth\service\AuthService.class diff --git a/auth/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/auth/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..b77e70c --- /dev/null +++ b/auth/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,5 @@ +D:\Project\Finish\auth\src\main\java\com\bwie\auth\service\AuthService.java +D:\Project\Finish\auth\src\main\java\com\bwie\auth\service\Impl\AuthServiceImpl.java +D:\Project\Finish\auth\src\main\java\com\bwie\auth\feign\AuthFeign.java +D:\Project\Finish\auth\src\main\java\com\bwie\auth\AuthApp.java +D:\Project\Finish\auth\src\main\java\com\bwie\auth\controller\AuthController.java diff --git a/auth/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/auth/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/auth/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/auth/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/common/pom.xml b/common/pom.xml new file mode 100644 index 0000000..a2904f9 --- /dev/null +++ b/common/pom.xml @@ -0,0 +1,119 @@ + + + + Finish + com.wzx + 1.0-SNAPSHOT + + 4.0.0 + + 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 + + + + + org.apache.httpcomponents + httpclient + 4.2.1 + + + org.apache.httpcomponents + httpcore + 4.2.1 + + + commons-lang + commons-lang + 2.6 + + + org.eclipse.jetty + jetty-util + 9.3.7.v20160115 + + + + + com.github.tobato + fastdfs-client + 1.26.5 + + + + diff --git a/common/src/main/java/com/bwie/common/constants/Constants.java b/common/src/main/java/com/bwie/common/constants/Constants.java new file mode 100644 index 0000000..2fdc9fe --- /dev/null +++ b/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/common/src/main/java/com/bwie/common/constants/JwtConstants.java b/common/src/main/java/com/bwie/common/constants/JwtConstants.java new file mode 100644 index 0000000..03692c1 --- /dev/null +++ b/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/common/src/main/java/com/bwie/common/constants/RabbitMQConstants.java b/common/src/main/java/com/bwie/common/constants/RabbitMQConstants.java new file mode 100644 index 0000000..ad4b095 --- /dev/null +++ b/common/src/main/java/com/bwie/common/constants/RabbitMQConstants.java @@ -0,0 +1,9 @@ +package com.bwie.common.constants; + +/** + * @author WangTangDong + * @date 2023/7/28 20:04 + */ +public class RabbitMQConstants { + public static final String SEND_CODE="send_code"; +} diff --git a/common/src/main/java/com/bwie/common/constants/TokenConstants.java b/common/src/main/java/com/bwie/common/constants/TokenConstants.java new file mode 100644 index 0000000..1871fb7 --- /dev/null +++ b/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/common/src/main/java/com/bwie/common/domain/Hotel.java b/common/src/main/java/com/bwie/common/domain/Hotel.java new file mode 100644 index 0000000..82d7b69 --- /dev/null +++ b/common/src/main/java/com/bwie/common/domain/Hotel.java @@ -0,0 +1,15 @@ +package com.bwie.common.domain; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class Hotel { + private Integer id; + private String name; + private BigDecimal price; + private String pic; + private Integer number; + private Integer status; +} diff --git a/common/src/main/java/com/bwie/common/domain/Menu.java b/common/src/main/java/com/bwie/common/domain/Menu.java new file mode 100644 index 0000000..49cd815 --- /dev/null +++ b/common/src/main/java/com/bwie/common/domain/Menu.java @@ -0,0 +1,13 @@ +package com.bwie.common.domain; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class Menu { + private Integer menuId; + private String menuName; + private BigDecimal menuPrice; + private String pic; +} diff --git a/common/src/main/java/com/bwie/common/domain/MyMenu.java b/common/src/main/java/com/bwie/common/domain/MyMenu.java new file mode 100644 index 0000000..c446158 --- /dev/null +++ b/common/src/main/java/com/bwie/common/domain/MyMenu.java @@ -0,0 +1,13 @@ +package com.bwie.common.domain; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class MyMenu { + private Integer myId; + public Integer userId; + public Integer menuId; + public BigDecimal pay; +} diff --git a/common/src/main/java/com/bwie/common/domain/Order.java b/common/src/main/java/com/bwie/common/domain/Order.java new file mode 100644 index 0000000..6e509bc --- /dev/null +++ b/common/src/main/java/com/bwie/common/domain/Order.java @@ -0,0 +1,14 @@ +package com.bwie.common.domain; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class Order { + private Integer orderId; + private String orderCard; + private String name; + private BigDecimal price; + private Integer userId; +} diff --git a/common/src/main/java/com/bwie/common/domain/Stay.java b/common/src/main/java/com/bwie/common/domain/Stay.java new file mode 100644 index 0000000..27b65c9 --- /dev/null +++ b/common/src/main/java/com/bwie/common/domain/Stay.java @@ -0,0 +1,18 @@ +package com.bwie.common.domain; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class Stay { + private Integer sayId; + private String username; + private String phone; + private String card; + private String name; + private BigDecimal price; + private Integer dayNumber; + private BigDecimal totalPrice; + +} diff --git a/common/src/main/java/com/bwie/common/domain/User.java b/common/src/main/java/com/bwie/common/domain/User.java new file mode 100644 index 0000000..bbf00ba --- /dev/null +++ b/common/src/main/java/com/bwie/common/domain/User.java @@ -0,0 +1,16 @@ +package com.bwie.common.domain; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class User { + private Integer userId; + private String username; + private String password; + private String phone; + private BigDecimal balance; + private Integer roleId; + private String roleName; +} diff --git a/common/src/main/java/com/bwie/common/domain/request/QueryHotel.java b/common/src/main/java/com/bwie/common/domain/request/QueryHotel.java new file mode 100644 index 0000000..58baf41 --- /dev/null +++ b/common/src/main/java/com/bwie/common/domain/request/QueryHotel.java @@ -0,0 +1,16 @@ +package com.bwie.common.domain.request; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class QueryHotel { + //分页 + private Integer pageNum=1; + private Integer pageSize=2; + //条件查询 + private BigDecimal priceA; + private BigDecimal priceB; + private Integer status; +} diff --git a/common/src/main/java/com/bwie/common/domain/request/RequestUser.java b/common/src/main/java/com/bwie/common/domain/request/RequestUser.java new file mode 100644 index 0000000..f05042f --- /dev/null +++ b/common/src/main/java/com/bwie/common/domain/request/RequestUser.java @@ -0,0 +1,9 @@ +package com.bwie.common.domain.request; + +import lombok.Data; + +@Data +public class RequestUser { + private String username; + private String password; +} diff --git a/common/src/main/java/com/bwie/common/domain/response/ResponseHotel.java b/common/src/main/java/com/bwie/common/domain/response/ResponseHotel.java new file mode 100644 index 0000000..fbd952c --- /dev/null +++ b/common/src/main/java/com/bwie/common/domain/response/ResponseHotel.java @@ -0,0 +1,15 @@ +package com.bwie.common.domain.response; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class ResponseHotel { + private Integer id; + private String name; + private BigDecimal price; + private String pic; + private Integer number; + private Integer status; +} diff --git a/common/src/main/java/com/bwie/common/domain/response/ResponseUser.java b/common/src/main/java/com/bwie/common/domain/response/ResponseUser.java new file mode 100644 index 0000000..51b037d --- /dev/null +++ b/common/src/main/java/com/bwie/common/domain/response/ResponseUser.java @@ -0,0 +1,9 @@ +package com.bwie.common.domain.response; + +import lombok.Data; + +@Data +public class ResponseUser { + private String token; + private String exprieTime; +} diff --git a/common/src/main/java/com/bwie/common/result/PageResult.java b/common/src/main/java/com/bwie/common/result/PageResult.java new file mode 100644 index 0000000..85ecdda --- /dev/null +++ b/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/common/src/main/java/com/bwie/common/result/Result.java b/common/src/main/java/com/bwie/common/result/Result.java new file mode 100644 index 0000000..30b1e73 --- /dev/null +++ b/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/common/src/main/java/com/bwie/common/utils/FastUtil.java b/common/src/main/java/com/bwie/common/utils/FastUtil.java new file mode 100644 index 0000000..9fe9f9b --- /dev/null +++ b/common/src/main/java/com/bwie/common/utils/FastUtil.java @@ -0,0 +1,56 @@ +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.stereotype.Component; +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/common/src/main/java/com/bwie/common/utils/HttpUtils.java b/common/src/main/java/com/bwie/common/utils/HttpUtils.java new file mode 100644 index 0000000..e15968b --- /dev/null +++ b/common/src/main/java/com/bwie/common/utils/HttpUtils.java @@ -0,0 +1,319 @@ +package com.bwie.common.utils; + +import com.alibaba.fastjson.JSON; +import org.apache.commons.lang.StringUtils; +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 org.apache.http.util.EntityUtils; + +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 List doGet(String host, String path, String method, + Map headers, + Map querys + ,Class clazz) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpGet request = new HttpGet(buildUrl(host, path, querys)); + if(headers!=null){ + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + } + HttpResponse execute = httpClient.execute(request); + String s = EntityUtils.toString(execute.getEntity(),"UTF-8"); + List ts = JSON.parseArray(s, clazz); + return ts; + } + + /** + * 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); + } + } +} \ No newline at end of file diff --git a/common/src/main/java/com/bwie/common/utils/JwtUtils.java b/common/src/main/java/com/bwie/common/utils/JwtUtils.java new file mode 100644 index 0000000..f560aa9 --- /dev/null +++ b/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/common/src/main/java/com/bwie/common/utils/MsgUtil.java b/common/src/main/java/com/bwie/common/utils/MsgUtil.java new file mode 100644 index 0000000..e672bc1 --- /dev/null +++ b/common/src/main/java/com/bwie/common/utils/MsgUtil.java @@ -0,0 +1,58 @@ +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 + * @version 1.0.0 + * @ClassName MsgUtil.java + * @Description TODO + * @createTime 2022年05月26日 15:49:00 + */ +public class MsgUtil { + + + public static void sendMsg(String phone,String code){ + String host = "https://gyytz.market.alicloudapi.com"; + String path = "/sms/smsSend"; + String method = "POST"; + String appcode = "d742f8e74e03432f92eec7267b919ee"; + 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+",**minute**:5"); + +//smsSignId(短信前缀)和templateId(短信模板),可登录国阳云控制台自助申请。参考文档:http://help.guoyangyun.com/Problem/Qm.html + + querys.put("smsSignId", "2e65b1bb3d054466b82f0c9d125465e2"); + querys.put("templateId", "908e94ccf08b4476ba6c876d13f084ad"); + Map bodys = new HashMap(); + + + try { + /** + * 重要提示如下: + * HttpUtils请从\r\n\t \t* https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java\r\n\t \t* 下载 + * + * 相应的依赖请参照 + * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml + */ + HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys); + System.out.println(response.toString()); + //获取response的body + System.out.println(EntityUtils.toString(response.getEntity())); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/common/src/main/java/com/bwie/common/utils/StringUtils.java b/common/src/main/java/com/bwie/common/utils/StringUtils.java new file mode 100644 index 0000000..93c47fd --- /dev/null +++ b/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/common/src/main/java/com/bwie/common/utils/TelSmsUtils.java b/common/src/main/java/com/bwie/common/utils/TelSmsUtils.java new file mode 100644 index 0000000..49e8c81 --- /dev/null +++ b/common/src/main/java/com/bwie/common/utils/TelSmsUtils.java @@ -0,0 +1,87 @@ +package com.bwie.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/common/target/classes/com/bwie/common/constants/Constants.class b/common/target/classes/com/bwie/common/constants/Constants.class new file mode 100644 index 0000000000000000000000000000000000000000..a46a3e2afe617636452320b9d1adafe3e968c59d GIT binary patch literal 651 zcma)4%TC)+5Iqx;*a-&mD38!m%2Ut<{(uBF5uiwcNHJtvIp#JPIkx0Dugj9(w z65oJW5FucV_zuDsutv-c2~Aa1Vl#8*%$;+`$M^pE>K4E%7UKwEKtWhT1W`ibz&tc{ z$8>9Ysd^x+fDp~ut{toq29}m9aj1wXh-(;xMo9iSUT_0Z6FxyXG@Yg>eJ6}96_$(t zoXEy7j1dJ14N0U3bCy@vt4Frb8Pq+OliLVPH)!bj9%5BvH=kcO3_|)pk{>jTO1;Q> zxm+p}2D=mAwv0_es&C2&eA}&M2}8XLDsp8NlLYPYDnzNj) z^Krv#`j*(RrS@=d>Bfrm7Bg&Th<|1n8EGh^48|}H!UW?GR~czchyU2ef8rjyg(%0* z+|@Y~=g8Mf(0ONcnxkw33chgEUJvkJmu}|FHB?T;^HuQp6h?6}7(S0)81nU?O+sZ$Dsi3ojtCpv@hDQY0+)MD z9?Fz|g88^BBZivwzb(-Jigu8Mt~isa=3I6~`{_2Y4UMh<G^ph&+0xiAU=8a;3>#!~*!%{?(Rus; literal 0 HcmV?d00001 diff --git a/common/target/classes/com/bwie/common/constants/RabbitMQConstants.class b/common/target/classes/com/bwie/common/constants/RabbitMQConstants.class new file mode 100644 index 0000000000000000000000000000000000000000..dd3e07bcd5e16bb1d8d12d7abf5c0196aea13c15 GIT binary patch literal 408 zcmb7AyH3ME5S&e%I57zc<{?qi@eud}cr;F^Od>FH8=aj~xX3}XW@dNxq1pZXdj9}$jeQ3#v~5@ebkHS?*Wy`tsn9EL9Bwf*a(CNF!0GI{y(Z^Q20`dGHU9?7<21 zsz~Imsuv&px#FU>jU(9nEr4){J{;yP&RQ67MD_m|w^{L;9O#_BfnJ-I5o28juNX7d QBiw);xXgrI#uoOz0Ur=yEdT%j literal 0 HcmV?d00001 diff --git a/common/target/classes/com/bwie/common/constants/TokenConstants.class b/common/target/classes/com/bwie/common/constants/TokenConstants.class new file mode 100644 index 0000000000000000000000000000000000000000..725bfe5e504c277dd436a6504813efe50251c647 GIT binary patch literal 526 zcma)&%}&Bl5QWbG1;i=}{^4)jAq%?~H8G@U1zQ6R(G@A!;Kg#AKv7@Im5B=wO<3LF`XG~0i0Wo3$ljDB-%G|p_pG6{4^SeO=DjyHA{ zZh}wjlb|;AYC~^cv~A-`pXhidWb4+sVYY3nrkm}WeoM&Jf17LuLm_+RG*;N!^Ls+J zgRq6s5kZOGq_NIvBoY!8|IQ6Pg>=pFpyLj0r{l4btNUHYYdJ#^@_z#K9l%!ez0%DgzkS>|Qre(HJV)fryn3QvY4 l#|?JSA_kPwE9fP%EN~3V;4e2hs!^_B3)@VD9gZ>Vegmp>Z-@W@ literal 0 HcmV?d00001 diff --git a/common/target/classes/com/bwie/common/domain/Hotel.class b/common/target/classes/com/bwie/common/domain/Hotel.class new file mode 100644 index 0000000000000000000000000000000000000000..34402e4be2c01d863e433c2853a753cef5914741 GIT binary patch literal 4005 zcmb7H-)|gO75?t-{Mz-b<2bdOX@1Zj8}Qmr7YJZFj!PRiX$*Fn)**$qK*#IBJMr#} zyE{$^@WulYFThhP#0x@dULpY!4N`>=ycCH?o{)IriGL!ceD~g&^>{l(M%tNs?mgc* zbI&>7Ju~~a|9tQ#04w-m9Tik<7%og$0#mnw+d;b*#5?Vmwr+);RKU6z#ZmgKKy|Kl zvjzt>8+8{Ga0O0xl74&Z?I>(h=qGV|JLv~e+`gKmVNakEZ3~=OKk&I0r{PXGSe9-k zT^z%dfDs4%P++7SP0dsE*7)A zu(}s@VH%|S!#bBf<>GNXA>ed^`0`u(0k=IfSJ;bA z!*c6234Y2&6X&>_oiJTvY%_DM0yK|K=JYcz=A>IIls?sy=3OjE;~I^xsVzyD=UqIV zuWpWZ^;s96!{-HTiBejvY^v#DCevGt#vs@li)^ zcG<;6tk6X_7rou)1m6g@dJJZIJ?R9!o53KG^K8*byAij4 zcKu--US_R_y4JI0akg&q%xr{dH`%@(3|Oc%9MGvv8(p?TT*`JTjT|DfYI&LC@nT7s zC1FvAq>&yKX|$}VA|R5(M<=5zx1FTjaKNp|Fq`rqI%-9U6KYYP3jtRv@~Kwp6Eaff z)0(zal&oiVdZHBBDV@-oZ02Z{3L{fUxxpAZyBon?RuJ?0D{C8<8PXc#9)!dF9=lIf z?bmMRo3oqwPRyom99A=XjM3!5XP9ZC^DI!`O!fzz@Jb{}P*+XqY1xcevr9>m4%0!f zr;9f{W+AC#4{zBRNXoN_&4a!b#kZ5)u&w>-Q*b5dq{-lpz`I3WWI*loY7lSt!eMhg zNp|=5mLJOXLxwl*?1d%p*9#uVp(e{d1d|W0>jw)eF zh&pOr5lc!sxhtZ@!mq_~I9Tlk!(lkI@jZcapGZhqoHoACQ}u8t3#^lZC)klH>@ybc ze5FvT$k&1z+4$ASuC7LQb2Xk(<8hGWv=g|*)iy`L(VYJS#P1Yrm3OHIY`nm`s{y!- zE1a>uILG^8-^coU0 znSmPKWDYX!G5%_yt>~WguFlJd=MV5QUST3<@NaCgPgU5Z{(&1@t70C1$JZ$tcoFa8 zCMA<>{S98FWTA(j;Tx3r{=!f2O-c@aj$OP)sfKqD;&n=O+^5$!C{5sxcn;s9*K z)VC=$@GqRgcPLHbP40IcGq&>plQx`>Fl(d2pCdlPNiEj?FEKy6FOwXG{N~OM+A|DS zwgXeLLT0Jhe07#|H!w$8GMO8hrK}rlD!TCtmP>3f71?NNboAcT@|kDz3o|ftK#nmEFJ&;R z06RdAuV!HTF!%spqR32~PnaB7mFqG?{$14p5?}nOcn$e)wp>kf=KI#@ZF`lulphmk zC82n=d0pVO#H+N^j#1egN;kNpQzd literal 0 HcmV?d00001 diff --git a/common/target/classes/com/bwie/common/domain/Menu.class b/common/target/classes/com/bwie/common/domain/Menu.class new file mode 100644 index 0000000000000000000000000000000000000000..d07e083e93193b3aefd873ae26bb7df33b181c13 GIT binary patch literal 3201 zcma)8TW=dh6#mBEo1IOQrcGMYJ4wmKNzJuTyM@v;rGX?3O-Z5U(v7o?x3PDFy(y~1 zGvWz}ClC^^R6>1#3X0SR1TRJ6H&MzryJLHkE>$Ia=FH4@&YbU@Gsph>-}}D88xG#t+_&Aa|4H5;5}R|R&>bJfa%#vW-nyWv&yyr^K~8SLXl zRmY$CbknH|42~skin&(CuSoC#8wYWScdfahBqA9Mj*TbaZ4NScM{GPRO&hMX+mZ%G zY#haN0zJw=%xw1-6N;OJkJ%W-p{Bc|| zSV~nui=FD5^L%$wF-VJ%o)begQO&~4IgkJ5{Cv!xi6!&1>!D3y|ex?p=oB-9|3nGg`c)+$!DC7=gk z&292($!w(kHtcA(v+V60#-8oy9;=NGKsnXdMW`Jsg0S=%p7=15dzV6|x<2o0s0ize z7iZ^Z=YnptHgodL9Fq^8 zfj<)jVJmDp8*v6&eFm=P@gY7k@v$t*PXtD~y}|Qu2J3DqHXGOJIj0&1&07NBCX=gx zvC;F6zgl-&BXdEpzPV9(yc!cbTNE$d+Hh0gR}=VlV@PZ%6Vpz;zT|~&#R7>QlcdMu zoSqVshovM#*OsHu$pu4qN{q9zW_{mnPS>4Q%Waupi#hsO9Mb5SxGr$;$xx;&Z8lrpm8Ml<_qG_z51?ga}J2FK%El{gE|`owP#KS!`vIm%k!wkC0xm0Dg%M|6_?aKL7Wj4 zImx-qSq9peDEH}lSD1ljTVNgpUdJ10CVQXOq|9!|WV|?yH`7e+ zd|H#TP&y`eMfT66dpY>DCS}caOvVfTh{j%u&pG!nCU=VyKS0;+6#skhj`Ngs%)`YjB?EP$-lk-tiPLz8l7+AN$mb~K@C_q4 zPbrTD`f(h6ru7eYn6MsV$V7%8OFYEhSj_#8*sjKDW=NBNnpEkWpu@7jb(syxGx?}v zo^gHa9iBSbNuH{{XQG_*FABH#WW*OVVbah>f90fhDoW=5{z{FhwEBy;VNTt{v1@XF zxU9*8f~HO^nc(mTxWJJOL5!NGaXeKNn7;p&jh>G2HMs5s3 zZv)yGZR?hT83|YyxqVlG&8^@rKIMQa fp-$v3N5%0zBLbGEz!iS4VTG$ar7DYg4Tb*z@!eJs literal 0 HcmV?d00001 diff --git a/common/target/classes/com/bwie/common/domain/MyMenu.class b/common/target/classes/com/bwie/common/domain/MyMenu.class new file mode 100644 index 0000000000000000000000000000000000000000..602ef458755d35944f605bd9ce28718eedf6607d GIT binary patch literal 3117 zcma)8+iw(A82_DiW@mOgrKQlq%2jA}dt<$#>{7&*+iDjog(BdE>F&^7x;s;Mrq{T2@3pn$RD_~jtV!Q5yJ9K|UMblAd+k~rl^*0yv%YGGKqr|Et*h+b-6 zvhZ@Gl@%yerFPW97{=*N?3~PDZ}g_^S#)92!ZGBTMa^#4X1uBsRK7I8e!XhpHM}mc zr)e)cGoD+q{cClfAh+$?uHP1@#Pf|(NXY7`s;v>lOET}b>h4mJZB=3Q&DLG#;%alz zXm`kZfCOzRxQ%b6wQeru$ z#3=h$a$To2)3DoZr)^+SU}Refk}@;EyYJw$q3o?H18*3UR}G-?$;*|Jkhf#7@=6R= z-h*6wY2j_n=NsJRxeBiO*zXX(Q0T&&d`dH5;5eU_0^lvY%^k089OQGe^RF;|rZMiE zPITtAm*CvH)j5;s%-b=+xqqv3Pogs~(FEsRTb->$=MyL}IhnIuWua4J-K84k`-N}<8^JS77ya$KNf;u{|F5~Vc0#Xh`8DTDVJ$8q!-=D*lszxa(6ixo?6ZZK81C|4>%WlX#2#4V{mQqZI!tA!R*HdvWP3VL8- zZv!VYt4F3>Ar+WX9TPiFul>nQx}ahSgYQNYvn;&46PIz3QWwj58<&_+H;!^YM@hpe ze!V`Rq~kjF;4-CDQ2d`@KA}Q0U<$#4Lx?AI+}L+X#US(u5Mi{ literal 0 HcmV?d00001 diff --git a/common/target/classes/com/bwie/common/domain/Order.class b/common/target/classes/com/bwie/common/domain/Order.class new file mode 100644 index 0000000000000000000000000000000000000000..85fb0bd60031322a44a5c2bb7e912bd512f31783 GIT binary patch literal 3637 zcma)8ZF3V<6n<`-&2G{yErph*R75GY=?kg&1}RmcP$;&gQYZ?(uuaz{G}$eiEe;=@ zaU4g#=qDY2fPBFj9ktFdj)Q){8UFx3K!1ja&)vI8wqeE2WcQwX&vQ=hdCoca?jQf$ z`31lvyfj+Ssv}`SLsFpgnsvjLaHh0HOtGhM8QqbBm05ZF_( z*6b1G5E6w|f;A+mIoQB?*bG6To*^*<=Z&a3T z?}D{l=FYoj-GWtKvb>UfnSmIvy%|5O=8D_c~$!1SnWZ5OQ#GLIH-IWE)BjLX7 z(X&}IRO#AMH{qV8rB0a461k=n<|Y&VPcs$LAVrue4gukA?S!x%S?;c1l+9(zC-tsSv({C@svSwNLEgivj-o8=lE6UY6e>A4+%-F={Hj`?whF%M-4ysT zS_>giIXz=JD`mSnFzdQ&8|xF1`VI3QS=nNE;pVy>1HTf%*G`eH9c^=0Y?`$@1 zi#6uK9b>$^+1QLV=6w=l+}mv29&3CYC&-K>EYDG9D>*#!BlLK>dlVw1Te2zhDlkPm zO>ol5$w{1wbJ@OKm$F3aF4bf@-sR5ix|G#ccc~_)aVBn;ySM977H-{TPvCzhp3C0t zx|BUoci9)XKu*u;SvVlb}}GMGJ*xL)R^|XS7T*0?Oufg0gudqf3wxg7l0L z0gdHT1dZj>nUn;jLr^M{j)2DVZ3K`1a?&B<8 zBS+o%4YO={eq!N!%yF$1!}tdCloB|N&v1^CM$IQ!pp--zYj~ZK4i7fYQ!?;5rm;vV zg)ivq0;M!Id4yb~)P|q27fX~(T;kr2qf0mb#tt3E1N7)<;m;5c(5uAM|BJOIIm^T* z^n_nRMHSVs1yyV?X)@#8iSWKgl#t)lnOuQxWrBtf6;|ON1t|197{|F z1<~I*QDiw7og=rPk8R@lt8#rXpOA`7BGeeNNR%p@*8&ymBQP>DT1_>UPX?-FUB#+V zR^xd+P_bY_D?L#4$EWwa+GZG6D?Y{>c#}bB_z0INwJ;$c;0j}H#Q_xY7NrD_u{pd= zNh9Jg-l3F)&u)B|k{%@MPoy7mA)&(%f(e2U59y*YZ;=b#&}x7hCb4xXge4=e2C{iI z1nXPD4Sb9uG%+4AX;{VUXh@o_)~}qCBtu?`eKOg6vV6w)jPn`1gCjumZ4kXa`|1g> ag7RBNfuli>D}1i8cfdplRN&$|GXDZmlAM76 literal 0 HcmV?d00001 diff --git a/common/target/classes/com/bwie/common/domain/Stay.class b/common/target/classes/com/bwie/common/domain/Stay.class new file mode 100644 index 0000000000000000000000000000000000000000..4dc787d0e6709e224d73cc9fa1b730a1f8488289 GIT binary patch literal 4994 zcmb_g-E$jP75}ZQ)vlzKB|EW`ZQPKgO7KTgQ3C<5?WV+uTZ5gNI!$Q{v}<{>6w6vy zTBn$ADBlz)PcS_2NM@J}Uqi#tVVLqjnc+TJ=(r}xbmB-hwd(}WgX0G0>2M=o) z7@xS7g^8?zoP|6r4achfc4hs=x>upF?KdkM{8i~l<;JS6@W{V#PECx&-gco*KSAy31T-S8dW#~lSw;P0{U zUV+OxRwag_bS%t@(x7sIVHDlGg@-%3D~zP*9%4Ee$glKVV@QD;kb$yIbCZ->ka9Q}uwLW;<}3L0iL* z<5BL!Ef&gXyZ?)(e>X9%{SWL1#$Rc)4(6uXVR5scoKXso~aQ~kv`@&HyU2MyzKj1 zyF0V7f{W5JrrGCsb#KQ@fIl0jmBC%@McYXO~W&G2q5DE)(hKptHo-zzYBs&rLc?vhy|#guHJrXHUP)mv@GT9;?+s;E zsF>j-TW*RSRPH>LDW&9G4M(1u;mETx9C<{BBTvR~J zlfQ)avk>+;?_vfFtnzLt06vH(IMd{;<9)yLFJSzX#uR$a*+gfaX9>=Qe&<}GGf%e! z=b?V*e4;Z?!35{S{mxdRGmpyz=Og{jg+ynbs|n8c^*awHI`hjQ!TETkqY4paiDZzZsfH)%r?Uk!Cs~AeDv7diP)f=8 zE~T1$D4BBTpp;TPT}m~1I+^nDK`EsUyOe73Ofuz>gHlRKcPZ86S$sGtmiHZ$Qo2Kz zaxCQkNb(y$eo#tjG+oLQA>~JtS9$WFl+v@hln;cI{Crj$Prc0X5L?pX)Z`DLr*BRD z7UuV%58Rr19p=i}$=fK0Qwrl(&hqA@&;1^GJN*WRZo)cer*GqI2T^f!LMl$i)&-M! z1H(5_uys2V15G;yLDPIN{WjiE{@jYn|@8G|(8Owpys{nBf|CnPxvq&d zLa(vpWZY5vjsi7+zo3nPQPJ^d>{3cGeg23W4Bh~L*8d7GQcCl;?ho*BN;;m#OW327 zA-0B3P%`jsrsyXrnfMW=@hM7K{0>L(X-YXs9_{BS-Jv3Fz|=G*3^eTyAJChpL@@%r z1L$DV`&AJv6NB}T{n`j@><9Po35LkUyvwEMm28U~`9B}ELE__o;eONdFQH^}jJL|uZ7p}exU#3 kDE<+Arki=64GZ~m_&i5p{{pYCvR#2Wqv0F)CiBYv4|9Wf?f?J) literal 0 HcmV?d00001 diff --git a/common/target/classes/com/bwie/common/domain/User.class b/common/target/classes/com/bwie/common/domain/User.class new file mode 100644 index 0000000000000000000000000000000000000000..169e85221baaa4e160091763c09ba0d8076313b6 GIT binary patch literal 4562 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 Y^1F^zjv5&Y{FkxLS(4ICR8d3vUzgUuc>n+a literal 0 HcmV?d00001 diff --git a/common/target/classes/com/bwie/common/domain/request/RequestUser.class b/common/target/classes/com/bwie/common/domain/request/RequestUser.class new file mode 100644 index 0000000000000000000000000000000000000000..3edea42b6bf3c27f6f36cd7912ab27a64b4b9e09 GIT binary patch literal 2245 zcma)7-%}e^6#j0qo85#3QY^F)tW>Cy1RASV+XSkXmO=$&O2rv{@e+2(mat2AH|_L4 zar^`1g$JEcoauw3FLlPh!9T-CYyEC^lPo3UbT-+0?%DI>JKs5X_s@Ty{t93L>p7&5 zHlSJ1krBv0kdI`gDc#-5=i3kLdMJ>YcU&jDA&{OaZe?L2YanM~0G2?h?(J8$A3Ju1 z!oKHLcD#M*xE0@i*s_DLaxYrH2y9=#Y;kerzAZ4a+RL*U`i{F>Q;~-(46Cr_feeDj zp1+f$@{ENMyhdeRy0;&;WK&>tCgC69tQEgf#-kR-a86)g*A7+IDBanaV!|O#s46d5 zcwNQL5T|SgD#Cbi+X4S`u)a|1_dLAO*B2*YK+2+Uu?TZQH*ux0`Jay}E2}N#9ZXSgC~# zhxuk#U%fFkvK1uRI>BxXwz$RFShK^1x3eLA_As=4=24Cvk_3czva@k#1avQKs0kQU z=%#yPFx1v36p=xv`vS2+PcgU|%KF}#Jc#SnH}0*h-Dc_)Hqp0(R+AH(O+?I2_nghp zi^>tmZF()gZZA2C$$Vl=FRQ_%>Za#~LFmhasOVrggHLm~iA4jqRJ)mTx;Mj)`^ej~ zD^c`l0+wVw^!z6R-zIw>8%9BwrMuI#gXvYz+iM-vP7g#vbHefdlLNbt`PT{i&Z$VK z;t-3n+1zwOyJq5!z*M64nNDXG#O!2;wgpiXuvT2x_7|Hx4|ZVSuE3>J#rLbpz^cH7 z|2JjhA_8!c$1lb6l;XwLOIzamfNK^UB4l`fo4X2E!BsE)0`X(p>>b|KV=6JjyA{ht zl(-Y>rNH}1=bvEwz=tXHoQ=NDd>{029(>u^?CV^{EK{h=)plXTSt|bwqd)F3+Neq* z+)7eJ2+UEd^SmL?&E@_f2VXU$;F*NsC^m70Jx%cl-oks-rMbI-_bF+(!x6elNyi$-@d2d_ zK4kn!ezVMfFl4}djxhr%{!H;4=OZ!OC8I(zH1)ZO$+*sxsv){!K_N{JON2D)nBGOI z6Q4pFckD`=UVb^KQbX_;L+D(q`P#g;&?a#rUu%#;GhaT0F?Wm$-zfcfRZ|ZNTKvRR z#PZQZf5NUtQDYcse8lS-bLynwI;9kHgjMA~jVaD^jgra4&;z3QWf+RZvihKn&fdE>Y`t0Q+)#;b2S;|6aJU5 O%w3Ms3O-|l3;zMTCAX#k literal 0 HcmV?d00001 diff --git a/common/target/classes/com/bwie/common/domain/response/ResponseHotel.class b/common/target/classes/com/bwie/common/domain/response/ResponseHotel.class new file mode 100644 index 0000000000000000000000000000000000000000..8f8510bd1b89ca6fbc71e4e676454fa9913a6060 GIT binary patch literal 4055 zcmb7H-ESOM760Ac`P%iY<2bdOX+G%3ruF)x3j_!q$8Cw5GzL3Os_gH#~|FGb?9PnG)Ar~VUZ%kSPhyPn++l`HMcJ@=g7 zIdi`5nc4q-^3Fd2tl;NWlu))|xG-S}Ox+A_1lm^RtQA<9+bMcV$+KTtPTVYSKPP#aySp76e_xn|{zU1OzJR;z;a(!7fWsa&D* z73GpNx#Z%>0e5rg)t6m-1z#1gC06C)nPEx>q#r<+z5J+ z+-FQ9ZAWy!x&DQkdYQ%V>*CKA1>U&9Q?(JM?PU9E&|~G&u*av^)X{YuX|Bw5spJrm zmCwrzk5^B^ED4KR>>_DVb&;lZ?+A!w^ekolOShA>9royojJqyRrlUBDoKQ@CPy}2p z7;LprADN+Wu&roK)uYu+Pj8eUJGK*AlIWCuUtw604p)#;9`=Fw8X3c^0T{Ci}fscqvj{F*2>5lv9ee zyO1PlKkWs3x`_QF7LqFV@VbqjJPRyl{a~O)@vUSxY-;=Zcw7ovY0|qb@MgY0GN3kk zIf%DAVZXkfB)j{2%b$A)Mij5#-U|!hujDKY=2ecBnOF@voy{l>mmTa2JTnsgT(rF+ z79W-gl&eahBBGY!t45QQPWFmuuo2ecIP9%>)0qVdGxR*Wy=mt9#i(O6ni;ySd+5*hbHyr zh2mTuKdec4kcK87QuePFn>=w?lk!XsO`cLF`GKT!Su(gDVdd^G%)bTGxV!LgIKPKk zzPs=*I2()e_i$QmNj!RGkvHF1`VS^N<6RuR19!Y&0!e^i3sVk0~X`GY6ukZz+*A6tVNP z)>+?HA~s#7We-H>d`F3#p@^+Wt&_!#@v4p>3%QIxA;1>nGx0~XNR?R1KVX|_DC05w zg5{Ns@if}_F)5P`uz?*?7E-=1+N5m!ntz}oQjRRHcogoZWEeIaAy`ld@hOcR>`Rg{ z19JcvV2n{#2D5Uo1LQb21KXqE1AKuXQ*l0{a-dZ#%M|$sR|iOZ{-@$KN0v6f`Rw`5p0b;dkn*eGl6l%auL7dSSm#{;&B)hn~RQsPe z{sHpBgU%?<^uehwb;iHJKf_0B{qF82SxUyyNwW9cbI*_OeCOQF?|(o31;8RUvq&MW zK{22rBanY!J~Ycs)7dY7y!*ha2LhP|+p&Wsf%J57rw=;%G-M6*!w{IQyRGu>SGHBA z&~lyfp4&2Qr|en&q3ifo`F<>X;#;188n_3RBQRX+rr8QS+u5(mzyk&bWz?+o^`U25 z+jh&!Qaxl~7%vIvb<&!q8)fl*wf@xB#oN7*h+7ZcWTK3R9c zz{@gl#*$He={|1Y73rR%`$_^u3a=WNz!e5=n0{l~-LpbM)`v;sq=6}16}Z?k53FU^ zshh#4c0eP?4@@WU1#Tqq#t6=1>H$+giE<6rY{%L>YVBIywz=D6_TidaH=8@AXUl!8 zRDy=heDk&c)0ir&@;h{$;Woxv+~H_!SV6#=HvLqnfv%QTw!^XQo zLk>Vz!kdbxpg&Z$cZ1l-Ufyv{Ci=#H9lVA~=4 zr;@&U;6~LD#+G~J)vZ-q@;H>7(Rn$TOnu9B13&Q0!>DL~FoO@XxP@g6w`I4PbE-ST zw)2pqR*u3)1F&k=1J`>b@J+Jyv0)T+&2;vfmOoW<-GigU>iKy{XwEopKRUE}n17zI zZ{LZ8Dh{!1Hk(^^U{!V85tvLCKOHt^QOr(sd0P}k0b|{9EN{7K`o86BxGQk=T=BhX z(ohq){O_jhS404=@cyNEol^Yp?Gj3SA8_phM+g}{U+1pORd7{jeunrVG<$49)Fh=<&SB=>krJ3)bDkr61p??cC zeNuV?ePed!6!~yV;lk!D9~EWpH}n^jrx-ehF;`Gdaj9)FR#9m(R>>4pX_I-1;bY_q zY9Z4$QcjpFooGSSzqJTMhld86{w6_>U<=pS(-g1ZZM;QYn!6>uO-aEWj?i^VDmE~N zcPM4>F5^$|FH8Rm0~+*a7}b#CR~OH4DH8iSWRyvUBL8e+GHx=ZY=|mZkVuom5+RK` zrgo63#3zx)9lI9N%RdgP3#lKgDDt47 z#3#BWmPg~g3A-LejbWtm9zQpjQzZ>IDW#AltO|c=Omd#9l$4O1yHK7}p^zLQNC<>@ zPNVKVB^4u3+XihL<*bTk%(u|FD>A3NkOQ(vSsHnJt7yqdkde9J7l0+BJRY`GHx;nd(#3{k{1#C7b0F3?xB zH?qrjEHg`k4ZEDJm`=6iX6KDn^NKeVP+i+KN&;er54Y-QLqb3)Sq>>r)3`ji#2Y$vbfQZ@ckLk3nH~1$Uuq#iCUIE95gkX-EzrHoiJCu} zQ!N%v#}PQ4lI8`%l^fg*P#*XEJEo%-eFD*v0|ZI6<3NO}8K; zNr{-@rB`*NFesqW5(iJ9JvG=EF-~ws#}ETXOh$89bW%qauaVj{!&#fMS4=Oz)9u8H zQ#wv#M4)TKSU0Eaa?xUwCFnO#{$W7#kBGRn3yj3>msvFB@r63Qt=k20VS~5r>Df5Mj zyJnGT$9Ic=ohYQbbGwGSn>8(|mmja0mzXu(HG5^=s2CfjYgPz6*%TMKd2mT!X{<2X zOqYq>PVC)|sB71#d8$dC{jHtKAVT}jPw_%xD8jvw$# zrQS1m{ZON{9(iF?VKj%HI+N|LnH3@R}xq_`*ZCj)!%Ce5C-EV@Q znV!8sJ#U(duHrYsNWb3+RbM@2PL>L{I=^teUg8&!z{JkEX?8|R8p@0ei!a*MO3}P% zanZHaYv3f8CAHu4w(UA@#n_Z&cG@ENB#xUfG%Rx)C<^q~3)?E+w%5(9G*5Phi$>A4 zD|ZFH33f1lqf~myD6f=Er$2Ao>($L%z_L#TnzPc#>WLUP<^^wHY-yl!*NVU!y0wCCVe~kqT!Z6&x^Mb0i@&T zqm~_lz#H@o@%>4?HpI6f$=>wFXGuo1M1-Dik>mos1-;euV~C$<5XLAyxqpLhKm}dM z(TESxCXCUA4oqy5yiGG!d4SHc$|}7TdbhF4^s$G~(!&qYQdi#YEgzz15-}V`D~@;| zy>yU{`5-)E4;Z-3^C9d3cY3DrE(VrsXX)f5jbrRIi{QI^jsWN$_brMgW5iETI`M&){>{jXcLMHt^RONo=H$=aK z8orq0vu|Uonpz-t+Ov{ul22O zueJ8x{>Ohl{0o2)yd6gX!6-ro!iXq5m@ltqmR>4Y88+6-rA)=D){1s!&iN=r=dX;9 zPtMOPs9Y2=g_Dg7^5s(1HcNIjGw!uwNGKQ|zjfoEfBwzKufKWcjdv2XY8Yt2eF_Ph zus!`#z0+6CYi6csmR2&CmabZPJDc+j&D)hiX(ih?-Dq|j&a8OVX5gT>6q*{#O~-I( z3&Nd0y>{pJZGq5kpaY!>k>NtAV2>&Ud;1n;B4ywKbkW_aWsjGaEo$k_>8S?|9K|s` zHDTJOLVFX;TK2es6F5ozR5MduX%O{%p~W7wNAa*iTch*hNUwoD$B{gd$Uwh=0SprD zy68;qq(_7@1|G#{2z=QA>6dbO6-Q4SID^kB#PVio^2M52Y{2M>_B|`Yj~nkTX1_YW#9{f zAhv2&S7l?8jN+Vui+EC@bKP9C7<75le!5_D+6_d7CwiO2kPn~drEkdHoH(MGk=&S7 zIOLnom27Lps$>(mjHjZQGcYf>4%YY2l_1ta$zC*zHEvxLR}3tQuJGjC+@-lFzNm26 zSyL!y=B-M>EEZldmx>IywyM)zv?|p?xpXB*g49KY7SAn5Wti^EAEgkVFRYYIyH?@a z;KD*yBD9vzTh*$q}N;K?4~cUKsLu?s7G{m&##c7$u6+ z&9Y-pG|B05-YhPfWQ1(ENIJF;Uf=L0+GZ?!wY+@UteESTO~w???Sh)9_Ta(;KG_7g zj|VS%_jKi{-I4sy>O5>=t5PXf8pz!@qS;*#eQG#on&sCXG&3|V?Si98vhJbG<0Wox z6uhJ4*q%GneQya*>D(?b8A_iXX~F*n?#3SXYf%}lZ&>l2iPKwAlSYo#%}tOJX9 zhVw=Dpd4+^i7$fOI-y4zsvBV>=F7E8-kK^%tvjIi?37eOR=)G)vR$<+=7vt|YHI{P zOyEbj5yg+C*8fDIyIyDurEBFiE2BZ`@;_zf?Q-S1!rT5Fb_KQ43ubA#XjQwX%jLD& zM%D-1O(WmPwuK8UJ59u&^T{_kPFxk^X0bS5u&rziKjmdhyWK12`iL5Mh&wGG;eAB) z@xGEPm8{Bm(X3XjY7{?L=-J_RGjF2!rNYsBi*m!Y>p0FMxCaVPBf?A1GkBKm=Xj*cru2RkzZz9f@7ZB&mI|k*y?6jXpJK}f&Cf6=;IdG=QMFRVBX*G$1N zbJaC-iQfR{;$o)XMd!D2%CXX+gHrKeI*p!miWU>h* zkNGGmV%^1h+NC5;DqGX;vVf0~vpz;N!Y%*nSV|6-W;EBa_z4*DDNVQp)ZLa5&+Q#F z7txI7)@C%1{{Lt$yL4sUt&OS&Jd1v^&igDz<#Ns40&iz}V;{te#*fT;Hrao5f$nZ-gPLZT;BCum2-l)CCFhkpth-uFC6|#UXAf9%ERdo z(EWQh{CjQq_BxCjZTeG6Myec9@&eeQ?mawmt3h4YKGpHr&_rFj&Y$Mv*gnkIE zy0h=$RHM3+`%*xY%2o&qJUPF{R+uMd7rxF`#FwNscZao(Z&1fK zY5O=5(b&InUlal36Ldt;!@n{03GUa;_!fOHlfIC=%{6U!k|avpg@v!iWYccwu=8@4 zq69C8b3N?5EOx{0x)Tw6P*X@E;$O5N#cHB0I~*E0(w1G7O?Y9%VPCrBKGxQM6Vbs< zOgiIZLm`<+h1{8#>q3uHyBZBX2)uCA`kt&%K=f!pY z8~c!z8;w=OUow-fPj#|oL~=Za?`~D#jH4Mi^e(11ap@1>alYU*S|tJX)kywNgd#kv kJL$a6q3_}Q91Gxe{J>GE@CK#d#Lw7Eu=N&xfnOo@U$g4@&j0`b literal 0 HcmV?d00001 diff --git a/common/target/classes/com/bwie/common/utils/FastUtil.class b/common/target/classes/com/bwie/common/utils/FastUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..3e6e4632b3768324a45346e1da5b0b152f67719d GIT binary patch literal 2594 zcmbVOYfltc7=8{547-eqD~O;~yt5#T*Q#BiwG=EC!~#-lZ_e(XT?S`owllMW_VT4o zYMM0ZrzR#%+7C^deyY6$MN@x3e}`K8Cz?KIW=O zc`8r_(@j__Ao>$%!Fmlz9UIX4ScH+DK(lT7!Kjmy3ln*Pw(ciQrAC#NjXK(~Ng(c* zGk)kpX^+-$9Y-fNYuKXW1#A`AnstjtX5Nwp7e&`G%7JD3#t7Y><4RzSAGn@bkVCd5 z9b$HTOr0oL!E8BW1a8I*Tq95IT;4Z)>0P$6GCZvim|A@_tpM)Qu^l@E))K2xr&JD@ zs5FZL?aMG(uCZz(JhV&4ZtM}zcxcMHN>Ev^)6M8cN<)v1UhES%`kY}2Y%Z5<*UXI; zndM0*H{=D=v*ltY{1%w2U|tp1=_e}@Nfds@lnm0T{{SlI7EQ}B@(MHsl00h$v*`r- zVQAQ|<3Py3r)O02JlR5kM#{FWtR-*=hcz70@gj~2?5aiQDAtfJs@Oguw*28@DY#O_ zwdlg6Qx_C_j_Y^{X%@kD3j)cp(6XIBJZFr#g@W|R?g4=vc@p59XLk(@bPWzZ_~wgy zcNQPs{Q3Uf&+py3{nt;o`}_Nw@iJb~a8k#s7$W_v4GGj+PTsAGrE-N*Gffy4*z~yN zuO5E(M`T}tc}mCY7!}ZYU41#?xkUyfFkI^zJy*5f&@rY;)kNS=d2YF+yq?i9p@fRA zsuGH*Z|a!Dlt3aUZ5hbu!Pr|PjwflAn$d8MugjxHWOyMfOM&G&2~6WH9p{y|1ig(* z-zSL`t`~H?qd;wtp67Z^c#kODzxMs#*ME3$?d$trewV-pxTwL@kwKQ%uNwOiGfQ5Q z2XWes>MF2%b-+V>ntZan`XrgrF`N$I;~ zFDrSne#p)7ey}TxkPQEe}LEJcHSg@YUTSS<6>kJ;C7QwyX=(Vo?1UA|tm0ud}k+p3KfyF^&4+;>7V6`0ve<7TN+rKS^EyV7S9Q(>Va z$kr@3nSO<@Ku=8wea0x=;7UmvLvFF;I_yGeHjz$tcktJ#9;0x@eg=UY*NvPd=X%cU z{T%cBGB^v)4Lvs@e&M1H1&(SPXu~W=JyL*$IerOTf{j>s_*?4LQ+Bv_37SAOCf6)t zUH!#Hw2k-tjt&a9gxIguyx_U%NrsNSMIBMV#hudokh8oy_j@HQ3Sy+M<$jH{1+ zVj*@>KE2FmAJ$Xeiv8$d_v&G^eK^R+@DR&$WF?;tYN?3pxTE7T=DAY;t3`OL)dDjU zxI$?YVy)*jOzX=zEri0WEA`w?MfDd?cHYAKzu}mwsaRFhjkNv|Wp(&?g%+Ox{{r(N BzpVfO literal 0 HcmV?d00001 diff --git a/common/target/classes/com/bwie/common/utils/HttpUtils$1.class b/common/target/classes/com/bwie/common/utils/HttpUtils$1.class new file mode 100644 index 0000000000000000000000000000000000000000..252829dd847bcbd4a9ab336639210165f789bd32 GIT binary patch literal 1011 zcmbVK+invv5FKwq(}vJOxLt7IVe zdIzk%ps5!oG5(dHQlr_e(6pdsosMMht6>RelqNFsCU$bm`|*e1t!`APDrg~a9m#~f zbS{=3pFVlEZ!_n2RH6oK1(jQAp9RgeO~Sj`sK<6+^s<<6zkjjT5xe zo>+Yo30gT6qp|J!Ji*6&p@` z-ZS?FJ#U-~T~x>=?09RE!Dh1y@s2b)cyKNTWIGRi>Sw9&LObk-Y5%>lYQ#RjSJ7>U z?I9El3Wsj1oiwwW-_Az;2!a*!SjNH_;&c(7 zgcTvO_LIa9I1$ybhu>LPU4z9&DNB SX_4;dk$GByt)hAb7T-T3gxIeD literal 0 HcmV?d00001 diff --git a/common/target/classes/com/bwie/common/utils/HttpUtils.class b/common/target/classes/com/bwie/common/utils/HttpUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..d9cb2c1e736cf2054c314bfec7a118113395e038 GIT binary patch literal 11134 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 literal 0 HcmV?d00001 diff --git a/common/target/classes/com/bwie/common/utils/JwtUtils.class b/common/target/classes/com/bwie/common/utils/JwtUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..694e65b0926cbe30e3910f705c641cd9293e6316 GIT binary patch literal 2871 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 literal 0 HcmV?d00001 diff --git a/common/target/classes/com/bwie/common/utils/TelSmsUtils.class b/common/target/classes/com/bwie/common/utils/TelSmsUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..38661c5dd05bd914234e8b62fbe62a2cedbeadbf GIT binary patch literal 3742 zcmbVP{aX~*6@D)Z&a#Y3)~~7&H5dg%R#9REVkCq_VEK^U5N(^Z!|nisyR(~}K}2f< zX_Fc?RhuRzsn*yp+dNNe0#8>Aw*9?-Lw`#blb`Y*w0-aFF3tu-(+76%%)RH_bIyA{ z_n-gy{O& z6J}u4HpmdxW1+b9l6)2@(;^YwvO4wg_NahAcwe88oifa!CVBB=D*RX_u)@;q7B~HY zs)Y>I!ADTHNvgU=#agN7%6T0^dL*UWQsj43td}DFZjsqz$+}U+0Kn1o+4?H1IRrN^vN>^+X*t68-IfsO( z69MkiUmMje%BqA%e(g|Eg=$($i+YC>rrtdoAJ9|u!HW+=ae*0&N^&sWsiM{a#xjP? zZY{1$(RC^UQgj(bhg|!6RMh8H3hVJ?OtbY?MwJiy(4gQc75nkDz~-FM1KNNV7}P9# z#9}aYgnGL3F{|1M`I-$Gf$eUCvNTQA3nN9U)~KRMs!&eV@+$OdDJ?F&{EUi&c$S$E zOAIlbgNf8oKuc@1_l*RCeA81+UbG0*XD(j;YGU%<^*{gnA2+`GEI2)+Uz6x}y=thr#Vr2tMz$l2> z1-y$#M?qdbl*dXYOiOQ4a719${i4uzGNLDKBVl?G5_lyGau)E+-8V8bGhg4mF!%QP zxvQUNF5Y$_%GpGp=(s>*)&B#q~o{i8q+L`>9*7@*<{g~cENBr`tz65SJS@Pe6EQGe?2Sj0GTG-f_M z)^;+~W*%=pX7`0dV?n*IJL-iYuqGcub=l4ovFZq*7smzEdmqkb{`Our_q>P;Y|Na! zmbrO8bK(7L6wF6xb?8aiXAShQ=*h=lzdG zMpG#k_OKDxyNp=OU{z)N?C>%1PO2EkDFL5stJ$=Y6>4d3<&urt)VmWzJn^ zpq@VCLoa@;;&s`|S0>pn?U1cSj)zlPME7D+VCOe^9mDU9$UqgsrRrMI64DVS}6|_~eu0v9ogg zbXLxi&dSlrS=p(%7K4q4d;(|r7T_wlmekya_>2!lc$?qy7%0a%eydpmoW}*e`DEQ8 zm1KSu9_MV^ERlud;u!DV@+s-Fcdw;*a0c_?03|eG zHGe^Dq!D>ptGW9QeomT;{77|sQOaTA5~We9Sm&q@gl17msZZ9Vv3&~s-nBE0-L*5= zo5q1|(O5i%X8$4ieh1HaFonar(g-#d-^8lM5_#5FQ@g(84#Fi^U!2BK5`IcyTc}zi zMHV|i)YE+6FuZ6dz8(C<(8=*Wh)w7sWe@5|xgQ~N96>YsND+1nIY$!9dK zhCV$+Xgm&xjRXQT+KV+dMYjH_xf6YL1aXfgyMHys- zWF@MDJxLC#0q5=;z?2=%}YBXBvQvi!8f`4)l^Tv=TCN&gG538yQ-uDa9K} zTHx1FDw&x{MaE?ourhnmR=U(+uwO zC;h|bv+?EgHng>7_`faw_CMBGx3;zU3u~PJ#oEx;#?eXN#>w$7 z`eFVr{fum__09ikFv9=4lY_Cnv$3PoUyS(euR1&0efs=YQTgBebue~xw)(3fG5(h! zot@0B{xvXvo0^|y|F{r8TmOLDTHnR^Ujy==#((qbKa4*Sqj&Xi`)E0iNE_O5f2jN?}5FLmr7QAq9WL zFR)SY2Y{%EnDz`2q&*CT2!eRXx_Q)vp>MQ~?4aFL)g*AMv4#aKb0kfaz6Hehe`Og-52#kxSB5SoJ6XjywF zN(VKbW+@pGT^%Al8qW!E>(_lCmQM%ppKs`_Hp4?AS9K}><%?yh9;vS-BqWB68W@i1 z1ozrS1BbxvH#02|O)J37ZsCetk#1|*B(p%8ND$|he^9n4Wy_usMNY&qxw^yF0*y+d zZi3eC;~5p(Lo*vsSCL9|lA_E1&h_fye&>F3i%WzXApwm(b7c$F!w>h{8&HnXi5hs@ zejd?fGlH>)JMkD;iNTq?QV&qg4$-6Lc5;tD{Ot=jIaPKZ&9T{O0=YGdtXZ9i-9gb6 zPof`ZDtBX8ET0T}SQ;rI?Z-G}?=NTEmWq{w-*@~>@p5K$jLo!)`ucDtH~W-Y-^-2~ z0F&LYWDBk35Y`nwt~+)|gKj?;atHoGtUV+oA*n!HG~|60E8-W2X&-io`?q}YPps8v zy$%gNvHtdnHSJ$wE$Qm?pK!-b$o31O1^-bfL}%F5zKw5XI_c;CkrF509t?;0WagGfP+nlCwC>uGxQUR_)Tm!#%`T>Wv|%H?u>@@z**f&F)E#| zn}*1(GVHgUfHk+Dtlq|g%e{;pzUi{QU$>CdMX{pzaW6HCSkQOl{4g9__H1pDSR+Md zLp*~a6tGbp+VTtkirxL2ApsAIzUusjSl>Ro(6{~ar|co%v2PpncuZ>GP*3aD>jVD2QN@E?FB$@9n#2%=@m;PEgaK<|+# z%-anh+xP( zB?Fb?FiJwV_%QNHad(V+Ap2{K*{PUBPIkzj6LI{_($Wc~%~A4$-I#;?vM3TxC%PYd zNPMk>nvG4nbA#!x$TkW48Tcoe-Tqxz6F+9z^8<+To~(NjM9J+|S|7Xri-7<69_S!? z1S@~W72)$ep#RI*D%n~Z+x$mhqvB-b`UR1Kcj5rZ3TSWrGj75NkMtG>;&U+me!(YY z=I4-@6YNwX@0!`tywBjgFAe528X};%YGvKyc#}Cw%DeI)EY`AdI!4*!7Rzp~qOguu%F`zXmL^gIivT75HiLE92rJ@C(b-OYDLG~(7Y-*aqxFcPg3L}+ zS2g}k=tw@wwmp|{+wG1!jl*uV0F0K(fr4NE&Urwo?S)Vh4-^_2Qv}>s$2pkTq)x^m zt}&_6KXyWQ<7hSGq4~NAF51)@lY;ecU>?zm;q%1?3PZt-Yu8__45U2zT{4^QA^v^x ze>pdxRfGfqDf;9~;{OGp|JD-Xwob-Ye`lj46)9U>WweiKK8B5h&UIdL82};G&%H%K zKVS*fY$KUpp-e{nJk)F$-{8V3OPT3BP;Ue*48ArWV1)$i2>T+=Dvl1Qr9zQX5wBFc zrO+5}a~+Q1T%Z&mn{4~cU>S}xFGtb7f1b8yK*(?OQJ4mm#kq|r;jC4s&P|$)xTV$> zB2=q7XL9lC@HYg;kqB{g#07-`B0w=1ZeiVRI#W#BRh8t(`g0>#o3+NQi^OwHvfxy0 zy;UZ~<4hMX%dzrE$8-$*Dl@}ayap>KC)VDh_wY+vXr+*7{ME5Fz`Q#f4=6F}10 za#K`Sr7O7{&q_Pu4u>!}-0u2I{BG!EAmZ$bAc*Rs7<(^SFNu11Evo~;qYWEQ$KR(YF*;oL&A!cO_R+tat~ms?&xfG9BI#ik6gl3lx$Z^4| zU{+`5o4Hf!9I5ryd{w&T?^4zjHn#x9@;vz-KF3uso5W9LH1upLw0XLV`E+Hsg**H@ z)P*1E+i>C$siNM_(mp{V;P1_#m*Ahwql{NlK>%V0MsYg*EYVH%0#&-hMn*xLaOxB- zF3UkdL6UIV87*#OD=RBPP8jXwVCq;;kj9JCcAS0m)5+-0Z}g}3)EHgdSdBrrJTI4+ zE7M)vT!(yt=@NQ4@#v9?B%`dOEVr&WGF;8xFUs);7b;B%DRFFC6GmK-wQg-m`Zb(G z1R;0o_VMXUpbLizHm$7KQ@v?NVpmkx1$v_6Tw+JF)Y^{t8Uy9&lbj%S!k`p9FBX0q zyt)SNJNkM`?15!Lk6^}BWTl}X?bxa(wQx!%>mx2O*opAcH8%!(o;$meIM~r4SQlOR z2o->>JjX=BL}G(LT#u(wGgx^G`zDKLPy;gasosy5QyUYE~iKSk)n=1 zf{hX~=<68b!6UtKXc6B=z1$p|p>-ZF-NmJuve6lf`|b}fTY{zP;16io7>*G~1t@u2 zABe;!F0*?;ovm^^sFDXJk`gc$GUnUoLF7rxVi2`q#8>25$s!XKVF1hX0=Sd|7d6DI zf)Nf`k>@RlWCDNZ2ibG23bh_`cKd~i+z!3sxYrx7j@QT|^{8)#*wA|w5S-<4{!UsoB66nkoxyPFmFydYb1Tj8ENU-a5yTMe!h zUgzGJtlmzUCdc`I6KUR}JEs_L7Ab73U#CklP`C*=bvZ%U z%2GEi#zM)7k|XDrkoHO%d=LsV=nt5~lzz+j&igcdA=UzJKELgG#nSa3D0yp!^WNmotMC=jg{sy?y&B1a6`1bHfKYlE@ zkaC@Z*2f@2ObIhL8~ZIwwP?-C)hi5jb~Bn97B~i%&E&1w?b>(qEAt#bP&j5YyjCMN ztKdBP6Uh^vt6)I{Y^-5W$Sjf+?-I#bt1s4S`c-b*Ypr^!S;5MfHrpHvH@EkZ#|~{Z?+c2h0Z68;^NgEP_`jqZV&+ak1OJeZ4{eHM+#%rl{oLMtE&YQ^Fb zI!~qh`9!jubYQcb&#S+UjSH(V4HPr0KYn6r+fOjNQk1XcSg9=y5eM4_v0b$$uMcL~ zYi{RTjDyy%t2-*9ahK<%2NCSw5G-;7LTy<=&F}Oc#HoIMB+ZuFs8pJ0>ASx;v@y$p zrcin8AT*ynG*?`TKU9a9v~Nkp@z6cwOU8K&ZQNBn`VVZKb?TM4eJDNOXJbO<*|L#9 z`h!BOusmbsls+eN9Gb!%WC6LZtZf&fp+kQ=^_2%_`-be+y?ONOtzH^Tm#?U1&SozQhGp+d9OutZ)%VY-oNCll;tR;1nyh`9 z({a(>$f?j2(u1Nd-KKa<%nr|h6U&At<0fH@o+}lf1Bo>&@{<9E%W2gu@S?w#ay|vz zGJsT-oGKM&&C$z!AUsC==n|?RrdRHis6Ym_gCtwWCQR#y^bPv$7*m&RCVjx%*V?nf znP4V8z|!aDTVt=Af2*{gAm$Mj_5Hwn5-A)v#q2mph5WupNTyni9Wc18b%sh{+9rns zI|x3Y-kJ2X-nWJxDllc$*oiZwB|+u~{j%h*ai1ieJ$q@cl_oI&B^t&zdMY zeW7{T@$ahA?l!#aGi(;05ISceiAw}n} z`%NH$(_NI}6-SD{qX0oeYFztWjw=dO`4#h3$t)&LIWGS*oe%ekFXj+8i>HwQNk0mx zj$Ys(Ce;(Ua5rXh)oqTc6kRa6S!ZC=PbnlHy6bAbR^Q#h$`< zWqJHiBRU{JSJ#cP&(Ngz`fRRIGnXwwQK6lm>l%vtTACk)7K z_PyhQO3N9owBp>d#yZHPSwl3f#Nxk0*Pp?KP#8YsX0vC5z7Ls3p1}-f$Lb$v?qia~ zYGTqwHr`VQQ)#>68(mw&skrL6-ax}J=i#Ytu-xGFxyjULBItPN80t)hBvN{W7(9i1 z+o;}D_WK=64Q3%1Z28~|ZfW4fqEwc~q4$CK?`s8O%#H-qrgkSmrD3I~oK=NRH<_pW#%lUm%c80h) zm#q2tjb^J7CEW_gl7ZaDm2xRK9t+%BWs2R2&5Eyu*5slPk;}Jjs@f>km*mXzOXNRh zn-&JK>K{IoEu)BV4VtQQ)zj-zW^RJFnl+Np$gbGq24LYt2OOq-*6TFj3}4oFzbEy> z$91j@@?V(Frnt+eXh$EyGI_)JBc!`2fLLnf{?31k4YOCsF1)L#_uTVd8;q-Np@%}+ z_78)W26DL{55jeH*sk-6fGLtk=YLmZrR(83r?(&TViWf0ve;+qoUW~~uDVfQF<0wj zMgEAftS#`7JOZC_Nv0vSTwOMsa(Nz-^^EgWtsKH|XJ%{BZ^EFR z!FU}l`y!K}!6WZ^rB9@`buAeegaLOjwMnvBxTE~7QFuGdTEKuO z#dp{&a71hFp_rsUw_PZ~GmtW!5HZGH@^}7JEu2$6W`=%g2YkR~X#(Zy77jBdq9b#p zxTg_+Ee?&dC0o8sR)MnEX zt5(eK=VsjjN~SMedR$U;S1~JEu0;(RYn%HGFg2A`cc~8_)??OJ07`!0!=5nc8A}|-!SPN^I+au+_R9{H;tKcxM+Bk{7P9A3+*->K`{qBL;*7pacub#2 zji)4t+)5wD6H}p+kvW#x#MjGeBUz*FrfSKlZE4sq%=yxX8k>0K1G%t(D`k>#${8^4*nV zvCFXL%#9p6g|PYz3irZh1)_ryJoXTnW0FW!E%p-OPN9#Ez`}%w^IzR)r`#@k^=J~Y ze@G%Je#(b>4Tq{SJ_f>YJVNhb1*|(eIVP59E2J+UZ;awSh>rbUxQcp91xcEXyl+L> z@++Z~v5QA{_<9C0;y)SU27%Ry_Uik!p6{r7yb?mIU@3PM>fw*!X8a0AKoBJU@uu&; zr{O?9+{L}mG|YzZms>V+4o1cf|09sC|0a-qY&!1iI}|lEG}?=ZCFiU=jBoLq(SpE$ ztKH&xU!VJ(cw9oRrW4bsf@8>svEK7@SU*5sfT&R#s0MJqK~evJ2nhNHhaPXHd7rve z%B;5?Z{KH{UUSW~xgN#%UcH0qf$6|lo2|q$<_e;pw3~0U-=i<6PtVYAH%j{b@Yr;@ z*bNl)ba5ks#+QJn0yoD33m|Jr*Y(AO9%achC8Sz zt4F7~&FOf_JR3&uSNL5voj|`MqxRm-yALPRP6GP~CYw9AOw)TSy8-EZ5fj_v(+&k~Mb zZ@%2e@#QSYi%#JvNcy25`n43f~jr>ZU$$RSvVexeuaa{Ko5-zv|t!lMQ?`u zs1!0%!0OwKThtAU5~Pmjbnm^JA4*%&5;iC4YLlB*V@BG!c{z3Qr20q z52s1)4|~5ZWyhg(r>uBvtvYZpE+0K^KL#WtL*RD%${!8$Ejc)K>7zpT)|u)2OEnhD zC6S2^BYG9uEA$p46%6T_BlpJCujA~O&c5~?SES2{JB22?S|$UqPNcJqx*kNZL%D)FX zj~)*5(rsBHXCQl6E@(%sG6qc-pV*O65k+tMP(O&Go`z0qaX)--h<@p%t&+~Dh(j9R z94b3yNt{5-f|$8mp?1nSiQ=>P1z(izs}bfSQFVLfhnt-Af9^#%yc^1?iaRO(2bG5lwz975VaYMU~xUFADz%m(ZrGwxSxvuJ_2Jj`QP_ve<7wr_ zEdj+ueFHIcuey0vmKsfsXWuE2FA`g zF~!NERb9@%0%-sboO59HUrrIE=~-q&g0- zTB~?+^h{aJ(U{~u?0)-q6&PHnAT4s5sGK@PSR?FKK#v#7R{95ri}@^Jo}4i5`{_RN zZ(){~KPED(_oP<-JzNDkT%s?dn(^q`JH^V09@uD-AAkbo@OtGFL;6n0LESGaW53K- zo^J;OtwQ^%Z<(6{w%I%|*HB8*MuReo05QN8O& zhmick$U!HXyiuiYgb=_qn?+r&k}@otprJ<(H+OFsDEnJoLQ!J5tnh1{hFTzL7`Fu~3rvP-!Q&Lzd^ z2^`!`SpkUWZUhYCp>!;+)fj@V)U+I(c*5NCnLPcRb*uCRhJh@D-jD=XE2hqPhrcOL zj{^qqS8j=Q?iw9^2D_Rr(+!Uh7|uD{hKOcn>?Oqz3eXJa?7~qWQBdg^*T!(gMzAxJ zYD=stYoRx&v96RC$YMpP>b1oBJ*Y|BOUly`f6-oIJPqSbcc3q56oXG}>u;1uM;v>^ zDOY1fkj*>Eu0a$u>M2QgKPJ^{vYz%1DDqqhuM;1!Ce~BXF6Tk~PA^W=Y)m#~4D49{@O;~(HKT?u% zx;6XdD2f|h2>DvkXJXM?+19)Qh2l~I=pbRYRi%M&>HCS>vQps@Xjo?AzTtx3Vo>QZ z}%>gh@;R|_FI)BDU z2rDg0Oc*4E#qV)WDhOS=xQX4C=bl~pvM2uT1wZ(vEl=lkOvySQAOwW%*&mW_X-|E9 zcNaX_Ai7y=l-mxGcBsn1<{ElpGE;6b86u7||1>HC=&Ol_aTceq+(taEY zomrs1-_k0VUX-?x_<(5kO8+hFt8rzYI&`KOAgd!i>mYC1DJO*UiIt}%h&u<)`O4Bo zHjtYTp6{{S}*f z$y3lNYakntRpjmy?tzei!YM(0SR4Iw*ed`4(bH5fy$nZ(*vB$rxR zzsE~szu~1w0KdLd9Z7`e2BK>bh0zN!c1pwtGnDGUl8W4t6+Kf+Fj>u8KVnGOzxj8y zipEEuH{Nq{D_;_lDv=Tth>5_yo6j3Qco;nV8Pd=%DXV4vV}15CP8BY;ncbO>J7b1U zCLRFjn_1K}R%wKJM|r3QJ+<|>H2Pg>_|V8pj+5VG*eHIP>kPLO#9bezY7-sC9@|Dl z^@Ni**GRiu+*+%p*HrkMDI6Fq=*=v)UCk>A;==1cS#h{lXA6|eNsE-n|E z-)*xOZbQi?0#9PA{8B3(P#tZx{9DhtqCFas>6w0=U22PFQ#3lU7%cfM;tw8KKuJ>! zW(H<*O4v$(>K(r<_*9MG`VGzl1cV-#GwcMbr4h}1PmuBrreZ%nXDRUu;lC5i)n;7{ z(PyFD&}W$)R&$w!_;|Fpl=dJD03KB7 zMkAH%C@a}yFFdX(g^Hn6HEGKNhrSz#Ljr87AL9Znq|G?o%1p9i= z#}gjkootf#_v?inP^G#!0GvI1I4C-F@Fe(0Xo}|MI*o7Jy&x-Z@L;`p+BS?ZZ_17= zKny56-irkn3>dIUaV5yemj-M!k9W9aWT>nmBX;!v8h`SCr%~mE^GIQjXn`0o@ zVT_T2GhO%6U9_s`>#C875llX}pK!#+a4fhLV?&l;rWC4l+G-pWZRsM(eDx|hbTs2| zv&`Tr<_(b?vP?&-Q4)9=l8mHM-we#69n~T<^%(Bub^g<6yjq8|=MUv1RYX zhFp3~uLmDCcDWB=Prdmi91b#j>Inx5KJ=VCg8O>jiMm{2v#qJwBa*jrf`Y&2qPbW% zMietfWVqE3;D80xbXhSERaWF4gR8SwFP1CEZN6;F9^et0v-vCoQ*8B156-x2r#gDe z1ul3PT}Q-L=7OuZ4>V*^!0jL|V1t2|xVAQJpj>%vH9vJ^g$6$h47|#56N7zN4=P2r zm)@#aPCR@U8Luq#HR1Wmc+#T zVIMclAbO8hK-i_@MRj>C!T92n|BH`1$=tNDBIt8l=28E8A^mIO=$u8M0|CT(nio|h z)*rCT62oDQ!rK?|gWH2)k3xH7GJwPZSq~!sGrR{7G407M7`P0?x#y!7|1yQk?9_^P z>F`!azc4_*&@JTw8%(b|TRpc;i{TSkj)(Cl@B@7DS^pOCQ0BRMgs zhcQ_>dv6gmGN{rauz_!|jjV}u<-1B!>L80WfgW##2`XQ#gLvIOiNp@H!wJO}=~>O} zJ(blS^{D}?|K~~B>AsUjUkE8xs|=k}6e;>SXUI7z*$uM#%shwGA1G9uhm_Q1qymAg zuE8}y>BlijRP6A#%|IhB01=sIxzXMY{6qP>wDS1%_>b)h{;r3^uRJGQeah~RY2)?4 zUlN&PO6lM8vZ)9JH97l(uFLtI!@Xja`zhKXQ19HNkpcf=g00aAWPFdT%$@)XJK<03~_l=loL5OvoUVGM8C%t6OiJmMgV zNQB@U>gc`A!zNe>^LbPzZ1R_TuQPa#{7@~U5>#fa+=Ff3z4(s}58EIdH0@74yYgA1 z!tz(?=D({?fyRGt{EMdjThR)h2-1g#t4;^cx$6E1ciq?ksKB!NH^EVE*>AG`@GkqS zeME@g4z~JuZm%XyOf!*ohe5+&?T7(dNI-|WFXDsZ$N)QN6fs%xOwL;h6oB*0#X`bp z+{Nixc};mmMfcUVz(>a`><freoQlFJ4&Vr`Z>hPJjs36C*YSpsHxS?N}#~JQx(mD2aIxfYMBDae^M?f;m z1*+-_oMeZmTXPdVDhVd1TTL|4MS+!yv@Q8e90^g!fryXj2qR)eDsQoxxzY%hYjoT_ zRUFDn^!cjp68&<$hsubfTlQ!9ibBq%j1&a={w$_bXK0EU_?N7wh(*<*=H##g-DUgG z5Eaht@mnJbC%j?OAWAG7{qeDk{8tw3!L$NyoxTdVE;7TVOoxliy{raaur(#Xh9fpV zHUd@Ok%4Hs8ItC12dKVo9MYAxma!!Y*?7ce7vy?fHj$eRs_cf6ZGg}_A0f6%ITlN)hx#G?VBrGu9)|@U9_n z0bgRczB-xbWWC}S^17(r-b2z$q84t`!~le`dsr4n3NtB|Mq7&!jkv3l(oxkavXW)y zxPYLfGv;_gm3zFN>BNQn29>ci3c9}V;^C`fvVv`VN4%L|)S_#)`5V=}VFi&D)YNaZ zvjE{=XBv-erb}?YPY7cYM5i68Ik0TlUARGh3zfk0=(29*sgI~@(+GSZv2ta1DXO+v$4!iiMj1RR;^^8+1-xV3!PaQcU$3;a33SzV{0EB#J%tfe?Qa8 zIXZ-UA&6jqbL}kit1~}ZyMt>*1Hlh2(CU+f+qYLef}4s_c7X|et?S&8)=CZ-A{Jp zJ0-W|tUM*l!446 zluxtHxMPW#Kper-%Jd^$x*~^Ij30}M%OK-MhUOnpB?fqCh=O%WouE$NGQ{s|vL)?e z34VxMfZ$J(FT8CeOFGDFf=Cvxmwz+QdL-OZ8qM(0wg~EsVNv_$$?-8nd`j#j^&Zqv z7-4|syDt+@$}Qzu`>B7e-Vu()f%1dLZV{v&BR5pj359#GmHS{4OkU8Rho0ev0r@(_ zRDL<9ZJrsV_`ZrI+eB1hzO~@j@r%I|iBq)g%9s4>N@j?&1;hYf9M2#8x{-WwYGfnW z#GmymiBMiV-!~4e;<;#+357Y@RLIgS8stkh@^f+D2Y=a?d^L55ly2cBN03VJSK{Fz zhxtxbWq859cnfdDAO}M&u^Af=7BL)llrgWap87LgqB@;fT_iOzU7{=+@pHFS;BZg{t>e%KA0gQm6|ufrzjp(7C|Rrs{l)#&#fTQ zYywrYR#~|v3houzFe>v5+5j6-ORc+l6=!Kv?5bJR**MJ=2*{MrgzVhutjiS7WO6Ng zGxLVS_4R;TZf~QO7fCc*95q?!39;N2z{09NfaL#v_8)9zOw2++@hOf6KgBWg{|~nM zr#w#jr#v2tGo<)$d3>=NrfEhrX#b;KB4a;L7QY{Ev)10lfUVhxv~BkPC69Xz?Ifs7 z$%b4E=BP+KpDxy}-@H9lejnse^njG=(S%{`k@dl-u>*vxb_RKD-;aHQG`KuaO*qChBUR_ge2IGtVZzZ}OuxaGUCdtByS& zcg;}tlzR@el17SZfIPBG+VjdF3@x{2Ykev^MILqFvvH>%0NQW{=*xUhhm%C2(Pp8m zTe7}}G0nJc4kVqkxmiYVm2N{w3SVKR+BUfSg9j%vw?&|xfZTTETFS;Aw9@!=Gl#LF1Xb+G=4%y${EzFKxp>ZPWC8<&(-iJMC-7c=X%O z-l1?aEYaKoWaBK(n~eq@!7}TY_;^Z#=Sw%VONf?bP7S?c!$s0~gSw43vd_6XQPD1o zQJ)#ZG)pa7>EtpDrhlEYR*9i8kvO-(zaXQh^GS59};-oIoQ zvv(%7RG2qx_qinCt^tXpar$H6lx6TRyD^k9|G^7Jt}DmdEmVOr6=~x9VOmS*wVJ_7 z4o2p{ij$W)!aF71jS?K`8~FH+ZAdr&3@o%itE?k1*Ak4ApLbhhh@8C-%E=Wu=0pDm zu%wFmO@K-2kAs7)K`YuJ-Bmg9kUPCZY-WRT)DuvShwc;bLAUsFhngx9EpaO5{(Cyc%fKDfV}bd;;-M-t{+)tdX;Q{;84oJ~gtO zf5qKT=0o(N{RGY|DvmG!pCV^qvt8tbu9DXoT3eiQKfX4Kl;*-*;MUj9VDrISdOoR- zsx}E_T7^Z@qNWQ}cByx*N9cr~n*n#3XfSaDSaqPo*{G#G(Go+Xi>O1;qFhzPSVNkp zTmPkz$^WL2`_6mUq*&avM?BV4y%wprpK8ztpdNHfib0h7YW-qPel+|6`}Z~Z9OAsV zDHI5ZKk8pr%_%zRyZ`-Auu4_a5l;;L!=tHzrGv*a&T1@Mjj5gtS9@9A>f0dA1axxM z_it3h4tVh(w`Q)h)lD4*7m;{_bb_s@-*|;?dr7MEwKl_3iA5Cl{N#s7M9_y0gK~t> z`!W~!8hA9K0?TtH&-lHkUAs^D-#@i7;m7;1Ey(0v6C4WGY#eJI5t)3a@lNxEOh=c3 zkHdSi;x7nb3eIJ)uezR|!`+HHaB6-1K^8{OqF~|BL+s-!f zEU%|&9l4!R*+~29V-|b~%fxqgR0uSPNb8x?#>-?9Ml`?bmn>0FVd4;JJpICEW!DV^ z&tRFzS_<_h9yS*|4t)tI)VhPfFa_RGt}M}{QZY2=iO2Ipny9D>*`~SrjQ9_H@?kfw z)AX)}`YjDt?h8I^gG^}V?(>Z)Ws|Yk*T}F2H;SotiR%b9q&&=nE4LmbHo42}{98VQbjCI;Q7IjH_vaB?AZZVYWM3s; zpU_|B{($q%2@}JbzE?ZMsc$eaNY3KsIxdU6$Y8POdZegvaaF3UdAgcA0nFHhmxVySKn2e*mgSFa#?!JF@OGI z;n}_Q$md5WH@s+l?eGUv?vKTzx1IoF@dc?!Q-43O;IcHU!={F#Xnd=Dt5e?E|lO5a9R{j`lNjET~4(2Yi8DmzQ} z6;z{}o7&r~Y$2#;RdO`6xyW) zx+|KqI9E0=WtY^=ZVnbI>qFdZ&6-uUR-WFXyNZ7PL(^a|+mP_p2Z?lpf%~AKWJ!3-?if~CgY{j)X6YKe&iQ`r$ z+`VH>%kp`;(ys=3b5}%e9AzeKUQJE8*;sjPx7=X|-VT55#O5oa2U#|%q7xFvhII+c zP9xvUty3qp-I2WU>@A&N0+g`1B|28g$+*lc{5V}#(wO9pr}CqizYpn2Rc;AK!NmyJ zTPq%-@Qo=*6Adf1B17p)u`l#33$$nadZN>rTG6r+h}Ty+1%_ws7K#_lS>N@P%xIb7 zCv|CuY5^|Pj5l$sJ3U_qc6N7m_7^kXdh84@F7_8SUk7^jwCxI}F~kRoW5a}*5tUaX zUk4)g7mbSqxnC5Rh6yWnS@M}$dD%lL>Dli19-We+XvCu?G&I;bCbI2mCqzzPZ>8~! zuWAz^#!%$T`$7(=pb(|pNhQl5XNDCC_-GHs6M^vA5hc7XYLYa6dwM`(pNNQ;9B&&! ze^^@hX7(1H!%KUp<}@-wdN{Ig>V8(6crd3PEhYKeOC>Q(_3#j?j*;bE*letWr6=gt z+YH>*bUUz4E4@1env2xXq3F8|nfuk#sK!_eqZ`x_7mYh&5t2f+8JUe@@^I>+CRTeu zW|4Z?*AsvUgT191cR(aap{D4U2RkzDeRjhl>_lima~f1o?Mfr5&2*JyArlZ{8nAYy zv82{1O)khoaQW$RF~JxW7&4m(6+fXN5T)91M&@e60(-GZ094*AuGE2JJunH#xd$p zG=cyr6@|<^%tH+I00T&h8)9|g2iDm)*^}X(*cJWGC}e!--zYy58rgpS(Z-hAIR!B@c?YC-C!!%G-VwN2Fto-k zu|YY#>F0ArfMGK&Awj{VM-~v;=dYRvi!Kw~Xd@0QjHn7^PCN?+>Yo^hq!4xC&JWBM zg%b&jau@~XiP4y2OS%f5GP3H9jmj6}j*rfobz-$Fwg&*+X?J4Np9S@)Hd`)9Um^qZP>2zZRk$v`FOV#2dUJ)9)?-BYOszyhOv}21$IP z_q`oRC3pd|I>Mo^4?ng!`=a&D@<;|rT|248erL>nP?Y!eb!9 zPFwXDTzBkZv)3rL4LQFe#~M9_Jh*+phL(z>=3M&JSIuwN2T$KA=wCLBs!!2sE>jSq zV;tZVBrnmDzZ@cH3feiB88dEU906&$4nkFG1c1N{XvE;drza>H)`8iW-8HSNa zaSV-$ctFa9+w8gbi>`x?k-KhIw=``m1MZ_e%vKN3tLEx&Irk_=LCylxo0P-MG__bh z(8-UQ$!yO}-b#!)yltEQj6r}-`MpuU4&mZk^!U)thzu|C0D~C1;hz>6-XWi?cP&R5RkDt*Eb`RdR1t zJX&a$FIlc$qIYcUyZ@Yon8LU;_0o?S5GoAbQ5;oU-lkAJ;icymTF~sUaxEM5TOix^ z&q?k@ARG2ngI2IVE+g_;v^}fOIjd)j)224r{S^cTx3(_|`_=ZCD+&Pw|2u=(T_1xT zgzRw1PU5x^4rB+iBU)t15Gl*1PFV^rH=x&~zTxYv<46l#8L^+;${Rl~y-%kDK2a(+mUh$d1LrIZ%qdoUDTxh|37HR6a;L?NY`n zBU}V$u%fcIT-!Kf&y1k^&<}X^O~)04;ktJBBXqi)lBf1jAKK#e2_&?9h9+#!fyuo1 zRerer$et-qwa3+I#sOC2*>e3wv^Vx4{<69W|IbhVV{0qxD{n|wQk|}jQ=?wpF*on4 z;?#zX%R`mj$&=@{UgPbD?`oUs3VawTiI=T~^GEUZ$VrJ)wa9f%qz&W}NcYv}PRHws zm(MspWH+ON5VJSMy>nf8i(5#M2M@z|`Kr01a_wwmIQy1z(Ij)67*S51WA?oL_z54# zU%RtU-NQ`Sa3G?_7ekP)C02R)lus9L@IBIrKp6D=MEg|dtAF+YUZr&FnA|C*jY0iRn3^WCS`QmCR)_9;*9$NJ@X(G!wiq-Fu5RAH&?bCx{(jStK`IU9^mg`@m! zQWG-Z4tccpj%qgH7a%F8SXnO?+iz6TZ+bC8*(bS@I6xA))GP^@yXMh0J`=8NB2NaE zR3!;FZmswp?5ga^L#v}@U9U3?A07jP$}z_AJ;>*W>L^Df)f?^(8BNIXt(;d3ZIJA} zz>RmkQsXVCk6>~z{YRwg*!(Te8wR^Nq)$vst)vRUQ=K2AI)oP-l%-MHvwyXHNG0({ zkm(JMI+@14ePx0&1~o!~gbD zfHl%P0WN3!+3wCN<4hxf{F^}LUJND1U~f@BXKE!1|GNK zim|vHzymM63YXc4lt?%@`u}O{ETH0AvbG&GxVyW%gy8P(?jGD7f;$9vcL}b+-QC@t zAi*W@_nmuZGMAam_xI{vbZ4cWs_s*@>(s7Y?>3S=uD5lNXAQc9w3Z)v@Ow=bsv%^1 zCFD?0fZx$>QcyU!0Oz7C!Ja*prY!lqd-E-RcExeWu^|5?!2hBkUkt_ow}5^qhL{ne zYXe`vQ@pP20fAE_r#A{CZsjOU@6+&t;H?L7Rm03$k11#_ikE7BQUY!`Qe?Rv{T+3W zy!#9FHg`}Pf{?&>=vYY~U##x$JYCbqv^9rn+BC$8v=;lsT<@=a5c7H0Wk`URVvARr z1oLF7@uy$2w$L|a>3nr#8N6Xn-uTbPCPp*L0pYEAuOI47iB#&Ms3@$U+hDw^;Ir+f(m0FflQgiUj6mqdBI1DKLq8l@ z!7kbJNKDBc3(}TKkSfx$RlMpibsJlODz5mB1qQ@8g5P))LPVC0LK7Tc9r0ex`Kthx zV60<+<#Ng>p>I#6qX%POIKGR~O`*pccrNI{GBSqgz3-V-^>kJ*nFlw-wqlv{^ zcQ@uWj00=@AI+8q-epU(RnA6tI65k%s#wh|p9bs;P@!6s%O zs={BE>IrlC`2#IR5&4A8By4duwE6N;J0jVk!23dHvGJK#w}`O+(AS+9Uhy8t^BtB?D>*Rh#AaRjZL1p2u;Ftm8KMWVD+zFun>N9*}s$^IsY zMos7tpU>=uEHl-Zgm%dTtgm5s`@8U|^8N7S8by19Lk2;AL~Vhv+KF;a@;OX~gK|VR zk{l{)V6v<-KZ6EmZHjT5*ua`J`C(dj!kh;VIps@gsoeN2fN9O)=XmJ`yVz!-7KCT5 z-k%BeXx*nODZBI|P!!&uZ3rvx}i_KadRsHm|) z21_!?x*>k_UG`GGnL+ifgV-Y)dD>tC=XGEbX^DwCAGx`MZN`#3De97O+}XdQyUX~9 z_ShT-D?E;$is^`-s12FRl&5$dWE^;{o35uU{XFpDeWCtr*NQC+!HtE2OVtenpLiO% zIy{n?k~bctJvJv*q+{n0o~u6@mPAHg6fO*|GKrx7ah@l~NELUX_?wJ%%~Uu+f40x# z_>Ircy~eEehuiOs>*4ZB+M@Jlh9UA0jlR5bsci;YtoEpR8soI(T8xs`?VHS~YpKe# z2Q#%UyD10ieNLx)l$6Y-(6xxC779&24;HL9zV%UFpI~$X1zjX7*RMhbWh%L+z>_#} zedd=~U|bXTm?Mc->cV!H8z98F4Jw3L&^v_RJbl2MvO^hw$nrc$w@~BcMLD;M)Gk|_UF{Xh^f}DZF-V?_mvlR{#6DyzL zU1F`|EOx+t_S_UjzXd7Lwkj8RO?45|8pRl)m}{JJ_@eYJ4sGHpB8vX%vwobY!~L!U z2N~mDmwQ;lxb-w{cSIC9yZ>P7R=FJ%Wa+kF6trvDR%cMPwZc>a%pK;4wnZX-4|2(8 zET};yF>zQ2Pn%KZ(<@l?(hBtt7DC5Fne$b}d4q1>zh4kksLW}9pmK^c)Sj*$t)4yV z>kAZy)y*;L!xD{SOcc5u;FX02OhK6a2tOL!5I>$E*LHlYy zXM4ihP9rJlrjv7{Fyu(_N?fw`0cI|=G1seBWiGwaraZZxGOUIWQc`Fio8p?QVjZ@P!$>H_vD6|NVDEB z=Qb54Q<`!8XweJMyMi^(@doXIub64;4bG3<_woR1?F7raW%^Ur{HOs$eXi{G8|B_z z)GKD*?sB~a%=x2*28Vn0LFDnLKF6quQ@AT55R@$;3t=M|G{jJMN- zr0u(5+QgCBim9yOLm;LI(r&F7eY9d&dF(y?AduX21bJ{Sa?HRx*RxS{`r~kP*icvE zvE&mLEy(zM`WT2WyNp>RsFq?CIT$itLONoqEOojb;7;p$D>GZi|lBsvCAxOMyejVaR(+6R_9WrQv=i$7B z*QcV3yji%b-9MK`(cnx(8!qIWIR}7>1x_H^ns2wckSI3a;Tq6~F`*HRrN{X}BXf_F z3f10jlg>hvts14rbGRD9McVbZaSOz#%+vW!p~L;OpEoVp+x)aojN{W`h3dGWQC6%d z^{U|zPE3{1{*GhwB}CM^p$pa-QZx$|$TsB`i+z<8$4hK5V?UU43eKgR`lD=5nNeOe zKP0Clt!{v=$%P;n5>0NSlz!-l$9j#mD8vYa{YgF|IkOj)GbrW@LW;G2-FZ?20WlGT zSIaP#&h2~lDJz8YR{F*W_Oa>_`=^i{0y;3yl!)uGgS~z@`LdWcp7aM?rM>-&4a7&- z+03*aA3-zgfQCuK?HGPy6?(x_`b{4 zJCeQ|dPl(PMQmAgyN4~?xRHVO)KnCe=Zn&=SU@ENEG~@7V|*|@U&@qs3qOG4C&c9f>x`s!Dj7~4QX78aYzKK4!wU9@nzPDB zS9NS~1@G_GCvOg2&AO%HE5>C1M7hLI35`-DA#4`8@ZX0_M<(uUhi7OB4CMV>aYZ_H zW@z{@cQm!M)D&mGq$bX6C?+G2@v@F&Q7343woA> zRvH=WSPLsSej3}t<5a2!-Nhvx)ZNXzAXg&cQ3Ph{nZ za$IsybV@E)I@5{t2f!X=%BAjW1=qXD=n2C`zb`>mQ5>_(EaRzHh59KnT^JLiKgx}Y zdFgQo-(v`9haQ0oA`H^XU1-6jJjON;3C7FmKJQLS{cxWMePxwZ!SIA)d9p%3Ix49uN#AC^K62D=6CBoZ zfl)$1t({S7MW+z4M@9ErruwFT;wGG(GhKlSNyp9}E%rq$YqV|c{WH^3DVI|8#u-+WkrxU~Q)o3&d_+=5jJDZ@ z_Ow<|qGD7H1A}Cf?a43&@nK*G9C6@Lnuc!j(TL2NjMP7&^@yiW+iDDqeC(N2mmD`P z2Xa@o%%VVh`Jx@az-IQ}tkQAZf6BBZK&B>|5OQR4ZS2JF^$LnG+@F<2izk(O>Tt5^8o)8VT z_7e+P^Lb(`O;N%YKbz>Nr7UD{^c3OldVGq!R?KKkA*+?Uz!-IZRXQR{4e`yhWW@G- z(uAwrleEt15LOa}cKGc~5DxI3WKQ3E`9`)jZL5G zORR?xht?I>?7MCVeTUK@grhVS_H!X=jnt)P`C7FSgY|Zl_IDTY z(!SHK;_QkQ=)*MYhpBg80s^j`WghJkpiq0}eh4h#ovVe3%vtSkq|^7fUq(t5ZF%LR z#=HZ|f@5-zNwmwyGi;MQY|~ylVaT05^ACcv%p-AD*zf~c^!J~2CgT6fADz)Xt-W69 zCmd<{F`y(6$w@vx1f1|E1|H!x^^god)pLXv>a%$KpmbMv%N~AU(IneY@4S&@h%M7tsOBk8cg*wHou@`hBjl~)0xyA+A4fT!Q3mgq z(rjVAUb{OXFYBadk6e%>95}LOsr*m~X`DpIy;6e+Thtw^#t)Cj>~X>pMfmhBS6@PR z%$$*7y?EZiM~;R7%cdn5-e+KmlYiQRbxnAR7qaQKjw*cO^ILr+`f^((2!NjA707>g zko{?2#T*@N|FEwPB#eKVScMU5WJZ)WnIIYLAhhA9DRkN|O2viHXmWT0h{XwovWd8 zfos#cmG?F?fvSh*HcaZ8c}$r-%7V}wr&wDttD|f+6vtiV+<8zwiHP39r+yS%Iec`x z`^sSOnQpc0v>|Xm1nGIr>T3eJ$Ts#~Z5ofb>6oU%er5fry<}p6Hp~?aT0cozClL)} za&CvZNYAD>_n35acuqE+YnHP;W};u|D(V?;v;Vx+ej>|I;=EaEN);NddjB=(P{O*Q zkbfqj@&Tk>YKo~!2k?_XHZY{uPo^pkErRrTY&|R!vqIa=X|ZQpl8UN{qWCf&N^0_9 z^(LtV)%JY(o7E%Y1wY$rEgVShZ@{YlnEn>F87OQJvdSUgL|k4Dt#^;FZlbo-7;8bC zIjR0&P1wooYK6@r-5=Gu{vl}mOP~`2_WWK35LfR_{q7yqr$#B({?K9MxoG&O?W*KC4 z1>zRuyZi!cs>@&U-Lo+$%(KNa67!`~zmQqQemLT^LSk_0ydGU$D_fhZAQ61_g4`%- zsdYGbJ;-tx=e?RprPpykHh(9b+Y`*SYe6w74-ws&%Nf}c$=4eK2MTw$W*%e-G%;?= zVtI}h++rlz$@U4e$Ad_p zSweM%TC?cqdn;-jT(j~|k?J5ohKmreslNPJ-~ylO?6)yKd{QH*A{=NUoWYB@;fy4M%Db{ zL@f#xnADsO6WOpq23)$kx~YcBSiqSTZ3nA-wn{=2Or>av3dCmd18q-~I`E!(18t}` zhg!H3*8Iuh=SbiJ=3odjf05QPE`4edn*=mvj#7DIIRxc3Noqy(v%}9gvye36nxo&^ z>?!+-h4}{Rr+rO3>ui{0KQ+-wOTc}w-&Da}+2x~u?~EOTsJPv%JpeZgje_~}=X3#GmWrFU#&nkjVWlHbF3B#D$#$IKYI~pI zn0au*`=xU`u*a}&51SA@z$!AW7?LDmLi84SD649iS}YE{^3b2apjtTY=DuI#fW2p3 z&Cf#(2Bl*9iozbHP6XEGJnAc%?Y8fyXfl+Tu8y?Hu*|wzo(IAY)UgT_A=Wf;$P7FX z(d1>CzS7yXx%FZHrAohVY%S5)HgLs++)=hSWB^-{bqy;@a?VK}`ih{08_o3C#h}E~ za$z!#Oa;~7@vw(>FbUILY2Z5(H}`;aN(7cWSSj-XCex0cVJ8d=_N8s{7zR^<(Mn_$ zsWt}3BZ2`M?BMFE96PgVO@0i#OK1F(s23wRLos3bjtmaE+Lw0wZ^j>tP8r1;8$V$n zHPOANDKud2w6d{bK{;W2y6Y<^3^t%Qn4Jpok~*gFYcV2_YPd;AX)={$rN@}7@4v7m z!C^XOFz1nH(!hHMkDZH$s{)~C}u&s3W=3CJK1mKL8A z$GzLsArtiEz*HG4Rd9n?3w~m46&&Ea909ga1m_%(<6`}>%a0P(*mr8u{xQ?=fUFe0 z&_hv?eA7{co$>zSofIs*F?&2xUYhK3)I}Wld3U8ml~3e_>iWFa+}EwOE6(Xw1gb zQ>I7v@SZCZy-A{CI{-LC2Bb@`Y*AxXTmXcPVz@+ zU`gX<%Vb=UI^GYn6t&kQOA54Tk!0u?5rI)@w>-qX(_!W>L@z3Z4;zqLiYeHUrDsG@ z%z0}Eg(r`A^7p7}`=>mb4Y8CEUu-@kufUzw_@G`0!m(<93oI{%GQ2(UUS zgI!wXg&HO;R%3t(+}PLYD0FLo2H|1RgUAR@l7mG{EWZ>)Z~!8@g>c5}yodUpH*`VR znzqE%2~MM0K9Am@l*A+QN#)Ves(Mq*%+|$-puf^zutLz}8L$3{-V#=HtRW_cXXZHG z+jYS_GB84{Q9p3+PRP`k8)JW~#*8Y+* zzo%29ZJ@&R8_BD2IOw!vf7taswj1|$>rzZAZW5y8hJxE}Hp$p6>z3a+gm;bg$_kF~iQ;Nhd;Vm_T*YLN1Hli~f;B^eP;T681f)4|iFG z1RbmgM80Rgne?J9BLkM19;U^cEH;xI#iok_xpfprT;Sj+y1vZO^#W@D({Lr9LorL1 zix`;#%Z=aR>XzrgYFSd}yjCdVNTBqYq*t|fN)@{g#YijojEMu8Ewkl}buH9vk`KR- zeTs-f&D~_e`nki)WD25~FNww`bq4{L*8K8WI}yPZ5%)r`TO%tp*PR3W5tmB$W4@PB z`vJA+bngnjgEt65RV4(F1GqMGmR<%1`{PoUN9MkX_?&8a@U|BlC#}!8F2YBS^#N^N zgw6BkV-}o zU(ko@!ar#D?F`gV5iK}rNaN>TNhi6~I-Uz7y)2J31GWUnl3ECNRDDmAvP4qCuUZ-g zQ#mlOs|EJktIBWCn$V-Ar+xYCuq_S*3tPu8iWfASNF-4O3Tft)!NTV*h~R&87(hHs zIC-{@+W>h(d84UB3vvyK;L%+k$!Azxf@ghW{=Bnm8Z(IeK=Gx2d(Ba4wEd}!Je$?E zP;OdLdxt)`v)hiweDXL`)M1Te7>vxWp3i^bJfj!OccwVztHeIdC+x82)DAPGwB5$B zntEZt)X-3CiIXiK(_ss21dPo zePSM-v>6{8)|9{Y;lNFmEy!7)b$yLTQv=z(urGyBj8^akgtV_?$3+dPQd!7XuDKtf z2D@d6<0`(N5<jx!R6*TE7f7QLZ~g*#B? zD368T6B3~ZL#{O>b&?ANeSf-*75ybkvp5XTaZ}|MXYa~6U@|=T(%BOSd^{IEOMe38 z!2=GYLgrXIgDb+K*S+Q_&e;HD>3Z70caee$HT*yuHN!>Oab0=JO;z}h59rF4;;7u` zrDhRSr9u10`Rj9`%oebwPOT5xHr@+qSr1fB3clTvYGsboM~Ayk<&zBA%PVvS56?!5 zd&7k)LxpsNX=xbAQq5D;Bx#V()8;gn7K*Of1G*GPFA1kGmGWk*lDlWb&UeUPUA}C& z#BRMGJom@w77QE8>#gJ=-4WHU5c&6KA6a{X*4m!EalWl`*X0c*JNGdY%P~W~E2XeE zIQ_`}KrdNR=x2lNWl-cNBq=pj8eeottaV|m{>uwXl5|26d=iRi#31;X0Qk6oXr?i| z0fNjy3BSEqy=D?MI>`T(ej*^Pm5nY(0^{H#j=ALN!M2W1wiE z`285TEEQy`5Iw)&e(WY`sZJ8;ISXV*f!Kuy6N2t|0toN^l`+u;)PkpPNQXo(JykyE zpcs<*kaT6ZjIvQJF5em^E4{E4MDn3kXmR7qYZm^ntGId> zv_v2UAF8=EX}&hewX=XbKA{&pp;v_Q1-V*77Bcju+w=oc__a-F!F@YLPqbK4{4ibY zTG(BfJK;I(JlbSv&(h1>-IyV|mbR zYI!f77w*VIKAuhwIBdOdxLI3BYq;8RSe|%j9?1skKpjOz5k;7K`hH1E`j9N;s#npGvjRJ_A&K%{(;ivt)9#!#;rm=N#Z$fz}|V zQdMC^3L}>EpE#M$CI{fB@?|(QUM9dk>l}gT7(M84b0K~X_Xe`wR&o(r&nP;lC71)M z%f~!{l~G&Rb8$j=uwXBK;+_NY`zYR%ijOwoeM)N|UkqVhy>@95r&g$^&*n@EHDycn zRuFq-XAi#Ln;W>5uA*b7q$kYwqDgpD&xczT?~T_bh_Cb-eL|Op2y=G~1OJqV=n|5F zfzYyQ)$Q-U4PKpgO2=1ghUW2c#eFseyH97lCV}TJ^k+adq+~D9R5xu-oW}-#;yYlM zVwEz5{%k)4sBWZPT|T)USq+xwI*QO80rBvU`S+H{!MM|xerBpddpU^#tEZIR&=L;! zZ@lLbT^U+lfa8N~(ErPO4#*nw59iKbuAM|p#T5~ZppAND*W$A88<%g*QldLvsL5-aVveH(hgv5k| zCE3_eJzw-qsVc0#p9oJ>9IKcZZ#ZD)8}u+pe(Pb#OdS>-RlgpnT{{%c3h)L?V(4U8 zcBc~To@+}l!D3~yWlliPhMizww)n*TBti`dvqcNp1GV0798@-@2raUt&=!=p!8X!h z=-R>>G#(t-yu=B!AlSXNWTc03F4mN*2eY$VXR^T5=Os8HS7f3IJhLa1)+$Ko)m$<1(@;31kg(cCB)6V zkN2a@hwP}}ppzX^b9BZJ*H_5ul7?(VF|tk5&)<^@!W*V_38wja{2nGnDJ?Ud(Mh!H z{r#65)yap1ni|=u%ukA=q$$xC)d8|7o?$I8{)i3~a>i?#b&~JLe1F_Ys&sSp*j`EC zlZ!jmWN$Kij())%yLuTOK}wYe-ghXj%)5Du zPjQa~e?;6|U62Z!p--r#>03fkI!TU6je@G*Loqb?9-Owm(1keM2`u^|IVzf|@_tC^ zqYM{Z?I$Ufe>_=~6p4=8B_2vGCXY^LUp?iMeuh=btG%?vZUjv*5k;4+ob> z?aSzG)E?dQRAw_^>&=cmTb5EkS(ik0ZTLsyu2=AzXAE|@Etp__GoLA4w;QhroXD0l zGpjV~ikVwrNsGdmK*!>db&}&HOXKV?;wi_6TLp%^t2|n-(9Uh+r@U|sE+?0PgAUr8 zeVvYUq!$-o%Qp(w=EPL*LoB0fEM==k)`$?MA_aaLA(fDw)FrPhSuMq(v__{sh+gW% z=Wu|^EL9%zL9~J#Z(f;bxwRv8XFs6tR}!pe%3EWz(e8qXVRw)FIsabJ>e{ji?eN0>R5(GW?lhTDzwR zop;&H$8Z%7GpZ zT1v~9M9km-S~tsM!V2ZU4(#xqNUD}}{}bpw8jw|Ew7H0Wg@_(c8$?`17GEfJKRciM zBZLKG`Peg<+h&<3|ZiEe&CA|LE*8$OyZ=KVm(|mbmfXzPzz~EtNA;1&kHHfAN+tQot2Cbz~3!ZjB{Q3)$kY1xy#*C`o>A7t+!7eBAClq~xUn_F!B#pH_#zwc1cO8a+eEz*8dVh2oyPh~1O?_v3C9qk zIpRop2g=UbPoIL633;#D-mR61BSyxQX;15un^IbNL;=}!3S^7|qA7&rRMoK-l#8mL zvvkycuaU+~qNu~3BS#wLRYc;536EynOd!5E(f-@fk_^KQ>sN48ycW#ZO$U&&&v``qLzpayas!%7eoFjT)p z=>exSbklxi7XmXLa;&YJa4Ab0BGUg7Aav0muX)=HK^9{wS8%jrxQKl&2cw_f#}0Nt z>iS7 zQ$gXn0K3mU{OBXi&EvJAf+f16`EbJb*{}Jgiu-1iTUzZb13K?>AViq;!C|c@M^nQ$ zGl$5EbLAl742w_WCEwJFv8B>bp&Bc*u?^anD4;!Jl1}nN(WD|5lA6A@TqQCQSa59N z(^wukg~e{kwd4Q-?yZ!MFOZad+qzyl=Mx4xdquSCk(u_^_fpMW5iL1_h$dTIL0HeR zz-Z_!tjQ5(2dF^PG!t#IXF)3=R_sd5J5Y_hTPROiHI6CMQ14ngGRjyjGAcuF+e{k; z``kG6gOh}pw;tpt%{p|xw$xaR`)fODCVjzMv>mcsPHif0DH7Fqz_4qKeGr}jgmpFV zojW}G*>-<1qiWi@{oZn2)yg5vc9vY0>y*4POz$9_`e7|3xRSiy_>ePWPo#h@-4JX> z%SuD@F25m?&H{JT#(Hf+ldjOMO=r3wyI>opiwof`Y z*C}cQXc3f*H|#Qdf*txaXzpRBic)Ud&{}$~Q7&dL)ZGtXT0Xu87?^DWdFQI2UJ#`Z z;9)-;z$xGaSH-PAc*77x@ki)~V7okR)UR_6_YzfE>|9rE!B0zXa&W(#@s$DvPztaz>|B(HzmtZ)&pKuW%K_XPr$ zIFP^(;tbbtuIrum5HxXf7}j|bNNYkI9U`$%8C-BvG8>$Mqoi(4khdHL@uMw=dYbUl%J6?qjd0!i1Vt`?il z$-F$9n`=H;^|<@=>VCO`|E^-QArNJn3$0zE|anEG+E=P}cJDUlUFtoNDwP63r~I}!U5(%TDS zg5~geH+<1+#(WwfPVSEgy|YYLW{toPs`4v5onOr&3goug0j7h(;K40-i)LNILuvUd$NAgnN zlzwc8m^d+<8V0MvW2HU9ozPBEG&%+t?SmWHH&Hrf_SY=a8eWZ`AyE;@EwAolcJBt- zum&+BZS((eeb|r-(q|+mC%Jij2N41p*{qvBg)pLzJhwul=}4 z^#VEL3QXMAQ{?EUPt>KS51D08Z_zM2sqAZPTw|J=l=R*Z_1uNgru`mf-*B-{8wc4n zev$zR%M=OAZM~hEqc;EGQ+cW|M-twk&Q?RIWV^@%t5)=$PtL$*yU@c9PnJTcDnpgdcK{^CcBBnRRCHjqjP5KGiS_}d9qe`tDEGYekNLny;kn1@vVcr zDUb9LQA=$Ub{$3dggL*a?j~6ohEg7v?zF;O1Q9dUi|~B!^(?QHx-x6J0RzNx*(tS3 zKPL@O)e4Fnl3|D8)=E*6QU-ORci$7|(}DF7q558x*2+YrZ3cFoa!y}bs*|!jc5#J6 z*#*6=WSmv&8zBf-Ks-1UU{GfQ)PH|Ju$7E06|EfpxC#4fU}vbFs44-HDB+r1!1XAb zd+urWpdexj4;c-L20+5Vr-ats?TrJ`jjwW!wGrp4PtJJeo0!0lof_Axs8?Yzmbc%r zU4I2XQGDgEpGX0EPfUnb?lHdR!t3La)i&|`yl}@0?D|gEJ?4E9aATO~s2;`fJe=7} zv5E6z+Dc3F8N+Dt2dSQ={!J?NmBP**xpGa$4m4KxxWbLCRMdk)G`43(>h8RTj(#T2 z2pM{mCMY=wa^a|%yZ8?aq%v;(@( zTlZuK#W74w`6${Y1K}MoOqN!cQbs!JcQ=47{1t842(&Va4B9UoZj<2&E6AIOrPjY1 zpXpOjro?s-p_XBMSQmFwArj(2?ELz?MAA5?URaoXQa2Y`^e4DV!Z{sF zkpjObCCjd#Fe9}Ubr#=KI|OSptkc3ucxG2wG-^u?Ll+{>VagmphA-s!kmFStOO-$a zpoQ7#>dYW%$^6{-`aW0|#Ua#-oeXCu99~=4NuO_f=Q_s1Ra>9kzCVg22gW-!Di+J) zxDwTU9h21kc{{Vm+s<|QH20E*fBWjT(-t#374uSdq^c|KyKwusi`>RkTx7p)6QTi!(0T`L1pVNW3ymtDoCnvMm zWFlIF*6x^*xhKZ?`FDL|gWJv%*)%p@4vVk=XW8q$| zQe8V#nVoS;Y_Iru!{X#Fcy&Z=Fv_GeKx%^uv044hP%Nn5Crj2gN}jP;72`>TK*SmnnWC|Ba}(SCGLV63aFt~4z0C?U@fWA`NBO^R!(*qOORTc0jrv!0)qaATCR z-YtB0(CEp@B(SjxbJb%Q#g44vLaw$>QoP4IEwZ+~THCsYKVUMQ@W<%czMcv{q8^wb zUmsWM8Vrm(GEACbdkmqNwhWC!Coe#D5|B^=ZU7b)Mta{rHY!*7-FDh1DN~B%ur(kO z!-geSz9(^~c3txQd3Kl%j=@D(wMHDbXBqjB%I&?|1x`=yN(Qexhu0|*>hTt_PTi&( zDt(AN52wr-2chW9T`+R$IQOBc8k_zmTku4b77CX4IVZ0@52-S1P^&8>J+-TFUzuxU z(D$zl{)vaB!$7pDyJNVH1d_)ND<$_h*@Yw;Y!8SmBBqjR7SZ;MbF|vw4d#%7t)`*Y zMUvS{IO*512nf=WGWX@H!yn zPHAR!bTu5>QdDvv;gq9Ne z7RY7x@Y&0af~~p({&X;UcaJE3%4gKciV5`X^@)kJqa9JUJZRq(7bPP$zEq>`YM`b# zN}5s+lIpQ>6%%`&9H9$>fFblMuppT-4~IHH3y@U5pEDzks)8}XZdQ{_r=_~DuejfAvZs0Sz7JA4D(f1^Ra~r0F%1w}m*Bn2C zKyV(#NhWN3!~rREOyHDvp+NYOv%G|NyttAN^mPtX-xgFq1{8rqh71z4wny=g-Z;S; z#8i496aZ%(IwiYdbl0u~PcnzB`8g+lNwn4REvlvoB=%br@NpTPx< zl=M>*2CU_7_3%uPJb8xifN6?s=k-{BdQ%j1z^aKd?U5)4WvE4KP>qR(x=X1@;Z3a~ zjdE>kM^6m$kdV}Zl5lpeB7w@&W{o6w+`s>IpG=x8rD_lt24xMnPaXs)HvADF^_w*D zf8}tu1!RqPwXz&j9RtMLA+#S*Cax~Dh^M`n$CWCTLLFy`QEIid$ZR_<=q$<1TmUB^ zyqAH1Q&xry)j<&O!!Dqo;d?@JZA)W0g1;%`?+T`JYQOZ{a5dqwL%ZwgTojBjlo);h zuDSvz!nj6AKd8|cBOJvW^l(I_NDVxtx$rIYnAl-%1G40#kginYoqu#9;*Y&S|&aMHW} zT&*pVS`2G5ETU3Mcf!rGcs#fI(D1{TRy;5bi@9E_qOinT6jM4O!QXK?%~$P5(qX9*)l?g!(R zPH3}{4pO)UOmgQ!zqB9wDSV@+irE7UFYFy zYv;)Y$TmfBt&P!ZmB4*y|ADkH$Tmajo8Tl~%&2{4`{KA5p5o+gd|eFnAsrD`eA-w; zQ%17DZE8F0KL6G-wk`aVj#D`woq@bv8+*uGXA3uHxRU%mq|*I3qp7NqDh10!+5 z>Oji1Yr1eLLv55zASHt+E)C!O__?&#m3B5Do22U#G4ISlo3Vf7;yS1w5bmr$Plqar z^(oB$|1=Y}j$lk|rVqXs4=<-o?Ht8V4k_MfEtAW09L&uSB=(X+r8Fjp zDj|yiXN?cHFgZW(dMO2wv$+>@m_D$4ea^si2#IOk3?ZHr5^!`ROT;j30G&6-yV8Ri z_2X90W_Hez!}8gRG}NwaaZSFo;PTihHJmbQ=95!xKT1_pJQZu{-92Rixz7Cv$Za-w zfJ5!oPSwo&Yrw)*8K`1X^q8;#1}X>OMf3kPU~TPfY>n+5&5a!-X{d&zB&FysrK+XJ zC&tDmcJ?Ibhv{iQU)&6rQMon`D};wJUtL+k-oQBe|HJ|D<9-%&Z3bw(00EwBEpJFbkZV!5&%9^fN10&gntzQyn+1J z2ZVRu`OE*E@bAT7-V_7uA^r9Equ31KJ-|i*qCfv=>Yo+8E%En?ZvHA^;9_q4KZ_y! zvz~W>zwTWf}s7aNv8h=@~7M9 z-x+VaBOqA#ug4#kI}O12SBJLJcQ&^E+f{m7`0w9h@IMO!z7(B{yX*gi;Qg}!|LAZ( ze-HUv_xly|9OV`LTmZNn;ee8q|6;v+m+#9CnCRdBtiQUS;6FR!pRTY!f23bn^-0e? z0|1r)fc?Yp{PU6TOA6Q!`8^h}m-~N^QDU9tU;*T0z>D#pSis+W-zk8W)bGg(`UVE( zj?(h~2VMu>JxCdVh66O5?r(TnfI0d-UdhJ7*!urqgPs`BC;}Q;0O&SEe`AjW%*|W& zUqkfYgxlZ#$ZwNF{}Y+-s}Hb4zv2DLNBS1`Hl^t=+#~Amac;i{zD>^e3+RjeTj0N? z>U-P3x4E2t@p1`&%loHwdYjqlE&OdBk6&;QivJV-A6Y%#(%;JV|DxLihR1I%6~Ktu z0*09}y~2Nr_`j{-tmj6~#^%p;h?YI120;_LvZ?)fk;kbE! zi~D`+-sc1oY>-@?;4@13$zC8x>3p%d(e?tHJbnrHi=ND4f;&;fuhxNQ| z + + + Finish + com.wzx + 1.0-SNAPSHOT + + 4.0.0 + + gateway + + + + com.wzx + common + 1.0-SNAPSHOT + + + + + 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/gateway/src/main/java/com/bwie/gateway/GatewayApp.java b/gateway/src/main/java/com/bwie/gateway/GatewayApp.java new file mode 100644 index 0000000..962bc29 --- /dev/null +++ b/gateway/src/main/java/com/bwie/gateway/GatewayApp.java @@ -0,0 +1,11 @@ +package com.bwie.gateway; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class GatewayApp { + public static void main(String[] args) { + SpringApplication.run(GatewayApp.class); + } +} diff --git a/gateway/src/main/java/com/bwie/gateway/config/IgnoreWhiteConfig.java b/gateway/src/main/java/com/bwie/gateway/config/IgnoreWhiteConfig.java new file mode 100644 index 0000000..5705d6f --- /dev/null +++ b/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/gateway/src/main/java/com/bwie/gateway/filters/AuthFilters.java b/gateway/src/main/java/com/bwie/gateway/filters/AuthFilters.java new file mode 100644 index 0000000..6cb73be --- /dev/null +++ b/gateway/src/main/java/com/bwie/gateway/filters/AuthFilters.java @@ -0,0 +1,64 @@ +package com.bwie.gateway.filters; + +import cn.hutool.jwt.JWT; +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.GatewayFilterChain; +import org.springframework.cloud.gateway.filter.GlobalFilter; +import org.springframework.core.Ordered; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.http.HttpStatus; +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; + +@Component +public class AuthFilters implements GlobalFilter, Ordered { + + @Autowired + private IgnoreWhiteConfig ignoreWhiteConfig; + @Autowired + private RedisTemplate redisTemplate; + + @Override + public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { + //拿出白名单路径 + List whites = ignoreWhiteConfig.getWhites(); + //取出当前路径 + ServerHttpRequest request = exchange.getRequest(); + String path = request.getURI().getPath(); + //判断当前路径是否与白名单路径一致 + if (StringUtils.matches(path,whites)){ + //一致 + //放行 + return chain.filter(exchange); + } + //判断token是否为空 + String token = request.getHeaders().getFirst(TokenConstants.TOKEN); + if (StringUtils.isEmpty(token)){ + //判断 + return GatewayUtils.errorResponse(exchange,"token不能为空", HttpStatus.UNAUTHORIZED); + } + //判断token是否过期 + String userKey = JwtUtils.getUserKey(token); + Boolean aBoolean = redisTemplate.hasKey(TokenConstants.LOGIN_TOKEN_KEY + userKey); + if (null==aBoolean && !aBoolean){ + return GatewayUtils.errorResponse(exchange,"token已经过期"); + } + + //全部放行 + return chain.filter(exchange); + } + + @Override + public int getOrder() { + return 0; + } +} diff --git a/gateway/src/main/java/com/bwie/gateway/utils/GatewayUtils.java b/gateway/src/main/java/com/bwie/gateway/utils/GatewayUtils.java new file mode 100644 index 0000000..7b789e5 --- /dev/null +++ b/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/gateway/src/main/resources/bootstrap.yml b/gateway/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..e85d644 --- /dev/null +++ b/gateway/src/main/resources/bootstrap.yml @@ -0,0 +1,31 @@ +# Tomcat +server: + port: 18080 +# Spring +spring: + application: + # 应用名称 + name: gateway + profiles: + # 环境配置 + active: dev + main: + # 允许使用循环引用 + allow-circular-references: true + # 允许定义相同的bean对象 去覆盖原有的 + allow-bean-definition-overriding: true + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 124.221.214.183:8848 + namespace: lc + config: + # 配置中心地址 + server-addr: 124.221.214.183:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + namespace: lc diff --git a/gateway/target/classes/bootstrap.yml b/gateway/target/classes/bootstrap.yml new file mode 100644 index 0000000..e85d644 --- /dev/null +++ b/gateway/target/classes/bootstrap.yml @@ -0,0 +1,31 @@ +# Tomcat +server: + port: 18080 +# Spring +spring: + application: + # 应用名称 + name: gateway + profiles: + # 环境配置 + active: dev + main: + # 允许使用循环引用 + allow-circular-references: true + # 允许定义相同的bean对象 去覆盖原有的 + allow-bean-definition-overriding: true + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 124.221.214.183:8848 + namespace: lc + config: + # 配置中心地址 + server-addr: 124.221.214.183:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + namespace: lc diff --git a/gateway/target/classes/com/bwie/gateway/GatewayApp.class b/gateway/target/classes/com/bwie/gateway/GatewayApp.class new file mode 100644 index 0000000000000000000000000000000000000000..e14652d5972db857d402f5ee97fb1ab358aa1ad2 GIT binary patch literal 743 zcmaJfgc5PjPuHFW}MQz(>D5Vy1k_FM%jK_s}C4-pg&oYwBv-D2-X>otL&#R-H2 zKY$;Fm~kp4ND*FnM)UP%_U-)s^WztQCwLHJ1FZ<{9y-_**uGSslq{6Z@W$pbdbl3pMh|^#3miM2 z%WB4vbFWH0cmAVHoeOf(I0>gPnF_{PYU^u~=`dN2HZD|EjXtb+7HvjH$vWiB*`PlM zId=Bk>6;tI6+gHwZxG^Q_!9gX@rM}XkGZ*fZ&B8xkHvDEl78c zzd?L$!UK{V29@lR>@5;-6Sv6P!X9oD2p69;U_f^ewSHpjJG$?e5WJq89@AOEba4m! W_z@~TXLr-4G=t8xIp@52&vTylJAeLj?>>N0 z6dMsiT^vyjG1LnTxhYssRlGd)7Yt=Hcqe{ud zYgfNG`q9S;B+wLxrePbJ1$q<>Sv0dUEA@HldJC>?>8CSirp{y+jGQN+dA2%cJcsWI z?C(!6$jeeMO1>WGqz0-)fnKT!E!Yu9tA;kT^O^skE)X@Xd0XH>HGGIwgS@#UQVHzB?l`(NJdHj4{&D8KJ7QXIY{s6->HmF#W%)kR&=cBdwGwXf2b5SFq=%r6ZRN&v1xb$>a3^)HG~>#P@H> zh?=Sbg5}X#<(@Ft1Y)*VP@!p3M)g&SLGz{S$88x;<`ySqDfB>WdS+sBoTwAbI>&I! zMb>(JUA@7xD;3{fA?TNU7!>B^NUj*xP9kHMot$yfRQ~SV(!dU>iW2CWDO;YoWXzhb z$w(ZxEZdWw$)puH?5B-eQaxr~d2!ix7F9>|j4Pfl*H!hPC6*okB4cu*_Qj%Io?E|8 z7}Z#-P-cvInq0`_?2 zg1DX|OF@db+w1W`0+%4;$f_#Nu>>}{l4)JG7Y#k|F->J*pOiVzc2)$wtS+`tF#tU! zt+}G%_N8rmv0O@3rAQd8D#@mcXPLq^)Gt=)R~lNCD1;c3#bSnims5v^?%oph{vZ)Y z1v{WNVOfUbcL>9cqad(vi_x`giDQ8S?a8Y2c3?Pq*>iWXJ*rR6SbxU>0fCgiA3+26 zqd0~-yh=%yYlLh24-l>K!MkYu8QbfS9Q+9#-&0}T-4I*N{&b`Jpkc@CQ&V7uXnoB_9B!wJC{8SVa6{X&iyo0XfFX%ac2fg9*5&wBL zNEBR@MyaO*_?GZ#p(YG96qZgTg%wNwh>n}w1OWBEu=;W=yc`gEgWq%ZgdjJ$#&~yZ zF!?QF(Hn!mA@Vh1bvFioMP%||@;09JkKF8^I>?Ws(V;)k)D`_5JFY_;>Wbb*($|RI zAWY!GfI_>^e>i{-Dexhj!UQRF;1Evp6ybpF!JCvZ66ivjyC^1!)q(nW!(V8QBl0&o zkL z5#`#`k{XGQ`VQ!BNfl^*L(AZG#D{KU=+bC+ZL^cX)zIuZbYlu<2pnTrr@4#pXITf{ z^37Jp?nUGgvnEPog`lAj;t@Tvai*BpXOIcm4Rck|Pbgyd@I3H%3Is+6`I88VG~n!d zF82EOfyUOzUA%M)Le+rqlQ0Ni2W@zpvIu5zj%ynUy~Fi9|1VJUqKkL&9uKO_-sk@u O=6OnRmxqZ(bo~oB&8+$W literal 0 HcmV?d00001 diff --git a/gateway/target/classes/com/bwie/gateway/filters/AuthFilters.class b/gateway/target/classes/com/bwie/gateway/filters/AuthFilters.class new file mode 100644 index 0000000000000000000000000000000000000000..a1d5ad7154b08fa92843bbee637254fdd7a4ec49 GIT binary patch literal 4139 zcmd5%OK8Gc&Vtkxqeiz^E@;8-@2Wiwzdqcu*9Vk3cM8(ju-&hEB$$C{m4&-6-& zGlV+{5XglI2_z7zQk4%5MHyj=qh{Ur)OrxN}5_+Ew}GsQ z4KM}zi+9mLY3cui*T`lOH5pf zp9oy*2W2a)1&&vq3+$>~^n-b8Q5LLF1`9H|PqnHsCMDpn+)whzSkH!EE0k-_5|unW5lTw}t*wF3Dx6pF52FRdY+b$iUgn06x- z+wllPOh|#d22wrK%DMT$@yJMUt5z?#PFNuiCVbD2ytT)~^|&Es!Kk!Lq`tsF zD;8*fCp+^7ZsP8>5HbuxWqT^Lru}*8F<|1K8SEA4RQg>O!=Us&lOfE=>`#Lz;#|{d z0vWpYkP~R4?nv=O5**FW(cb>Ki37NeZgj$f)tXuoxV%}II0sXj|6Wn%2ajj)3&wkN z$VMCF@#b5aJ+7usRiOBTkf3!AG2jc_m)-6>IUOT@iAQW4cRYExUM;%?JuDr?`3bugk;uSH0vD|A6AiqwsyB`q z%U2UpRs7OXTQ`fk?-h9aN5!aSi)VeOl-Ks^J|IdDQ7UAMn4R+LK~XZVFs^!=TK8)- z3<5h--5kX|1OH&lvd+%5>l=8NrM>l5Mr3R& zwz96b@y|mon)x9Hfq>Pyi*v}iO&5KRDtfN3T5IPXe(7;s;Ht%0aPHjsA;f>8?TZ}s zGWbRGFh{MN8?b~&I17qAigqn59^%~1cTes70LB^g93J`z7xJs6BiHc}asp>?<#1=N zbN4c~pTdS+Tpen|X}x$Iv-izsaLaI4u4@@TJB6O1zLEEFa2a==)^F|_HmGwpXPm`x zP|y9t8IjAphrV3q42o|cJJjbaWBznQCojnH zBfS0u_F$S_dkHrXnHy=?Es>%3#l|Ft(kwiN$0OsP!V`FscxJfvOTKTX?vwZxp602W zA@K~JB|v$$xO@53MeV!s9G?uHu?5fL1xmiidub?R9lxfI-|)>Aw12C=b$)B$G6OGv zjVn2RgCUMu_;=jW-Nt)>H$dXgSE=PS{GOxs;4aSEL2d2-)?cAhO hU4LBR#Gm;4&-~9&%j^9A8{X!xET8_4ckoZ-{tsl}?nnRt literal 0 HcmV?d00001 diff --git a/gateway/target/classes/com/bwie/gateway/utils/GatewayUtils.class b/gateway/target/classes/com/bwie/gateway/utils/GatewayUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..2da8843e56ec6a209ec30c7d98d69e43d9fcad4b GIT binary patch literal 6207 zcmd5=Yj_mZ8Gg@Z!z7zQAPQ}~5g4M)8yHmbIyF{ zJKy(y*FCTO=gdn0mf~L#gixX&tfCYX1Sap)`*kg;r@FO`v7JWT7MQRkkxJOh1WIb7 zZ4s2ATtP%d1yq3VqqW*rBGrAH91AFk%!J{RrOS~xST#xh(cFn8qi+2Mzeym{>O$nibHM^6s#-!pRf`3r}hJ3qK@ zc>l5UXP-Ggc;<~~&s1OG3 zk9FL0@Al#Q&W#>?wLEn?g$-cl1JAV$*-P`yP%#s;1j=mFJyzhd+Nh7(6Gp-8iwx{8 zS70t`6+~6kp^&6IE8G77K^cz~MGhfYDo23~u zc1=?@k?b@qx=fFuJA>W;H9E#h7IiH6?oOqV8w3^vB0aMA!0^LQRX0@A+KVOT)$^(e zyEByL)>O>L0$MVW>M{jx43OF05-wB7LDBNrY$IJQpT3nl}!1he^&5sOUEA%|<3oI61rNor>==pfT2=MZtO%8?aHJF-V?qqbVoM#EfCL+Pa<1 zG@G3iuC}%?v@#A|S|(E|#jPqfqg5b6{Z>2SNUx|Zrk-TsQ8p^LO`xWr^ghxuv2R+fSER#uSVPGT`-P{;~fi4BzDteG$?w8bhG7-~by4Iy< zY^jL0wsqr%Tya!wQ%-YvcaHzeT$1)B3Qwmp^a|YCap9qpBTw8vd~VP1;NbAl2i`dF z;C44@ym|WA@JkOk>FKR=kGKTqUw(RI_c5<#$kl`UhR+;&M3T0YsIBqB)W8Ab1En#Xdxwc%l^(OyL`auou zRq-)=oMn|NH|??whEKRQ+R;>j-PohxeiaYk69S8Z;2iG&*)&*sS~_V*Q*gp8$b!Os z5_=Uqq~c+Gid~gckxh#&7_~}gW64COhlP5*nPM#q@62Z2URLssS!Ab^$@Z!EH1-RW z4_FD?XirGHFLRSnt_{f89Q9?iO}TR$qblX@mYETn#gxX9L&7IKsOq?Sa=*pTgu8P*m(mZa2`EoNL# zw&_+v&b`I3-IJgv&Th#kvce5AnU^!ux;b5d%~(OS#|`~lbJysL!Ge(+Z6o-7S(YxU zvHZO_l{KT+U_@7rJ)RlAUr%Noz(#*wcvfckIxi_I(*p}+ym!5x_OP71-mrVj&P}>( zbZx^TuBz)YImouYPmoD~COUO$wDs5T;mCm~B#X|Kmx8pzTK`eJVAby!YVyOnI+}E0I<+YsHO~37Pn(_-{F`kvWb1bdzb?8JkUmo3t{MCg5ig{2aef z@JkiH!mkBpj;6mvs^9E2v=&EO?$En(Jy8Wy-RSIfzuw*^_kh)UsxxV1YFbRQH=7R1 zG-FP4H_D#?e)5aB7Jca+S$wbmUc=+utS6JL>`xjeIlbY zNEhaFdHo=iM{&ssOsu?g2vb8iKJQgblG7{dhj3L1=ciD;p{_psB5JmlG_($3P6^s2 z!Myr;L%1dkd3K3&b{!%dUr9l)qR3ZM=xTQSGx$G~|24cSn2qZ(2hAKw`RZI5@Kt<` zGfIPJ@pVV$<@g4^Nm=KT)3>-*g6H@?j8Nqy9OGzW2{(b{AfZ(4d5YnxwwuHfxA{KR zu60$bt3QK9zz}W-@oR~2^|+aeHc?UTan-n-;7EKG-Y!hR0;;i)!Y|^=b&lB6T>g2n z=X+vH5lbK{9SO@rc?rvL0x$5*5x)O7EvWFhqizVx1vWGg!?hu_HwYb!c3d+oGzP_q-2-#9_$K3)|rKj-GA>0?j;t35^69)0%5FQB; zj+`nzrG>C*rDnI$(Czft zt(b*v)T)En+(Di0bg)_GIK+-I*yIoian}+Dk&-+j;XERxc|=^QSE#N;gdUPZ#6{!# zlOr-S5xOIM-AH_-A1n2Br|`M_O;m6r_S zu@^8=vJ$>zaVZ6QjcXzN1h4ZcjrUWo{RY3oAMt0dRPxA+2MQI>~+#RUKm5dl~g`rxu#Y*Kds0FZR|zWWvclu{FCmQ|Ey z1&S-mN=vD#u>hq{fCK#s^2{uwX!6VqLj%KaKx`j4mpANL)gU(eVREaG?G^4nnE86X=i*bvo!=l3iP`=9*`7T$$U%B3;_fJE*yZR^B--p58 zg&EjbvHm{dE78{oeHSyMKZIfZJIqAS(a1&5?GNDuzX~_7u{Jg{`2&jZS14mMOGhJn zhd;pX{R-yfXlD5*5XK$opANLrb2hU6|J>oH;JZF!adCJ31L*#L@9-V;?+*M{iUaX(O%D%#m&kxA0)5X&W5=F-X>*Ae9f%Y7-ElB?`t=& zPajE1%dCco1PkY9st3iC6*3Hs83O(AAsq5k8pS^53Y@V56pd2L;QQJiG9wovaFUBLt6#eW7D)5Jp=g=WS%B zqGbnKxy}6?$8;sL*is)ij+Rve*eimio)je0uUFS4K4sZ?H2l)^%;tCk%oddkdoqU0}H^obef+ zD7DUMJMULsLgRn%mmStAFazj1Z!CYXuL`Hrrb{RtL?$v?CC{4nPQc9R&D6MY+(-C2 z?S8B^YIQF%J>UQUbQA!9^;b3f_XLqOv9_@{0-KsS8cF;$WmpU>^&A``)fXIa)NyYY zxOxk=Ko46gl#3Ig%^p4$Wk5C?1%=~|gNQBRu9s;RXy&Y4*7niz*Uk%AhuEHD3>7Jf z^vavSs)(g?T;_1z+$TM!R1

NlW0tH;xnjoawQDa6Q!B{JGrcU;%**_6-&}7ad|r z$b-HSaK*iv>$q$SDV9^}ccpli7DIIA22%abrzvsdr&vnuBf7Jvd%d%YDr-hMbX!Db zVL|E%_PRR#V+t-D>>UK3UV9xav`CsU z!yB)e?>#1?t;OjYGB4rm4)wY}mq;E(s7O#(4vR5#7<2DCcdBs)bou!r7IE!jft-i! zDC@5}7REw^OFT%rwTjYoKt~+#1kS9-a5GeJEXJtf(n*Z<)IC5O`!_EHxWm@ybkq-1 z!wmR_DtwxVA|1j#oZ?zbrz~|1Ae1yN+V&@TG}IyKD%JHxe7K+kn#|`<%rax1%xfV( zsq5kaepxFtHJPk94eis{aTz*#E1Q~Bs=fS?%LSDmBSBAv1Cb%aYg_dZl>nKH7E5_9 zb(fP$l?iP_`#q;@LF?Dibr=fRqV@TdH?#-?Nv)P!+(9ACa#bWij-ti0_AK|=ZATf! z!?rd)R)loQcvXY7+yDV-?M;YvXWn?0+Mq$3j_8q9uRyZ|{&P4^KEb1OZ9C*kdI@M3 zOW6gihO}&lSNcc>Dld7SKBq%{lEhrkR%AvPMExm!U^Q-!sYeU(OW26(gxU!f zV-znXKJAVT*Iu8clZWyc8lCDTN#N5yyxl6r2f0q-$F+vYF7gxc z-i&DMjZhQp{bQsDK_l95)Il&xc;WtT?jyCl`Ic8*kZeI04DIM+d7Dz+90X`oLK~qF zg2-T7Xf)RhF1I-HI4e>A8oI3}(`z_E;uyKxh)-#GHt&f~t!R+kMN=!I7ptsM$4lFn zg5wFG-o_qm0*OkfyapdcN}G{nr=V&evFDWMJt%&3BDsw&pxTmibxnE-yDyP> z<+{wEAdUuJ!SS=8c}7qbqe(Qlu0?f*Gi##;m6K_|_VH204DBiY7Gw`e%sM6_hD5gT zoeb66xEs=J8!R(T+1sFz^OX-)LI*%ITiaDOuc+XwTS--ubBx_a^qLk~2Gf699Y9PdKuWK$ZS1t?ZF;O79V$xm+LuJco>4Q@Y0o>i} zXQint;|cKG@}f>c(-><(a%`(SAUsz*0rS2W9!C)k=NL&u<51n)>2l&A`-u$$V z$4NMUE`SFB7%>3=hF`7Y-;XTfPL8J1-;OWemheIFm5bU0-i@M;3&;GUkRnnzJfvjI zLk5vB!aRLss${@NDX3>A#)`%)4Gssk2Pqw=MiY}V>W8n-CpD(*nSI2-_uw06Z}yk; zN_+wuFBfFSWI6JnE+wW)8#Ze`i(DOLy!m`_*?r=JV2dFF%!P`CPgUT`mCE{3pB|S) zxsc<;=JIr-Myy|PuI7xzud8hTNF#5={DGA|o`T=dTX3!Ycx_b}sKkul05~0`;jOz@ zwmr63&sx#N(wJF}{=)M0rI1S-3-T!{%gUgP{N#K6RZAkUZjGNaj>QQ1NVC48-(=3% zDC`6TvP~ATTVg&}3BM<10@hwK&A_dm`Lo3WvAk9FFsjsl;sfWp#o25ORWO zzNZD1IeN)_X7@3*fGkp8Lu-YAiaL~6O}O9(9F?&~4%&7wNBJIoBI3>_s7=YLtkVg8 zGDS0b2hN>U8@FA$xhn{PV2r;+JD+)IB#l@9xnG)srDUP+<0d-Yn1h%P)P6M%5m+SB zjztJ5ylciV+BA)oQo8M)bkp=6*6Xtm$jMNy5;T(po*~0j6k8O(@5I^?X+(ZfIryHL zhH0K5=JjUa+ckBRa50m;@L=}cOSv)Utsqz6vR_$a>|>Vtnf=zD_DrQ6Pb2kL{N3ns zRHVmGS;Hosaq8Bh2;jcR;ZxMRFbDgyJwh^?e6O9Sv-{AWe`IXJk9!-)P-kPE+=lLF zOgfZ5iei7j6D|n{Bo=(_U&A@hP}pLG+4} z95OFN>dY1R^5m_IoHysys*BQ>y|kH=C2!|5wi(X2yU};a zi1$SKglru#@~yQNi`nm~lXb-S!O)(zKz>9aA7$sQ`O-__WJ&<&Z zVfGRsO+sB`1YIG1DmVsuS>@$E^PiMVXd1W z+OE3t99f^Bd8cxi6s1ufxWC-wmuqxXf$Do75K7@{@%r&Y@dq2Li}jAL7~~8)wvPDI zZ%#^BTfXcRAKV-bv@CvkAQ_GGu#hR{_NA}x#W~R-?EcdWv`tt3t&V%?emKy)lSXK~ z0+5rD5`Qt{`fc;3(yqPtL;U7-JMNO1gE2_EMHYHdWyqzWk9G*NkT#6vZEi~@riTd zoI6N$4fPj06TFsFGj(K&6yh!Jnj+Aq*u*$abQ)@TKY!*rhzLuP#Dk1mcZ5uh^EZJ1!{hMdxuO?URhFK&(1v!a13QK~? zE#94mfX`0CKwH(HQgQ6%dzdTo%lx6}6AHJiONJRa9T<2~%>`j{VfOmvcGGp8P!tP~ zcox|Yt&>F;4RmjE6ZaI4uoZ=f3KN=-1}P6UtdJie8f1SNW9DOkket5lHP6@CZw45I zLsTuXuGG~Yea2}Xn+xRC z@DNV{a`YM7Q$2r1ZW=KC#l398&%^7|*9KeZjN|eB# z$v(73N4J^1n9!3aA|*rPgnv;NyT4Uo!tQ3QNRwz9hTDQ-bsa=D8{+J!Pr5S&^enbq zi>K(fxj%8g%{ijVoOK!9{i7n0vx_0*c_n*jw%)Y82@lsfJdv?E6v=?+m#(1Ntyv7Tto4!?VmO`IZWNU4`tZW8R|Qj8pw0TFd} z9eYZrrJGx~`;M|L5EyFgg`}XEDd%D~B#PV;5uZfVo=tB>5uMl~VZw4Y8_j9y#ZaT# zKvMkhLb!&fOed~DdBzmXc(En(iIA6TGXLg)%aB{k=cYEn zThey`UAUXQ=P1@tWLP?e?CUQ5%~iNbx!PlwVs+SDgjMDfMdp+2_40Cc=P{8aP$F0j zn1mk@YC>=!s(7LBSj-HaKyJ%N-m2hS?X-(zaplOw*yM)zm87_jqie(utMAdi6U-=4#(ymA4&GmEwo{C9*;Ls@zWqkgh?`LJM#Ll z9weoj6+pOWl3Obb4VRzlFCBeWM2kpY%;2-*vD5wB6FbFnU&PJM)@Sv7armZA10SE~ z*2K!wfi@XfPc=z$W6puJbz69)m!&d<#swB8oXV<=)WmfhOnt6rSDVo_qMyz`b;NJV zux9q#WXR}pl1vIs@^H_Su?*a+1fURB0SA)|lT|m{Cv#-fbw6RqJ^9^OWXN%eA zIjN61Qz(i1dz?d?yIJoGvlr*$DZ?(3uPV+k33B1h`>2BcXdu3dk`qu91(ea`#-9^tlJ*`_JS>K9ZgLL>#w z`*n|D>So?PE$v`{Dv{#SLz7T1D7i`yJ2t***mH!ga{i?+77GUGR8) zxCavw=VXdMLXm^FLug*M#uQ{0q<;yVi6BPPLKu{nD~pOes5YWcvB$*-nMM?S9(`&d z=PuPNxqU=QBHM?TMi^E|ks8SZA4}4&mSen8kikw({DgkEr&3cBtuJZLiCF7HFwpeg z5oWFGVv?W$&7fT|?shx6r-CmNh3|v*^h$0SaD?l00*@B!v82=#cb{-ShxAxLnuVwG z2z{2kBqGCxHw$y{gfB@#j*^1&eB~UUpwU^76H3I zKFzpHh;?;Hxc!RB!>qBH5+5T#ol;UztD0_tL&;^H;E4t(ioaEnF@Epf(PI+bo~?0p zRWsFwg`Hih1V`-lJe7_Z9x4|ldrNeY;9(R#s#Ufq<(IsH0bR>lEm5gO^wgr6#_#A> z<@w~K)WH;5tkgrRCBgaX_tVs$ci+4?O84EAdh2_S)DXOLrL|sUdFIW(PSPu4dx5uS zrOAU@IH33;H7;;>J#(s5I&spKDhrafE|#o;oLZAbvPiMR@KP|Gj5CiYJ%XOA$I%tt zXtrR~co!b`OYvF0q&Jl!K6ytZ@2bWtLg7Beq2Br(`nAt}EA{ppG6+b4CM>FrqUB(%u9CBeK4R>`^##=)&4q{Tvm1ITei=;R9k~=k8TBel+M|X{%DlEZpVZ!@>Zm6& zZ+H1JoHY2J(#1?*2+DYh|l9|KoTfPk2 z>~M(uP7dUG!q)2sSIx6W`GWP%KF2x4jS(tCB4!gCLa}|mIX(=1N#BLd)TXT&0Z-Iy z+53dxklT~ALb`mF82_WRC(aT@sXQdlW;~Uc)@%X>EKa64YMPqHiNaaO|P{cU$7;?NYu|sMQa)F*xjesI#5(K;E8R&z*CkoXQJj#!aComwhxB$ zNb>SVc20!3%5#Edtib$O4?=XXg)bk!7qu^Hi0-#2*cUX?GomF+Qs$KX+8&X($YTa{ zs4H5FbsStG9GEHYsOG`nVI7Cg*`~1I>6Yz+Xvb>Wor@Z{=6kyH_Bxx)wWMGw`aC$h)*M!MsXuh3TCEeGSZ)C}w9}fXpK! zC=C4=wtBN$ZAG$_O&h@VqBvH-opGidaubTfrTP(6%X%@ z-oAIH0nOcU>^BzFcQ?uQ&XRJybBfejY(B8zE}npsccaP!p)x#+8SYf4zEx1IzlDAoKffVY5=7Y-H@xI=aJA@xu0v={ zKV2xt+3Ilv8aaa6sC-0l@cBA;&f>7P1>0Sd;V7UBUXy1^*he>Fmm(q7s}F`kRw&C) z*{iyy!Ot3wG_4cnZ0%vA#9)D*TPDH<@Lt9I7E^XN@lNbu3|3D)Pe6AyVcBDF)3_5B z&YGdl6SAkB1lxJA*=um0<}kF`nL=~s1IGK3>DrxTE%#|xh}IM^*v!Q^b)JO^o5gAx zir-j)qL&7)lGCL@Gm-D&!HLQ6S8)` zFnkpLqO+IxYLdSD0Ao1%<#YS@w|YwbJRi;PJFqaS#!yMlBGqzFiOqjG*;QxtDa`)- zlQ@aA2Y(`TS1W>dZ|477&Dh%8*c#b8ni)CBGcoik$SbfMDO3WLm}HriO4m2!So>I+ z0mxLFo7;(C^+Wr_e0)5UkDD_@+k_DKD}H!bkMrO|d#F3F8VVX0=Et+d&(8W?E`PN= zzpo$vl=8oP_HPWo_q)I0F#&txrT=F56YQ)1{jGh4jo)2<^}7Fr`09s$YhMv(cb8ug zf4k#ff8nq5`|6K>YhPg`ca!!X*!SuAr@Maj%YVS-e+B=?J^y_YU;XnREPlUY`7TZW zDVeW+`VX4=U(tMb*MFbOSAYEn$=)5wKSTcAZT~&^e={JuQyzW--*xWa?)&dazWVP! zGEn+G$^Q<}@BR4iba{RecVz$L&VTF9AI1N()%yc#c~_GEDUClHzdw`z>_7Y<=ejG- z|B!zl^8dIIKlA>q^!(tZxGV4f@cyj={Gx@PiH==NELplNSC>`>Rdy2WYaw>AGN!~X{`xPEs4 literal 0 HcmV?d00001 diff --git a/gateway/target/maven-archiver/pom.properties b/gateway/target/maven-archiver/pom.properties new file mode 100644 index 0000000..f5a8d96 --- /dev/null +++ b/gateway/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=gateway +groupId=com.wzx +version=1.0-SNAPSHOT diff --git a/gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..6367346 --- /dev/null +++ b/gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,4 @@ +com\bwie\gateway\filters\AuthFilters.class +com\bwie\gateway\config\IgnoreWhiteConfig.class +com\bwie\gateway\GatewayApp.class +com\bwie\gateway\utils\GatewayUtils.class diff --git a/gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..04a4fcd --- /dev/null +++ b/gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,4 @@ +D:\Project\Finish\gateway\src\main\java\com\bwie\gateway\filters\AuthFilters.java +D:\Project\Finish\gateway\src\main\java\com\bwie\gateway\utils\GatewayUtils.java +D:\Project\Finish\gateway\src\main\java\com\bwie\gateway\config\IgnoreWhiteConfig.java +D:\Project\Finish\gateway\src\main\java\com\bwie\gateway\GatewayApp.java diff --git a/gateway/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/gateway/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/gateway/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/gateway/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/models/pom.xml b/models/pom.xml new file mode 100644 index 0000000..9bca3ac --- /dev/null +++ b/models/pom.xml @@ -0,0 +1,19 @@ + + + + Finish + com.wzx + 1.0-SNAPSHOT + + 4.0.0 + + models + pom + + system + + + + diff --git a/models/system/pom.xml b/models/system/pom.xml new file mode 100644 index 0000000..94fe829 --- /dev/null +++ b/models/system/pom.xml @@ -0,0 +1,85 @@ + + + + models + com.wzx + 1.0-SNAPSHOT + + 4.0.0 + + system + + + + + com.wzx + common + 1.0-SNAPSHOT + + + + 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-amqp + + + + org.springframework.boot + spring-boot-starter-test + test + + + + com.qiniu + qiniu-java-sdk + 7.2.0 + + + + com.easemob.im + im-sdk-core + 0.6.0 + + + com.wzx + common + 1.0-SNAPSHOT + compile + + + com.easemob.im + im-sdk-core + 0.6.0 + + + + diff --git a/models/system/src/main/java/com/bwie/system/SystemApp.java b/models/system/src/main/java/com/bwie/system/SystemApp.java new file mode 100644 index 0000000..9fd6134 --- /dev/null +++ b/models/system/src/main/java/com/bwie/system/SystemApp.java @@ -0,0 +1,11 @@ +package com.bwie.system; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SystemApp { + public static void main(String[] args) { + SpringApplication.run(SystemApp.class); + } +} diff --git a/models/system/src/main/java/com/bwie/system/controller/HotelController.java b/models/system/src/main/java/com/bwie/system/controller/HotelController.java new file mode 100644 index 0000000..98172cd --- /dev/null +++ b/models/system/src/main/java/com/bwie/system/controller/HotelController.java @@ -0,0 +1,90 @@ +package com.bwie.system.controller; + +import com.alibaba.fastjson.JSONObject; +import com.bwie.common.domain.Order; +import com.bwie.common.domain.Stay; +import com.bwie.common.domain.request.QueryHotel; +import com.bwie.common.domain.response.ResponseHotel; +import com.bwie.common.result.Result; +import com.bwie.system.service.HotelService; +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 +@RequestMapping("/hotel") +@Log4j2 +public class HotelController { + + @Autowired + private HotelService hotelService; + @Autowired + private HttpServletRequest request; + + /** + * 酒店列表 + * @param queryHotel + * @return + */ + @PostMapping("/ShowHotelAll") + public Result> ShowHotelAll(@RequestBody QueryHotel queryHotel){ + log.info("功能名称:查询酒店列表,请求URI:{},请求方法:{}",request.getRequestURI(), + request.getMethod()); + Result> result=hotelService.ShowHotelAll(queryHotel); + log.info("功能名称:查询酒店列表,请求URI:{},请求方法:{},返回结果:{}",request.getRequestURI(), + request.getMethod(),JSONObject.toJSONString(result)); + return result; + } + + /** + * 添加订单 + * @param order + * @return + */ + @PostMapping("/insertOrder") + public Result insertOrder(Order order){ + log.info("功能名称:添加订单,请求URI:{},请求方法:{},请求参数:{}",request.getRequestURI(), + request.getMethod(),JSONObject.toJSONString(order)); + Result result=hotelService.insertOrder(order); + log.info("功能名称:添加订单,请求URI:{},请求方法:{},返回结果:{}",request.getRequestURI(), + request.getMethod(),JSONObject.toJSONString(result)); + return result; + } + + /** + * 添加入住登记信息 + * @param stay + * @return + */ + @PostMapping("/insertStay") + public Result insertStay(Stay stay){ + log.info("功能名称:新增入住登记信息,请求URI:{},请求方法:{},请求参数:{}",request.getRequestURI(), + request.getMethod(),JSONObject.toJSONString(stay)); + Result result=hotelService.insertStay(stay); + log.info("功能名称:新增入住登记信息,请求URI:{},请求方法:{},请求参数:{}",request.getRequestURI(), + request.getMethod(),JSONObject.toJSONString(result)); + return result; + } + + /** + * 上传七牛云 + * @return + */ + @PostMapping("/QiNiuUpload") + public Result QiNiuUpload(){ + return hotelService.QiNiuUpload(); + } + + /** + * 查看七牛云存储文件 + * @return + */ + @GetMapping("/SeeQiNiu") + public Result SeeQiNiu(){ + return hotelService.SeeQiNiu(); + } + +} diff --git a/models/system/src/main/java/com/bwie/system/controller/MenuController.java b/models/system/src/main/java/com/bwie/system/controller/MenuController.java new file mode 100644 index 0000000..88be462 --- /dev/null +++ b/models/system/src/main/java/com/bwie/system/controller/MenuController.java @@ -0,0 +1,50 @@ +package com.bwie.system.controller; + +import com.alibaba.fastjson.JSONObject; +import com.bwie.common.domain.Menu; +import com.bwie.common.domain.MyMenu; +import com.bwie.common.result.Result; +import com.bwie.system.service.MenuService; +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 +@RequestMapping("/menu") +@Log4j2 +public class MenuController { + + @Autowired + private MenuService menuService; + + @Autowired + private HttpServletRequest request; + + /** + * 查询菜单 + * @return + */ + @GetMapping("/ShowMenuAll") + public Result> ShowMenuAll(){ + log.info("功能名称:查询菜单列表,请求URI:{},请求方法:{}",request.getRequestURI(), + request.getMethod()); + List

list=menuService.ShowMenuAll(); + log.info("功能名称:查询菜单列表,请求URI:{},请求方法:{},返回结果:{}",request.getRequestURI(), + request.getMethod(), JSONObject.toJSONString(list)); + return Result.success(list,"查询成功"); + } + + @PostMapping("/insertMyMenu") + public Result insertMyMenu(@RequestBody MyMenu menu){ + log.info("功能名称:客户点餐,请求URI:{},请求方法:{},请求参数:{}",request.getRequestURI(), + request.getMethod(),JSONObject.toJSONString(menu)); + Result result=menuService.insertMyMenu(menu); + log.info("功能名称:客户点餐,请求URI:{},请求方法:{},返回结果:{}",request.getRequestURI(), + request.getMethod(),JSONObject.toJSONString(result)); + return result; + } + +} diff --git a/models/system/src/main/java/com/bwie/system/controller/UserController.java b/models/system/src/main/java/com/bwie/system/controller/UserController.java new file mode 100644 index 0000000..2b56a35 --- /dev/null +++ b/models/system/src/main/java/com/bwie/system/controller/UserController.java @@ -0,0 +1,42 @@ +package com.bwie.system.controller; + +import com.alibaba.fastjson.JSONObject; +import com.bwie.common.domain.User; +import com.bwie.common.domain.request.RequestUser; +import com.bwie.common.result.Result; +import com.bwie.system.service.UserService; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; + +@RestController +@RequestMapping("/user") +@Log4j2 +public class UserController { + + @Autowired + private UserService userService; + @Autowired + private HttpServletRequest request; + + /** + * 根据账号密码查询用户信息 + * @param requestUser + * @return + */ + @PostMapping("findByRequestUser") + public Result findByRequestUser(@RequestBody RequestUser requestUser){ + log.info("功能名称:根据账号密码查询用户信息,请求URI:{},请求方法:{},请求参数:{}",request.getRequestURI(), + request.getMethod(), JSONObject.toJSONString(requestUser)); + Result result=userService.findByRequestUser(requestUser); + log.info("功能名称:根据账号密码查询用户信息,请求URI:{},请求方法:{},返回结果:{}",request.getRequestURI(), + request.getMethod(),JSONObject.toJSONString(result)); + return result; + + } +} diff --git a/models/system/src/main/java/com/bwie/system/mapper/HotelMapper.java b/models/system/src/main/java/com/bwie/system/mapper/HotelMapper.java new file mode 100644 index 0000000..a932c0d --- /dev/null +++ b/models/system/src/main/java/com/bwie/system/mapper/HotelMapper.java @@ -0,0 +1,20 @@ +package com.bwie.system.mapper; + +import com.bwie.common.domain.Hotel; +import com.bwie.common.domain.Order; +import com.bwie.common.domain.Stay; +import com.bwie.common.domain.request.QueryHotel; +import com.bwie.common.domain.response.ResponseHotel; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface HotelMapper { + List ShowHotelAll(QueryHotel queryHotel); + + Integer insertOrder(Order order); + + Integer insertStay(Stay stay); + +} diff --git a/models/system/src/main/java/com/bwie/system/mapper/MenuMapper.java b/models/system/src/main/java/com/bwie/system/mapper/MenuMapper.java new file mode 100644 index 0000000..2daecf0 --- /dev/null +++ b/models/system/src/main/java/com/bwie/system/mapper/MenuMapper.java @@ -0,0 +1,17 @@ +package com.bwie.system.mapper; + +import com.bwie.common.domain.Menu; +import com.bwie.common.domain.MyMenu; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface MenuMapper { + + + Integer insertMyMenu(MyMenu menu); + + List ShowMenuAll(); + +} diff --git a/models/system/src/main/java/com/bwie/system/mapper/UserMapper.java b/models/system/src/main/java/com/bwie/system/mapper/UserMapper.java new file mode 100644 index 0000000..335a08b --- /dev/null +++ b/models/system/src/main/java/com/bwie/system/mapper/UserMapper.java @@ -0,0 +1,19 @@ +package com.bwie.system.mapper; + +import com.bwie.common.domain.User; +import com.bwie.common.domain.request.RequestUser; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; + +@Mapper +public interface UserMapper { + User findByRequestUser(@Param("requestUser") RequestUser requestUser); + + User findByUserName(@Param("username") String username); + + void updateBalce(@Param("userId") Integer userId, @Param("userBalance") BigDecimal userBalance); + + User findByUserId(@Param("userId") Integer userId); +} diff --git a/models/system/src/main/java/com/bwie/system/service/HotelService.java b/models/system/src/main/java/com/bwie/system/service/HotelService.java new file mode 100644 index 0000000..e2ffdfc --- /dev/null +++ b/models/system/src/main/java/com/bwie/system/service/HotelService.java @@ -0,0 +1,22 @@ +package com.bwie.system.service; + +import com.bwie.common.domain.Order; +import com.bwie.common.domain.Stay; +import com.bwie.common.domain.request.QueryHotel; +import com.bwie.common.domain.response.ResponseHotel; +import com.bwie.common.result.Result; + +import java.util.List; + +public interface HotelService { + Result> ShowHotelAll(QueryHotel queryHotel); + + Result insertOrder(Order order); + + Result insertStay(Stay stay); + + Result QiNiuUpload(); + + Result SeeQiNiu(); + +} diff --git a/models/system/src/main/java/com/bwie/system/service/MenuService.java b/models/system/src/main/java/com/bwie/system/service/MenuService.java new file mode 100644 index 0000000..04b4ffb --- /dev/null +++ b/models/system/src/main/java/com/bwie/system/service/MenuService.java @@ -0,0 +1,13 @@ +package com.bwie.system.service; + +import com.bwie.common.domain.Menu; +import com.bwie.common.domain.MyMenu; +import com.bwie.common.result.Result; + +import java.util.List; + +public interface MenuService { + List ShowMenuAll(); + + Result insertMyMenu(MyMenu menu); +} diff --git a/models/system/src/main/java/com/bwie/system/service/UserService.java b/models/system/src/main/java/com/bwie/system/service/UserService.java new file mode 100644 index 0000000..655565f --- /dev/null +++ b/models/system/src/main/java/com/bwie/system/service/UserService.java @@ -0,0 +1,15 @@ +package com.bwie.system.service; + +import com.bwie.common.domain.User; +import com.bwie.common.domain.request.RequestUser; +import com.bwie.common.result.Result; + +import java.math.BigDecimal; + +public interface UserService { + Result findByRequestUser(RequestUser requestUser); + + User findByUserId(Integer userId); + + void update(BigDecimal money, Integer userId); +} diff --git a/models/system/src/main/java/com/bwie/system/service/impl/HotelServiceImpl.java b/models/system/src/main/java/com/bwie/system/service/impl/HotelServiceImpl.java new file mode 100644 index 0000000..352d52e --- /dev/null +++ b/models/system/src/main/java/com/bwie/system/service/impl/HotelServiceImpl.java @@ -0,0 +1,85 @@ +package com.bwie.system.service.impl; + +import com.bwie.common.domain.Order; +import com.bwie.common.domain.Stay; +import com.bwie.common.domain.User; +import com.bwie.common.domain.request.QueryHotel; +import com.bwie.common.domain.response.ResponseHotel; +import com.bwie.common.result.Result; +import com.bwie.system.mapper.HotelMapper; +import com.bwie.system.mapper.UserMapper; +import com.bwie.system.service.HotelService; +import com.bwie.system.util.QiNiuUploadUtil; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.List; + +@Service +@Log4j2 +public class HotelServiceImpl implements HotelService { + + @Autowired + private HotelMapper hotelMapper; + @Autowired + private UserMapper userMapper; + + + @Override + public Result> ShowHotelAll(QueryHotel queryHotel) { + List responseHotels=hotelMapper.ShowHotelAll(queryHotel); + return Result.success(responseHotels); + } + + @Override + public Result insertOrder(Order order) { + Integer i=hotelMapper.insertOrder(order); + if (i<0){ + return Result.error("订单添加失败"); + } + return Result.success(i,"订单添加成功"); + } + + @Transactional + @Override + public Result insertStay(Stay stay) { + Integer i=hotelMapper.insertStay(stay); + if (i>0){ + String username = stay.getUsername(); + User user=userMapper.findByUserName(username); + double totalPrice = stay.getTotalPrice().doubleValue(); + double balance = user.getBalance().doubleValue(); + if (balance ShowMenuAll() { + List menuList=menuMapper.ShowMenuAll(); + return menuList; + } + + @Transactional + @Override + public Result insertMyMenu(MyMenu menu) { + Integer i=menuMapper.insertMyMenu(menu); + Integer userId = menu.userId; + User user =userService.findByUserId(userId); + double price = user.getBalance().doubleValue(); + double pay = menu.pay.doubleValue(); + //判断金额是否足够支付 + if (price findByRequestUser(RequestUser requestUser) { + User user=userMapper.findByRequestUser(requestUser); + return Result.success(user); + } + + @Override + public User findByUserId(Integer userId) { + User user=userMapper.findByUserId(userId); + return user; + } + + @Override + public void update(BigDecimal money, Integer userId) { + userMapper.updateBalce(userId,money); + } +} diff --git a/models/system/src/main/java/com/bwie/system/util/QiNiuUploadUtil.java b/models/system/src/main/java/com/bwie/system/util/QiNiuUploadUtil.java new file mode 100644 index 0000000..558d999 --- /dev/null +++ b/models/system/src/main/java/com/bwie/system/util/QiNiuUploadUtil.java @@ -0,0 +1,107 @@ +package com.bwie.system.util; + +import com.google.gson.Gson; +import com.qiniu.common.QiniuException; +import com.qiniu.common.Zone; +import com.qiniu.http.Response; +import com.qiniu.storage.Configuration; +import com.qiniu.storage.UploadManager; +import com.qiniu.storage.model.DefaultPutRet; +import com.qiniu.util.Auth; +import lombok.extern.log4j.Log4j2; + +import java.io.File; +@Log4j2 +public class QiNiuUploadUtil { + + // 七牛云账号的 Access Key 和 Secret Key + private static final String ACCESS_KEY = "vr53LoeAdxIgcaczwDRaS3iSxEfhWwApdMjFgAX5"; + private static final String SECRET_KEY = "mBOO_ODKQwMkyyUPLkq3rBf9FLAe1C5O2MnoVJUk"; + + // 七牛云存储空间的名称和域名 + private static final String BUCKET_NAME = "bigdeck"; + private static final String DOMAIN_NAME = "http://pili-vod.s2lpch1un.bkt.clouddn.com/"; + + /** + * 上传指定文件到七牛云存储。 + * + * @param filePath 待上传的文件路径。 + * @return 如果上传成功,返回该文件在七牛云存储上的访问路径;否则返回 null。 + */ + public static String uploadFile(String filePath) { + // 生成上传凭证 + Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY); + String uploadToken = auth.uploadToken(BUCKET_NAME); + + // 指定上传域名(如果需要的话) + Configuration cfg = new Configuration(Zone.zone2()); + UploadManager uploadManager = new UploadManager(cfg); + + try { + // 执行文件上传 + Response response = uploadManager.put(new File(filePath), null, uploadToken); + + // 解析上传成功的结果并返回访问路径 + if (response.isOK()) { + String key = new Gson().fromJson(response.bodyString(), DefaultPutRet.class).key; + log.info("存储在七牛云中的文件名:"+key); + return DOMAIN_NAME + key; + } + } catch (QiniuException e) { + e.printStackTrace(); + } + + return null; + } + + /** + * 对象储存为,企业级七牛云上传,需要自己配置相关的参数 + * + * @param accessKey 七牛云账号的 Access Key。 + * @param secretKey 七牛云账号的 Secret Key。 + * @param bucketName 存储空间的名称。 + * @param domainName 存储空间的域名。 + * @param filePath 待上传的文件路径。 + * @return 如果上传成功,返回该文件在七牛云存储上的访问路径;否则返回 null。 + */ + public static String uploadFile(String accessKey, String secretKey, + String bucketName, String domainName, String filePath) { + // 生成上传凭证 + Auth auth = Auth.create(accessKey, secretKey); + String uploadToken = auth.uploadToken(bucketName); + + // 指定上传域名(如果需要的话) + Configuration cfg = new Configuration(Zone.zone2()); + UploadManager uploadManager = new UploadManager(cfg); + + try { + // 执行文件上传 + Response response = uploadManager.put(new File(filePath), null, uploadToken); + + // 解析上传成功的结果并返回访问路径 + if (response.isOK()) { + String key = new Gson().fromJson(response.bodyString(), DefaultPutRet.class).key; + return domainName + key; + } + } catch (QiniuException e) { + e.printStackTrace(); + } + + return null; + } + + /** + * 生成七牛云的私有下载链接。 + * + * @param fileName 文件名。 + * @param expiresIn 有效期,单位为秒。 + * @return 返回生成的私有下载链接。 + */ + public static String generatePrivateDownloadUrl( String fileName, long expiresIn) { + Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY); + long expiresAt = System.currentTimeMillis() / 1000 + expiresIn; + String downloadUrl = String.format("%s?e=%d", DOMAIN_NAME + "/" + fileName, expiresAt); + String privateDownloadUrl = auth.privateDownloadUrl(downloadUrl); // 对下载链接进行签名 + return privateDownloadUrl; + } +} diff --git a/models/system/src/main/resources/bootstrap.yml b/models/system/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..46515a0 --- /dev/null +++ b/models/system/src/main/resources/bootstrap.yml @@ -0,0 +1,43 @@ +# 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: system + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 124.221.214.183:8848 + namespace: lc + config: + # 配置中心地址 + server-addr: 124.221.214.183:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + namespace: lc +fdfs: + so-timeout: 1500 # socket 连接时长 + connect-timeout: 600 # 连接 tracker 服务器超时时长 + # 这两个是你服务器的 IP 地址,注意 23000 端口也要打开,阿里云服务器记得配置安全组。tracker 要和 stroage 服务进行交流 + tracker-list: 124.221.214.183:22122 + web-server-url: 124.221.214.183:8888 + pool: + jmx-enabled: false + # 生成缩略图 + thumb-image: + height: 500 + width: 500 diff --git a/models/system/src/main/resources/mapper/HotelMapper.xml b/models/system/src/main/resources/mapper/HotelMapper.xml new file mode 100644 index 0000000..f8d7581 --- /dev/null +++ b/models/system/src/main/resources/mapper/HotelMapper.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + select id, + name, + price, + pic, + number, + status + from t_hotel + + + + insert into t_order( + order_card, + name, + price, + user_id + ) + values ( + #{orderCard}, + #{name}, + #{price}, + #{userId} + ) + + + insert into t_saty( + username, + phone, + card, + name, + price, + day_number, + total_price + ) + values ( + #{username}, + #{phone}, + #{card}, + #{name}, + #{price}, + #{day_number}, + #{totalPrice} + ) + + + + + + diff --git a/models/system/src/main/resources/mapper/MenuMapper.xml b/models/system/src/main/resources/mapper/MenuMapper.xml new file mode 100644 index 0000000..8475b1b --- /dev/null +++ b/models/system/src/main/resources/mapper/MenuMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + insert into t_my_menu( + my_id, + user_id, + menu_id, + pay + )values ( + #{myId}, + #{userId}, + #{menuId}, + #{pay} + ) + + + + diff --git a/models/system/src/main/resources/mapper/UserMapper.xml b/models/system/src/main/resources/mapper/UserMapper.xml new file mode 100644 index 0000000..b225684 --- /dev/null +++ b/models/system/src/main/resources/mapper/UserMapper.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + select u.user_id, + u.username, + u.password, + u.phone, + u.balance, + u.role_id, + r.role_name + from t_user u left join t_role r + on u.role_id=r.role_id + + + + update t_user set balance=#{userBalance} where user_id=#{userId} + + + + + + + + + diff --git a/models/system/target/classes/bootstrap.yml b/models/system/target/classes/bootstrap.yml new file mode 100644 index 0000000..46515a0 --- /dev/null +++ b/models/system/target/classes/bootstrap.yml @@ -0,0 +1,43 @@ +# 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: system + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 124.221.214.183:8848 + namespace: lc + config: + # 配置中心地址 + server-addr: 124.221.214.183:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + namespace: lc +fdfs: + so-timeout: 1500 # socket 连接时长 + connect-timeout: 600 # 连接 tracker 服务器超时时长 + # 这两个是你服务器的 IP 地址,注意 23000 端口也要打开,阿里云服务器记得配置安全组。tracker 要和 stroage 服务进行交流 + tracker-list: 124.221.214.183:22122 + web-server-url: 124.221.214.183:8888 + pool: + jmx-enabled: false + # 生成缩略图 + thumb-image: + height: 500 + width: 500 diff --git a/models/system/target/classes/com/bwie/system/SystemApp.class b/models/system/target/classes/com/bwie/system/SystemApp.class new file mode 100644 index 0000000000000000000000000000000000000000..a09f1954f126e3aff747b13c71c88526d4675a31 GIT binary patch literal 738 zcmZ`%OK;Oa5dOAF>edNuNlT%Whq$FZu;(gJ2_kVa4-pg&oYwBv-D2-X>oskE7AFu= z`vdx;5HoH?f)s3dM)Ue+{LNhd{&fZ5C7#AuLMuYMhYpqnHcr(yB@1P9`93|>SrAx$ zVXO&<0*0Zx0qtJE6GpIe~002osNQbvSWH9~6@mw5P;)>}sFsH-^Vr`%C+CCWrR&v9`gK zdSWWWKWVKC4UJTJxR9HMbyWvPBsJvd+a0{7b7BuJ@c=vI Ve@I_Pkii4(Hu4c3ljhD(fIqefyhi{4 literal 0 HcmV?d00001 diff --git a/models/system/target/classes/com/bwie/system/controller/HotelController.class b/models/system/target/classes/com/bwie/system/controller/HotelController.class new file mode 100644 index 0000000000000000000000000000000000000000..84459b81899a1db67ce0172f5e8a178ef101138f GIT binary patch literal 3790 zcmb_f>vI!T6#w16(x%J9f+)zV<*V#N0l)}))YM^4~9p1#Ac}KRCU$vVkmEF9h_4L=*r*HkzHhuq5=D~&2 zLr3?0{)IQmT${=~yh?N7<#GwHp^m|4^7AQf5s=1!0QZ?}adS-Lwj8(Zqsw9G`krYNEo^tH4=)d%U;&x zlPPXaI0_xj1+pf$QkpFfIRn+r+hp;-)J@y;^Y7C?-gx=+yUdNBsE+)Q@s1DMCG5aX z%8S6LXlhsqEAoh9*`pRYd@M9LFmqNU+YnPX*%Zp${CL?YS`_QBOXPkx!|_}duV@Mr zxR{mZ;cDz*=+6(xqo?UhKTqGgoxXf^-Xr9FOkcT>xjIRq5b540p#z-^wW>}fVGo*7 zZZaGwnL|fl5osfC`PW|NC#)LX3`6;duT7?J-$-A)^Wxc+mp?q6zBl>e`K`>C_g@)( zuY^7vWbnJ_L$)%(&{Yz=_`V=^5!HSPhjE0WdQu%wQ>T-fp+t!$i9NDM$~zkQV5<<;KQJV6FAARX+9k^U6y$tQS_1C84vJKC^+yE7Zkr>fQ6bMsz}KYPd|ezEo~pBBa|- z&STCB%i)l9rPLe>A!6{f#8lYGD6Z->ZLpGzPcqXzhT)FR*-=6vYKHEYb(U8p>+yd%McV|ZG~cOkFjkE?UiVo zBxB_e4m1!x@vOrpYCjvWme4g4zP;FrUK$V6OgOjEb-;6uT*3SJfShb3owN9mqVf?* z2?*}W$F%YZtyD4+1U{u-85AdIOGzk9zsOlI3sG?T<`dBwp%*5ueA-LEzU#qu@Vr}y zr*#I82Ys&xeSe{7KJ>C2=-UbU4r-9M6U3bq@pk%`vJ3q*9>?w+=)o-XAYzDLyG*gsGb_^^%``gy|q*>LW~tN?;nr zxnh_`i(=A9l$r=ismN11%|sddMINSbh(Xks8)Ub@2XYGB?*+0jQVFs`?L~2`^bcpQ z)id*0)ybAyU*@;H{=DP9=_Ip`<`&KEtijYj DrNdu- literal 0 HcmV?d00001 diff --git a/models/system/target/classes/com/bwie/system/controller/MenuController.class b/models/system/target/classes/com/bwie/system/controller/MenuController.class new file mode 100644 index 0000000000000000000000000000000000000000..02b56bb2952a5b873a76dc972546f9077d50b62f GIT binary patch literal 3024 zcmbtWZF3V<6n<`+Hho#%0)ik21u1P)xV{txT9HyIZz*64_5Ed&Y||~9-MYJ>b{xOp z7ls)IW)%G(10$n@p9I7ih>rT*|ItwYgyVB}(>7^BTZhbK_ujMToco;noOAB|``_RG z1n@d?&4{2bhNy;mGzhF7*DvVO((SA~of&Kb9w`Z>2n7(p-`qH;E-~ZG#bN6BK{>5`c z#}9n|MQKv}rciuvopS|pwT3l_3&dRG)4bs^j$KI=+h@`<+zXcB%Q4@dkjMBK4h2J@ zVowX!;h7lLYuJEi1$HjWN?=9S@JlX;N?=`kN3dYHnZv%zKm*^KG(4vqH_>3w@W-4? z3%20-7`AHIhE{>COYD$9)U-z(f&J~(E0jq>0(+_@A&omUynvkoEjbdU_P|UV3^%!u zQng?F6!2M6V;sBC9z%zQP9y|&EW?Hi4UajKDl7UdOCUbGKY8D@WYY9}GQV3O`83RT z&HVNC^mjKO|Nd3+<_%^-GbCP&;Ux_(;}!0#!l_$kN>Ax>RQLRG&#~o+;nSyPlU?&2 zH4W(!Xe;00(tg&Ybqn??_Ffe@S#DCIy_$mMNIFIuu}?q?v%h%h8h54{2hbBkug2PC zNp6|jcn)%m#WlRV<;$Vq#q9U;>9pZ_0!PYWRcA&CXvaMJwH%V6LjnU83{C%hyLjp0 z-1RhB+ZU%gnoevjO!96GF_A8#^7(`K6agHtL!1P--V;m9~S-Lz$>(X%wp zfv3Q^Fo%xecnl{roJ5kjzF2h*>bA}v78ZBd&jh;5x4z%fJ&*Vo^P;+-z{a7x?VCAc z#PrORW%Sv$7OU(1JRHNq-tt{!a|tu0RrnQaZF9jVv!4Ud#e_iO%f(i&p|HIG;C&V-OsxWZ)hn{z5mm_TA;fo z50geprc66iPQg(&dwpU;9RdRN7j!F6Oq#4{iBZ*w*`=NsS5O|bZwSl0mTE-8e zHU>x+QK$2h>Y)}7?2P`rITxy3O0`Xcn?xCnQW1t$UN<7VP1RwOx)pI0 zQ70<|203ov`&1y~ePn?w$~muHe4eI;mRKO61ITJj6 z&vIF1e3yjTfIgAkK+x(`$hmvS>VBvd_8t=cskU6%?h zQWjVz155B)*2&PiINHtQbq|Bu&7LoVz_x`TN`Vm$KElTYn&3u!0-fGc^jR+`Rv!Ts zQ+h6@3=GO*ir`TW8j+o&y_GWcYl=5M!qEqaDe6T4E~I`9osUr#ff;y?b2QHR`8n^_ Ee+OTiz5oCK literal 0 HcmV?d00001 diff --git a/models/system/target/classes/com/bwie/system/controller/UserController.class b/models/system/target/classes/com/bwie/system/controller/UserController.class new file mode 100644 index 0000000000000000000000000000000000000000..4d78091ce21d6e637d23929dd9d7e2060e18d88d GIT binary patch literal 2404 zcmcIm>rY%o6#vaGba~vi6l%5g(E{a-9UoLHP!v#X%Pt_>^2Nktc6V4V-o1CdcNQeZ z53PwYCQVIj{i12BiH}c0Z4>9Idk6U%sKn#-@pC= z;5;tZA%t)QRR*eYfT3YtEC_B1JIyB(^D?Oz4h)*MsfHNBon14vs6lN6bq4BTFmxrI z3{NbYl6y;@k{OBwD-;PC_&O4 zsKFtI_X?liS^wns!WY-qeq8A<-pv=U|GfU-hr*53!t$qUcdr)je80Z@-P+Bcil43i z_2}E;)#cvx<<;W7YgeW(_J8zo02IH<7w_NNgbO#W6>qH&tlelZa0HDE5m$bYlOB26 z5!K#*$jR^pODaC6RF+?$CGI1peZqly9K{n695e7Fo?>X*7Z=09v{ZozvXbFwXIDv~ zAMUtvDHJ8yCk#BT1=kWoOsY92RflKsTm&Z#oI*3hNgZ}!nF)~)d{%gB-g9hzDLy%| zku*a&8uW!Sw0Bl$@@WQkRNjiy5wsa-M+d3dBUKDlrakL0j8}>e9NDgLKN!Elx(sxq zhoL@4snEeUlak^beZ1OqqUfqrY5^Gq@OhkxfE#!LFEX_5gNNbBtZAo4mNv3Oav5Ts zoBBvdh9aDDGQzZZP%ylLoT6D)6cD@8%UOzu^hQf)YtMMf?!#;B7N){JmX4F||7HD{8(p3OY$)sjd>eUM7ss~CDWdG}5@HAX+f z^iH<%ZOuKyv8@&_WjCxI+MRW9+jUTa+Tej9@}R+Q5K}_OR!NsaP#ZVXwoo~jLS_Az zMZC8)XLro@qD=4vJ+R6|PdT27iELK)JcjB8Vdco&maUak_G(K>?O#doKu4U^5-F(} zOj^MxtBX51Hz~(VT~19~C)F9<&i}1&cXEYZxY`_aq-f`w-EdMX0Jb<0CD&8H9z z=rB&`K})BQ?ucOMr}F{Y2TC{^V2|O#1k)s^b&x1H?Tq&7?p3gRC6@EF>TA#t8=}?l z3Gh1JAc*O%Ndh!;p7t>9v0o5rJlOpJhx2G+@DIo7sXfFqd9+k(OlMCXy&<3UrR}7> z8>GD}Brr^WJb)JRQLl|?rE%9nlkGHl*hY8l7^8h09VG)#`9=f=k~tX02pQT#JfnD% zBJ&o>(Qf#dF~Yn}m}*9Zzy&}sS1t6?zE@WRbmI*q3T~_;0N%d5Lc&A zmQD<|&v);=JD>0K>-_@&`f$>O3WKwW&Un0#$nDZP%y=g991VZa4%4Bxn^0rWor^cY zQ=t+*isv|S3_8(FFFbCLrVRQQ;jb1MnO1zNGa(f>_*$TK{JB80^n~7J==BOGQyxm| zdX!;^Zl*7P3m^E%(HN98auX$qc!S$!)pV0C@TJy#@mYRhk!oDosHh u8c=~I-RcZ>=xEWZKtQ23bO^c*?ZRqi_F#YG>U!jX-w)x4&ISdK0loo>4Zz3% literal 0 HcmV?d00001 diff --git a/models/system/target/classes/com/bwie/system/mapper/MenuMapper.class b/models/system/target/classes/com/bwie/system/mapper/MenuMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..a888bc968719a208ffafdb40f3c559f637a29ecf GIT binary patch literal 435 zcmZ{g&q~8U5XNU~+t@$a>dm7UsTT*qTU6*p5E2v%-Z$xxY{~AH-HoNM=D`Q>p~Oil z_8=aXof*FQ@y+-7_5J|>cW@FxN5FY*HD(({=(j$QMlIKCa+s2-)3%JDD`2{kZxSnM z3Vg~|lm`K0Wjwi%ZX2n9n_2RU;zC=4ORJ?axKqTJ$)53O0u|(92B#ECyL^^TY6|4M zfUa(VqeW>q4SQZy0#0W?`*lziCdvn19xPO0WT+hpxc(!!{nrpf<9ps8E^O^`dQcSu zCi|1G8m9uzUTPDRrdQ=vR?*xT8)Q({u*r+Wx&q}|<|U!ZcstiZH@`3HPL z8KDW~W&eSEE1-3+OwfI~rpJs@>v#cY+r2Lz2Rb$~h&3uBlN^)Z@XpSEu##a~U3O|Lh1_cH z*JuZ_tHNXQmBy&Eb0?teJf{IS?gDn8ah67LMz?wJmvqwY&fLUV;?s$WSUBg}&HwkF zYgWM8&%6C`rCSrOG#7Qs0t8I)V*{AxH&lW$cu?W5l7K2tH69Je%R0;E_41Wz$XW8*cJc) literal 0 HcmV?d00001 diff --git a/models/system/target/classes/com/bwie/system/service/HotelService.class b/models/system/target/classes/com/bwie/system/service/HotelService.class new file mode 100644 index 0000000000000000000000000000000000000000..e3ad088b09d02fb8ade5a56b08060f62b82dcf70 GIT binary patch literal 728 zcmb_aOHKko5Uoc3pn|`>i3{A=2LLf{jEhmki3ezAD$t~78v6s`6yC>$2k=nFo*sfG zgvi20r@HD@z50HBy?+3}HJnwTK;R;h2^}psQoYm$6RJ_od4%*{8Wdr!RG>(pHDz-~ z1xv?tFq&dy2sFcqTzJP@AqWJWV9n+}iA-rM6UI}j@YSL=bZAj6eL(ke!&jlU!q8_g zx-Q`Znu&~`m|_VURGL8D(X0pv)IvT^nXw89y!~V9Uf?^mh6@^SZF(D(uDjARnQF{R z_Mg17ez)(cZ*YewGf*)q0ykUh^A0;qqa<^tdd?dfwj|KsN}J(3uokuFX$<)zw=Xjx zSxn%(^Y?P9A)*g*O9`b_5#Dj(7SaBFH&@vp%LEAQxswAZxicz3846IzGy+v8YVH-F h?w|%Vo$CtPhwSJM;PA)P@}@Q%d3l^k2cG!&({F@#*%tr+ literal 0 HcmV?d00001 diff --git a/models/system/target/classes/com/bwie/system/service/MenuService.class b/models/system/target/classes/com/bwie/system/service/MenuService.class new file mode 100644 index 0000000000000000000000000000000000000000..b40ded9441d3c9d92f7cd579fbf77ee29f4ad6de GIT binary patch literal 369 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 G0sIH0JMv`! literal 0 HcmV?d00001 diff --git a/models/system/target/classes/com/bwie/system/service/impl/MenuServiceImpl.class b/models/system/target/classes/com/bwie/system/service/impl/MenuServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..2139c4c29ab5a64772db424021f86ca021bfe2fb GIT binary patch literal 2381 zcmah~TUQ%Z6#h;E440{;^dhv>N})Ae$KGs9u$GGzG=bXCc)twEAsm{_WKAZp_z!mZ z;&RoczVr{YE?E?``UCtO$f{31`=Wklk|vOHS%f*ay}y0m`;UKr`5nNUSZqcJVFPt0 z>d_$3x@a%iR@Qbh*38_ZO!)#0Bg#?!4S{f^H`#>0*j!f#w`<;&whSJ%R36Epsk-3D`Ph_KLuXk~uZJ(MDVo=-K@3yT2a( zxVe7++1k&4KmF?2qbFP6uWsFcxb@AW&0imEeY^4J)32K`jHrPTll8(fcp<=^EEKc8 zbthN^>ZRwo%XxPZ z276=4fz?i;b8CmFmHcyYRt@b)RqoE3(4LCkprEFN$~d-P^k~6_=T%XWbuj-NNI*o!!546Fu*Ru{UM5IB_Z?bJQC_8=w(*ldne=S{hv z($8_}FSzO3w$2A%dJNm}u4&?XOcN#vQ)zpW%vP`2NZ4=^ZqZB0TS_O#v2CfThtiN% zKp?WK0FE?Ix<12dB}#KFiY`vT5Cq=iH>9T^_i@hB2CmawL%Ms{+=Y4Oc;$D76c$&( zwZ88O#7_asZGQDL(1!Q<)u1H69VEEYO}q~U%t@X?nxbzN#s&@v#QGoe9EQfw(;S>b z&FBnpPLycNIQn%KcZrbH2wY1yA8_{}Z$kKpyW{wnXj;*Ks6i9ggqGF6fukYB`&aSu zG|#68H_#Qra9u~;8eUt&;PrYwUD6w)y}sRe@B^CKuCC+yV@<4YGV6GYOygm!B(-iqKArebn(yPOu33)_S^v~GZ>gN2}7$>Hb?J1!KYNY1(W!UoFO8N>oH6N zI?4SxzCazZ2Jt0q8ezPh;tI+Kf)UZ8V$4?NCm%0ILtT6|9U}qRDwIteF&N0 JyHL4R!2bf>fy)2@ literal 0 HcmV?d00001 diff --git a/models/system/target/classes/com/bwie/system/service/impl/UserServiceImpl.class b/models/system/target/classes/com/bwie/system/service/impl/UserServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..4bf2d56070fe69d5d2d25952d0e272c8ae5acb7f GIT binary patch literal 1767 zcmb_c+j0{}5IrMbgzYt$n+f4+%tbPahZw?5genY0l`FDIS&809tFb(w-BosHap|w1 zimD_$4B&!5Gz=NhWGu`K$?&<9hAK(86;8#@VQNUCY(;j9pE3ouZy;icL z!nSiarL1a6mVDXTYC$JczvNnp9$K-qn{Y1+@UZvxe+mK#M};p+|Z9(#GGubw};z}ek2v?kCE zlbB{lKMBLgDr=&U^|)V);u?gFIu?qA-6u**9t-?g^Dc?qMPpUzHe3IJez{I*$ z6_|b+wW#`7&4hX<4VpUsLlIu!L@n}Fr=eow_Wi?YyKl(1K77_O$&;FuEZg7MHHV*) zCGR&|-jkJ~oUgYeQ%+e|w%g~T94Iv}ZEL$9wSHHwpjOAsd#-NUp|WYr`gFc$N{_y% zgvHdv2VjbCDSId4#6)T*11#tTCS8#KWc9qj}mi8*`G%bfG*K6EKT0uLr z_BX^^{wd%(S9cA5e>b=~06L(AGA&0I)-aU?@49Ksv!%6nDBk=Riv?^~{=vyNJj-$1 zyarBF#&U*rIrr~lF%maXA?5<{f5JMwCH-dvkAYhm%+I{$MB$aw`-0X{F7_$UI?8dr zbHqD8!nZi!Tf_!#XMBajd>h0RxPxE%JUe7@Jf7pJFt-a+7?vkbYlSpdMrgbNjfcCq bM?6r~{y{*ZOsM3zDo4MYt zD{aXtR(eC&EkT~sa~Vx_kKG%^K0GX;zU)RiWi4o?gqA8tv~4{@MuUX?8|Rc9%T{t) zV!$%9dai6Mj&7L|d<>7ucr1$j__%~U8{+&bSZ3maWiqO|EBxt_5O4K+?i1;aAdbgH zUZ0TA(CQ1%FC?S!00lhSS#wGj(87Cy{7Lqy3${AWBS7HiIafskJYK6(CqAVoVM`X^*EPMQ- z3e&QMbuvCFp?Txjb?^#SMl%wFT2?6=&P3Un)Er^GKZ*eiN(g0bt1!wVB^;{)obQ|g zLn)Pd{U>`>+#AM83`cPary16Qwk#p$Q>zq37&1nqID;gG3@az0F=^Skgi=)0yq4ff zj6Gem7Lzj4QA~;C?|*ijna-46&{Dc#=p~mvqjiLbf3<%P zfpE&rrIXsz&6yZ#F&4o*7GxMv6u``G-(XA9GKKJ>VwAPR3r zd^U>D;qwxnxL;l?eMCYyr#T*XBpmg7w$9!ASrLq5q4f<645iZ-&kW5<*tSly837kJ z(?bK3LsQ;negE{p8BWIfQbX+7gX5{bkui4`!b=j`Mcwx#5=Gt6I~J`>XQ|65s`?vi=;7TlMsfsb9*t(ck76VRRaG=F) zyAQf6MNHm(A{r$N-mbJPws&9O-qfY2BT=-`w_mk5C>P4o>VzUL#em}8jeC4r?&U46 zOiI?OS-0x9wx~^46eYKL{@zQg-;edSw&?~DI&N8}lwt*=ohi-9TbT*PRtlP<*~H8A zGor#mA65Ual_~@$9Tip8N~JTRC5B5H-wclX9hobu3z{=V&zPKyRZw)(n>6G!Q{z>w zO>8L$2?wh9zo~dD5mb`mSqy8Ji#k(2!Zsj{(vQl#kHuS`*{C-vJ*66z*H|QNm2Fk? z2($Y?9$%fJnXoJLTb5IDY^CTSUD^@EuOj$0ek0?zqAA|sZNAZWbaRo|0{Zv;?#0ct0Mk@)>JVupcqD4cQn4xe$PAg z?v1N=U$}nv?dx||U;OBmx9+UHerNT@N7r8Z+Z!+6xxI4twO9Y~;Wa6QcO@MBA8I~? z_a)RwRQ!X4L;t;ELgL$J#3W7Jrlyr-tkTIXNLK?;#+ro3?k~#6t%o)md1cq|f~iA; zxVQP$fG^-Qug>TBU4t;^U-ZrEIscMxzKio0eDfD+iEm2;IewWI68x2f{q|ds-gQlW zg`?O8cHm`>QBMG0#VeeJ@ijcmgQ+YHB0%?mV)pmb;jojrB&x)pT2i6ggheD)T4#I!edas_>V!O0IW)DwIU zBk|xGQotWEQ3LTk4cvSO5l{KNbd#<%!QfRn!y8vP{v@_>Y(xl;)BR>f-$IFYbfbfh zxK7F?pz#G-z)@;-!RGsJiCQAiNovjT_0LBX0qEuf?d$jkv9kI9ReX~pL&dka3rb$X zYj~aK@8C7Rk83qN>mt65@6eMbI{ICFkMO)f*+)_PFCJJYqbOs$JH}OLcI&*i-0pi>2?>+F!B{R!y-7m>B1?#uJKE-&ca(RoZ{1u&W5WfD`$9|Ei~8PaS;$y#UV#PevsrKfn*Y zl;D@7MTqM?6~2$H;xoIEDePB{1!CE{KcQx}wtbB*B0U?}8(4*&UWL^Y><|el_sDVi zCber^qV9F+q|sg$yO1L-^Ed|GMeZ4%!&C4h#w`AN@MHXh*n~(}LAqLM9KcVx7NA}| zenz< + + + + + + + + + + + + + + select id, + name, + price, + pic, + number, + status + from t_hotel + + + + insert into t_order( + order_card, + name, + price, + user_id + ) + values ( + #{orderCard}, + #{name}, + #{price}, + #{userId} + ) + + + insert into t_saty( + username, + phone, + card, + name, + price, + day_number, + total_price + ) + values ( + #{username}, + #{phone}, + #{card}, + #{name}, + #{price}, + #{day_number}, + #{totalPrice} + ) + + + + + + diff --git a/models/system/target/classes/mapper/MenuMapper.xml b/models/system/target/classes/mapper/MenuMapper.xml new file mode 100644 index 0000000..8475b1b --- /dev/null +++ b/models/system/target/classes/mapper/MenuMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + insert into t_my_menu( + my_id, + user_id, + menu_id, + pay + )values ( + #{myId}, + #{userId}, + #{menuId}, + #{pay} + ) + + + + diff --git a/models/system/target/classes/mapper/UserMapper.xml b/models/system/target/classes/mapper/UserMapper.xml new file mode 100644 index 0000000..b225684 --- /dev/null +++ b/models/system/target/classes/mapper/UserMapper.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + select u.user_id, + u.username, + u.password, + u.phone, + u.balance, + u.role_id, + r.role_name + from t_user u left join t_role r + on u.role_id=r.role_id + + + + update t_user set balance=#{userBalance} where user_id=#{userId} + + + + + + + + + diff --git a/models/system/target/maven-archiver/pom.properties b/models/system/target/maven-archiver/pom.properties new file mode 100644 index 0000000..32a1b07 --- /dev/null +++ b/models/system/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=system +groupId=com.wzx +version=1.0-SNAPSHOT diff --git a/models/system/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/models/system/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..493c5ed --- /dev/null +++ b/models/system/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,14 @@ +com\bwie\system\mapper\HotelMapper.class +com\bwie\system\util\QiNiuUploadUtil.class +com\bwie\system\SystemApp.class +com\bwie\system\service\UserService.class +com\bwie\system\controller\MenuController.class +com\bwie\system\service\impl\HotelServiceImpl.class +com\bwie\system\service\MenuService.class +com\bwie\system\service\impl\UserServiceImpl.class +com\bwie\system\mapper\UserMapper.class +com\bwie\system\controller\HotelController.class +com\bwie\system\mapper\MenuMapper.class +com\bwie\system\service\impl\MenuServiceImpl.class +com\bwie\system\service\HotelService.class +com\bwie\system\controller\UserController.class diff --git a/models/system/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/models/system/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..936c94b --- /dev/null +++ b/models/system/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,14 @@ +D:\Project\Finish\models\system\src\main\java\com\bwie\system\util\QiNiuUploadUtil.java +D:\Project\Finish\models\system\src\main\java\com\bwie\system\controller\UserController.java +D:\Project\Finish\models\system\src\main\java\com\bwie\system\mapper\HotelMapper.java +D:\Project\Finish\models\system\src\main\java\com\bwie\system\service\HotelService.java +D:\Project\Finish\models\system\src\main\java\com\bwie\system\controller\MenuController.java +D:\Project\Finish\models\system\src\main\java\com\bwie\system\service\MenuService.java +D:\Project\Finish\models\system\src\main\java\com\bwie\system\service\impl\MenuServiceImpl.java +D:\Project\Finish\models\system\src\main\java\com\bwie\system\SystemApp.java +D:\Project\Finish\models\system\src\main\java\com\bwie\system\service\impl\UserServiceImpl.java +D:\Project\Finish\models\system\src\main\java\com\bwie\system\service\UserService.java +D:\Project\Finish\models\system\src\main\java\com\bwie\system\service\impl\HotelServiceImpl.java +D:\Project\Finish\models\system\src\main\java\com\bwie\system\controller\HotelController.java +D:\Project\Finish\models\system\src\main\java\com\bwie\system\mapper\UserMapper.java +D:\Project\Finish\models\system\src\main\java\com\bwie\system\mapper\MenuMapper.java diff --git a/models/system/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/models/system/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/models/system/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/models/system/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/models/system/target/system-1.0-SNAPSHOT.jar b/models/system/target/system-1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..d9129197846cea39f3f84714f8d19f66f4dd02f6 GIT binary patch literal 20168 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 X)F97_Zc^8-z3?k^lrgT!azu8C0}*iO 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 literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..2e5c5b3 --- /dev/null +++ b/pom.xml @@ -0,0 +1,55 @@ + + + 4.0.0 + + com.wzx + Finish + pom + 1.0-SNAPSHOT + + common + auth + models + gateway + + + + + + 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 + + + + + +