From 8cb5617cd07cd39e4dc28f1affe1f2dfe5b2fc77 Mon Sep 17 00:00:00 2001 From: YangNan <954659655@qq.com> Date: Wed, 13 Dec 2023 08:57:15 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 8 + .idea/compiler.xml | 32 ++ .idea/encodings.xml | 12 + .idea/inspectionProfiles/Project_Default.xml | 36 ++ .idea/jarRepositories.xml | 20 ++ .idea/misc.xml | 19 ++ .idea/vcs.xml | 6 + bwie-auth/pom.xml | 46 +++ .../java/com/bwie/auth/AuthApplication.java | 14 + .../bwie/auth/config/RabbitAdminConfig.java | 53 +++ .../bwie/auth/controller/AuthController.java | 62 ++++ .../bwie/auth/feign/LoginFeignService.java | 14 + .../com/bwie/auth/feign/UserFeignService.java | 15 + .../com/bwie/auth/service/AuhService.java | 12 + .../auth/service/impl/AuhServiceImpl.java | 86 +++++ .../java/com/bwie/auth/utils/DLXQueue.java | 77 +++++ .../com/bwie/auth/utils/DelayedQueue.java | 79 +++++ .../java/com/bwie/auth/utils/TtlQueue.java | 66 ++++ bwie-auth/src/main/resources/bootstrap.yml | 112 +++++++ bwie-auth/target/classes/bootstrap.yml | 112 +++++++ .../com/bwie/auth/AuthApplication.class | Bin 0 -> 815 bytes .../bwie/auth/config/RabbitAdminConfig.class | Bin 0 -> 2319 bytes .../bwie/auth/controller/AuthController.class | Bin 0 -> 2652 bytes .../bwie/auth/feign/LoginFeignService.class | Bin 0 -> 693 bytes .../bwie/auth/feign/UserFeignService.class | Bin 0 -> 680 bytes .../com/bwie/auth/service/AuhService.class | Bin 0 -> 347 bytes .../auth/service/impl/AuhServiceImpl.class | Bin 0 -> 3457 bytes .../com/bwie/auth/utils/DLXQueue.class | Bin 0 -> 3401 bytes .../com/bwie/auth/utils/DelayedQueue.class | Bin 0 -> 4918 bytes .../com/bwie/auth/utils/TtlQueue.class | Bin 0 -> 2952 bytes bwie-common/pom.xml | 126 +++++++ .../bwie/common/config/RabbitMQConfig.java | 59 ++++ .../com/bwie/common/constants/Constants.java | 18 + .../bwie/common/constants/JwtConstants.java | 34 ++ .../bwie/common/constants/QueueConstants.java | 15 + .../constants/RabbitMQOneConstants.java | 18 + .../constants/RabbitMQTwoConstants.java | 18 + .../bwie/common/constants/TokenConstants.java | 24 ++ .../java/com/bwie/common/domain/Client.java | 34 ++ .../java/com/bwie/common/domain/Complain.java | 51 +++ .../java/com/bwie/common/domain/Floor.java | 26 ++ .../java/com/bwie/common/domain/Login.java | 20 ++ .../java/com/bwie/common/domain/Repair.java | 43 +++ .../java/com/bwie/common/domain/Role.java | 49 +++ .../java/com/bwie/common/domain/Room.java | 46 +++ .../java/com/bwie/common/domain/Space.java | 46 +++ .../java/com/bwie/common/domain/User.java | 43 +++ .../com/bwie/common/domain/request/Count.java | 16 + .../common/domain/request/UserRequest.java | 15 + .../java/com/bwie/common/mq/Conmuser.java | 27 ++ .../com/bwie/common/result/PageResult.java | 34 ++ .../java/com/bwie/common/result/Result.java | 76 +++++ .../java/com/bwie/common/utils/IpUtils.java | 312 ++++++++++++++++++ .../java/com/bwie/common/utils/JwtUtils.java | 109 ++++++ .../com/bwie/common/utils/StringUtils.java | 68 ++++ .../com/bwie/common/utils/TelSmsUtils.java | 88 +++++ .../com/bwie/common/constants/Constants.class | Bin 0 -> 651 bytes .../bwie/common/constants/JwtConstants.class | Bin 0 -> 638 bytes .../common/constants/QueueConstants.class | Bin 0 -> 634 bytes .../constants/RabbitMQOneConstants.class | Bin 0 -> 508 bytes .../constants/RabbitMQTwoConstants.class | Bin 0 -> 493 bytes .../common/constants/TokenConstants.class | Bin 0 -> 526 bytes .../com/bwie/common/domain/Client.class | Bin 0 -> 5305 bytes .../com/bwie/common/domain/Complain.class | Bin 0 -> 7760 bytes .../com/bwie/common/domain/Floor.class | Bin 0 -> 3652 bytes .../com/bwie/common/domain/Login.class | Bin 0 -> 3137 bytes .../com/bwie/common/domain/Repair.class | Bin 0 -> 6042 bytes .../classes/com/bwie/common/domain/Role.class | Bin 0 -> 6528 bytes .../classes/com/bwie/common/domain/Room.class | Bin 0 -> 6832 bytes .../com/bwie/common/domain/Space.class | Bin 0 -> 6573 bytes .../classes/com/bwie/common/domain/User.class | Bin 0 -> 5852 bytes .../bwie/common/domain/request/Count.class | Bin 0 -> 2080 bytes .../common/domain/request/UserRequest.class | Bin 0 -> 2039 bytes .../com/bwie/common/result/PageResult.class | Bin 0 -> 3304 bytes .../com/bwie/common/result/Result.class | Bin 0 -> 4886 bytes .../com/bwie/common/utils/IpUtils.class | Bin 0 -> 6702 bytes .../com/bwie/common/utils/JwtUtils.class | Bin 0 -> 2875 bytes .../com/bwie/common/utils/StringUtils.class | Bin 0 -> 1808 bytes .../com/bwie/common/utils/TelSmsUtils.class | Bin 0 -> 3799 bytes bwie-gateway/pom.xml | 40 +++ .../com/bwie/gateway/GateWayApplication.java | 14 + .../gateway/config/IgnoreWhiteConfig.java | 32 ++ .../com/bwie/gateway/filters/AuthFilter.java | 86 +++++ .../com/bwie/gateway/utils/GatewayUtils.java | 98 ++++++ bwie-gateway/src/main/resources/bootstrap.yml | 29 ++ bwie-gateway/target/classes/bootstrap.yml | 29 ++ .../com/bwie/gateway/GateWayApplication.class | Bin 0 -> 767 bytes .../gateway/config/IgnoreWhiteConfig.class | Bin 0 -> 2590 bytes .../com/bwie/gateway/filters/AuthFilter.class | Bin 0 -> 4354 bytes .../com/bwie/gateway/utils/GatewayUtils.class | Bin 0 -> 6222 bytes bwie-module/bwie-floor/bwie-floor.iml | 2 + bwie-module/bwie-floor/pom.xml | 64 ++++ .../java/com/bwie/floor/FloorApplication.java | 13 + .../floor/controller/FloorController.java | 278 ++++++++++++++++ .../com/bwie/floor/mapper/FloorMapper.java | 43 +++ .../com/bwie/floor/service/FloorService.java | 43 +++ .../floor/service/impl/FloorServiceImpl.java | 218 ++++++++++++ .../java/com/bwie/floor/util/FastUtil.java | 55 +++ .../src/main/resources/bootstrap.yml | 41 +++ .../src/main/resources/mapper/FloorMapper.xml | 60 ++++ .../bwie-floor/target/classes/bootstrap.yml | 41 +++ .../com/bwie/floor/FloorApplication.class | Bin 0 -> 757 bytes .../floor/controller/FloorController.class | Bin 0 -> 9526 bytes .../com/bwie/floor/mapper/FloorMapper.class | Bin 0 -> 1387 bytes .../com/bwie/floor/service/FloorService.class | Bin 0 -> 1375 bytes .../floor/service/impl/FloorServiceImpl.class | Bin 0 -> 6100 bytes .../com/bwie/floor/util/FastUtil.class | Bin 0 -> 2593 bytes .../target/classes/mapper/FloorMapper.xml | 60 ++++ bwie-module/bwie-login/pom.xml | 64 ++++ .../java/com/bwie/login/LoginApplication.java | 13 + .../login/controller/LoginController.java | 68 ++++ .../com/bwie/login/mapper/LoginMapper.java | 15 + .../com/bwie/login/service/LoginService.java | 12 + .../login/service/impl/LoginServiceImpl.java | 28 ++ .../java/com/bwie/login/util/FastUtil.java | 55 +++ .../src/main/resources/bootstrap.yml | 41 +++ .../src/main/resources/mapper/LoginMapper.xml | 11 + .../bwie-login/target/classes/bootstrap.yml | 41 +++ .../com/bwie/login/LoginApplication.class | Bin 0 -> 757 bytes .../login/controller/LoginController.class | Bin 0 -> 3239 bytes .../com/bwie/login/mapper/LoginMapper.class | Bin 0 -> 540 bytes .../com/bwie/login/service/LoginService.class | Bin 0 -> 359 bytes .../login/service/impl/LoginServiceImpl.class | Bin 0 -> 1034 bytes .../com/bwie/login/util/FastUtil.class | Bin 0 -> 2593 bytes .../target/classes/mapper/LoginMapper.xml | 11 + bwie-module/bwie-service/pom.xml | 64 ++++ .../com/bwie/service/ServiceApplication.java | 15 + .../service/controller/ServiceController.java | 88 +++++ .../bwie/service/mapper/ServiceMapper.java | 16 + .../bwie/service/service/ServiceService.java | 15 + .../service/impl/ServiceServiceImpl.java | 43 +++ .../java/com/bwie/service/util/FastUtil.java | 55 +++ .../src/main/resources/bootstrap.yml | 41 +++ .../main/resources/mapper/ServiceMapper.xml | 19 ++ .../bwie-service/target/classes/bootstrap.yml | 41 +++ .../com/bwie/service/ServiceApplication.class | Bin 0 -> 767 bytes .../controller/ServiceController.class | Bin 0 -> 3583 bytes .../bwie/service/mapper/ServiceMapper.class | Bin 0 -> 542 bytes .../bwie/service/service/ServiceService.class | Bin 0 -> 476 bytes .../service/impl/ServiceServiceImpl.class | Bin 0 -> 1672 bytes .../com/bwie/service/util/FastUtil.class | Bin 0 -> 2597 bytes .../target/classes/mapper/ServiceMapper.xml | 19 ++ bwie-module/bwie-user/pom.xml | 64 ++++ .../java/com/bwie/user/UserApplication.java | 13 + .../bwie/user/controller/UserController.java | 132 ++++++++ .../java/com/bwie/user/mapper/UserMapper.java | 34 ++ .../com/bwie/user/service/UserService.java | 21 ++ .../user/service/impl/UserServiceImpl.java | 144 ++++++++ .../java/com/bwie/user/util/FastUtil.java | 55 +++ .../src/main/resources/bootstrap.yml | 41 +++ .../src/main/resources/mapper/UserMapper.xml | 37 +++ .../bwie-user/target/classes/bootstrap.yml | 41 +++ .../com/bwie/user/UserApplication.class | Bin 0 -> 752 bytes .../bwie/user/controller/UserController.class | Bin 0 -> 5263 bytes .../com/bwie/user/mapper/UserMapper.class | Bin 0 -> 1287 bytes .../com/bwie/user/service/UserService.class | Bin 0 -> 665 bytes .../user/service/impl/UserServiceImpl.class | Bin 0 -> 4831 bytes .../classes/com/bwie/user/util/FastUtil.class | Bin 0 -> 2591 bytes .../target/classes/mapper/UserMapper.xml | 37 +++ bwie-module/pom.xml | 22 ++ bwie-tenement.iml | 2 + pom.xml | 65 ++++ 162 files changed, 5025 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml create mode 100644 bwie-auth/pom.xml create mode 100644 bwie-auth/src/main/java/com/bwie/auth/AuthApplication.java create mode 100644 bwie-auth/src/main/java/com/bwie/auth/config/RabbitAdminConfig.java create mode 100644 bwie-auth/src/main/java/com/bwie/auth/controller/AuthController.java create mode 100644 bwie-auth/src/main/java/com/bwie/auth/feign/LoginFeignService.java create mode 100644 bwie-auth/src/main/java/com/bwie/auth/feign/UserFeignService.java create mode 100644 bwie-auth/src/main/java/com/bwie/auth/service/AuhService.java create mode 100644 bwie-auth/src/main/java/com/bwie/auth/service/impl/AuhServiceImpl.java create mode 100644 bwie-auth/src/main/java/com/bwie/auth/utils/DLXQueue.java create mode 100644 bwie-auth/src/main/java/com/bwie/auth/utils/DelayedQueue.java create mode 100644 bwie-auth/src/main/java/com/bwie/auth/utils/TtlQueue.java create mode 100644 bwie-auth/src/main/resources/bootstrap.yml create mode 100644 bwie-auth/target/classes/bootstrap.yml create mode 100644 bwie-auth/target/classes/com/bwie/auth/AuthApplication.class create mode 100644 bwie-auth/target/classes/com/bwie/auth/config/RabbitAdminConfig.class create mode 100644 bwie-auth/target/classes/com/bwie/auth/controller/AuthController.class create mode 100644 bwie-auth/target/classes/com/bwie/auth/feign/LoginFeignService.class create mode 100644 bwie-auth/target/classes/com/bwie/auth/feign/UserFeignService.class create mode 100644 bwie-auth/target/classes/com/bwie/auth/service/AuhService.class create mode 100644 bwie-auth/target/classes/com/bwie/auth/service/impl/AuhServiceImpl.class create mode 100644 bwie-auth/target/classes/com/bwie/auth/utils/DLXQueue.class create mode 100644 bwie-auth/target/classes/com/bwie/auth/utils/DelayedQueue.class create mode 100644 bwie-auth/target/classes/com/bwie/auth/utils/TtlQueue.class create mode 100644 bwie-common/pom.xml create mode 100644 bwie-common/src/main/java/com/bwie/common/config/RabbitMQConfig.java create mode 100644 bwie-common/src/main/java/com/bwie/common/constants/Constants.java create mode 100644 bwie-common/src/main/java/com/bwie/common/constants/JwtConstants.java create mode 100644 bwie-common/src/main/java/com/bwie/common/constants/QueueConstants.java create mode 100644 bwie-common/src/main/java/com/bwie/common/constants/RabbitMQOneConstants.java create mode 100644 bwie-common/src/main/java/com/bwie/common/constants/RabbitMQTwoConstants.java create mode 100644 bwie-common/src/main/java/com/bwie/common/constants/TokenConstants.java create mode 100644 bwie-common/src/main/java/com/bwie/common/domain/Client.java create mode 100644 bwie-common/src/main/java/com/bwie/common/domain/Complain.java create mode 100644 bwie-common/src/main/java/com/bwie/common/domain/Floor.java create mode 100644 bwie-common/src/main/java/com/bwie/common/domain/Login.java create mode 100644 bwie-common/src/main/java/com/bwie/common/domain/Repair.java create mode 100644 bwie-common/src/main/java/com/bwie/common/domain/Role.java create mode 100644 bwie-common/src/main/java/com/bwie/common/domain/Room.java create mode 100644 bwie-common/src/main/java/com/bwie/common/domain/Space.java create mode 100644 bwie-common/src/main/java/com/bwie/common/domain/User.java create mode 100644 bwie-common/src/main/java/com/bwie/common/domain/request/Count.java create mode 100644 bwie-common/src/main/java/com/bwie/common/domain/request/UserRequest.java create mode 100644 bwie-common/src/main/java/com/bwie/common/mq/Conmuser.java create mode 100644 bwie-common/src/main/java/com/bwie/common/result/PageResult.java create mode 100644 bwie-common/src/main/java/com/bwie/common/result/Result.java create mode 100644 bwie-common/src/main/java/com/bwie/common/utils/IpUtils.java create mode 100644 bwie-common/src/main/java/com/bwie/common/utils/JwtUtils.java create mode 100644 bwie-common/src/main/java/com/bwie/common/utils/StringUtils.java create mode 100644 bwie-common/src/main/java/com/bwie/common/utils/TelSmsUtils.java create mode 100644 bwie-common/target/classes/com/bwie/common/constants/Constants.class create mode 100644 bwie-common/target/classes/com/bwie/common/constants/JwtConstants.class create mode 100644 bwie-common/target/classes/com/bwie/common/constants/QueueConstants.class create mode 100644 bwie-common/target/classes/com/bwie/common/constants/RabbitMQOneConstants.class create mode 100644 bwie-common/target/classes/com/bwie/common/constants/RabbitMQTwoConstants.class create mode 100644 bwie-common/target/classes/com/bwie/common/constants/TokenConstants.class create mode 100644 bwie-common/target/classes/com/bwie/common/domain/Client.class create mode 100644 bwie-common/target/classes/com/bwie/common/domain/Complain.class create mode 100644 bwie-common/target/classes/com/bwie/common/domain/Floor.class create mode 100644 bwie-common/target/classes/com/bwie/common/domain/Login.class create mode 100644 bwie-common/target/classes/com/bwie/common/domain/Repair.class create mode 100644 bwie-common/target/classes/com/bwie/common/domain/Role.class create mode 100644 bwie-common/target/classes/com/bwie/common/domain/Room.class create mode 100644 bwie-common/target/classes/com/bwie/common/domain/Space.class create mode 100644 bwie-common/target/classes/com/bwie/common/domain/User.class create mode 100644 bwie-common/target/classes/com/bwie/common/domain/request/Count.class create mode 100644 bwie-common/target/classes/com/bwie/common/domain/request/UserRequest.class create mode 100644 bwie-common/target/classes/com/bwie/common/result/PageResult.class create mode 100644 bwie-common/target/classes/com/bwie/common/result/Result.class create mode 100644 bwie-common/target/classes/com/bwie/common/utils/IpUtils.class create mode 100644 bwie-common/target/classes/com/bwie/common/utils/JwtUtils.class create mode 100644 bwie-common/target/classes/com/bwie/common/utils/StringUtils.class create mode 100644 bwie-common/target/classes/com/bwie/common/utils/TelSmsUtils.class create mode 100644 bwie-gateway/pom.xml create mode 100644 bwie-gateway/src/main/java/com/bwie/gateway/GateWayApplication.java create mode 100644 bwie-gateway/src/main/java/com/bwie/gateway/config/IgnoreWhiteConfig.java create mode 100644 bwie-gateway/src/main/java/com/bwie/gateway/filters/AuthFilter.java create mode 100644 bwie-gateway/src/main/java/com/bwie/gateway/utils/GatewayUtils.java create mode 100644 bwie-gateway/src/main/resources/bootstrap.yml create mode 100644 bwie-gateway/target/classes/bootstrap.yml create mode 100644 bwie-gateway/target/classes/com/bwie/gateway/GateWayApplication.class create mode 100644 bwie-gateway/target/classes/com/bwie/gateway/config/IgnoreWhiteConfig.class create mode 100644 bwie-gateway/target/classes/com/bwie/gateway/filters/AuthFilter.class create mode 100644 bwie-gateway/target/classes/com/bwie/gateway/utils/GatewayUtils.class create mode 100644 bwie-module/bwie-floor/bwie-floor.iml create mode 100644 bwie-module/bwie-floor/pom.xml create mode 100644 bwie-module/bwie-floor/src/main/java/com/bwie/floor/FloorApplication.java create mode 100644 bwie-module/bwie-floor/src/main/java/com/bwie/floor/controller/FloorController.java create mode 100644 bwie-module/bwie-floor/src/main/java/com/bwie/floor/mapper/FloorMapper.java create mode 100644 bwie-module/bwie-floor/src/main/java/com/bwie/floor/service/FloorService.java create mode 100644 bwie-module/bwie-floor/src/main/java/com/bwie/floor/service/impl/FloorServiceImpl.java create mode 100644 bwie-module/bwie-floor/src/main/java/com/bwie/floor/util/FastUtil.java create mode 100644 bwie-module/bwie-floor/src/main/resources/bootstrap.yml create mode 100644 bwie-module/bwie-floor/src/main/resources/mapper/FloorMapper.xml create mode 100644 bwie-module/bwie-floor/target/classes/bootstrap.yml create mode 100644 bwie-module/bwie-floor/target/classes/com/bwie/floor/FloorApplication.class create mode 100644 bwie-module/bwie-floor/target/classes/com/bwie/floor/controller/FloorController.class create mode 100644 bwie-module/bwie-floor/target/classes/com/bwie/floor/mapper/FloorMapper.class create mode 100644 bwie-module/bwie-floor/target/classes/com/bwie/floor/service/FloorService.class create mode 100644 bwie-module/bwie-floor/target/classes/com/bwie/floor/service/impl/FloorServiceImpl.class create mode 100644 bwie-module/bwie-floor/target/classes/com/bwie/floor/util/FastUtil.class create mode 100644 bwie-module/bwie-floor/target/classes/mapper/FloorMapper.xml create mode 100644 bwie-module/bwie-login/pom.xml create mode 100644 bwie-module/bwie-login/src/main/java/com/bwie/login/LoginApplication.java create mode 100644 bwie-module/bwie-login/src/main/java/com/bwie/login/controller/LoginController.java create mode 100644 bwie-module/bwie-login/src/main/java/com/bwie/login/mapper/LoginMapper.java create mode 100644 bwie-module/bwie-login/src/main/java/com/bwie/login/service/LoginService.java create mode 100644 bwie-module/bwie-login/src/main/java/com/bwie/login/service/impl/LoginServiceImpl.java create mode 100644 bwie-module/bwie-login/src/main/java/com/bwie/login/util/FastUtil.java create mode 100644 bwie-module/bwie-login/src/main/resources/bootstrap.yml create mode 100644 bwie-module/bwie-login/src/main/resources/mapper/LoginMapper.xml create mode 100644 bwie-module/bwie-login/target/classes/bootstrap.yml create mode 100644 bwie-module/bwie-login/target/classes/com/bwie/login/LoginApplication.class create mode 100644 bwie-module/bwie-login/target/classes/com/bwie/login/controller/LoginController.class create mode 100644 bwie-module/bwie-login/target/classes/com/bwie/login/mapper/LoginMapper.class create mode 100644 bwie-module/bwie-login/target/classes/com/bwie/login/service/LoginService.class create mode 100644 bwie-module/bwie-login/target/classes/com/bwie/login/service/impl/LoginServiceImpl.class create mode 100644 bwie-module/bwie-login/target/classes/com/bwie/login/util/FastUtil.class create mode 100644 bwie-module/bwie-login/target/classes/mapper/LoginMapper.xml create mode 100644 bwie-module/bwie-service/pom.xml create mode 100644 bwie-module/bwie-service/src/main/java/com/bwie/service/ServiceApplication.java create mode 100644 bwie-module/bwie-service/src/main/java/com/bwie/service/controller/ServiceController.java create mode 100644 bwie-module/bwie-service/src/main/java/com/bwie/service/mapper/ServiceMapper.java create mode 100644 bwie-module/bwie-service/src/main/java/com/bwie/service/service/ServiceService.java create mode 100644 bwie-module/bwie-service/src/main/java/com/bwie/service/service/impl/ServiceServiceImpl.java create mode 100644 bwie-module/bwie-service/src/main/java/com/bwie/service/util/FastUtil.java create mode 100644 bwie-module/bwie-service/src/main/resources/bootstrap.yml create mode 100644 bwie-module/bwie-service/src/main/resources/mapper/ServiceMapper.xml create mode 100644 bwie-module/bwie-service/target/classes/bootstrap.yml create mode 100644 bwie-module/bwie-service/target/classes/com/bwie/service/ServiceApplication.class create mode 100644 bwie-module/bwie-service/target/classes/com/bwie/service/controller/ServiceController.class create mode 100644 bwie-module/bwie-service/target/classes/com/bwie/service/mapper/ServiceMapper.class create mode 100644 bwie-module/bwie-service/target/classes/com/bwie/service/service/ServiceService.class create mode 100644 bwie-module/bwie-service/target/classes/com/bwie/service/service/impl/ServiceServiceImpl.class create mode 100644 bwie-module/bwie-service/target/classes/com/bwie/service/util/FastUtil.class create mode 100644 bwie-module/bwie-service/target/classes/mapper/ServiceMapper.xml create mode 100644 bwie-module/bwie-user/pom.xml create mode 100644 bwie-module/bwie-user/src/main/java/com/bwie/user/UserApplication.java create mode 100644 bwie-module/bwie-user/src/main/java/com/bwie/user/controller/UserController.java create mode 100644 bwie-module/bwie-user/src/main/java/com/bwie/user/mapper/UserMapper.java create mode 100644 bwie-module/bwie-user/src/main/java/com/bwie/user/service/UserService.java create mode 100644 bwie-module/bwie-user/src/main/java/com/bwie/user/service/impl/UserServiceImpl.java create mode 100644 bwie-module/bwie-user/src/main/java/com/bwie/user/util/FastUtil.java create mode 100644 bwie-module/bwie-user/src/main/resources/bootstrap.yml create mode 100644 bwie-module/bwie-user/src/main/resources/mapper/UserMapper.xml create mode 100644 bwie-module/bwie-user/target/classes/bootstrap.yml create mode 100644 bwie-module/bwie-user/target/classes/com/bwie/user/UserApplication.class create mode 100644 bwie-module/bwie-user/target/classes/com/bwie/user/controller/UserController.class create mode 100644 bwie-module/bwie-user/target/classes/com/bwie/user/mapper/UserMapper.class create mode 100644 bwie-module/bwie-user/target/classes/com/bwie/user/service/UserService.class create mode 100644 bwie-module/bwie-user/target/classes/com/bwie/user/service/impl/UserServiceImpl.class create mode 100644 bwie-module/bwie-user/target/classes/com/bwie/user/util/FastUtil.class create mode 100644 bwie-module/bwie-user/target/classes/mapper/UserMapper.xml create mode 100644 bwie-module/pom.xml create mode 100644 bwie-tenement.iml create mode 100644 pom.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..73f69e0 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..6553cec --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..9ecaf31 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..6560a98 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,36 @@ + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..2a89eda --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..58a81a3 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/bwie-auth/pom.xml b/bwie-auth/pom.xml new file mode 100644 index 0000000..445c14a --- /dev/null +++ b/bwie-auth/pom.xml @@ -0,0 +1,46 @@ + + + + bwie-tenement + com.bwie + 1.0-SNAPSHOT + + 4.0.0 + + bwie-auth + + + + + + com.bwie + bwie-common + + + + org.springframework.boot + spring-boot-starter-web + + + + + org.springframework.boot + spring-boot-starter-test + test + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + + + + + org.springframework.kafka + spring-kafka + + + + + \ No newline at end of file diff --git a/bwie-auth/src/main/java/com/bwie/auth/AuthApplication.java b/bwie-auth/src/main/java/com/bwie/auth/AuthApplication.java new file mode 100644 index 0000000..4f0b0d0 --- /dev/null +++ b/bwie-auth/src/main/java/com/bwie/auth/AuthApplication.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; + +@SpringBootApplication +@EnableFeignClients +public class AuthApplication { + + public static void main(String[] args) { + SpringApplication.run(AuthApplication.class); + } +} diff --git a/bwie-auth/src/main/java/com/bwie/auth/config/RabbitAdminConfig.java b/bwie-auth/src/main/java/com/bwie/auth/config/RabbitAdminConfig.java new file mode 100644 index 0000000..d2abf6c --- /dev/null +++ b/bwie-auth/src/main/java/com/bwie/auth/config/RabbitAdminConfig.java @@ -0,0 +1,53 @@ +package com.bwie.auth.config; + +import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; +import org.springframework.amqp.rabbit.connection.ConnectionFactory; +import org.springframework.amqp.rabbit.core.RabbitAdmin; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * RabbitAdmin是RabbitMQ的一个Java客户端库,它提供了管理RabbitMQ资源的功能。它是通过与RabbitMQ服务器进行交互来执行管理操作的。 + */ +@Configuration +public class RabbitAdminConfig { + + @Value("${spring.rabbitmq.host}") + private String host; + @Value("${spring.rabbitmq.username}") + private String username; + @Value("${spring.rabbitmq.password}") + private String password; + @Value("${spring.rabbitmq.virtualhost}") + private String virtualhost; + + /** + * 构建 RabbitMQ的连接工厂 + * @return + */ + @Bean + public ConnectionFactory connectionFactory() { + CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); + connectionFactory.setAddresses(host); + connectionFactory.setUsername(username); + connectionFactory.setPassword(password); + connectionFactory.setVirtualHost(virtualhost); + // 配置发送确认回调时,次配置必须配置,否则即使在RabbitTemplate配置了ConfirmCallback也不会生效 + connectionFactory.setPublisherConfirmType(CachingConnectionFactory.ConfirmType.CORRELATED); + connectionFactory.setPublisherReturns(true); + return connectionFactory; + } + + /** + * 自己初始化 RabbitAdmin + * @param connectionFactory + * @return + */ + @Bean + public RabbitAdmin rabbitAdmin(ConnectionFactory connectionFactory) { + RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory); + rabbitAdmin.setAutoStartup(true); + return rabbitAdmin; + } +} diff --git a/bwie-auth/src/main/java/com/bwie/auth/controller/AuthController.java b/bwie-auth/src/main/java/com/bwie/auth/controller/AuthController.java new file mode 100644 index 0000000..07e0aa5 --- /dev/null +++ b/bwie-auth/src/main/java/com/bwie/auth/controller/AuthController.java @@ -0,0 +1,62 @@ +package com.bwie.auth.controller; + +import com.alibaba.fastjson.JSON; +import com.bwie.auth.service.AuhService; +import com.bwie.common.domain.Login; +import com.bwie.common.domain.User; +import com.bwie.common.domain.request.UserRequest; +import com.bwie.common.result.Result; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; + +@RestController +@RequestMapping("/auth") +@Log4j2 +public class AuthController { + + + @Autowired + private AuhService auhService; + + @Autowired + private HttpServletRequest request; + + + @PostMapping("/getCode/{phone}") + public Result getCode(@PathVariable String phone) { + + log.info("功能描述: 发送验证码,请求URI: {},请求方式: {},请求参数: {}", + request.getServletPath(), request.getMethod(), phone); + + + Result result= auhService.getCode(phone); + + log.info("功能描述: 发送验证码,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(result)); + + + return result; + } + + + @PostMapping("/login") + public Result login(@RequestBody UserRequest user) { + + + log.info("功能描述: 登录,请求URI: {},请求方式: {},请求参数: {}", + request.getServletPath(), request.getMethod(), user); + + Result result = auhService.login(user); + + log.info("功能描述: 登录 ,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(result)); + + return result; + + } + + +} diff --git a/bwie-auth/src/main/java/com/bwie/auth/feign/LoginFeignService.java b/bwie-auth/src/main/java/com/bwie/auth/feign/LoginFeignService.java new file mode 100644 index 0000000..c4c76c1 --- /dev/null +++ b/bwie-auth/src/main/java/com/bwie/auth/feign/LoginFeignService.java @@ -0,0 +1,14 @@ +package com.bwie.auth.feign; + +import com.bwie.common.domain.Login; +import com.bwie.common.result.Result; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; + +@FeignClient("bwie-login") +public interface LoginFeignService { + + @PostMapping("/login/findByLogin/{loginName}") + public Result findByLogin(@PathVariable String loginName); +} diff --git a/bwie-auth/src/main/java/com/bwie/auth/feign/UserFeignService.java b/bwie-auth/src/main/java/com/bwie/auth/feign/UserFeignService.java new file mode 100644 index 0000000..6d4e04b --- /dev/null +++ b/bwie-auth/src/main/java/com/bwie/auth/feign/UserFeignService.java @@ -0,0 +1,15 @@ +package com.bwie.auth.feign; + +import com.bwie.common.domain.User; +import com.bwie.common.result.Result; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; + +@FeignClient("bwie-user") +public interface UserFeignService { + + + @PostMapping("/user/findByPhone/{phone}") + public Result findByPhone(@PathVariable String phone); +} diff --git a/bwie-auth/src/main/java/com/bwie/auth/service/AuhService.java b/bwie-auth/src/main/java/com/bwie/auth/service/AuhService.java new file mode 100644 index 0000000..25bbff1 --- /dev/null +++ b/bwie-auth/src/main/java/com/bwie/auth/service/AuhService.java @@ -0,0 +1,12 @@ +package com.bwie.auth.service; + +import com.bwie.common.domain.Login; +import com.bwie.common.domain.User; +import com.bwie.common.domain.request.UserRequest; +import com.bwie.common.result.Result; + +public interface AuhService { + Result login(UserRequest user); + + Result getCode(String phone); +} diff --git a/bwie-auth/src/main/java/com/bwie/auth/service/impl/AuhServiceImpl.java b/bwie-auth/src/main/java/com/bwie/auth/service/impl/AuhServiceImpl.java new file mode 100644 index 0000000..4c61992 --- /dev/null +++ b/bwie-auth/src/main/java/com/bwie/auth/service/impl/AuhServiceImpl.java @@ -0,0 +1,86 @@ +package com.bwie.auth.service.impl; + +import com.alibaba.fastjson.JSONObject; + +import com.bwie.auth.feign.UserFeignService; +import com.bwie.auth.service.AuhService; + +import com.bwie.common.domain.User; +import com.bwie.common.domain.request.UserRequest; +import com.bwie.common.result.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; + +import java.util.Random; +import java.util.concurrent.TimeUnit; + +@Service +public class AuhServiceImpl implements AuhService { + + + @Autowired + private UserFeignService userFeignService; + + + @Autowired + private RedisTemplate redisTemplate; + + + @Override + public Result login(UserRequest user) { + + Result byPhone = userFeignService.findByPhone(user.getPhone()); + + User login = byPhone.getData(); + if(null==login){ + return Result.error("登录失败"); + + } + + + if (!redisTemplate.hasKey(user.getPhone())){ + return Result.error("验证码已过期"); + } + + String code = redisTemplate.opsForValue().get(user.getPhone()); + + if (!code.equals(user.getCode())){ + + return Result.error("验证码有误"); + } + + + + redisTemplate.opsForValue().set("login", JSONObject.toJSONString(login)); + + return Result.success("登录成功"); + } + + @Override + public Result getCode(String phone) { + + + Result byPhone = userFeignService.findByPhone(phone); + + User user = byPhone.getData(); + + if (null==user){ + + return Result.error("手机号不存在"); + + } + + + String code=""; + + for (int i = 0; i < 4; i++) { + code+=new Random().nextInt(10); + } + + + redisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES); + + return Result.success(code,"发送成功"); + } +} diff --git a/bwie-auth/src/main/java/com/bwie/auth/utils/DLXQueue.java b/bwie-auth/src/main/java/com/bwie/auth/utils/DLXQueue.java new file mode 100644 index 0000000..d76e2c2 --- /dev/null +++ b/bwie-auth/src/main/java/com/bwie/auth/utils/DLXQueue.java @@ -0,0 +1,77 @@ +package com.bwie.auth.utils; + +import org.springframework.amqp.core.Binding; +import org.springframework.amqp.core.BindingBuilder; +import org.springframework.amqp.core.DirectExchange; +import org.springframework.amqp.core.Queue; +import org.springframework.amqp.rabbit.core.RabbitAdmin; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; + +@Component +public class DLXQueue { + // routingKey + private static final String DEAD_ROUTING_KEY = "dead.routingkey"; + private static final String ROUTING_KEY = "routingkey"; + private static final String DEAD_EXCHANGE = "dead.exchange"; + private static final String EXCHANGE = "common.exchange"; + @Autowired + RabbitTemplate rabbitTemplate; + @Resource + RabbitAdmin rabbitAdmin; + + /** + * 发送死信队列,过期后进入死信交换机,进入死信队列 + * + * @param queueName 队列名称 + * @param deadQueueName 死信队列名称 + * @param params 消息内容 + * @param expiration 过期时间 毫秒 + */ + public void sendDLXQueue(String queueName, String deadQueueName, Object params, Integer expiration) { + /** + * ----------------------------------先创建一个ttl队列和死信队列-------------------------------------------- + */ + Map map = new HashMap<>(); + // 队列设置存活时间,单位ms, 必须是整形数据。 + map.put("x-message-ttl", expiration); + // 设置死信交换机 + map.put("x-dead-letter-exchange", DEAD_EXCHANGE); + // 设置死信交换器路由 + map.put("x-dead-letter-routing-key", DEAD_ROUTING_KEY); + /*参数1:队列名称 参数2:持久化 参数3:是否排他 参数4:自动删除队列 参数5:队列参数*/ + Queue queue = new Queue(queueName, true, false, false, map); + rabbitAdmin.declareQueue(queue); + /** + * ---------------------------------创建交换机--------------------------------------------- + */ + DirectExchange directExchange = new DirectExchange(EXCHANGE, true, false); + rabbitAdmin.declareExchange(directExchange); + /** + * ---------------------------------队列绑定交换机--------------------------------------------- + */ + Binding binding = BindingBuilder.bind(queue).to(directExchange).with(ROUTING_KEY); + rabbitAdmin.declareBinding(binding); + /** + * ---------------------------------在创建一个死信交换机和队列,接收死信队列--------------------------------------------- + */ + DirectExchange deadExchange = new DirectExchange(DEAD_EXCHANGE, true, false); + rabbitAdmin.declareExchange(deadExchange); + + Queue deadQueue = new Queue(deadQueueName, true, false, false); + rabbitAdmin.declareQueue(deadQueue); + /** + * ---------------------------------队列绑定死信交换机--------------------------------------------- + */ + // 将队列和交换机绑定 + Binding deadbinding = BindingBuilder.bind(deadQueue).to(deadExchange).with(DEAD_ROUTING_KEY); + rabbitAdmin.declareBinding(deadbinding); + // 发送消息 + rabbitTemplate.convertAndSend(EXCHANGE, ROUTING_KEY, params); + } +} diff --git a/bwie-auth/src/main/java/com/bwie/auth/utils/DelayedQueue.java b/bwie-auth/src/main/java/com/bwie/auth/utils/DelayedQueue.java new file mode 100644 index 0000000..0df9f49 --- /dev/null +++ b/bwie-auth/src/main/java/com/bwie/auth/utils/DelayedQueue.java @@ -0,0 +1,79 @@ +package com.bwie.auth.utils; + +import org.springframework.amqp.core.Binding; +import org.springframework.amqp.core.BindingBuilder; +import org.springframework.amqp.core.CustomExchange; +import org.springframework.amqp.core.Queue; +import org.springframework.amqp.rabbit.core.RabbitAdmin; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +/** + * 发送延迟队列的工具类 + */ +@Component +public class DelayedQueue { + + // routingKey + private static final String DELAYED_ROUTING_KEY = "delayed.routingkey"; + + // 延迟队列交换机 + private static final String DELAYED_EXCHANGE = "delayed.exchange"; + + @Autowired + RabbitTemplate rabbitTemplate; + + @Resource + RabbitAdmin rabbitAdmin; + + /** + * 发送延迟队列 + * + * @param queueName 队列名称 + * @param params 消息内容 + * @param expiration 延迟时间 毫秒 + */ + public void sendDelayedQueue(String queueName, Object params, Integer expiration) { + // 先创建一个队列 + Queue queue = new Queue(queueName); + rabbitAdmin.declareQueue(queue); + + // 创建延迟队列交换机 + CustomExchange customExchange = createCustomExchange(); + rabbitAdmin.declareExchange(customExchange); + + // 将队列和交换机绑定 + Binding binding = BindingBuilder.bind(queue).to(customExchange).with(DELAYED_ROUTING_KEY).noargs(); + rabbitAdmin.declareBinding(binding); + + // 发送延迟消息 + rabbitTemplate.convertAndSend(DELAYED_EXCHANGE, DELAYED_ROUTING_KEY, params, msg -> { + // 发送消息的时候 延迟时长 + msg.getMessageProperties().setMessageId(UUID.randomUUID().toString().replaceAll("-", "")); + msg.getMessageProperties().setDelay(expiration); + return msg; + }); + } + + private CustomExchange createCustomExchange() { + Map arguments = new HashMap<>(); + /** + * 参数说明: + * 1.交换机的名称 + * 2.交换机的类型 + * 3.是否需要持久化 + * 4.是否自动删除 + * 5.其它参数 + */ + arguments.put("x-delayed-type", "direct"); + return new CustomExchange(DELAYED_EXCHANGE, "x-delayed-message", true, false, arguments); + } + +} + diff --git a/bwie-auth/src/main/java/com/bwie/auth/utils/TtlQueue.java b/bwie-auth/src/main/java/com/bwie/auth/utils/TtlQueue.java new file mode 100644 index 0000000..51db22d --- /dev/null +++ b/bwie-auth/src/main/java/com/bwie/auth/utils/TtlQueue.java @@ -0,0 +1,66 @@ +package com.bwie.auth.utils; + +import org.springframework.amqp.core.Binding; +import org.springframework.amqp.core.BindingBuilder; +import org.springframework.amqp.core.DirectExchange; +import org.springframework.amqp.core.Queue; +import org.springframework.amqp.rabbit.core.RabbitAdmin; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; + +/** + * 发送TTL队列 设置 消息的存活时间 如果超过了存活时间 + * 该条消息还没有被消费 则自动从队列中消息 ,如果配置了死信队列则消息会进入死信队列 + */ +@Component +public class TtlQueue { + // routingKey + private static final String TTL_KEY = "ttl.routingkey"; + private static final String TTL_EXCHANGE = "ttl.exchange"; + + @Autowired + RabbitTemplate rabbitTemplate; + + @Resource + RabbitAdmin rabbitAdmin; + + /** + * 发送TTL队列 + * + * @param queueName 队列名称 + * @param params 消息内容 + * @param expiration 过期时间 毫秒 + */ + public void sendTtlQueue(String queueName, Object params, Integer expiration) { + /** + * ----------------------------------先创建一个ttl队列-------------------------------------------- + */ + Map map = new HashMap<>(); + // 队列设置存活时间,单位ms,必须是整形数据。 + map.put("x-message-ttl", expiration); + /*参数1:队列名称 参数2:持久化 参数3:是否排他 参数4:自动删除队列 参数5:队列参数*/ + Queue queue = new Queue(queueName, true, false, false, map); + rabbitAdmin.declareQueue(queue); + + /** + * ---------------------------------创建交换机--------------------------------------------- + */ + DirectExchange directExchange = new DirectExchange(TTL_EXCHANGE, true, false); + rabbitAdmin.declareExchange(directExchange); + /** + * ---------------------------------队列绑定交换机--------------------------------------------- + */ + // 将队列和交换机绑定 + Binding binding = BindingBuilder.bind(queue).to(directExchange).with(TTL_KEY); + rabbitAdmin.declareBinding(binding); + + // 发送消息 + rabbitTemplate.convertAndSend(TTL_EXCHANGE, TTL_KEY, params); + } +} + diff --git a/bwie-auth/src/main/resources/bootstrap.yml b/bwie-auth/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..4863e97 --- /dev/null +++ b/bwie-auth/src/main/resources/bootstrap.yml @@ -0,0 +1,112 @@ +# Tomcat +server: + port: 9001 +# Spring +spring: + main: + allow-circular-references: true + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + application: + # 应用名称 + name: bwie-auth + kafka: + producer: + # Kafka服务器 + bootstrap-servers: 124.221.114.13:9092 + # 开启事务,必须在开启了事务的方法中发送,否则报错 + transaction-id-prefix: kafkaTx- + # 发生错误后,消息重发的次数,开启事务必须设置大于0。 + retries: 3 + # acks=0 : 生产者在成功写入消息之前不会等待任何来自服务器的响应。 + # acks=1 : 只要集群的首领节点收到消息,生产者就会收到一个来自服务器成功响应。 + # acks=all :只有当所有参与复制的节点全部收到消息时,生产者才会收到一个来自服务器的成功响应。 + # 开启事务时,必须设置为all + acks: all + # 当有多个消息需要被发送到同一个分区时,生产者会把它们放在同一个批次里。该参数指定了一个批次可以使用的内存大小,按照字节数计算。 + batch-size: 16384 + # 生产者内存缓冲区的大小。 + buffer-memory: 1024000 + # 键的序列化方式 + key-serializer: org.springframework.kafka.support.serializer.JsonSerializer + # 值的序列化方式(建议使用Json,这种序列化方式可以无需额外配置传输实体类) + value-serializer: org.springframework.kafka.support.serializer.JsonSerializer + + consumer: + # Kafka服务器 + bootstrap-servers: 124.221.114.13:9092 + group-id: firstGroup + # 自动提交的时间间隔 在spring boot 2.X 版本中这里采用的是值的类型为Duration 需要符合特定的格式,如1S,1M,2H,5D + #auto-commit-interval: 2s + # 该属性指定了消费者在读取一个没有偏移量的分区或者偏移量无效的情况下该作何处理: + # earliest:当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费分区的记录 + # latest:当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,消费新产生的该分区下的数据(在消费者启动之后生成的记录) + # none:当各分区都存在已提交的offset时,从提交的offset开始消费;只要有一个分区不存在已提交的offset,则抛出异常 + auto-offset-reset: latest + # 是否自动提交偏移量,默认值是true,为了避免出现重复数据和数据丢失,可以把它设置为false,然后手动提交偏移量 + enable-auto-commit: false + # 键的反序列化方式 + #key-deserializer: org.apache.kafka.common.serialization.StringDeserializer + key-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer + # 值的反序列化方式(建议使用Json,这种序列化方式可以无需额外配置传输实体类) + value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer + # 配置消费者的 Json 反序列化的可信赖包,反序列化实体类需要 + properties: + spring: + json: + trusted: + packages: "*" + # 这个参数定义了poll方法最多可以拉取多少条消息,默认值为500。如果在拉取消息的时候新消息不足500条,那有多少返回多少;如果超过500条,每次只返回500。 + # 这个默认值在有些场景下太大,有些场景很难保证能够在5min内处理完500条消息, + # 如果消费者无法在5分钟内处理完500条消息的话就会触发reBalance, + # 然后这批消息会被分配到另一个消费者中,还是会处理不完,这样这批消息就永远也处理不完。 + # 要避免出现上述问题,提前评估好处理一条消息最长需要多少时间,然后覆盖默认的max.poll.records参数 + # 注:需要开启BatchListener批量监听才会生效,如果不开启BatchListener则不会出现reBalance情况 + max-poll-records: 3 + properties: + # 两次poll之间的最大间隔,默认值为5分钟。如果超过这个间隔会触发reBalance + max: + poll: + interval: + ms: 600000 + # 当broker多久没有收到consumer的心跳请求后就触发reBalance,默认值是10s + session: + timeout: + ms: 10000 + listener: + # 在侦听器容器中运行的线程数,一般设置为 机器数*分区数 + concurrency: 4 + # 自动提交关闭,需要设置手动消息确认 + ack-mode: manual_immediate + # 消费监听接口监听的主题不存在时,默认会报错,所以设置为false忽略错误 + missing-topics-fatal: false + # 两次poll之间的最大间隔,默认值为5分钟。如果超过这个间隔会触发reBalance + poll-timeout: 600000 + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 124.221.114.13:8848 + config: + # 配置中心地址 + server-addr: 124.221.114.13:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + rabbitmq: + username: root + password: zzh123 + virtualHost: / + port: 5672 + host: 124.221.114.13 + listener: + simple: + prefetch: 1 # 每次只能获取一条,处理完成才能获取下一条 + publisher-confirm-type: correlated #确认消息已发送到交换机(Exchange) + publisher-returns: true #确认消息已发送到队列(Queue) diff --git a/bwie-auth/target/classes/bootstrap.yml b/bwie-auth/target/classes/bootstrap.yml new file mode 100644 index 0000000..4863e97 --- /dev/null +++ b/bwie-auth/target/classes/bootstrap.yml @@ -0,0 +1,112 @@ +# Tomcat +server: + port: 9001 +# Spring +spring: + main: + allow-circular-references: true + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + application: + # 应用名称 + name: bwie-auth + kafka: + producer: + # Kafka服务器 + bootstrap-servers: 124.221.114.13:9092 + # 开启事务,必须在开启了事务的方法中发送,否则报错 + transaction-id-prefix: kafkaTx- + # 发生错误后,消息重发的次数,开启事务必须设置大于0。 + retries: 3 + # acks=0 : 生产者在成功写入消息之前不会等待任何来自服务器的响应。 + # acks=1 : 只要集群的首领节点收到消息,生产者就会收到一个来自服务器成功响应。 + # acks=all :只有当所有参与复制的节点全部收到消息时,生产者才会收到一个来自服务器的成功响应。 + # 开启事务时,必须设置为all + acks: all + # 当有多个消息需要被发送到同一个分区时,生产者会把它们放在同一个批次里。该参数指定了一个批次可以使用的内存大小,按照字节数计算。 + batch-size: 16384 + # 生产者内存缓冲区的大小。 + buffer-memory: 1024000 + # 键的序列化方式 + key-serializer: org.springframework.kafka.support.serializer.JsonSerializer + # 值的序列化方式(建议使用Json,这种序列化方式可以无需额外配置传输实体类) + value-serializer: org.springframework.kafka.support.serializer.JsonSerializer + + consumer: + # Kafka服务器 + bootstrap-servers: 124.221.114.13:9092 + group-id: firstGroup + # 自动提交的时间间隔 在spring boot 2.X 版本中这里采用的是值的类型为Duration 需要符合特定的格式,如1S,1M,2H,5D + #auto-commit-interval: 2s + # 该属性指定了消费者在读取一个没有偏移量的分区或者偏移量无效的情况下该作何处理: + # earliest:当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费分区的记录 + # latest:当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,消费新产生的该分区下的数据(在消费者启动之后生成的记录) + # none:当各分区都存在已提交的offset时,从提交的offset开始消费;只要有一个分区不存在已提交的offset,则抛出异常 + auto-offset-reset: latest + # 是否自动提交偏移量,默认值是true,为了避免出现重复数据和数据丢失,可以把它设置为false,然后手动提交偏移量 + enable-auto-commit: false + # 键的反序列化方式 + #key-deserializer: org.apache.kafka.common.serialization.StringDeserializer + key-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer + # 值的反序列化方式(建议使用Json,这种序列化方式可以无需额外配置传输实体类) + value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer + # 配置消费者的 Json 反序列化的可信赖包,反序列化实体类需要 + properties: + spring: + json: + trusted: + packages: "*" + # 这个参数定义了poll方法最多可以拉取多少条消息,默认值为500。如果在拉取消息的时候新消息不足500条,那有多少返回多少;如果超过500条,每次只返回500。 + # 这个默认值在有些场景下太大,有些场景很难保证能够在5min内处理完500条消息, + # 如果消费者无法在5分钟内处理完500条消息的话就会触发reBalance, + # 然后这批消息会被分配到另一个消费者中,还是会处理不完,这样这批消息就永远也处理不完。 + # 要避免出现上述问题,提前评估好处理一条消息最长需要多少时间,然后覆盖默认的max.poll.records参数 + # 注:需要开启BatchListener批量监听才会生效,如果不开启BatchListener则不会出现reBalance情况 + max-poll-records: 3 + properties: + # 两次poll之间的最大间隔,默认值为5分钟。如果超过这个间隔会触发reBalance + max: + poll: + interval: + ms: 600000 + # 当broker多久没有收到consumer的心跳请求后就触发reBalance,默认值是10s + session: + timeout: + ms: 10000 + listener: + # 在侦听器容器中运行的线程数,一般设置为 机器数*分区数 + concurrency: 4 + # 自动提交关闭,需要设置手动消息确认 + ack-mode: manual_immediate + # 消费监听接口监听的主题不存在时,默认会报错,所以设置为false忽略错误 + missing-topics-fatal: false + # 两次poll之间的最大间隔,默认值为5分钟。如果超过这个间隔会触发reBalance + poll-timeout: 600000 + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 124.221.114.13:8848 + config: + # 配置中心地址 + server-addr: 124.221.114.13:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + rabbitmq: + username: root + password: zzh123 + virtualHost: / + port: 5672 + host: 124.221.114.13 + listener: + simple: + prefetch: 1 # 每次只能获取一条,处理完成才能获取下一条 + publisher-confirm-type: correlated #确认消息已发送到交换机(Exchange) + publisher-returns: true #确认消息已发送到队列(Queue) diff --git a/bwie-auth/target/classes/com/bwie/auth/AuthApplication.class b/bwie-auth/target/classes/com/bwie/auth/AuthApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..c068c449e3dca38e150fda2bbc6376272b1f1af1 GIT binary patch literal 815 zcmaJKG3H+09w~E49<2ZAGg{hAW#G=b|j5HN!tx-=@({esO$!J|^GfN(xeY zbA(4|(8>9)0lG8{rjbj77Y%~IsE=Tr-QJ9?hxoewsjY`Gxn{Tob$S(?GfoHll9V%SyS2_}k zV$1M6qSgi~9to+K*tc9iFdE&PUh8+-Bd7Z4eap7|RfTYRw#)?Oof=~qFIcwuJZM%- zw`4FGk}{`iG|Gl+$^P&#;@2%^CtavIO}+BgGIb;H>w49(cdb3W*tu)2*0k(==Y$!# zK$&e;C9NCXyeX`uX9uR&XufIb-GqtDLo=PePJ5u+^>aBes&&?Jke@pP{Se$YfAV`P z{E($5ZlW7r=Z*?)dZ78x_ZTJ(uGyPchOqkoFclVtaL|XE+BE&TQ`V|d$=i4NS(Y+Tb0+G z76r{S{amf)nx1De*O$`$FPMyPf@&|1UliGGA3qyO?#kV_;YsHe-1_ikjwVgdpOMU& zPMO?h>0OIePn_CmPigMv8;n3=j_0?E#q~n2wEjrp#lSW=XC-^VISG?;-JsI2ygFf} zeU9QPoo_IQxa*2!d!iSxX!?OG|B6WZ2NCAZhuQb2i4Q4RF7TZl-{70x!VUiHCisht z@CU~x2Iq{s1nDHdD;}mOU{Ci8u2R4j?-zVV0Xx25a2;VDa_YF=B#KU|NJr)lpnfM4 z!Y!_&ox>z%$ZK5%e2&}PDSUx6wZ!;W(h%wLdxTycAY91I{fS5$BSJ^phzcERBPKN7 zMk4bEv^GADAQe=LljyQ%RYE0so1n-+RsiyRZmOd+~mq=Y5{v?|Gk({pa6De*tL2 zCuP`+Go`3RM+BW}?kdOIIID(t%JD9`)!Dgn^x%917s_xE??uq7_Lm~)3*&MbV(1U! zia=4yo)D;u+0KM6r)45(=scM)tqC=^P3kf345w3|Os12=hBIR(41xMs!k*IOv!qJP(WX&>;vRd9EGlEBWn4*5#SQ10Btn7en4OTRQR$d!pFJ%0k|rTHZQ`7; zEzhx2DZ^3ll0EBNg>l000vjiyK1e+!>C$0O@$JmfL^n>^mhKpCI_2p@{>1ww(@ER% z@hFCQmq{j&7O2@kw2hvse#1-JV}nw;*fSi`I9bs1vqoHxo7Pya(+6$W>zC8h3Nj(h z$W)q;s`M;3ea;6t&uGYh=yhv(FW$a;yV6UpJ%KXJKr}6Z{^%CEWA>CZmG}IB&_@`C zYj3`@kBie37if7Nt#rQ13k7HQe#}BTXOG<=ok&+Al?}$SVLR<4jEklUy?yyXbWA<` zc6n0hwHP}LxwVj_p~5Lv_^R)}oVWI~TEi=NRYNuQ(fOILep>zV$@1dj>fiS|YBP)9 zJpE$f>91d}-d$Mvd7)+X?t|s~H%Eppb=1zyXLrlrEoJ^(%sI#`-dw)J%X9M@4&Y!I z0~!W#Rl^XjhB2(+8b&ni$BSW%YN$i~|23PreJk_m+m*++mw)_0nGNH84Ikh`f%Exv zR=$6nd2;9ZS-gp30v8JDs@+N1W^Alx`6YGR@)E{J8m{AGrs76%7>G|A36{jhT~$PZ z3MO&3N)9sJ1olUpwiYUZQpyE2gym+3Cc(ODTI06BB_1i<vsBMI+(h&NUT-jE+mWL?!MO*GsTL=n4Jt7=yP)e%@I3Gd-qG&`b4)Y&LBYM%~ zqpJ-NWYG}|<=!C5C^a-vHiRS8LsSi%ly55hk8I4>AzU=$D9^&m2`yX*FgXjc)3&0{ zWA{RqUBytNeZN(6)z1AXN(H_<{U2pn4s!qi literal 0 HcmV?d00001 diff --git a/bwie-auth/target/classes/com/bwie/auth/feign/LoginFeignService.class b/bwie-auth/target/classes/com/bwie/auth/feign/LoginFeignService.class new file mode 100644 index 0000000000000000000000000000000000000000..15b26212090ceeb2ffe212c8c79412673ab16c04 GIT binary patch literal 693 zcmb7CO-lnY5S>(OZL76@f)@{hpa&hqk4r^Rp{G`h3%z*CZqsdaH!0a{i->>BgFnC@ zB~Bt#r5==!%w+e?%zHC=dw+QafMZxM!DO&=vX@1Y(F)psH21FsS(ly#ZiNcX)G20N1( z^V|;b6F*grM*a0XZo+#J**OLb3iPG`*ert?n59*uTam#WnG)>+%tM)Mji43U)jMDr ZEWo1s@8WA7wB*mahgRw9vV&%@@&QY<(ii{$ literal 0 HcmV?d00001 diff --git a/bwie-auth/target/classes/com/bwie/auth/feign/UserFeignService.class b/bwie-auth/target/classes/com/bwie/auth/feign/UserFeignService.class new file mode 100644 index 0000000000000000000000000000000000000000..e769692878a1e679735679bccedd5985b75311dc GIT binary patch literal 680 zcmb7COHTqZ5S}WCh;QY<)p*c@PK=KW#zajxK_n2lcoxIcqthUIFOusFyjLDHr1r(Ea!g5y)wRD+f^3MOsPk(6l zO)Qnh>y&K$jJ0c>Ogj}*Po*k|=v-^#q*F$-iQ}fRLrfDNW8l3_jJ?AN1sHH>lv6CW zP3l@QNqk;5KbBF(hHIFy41U@ne8_V>3fTIpJI(&Zz{%eYNH^+9t0ZS&2Mb-3*^nA4 zVjEQ-wn4m+U9w{p(!QUOfP-Jz!^mWPGzsZ}Z^69rGE$@+6PNuQ_k1h?+tazq%#H9J z{#}cw`*9+!f?EpRoB#nce2f4@LBK2&_$u;SQNSFR60aGUhcee?hA!}`+<-`75tjUa V-@lxLR`UC54z2LlH4jZ;{SClL%}W3P literal 0 HcmV?d00001 diff --git a/bwie-auth/target/classes/com/bwie/auth/service/AuhService.class b/bwie-auth/target/classes/com/bwie/auth/service/AuhService.class new file mode 100644 index 0000000000000000000000000000000000000000..789eaddce5b9ecf6305a808b9803e511243d249f GIT binary patch literal 347 zcma)2%TB{U3>=rF;SHa_v0U&0ZapC+POU(#_<(IAd60cg8vn@{**F{M1WW{p9n@ zKja{NY9p_{!<=xwl-T&{(FD^;l+Y8hqzZ(hmU!nYAzaTETeCCV8dvi=2J7m7DCf_O zcRGEz_9>KdZ(9Xtx2ai6*x6F922H}n?>Q#LhShp#^2pO2NB4)#R?0Xf5GMK{V3HB` YkSWd;<%B7qr2_k7=|DTW$H2zX7g4}p*#H0l literal 0 HcmV?d00001 diff --git a/bwie-auth/target/classes/com/bwie/auth/service/impl/AuhServiceImpl.class b/bwie-auth/target/classes/com/bwie/auth/service/impl/AuhServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..f80effef4a7bf5990739c8cada0b79496b02b46e GIT binary patch literal 3457 zcmbVPd289y&7@$z0Ajr{{W93k=#VQr5g|=W@s(9fh*|rPmZrI&W>j~a? z;VocQ#B-c+P{#>HM&)n6fM38?_zI4w&zo%0q^U)1XWsL7KELDL{QT$lKLXf<&%>xk zS0(Du9YzoKR-qSnhj9<~DY!R;`{eR|dHp~b4`P294?zzhDmSqz#9=7tlZ^dg%)&qj zW(bX89Kb<&nFwJ}3a~=3Lr5w(6vnmal7pkb4Wm|WYT?O~lpGERX_fp7R$>SbOCiG{ zJR*fWs^BpNk1KdWV0OwioL0l^x4I4Iuo*K1R<_6NK`lCD8k(N+2DCnTtL>dc*CbHW zm9ji@(C9T?Gnz2AS(feTo@raIz?OE~>DSz(V_N-vjy`A%+0H>NYUq}$_31Isc7`=Q z&!BBfdG?U$7;%c7!O3)cjKO3=_h`??DMiI~PuDV(TFiC~t*elUQYyP?weF=HO4#?` zC2Va!pdZ$?gl_d~-JbNKsr00odMdV>mgzMMl-Jew3IuMqbGy{HU+PJ00V8ZSXZ?j(e3H6gB^M@6BGqcvR+w> ztc?!C8?fVhbeX@N;V@E4zu{#gys@s-%By26Oaalx7$&org}d#P6Ej*(nIdzFL%mLB zpg`S}$?MV{!}bV+=4VHfijCN$Vl~z%IHKYxo>K6%if6EkKB;&X&j~Edmv(W+$N&ha zzn#1=_QTs_pL}!ayH8a-k6kJ>+@RnE702+Rf|pdhj8~YlO+ig)m?iW4}QH)H&T z*T!C?+*5du8pn^lG(PhE*zt3}j=nPX)rql@F9aYkf3lvIl$nSdj*1bypED!nnF*~+ zw-|X9AAmAPa9YJj5}`9HKE@|f^QY82cKr3rM~+Tt{!E}g4_T%g5~zQw&78VS)7Tw7 zV8lFu>!xO(2(>_Mp2QDIQ34AzOuql;f)ofbL;ZrBTUTG2qXNtG;-+cu0#$vc6>rHE zw@m!)Y`Fr(QnPNdih_pY*vz5zQ}z96n>BmrfbQ-xh6Pp?7L_l$(1#Y=PVfn#x@#ul z?jJIG(d>1vo=CBr*pTm~8+OudwH^O#Ga>mm24={2Ck-e2o>Ae(|G`EZ2peD2tGJa1 zv4YK7Pq5F-n~HU>9C?|{p;zq5OHXD;7V&z9Tln{{>7{@X@NU1{l5 z0Vv3!TuAuPDQ+qjGhEtQ)CqGGC0(~Dr-^5Uo=h56TwraXtG+pfG0z_PWlcuKG9LEY zEE*fAYpZ83UBs!t#>w;{&(0pP&@xGr=>{>|ilrRKusp4YpD=s*hEsG$Tj$=M9o_OR zo0gPj+)-$@?{$F{{>jd($dR86JEoVEha_LNT*$}17*Q|4EaqQr66DqHgi<71lWR`xf5ta z6Gf9*EJQivr{_?^cPLw(M)`RJ%FwYUjo?L8bc(f~p)#V3BJ?#0DkVW0;WVmF@mS3r zr!gbTIb`Xty-0i1BhvI=2?8;+SL39BtgV|Jo zEs!opY8nIOHwEVfl{2WnfNS@i!@`#3Mz<~_?_x~ S%sQ#347)Sqo_zA&1^f-J64LMh literal 0 HcmV?d00001 diff --git a/bwie-auth/target/classes/com/bwie/auth/utils/DLXQueue.class b/bwie-auth/target/classes/com/bwie/auth/utils/DLXQueue.class new file mode 100644 index 0000000000000000000000000000000000000000..ec8ef6fa0f1f8cae253991d03c0753327df7bceb GIT binary patch literal 3401 zcmb_fTT>Hf7=D(7Y*-eAC}`9kJhTED)@rdztd^64ASfUT_0Uc75mu7jxY=;%*&gmX zz4yAmpfe8GI_*p^>yPU6`8EkjhG6VWFS7aGci-dl9(MQDKfnJ8;6wbV;Rq&F+|ba3 zi7+NxF@>99Oskj)<5n2A!394Kw>BXB0(^q~i)>wnmK+L}v@OXJy5LmA4WZF=X40XL=UHQgE@Z&4e)R zys>O1J;&WN%pC<|sNgy4mMc;;+gfxwl*(GRf^&5Z?Gc=>LlZ}Qz&5Hq%!<5IaFc>} zLzgYv@~$Wd^z<$$2#z=@qOfnuvc+^En-K22$#f*_PSVUQn64%15;N$nSj_M3sic!N z66=;Q%!0RK6g(@FH%6!K-7biNbfV{lohs7`rh0bQ@U@(o#AA{4;#D#ewkOiUjmwx@ zo=7*-tQ8v}CCrrXwn&F^CX2`ztJ|hzPJt#ia+d3tNx}X)<_SyI%t<`_rjv;oH_aSV zYWAHfcyI5L_>EGApgqNkCcUwZS#DDR!lTQw>yyi-Hn(2}i|e z%MLp1EP38B*UN(_OP< zKed(Hprf$lg&A{u)VmBUi2yGtdwNj%&)L4w7LurFQDCh(~MfxDGqQPRCZoCVNDB=r6H+&WSx& zNu@PpG8rB33*4q339NHMP7%8brl;rHt_{(P>D~) zmpZ<}*E+tzw^HY+j^j9?;yWGR;|G?ovS^EiB_0*beY^v?g2(+h_qwJ}U)@SI4>YfH_z5%1$@(Qx^5}YEbObEDsl~OiH+1&~juIbd8EUThCuzeD*C{>4Gb7>l3yu+>wl# z&kK&+YNJq!>#4T^FttIPtm~UIKfGs&e0bl)ih?GO6L7q?$7hRkHYql%bA8$!9p4;E+3n}| z%y;(`R$i*wla9S6TyMxu&GAjZAH~XY+5H^Z%_;AY1svlW;t{@%hHw~1@fP^{L8=KF z>36E=F4FH-(P7fZs^|`Caoth>q;HLna{fbZ;woMbIZdSb#NqWcDTDtC|C{@^q5SIK zKErFsXLcgSvtATHKZU{bS$sevR90Rvc%8ggFVVEPjlf`Yv^f%t27g0y0C#x~MZ!Dh zmWWn7zeMZe>0lrbZQh1H80veDwrFSz?RQ^d-(sXA7}!SVpz5>LEkvTB7uX-==|H4w z3*CcZ|4w)d2YvZ)QNG3JwoqQ0KST4|I5epFTumB}YSIh^4n#^b@CPRGH$N&Qik}yeDxpZsaLzBEJe}vMi88PFRWd;T@^k?oAxQ6k;UX@fnSOt! zw>T>^hjmgP6ZHRwWe@yvjjBki?8YAdtJXiT0GD3^8ibZRqv^GXgXOJO) l&gI7t=uoD9jn^g`D|gX2={5c$C^Ylf<{JIv>!Bcm$Sa-+;h+9pZ~f0Du6fQA4wd+ zl8WUdT5zcoNvtGs8P6p-T9u%RCHn5q*7TzTv?@r)_1m2Uxd-1*`-j5H+#|Kq> zNWuQ;nM`_hX8PLV#Y@X`^Rw5^&#Wp)Wo{U^483Sr1%1hLOsg=VVBeH&xt?KpD@L&* z6!b={GtW((OV7{FDCl;KY}WLaMX6jgJkp%X*iJ!r%TmO3$0&&n+gaC*(#^6Skm@^xEE z$(WXyuavUFSvKg71lZ0Q#TCOb^K`ipG}6 zKU)zMsi@Z#RzAL_V0>t2)M6_avo}P}n~1HNjwcg zb_GeXSvDO%7)+lA;uN&|!W10c9biA~ku%-7itE{>na$i9GmaJ>WdPQxiwO2YCewI={c z#!jknV;EEMQ4Jr%$2Cl2M#CrYNfn>c@M(Nb#pgAA z0bf$^ShJJKGm{Sv>T$;w3}Ki_7?F$ZJoKhuKlz z!7B_*GmhvEYL@pAoov$YvapwJ*IRJx9BW{>rC=@|j_7XPqu_;_Jlmn~CwGN@XC|BW&!(G+;=Qnh@-e_5X_towo|Ndz$S3EZ9aVsJX zwE`Nh#A|A}bRX+ZbHkM@SL$0OznmW3lMn3k3c`yVa_lnUGiAX%*)&skFv*;)0dVQk z+%#Jm$FTBtDVU@vvz~w~3C|APpefOQ{l`}9s*EU;j^I~SPNa*)y@C|SH^fbWz9*2F z>D#zy?lxR=%&-KfeuKtFHXi2f{9jRVPs5+^7Y%R2d4AE<0&iNk>~*1M{C1W7jS+sa z@!O0|cr;V-Hx`hLZLe3@(fli}Boq*|M&}50QMiKvW&GPF^fq>9*D)@$Gm4Y%eKSz` zVBR?Fq2wu}SX?qaF`?q`{4m-9NF#p~^goymkFzu#;a>u6IE+CY1^X$^TF}M$6R~+O zSJ`fIe}tnBzDN0nY)^#(~Ue>R{^7D|k&SF5kn$t8}EVt(9;bevwqIKAzot zgW?lBF8gubH~3H>B{VoeQ=Y*rb(|xm#5`D;gVLLnhl~=W_A4}6YVRMd;*mRew2IfJ z`cto~;;||omun+c42(+6K_mmsCn_(_#)pqzQ2l2{2716tDLWqPC8`Lg&SDM GjsF5WrP1{O literal 0 HcmV?d00001 diff --git a/bwie-auth/target/classes/com/bwie/auth/utils/TtlQueue.class b/bwie-auth/target/classes/com/bwie/auth/utils/TtlQueue.class new file mode 100644 index 0000000000000000000000000000000000000000..488ef5501cd5f9324b0b0a6706df9f529ebd1bf2 GIT binary patch literal 2952 zcmb_eZC4XV6n-WzEUe30RBY7RDp~=7wOXtu6or5<mYS;i-maz4%^-j%6iU(Xom(9qV}Bix)c5*ihn(()mG07B4lt zV$d>~l{d>vn+&m)9sZ7+Wo{SE4e45TG0D)Ma%@j>TV{E=CKwELeCbu{>HON0C58c) z=W>?Jh)T80CGF3wIBwDOs!Dy^C7Uaz~Nt?mJxiFpCQD{bT4m47$nuMtsHsZ~PuPXyHA7;oJyK1Q_1uog z%Vd+}nJq<8xJiYu@2xVrMv)=#RZbxy1kIrj)ERWKU$tC62n=UCm?NhvysEtQ6Gy=| zS9z5HNBv6}Zk$fIp9aSc4iqR}dAYQoFH!apvgt00i!JBrMlEOA1IX?@ zq%|f7)#JF#v^q4~_u!SEPMo+E8 z2KUPBPX@lgml|Fh_!(~)CO@v%Ng*E<4Pty!!qu9j&e2>c?R61I z#@nMwY1FJ5M15;(t2HzHin@I&U+o<)XhcRq2p>S&>6l?%e9)~70v;rycTD1?67p#P3-t5|c@w(-oi zg_|mK&l42F-EL6otzo7_POZf4ZKp%i^Hf*I&Ci z*J^|U``_@jG`~&|$mR9_*(3#c&yppEWQT z<4rP46_CKdt4~<4Woj3yf&ELL3Uu6I|kFV%!)DPe$ z#%RSbjtMeC%4`T4dP%nP0in$!gcFf?Bo>+a1JN*Een8LWtw=Z=j~qcuL??bnZ#;U4 zKHAVXV@4!=g#JX2FYY$gK?S-#fA?NOKAR%c8IeyITtfx!;^_#SCExFpj$)^N{sEm&kfc9Mra?x5Y5Ii;jADKE YBr@O8dYgVRlCIOESx`*VH0~h&FWePdY5)KL literal 0 HcmV?d00001 diff --git a/bwie-common/pom.xml b/bwie-common/pom.xml new file mode 100644 index 0000000..5a38cf5 --- /dev/null +++ b/bwie-common/pom.xml @@ -0,0 +1,126 @@ + + + + bwie-tenement + com.bwie + 1.0-SNAPSHOT + + 4.0.0 + + bwie-common + + + + + + + + javax.servlet + javax.servlet-api + + + 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.springframework.boot + spring-boot-starter-amqp + + + + + com.github.tobato + fastdfs-client + 1.26.5 + + + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + + + + + + \ No newline at end of file diff --git a/bwie-common/src/main/java/com/bwie/common/config/RabbitMQConfig.java b/bwie-common/src/main/java/com/bwie/common/config/RabbitMQConfig.java new file mode 100644 index 0000000..5dcade4 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/config/RabbitMQConfig.java @@ -0,0 +1,59 @@ +package com.bwie.common.config;//package com.bwie.room.config; +// +//import org.springframework.amqp.core.Binding; +//import org.springframework.amqp.core.BindingBuilder; +//import org.springframework.amqp.core.DirectExchange; +//import org.springframework.amqp.core.Queue; +//import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; +//import org.springframework.amqp.support.converter.MessageConverter; +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +// +//@Configuration +//public class RabbitMQConfig { +// +// +// +// // 消息转换配置 +// @Bean +// public MessageConverter jsonMessageConverter(){ +// return new Jackson2JsonMessageConverter(); +// } +// /** +// * 创建队列 +// */ +// @Bean +// public Queue queue1(){ +// +// return new Queue("phoneQUeue",true); +// } +// +// @Bean +// public Queue queue2(){ +// +// return new Queue("msgQueue4",true); +// } +// +// /** +// * +// * 创建交换机 +// */ +// @Bean(name = "phoneExchange") +// public DirectExchange directExchange1(){ +// return new DirectExchange("phoneExchange"); +// } +// +// @Bean(name = "msgExchange4") +// public DirectExchange directExchange2(){ +// return new DirectExchange("msgExchange4"); +// } +// +// /** +// * 绑定队列和交换机 +// */ +// +// @Bean +// public Binding binding(){ +// return BindingBuilder.bind(queue1()).to(directExchange1()).with("phoneBinding"); +// } +//} diff --git a/bwie-common/src/main/java/com/bwie/common/constants/Constants.java b/bwie-common/src/main/java/com/bwie/common/constants/Constants.java new file mode 100644 index 0000000..2fdc9fe --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/constants/Constants.java @@ -0,0 +1,18 @@ +package com.bwie.common.constants; + +/** + * @description: 系统常量 + * @author DongZl + */ +public class Constants { + /** + * 成功标记 + */ + public static final Integer SUCCESS = 200; + public static final String SUCCESS_MSG = "操作成功"; + /** + * 失败标记 + */ + public static final Integer ERROR = 500; + public static final String ERROR_MSG = "操作异常"; +} diff --git a/bwie-common/src/main/java/com/bwie/common/constants/JwtConstants.java b/bwie-common/src/main/java/com/bwie/common/constants/JwtConstants.java new file mode 100644 index 0000000..ab944e9 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/constants/JwtConstants.java @@ -0,0 +1,34 @@ +package com.bwie.common.constants; + +public class JwtConstants { + /** + * 用户ID字段 + */ + public static final String DETAILS_USER_ID = "user_id"; + + /** + * 用户名字段 + */ + public static final String DETAILS_USERNAME = "user_name"; + + /** + * 用户标识 + */ + public static final String USER_KEY = "user_key"; + + /** + * 令牌秘钥 + */ + public final static String SECRET = "abcdefghijklmnopqrstuvwxyz"; + + /** + * 手机 + */ + public static final String USER_PHONE = "user_phone"; + + + /** + * 用户token 的键的前缀 + */ + public static final String LOGIN_TOKEN = "login_token:"; +} diff --git a/bwie-common/src/main/java/com/bwie/common/constants/QueueConstants.java b/bwie-common/src/main/java/com/bwie/common/constants/QueueConstants.java new file mode 100644 index 0000000..2c4c3c2 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/constants/QueueConstants.java @@ -0,0 +1,15 @@ +package com.bwie.common.constants; + +/** + * @Project boot-month + * @Author 张子豪 + * @Date 2023/9/6 10:06-+ + * @Description + */ +public class QueueConstants { + + public static final String SEND_CODE_QUEUE = "send_code_queue"; + public static final String SEND_CODE_PREVENT_REPEAT_ID = "send_code_prevent_repeat_id:"; + public static final String BLOG_UPDATE_QUEUE = "blog_update_queue"; + public static final String BLOG_UPDATE_PREVENT_REPEAT_ID = "blog_update_prevent_repeat_id:"; +} diff --git a/bwie-common/src/main/java/com/bwie/common/constants/RabbitMQOneConstants.java b/bwie-common/src/main/java/com/bwie/common/constants/RabbitMQOneConstants.java new file mode 100644 index 0000000..a05740c --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/constants/RabbitMQOneConstants.java @@ -0,0 +1,18 @@ +package com.bwie.common.constants; + +/** + * Clazz:2103A + * Name :FYSN + * Desc :世界上只有一种英雄主义。那就是认清生活的真相后,仍然热爱生活。--罗曼·罗兰 + * Date :2023-08-20 20:37:02 + */ + +public class RabbitMQOneConstants { + + //发送短消息队列名称 + public static final String SEND_SHORT_MESSAGE_QUEUE_NAME = "send_short_message"; + + //查看的日志队列名称 + public static final String QUERY_LOG_QUEUE_NAME = "query_log_message"; + +} diff --git a/bwie-common/src/main/java/com/bwie/common/constants/RabbitMQTwoConstants.java b/bwie-common/src/main/java/com/bwie/common/constants/RabbitMQTwoConstants.java new file mode 100644 index 0000000..95361f1 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/constants/RabbitMQTwoConstants.java @@ -0,0 +1,18 @@ +package com.bwie.common.constants; + +/** + * Clazz:2103A + * Name :FYSN + * Desc :世界上只有一种英雄主义。那就是认清生活的真相后,仍然热爱生活。--罗曼·罗兰 + * Date :2023-08-20 20:37:02 + */ + +public class RabbitMQTwoConstants { + + //发送消息队列名称 + public static final String SEND_SMS_QUEUE = "send_sms_queue"; + + //添加消息队列名称日志 + public static final String ADD_MESSAGE_QUEUE_NAME_LOG = "add_message_log"; + +} diff --git a/bwie-common/src/main/java/com/bwie/common/constants/TokenConstants.java b/bwie-common/src/main/java/com/bwie/common/constants/TokenConstants.java new file mode 100644 index 0000000..1871fb7 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/constants/TokenConstants.java @@ -0,0 +1,24 @@ +package com.bwie.common.constants; + +/** + * @author DongZl + * @description: 令牌常量 + */ +public class TokenConstants { + /** + * 缓存有效期,默认720(分钟) + */ + public final static long EXPIRATION = 720; + /** + * 缓存刷新时间,默认120(分钟) + */ + public final static long REFRESH_TIME = 120; + /** + * 权限缓存前缀 + */ + public final static String LOGIN_TOKEN_KEY = "login_tokens:"; + /** + * token标识 + */ + public static final String TOKEN = "token"; +} diff --git a/bwie-common/src/main/java/com/bwie/common/domain/Client.java b/bwie-common/src/main/java/com/bwie/common/domain/Client.java new file mode 100644 index 0000000..00b6828 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/domain/Client.java @@ -0,0 +1,34 @@ +package com.bwie.common.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Client { + + //客户编号 + private Integer clientId; + //客户姓名 + private String clientName; + //客户电话 + private String clientTel; + //客户类型 + private String clientType; + //证件类型 + private String clientDocument; + //证件号 + private String clientDocumentNumber; + //性别 + private String clientSex; + //民族 + private String clientNation; + + + + + + +} diff --git a/bwie-common/src/main/java/com/bwie/common/domain/Complain.java b/bwie-common/src/main/java/com/bwie/common/domain/Complain.java new file mode 100644 index 0000000..f12364c --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/domain/Complain.java @@ -0,0 +1,51 @@ +package com.bwie.common.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Complain { + + //投诉编号 + private Integer complainId; + //客户编号 + private Integer clientId; + + + //客户姓名 + private String clientName; + //客户电话 + private String clientTel; + + + //投诉类型 + private String complainType; + //投诉时间 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date complainTime; + //投诉描述 + private String complainContent; + //投诉状态 + private Integer complainStarts; + //登录人编号 + private Integer userId; + //登录人姓名 + private String userName; + //投诉处理时间 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date complainOutTime; + //投诉备注 + private String complainRemark; + + + +} diff --git a/bwie-common/src/main/java/com/bwie/common/domain/Floor.java b/bwie-common/src/main/java/com/bwie/common/domain/Floor.java new file mode 100644 index 0000000..3fce2f6 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/domain/Floor.java @@ -0,0 +1,26 @@ +package com.bwie.common.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Floor { + + + //住宅类编号 + private Integer floorId; + //楼名称(楼号) + private String floorName; + //楼层数 + private Integer floorCount; + //类状态 + private Integer floorStart; + //建筑面积 + private Integer floorArea; + + + +} diff --git a/bwie-common/src/main/java/com/bwie/common/domain/Login.java b/bwie-common/src/main/java/com/bwie/common/domain/Login.java new file mode 100644 index 0000000..8ce5fd4 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/domain/Login.java @@ -0,0 +1,20 @@ +package com.bwie.common.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Login { + + private Integer loginId; + private String loginName; + private String loginPwd; + private Integer loginRole; + + + +} diff --git a/bwie-common/src/main/java/com/bwie/common/domain/Repair.java b/bwie-common/src/main/java/com/bwie/common/domain/Repair.java new file mode 100644 index 0000000..f9f794c --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/domain/Repair.java @@ -0,0 +1,43 @@ +package com.bwie.common.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Repair { + + //保修编号 + private Integer repairId; + //客户编号 + private Integer clientId; + + + //客户姓名 + private String clientName; + //客户电话 + private String clientTel; + //报修类型 + private String repairType; + //报修物品 + private String repairContent; + //报修问题描述 + private String repairItem; + //报修状态 + private Integer repairStart; + //报修时间 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date repairStartTime; + + + + + +} diff --git a/bwie-common/src/main/java/com/bwie/common/domain/Role.java b/bwie-common/src/main/java/com/bwie/common/domain/Role.java new file mode 100644 index 0000000..0b13a4c --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/domain/Role.java @@ -0,0 +1,49 @@ +package com.bwie.common.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Role { + + //角色编号 + private Integer roleId; + //角色名称 + private String roleName; + //创建人编号 + private Integer addLoginId; + + //创建人姓名 + private String addLoginName; + + //修改人编号 + private Integer upLoginId; + + //修改人姓名 + private String upLoginName; + + //创建人时间 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date addLoginTime; + //修改人时间 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date upLoginTime; + //用户编号 + private Integer userId; + + //用户名称 + private String userName; + + + + +} diff --git a/bwie-common/src/main/java/com/bwie/common/domain/Room.java b/bwie-common/src/main/java/com/bwie/common/domain/Room.java new file mode 100644 index 0000000..9fdf069 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/domain/Room.java @@ -0,0 +1,46 @@ +package com.bwie.common.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Room { + + + //房间编号 + private Integer roomId; + + //房间号 + private String roomName; + + //住宅楼编号 + private Integer floorId; + + //楼名称(楼号) + private String floorName; + //楼层 + + private Integer roomFloorCount; + + //建筑面积 + private Integer floorArea; + + //客户编号 + private Integer clientId; + + + //客户姓名 + private String clientName; + //客户电话 + private String clientTel; + + //证件类型 + private String clientDocument; + //证件号 + private String clientDocumentNumber; + + +} diff --git a/bwie-common/src/main/java/com/bwie/common/domain/Space.java b/bwie-common/src/main/java/com/bwie/common/domain/Space.java new file mode 100644 index 0000000..ff7cba5 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/domain/Space.java @@ -0,0 +1,46 @@ +package com.bwie.common.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Space { + + + //停车位编号 + private Integer spaceId; + //车位号 + private String spaceNumber; + //住户编号 + private Integer clientId; + //客户姓名 + private String clientName; + //客户电话 + private String clientTel; + //车位类型 + private String spaceType; + //购车时间 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date spaceStartTime; + //到期时间 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date spaceEndTime; + //车位状态 + private Integer spaceStatus; + + //房间号 + private String roomName; + + + + +} diff --git a/bwie-common/src/main/java/com/bwie/common/domain/User.java b/bwie-common/src/main/java/com/bwie/common/domain/User.java new file mode 100644 index 0000000..737ce9d --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/domain/User.java @@ -0,0 +1,43 @@ +package com.bwie.common.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class User { + + //用户编号 + private Integer userId; + //用户姓名 + private String userName; + //用户邮箱 + private String userEmil; + //用户电话 + private String userTel; + //用户账号 + private String userZh; + //用户类型 + private String userType; + //用户状态 + private Integer userStart; + //创建时间 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date userTime; + + //权限 + private Integer userRole; + + + + + + +} diff --git a/bwie-common/src/main/java/com/bwie/common/domain/request/Count.java b/bwie-common/src/main/java/com/bwie/common/domain/request/Count.java new file mode 100644 index 0000000..78fb8fa --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/domain/request/Count.java @@ -0,0 +1,16 @@ +package com.bwie.common.domain.request; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Count { + + + private Integer id; + private Integer name; + +} diff --git a/bwie-common/src/main/java/com/bwie/common/domain/request/UserRequest.java b/bwie-common/src/main/java/com/bwie/common/domain/request/UserRequest.java new file mode 100644 index 0000000..c601737 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/domain/request/UserRequest.java @@ -0,0 +1,15 @@ +package com.bwie.common.domain.request; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UserRequest { + + private String phone; + private String code; + +} diff --git a/bwie-common/src/main/java/com/bwie/common/mq/Conmuser.java b/bwie-common/src/main/java/com/bwie/common/mq/Conmuser.java new file mode 100644 index 0000000..c4c3525 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/mq/Conmuser.java @@ -0,0 +1,27 @@ +package com.bwie.common.mq;//package com.bwie.room.mq; +// +// +//import com.bwie.common.domain.User; +//import org.springframework.amqp.rabbit.annotation.RabbitHandler; +//import org.springframework.amqp.rabbit.annotation.RabbitListener; +//import org.springframework.stereotype.Component; +// +//@Component +//@RabbitListener(queues = "phoneQUeue") +//public class Conmuser { +// +// +// @RabbitHandler +// public void phone(User user){ +// +// System.out.println(user); +// +// } +// +// +// +// +// +// +// +//} diff --git a/bwie-common/src/main/java/com/bwie/common/result/PageResult.java b/bwie-common/src/main/java/com/bwie/common/result/PageResult.java new file mode 100644 index 0000000..85ecdda --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/result/PageResult.java @@ -0,0 +1,34 @@ +package com.bwie.common.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author DongZl + * @description: 列表返回结果集 + */ +@Data +public class PageResult implements Serializable { + /** + * 总条数 + */ + private long total; + /** + * 结果集合 + */ + private List list; + public PageResult() { + } + public PageResult(long total, List list) { + this.total = total; + this.list = list; + } + public static PageResult toPageResult(long total, List list){ + return new PageResult(total , list); + } + public static Result> toResult(long total, List list){ + return Result.success(PageResult.toPageResult(total,list)); + } +} diff --git a/bwie-common/src/main/java/com/bwie/common/result/Result.java b/bwie-common/src/main/java/com/bwie/common/result/Result.java new file mode 100644 index 0000000..30b1e73 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/result/Result.java @@ -0,0 +1,76 @@ +package com.bwie.common.result; + +import com.bwie.common.constants.Constants; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author DongZl + * @description: 响应信息主体 + */ +@Data +public class Result implements Serializable { + + private static final long serialVersionUID = 1L; + /** + * 成功 + */ + public static final int SUCCESS = Constants.SUCCESS; + /** + * 失败 + */ + public static final int FAIL = Constants.ERROR; + /** + * 返回状态码 + */ + private int code; + /** + * 响应信息 + */ + private String msg; + /** + * 响应数据 + */ + private T data; + + public static Result success() { + return restResult(null, SUCCESS, Constants.SUCCESS_MSG); + } + + public static Result success(T data) { + return restResult(data, SUCCESS, Constants.SUCCESS_MSG); + } + + public static Result success(T data, String msg) { + return restResult(data, SUCCESS, msg); + } + + public static Result error() { + return restResult(null, FAIL, Constants.ERROR_MSG); + } + + public static Result error(String msg) { + return restResult(null, FAIL, msg); + } + + public static Result error(T data) { + return restResult(data, FAIL, Constants.ERROR_MSG); + } + + public static Result error(T data, String msg) { + return restResult(data, FAIL, msg); + } + + public static Result error(int code, String msg) { + return restResult(null, code, msg); + } + + private static Result restResult(T data, int code, String msg) { + Result apiResult = new Result<>(); + apiResult.setCode(code); + apiResult.setData(data); + apiResult.setMsg(msg); + return apiResult; + } +} diff --git a/bwie-common/src/main/java/com/bwie/common/utils/IpUtils.java b/bwie-common/src/main/java/com/bwie/common/utils/IpUtils.java new file mode 100644 index 0000000..20c1405 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/utils/IpUtils.java @@ -0,0 +1,312 @@ +package com.bwie.common.utils; + +import javax.servlet.http.HttpServletRequest; +import java.net.InetAddress; +import java.net.UnknownHostException; + +/** + * 获取IP方法 + * + * @author ruoyi + */ +public class IpUtils { + public final static String REGX_0_255 = "(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)"; + // 匹配 ip + public final static String REGX_IP = "((" + REGX_0_255 + "\\.){3}" + REGX_0_255 + ")"; + public final static String REGX_IP_WILDCARD = "(((\\*\\.){3}\\*)|(" + REGX_0_255 + "(\\.\\*){3})|(" + REGX_0_255 + "\\." + REGX_0_255 + ")(\\.\\*){2}" + "|((" + REGX_0_255 + "\\.){3}\\*))"; + // 匹配网段 + public final static String REGX_IP_SEG = "(" + REGX_IP + "\\-" + REGX_IP + ")"; + + /** + * 获取客户端IP + * + * @param request 请求对象 + * @return IP地址 + */ + public static String getIpAddr(HttpServletRequest request) { + if (request == null) { + return "unknown"; + } + String ip = request.getHeader("x-forwarded-for"); + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("X-Forwarded-For"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("WL-Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("X-Real-IP"); + } + + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getRemoteAddr(); + } + + return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : getMultistageReverseProxyIp(ip); + } + + /** + * 检查是否为内部IP地址 + * + * @param ip IP地址 + * @return 结果 + */ + public static boolean internalIp(String ip) { + byte[] addr = textToNumericFormatV4(ip); + return internalIp(addr) || "127.0.0.1".equals(ip); + } + + /** + * 检查是否为内部IP地址 + * + * @param addr byte地址 + * @return 结果 + */ + private static boolean internalIp(byte[] addr) { + if (StringUtils.isNull(addr) || addr.length < 2) { + return true; + } + final byte b0 = addr[0]; + final byte b1 = addr[1]; + // 10.x.x.x/8 + final byte SECTION_1 = 0x0A; + // 172.16.x.x/12 + final byte SECTION_2 = (byte) 0xAC; + final byte SECTION_3 = (byte) 0x10; + final byte SECTION_4 = (byte) 0x1F; + // 192.168.x.x/16 + final byte SECTION_5 = (byte) 0xC0; + final byte SECTION_6 = (byte) 0xA8; + switch (b0) { + case SECTION_1: + return true; + case SECTION_2: + if (b1 >= SECTION_3 && b1 <= SECTION_4) { + return true; + } + case SECTION_5: + switch (b1) { + case SECTION_6: + return true; + } + default: + return false; + } + } + + /** + * 将IPv4地址转换成字节 + * + * @param text IPv4地址 + * @return byte 字节 + */ + public static byte[] textToNumericFormatV4(String text) { + if (text.length() == 0) { + return null; + } + + byte[] bytes = new byte[4]; + String[] elements = text.split("\\.", -1); + try { + long l; + int i; + switch (elements.length) { + case 1: + l = Long.parseLong(elements[0]); + if ((l < 0L) || (l > 4294967295L)) { + return null; + } + bytes[0] = (byte) (int) (l >> 24 & 0xFF); + bytes[1] = (byte) (int) ((l & 0xFFFFFF) >> 16 & 0xFF); + bytes[2] = (byte) (int) ((l & 0xFFFF) >> 8 & 0xFF); + bytes[3] = (byte) (int) (l & 0xFF); + break; + case 2: + l = Integer.parseInt(elements[0]); + if ((l < 0L) || (l > 255L)) { + return null; + } + bytes[0] = (byte) (int) (l & 0xFF); + l = Integer.parseInt(elements[1]); + if ((l < 0L) || (l > 16777215L)) { + return null; + } + bytes[1] = (byte) (int) (l >> 16 & 0xFF); + bytes[2] = (byte) (int) ((l & 0xFFFF) >> 8 & 0xFF); + bytes[3] = (byte) (int) (l & 0xFF); + break; + case 3: + for (i = 0; i < 2; ++i) { + l = Integer.parseInt(elements[i]); + if ((l < 0L) || (l > 255L)) { + return null; + } + bytes[i] = (byte) (int) (l & 0xFF); + } + l = Integer.parseInt(elements[2]); + if ((l < 0L) || (l > 65535L)) { + return null; + } + bytes[2] = (byte) (int) (l >> 8 & 0xFF); + bytes[3] = (byte) (int) (l & 0xFF); + break; + case 4: + for (i = 0; i < 4; ++i) { + l = Integer.parseInt(elements[i]); + if ((l < 0L) || (l > 255L)) { + return null; + } + bytes[i] = (byte) (int) (l & 0xFF); + } + break; + default: + return null; + } + } catch (NumberFormatException e) { + return null; + } + return bytes; + } + + /** + * 获取IP地址 + * + * @return 本地IP地址 + */ + public static String getHostIp() { + try { + return InetAddress.getLocalHost().getHostAddress(); + } catch (UnknownHostException e) { + } + return "127.0.0.1"; + } + + /** + * 获取主机名 + * + * @return 本地主机名 + */ + public static String getHostName() { + try { + return InetAddress.getLocalHost().getHostName(); + } catch (UnknownHostException e) { + } + return "未知"; + } + + /** + * 从多级反向代理中获得第一个非unknown IP地址 + * + * @param ip 获得的IP地址 + * @return 第一个非unknown IP地址 + */ + public static String getMultistageReverseProxyIp(String ip) { + // 多级反向代理检测 + if (ip != null && ip.indexOf(",") > 0) { + final String[] ips = ip.trim().split(","); + for (String subIp : ips) { + if (false == isUnknown(subIp)) { + ip = subIp; + break; + } + } + } + return StringUtils.substring(ip, 0, 255); + } + + /** + * 检测给定字符串是否为未知,多用于检测HTTP请求相关 + * + * @param checkString 被检测的字符串 + * @return 是否未知 + */ + public static boolean isUnknown(String checkString) { + return StringUtils.isBlank(checkString) || "unknown".equalsIgnoreCase(checkString); + } + + /** + * 是否为IP + */ + public static boolean isIP(String ip) { + return StringUtils.isNotBlank(ip) && ip.matches(REGX_IP); + } + + /** + * 是否为IP,或 *为间隔的通配符地址 + */ + public static boolean isIpWildCard(String ip) { + return StringUtils.isNotBlank(ip) && ip.matches(REGX_IP_WILDCARD); + } + + /** + * 检测参数是否在ip通配符里 + */ + public static boolean ipIsInWildCardNoCheck(String ipWildCard, String ip) { + String[] s1 = ipWildCard.split("\\."); + String[] s2 = ip.split("\\."); + boolean isMatchedSeg = true; + for (int i = 0; i < s1.length && !s1[i].equals("*"); i++) { + if (!s1[i].equals(s2[i])) { + isMatchedSeg = false; + break; + } + } + return isMatchedSeg; + } + + /** + * 是否为特定格式如:“10.10.10.1-10.10.10.99”的ip段字符串 + */ + public static boolean isIPSegment(String ipSeg) { + return StringUtils.isNotBlank(ipSeg) && ipSeg.matches(REGX_IP_SEG); + } + + /** + * 判断ip是否在指定网段中 + */ + public static boolean ipIsInNetNoCheck(String iparea, String ip) { + int idx = iparea.indexOf('-'); + String[] sips = iparea.substring(0, idx).split("\\."); + String[] sipe = iparea.substring(idx + 1).split("\\."); + String[] sipt = ip.split("\\."); + long ips = 0L, ipe = 0L, ipt = 0L; + for (int i = 0; i < 4; ++i) { + ips = ips << 8 | Integer.parseInt(sips[i]); + ipe = ipe << 8 | Integer.parseInt(sipe[i]); + ipt = ipt << 8 | Integer.parseInt(sipt[i]); + } + if (ips > ipe) { + long t = ips; + ips = ipe; + ipe = t; + } + return ips <= ipt && ipt <= ipe; + } + + /** + * 校验ip是否符合过滤串规则 + * + * @param filter 过滤IP列表,支持后缀'*'通配,支持网段如:`10.10.10.1-10.10.10.99` + * @param ip 校验IP地址 + * @return boolean 结果 + */ + public static boolean isMatchedIp(String filter, String ip) { + if (StringUtils.isEmpty(filter) || StringUtils.isEmpty(ip)) { + return false; + } + String[] ips = filter.split(";"); + for (String iStr : ips) { + if (isIP(iStr) && iStr.equals(ip)) { + return true; + } else if (isIpWildCard(iStr) && ipIsInWildCardNoCheck(iStr, ip)) { + return true; + } else if (isIPSegment(iStr) && ipIsInNetNoCheck(iStr, ip)) { + return true; + } + } + return false; + } +} diff --git a/bwie-common/src/main/java/com/bwie/common/utils/JwtUtils.java b/bwie-common/src/main/java/com/bwie/common/utils/JwtUtils.java new file mode 100644 index 0000000..f560aa9 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/utils/JwtUtils.java @@ -0,0 +1,109 @@ +package com.bwie.common.utils; + +import com.bwie.common.constants.JwtConstants; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; + +import java.util.Map; + +/** + * @description: Jwt工具类 + * @author DongZl + */ +public class JwtUtils { + + /** + * 秘钥 + */ + public static String secret = JwtConstants.SECRET; + + /** + * 从数据声明生成令牌 + * + * @param claims 数据声明 + * @return 令牌 + */ + public static String createToken(Map claims){ + String token = Jwts.builder().setClaims(claims).signWith(SignatureAlgorithm.HS512, secret).compact(); + return token; + } + + /** + * 从令牌中获取数据声明 + * + * @param token 令牌 + * @return 数据声明 + */ + public static Claims parseToken(String token){ + return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody(); + } + /** + * 根据令牌获取用户标识 + * + * @param token 令牌 + * @return 用户ID + */ + public static String getUserKey(String token){ + Claims claims = parseToken(token); + return getValue(claims, JwtConstants.USER_KEY); + } + /** + * 根据令牌获取用户标识 + * + * @param claims 身份信息 + * @return 用户ID + */ + public static String getUserKey(Claims claims){ + return getValue(claims, JwtConstants.USER_KEY); + } + /** + * 根据令牌获取用户ID + * + * @param token 令牌 + * @return 用户ID + */ + public static String getUserId(String token){ + Claims claims = parseToken(token); + return getValue(claims, JwtConstants.DETAILS_USER_ID); + } + /** + * 根据身份信息获取用户ID + * + * @param claims 身份信息 + * @return 用户ID + */ + public static String getUserId(Claims claims){ + return getValue(claims, JwtConstants.DETAILS_USER_ID); + } + /** + * 根据令牌获取用户名 + * + * @param token 令牌 + * @return 用户名 + */ + public static String getUserName(String token){ + Claims claims = parseToken(token); + return getValue(claims, JwtConstants.DETAILS_USERNAME); + } + /** + * 根据身份信息获取用户名 + * + * @param claims 身份信息 + * @return 用户名 + */ + public static String getUserName(Claims claims){ + return getValue(claims, JwtConstants.DETAILS_USERNAME); + } + /** + * 根据身份信息获取键值 + * + * @param claims 身份信息 + * @param key 键 + * @return 值 + */ + public static String getValue(Claims claims, String key){ + Object obj = claims.get(key); + return obj == null ? "" : obj.toString(); + } +} diff --git a/bwie-common/src/main/java/com/bwie/common/utils/StringUtils.java b/bwie-common/src/main/java/com/bwie/common/utils/StringUtils.java new file mode 100644 index 0000000..93c47fd --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/utils/StringUtils.java @@ -0,0 +1,68 @@ +package com.bwie.common.utils; + +import org.springframework.util.AntPathMatcher; + +import java.util.Collection; +import java.util.List; + +/** + * @author DongZl + * @description: 字符串处理工具类 + */ +public class StringUtils extends org.apache.commons.lang3.StringUtils { + + /** + * * 判断一个对象是否为空 + * + * @param object Object + * @return true:为空 false:非空 + */ + public static boolean isNull(Object object) { + return object == null; + } + + /** + * * 判断一个Collection是否为空, 包含List,Set,Queue + * + * @param coll 要判断的Collection + * @return true:为空 false:非空 + */ + public static boolean isEmpty(Collection coll) { + return isNull(coll) || coll.isEmpty(); + } + + /** + * 查找指定字符串是否匹配指定字符串列表中的任意一个字符串 + * + * @param str 指定字符串 + * @param strs 需要检查的字符串数组 + * @return 是否匹配 + */ + public static boolean matches(String str, List strs) { + if (isEmpty(str) || isEmpty(strs)) { + return false; + } + for (String pattern : strs) { + if (isMatch(pattern, str)) + { + return true; + } + } + return false; + } + + /** + * 判断url是否与规则配置: + * ? 表示单个字符; + * * 表示一层路径内的任意字符串,不可跨层级; + * ** 表示任意层路径; + * + * @param pattern 匹配规则 + * @param url 需要匹配的url + * @return + */ + public static boolean isMatch(String pattern, String url) { + AntPathMatcher matcher = new AntPathMatcher(); + return matcher.match(pattern, url); + } +} diff --git a/bwie-common/src/main/java/com/bwie/common/utils/TelSmsUtils.java b/bwie-common/src/main/java/com/bwie/common/utils/TelSmsUtils.java new file mode 100644 index 0000000..7accf0e --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/utils/TelSmsUtils.java @@ -0,0 +1,88 @@ +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 = "LTAI5tQWdAodc1EJ1doShoW4"; + private static String accessKeySecret = "9MbfDBJ3Efqc6iN5yPFX0zq3ZErsII"; + private static String templateCode = "SMS0001"; + + /** + * 短信访问域名 + */ + private static String endpoint = "dysmsapi.aliyuncs.com"; + /** + * 短信签名 + */ + private static String signName = "登录验证"; + + /** + * 实例化短信对象 + */ + private static Client client; + + static { + log.info("初始化短信服务开始"); + long startTime = System.currentTimeMillis(); + try { + client = initClient(); + log.info("初始化短信成功:{}",signName); + } catch (Exception e) { + e.printStackTrace(); + } + log.info("初始化短信服务结束:耗时:{}MS",(System.currentTimeMillis()-startTime)); + } + /** + * 初始化短信对象 + * @return + * @throws Exception + */ + private static Client initClient() throws Exception{ + Config config = new Config() + // 您的AccessKey ID + .setAccessKeyId(accessKeyId) + // 您的AccessKey Secret + .setAccessKeySecret(accessKeySecret); + // 访问的域名 + config.endpoint = endpoint; + return new Client(config); + } + + /** + * 发送单条短信 + * @param tel + * @param templateCode SMS_153991546 + * @param sendDataMap + */ + public static String sendSms(String tel, String templateCode,Map sendDataMap){ + SendSmsRequest sendSmsRequest = new SendSmsRequest() + .setPhoneNumbers(tel) + .setSignName(signName) + .setTemplateCode(templateCode) + .setTemplateParam(JSONObject.toJSONString(sendDataMap)); + SendSmsResponse sendSmsResponse = null; + try { + log.info("发送短信验证码:消息内容是:【{}】", JSONObject.toJSONString(sendDataMap)); + sendSmsResponse = client.sendSms(sendSmsRequest); + } catch (Exception e) { + log.error("短信发送异常,手机号:【{}】,短信内容:【{}】,异常信息:【{}】", tel, sendDataMap, e); + } + return JSONObject.toJSONString(sendSmsResponse.getBody()); + } + +} diff --git a/bwie-common/target/classes/com/bwie/common/constants/Constants.class b/bwie-common/target/classes/com/bwie/common/constants/Constants.class new file mode 100644 index 0000000000000000000000000000000000000000..ca526b6494ea87191469fec9e37c625f10de7bf5 GIT binary patch literal 651 zcma)4J#X4z5PpsTHm;LkXlQBE5Ar3*P%qhnx*!@M(IVlLwKDEo;>g&NF?8<~RjL#z zYoz>!C__+`c8>Bp3cnz8)w6+wZe8x4d+zSN$9KN{bM*_r4z?5|@l3&Utfr8_i_pB3 z@JhmKf@FNGRH}wS$kq?dfvG#D+tF)oAUeX|B|MtuKfO2h2${JWBk*mv!zGIq&+P@K z8?;QPFJu%5iE6XiXcAJ94|`>-5t3!wwS%{Wg<`2ih*!MNg0Nh-UGbscZ3}YimfEz`HdcuK~D1G`7qtXp1JZ-2Fg&Y?Y%T`b{Y+zG`1X;x*WWxG?j3J~ScGhSg3M(L}kA5OXeF4!o@Yd5OT#@X>P@{GoZjHOY$+}$cGXc<&lB{z7OLVRE}A7#4pY9 z%ba78(AZ`;tFtHeiS0|!dDNO^n~X>aj~T0z0<0j%k&Gw*G&6;)hMOT`7g*5fE&}oJ VDgJ}lDm)RaD#cR?PZ`IM{|oAmkthHF literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/constants/JwtConstants.class b/bwie-common/target/classes/com/bwie/common/constants/JwtConstants.class new file mode 100644 index 0000000000000000000000000000000000000000..275f09278e35443e66d839b29dc461322f9faf04 GIT binary patch literal 638 zcma)(O>fgc5Qg7r(#B0w+NR~Je3a4(wLRcVPk@lB)Ig|lP#q$1vewR$Y+~;ge>9YT z#R-W6KY$;Fm>3W~a+#fHcXsC8cYpl+_8q`6_M52TP6KxvxJOt!b^0e=*AL$L&Uw&1 zCA8g%xD<9Q^vL$}RO!)E!fMCpEEhT-h`5jz?i1FlH@%ZLj)fh9RrWb^-dlJ;Sn{3D zxzo3>OK6rSZ(sF1u6#&XaeFVjUeNEIIi7_*E`Fx8%AXTz2ZsYfy<>)w1-eR0uSi0f z_C*-;PTMt+hzBB7bN;hg&&Mhw9JrB5>~N-}%}HW3FTaIn_Ul>x_Z1mGsp*>{jpPe8 z@3~Pud^|Uxg*G+`kN&S8+wsq}UO16aPG}UFOanC}ESH%U36HYMd@8R9+aipH^22DX zCet|4=Hg?T<;CUf)759zSJqvOjpj?O*o>48ax<0s33jo-e+Vq$HtJXed&jhZ2D4S+ zW#(puSD0HBUS+;k;Wg&<3U6>{_8XfVw|IhGGO&2`74)SXdA*cD9Ba72vBf1^fSb6* KD{;fQuA$`>qUI!u5$MJAo(sjtEtPKgq1Q zQ4zzQ;{|=oeNfV(rXOg!J|aZcRV-uql_;Wkg=P?ko;+8H>-^8>{bU_Q%%H@u^IuPf z+0hp3?yd9;1&E~Xa*x9ByJP}}jS({l<-OE~hjJi=;i`K`8+84k$Kyd)m~Y8en)@xn zHZt_TKo+ZXa-eMz%7A_w`4pZcTu9+5!o?JxCM8Q!Q=KITYlwl|-V@m4&~lFIIMKi) T%2bQPK8JZM5Mo%Qn!(aL0o$3W literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/constants/RabbitMQOneConstants.class b/bwie-common/target/classes/com/bwie/common/constants/RabbitMQOneConstants.class new file mode 100644 index 0000000000000000000000000000000000000000..d8b9cc81fd837998c6938ce4b99c3beec38c05ce GIT binary patch literal 508 zcmb7ByG{Z@6g|UR9)gGu3JW{6U@h!4CInY376>emSZ!vP$ueY_iMxx&&$2SH@B{oP z;{_#B*w~zV&zbw4kI%Pv02esSBZ=KCYFX?t9NA{~#f-179?aG#_w$eC+J=6iz3 z7;x8>ai`x?Vm($wGv;l*2t9Etm$mDE1vQqN6_H1Qq4B@^43*!r^xT>7Vp<>)YT`sw z9mdXFL=pF?^UlLUgwIZ({k4W;B9bd` bmsLuMFhepZY@4vS^3y1zLX5f-CQ$tXEtq`9 literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/constants/RabbitMQTwoConstants.class b/bwie-common/target/classes/com/bwie/common/constants/RabbitMQTwoConstants.class new file mode 100644 index 0000000000000000000000000000000000000000..13ca60f0ae0967affcc1325a0d7dce7a2bd5a287 GIT binary patch literal 493 zcmb7AyH3ME5S+`Kya~_H(E&wFK?g#L5|hSG6r7|zot;y-$PeMO$#+p9QSbqL6k?Nr zprE0d+nJkP?auqh>l=V89G8*BUJ?6695B=!bJ*vO?eOu`oSFp$d?0M5tBP@^% UvegNzn>vpMn#34(2{UMY0?Pe&YXATM literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/constants/TokenConstants.class b/bwie-common/target/classes/com/bwie/common/constants/TokenConstants.class new file mode 100644 index 0000000000000000000000000000000000000000..684ace3b3539ed572fbe090abfff328502045cc6 GIT binary patch literal 526 zcma)2O;5r=5Pbtwkbofgg`e?;9PGuD7!yN^BDEN3h@MD`4K9{#LW}yhJehd#2YB)q z8K)H$Z*H=0=gsWCoi}eEFRuU&u#-j{>q%@Ru}Mg4SC@_UiP>lw1Ue^VYo7E2O9oxb zoj3|V;T3x)WZGK2t#!_NX5&Je=J80#>8;a-(KB03&FD3?YeGRETKAUfT5_Ovg0YZ; zY6@EfCAyQsHev2aND&+p;^nu(%a760A!?9S}_;rKC4N}DvL_S%j~coZfNO4GQQ#%`!Xprt_9_F`|c-gVdO zK6pc+g-~dLLLo?eBod0mL)aA$q4I$u@ev^*9$)w~kSO7I?wy$(ugAq75Yp=0bMN_` zGjq>t&i>)wzx)k=x8eI~q_HXF2_a7kc}mFBLOvnnlR`da{TJ9xptiw?fw;F}J<<=`a;-xlF_ zMD41Lmld3)W~1Kf&Mqqqp1)jsqBh;EwN|EQTiyCfy>n6_V*vBDwYowj0$J#G8m$!~ z(gty{-VD(fpI#@rUG zlUZxGrkC4mwMJ{&JdYR4hYvTmKd|HR;r(+VOuL|`WxP-h#XU!i>^cj4(KDvqQ4E3e zHQyr}QI8Cd#W-aAl0s>&-d$}kU#N8$xNg0}3+F>kbDg26u74X*&4oB~pWaqSwH)pv z_t|w8-Y1lp`-I!zKB@ZSo3$oiZ^!FAxOlm~)IB-=h=OYG%sXGCkZgBXC4KS|&!Z-9 zB##UFJaSNs0L;}(QHVJzL_qr9#VE#{L?PN2JM5Tn4@N*e2OWqS>m9o>;J|aY#Hj?r z=-V2{M$!7D9I+iZyAnkOhxvtWZRyHfZC%#~+mPQFYOQk;8up0Q+QzCWv4OGiS$h7$ zL$h<|7#i}aPJLsu$>L5&Jf8J=S)N{#D-$`)ez=*zEKD2L&!s)h6 z0`q-NHCm1C8HJak=^gZnNVWJG|NlIZ>Y@ipGYjp_&Qg7*AzdnKI?gd^zd78AH|KB{ z#&Q@JQWY{GWKzhKkYgBAxb+R&R}MA2FNbNoC5Ktz-hsPwc&Cte3GsxS6mm+)X(5YP zQW)ud1dNC7-E1_M>zy3d!D1_!cO47L?Q{;`#rK32R`UZd*X4JALXO`?mI|GAju^pmU?A4^~#9ql|j`jvC1r<7-gql`CzQ_8N8c$BBAoQ zCM2-ci7lv~l1rc$Xj^L!8-yQdNdn0Lya)FZw##H@dvGg18^lGcrh-y(et$$=Xa zuOdA+S=~lPZ^>lmCrLbO>i5XH)@vwVM{dfswvh`Ec`r#w-b=Yj!K7Y8Ajb#Ut`h+jy);2ZFXN^Kl<`4nHxmJsyevT_FXv_jl=DI4BA~LDC#dWd z+`NDaJ}B=NBA|*_B&gz*+@gR=KB(xHBA`L9OwgcLamxa#_@J^|2|(5jR_eg6x_;Go zIH+qig9mV)AsJG~F~_E!z)^Js^E?|sRUN{E41BD;CO*DL)D&GPy_0hg>2b#B2u)-u`g`f*DeJUO z?n9-Mt4wXDG;tmF)HV)0Cg*w25`k;^5=Ro=hzed(i4rW0YTp_qFUmRQ4P#azYVH!e~{zv=*@%e64gK8uT(+lnF(w5o#TZPsVj~Z{JY^_zRYq z4jldQXMCJog6Z=|tT5~YxC6hyDme>h@B=i+C7C$S;4--sx|CfZXX6F>w@J>ykC^;x zpW7L+K_DEGCaqOc*G2lMm?a6LK(wWB>>-*3KgzmWsf7$o^9wZ0`j3 z@G$~k#o49O(~6h*is?ATp6;GvUp=#jde6ceA$%j*y^Zwj{1*^SF(){5n|i@D=7o%@ z>%YR#!>?etGO~?PDVuG$m0Jv-=TbRncsAG3$|1uSg}>GC?5CrZHyOSx{B4G33mvW8 zZumjr50h-;NdK5+1|>5QulqTy_y^{3z8~uvH@K#`o~XWpJM^eko!mmAI<WOR~QM}`xbCgk&PzSsPR<_Dtpe}Nb5p8(Ra LL+A#dm_YYGCKt)Z literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/domain/Complain.class b/bwie-common/target/classes/com/bwie/common/domain/Complain.class new file mode 100644 index 0000000000000000000000000000000000000000..b9f766b307bb2bc436c6cd1ad252ba55a67dc2c3 GIT binary patch literal 7760 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 literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/domain/Repair.class b/bwie-common/target/classes/com/bwie/common/domain/Repair.class new file mode 100644 index 0000000000000000000000000000000000000000..def8a10323dee341da4ce57bfbabb9600a0a060f GIT binary patch literal 6042 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 literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/domain/Role.class b/bwie-common/target/classes/com/bwie/common/domain/Role.class new file mode 100644 index 0000000000000000000000000000000000000000..8af91657d9eed6f510406bfd42fb2f0b7709e6c6 GIT binary patch literal 6528 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ξL`L5{N{NKoI!uXFR9Og%h113eCNTLoSd=a zRJsB|9LcF^NJ!GOD_As`$5>FNga`02@s%P4ONL+pvRA6Wsg>XWAE8ht`YMyaDq5!u z(@}a*|owN#N%yAmz$@OILxntK*cz?A06wKGy|>TjVo-bjllo zUP4ZDt9$-6vhKZ18;jR0(=cBY%e1MuS@H!8#kWa5$MP+b$HO#S+$#A2=HD)PyhX#s zYb9T1{D|c7{A?;-CwaVln~K*F{FoMElj=STy;JB$x2#$Nvq~N%PObLz~Jza3zj->_1 zU6dgnhEYTOq~PBG+_ZC-&22IFvD|oaW5|u0?6mMV4|R~iZ)F6cw|C1%{tWsuR*unE F{s#g-(P01p literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/domain/User.class b/bwie-common/target/classes/com/bwie/common/domain/User.class new file mode 100644 index 0000000000000000000000000000000000000000..2f356de0aba57207809645a4f57a2e6834f53800 GIT binary patch literal 5852 zcmcIoS#um$6+S)FGu<=O(rl9Lwrpb)nMfnalRyYc%MLh+7a7Shwj;33lD0IG#+pT$ z8O3ohYe;~wC2R?Sgx!W<2vi}ZfD{D}gesnR$P>K458#EOilT~OzH{&GMdMbY2XMJ= zfA^m6oWA#-rO)UO|M}&wiRd z!;@*cnZC&AOFVp;hp+JPRUV$=;b|Ve#=|pA{<=ZmNYhq&)}-h7`Ar_aWzx4z`i@E8 zHR*dMecz-jCS5h@2PXZH<8Ww+C*v>G_)CHxzko*tW<+kNz?Q?EO17#^FNZPv^4ZX2YB z>b3F(cXp}WY=mtd!`!zg?&V~&#wS~-bna7^*grHJx~1S6^}CyMpk}A4jmq(r`gvTG zi?i{iHfP=1jN7X6TrKLI#VYo+Q|#&d#cHLD&DF7+xn|w1Hp=`qoGGJTEZx($?$y47 zJd*TLTB!&(c^hX>c{J%POVO0Se4%hz!Fy5IX&yygNjtcbEkhAEGCTv(ve3}6LBO@AmYzbGw(>AP#meK-V~fD{2qCxWaWVs zw}wrw+t$73FH~kb6T@dU(wggYM2R#?G&_rx7WU0<9ppUVe6z%=KkfB}YKPfCu2y<{ ziri6ez>o_8L0({pAQu9Hyt@!VE?E96#C7%rZxHj~1bo4v6Yw-JE`um!TrPwN;?~0i zvCxBq&Mr;6%OVd@7e$3KXWhmjzIzmoMYp{uQz1lwJijT{#aX2lKA0q^GA0RPyJn{;qZ04lUu{%7cWQJc9J5~j zhY~=A@&93E{mX(#4!z2waB$=PFs4s6S6Z``!&OnpxUTHuuYg5EG;C3cMl2fTVT^}; zJd}C3g{8OBn=KlrVT}g3c5YCoEP8<6W6>StSoCg2hZ#-s@D4g?(Oo>;&BHxB9OB^! z9kr-M$hED(H%Z>yT`SevT%~2v$LJA6An$lcX4C|ou5j-IwJRi(Bm@w0D8y}^EC~3iVW%eU7+~ws;1NlA{jtsAw zg`BhQe5mg0_+FXWkWYKi5ZsLJBSkTG9#D+^C!TPjc*2X~2}g=2d?}uAr+C7nq|sY| z`=EUr@LSt-JH5>VF?Khk+pqwKVw}LNjHiZYqV#jpehLty{TP#CF;548ElHp|>FtQlMrXm@(86xGJ6i7KIZKs%&R-}}j4w3Rs2Bf@W*%>BT ziUbrQ6`UTB3Qn)x!=zqC>alx6q@t4rsp#bFER%AIl(lmqQlFCtsn03cc_tMUDQ_1- zq<*IeQoqw@7n#(jNJYEPBk9-R;&|vYBn!+d(hXjL(U#~8orT}}wHZ2xPg9HrwIlRi zti`FM9i;aG>2yRJr1t|QXjM5Zr7T1l;JH=d z59-hgE-XQRrw4&z2)w`1MciwgZbB$N1f+xg3%Uf9K+r!&4+ABk_XvFu2tTzDewTqv zdLEzH4*{jr5NaLC|2s}4b%e*uf^0iX$+|`Zg&h*3%5N|1lsM0L zm&7RS+Y4`yxX5_7#Hi)l3wtESXJnx8Mv40w-z0IC@gVRT?d@(zWyP02JT9wL(eSJB zAk1vTdAsR2eNN*BNX=!woVx_TFikEDCmGqLGSjCSTJGqLk)izeiDB0#JnI${5 zN;h-{mS|z;ku0$3m$z}%!txq-o?IQri5teaK-}l)0&#nm5Qw{~q(IyZ83J(+V+zEb zMoJXmy(!TWa}Uc+CwGb5)^Q)kjT3h|vJ=5iW#y>gry363-P`m;w(y_8TVwR-e*wAV BE{FgC literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/domain/request/Count.class b/bwie-common/target/classes/com/bwie/common/domain/request/Count.class new file mode 100644 index 0000000000000000000000000000000000000000..839a0f20e95dc65388b9ad4a8dbf2ad6da3f4324 GIT binary patch literal 2080 zcma)7+in|G6kW%j@r+$3aosqrA%IIm@g=DXw3Ip*plQ;k#A#?yC3s?DkK!qgCrrlh zFMI%b$pc8#l|Vx9QY5~C&)|_#)}9&1c50+5(K+kv+1IttKK}FHpMM2#4WA|v$FeLd z20l!2|45dPQ^?|$pjAP)4XmY*#JY()vfq_u!^Axkp9tI(rF8>!g_zS+IJf!8`o^lZ zthAB_-e=Zso09CN+pyXX zEzgm2B-H$tbEt56v*GSncfWP)D#5yX@$9$=~^0Ba4C%$oKNFTL9Yp_;;O>= z0l#6&x4KTdX?tmWfSN)wh+1@-%V})kzAW1$e!d{(FO!;58t>x>TPp+Kq52LTx#E{=B@ds&x4%ZbZe;F9+t%JOgS2BWnq&mxzJ^iLsbbU;d0li8Pmw*sL|)G) z`byd{W5r+K;cl422@fsI;VmYe!wxR9Eis;N<88{~C}RahA`N#)O^HZHot9;y1S<4j zK+-V(!K8utXP7atz<*Oc!-WtgPso@f8JdhqM8-{ql!oZSf@J!C9n()T)tR4US`afn zr~$nkGK%C9{6!Z!_gZFgNm~v`oXsq@NTHdj9Kl%V!TeI>Mop6sc`f>43bFh&JD#v> zq1PylIBwt_yvvw6uH!wT7{}l$f2f48OT5q5iL`*6d(fU!pphJKF@%Rixl|Eoh8MNXrNPhkVsqC2^(o%2_6WPfS8-k~Zd&ry~r*I&`Su93% zDZWQH=~tMnbB}YMDnG&5V5G|PkMY6~n892XLe-NlO+|A>b9q7Osz6ssc{(x_$dvKr Wiz*pB8H{v#$dY5Hev#f{So#kzu~TLM literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/domain/request/UserRequest.class b/bwie-common/target/classes/com/bwie/common/domain/request/UserRequest.class new file mode 100644 index 0000000000000000000000000000000000000000..d6d760dc928c4beb1fc52e6fcd5f6398465e1803 GIT binary patch literal 2039 zcma)7U2hvz5Ixts>s>pW#&r{?hCl;NsXyxig;F~S&?aqD;u0lL37*(EtJuZyhV=&i z3qOFoRNdMEh8@nKXW#_VOp={bRRf= zNA|H%589o+LS?n(?bJ5E>$o*4J6^B0n3r?eo6tuSYt;m_!kkvHC+i zQ-#xTiVqYrO*d$JTWgN*?6`sJvz*CO(fK5EI$fHMo&I$5q1y@?#V-|{6jCA}$?yqRse5;IzJOI=dkYY+T5{)pB~v0*5rWoqjt)s1=GU zthTnk(p)AS>Pg@2?{xzzgF?n!l-CNpsA2TYcY2**QQ`6kT1FGaN~9~j;qCb?_jX5m zmU)5qEAlFAWO2^MB+e<6UcP5Gs(91J6mmA+5N$@ZE2t?MY!f*jXr?rM~Z(kT55^Y8Fi~mIf*}3Bju}Iw2Js2fxMP<>dO0{W$s_oiDGbVbrZKNCge1;n8f{W&Wyrdd{GueL@UVFa`mG82z}3VXVioj&HionlfmGUy=IaG1A$wL)da*itKo# zo1&lLa)^nO;}i`e7!UW(tC>&z=mHYqjAiPB?a!jURf9^upwSm9jFMxnzlO~iA> mq7Fr0lkjh({wnU+#HfdF`C?$oySq0zNrfaj1CNXLJSvBQuVUGcw~}@UN)&oZU^bO)2dMr|G@to_p_k&dYP|{`v3EzW^A= zMhyK}h(g7p3`=3W6XU!r!@DuOhwCEUkl}q9K9KVt%J5MbAIH#zg$QoSY{;+@K|$u# z2uztj31cmcq5{pX*hWc#GNV8(Sv6ZhJb%mh%*fPjtCY!8lT{F1wARXoU9Xx7`Z~6A zOH0`)o(biwvSm*x2&RUYY3yQUm8ZM&R@uB-Utck+OU6oxn%;b+V3d}PswHbrsoF)W zrr>zKP+8Bc+_B6Ih4o4~Q#EV#lAW0|*31P*BvSuY3!iT^t)zCp-t_ihYNjKOtau%t zHSJ<$b!xj1=~H6cN!NxP*X>H%GX>|j9nB8!?h+$f&Mi&2?v#x3TISlyEwf-} zr?#2%kaxG)3^QU^+_Wh;yUp6p&b3l~=l^lcwU^tg-$JLznrSb&+$5pM&M*~1M=~fi z+*vyXhqftOIjFTPsi_$$TbLTx)PYo|CD}jRsclz0WPVyVN~A@fcgA0^;TvqEics9? zApaIStzs9=Dtk$&e!^|Fn4|L+r}mJZw4|nM(KZUVXN?V~dH6E0nVGPHQJxm(C>D)c z(d|Fx?lQ6G7B0_D(>cnas?$dlPI$eqc@B^)i+0s2)7ZggHk}w;Es>|5PKWK`x*DsJ zSv1+_CF=|6bsC5*R_fJ)dC8KOpu62WXCz@dj^db(!${~jg69+r?fM$XmD4)X7zxAD zaSOL~Oe3q~1-z)^EY9hekmV)3MT)em;zo3#Zk1N0COvIWQchAPb(F9!Lz#3LO-i{O z9jmJh>zKt=J{E0zZpSijj;bSW1%o>T((KJ}tzIaYHPY(b(`dC5FBY@@46q@5)!UL5Zf`N?y-GWu#}Ge6{a~UI;2-PAPgy`pN!@@W4??HR zGILB)GtF7ytfe17`H4c1Mt~Tvfu>ZNdY+P8;vpQz3C<_CXijk@CQtKjl5(B1%DG!i zrjOl6AU$>;!M5>UXZtY61fukAKm8MsBro!s2O^S0Ai&*D3_%CD-*HV&39!32$eSt3 zQ3)D63@_Ya0+5@YXLF1|AYzZ8UOzhe0NRgSxeT z1sx^m7|wX0*EkDk^yuhAgdQT?iJA0aMq8MYn5~$i*%32C_t|nBlf-(1u1Vgs^gRTA zpx}?OXO9(S^U{oKu1S)62zI*Pw{Ll_~}5LATQ$;8W-P}2_{?)rAM}q@Yx`4%Ls_eg(e8?I8{)Za7PH|#`Y>< z`P6x_{Y7?bygomY{vMjTIr1CS@1O-YM}CDmJDP4F;w&jdNBRHFx3bAq>?)VB33co- z_9fIm&~q31SVC=JpL1T_q*2xBQGW#EE?6r~^T=V64)t-KV$TNn6d%KD)CHND1YW14 z`r2vUOQL&T=ySn|Jsghwjs0O-^{$Fn(gQnGhpAf7D_#gktSef9NC(ZnV+ zQ6;p;h{Q+kB9hP=&~Hu-JS%nMUh0DEp|^3FXc{t@p%h^Ir*VZz3$pzVAy0=j-%}tr z#bHUl@&a0=S!vbOBXnJVfc?GQ4a6m`26}pX nT{+gkf!>3Z8|dq7KR2)L`<(KEXlGM2;#|NZ={3wbtNH%`Ddljg literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/result/Result.class b/bwie-common/target/classes/com/bwie/common/result/Result.class new file mode 100644 index 0000000000000000000000000000000000000000..39ab3dfd2df09fa0efb52e5b4f2651548baaceb0 GIT binary patch literal 4886 zcmb_gTX!2*75+w^(MZZTu@zscByFyMBU?6YOaa?*F1`>2UsBr%v_RXjJlINY$&KYa0$g$1BD?VqRefHUVpKo8z z#Q*ruAO8Yi5Wk7TM%hLshH8T3GqQd*hA-K8PS)3C__7RNk>RTe9LF`0`I-!0m*E?- z@l6??m*HC?@@=8MBh(8vUQD11*J5}{=I_ezatz;#;rl{fkKqS0|1gdSUP<6b__0v0 z+W3i$pBiW@d!@X)dc`Z1^TopD?6?8rqJh@2Vxe4d3zaMGYSpuN7x^&^*z=di#wODtVE zZavs&oAxRz#idJb$zAg*41$3(TX;>cwy_>KKGDSS&{cF$woyg^9@*NHU8@Uxv%FHN zSZV-w#~#gW;nDx>&R|b=*Jp{$>=u6PURi)kf>~WrDQ#e~NdR}RntsOJ^?ac8@V13? z;@%R0t8-gio(Z~pCj+I?k$fRv8D$6PIeCROU0KPq7VKrOqN1mn*vJpCJC+CSJ5LSD!RO$gw#PAy#|gqw*8!bk;((X+eCz&_g=mJ z&p*HR-b=6CdHHn*6PR?+C&%^1oj*N)=k{#__cv-&m(`DmgHL11!DU==@F*U0@ELs8 zK?c1J`Z3_(qj=E43clcA2D1(>;SmR)m*pJh9po`$(*MFDt=kHQ-C- z?)th{STc}lmd~Lusn}|78J9z>hkI;qQl~?FFZul;UD-m#TlPvc(q6xZW-__*`fG!= zF)=qcJBOqE$Ti|6`7?t?`GP$9X{6*I+w-} z_Z=lAiNn?KCeA6YM)+$P+=e!D+BY+*&CGI+a4#-qdbM|9EB(HeE+wR`P+YQ=mh1N7 z+zaf*Bfh=<4V!0p;A~S!tYowaBoBokIg4}J*HapjIH9!C`dB1{$ipE-l!qJlulsV| z_oW%kbzi~&426^?GywH$3n#etT`-?TGnlPrFpvKKU>?(O4eQX_#(}_M7_9Rli?(zi zMhh$h6&yw0`>A(eKl(OeGns=m#53s{5}Cdl_GBc{6_Q<$ z@A^r^@F}$70+Pt08y9^K(n^U&R?19#k0nkcc(@g+fsv(e%}ZmUWQ$=L2jgOLL>WjYDD$> zdNKw^AC= zYV(&Q+F45Nuge}6$r-MaLuTgh*po8fMf*)SnUq<>{y@BA$f8KcP&8$UO!QqOZ=yA2 zrJ{k5DOqZUx~59{3(BF5cvbPZ|EhK3Nj$+qh;TJd`a!>7M&Xh&vA~yek(5P54(S&A4S5B{Tq92e9?IyT{f2aFJ`=t`xF`9fbVfe%apGn1ski_AVp*a zuf}3i*HCE})GkHoygbhJvPXKLv5`5i;1Y@|%R6O)K=>riu~2bF$}bPGGuRlng`ID@B1MbN=4TBX}9 zteI}CkupOU7}ux@mKR}uKtN4mX&8i$e>eGn$Li~dFgjrc0)dRVnME<)pPzyng>`x% zU2^apbg{R0C-18vB|y}0Ajvi_bdpo@kfJ+kxIg&-=^73<_L*=~9n`n3heJ5h1!5>} u^l16Ake~f;;7AQe{{TMt$9%$)5>+2h2|pF~^EK}#rP|awp5}f8rT+r2x1c!y literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/utils/IpUtils.class b/bwie-common/target/classes/com/bwie/common/utils/IpUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..54bdfc68c107fcab16db3b2b5892c49a36221fee GIT binary patch literal 6702 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 PZcdp>;G2XpaLa!IjjXB0 literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/utils/JwtUtils.class b/bwie-common/target/classes/com/bwie/common/utils/JwtUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..60725d3b49b25c6b3b6f7edd2fdd05bc3b9b5ade GIT binary patch literal 2875 zcma)7?N{4$6n@fDlC}Z1f|Vgm+>k+G>tHfXR-#o{^$>Z_)B?0=9p79~c@AbLQz4y5{|NQsIp8(!NBZgso9K$Dg7{>}SQLN(A zDBi>)G5t)u9*fvOWKi^u4ra4z2(@3SzP4ql3^OovV`!|^sa=Sj8)Jj3}g*c->g@2 zy1lLCDqKlqt-My*)oeq|{ly;Vz^F+W&*rUaI@d7tGzV47OxGQwQcJHloE14_2CIzBvOw$OTIsT03x@ z=bgo6^1QO4I|o+bnPzKM-O+7Yk8T-7Q*-Jzqp;RS{F1nV?!^u@yLJ|lSs%DLIn!Cg zN|$Pu+0b*Yzv+w{5Ymhlb!Vrh+fVdk36p_$19Cmw9gz0B7z^Yc_3f_}m|B0l$%si% zINQ}Kbq<%iVm8Iz7h<55a9Ow)wsNIb@%s6a(6{Ai`7#CM>XB-f@hvGVqC=J>C(qQSlZ=WqhaNdpwu%LWPE$jJ%2hbQRYyqGBIK6$da>lu(vYQBj4d z!os19mnv*f9?9UishGuW=BB+e@|Ib1G}CdbBXc$(={nQ-oDQq(4GR)vcWyAgQFmlA zx+)yhC9uwqU`QCza`}S3Upz2ML5dsZN>l%!;>9sg497_`CG2raPXfCERYSEjESjR|$NhefPXh zA6AN%Z8!&2Hj2kv3v=@lCOWV>PZLwAvDWu^Rl;_sdIPQmDY>0jOE_fab z7dg0S$ZlI;WXFOd%hp7tkn6PoJKiRx&bSJ;?D1}kNC&ovt^h>ucWHRJS#L1q)0c!0 z-F~nWS%`+MVZ|!2q+4A-FXu21w6!yTuQ^iZ#}&u&qK0?)7aZnam4Xt5%Tb(T);Hf{ zoTd3?-5`?s9nvoxgm9hjUU#t{Z*#1A2QW@B5atGMBJ5t?=QqT)(G!GHrwE7e3O%n7 zIYn<6r;sINXMW~>*u{)_XGvnr#ZCJ23B1cQBb-h0E#Vetp3PBAV2ZP8J`pOFpA?@E zW=Mlggd^d@D!;;qkrODc^=JsB6AO_;T*6;a1&LI8k+nZ&>eu3W%*KHWtGb4@;}K4b(kN#7+o--9#oIUihn1#>yohU>-uK@&|6>71sB zMHKU0Xiop;zX8(qg82SnF>~DCZUD72eD7)a}-YqxjypAO9yOLJWkN5Eb zQ9tCWiqOBfD&s*$#-b|?3RWcaJ|6{3=f!#56$h&^k^B`AQJws&@a_3C$k|7ng|PfT DQ)-Cd literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/utils/StringUtils.class b/bwie-common/target/classes/com/bwie/common/utils/StringUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..c7aabd6db2094ce15e415a7039a9bee117548f48 GIT binary patch literal 1808 zcma)7QF9Yj6#j0q$u`N-25h4Rq*TB*N!x{@VofcS3W_G77-dEuoY{u8Sx9!{?ndON zz#rhHFFq(#XBgj{@o)Gq7)JfhX4@>a4rXTWo_p>&=R4;+=WhP^>z8K$-ofX2OyIpd z#&M~D_pu_<2eQ-(SjC40tl_dOS9Gk4`l^nNJPP7cz(+c+>A0?tU3FY1TvJHTmv1X* z8{QpTVWRH1c5~3%vi&cttu8gk>R#LG-nM*4_OVh6J5Hc*rr!2?=GJ}3HYxNx*BpdS zH!xeF@3`Avid-X-6Ep|iuENxO{jT-BWp*uh+q}7T*KUWk^4B!*B3ZEhb*^xv6;cv4a39eh2U)A>_*h}()d?Ny9F^q+4Jk}v?mwd> zA;l*>@Y#u&5Y|wxd;Yc=^krBh{Cm+bnd@%2X@#8#!uH8{zU2-4wtd}^=`0TG zh(>KmhQ~k=M-9A=H*|br;7#0+G;e*9SxRjpeZLevB?;tp&LdsVB$Q>`JXu% zxFzPZue=NFh=jEI7RMmIF+p@2E+(%GyB%c|P3R5w-wHi)G&xd^20OaGB=kg*`i+j| zx9sl*w%fL&$r~TJ%4{i&Is0Kt^X0^t?7@*|y<-JU`v+QUZuFYmvrOJ!g-kTonB|vd zg5M_~19FO^T#s>Q@~uQ$c>?t#g%n=nnvIkOCMg?315BaBT~3-uD{;OYJLfCEL)RWd zOYcydPDGeWM95yGScMOkijU zjF|*R2{Sm&2(x^Kd5h*P?gTZ9bTK`GouTRspA^m#{v6(p;eVn=qke_(+9TwvPmy_u zOnRrfi>yLpVHdijbDYAM!f(hm7ipTOjkfdn?>{3Jh8doM&OjBCUnS{_l$NlJ^Zc7w z#wA>gGCxh&3i6o4JSD=SOi6w#)K|&Hs2b5MP$SihBQvgEAgg2X=dKbEA2b8xJU5U~ZgH*0s$1 R_fh9~c!7^%X%g(+e*i$qj(Gq8 literal 0 HcmV?d00001 diff --git a/bwie-common/target/classes/com/bwie/common/utils/TelSmsUtils.class b/bwie-common/target/classes/com/bwie/common/utils/TelSmsUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..8b3071dfb4be27a9fab42fe4a0389c5bd7b366f3 GIT binary patch literal 3799 zcmbVO>t7Vt8GeQZW?4rdD`329GzR3dT$6~DR1s5PL3D}6w8jp*0}R>SS!V_lVr?O9 zQlqAtrin?aHTGtkHc{c%6@zWR_uohtlTY~%+CFDy7Y6~O{VmL#dCz;^%k$pOzy9;Z zKL9l2W&pJ~CgX7Kg`VobcmSL3}NMal9_$WB@3O!xFZH4Rbi8rqt+&79wR>PY#QB z^Jpl{FU{N~VTBrvYL?Zbjd#T)1jD212{jZ~$r!Os@{^@xo+YA1P0f~|*jgeLS8c7s zh-ni1S~8Y0^dxuumOh;9Qxl{XM&r6BXxqY3BN0;L`uJEf6dSh^mYUKV>l>b_Z)t1^ zbvRs9Q`n{_b-SI$S5_U8knhSa3F}F%Z!9sWnFH!zoN|L?V z^CQV|Pf<|C!q|?da`A0hXnLE+>ujDbrnFPw%80E-U!nI-p2#>a;{uCS#=ERK38lT7 zJz~WARg)=eYbL`}6k!Id_Lxa868}f29@4ZW1L|*M&A3HSWZ9}|59p$jq;4it#27Q9 z+CE*BK&dC6>qNyWcosXE{+>cxE-@9rc;p zb$#;gCzIdY`FJjUdT#Q1=B+m~pWmMQ@H#19PFy&7>dOg6@;3^u;1dN;;~52eaaF>q zdwp!aDkL0r#kwjociza%%zSg_+}zt|=PrGbIe*I|ljJO~qj2Gldy@9iAkU71-{N=7 zECs*EAJ}~bMh|R7GXALG8vZ2V@$kUzt`_^i;n;2?7H#P4ZipF?5#w;PgpE6U2Z#3V z>2B&AIv#ym?`s+F-}hqu>&Kg3>NKscE_RkkZ=}Ayp13xNAeQGMSLb%zs8vTp*t73` zG@JSR`!1vs)@4p#&Rjd2Iro9<=iH@tGH0%4?o5y<(EPKEPZj(He^u}tzAItv{rsmd zWX@cn_a{#&_)H{U_5B=<#JjWa&0Q9JUrk(`yO?$k^hRWSuHZUuFqQ8GYX9J<7G)3e zklfm489Q9L#>Fgol>E!}BsM#Hw|Cm@T%x=e41?urh>a!a6_%Tem6hJMx9n*#-qtR)4+mxy(x>{pgO3AhE&TQwKyreBm4Vu zAy8~XeCFWa?gh%_S$ZOsdUQEWRl=rkxr1=h>&YQQ!c$%)i<^2*EwR%V!2FP~JQ|eq z6RAKmO~aJX^HA1#hEUet#S{^Jd04ae7_o5)t>1F}xIf0OVd5+Uz4bxZ_NqyhcRWrs zDs%69oXcJ}I^wEjF^~_E;@%R=y~nb#5q@|}b==~uP{L!;G1KI|PmHc!Jsua=GT!Jo z!b(!SP}Tc{IPY3^nxoc3wnbt{d)GDp!`9khQW}#5)${lGGPoX4@ z(&{uGtC>MCja7Y8YyK3`ltvLBa8-KKzi~vw&!66Pdzt-%4w_?v?{{wV0sPy-kLNR>at)pc{XY@ zsBv~~(!&sg*hwUP4wCICq0$nXQjV3xFo@Ost>*i2d3gDMD`Qf^ literal 0 HcmV?d00001 diff --git a/bwie-gateway/pom.xml b/bwie-gateway/pom.xml new file mode 100644 index 0000000..734c665 --- /dev/null +++ b/bwie-gateway/pom.xml @@ -0,0 +1,40 @@ + + + + bwie-tenement + com.bwie + 1.0-SNAPSHOT + + 4.0.0 + + bwie-gateway + + + + + + com.bwie + bwie-common + + + + + org.springframework.cloud + spring-cloud-starter-gateway + + + + com.alibaba.cloud + spring-cloud-alibaba-sentinel-gateway + + + + com.alibaba.csp + sentinel-spring-cloud-gateway-adapter + + + + + \ No newline at end of file diff --git a/bwie-gateway/src/main/java/com/bwie/gateway/GateWayApplication.java b/bwie-gateway/src/main/java/com/bwie/gateway/GateWayApplication.java new file mode 100644 index 0000000..3240d3f --- /dev/null +++ b/bwie-gateway/src/main/java/com/bwie/gateway/GateWayApplication.java @@ -0,0 +1,14 @@ +package com.bwie.gateway; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class GateWayApplication { + + + public static void main(String[] args) { + SpringApplication.run(GateWayApplication.class); + } + +} diff --git a/bwie-gateway/src/main/java/com/bwie/gateway/config/IgnoreWhiteConfig.java b/bwie-gateway/src/main/java/com/bwie/gateway/config/IgnoreWhiteConfig.java new file mode 100644 index 0000000..5705d6f --- /dev/null +++ b/bwie-gateway/src/main/java/com/bwie/gateway/config/IgnoreWhiteConfig.java @@ -0,0 +1,32 @@ +package com.bwie.gateway.config; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; +import lombok.extern.log4j.Log4j2; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.context.annotation.Configuration; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: 放行白名单配置 + * @author DongZl + */ +@Configuration +@RefreshScope +@ConfigurationProperties(prefix = "ignore") +@Data +@Log4j2 +public class IgnoreWhiteConfig { + /** + * 放行白名单配置,网关不校验此处的白名单 + */ + private List whites = new ArrayList<>(); + + public void setWhites(List whites) { + log.info("加载网关路径白名单:{}", JSONObject.toJSONString(whites)); + this.whites = whites; + } +} diff --git a/bwie-gateway/src/main/java/com/bwie/gateway/filters/AuthFilter.java b/bwie-gateway/src/main/java/com/bwie/gateway/filters/AuthFilter.java new file mode 100644 index 0000000..311ace7 --- /dev/null +++ b/bwie-gateway/src/main/java/com/bwie/gateway/filters/AuthFilter.java @@ -0,0 +1,86 @@ +package com.bwie.gateway.filters; + +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 io.jsonwebtoken.Claims; +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.StringRedisTemplate; +import org.springframework.http.server.reactive.ServerHttpRequest; +import org.springframework.stereotype.Component; +import org.springframework.web.server.ServerWebExchange; +import reactor.core.publisher.Mono; + +import java.util.List; +import java.util.concurrent.TimeUnit; + +@Component +public class AuthFilter implements GlobalFilter, Ordered { + + @Autowired + private IgnoreWhiteConfig ignoreWhiteConfig; + + @Autowired + private StringRedisTemplate redisTemplate; + + + @Override + public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { + + //1..获取白名单 + List whites = ignoreWhiteConfig.getWhites(); + + + //获取用户请求路径 + ServerHttpRequest request = exchange.getRequest(); + String path = request.getURI().getPath(); + System.out.println("路径>>>>>>>>>>>"+path); + + //放行 + if(StringUtils.matches(path,whites)){ + return chain.filter(exchange); + } + + //获取token + String token = request.getHeaders().getFirst("token"); + + if(token==null){ + return GatewayUtils.errorResponse(exchange,"token必须携带"); + } + + Claims claims = null; + //token合法性 + try { + claims = JwtUtils.parseToken(token); + } catch (Exception e) { + return GatewayUtils.errorResponse(exchange,"token不合法"); + } + + //判断jwt的时效性 + Object userId = claims.get("user_id"); + +// redisTemplate.opsForValue().get() + if(!redisTemplate.hasKey("token:"+userId)){ + return GatewayUtils.errorResponse(exchange,"token已过期"); + } + + Long expire = redisTemplate.getExpire("token:" + userId); +// if(expire httpHeaders.remove(key)).build(); + log.info("删除请求头参数 - 键:[{}]",key); + } + + /** + * 错误结果响应 + * @param exchange 响应上下文 + * @param msg 响应消息 + * @return + */ + public static Mono errorResponse(ServerWebExchange exchange, String msg, HttpStatus httpStatus) { + ServerHttpResponse response = exchange.getResponse(); + //设置HTTP响应头状态 + response.setStatusCode(httpStatus); + //设置HTTP响应头文本格式 + response.getHeaders().add(HttpHeaders.CONTENT_TYPE, "application/json"); + //定义响应内容 + Result result = Result.error(msg); + String resultJson = JSONObject.toJSONString(result); + log.error("[鉴权异常处理]请求路径:[{}],异常信息:[{}],响应结果:[{}]", exchange.getRequest().getPath(), msg, resultJson); + DataBuffer dataBuffer = response.bufferFactory().wrap(resultJson.getBytes()); + //进行响应 + return response.writeWith(Mono.just(dataBuffer)); + } + + /** + * 错误结果响应 + * @param exchange 响应上下文 + * @param msg 响应消息 + * @return + */ + public static Mono errorResponse(ServerWebExchange exchange, String msg) { + ServerHttpResponse response = exchange.getResponse(); + //设置HTTP响应头状态 + response.setStatusCode(HttpStatus.OK); + //设置HTTP响应头文本格式 + response.getHeaders().add(HttpHeaders.CONTENT_TYPE, "application/json"); + //定义响应内容 + Result result = Result.error(msg); + String resultJson = JSONObject.toJSONString(result); + log.error("[鉴权异常处理]请求路径:[{}],异常信息:[{}],响应结果:[{}]", exchange.getRequest().getPath(), msg, resultJson); + DataBuffer dataBuffer = response.bufferFactory().wrap(resultJson.getBytes()); + //进行响应 + return response.writeWith(Mono.just(dataBuffer)); + } + + +} diff --git a/bwie-gateway/src/main/resources/bootstrap.yml b/bwie-gateway/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..b83128b --- /dev/null +++ b/bwie-gateway/src/main/resources/bootstrap.yml @@ -0,0 +1,29 @@ +# Tomcat +server: + port: 18080 +# Spring +spring: + application: + # 应用名称 + name: bwie-gateway + profiles: + # 环境配置 + active: dev + main: + # 允许使用循环引用 + allow-circular-references: true + # 允许定义相同的bean对象 去覆盖原有的 + allow-bean-definition-overriding: true + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 124.221.114.13:8848 + config: + # 配置中心地址 + server-addr: 124.221.114.13:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} diff --git a/bwie-gateway/target/classes/bootstrap.yml b/bwie-gateway/target/classes/bootstrap.yml new file mode 100644 index 0000000..b83128b --- /dev/null +++ b/bwie-gateway/target/classes/bootstrap.yml @@ -0,0 +1,29 @@ +# Tomcat +server: + port: 18080 +# Spring +spring: + application: + # 应用名称 + name: bwie-gateway + profiles: + # 环境配置 + active: dev + main: + # 允许使用循环引用 + allow-circular-references: true + # 允许定义相同的bean对象 去覆盖原有的 + allow-bean-definition-overriding: true + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 124.221.114.13:8848 + config: + # 配置中心地址 + server-addr: 124.221.114.13:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} diff --git a/bwie-gateway/target/classes/com/bwie/gateway/GateWayApplication.class b/bwie-gateway/target/classes/com/bwie/gateway/GateWayApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..16a49c413547cf9e669e67d8bc4cfb2295d15f95 GIT binary patch literal 767 zcma)4%Wl*#6g{3-Xl9`8^hJ3JA*5*+c*6z_s??5DHsK)#O&6@3)J@$c_Q-J<`dO@~ zkl+LQQB|+gN(2}rBE{Ff$3FKQ`(9jr{|Vp)9*1aSJ-|kQyCF7lFTj0<&MT#r+hJ%9 zwk8a%kvWtMi;>duZJEc?eiU&=nSNvvkxhhEetnZ{xnor@Jc|;O^LVBtPlb~+amHU$ zJP>EQ(`lv>;gr!sBF}}=4C{kW(TVshcqVkp$IdF94y)qArbM?g2WD7$Bi*q%d@roX zrIVI6hGSFOMD8muaO3Zi&wUk!%@3t^Dwh*gDAK;GwQ-dsqS%RyO?ff(8jd{k%-B;N z8{@brok@&7QfX-=A6HxU2&jANp@V?o>3{eq2Y;Fl@Sul>c=Q|eEGIQwR;_9q9}%Qu5xRxWpe7|7sp38j{PgwN>JLvLp(u)+Q@$mQ1>99@fNK( zMMkl`{SEAE1uxLpsgeOgn)j|Zpi47g0k?67Nc`cK6&cX&H<~}tJV)!`7ez=QK}6B3 c(R8thCCV?;-=>D8&_KT$SFlRaS6&0I06G1~RR910 literal 0 HcmV?d00001 diff --git a/bwie-gateway/target/classes/com/bwie/gateway/config/IgnoreWhiteConfig.class b/bwie-gateway/target/classes/com/bwie/gateway/config/IgnoreWhiteConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..a84d0200dec19a49eeccf18abe06212fb4622641 GIT binary patch literal 2590 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 literal 0 HcmV?d00001 diff --git a/bwie-gateway/target/classes/com/bwie/gateway/utils/GatewayUtils.class b/bwie-gateway/target/classes/com/bwie/gateway/utils/GatewayUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..ab7f2c5419d418b2c8c389eaf221511ccbdf6e69 GIT binary patch literal 6222 zcmd5=Yj_mZ8GdK8o7rpz2~lXHfFVT4g*YhKYJ!m_TqRs2O2l~S>}HY-+3c({vx(H& z3Q~$z3oY0ds;DitwHFbkkOaiuZLPiE@0W)J`Q?xP@6-3p%r29#S$KHxc?wT<=A84L z@4Vmpo$ou}nYaEsatgp={5ytP+#kaO_;3m4LyIC_iUhi%(8aS`4EM#j=e>{c~JW+~I;mH`D!ly;w?h@?5XTUFo&%5)H0ZqIGqx z(zPz#lJR*7a!bZYvLQiPol5CeYf`gqo%;G}T;O)vBH(UI>(>WOt55B9oV04|)_`uQ zmaZinV?bBi-S#RDZPXvk=(bbsYi(-Vq77(jQlri7j?fhBSs&k`C!8i>a&dpgAx;U) zF2|}QvQOVC_&RTS36TLUnQ_THH|Qgg5OoI$Rl<~ZM@#gr)zUuCWovb(*X-J$2`(Jn zB1ej)_nQN{N2i3%?-6B!peed#nbt<#PMay4=y&B`Yfz78z2iBhLys?iDA7v?=t1hU z&JcSuuZx8iduljAq zNlff4Z$+`0F9sNwwsM5rI{B1B+tuS!#2{5=l8%IH&jk`As^3g;pNkQdp%h#{SaP?t8tRO7Ccx-2(=x@L?I>8v81k?rG zVaze)OGQNZ9TMi{-C9CK6|tI~$e37?NczV~tli9534Mhj4v%TUgW!6R`xGodgN!dI z*pCAW>QFCX{@C#oqfb2l&f()@N4Ae1Iy$<0``FX3oZa{G>7l1acOO1|;>FWLBWGS3 zk?}Jcs8cl$}ew9w`c5z?UT4kXO^#u05kq zJXhIJNf3=fXXS!Qs&!u#d>MxbdUV(GXZIhvAZRY#Vw#TaSX$c4=JwQLyjX^>@bT3$ zd`-bi__~5`;F}7*g_k8%=G7bkBM=;vaah4CI3nX!1+U?#f^XxPgz9|BV4}x(inN+3 zM^8BocQX13QA?+jMnZE8rk*X#F$#`jNXD>&5uA{5Qo-vuCEliNp! zhDHzVIJ0NxeI5nx96vmIYKP0vyCIEN z*Txg7*Dc%J(rjV`HFcgpqjvI)anW=#b%%{qw<+P4i?SquB4=9+f50CnP!t%Pk3UJM z&7Zj^28&lKYKerN=1F}+9!NfO!slvtCdK-cQN#eVGyQI3b#RMt35)V>yn>VI!E1$p zmNep8TvNL>+Y!lKy}fCQ#EJ~wV zwmRZg8?LGCY>}`yA4eC`B$7P~2jTwCmi*B?sS2XFrob(Vs<&k9i774T@&YrdxMa{W z9KFL3UTgM(Dtj}x9lrJ3>W1u{?ShxNx%rsMrQz)TEVO=&dt(x}U)DK6$LBzwORjB( zEv`+j>d6k%wOUH!#}HaWXL%n+=%%1z_sazF3xJbp5ua0J{8_;W}1B&`ugo41YdzyIp!hhg1qZz)3(pOf4!-7AEtzcR79lnNV!b{Itnv0pm|a*7bNDT;mY>)pTrI8+ ze3SXk8wG!_XG`T%;xkfr9MTcKgxCcXyPa2IA>S2G05{-9wo0%FAEcC+JVLoJpUdip z5ZaF`UPV!Pco>lojx2Z+Q$@45ei(8Q+s6=HS63f?9VMHK8rp{uD?*15D6L;G3?&S) zc9FYw9b$Z+NuaYZ4YN^>N`AGQ!~a$MUrmFqBZ7Ho<(t4)=V8FjxP>jEK_i-6%*(I@ zw-W1oYHDU*5pLsn7@_j1Sjx94MVthRgMz}e523|3Z5xF{>{}QxZHi}FUHu5I0ERI& z#Gf+Bvtt?!EvKQJr#}aKp$}U?EP_<-A}k5z z5SGy3WgHR2{|6E31sD=1HZ9P@nf09H{Z#PPdvJJ!&UD*C1kYw3?#d;sex z7oi>n>#>2<-ND&n=Xp{aDYcY6^w@GfR`PEZ|JwN%!kzS7EAH~SIZHKyd7qoL3tq)_ z9y=syJUi + \ No newline at end of file diff --git a/bwie-module/bwie-floor/pom.xml b/bwie-module/bwie-floor/pom.xml new file mode 100644 index 0000000..9290b88 --- /dev/null +++ b/bwie-module/bwie-floor/pom.xml @@ -0,0 +1,64 @@ + + + + bwie-module + com.bwie + 1.0-SNAPSHOT + + 4.0.0 + + bwie-floor + + + + + + com.bwie + bwie-common + + + + org.springframework.boot + spring-boot-starter-web + + + + com.alibaba + druid-spring-boot-starter + 1.2.8 + + + + mysql + mysql-connector-java + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 2.2.2 + + + + com.github.pagehelper + pagehelper-spring-boot-starter + 1.4.1 + + + + org.springframework.boot + spring-boot-starter-test + test + + + com.github.tobato + fastdfs-client + 1.26.5 + + + + + + \ No newline at end of file diff --git a/bwie-module/bwie-floor/src/main/java/com/bwie/floor/FloorApplication.java b/bwie-module/bwie-floor/src/main/java/com/bwie/floor/FloorApplication.java new file mode 100644 index 0000000..2361afe --- /dev/null +++ b/bwie-module/bwie-floor/src/main/java/com/bwie/floor/FloorApplication.java @@ -0,0 +1,13 @@ +package com.bwie.floor; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class FloorApplication { + + public static void main(String[] args) { + SpringApplication.run(FloorApplication.class); + } + +} diff --git a/bwie-module/bwie-floor/src/main/java/com/bwie/floor/controller/FloorController.java b/bwie-module/bwie-floor/src/main/java/com/bwie/floor/controller/FloorController.java new file mode 100644 index 0000000..07b8b93 --- /dev/null +++ b/bwie-module/bwie-floor/src/main/java/com/bwie/floor/controller/FloorController.java @@ -0,0 +1,278 @@ +package com.bwie.floor.controller; + +import com.alibaba.fastjson.JSON; +import com.bwie.common.domain.Client; +import com.bwie.common.domain.Floor; +import com.bwie.common.domain.Room; +import com.bwie.common.domain.Space; +import com.bwie.common.domain.request.Count; +import com.bwie.common.result.Result; +import com.bwie.floor.service.FloorService; +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.text.ParseException; +import java.util.List; + +@RestController +@RequestMapping("/floor") +@Log4j2 +public class FloorController { + + @Autowired + private HttpServletRequest request; + + + @Autowired + private FloorService floorService; + + + @PostMapping("/upSpace") + public Result upSpace(@RequestBody Space space) { + + log.info("功能描述: 修改车位,请求URI: {},请求方式: {},请求参数: {}", + request.getServletPath(), request.getMethod(), space); + + Result result= floorService.upSpace(space); + + log.info("功能描述: 修改车位,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(result)); + + return result; + } + + + @PostMapping("/addSpace") + public Result addSpace(@RequestBody Space space) throws ParseException { + + + log.info("功能描述: 添加车位,请求URI: {},请求方式: {},请求参数: {}", + request.getServletPath(), request.getMethod(), space); + + Result result = floorService.addSpace(space); + + log.info("功能描述: 添加车位,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(result)); + + return result; + } + + + //修改房间 + @PostMapping("/upRoom") + public Result upRoom(@RequestBody Room room) { + + + log.info("功能描述: 修改房间,请求URI: {},请求方式: {},请求参数: {}", + request.getServletPath(), request.getMethod(), room); + + Result result = floorService.upRoom(room); + + log.info("功能描述: 修改房间,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(result)); + + return result; + } + + + //添加房间 + @PostMapping("/addRoom") + public Result addRoom(@RequestBody Room room) { + + log.info("功能描述: 添加房间,请求URI: {},请求方式: {},请求参数: {}", + request.getServletPath(), request.getMethod(), room); + + Result result = floorService.addRoom(room); + + log.info("功能描述: 添加房间,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(result)); + + return result; + } + + + //查询所有住户 + @PostMapping("/findByclient") + public Result findByclient() { + + log.info("功能描述: 查询所有住户,请求URI: {},请求方式: {}", + request.getServletPath(), request.getMethod()); + + List list = floorService.findByclient(); + + Result> success = Result.success(list); + + log.info("功能描述: 查询所有住户,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(success)); + + return success; + } + + @PostMapping("/findByFloorId/{floorId}") + public Result findByFloorId(@PathVariable Integer floorId) { + + log.info("功能描述: 根据Id查询,请求URI: {},请求方式: {},请求参数: {}", + request.getServletPath(), request.getMethod(), floorId); + + List list = floorService.findByFloorId(floorId); + + Result> success = Result.success(list); + + log.info("功能描述: 根据Id查询,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(success)); + + return success; + + } + + + @PostMapping("/floorFindList") + public Result floorFindList() { + + log.info("功能描述: 查询可用楼,请求URI: {},请求方式: {}", + request.getServletPath(), request.getMethod()); + + List floorFindList = floorService.floorFindList(); + + Result> success = Result.success(floorFindList); + log.info("功能描述: 查询可用楼,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(success)); + + return success; + } + + + //修改住户 + @PostMapping("/upFloor") + public Result upFloor(@RequestBody Client client) { + + + log.info("功能描述: 修改住户,请求URI: {},请求方式: {},请求参数: {}", + request.getServletPath(), request.getMethod(), client); + + Result result = floorService.upFloor(client); + + log.info("功能描述: 修改住户,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(result)); + + return result; + } + + + //添加住户 + @PostMapping("/addclient") + public Result addclient(@RequestBody Client client) { + + log.info("功能描述: 添加住户,请求URI: {},请求方式: {},请求参数: {}", + request.getServletPath(), request.getMethod(), client); + Result result = floorService.addclient(client); + + log.info("功能描述: 添加住户,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(result)); + + return result; + } + + + //删除楼层 + @PostMapping("/floorDel/{floorId}") + public Result floorDel(@PathVariable Integer floorId) { + log.info("功能描述: 删除楼层,请求URI: {},请求方式: {},请求参数: {}", + request.getServletPath(), request.getMethod(), floorId); + + Result result = floorService.floorDel(floorId); + + log.info("功能描述: 删除楼层,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(result)); + + return result; + } + + + //添加楼层 + @PostMapping("/addFloor") + public Result addFloor(@RequestBody Floor floor) { + + log.info("功能描述: 发送短信验证码,请求URI: {},请求方式: {},请求参数: {}", + request.getServletPath(), request.getMethod(), floor); + + Result result = floorService.addFloor(floor); + + + log.info("功能描述: 发送短信验证码,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(result)); + + return result; + } + + + @PostMapping("/foolList") + public Result foolList() { + + log.info("功能描述: 楼列表,请求URI: {},请求方式: {}", + request.getServletPath(), request.getMethod()); + + List list = floorService.list(); + + Result> success = Result.success(list); + + log.info("功能描述: 楼列表,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(success)); + + return success; + } + + + @PostMapping("/clientList") + public Result clientList() { + + + log.info("功能描述: 客户列表,请求URI: {},请求方式: {}", + request.getServletPath(), request.getMethod()); + List list = floorService.clientList(); + Result> success = Result.success(list); + log.info("功能描述: 客户列表,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(success)); + + return success; + } + + + @PostMapping("/roomList") + public Result roomList() { + + log.info("功能描述: 房间列表,请求URI: {},请求方式: {}", + request.getServletPath(), request.getMethod()); + + List list = floorService.roomList(); + + Result> success = Result.success(list); + + log.info("功能描述: 房间列表,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(success)); + + return success; + + } + + @PostMapping("/spaceList") + public Result SpaceList() { + + log.info("功能描述: 车位列表,请求URI: {},请求方式: {}", + request.getServletPath(), request.getMethod()); + + List list = floorService.SpaceList(); + + Result> success = Result.success(list); + + log.info("功能描述: 车位列表,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(success)); + + return success; + + } + + +} diff --git a/bwie-module/bwie-floor/src/main/java/com/bwie/floor/mapper/FloorMapper.java b/bwie-module/bwie-floor/src/main/java/com/bwie/floor/mapper/FloorMapper.java new file mode 100644 index 0000000..b726d85 --- /dev/null +++ b/bwie-module/bwie-floor/src/main/java/com/bwie/floor/mapper/FloorMapper.java @@ -0,0 +1,43 @@ +package com.bwie.floor.mapper; + +import com.bwie.common.domain.Client; +import com.bwie.common.domain.Floor; +import com.bwie.common.domain.Room; +import com.bwie.common.domain.Space; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface FloorMapper { + List list(); + + List clientList(); + + List roomList(); + + List SpaceList(); + + Integer addFloor(Floor floor); + + Integer floorDel(@Param("floorId") Integer floorId); + + Integer addclient(Client client); + + Integer upFloor(Client client); + + List floorFindList(); + + Floor findByFloorId(@Param("floorId") Integer floorId); + + List findByclient(); + + Integer addRoom(Room room); + + Integer upRoom(Room room); + + Integer addSpace(Space space); + + Integer upSpace(Space space); +} diff --git a/bwie-module/bwie-floor/src/main/java/com/bwie/floor/service/FloorService.java b/bwie-module/bwie-floor/src/main/java/com/bwie/floor/service/FloorService.java new file mode 100644 index 0000000..8b8a310 --- /dev/null +++ b/bwie-module/bwie-floor/src/main/java/com/bwie/floor/service/FloorService.java @@ -0,0 +1,43 @@ +package com.bwie.floor.service; + +import com.bwie.common.domain.Client; +import com.bwie.common.domain.Floor; +import com.bwie.common.domain.Room; +import com.bwie.common.domain.Space; +import com.bwie.common.domain.request.Count; +import com.bwie.common.result.Result; + +import java.text.ParseException; +import java.util.List; + +public interface FloorService { + List list(); + + List clientList(); + + List roomList(); + + List SpaceList(); + + Result addFloor(Floor floor); + + Result floorDel(Integer floorId); + + Result addclient(Client client); + + Result upFloor(Client client); + + List floorFindList(); + + List findByFloorId(Integer floorId); + + List findByclient(); + + Result addRoom(Room room); + + Result upRoom(Room room); + + Result addSpace(Space space) throws ParseException; + + Result upSpace(Space space); +} diff --git a/bwie-module/bwie-floor/src/main/java/com/bwie/floor/service/impl/FloorServiceImpl.java b/bwie-module/bwie-floor/src/main/java/com/bwie/floor/service/impl/FloorServiceImpl.java new file mode 100644 index 0000000..88f5877 --- /dev/null +++ b/bwie-module/bwie-floor/src/main/java/com/bwie/floor/service/impl/FloorServiceImpl.java @@ -0,0 +1,218 @@ +package com.bwie.floor.service.impl; + +import com.bwie.common.domain.Client; +import com.bwie.common.domain.Floor; +import com.bwie.common.domain.Room; +import com.bwie.common.domain.Space; +import com.bwie.common.domain.request.Count; +import com.bwie.common.result.Result; +import com.bwie.floor.mapper.FloorMapper; +import com.bwie.floor.service.FloorService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +@Service +public class FloorServiceImpl implements FloorService { + + @Autowired + private FloorMapper floorMapper; + + + @Override + public List list() { + return floorMapper.list(); + } + + @Override + public List clientList() { + return floorMapper.clientList(); + } + + @Override + public List roomList() { + return floorMapper.roomList(); + } + + @Override + public List SpaceList() { + return floorMapper.SpaceList(); + } + + @Override + public Result addFloor(Floor floor) { + + Integer addFloor= floorMapper.addFloor(floor); + + if (addFloor>0){ + + return Result.success("添加成功"); + } + + return Result.error("添加失败"); + } + + @Override + public Result floorDel(Integer floorId) { + + Integer floorDel= floorMapper.floorDel(floorId); + + if (floorDel>0){ + + return Result.success("禁用成功"); + } + + return Result.error("禁用失败"); + } + + @Override + public Result addclient(Client client) { + + + Integer addclient= floorMapper.addclient(client); + + if (addclient>0){ + + return Result.success("添加成功"); + } + + + return Result.error("添加失败"); + } + + @Override + public Result upFloor(Client client) { + + Integer upFloor= floorMapper.upFloor(client); + + if (upFloor>0){ + + + return Result.success("修改成功"); + } + + return Result.error("修改失败"); + } + + @Override + public List floorFindList() { + + return floorMapper.floorFindList(); + + + } + + @Override + public List findByFloorId(Integer floorId) { + + Floor floor= floorMapper.findByFloorId(floorId); + + Integer count = floor.getFloorCount(); + + ArrayList list = new ArrayList<>(); + for (int i = 1; i <= count; i++) { + + Count count1 = new Count(i, i); + list.add(count1); + + } + + + return list; + } + + @Override + public List findByclient() { + + return floorMapper.findByclient(); + } + + @Override + public Result addRoom(Room room) { + + Integer addRoom= floorMapper.addRoom(room); + + + if (addRoom>0){ + + return Result.success("添加成功"); + } + + + return Result.error("添加失败"); + } + + @Override + public Result upRoom(Room room) { + + Integer upRoom= floorMapper.upRoom(room); + + if (upRoom>0){ + + return Result.success("修改成功"); + } + + + return Result.error("修改失败"); + } + + @Override + public Result addSpace(Space space) throws ParseException { + + + //这行代码创建一个 Calendar 对象并将其初始化为当前日期和时间 + Calendar calendar = Calendar.getInstance(); + //这行代码用于将一个 Date 对象的值设置到 Calendar 对象中。具体来说,它执行了以下操作: + calendar.setTime(new Date()); + //这行代码的意思是将 Calendar 对象中的日期增加 2 个月。具体来说,它执行了以下操作: + //使用 Calendar 对象的 add 方法,将日期字段中的月份增加 2 个月。 + //如果当前的月份是 1 到 11 之间的任何一个月,那么它会简单地将月份加 2。 + //如果当前的月份是 12(即十二月),那么它会将年份加 1,并将月份设置为 1(即一月)。 + //举例来说,如果当前日期是 2023 年 8 月 15 日,执行了这行代码后,日期会变成 2023 年 10 月 15 日 + calendar.add(Calendar.MONTH, 2); + //这行代码将 Calendar 对象中表示的日期和时间转换为一个 Date 对象。具体来说,它执行了以下操作: + //使用 Calendar 对象的 getTime 方法,将 Calendar 对象中的日期和时间转换为一个 Date 对象。 + //这样做可以方便地将 Calendar 对象中表示的日期和时间转换为 Date 对象,以便在程序中进行日期和时间的操作,比如格式化输出或者进行其他的处理。 + Date nextMonth = calendar.getTime(); + System.out.println("One month later: " + nextMonth); + //时间格式 + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //转格式 + String format1 = format.format(nextMonth); + //转回时间类型 + Date parse = format.parse(format1); + + space.setSpaceEndTime(parse); + + + + + Integer addSpace= floorMapper.addSpace(space); + + if (addSpace>0){ + + return Result.success("添加成功"); + } + + return Result.error("添加失败"); + } + + @Override + public Result upSpace(Space space) { + + Integer upSpace = floorMapper.upSpace(space); + if (upSpace>0){ + + return Result.success("修改成功"); + + } + + return Result.error("修改失败"); + } +} diff --git a/bwie-module/bwie-floor/src/main/java/com/bwie/floor/util/FastUtil.java b/bwie-module/bwie-floor/src/main/java/com/bwie/floor/util/FastUtil.java new file mode 100644 index 0000000..f6ddea1 --- /dev/null +++ b/bwie-module/bwie-floor/src/main/java/com/bwie/floor/util/FastUtil.java @@ -0,0 +1,55 @@ +package com.bwie.floor.util; + +import org.springframework.stereotype.Component; +import com.github.tobato.fastdfs.domain.fdfs.StorePath; +import com.github.tobato.fastdfs.service.FastFileStorageClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.util.StringUtils; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; + +/** + * @BelongsProject: 0107day02 + * @BelongsPackage: com.bw.config + * @Author: zhupengfei + * @CreateTime: 2023-02-01 08:52 + */ +@Component +public class FastUtil { + private static final Logger log = LoggerFactory.getLogger(FastUtil.class); + + @Resource + private FastFileStorageClient storageClient ; + + /** + * 上传文件 + */ + public String upload(MultipartFile multipartFile) throws Exception{ + String originalFilename = multipartFile.getOriginalFilename(). + substring(multipartFile.getOriginalFilename(). + lastIndexOf(".") + 1); + StorePath storePath = this.storageClient.uploadImageAndCrtThumbImage( + multipartFile.getInputStream(), + multipartFile.getSize(),originalFilename , null); + return storePath.getFullPath() ; + } + /** + * 删除文件 + */ + public String deleteFile(String fileUrl) { + if (StringUtils.isEmpty(fileUrl)) { + log.info("fileUrl == >>文件路径为空..."); + return "文件路径不能为空"; + } + try { + StorePath storePath = StorePath.parseFromUrl(fileUrl); + storageClient.deleteFile(storePath.getGroup(), storePath.getPath()); + } catch (Exception e) { + log.error(e.getMessage()); + } + return "删除成功"; + } + +} diff --git a/bwie-module/bwie-floor/src/main/resources/bootstrap.yml b/bwie-module/bwie-floor/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..e9d7c48 --- /dev/null +++ b/bwie-module/bwie-floor/src/main/resources/bootstrap.yml @@ -0,0 +1,41 @@ +# Tomcat +server: + port: 9272 +# Spring +spring: + main: + allow-circular-references: true + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + application: + # 应用名称 + name: bwie-floor + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 124.221.114.13:8848 + config: + # 配置中心地址 + server-addr: 124.221.114.13:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} +fdfs: + so-timeout: 1500 # socket 连接时长 + connect-timeout: 600 # 连接 tracker 服务器超时时长 + # 这两个是你服务器的 IP 地址,注意 23000 端口也要打开,阿里云服务器记得配置安全组。tracker 要和 stroage 服务进行交流 + tracker-list: 124.221.114.13:22122 + web-server-url: 124.221.114.13:8888 + pool: + jmx-enabled: false + # 生成缩略图 + thumb-image: + height: 500 + width: 500 diff --git a/bwie-module/bwie-floor/src/main/resources/mapper/FloorMapper.xml b/bwie-module/bwie-floor/src/main/resources/mapper/FloorMapper.xml new file mode 100644 index 0000000..14158c9 --- /dev/null +++ b/bwie-module/bwie-floor/src/main/resources/mapper/FloorMapper.xml @@ -0,0 +1,60 @@ + + + + + INSERT INTO `wuye`.`floor` (`floor_name`, `floor_count`, `floor_start`, `floor_area`) + VALUES ( #{floorName}, #{floorCount}, 0, #{floorArea}); + + + INSERT INTO `wuye`.`client` ( `client_name`, `client_tel`, `client_type`, `client_document`, `client_document_number`, `client_sex`, `client_nation`) + VALUES ( #{clientName}, #{clientTel}, #{clientType}, #{clientDocument}, #{clientDocumentNumber}, #{clientSex}, #{clientNation}); + + + INSERT INTO `wuye`.`room` ( `room_name`, `floor_id`, `client_id`, `room_floor_count`) + VALUES ( #{roomName}, #{floorId}, #{clientId}, #{roomFloorCount}); + + + + INSERT INTO `wuye`.`space` ( `space_number`, `client_id`, `space_type`, `space_start_time`, `space_end_time`, `space_status`) + VALUES ( #{spaceNumber}, #{clientId}, #{spaceType}, now(), #{spaceEndTime}, 1); + + + UPDATE `wuye`.`floor` SET `floor_start` = 1 WHERE `floor_id` = #{floorId}; + + + UPDATE `wuye`.`client` SET `client_name` = #{clientName}, `client_tel` = #{clientTel}, `client_type` = #{clientType}, `client_document` = #{clientDocument}, `client_document_number` = #{clientDocumentNumber}, `client_sex` = #{clientSex}, `client_nation` = #{clientNation} WHERE `client_id` = #{clientId}; + + +UPDATE `wuye`.`room` SET `room_name` = #{roomName}, `floor_id` = #{floorId}, `client_id` = #{clientId}, `room_floor_count` = #{roomFloorCount} WHERE `room_id` = #{roomId}; + + + + UPDATE `wuye`.`space` SET `space_number` = #{spaceNumber}, `client_id` = #{clientId}, `space_type` = #{spaceType}, `space_start_time` = #{spaceStartTime}, `space_end_time` = #{spaceEndTime}, `space_status` = 1 WHERE `space_id` = #{spaceId}; + + + + + + + + + + diff --git a/bwie-module/bwie-floor/target/classes/bootstrap.yml b/bwie-module/bwie-floor/target/classes/bootstrap.yml new file mode 100644 index 0000000..e9d7c48 --- /dev/null +++ b/bwie-module/bwie-floor/target/classes/bootstrap.yml @@ -0,0 +1,41 @@ +# Tomcat +server: + port: 9272 +# Spring +spring: + main: + allow-circular-references: true + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + application: + # 应用名称 + name: bwie-floor + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 124.221.114.13:8848 + config: + # 配置中心地址 + server-addr: 124.221.114.13:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} +fdfs: + so-timeout: 1500 # socket 连接时长 + connect-timeout: 600 # 连接 tracker 服务器超时时长 + # 这两个是你服务器的 IP 地址,注意 23000 端口也要打开,阿里云服务器记得配置安全组。tracker 要和 stroage 服务进行交流 + tracker-list: 124.221.114.13:22122 + web-server-url: 124.221.114.13:8888 + pool: + jmx-enabled: false + # 生成缩略图 + thumb-image: + height: 500 + width: 500 diff --git a/bwie-module/bwie-floor/target/classes/com/bwie/floor/FloorApplication.class b/bwie-module/bwie-floor/target/classes/com/bwie/floor/FloorApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..a368d658c79592c16d4aa0fc29989f686861e1dd GIT binary patch literal 757 zcmah{O-~y!5Pi%rJb>7#&6!U=j!_662NQhhG?Q6;BkN_A$IUIz%z!{TcwpdWT+4J zXAF(8Ig$+Pk<#)*na9$85phP5Ze$XX&4g8ce;aJLV^uKhMTyCIe5NFyXU14Q@piOW zWGWF(89gN6Tqw=ZAAE~W#Hrw!&?%oft8_Z78Vj2e)YghL!^V5*j?K|0VMQ*Tv{V>Q zO=%N3QJ!4ye#2M32gAYF#u5d3GF#G> z#)G9B9cQ8_hAS>{f2CYf>EsW`$G2+z+b*@Buul)MhZ+r!|7xI_K|uBa?KpWxzIpHq z>}Qo;BipKi0YX}LZVJ$*6|jbfctjxn@S6$@Xm@M%->9FX@%0WOq$CI+q=R=bZLDL1 W;+yn0X-vu0(5>tiw#oa>J>U=5q{Ep2 literal 0 HcmV?d00001 diff --git a/bwie-module/bwie-floor/target/classes/com/bwie/floor/controller/FloorController.class b/bwie-module/bwie-floor/target/classes/com/bwie/floor/controller/FloorController.class new file mode 100644 index 0000000000000000000000000000000000000000..13a43b3f1c8d08fb0e3ab69408cb82a1f04563d4 GIT binary patch literal 9526 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 Ce7JA` literal 0 HcmV?d00001 diff --git a/bwie-module/bwie-floor/target/classes/com/bwie/floor/mapper/FloorMapper.class b/bwie-module/bwie-floor/target/classes/com/bwie/floor/mapper/FloorMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..aef4b83c87569cc79b66b7167ca9c0216744a5c0 GIT binary patch literal 1387 zcmb7E+iuf95S?w~I0*^8aVz&0T2gK+pl?M;TokENs-i~XePeIat?XUPUKjCeJn#X0 z6k>MQ#7>i@<-xLNJm;L9Gh_e$^Ya$~?7}M_Uik2mKrIrPCa~Jw>7TMQMsqD9+Q-}; zf#yJrB-44y3A~*uc;63HOo!hEr}z*nNkbJgA!#pCD&6~l1g#(vTxvr{;N8_3K3kZj zXrxNTj^NGJ362nC;mtw90`Bnt(Sk)eeHMncA=AM8jtd7PCP#E%YChsAda!)J^@$3< zvXsSK^E4yi9UF%TH0=Egj|g7B7C$3Zu-VK+7cyBBs`OlbBA>;Le6o)q47?4f%? zhHe&}V|@Jd!@f1GptpAY&hYtub}^~s4&408LDK{_Iwpz8z(Ea1NZV5vr65o#EF7%e~@W4{tNFm6`j7RJ{qaU0_f zTu1y8;yn}tz|;z?B3Y4I!#6kZY8%;`c-_ii4U2BWof5Zhad)Rv_bO`Ubob%G<tbax3>sDI|bc0euT9h(e@FsX)yaxb`%-vb|xwF6GyF-~;$5 z#O$n_SPE&vOYAwjbN0;H0sxWsO-L8+pJF^5gP8ny)JS z;%h%agE|vXJF;#GXz=qR#saoG?kZwG9m&1a;0SeZF}cSKdm-H$X?D&Fct2NkVe(?) z`Wcs(j|(f>d{#e7LuYOKh+aSZ;8m+&>)#{HBy4|~eRG4R@mr3Wk-I8S4d2#^(=icD zM%X9_*qLhsM`f`IRhvTr^?d9I8$``1IWHG3MvKW?pH2fDn@FXZ2hS-KnN6(#GQ2pW zHB`9{uph+)ud&ZV)F)AZFRiHpHYXn=UyaP%s{0s=trS4M0S?yZ!($BSv)o|F;Hi<6 z%M2${>H-8*=-&chwJP8ORH?2}Re?IyUa4+S-7M8DsxOx66{_2CiTYQmzeYL$2wH>n zDRhOQt8i@!U1#XVEVNPLwpwn&EmBo*6Hy`aHZ9#LZM8D*!oBGM_xXSav(Q6$M1-5f ZWQTryM!m)RpU~oD5`w6BO1~B8`~_mIX;T0I literal 0 HcmV?d00001 diff --git a/bwie-module/bwie-floor/target/classes/com/bwie/floor/service/impl/FloorServiceImpl.class b/bwie-module/bwie-floor/target/classes/com/bwie/floor/service/impl/FloorServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..e85f553526876fdc8458d211db7a447fd767b36d GIT binary patch literal 6100 zcmb7I3v?7$8U7~O&1^P9p@9HFN<(>=@Y+%+rGchAQ=$n_LW5Am4!e^uusaiGXA@%U zquMG`tf=^^mDawkwE|)SjV(TEt<+a*RqFdupuQhf>+yKR@7|f+Y_dBE=A6BE=HCDQ z&+q^LJ2~~=C!PYZ5dVr|G4_|^D!jh}cj5zLI3R`(is3_I_;3^l@sS8V8pX%(@d!R4 z=DWnsCnLB!f=`LZLt?lmf_o$Qw0OKv4EIOz03KBFP!toeU&X_M(<4z-<1=FAQ9<)r zF+3)Q&qXmEkE{566jQNZyc||>M9fFU@P%?5!xvTbMp29X5%h`qxEM}|;fW~v@g)^c zM(|V=F`N{`m&NdvD87oX2?BPujNAqIY&0j)G~;aXS^;-fbE& zxgJZ&jacIV(GmsK8#0z_ri?Z-ZEjB*%Pq@xb=S15w1UOWw$l+ycRHrk(eCIequX|N z#kL!|m5#ORao2WwVtVdCY5eJh{l$>G!=(6mLk&n9PL~-sVrHr{>6y{$tu%3gLPJS2?UHA0 zUGq-8OOIt-GZ|~<8u!Xu%??Xk76V zBb`aQu?=#fKf)4J3Z@iL4sxA>v0gBey44YDvRtFXaCm%FtE;OpD>} zuoLTb0X5ff2!V(cvdTy*SXf(x&&X=3l0#F12%z;|3>7R3G~W-`$c)Rfye=p2+W(o;v1I8Ds_srQ$fpx*m%K=6=nZb(T@XM(OUTNs_HoU!&m<_@fy9q~Xu_ zi;BN$_#0kTFiA2giYl7l!@s#LEproznl)?cQ>prNTA1{zhFkD=4e!K12q_K!#2F1P zUemA_uPK<5^N*~kv0<+UME!sr>$dMS;spD&01o*$q?rQ;{ochi$(*G0)RE zop_-xWvdaw^0u>q*di{tK_2isUorbDXi1Zmc6Cd%o$*;a5@YB5^>cJ*EThYStUD5E1}yTH{6fWpgXptP%JbV$`iN_LOYEmvC*)N?a`Z~}U=3-o_)c<@){wAd zHKa?X7dos!53m|b_|2@~YW_+@`{cZo zAJb)=ui-p~GdnBCWqgZqRyc=e^+7qphY~F3D2RdaSiw>A2(S{X_@;kp8IdyR^rPWh}pJtzcT7s52y@(t_d1d)=L=RV19ET=+S1P?< zi4dO`paNH-lHr`lFp5ajcwBrxk{_I8ddE!A01 zbv96)wg7du;?2G~TY}ZuD%IH*sLsWC>QqYaj4k4wtyE_l)zPU=VnlVejie5*mA-d| z?HnG?2;q@*?@neE}ISle_jnrkpZvR#XWsVp{H*T^t7l! zHaY_kJtYr9!HB+t?z@u^IzR{=41myXI@wDwI~YQ{X`sR{h9Gq=%~K~B(RWduyQ$70 zs&n6n>ZC_f$3@1&p|X^-fJ^2$YFg&>V=BRSSudu|35R1FlIIrGm(3RFT$$ZtNlM zOUUU)V*h5E+Q0&S3*N@PMt0k`GZVt(JCh$mH!}xxjAPEUGA{&vr$RYTArXn+TUESE z#k*D9rs8(_a05x+!(WJ^-kXJU7Z((ML}dcNx9EbR{XC=n0;ByRqkTFc+MbP~+3XFD Rwos=8?~~)c+{NP#;D6Ge|2_Z! literal 0 HcmV?d00001 diff --git a/bwie-module/bwie-floor/target/classes/com/bwie/floor/util/FastUtil.class b/bwie-module/bwie-floor/target/classes/com/bwie/floor/util/FastUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..b683651b1521e807b8722256694ff7ce1a37ad20 GIT binary patch literal 2593 zcmbVOYi|@)7=BK-?Or-SDaE#e2*{<~LPr!)D6L{`vDi{%p(5ToyL)y!Wp>UwGfNBJ zK4>B_G4YcLiHUwNF@6#+DHI|F)TZlY6Z%eb_DCL=zz;;5cXF1VM zDrHAmd4bX1C=+GRc8dkiD#>}}T`=cm)+|+=z%E-}U{0>gbfklQA$-%Z+@hHY^gW%s znzq&vIPl131=^Ko7j4&av78>ZAJW~qWpWoeG6Qdzld-9ZC8 zurrQ#4ZMdL0WlDVWgv^3fjp#vC$P;x0Yw9|u;Z9BZ~;ynB?B&I;!p<4c;CPlY!%p9 z#lC%LX#4Q+-LF5tb8GS5^`Dk+e|G1_%|Cy53 zRQm`~n0fug`0C@fKUyjW?8*m<6?M>H-}#WA9{gsIoo%F0n zlWgy|=8D??$Vh_m9rskF9929Db8iFV4crk`iq|Kl@3XW5Eza` zN%iO(DX_cV$p~BAXGvGz93=a6^WzRQQIbT$894_6PjcSMaXZImj^ruIr?@gX3XU!5 z>kvP4(u7@T@{Ws8d745&k z=vcRe^-bv5aE*KIVF3FUv625BOV|{{58R|0*PEB{7!|v&g&xxM-AQ9QcTqfP#?z0D zMAb<&Jw%hHOd?lV9YH7qxlm_>oN4VF7!CG4!1^xkQdAl3{ literal 0 HcmV?d00001 diff --git a/bwie-module/bwie-floor/target/classes/mapper/FloorMapper.xml b/bwie-module/bwie-floor/target/classes/mapper/FloorMapper.xml new file mode 100644 index 0000000..14158c9 --- /dev/null +++ b/bwie-module/bwie-floor/target/classes/mapper/FloorMapper.xml @@ -0,0 +1,60 @@ + + + + + INSERT INTO `wuye`.`floor` (`floor_name`, `floor_count`, `floor_start`, `floor_area`) + VALUES ( #{floorName}, #{floorCount}, 0, #{floorArea}); + + + INSERT INTO `wuye`.`client` ( `client_name`, `client_tel`, `client_type`, `client_document`, `client_document_number`, `client_sex`, `client_nation`) + VALUES ( #{clientName}, #{clientTel}, #{clientType}, #{clientDocument}, #{clientDocumentNumber}, #{clientSex}, #{clientNation}); + + + INSERT INTO `wuye`.`room` ( `room_name`, `floor_id`, `client_id`, `room_floor_count`) + VALUES ( #{roomName}, #{floorId}, #{clientId}, #{roomFloorCount}); + + + + INSERT INTO `wuye`.`space` ( `space_number`, `client_id`, `space_type`, `space_start_time`, `space_end_time`, `space_status`) + VALUES ( #{spaceNumber}, #{clientId}, #{spaceType}, now(), #{spaceEndTime}, 1); + + + UPDATE `wuye`.`floor` SET `floor_start` = 1 WHERE `floor_id` = #{floorId}; + + + UPDATE `wuye`.`client` SET `client_name` = #{clientName}, `client_tel` = #{clientTel}, `client_type` = #{clientType}, `client_document` = #{clientDocument}, `client_document_number` = #{clientDocumentNumber}, `client_sex` = #{clientSex}, `client_nation` = #{clientNation} WHERE `client_id` = #{clientId}; + + +UPDATE `wuye`.`room` SET `room_name` = #{roomName}, `floor_id` = #{floorId}, `client_id` = #{clientId}, `room_floor_count` = #{roomFloorCount} WHERE `room_id` = #{roomId}; + + + + UPDATE `wuye`.`space` SET `space_number` = #{spaceNumber}, `client_id` = #{clientId}, `space_type` = #{spaceType}, `space_start_time` = #{spaceStartTime}, `space_end_time` = #{spaceEndTime}, `space_status` = 1 WHERE `space_id` = #{spaceId}; + + + + + + + + + + diff --git a/bwie-module/bwie-login/pom.xml b/bwie-module/bwie-login/pom.xml new file mode 100644 index 0000000..5fad809 --- /dev/null +++ b/bwie-module/bwie-login/pom.xml @@ -0,0 +1,64 @@ + + + + bwie-module + com.bwie + 1.0-SNAPSHOT + + 4.0.0 + + bwie-login + + + + + + com.bwie + bwie-common + + + + org.springframework.boot + spring-boot-starter-web + + + + com.alibaba + druid-spring-boot-starter + 1.2.8 + + + + mysql + mysql-connector-java + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 2.2.2 + + + + com.github.pagehelper + pagehelper-spring-boot-starter + 1.4.1 + + + + org.springframework.boot + spring-boot-starter-test + test + + + com.github.tobato + fastdfs-client + 1.26.5 + + + + + + \ No newline at end of file diff --git a/bwie-module/bwie-login/src/main/java/com/bwie/login/LoginApplication.java b/bwie-module/bwie-login/src/main/java/com/bwie/login/LoginApplication.java new file mode 100644 index 0000000..471f860 --- /dev/null +++ b/bwie-module/bwie-login/src/main/java/com/bwie/login/LoginApplication.java @@ -0,0 +1,13 @@ +package com.bwie.login; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class LoginApplication { + public static void main(String[] args) { + + SpringApplication.run(LoginApplication.class); + + } +} diff --git a/bwie-module/bwie-login/src/main/java/com/bwie/login/controller/LoginController.java b/bwie-module/bwie-login/src/main/java/com/bwie/login/controller/LoginController.java new file mode 100644 index 0000000..1580655 --- /dev/null +++ b/bwie-module/bwie-login/src/main/java/com/bwie/login/controller/LoginController.java @@ -0,0 +1,68 @@ +package com.bwie.login.controller; + +import com.alibaba.fastjson.JSON; +import com.bwie.common.domain.Login; +import com.bwie.common.result.Result; +import com.bwie.login.service.LoginService; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@RestController +@RequestMapping("/login") +@Log4j2 +public class LoginController { + + + @Autowired + private LoginService loginService; + + + @Autowired + private HttpServletRequest request; + + + @PostMapping("/findByLogin/{loginName}") + public Result findByLogin(@PathVariable String loginName) { + + log.info("功能描述: 用户名查询,请求URI: {},请求方式: {},请求参数: {}", + request.getServletPath(), request.getMethod(), loginName); + + Login login = loginService.findByLogin(loginName); + + Result success = Result.success(login); + + log.info("功能描述: 用户名查询,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(success)); + + return success; + + } + + + @PostMapping("/findByAll") + public Result findByAll() { + + log.info("功能描述: 查询所有管理员,请求URI: {},请求方式: {}", + request.getServletPath(), request.getMethod()); + List list= loginService.findByAll(); + + Result> success = Result.success(list); + + log.info("功能描述: 查询所有管理员,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(success)); + + + return success; + + } + + + +} diff --git a/bwie-module/bwie-login/src/main/java/com/bwie/login/mapper/LoginMapper.java b/bwie-module/bwie-login/src/main/java/com/bwie/login/mapper/LoginMapper.java new file mode 100644 index 0000000..b07dcc0 --- /dev/null +++ b/bwie-module/bwie-login/src/main/java/com/bwie/login/mapper/LoginMapper.java @@ -0,0 +1,15 @@ +package com.bwie.login.mapper; + +import com.bwie.common.domain.Login; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface LoginMapper { + Login findByLogin(@Param("loginName") String loginName); + + List findByAll(); + +} diff --git a/bwie-module/bwie-login/src/main/java/com/bwie/login/service/LoginService.java b/bwie-module/bwie-login/src/main/java/com/bwie/login/service/LoginService.java new file mode 100644 index 0000000..ef47149 --- /dev/null +++ b/bwie-module/bwie-login/src/main/java/com/bwie/login/service/LoginService.java @@ -0,0 +1,12 @@ +package com.bwie.login.service; + +import com.bwie.common.domain.Login; + +import java.util.List; + +public interface LoginService { + Login findByLogin(String loginName); + + List findByAll(); + +} diff --git a/bwie-module/bwie-login/src/main/java/com/bwie/login/service/impl/LoginServiceImpl.java b/bwie-module/bwie-login/src/main/java/com/bwie/login/service/impl/LoginServiceImpl.java new file mode 100644 index 0000000..c915b52 --- /dev/null +++ b/bwie-module/bwie-login/src/main/java/com/bwie/login/service/impl/LoginServiceImpl.java @@ -0,0 +1,28 @@ +package com.bwie.login.service.impl; + +import com.bwie.common.domain.Login; +import com.bwie.login.mapper.LoginMapper; +import com.bwie.login.service.LoginService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class LoginServiceImpl implements LoginService { + + + @Autowired + private LoginMapper loginMapper; + + + @Override + public Login findByLogin(String loginName) { + return loginMapper.findByLogin(loginName); + } + + @Override + public List findByAll() { + return loginMapper.findByAll(); + } +} diff --git a/bwie-module/bwie-login/src/main/java/com/bwie/login/util/FastUtil.java b/bwie-module/bwie-login/src/main/java/com/bwie/login/util/FastUtil.java new file mode 100644 index 0000000..a31d8d3 --- /dev/null +++ b/bwie-module/bwie-login/src/main/java/com/bwie/login/util/FastUtil.java @@ -0,0 +1,55 @@ +package com.bwie.login.util; + +import org.springframework.stereotype.Component; +import com.github.tobato.fastdfs.domain.fdfs.StorePath; +import com.github.tobato.fastdfs.service.FastFileStorageClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.util.StringUtils; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; + +/** + * @BelongsProject: 0107day02 + * @BelongsPackage: com.bw.config + * @Author: zhupengfei + * @CreateTime: 2023-02-01 08:52 + */ +@Component +public class FastUtil { + private static final Logger log = LoggerFactory.getLogger(FastUtil.class); + + @Resource + private FastFileStorageClient storageClient ; + + /** + * 上传文件 + */ + public String upload(MultipartFile multipartFile) throws Exception{ + String originalFilename = multipartFile.getOriginalFilename(). + substring(multipartFile.getOriginalFilename(). + lastIndexOf(".") + 1); + StorePath storePath = this.storageClient.uploadImageAndCrtThumbImage( + multipartFile.getInputStream(), + multipartFile.getSize(),originalFilename , null); + return storePath.getFullPath() ; + } + /** + * 删除文件 + */ + public String deleteFile(String fileUrl) { + if (StringUtils.isEmpty(fileUrl)) { + log.info("fileUrl == >>文件路径为空..."); + return "文件路径不能为空"; + } + try { + StorePath storePath = StorePath.parseFromUrl(fileUrl); + storageClient.deleteFile(storePath.getGroup(), storePath.getPath()); + } catch (Exception e) { + log.error(e.getMessage()); + } + return "删除成功"; + } + +} diff --git a/bwie-module/bwie-login/src/main/resources/bootstrap.yml b/bwie-module/bwie-login/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..a2cb10b --- /dev/null +++ b/bwie-module/bwie-login/src/main/resources/bootstrap.yml @@ -0,0 +1,41 @@ +# Tomcat +server: + port: 9016 +# Spring +spring: + main: + allow-circular-references: true + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + application: + # 应用名称 + name: bwie-login + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 124.221.114.13:8848 + config: + # 配置中心地址 + server-addr: 124.221.114.13:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} +fdfs: + so-timeout: 1500 # socket 连接时长 + connect-timeout: 600 # 连接 tracker 服务器超时时长 + # 这两个是你服务器的 IP 地址,注意 23000 端口也要打开,阿里云服务器记得配置安全组。tracker 要和 stroage 服务进行交流 + tracker-list: 124.221.114.13:22122 + web-server-url: 124.221.114.13:8888 + pool: + jmx-enabled: false + # 生成缩略图 + thumb-image: + height: 500 + width: 500 diff --git a/bwie-module/bwie-login/src/main/resources/mapper/LoginMapper.xml b/bwie-module/bwie-login/src/main/resources/mapper/LoginMapper.xml new file mode 100644 index 0000000..d0da062 --- /dev/null +++ b/bwie-module/bwie-login/src/main/resources/mapper/LoginMapper.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/bwie-module/bwie-login/target/classes/bootstrap.yml b/bwie-module/bwie-login/target/classes/bootstrap.yml new file mode 100644 index 0000000..a2cb10b --- /dev/null +++ b/bwie-module/bwie-login/target/classes/bootstrap.yml @@ -0,0 +1,41 @@ +# Tomcat +server: + port: 9016 +# Spring +spring: + main: + allow-circular-references: true + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + application: + # 应用名称 + name: bwie-login + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 124.221.114.13:8848 + config: + # 配置中心地址 + server-addr: 124.221.114.13:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} +fdfs: + so-timeout: 1500 # socket 连接时长 + connect-timeout: 600 # 连接 tracker 服务器超时时长 + # 这两个是你服务器的 IP 地址,注意 23000 端口也要打开,阿里云服务器记得配置安全组。tracker 要和 stroage 服务进行交流 + tracker-list: 124.221.114.13:22122 + web-server-url: 124.221.114.13:8888 + pool: + jmx-enabled: false + # 生成缩略图 + thumb-image: + height: 500 + width: 500 diff --git a/bwie-module/bwie-login/target/classes/com/bwie/login/LoginApplication.class b/bwie-module/bwie-login/target/classes/com/bwie/login/LoginApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..42c14146ff031ba5f341c394b8ed3cf510cd9d35 GIT binary patch literal 757 zcmah{O;6k~5PjaSKz3W`QfPs;h}*)UzHq4)A<>n3N?XLD<-o}a-e5@VmE!<^tEW~- z?GNaWLW~0v3)-rYGGot--@Iqf-`kr%0CunuqKTCNZvwmxv5K_->kO@3rIp)bsQ0!; z42^*~l?)4!((+rG$I>2&IHO26GKt7W!YaRi2sYfADi}7S#N<4_Qj%vTRhmcM?oTF} zN`zBJ_X#)`N;9nVPNH*hDR?Gy%7@M>o%XB7!lneZG$YNh_*J?yb9x}G$fc8(3d5l( zZ6d!YPj2~n!;iiP!|GwFoyz4%6^dBzYi(RbhyeB?V^dyCJcF^vy)yQK$Hq7=N@o(I z$0{wYj7!{_DVJ0_dF}Y%L9Kt=sTLIW={`15qv7#i4Kyg;y9oiaO9XJ)B{ zkQhven2=&X;|C(q#KcbmYEp`~k4FE;Zu={Y&zV`adjm??WY6WD_q>AeRQDWbBPfLX~w#k=1yCaW2%U_tJ$=tKCY)s)y>%SG5+KztwQO(s;M@o zC6ok1RGejFmgC0M*;x@Cf_qLiGPLS>r6`ojg+fd&N@y<4@Pc0@souMK{i-|tAooQ0 zeZ7N*!7^=se7Xb;T~x(7KT|TUZYWVwC~0>YX%(oQsEB4so(w#xL=pZ-9!bxm@IcbY z7iA=FW$dJOL>DEv(aYJDTG}P@{$UNHS`=A6?#gkht=?;@AN4xRN)FVCR;ZgYUcwd` z8}Y1!SoVus%b)#`o1b6)>rP+O(v2T;pD$#uUCrJ4Vfps=UCXx@a(6GC8b8+8bm3xt zm-~7#`}=$mAv=F5_Z1IcxG3WVycoi18Smqaj1O=ogb!tW1Xac+JQqSjMhlW5Ov>m0 z;dwgs+3Q!c_irryc0Kp)O`$%7DH$nDOE_HWmhVmO%BQ)TSC)SIZt2?P?3dp>#yMfO zE@K~NSjtZ?uB+Tw2_0n@&%--#2xny&NV6PP`sQe2MoY3nT32;#NLZ87-27EC#?oYN zvI}H>WHK!&RDHk#OJE{?$;#jn-0zOtmXn!k#KREBi`G z+m^7UAiCN$Rd%=K&8`$$(mhy|n}t->&=YDx<&E#SGY)USm89@ScB^6!F5sc0S)W z@TphBZonqPRX|ifc=>Q$$9c0yW3MQq1-WN$;<%L@3TKIPZRY}{yWWv)9EAW-a1%$_ zXQ0Yv?wB}u8MWTwe>ew88~qu9#+uGw5nM#A1bOn>n`7uVz}^igxTkH#=J|I&qY93|*d?oxUk~Gielg+i0%f z-@!4!Q_bY>r0kuPD%|oZU8HoALepD0?czT`U<8nB$h4dPS58B6um^id3kk$}xRBVm zddVtq{F_kJaE=M@o~iV15o>}T5{poeaa+ zWITF9$tlQ;=84G!YF^b$81!b+EllzxtjMI3HfIp1lJ9|X1{cqTc9_W*%rR1O1Dk4X zoN#C~6cXMoA?A*N!5mX9 zTww`3`USZ8ThlEOwCAR=qHRMs|7p3Ke)*DmA jF@Z3U{{jX>!XAdgN5V#gF(9J^`!Y&f0VaZ`9Xj{|cEDo0 literal 0 HcmV?d00001 diff --git a/bwie-module/bwie-login/target/classes/com/bwie/login/service/impl/LoginServiceImpl.class b/bwie-module/bwie-login/target/classes/com/bwie/login/service/impl/LoginServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..67243006276594524a58dcbc71c61708c10cd2fd GIT binary patch literal 1034 zcmaJ=+invv5IxSNAs1*Vq|kCL<&qRsOI06`QWX^>B&2Pr2+F&YIH}979eKTt@>d`s zq4K~7@KK2ICTgMt`mi3)?3pujW@mr@`S}aL9%>~l;ZYHJJT7AsPyDe}z|#Vr74V#) z9Gbq;M`AFLmSHRCn25KBO7b+$qx1z2rl1DH`lm!Y70H&0RXdc2S{o;vGCF2>9T?l^ z@xUtG?^zMap|M|hTM8ZXp6EDZM_gPc@WaHJp|Y||v`hO+D|f({G@;mbaVrkD+M{*Sn!m*6zIP!r4RJ7bvy8CvN z3S`)=1!v-1@KESJZ#plcQJ+%Ma3Z65*F-|;F&j}7(@`ChR^Qt~KEuk9bf>0!BK$m@ zwA5#DT=p;wDW_H+XC+Qik1BSaw5j@9xWp3a?gC){>YfgWpwu*p?a24akF1*Nn^C^w z+hnNy^J~S_qcmb;KJ^X|K literal 0 HcmV?d00001 diff --git a/bwie-module/bwie-login/target/classes/com/bwie/login/util/FastUtil.class b/bwie-module/bwie-login/target/classes/com/bwie/login/util/FastUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..a44868e5f8fe334cfe030f7dd3e818b30a3e4748 GIT binary patch literal 2593 zcmbVOYi|@)7=BK-?d)y`D5bTnAOdn}x3nW#Q7ElqZL!!=WT7J7I=g#zJ7soeotdQt zZyz*~n3(v55amlO(-AK>qxh=0QPoSE&iEn6ct>3eSPdEe)~oM-lrzi-_E zFo;i*cpSqm7{QBiyp+UoysX4%0$q4TZI3B2-hvZ&HHitFOyV_6s?(`BPPJefr{j2C zot#l3t;AWSeNMwn676_H>70+_O$`^4cnfc9ct;>+y9I%^N!KeFzMUVOHzwUeL3%?1 zoBY7_%z_-XE$IXTM<%mw(I{BKTsdO|ZpI8;BX9aaF7F$@^e$OhX^e9{ZrL(jdzH4j z&y=0OD#{tlw=%Xo?l^8>2A1pi0^29&%}eH@VOBSdGtzg75a1 z9CdS2V9TWC$W!HFMtWyW8Vp0on)Zz8S!!L`Yz*csde|8v&n#HdV7QiJlmp8Sv7X~Z zIVqQH*USlw^+cH{d6rYiduCBCxZXu$L1v6%*$%9d=>^8r>P$sC)EmM#Y||+i=|J66 zxvOd`9f3oSY*wJv^(=xlZDqnC6cwaO)jD4ZRVR7c4Ca)djcb&1izZ{wt9q&Wgja|) zIkuRUrAjecr(`ha=1!X`_CR{fUNR?bPNP8f_dE=tZUzM5cGT!rozSC}XGG^bn|VqH zX7=KgSqclrP8EnB%i5KaC(~gUM4mUP-ct1%P&p7t)lI2S%+d`mm!vW37E7+f)*aHZ z8+$aotK&V)3Wxy>rj87=4*f z!M;;GF@xWzr6qH?~#^{GA`*@ zz^sl%C7!`$fo%_}TTPdaE9(3MWlmqY`rTjGzQ1?%tCcUl71*I_y-`MlLF6g{5bxVz{pV%K};0M zhsT}Vs27}_Bm0DFf%!@}>j0drY5xi{L^~ndvkx*L_q6?yBVPhXCEZZUlP zB-;nAxvKU*G7@KeCp@=YiYgw3d7zH*I_`)n$?H?n_gPwjCh2*u$EI5UK^!-;a` zLG|bxDX_2B$tYXgXGz!J93uO4@#79OP?AK#894_6PjcSOaTmu%j^ruIr?@gW3XV;w z8xTKp(ty2`N*Vl`@1xWs1?ow3 z%uOvkiVGYR%SbfiRR0o^*Lg4UwI2!2cS0k~&4jp(V<#c*Ajm!R)62O*R0>Nf@>jv4 ze$b@QM@*e0*MsP%MFUM3pp4;Z>Z@Seafq`fQaJ}f3VfDoD)!q{ig6t7yNQ--X#E9x z+ook~Za~|X>)dM%130*Zt^99W#OtH5D~A?V$Ce+-ty4wJnYT{{ZLQy9xjR literal 0 HcmV?d00001 diff --git a/bwie-module/bwie-login/target/classes/mapper/LoginMapper.xml b/bwie-module/bwie-login/target/classes/mapper/LoginMapper.xml new file mode 100644 index 0000000..d0da062 --- /dev/null +++ b/bwie-module/bwie-login/target/classes/mapper/LoginMapper.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/bwie-module/bwie-service/pom.xml b/bwie-module/bwie-service/pom.xml new file mode 100644 index 0000000..c4ed3e5 --- /dev/null +++ b/bwie-module/bwie-service/pom.xml @@ -0,0 +1,64 @@ + + + + bwie-module + com.bwie + 1.0-SNAPSHOT + + 4.0.0 + + bwie-service + + + + + + com.bwie + bwie-common + + + + org.springframework.boot + spring-boot-starter-web + + + + com.alibaba + druid-spring-boot-starter + 1.2.8 + + + + mysql + mysql-connector-java + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 2.2.2 + + + + com.github.pagehelper + pagehelper-spring-boot-starter + 1.4.1 + + + + org.springframework.boot + spring-boot-starter-test + test + + + com.github.tobato + fastdfs-client + 1.26.5 + + + + + + \ No newline at end of file diff --git a/bwie-module/bwie-service/src/main/java/com/bwie/service/ServiceApplication.java b/bwie-module/bwie-service/src/main/java/com/bwie/service/ServiceApplication.java new file mode 100644 index 0000000..ab037ac --- /dev/null +++ b/bwie-module/bwie-service/src/main/java/com/bwie/service/ServiceApplication.java @@ -0,0 +1,15 @@ +package com.bwie.service; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ServiceApplication { + + public static void main(String[] args) { + + SpringApplication.run(ServiceApplication.class); + + } + +} diff --git a/bwie-module/bwie-service/src/main/java/com/bwie/service/controller/ServiceController.java b/bwie-module/bwie-service/src/main/java/com/bwie/service/controller/ServiceController.java new file mode 100644 index 0000000..aa7dd81 --- /dev/null +++ b/bwie-module/bwie-service/src/main/java/com/bwie/service/controller/ServiceController.java @@ -0,0 +1,88 @@ +package com.bwie.service.controller; + + +import com.alibaba.fastjson.JSON; +import com.bwie.common.domain.Complain; +import com.bwie.common.domain.Repair; +import com.bwie.common.result.Result; +import com.bwie.service.service.ServiceService; +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; +import java.util.List; + +@RestController +@RequestMapping("/service") +@Log4j2 +public class ServiceController { + + @Autowired + private HttpServletRequest request; + + @Autowired + private ServiceService serviceService; + + + //查询所有投诉 + @PostMapping("/findComplainAll") + public Result findComplainAll() { + + log.info("功能描述: 查看所有投诉列表,请求URI: {},请求方式: {}", + request.getServletPath(), request.getMethod()); + + List list = serviceService.findComplainAll(); + + Result> success = Result.success(list); + log.info("功能描述: 查看所有投诉列表,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(success)); + + return success; + + } + + + //受理投诉 + @PostMapping("/complainCase") + public Result complainCase(@RequestBody Complain complain) { + + + log.info("功能描述: 受理投诉,请求URI: {},请求方式: {},请求参数: {}", + request.getServletPath(), request.getMethod(), complain); + + Result result= serviceService.complainCase(complain); + + log.info("功能描述: 受理投诉,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(result)); + + return result; + } + + + + + + //查询所有报修列表 + + @PostMapping("/findRepairAll") + public Result findRepairAll() { + + log.info("功能描述: 查看所有报修列表,请求URI: {},请求方式: {}", + request.getServletPath(), request.getMethod()); + + List list = serviceService.findRepairAll(); + + Result> success = Result.success(list); + log.info("功能描述: 查看所有报修列表,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(success)); + + return success; + + } + + +} diff --git a/bwie-module/bwie-service/src/main/java/com/bwie/service/mapper/ServiceMapper.java b/bwie-module/bwie-service/src/main/java/com/bwie/service/mapper/ServiceMapper.java new file mode 100644 index 0000000..e5db835 --- /dev/null +++ b/bwie-module/bwie-service/src/main/java/com/bwie/service/mapper/ServiceMapper.java @@ -0,0 +1,16 @@ +package com.bwie.service.mapper; + +import com.bwie.common.domain.Complain; +import com.bwie.common.domain.Repair; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface ServiceMapper { + List findComplainAll(); + + List findRepairAll(); + + Integer complainCase(Complain complain); +} diff --git a/bwie-module/bwie-service/src/main/java/com/bwie/service/service/ServiceService.java b/bwie-module/bwie-service/src/main/java/com/bwie/service/service/ServiceService.java new file mode 100644 index 0000000..e529634 --- /dev/null +++ b/bwie-module/bwie-service/src/main/java/com/bwie/service/service/ServiceService.java @@ -0,0 +1,15 @@ +package com.bwie.service.service; + +import com.bwie.common.domain.Complain; +import com.bwie.common.domain.Repair; +import com.bwie.common.result.Result; + +import java.util.List; + +public interface ServiceService { + List findComplainAll(); + + List findRepairAll(); + + Result complainCase(Complain complain); +} diff --git a/bwie-module/bwie-service/src/main/java/com/bwie/service/service/impl/ServiceServiceImpl.java b/bwie-module/bwie-service/src/main/java/com/bwie/service/service/impl/ServiceServiceImpl.java new file mode 100644 index 0000000..dc4ff7f --- /dev/null +++ b/bwie-module/bwie-service/src/main/java/com/bwie/service/service/impl/ServiceServiceImpl.java @@ -0,0 +1,43 @@ +package com.bwie.service.service.impl; + +import com.bwie.common.domain.Complain; +import com.bwie.common.domain.Repair; +import com.bwie.common.result.Result; +import com.bwie.service.mapper.ServiceMapper; +import com.bwie.service.service.ServiceService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class ServiceServiceImpl implements ServiceService { + + + @Autowired + private ServiceMapper serviceMapper; + + + @Override + public List findComplainAll() { + return serviceMapper.findComplainAll(); + } + + @Override + public List findRepairAll() { + return serviceMapper.findRepairAll(); + } + + @Override + public Result complainCase(Complain complain) { + + Integer complainCase= serviceMapper.complainCase(complain); + + if (complainCase>0){ + + return Result.success("受理成功"); + } + + return Result.error("受理失败"); + } +} diff --git a/bwie-module/bwie-service/src/main/java/com/bwie/service/util/FastUtil.java b/bwie-module/bwie-service/src/main/java/com/bwie/service/util/FastUtil.java new file mode 100644 index 0000000..d34ea9e --- /dev/null +++ b/bwie-module/bwie-service/src/main/java/com/bwie/service/util/FastUtil.java @@ -0,0 +1,55 @@ +package com.bwie.service.util; + +import org.springframework.stereotype.Component; +import com.github.tobato.fastdfs.domain.fdfs.StorePath; +import com.github.tobato.fastdfs.service.FastFileStorageClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.util.StringUtils; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; + +/** + * @BelongsProject: 0107day02 + * @BelongsPackage: com.bw.config + * @Author: zhupengfei + * @CreateTime: 2023-02-01 08:52 + */ +@Component +public class FastUtil { + private static final Logger log = LoggerFactory.getLogger(FastUtil.class); + + @Resource + private FastFileStorageClient storageClient ; + + /** + * 上传文件 + */ + public String upload(MultipartFile multipartFile) throws Exception{ + String originalFilename = multipartFile.getOriginalFilename(). + substring(multipartFile.getOriginalFilename(). + lastIndexOf(".") + 1); + StorePath storePath = this.storageClient.uploadImageAndCrtThumbImage( + multipartFile.getInputStream(), + multipartFile.getSize(),originalFilename , null); + return storePath.getFullPath() ; + } + /** + * 删除文件 + */ + public String deleteFile(String fileUrl) { + if (StringUtils.isEmpty(fileUrl)) { + log.info("fileUrl == >>文件路径为空..."); + return "文件路径不能为空"; + } + try { + StorePath storePath = StorePath.parseFromUrl(fileUrl); + storageClient.deleteFile(storePath.getGroup(), storePath.getPath()); + } catch (Exception e) { + log.error(e.getMessage()); + } + return "删除成功"; + } + +} diff --git a/bwie-module/bwie-service/src/main/resources/bootstrap.yml b/bwie-module/bwie-service/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..c0e3d66 --- /dev/null +++ b/bwie-module/bwie-service/src/main/resources/bootstrap.yml @@ -0,0 +1,41 @@ +# Tomcat +server: + port: 9004 +# Spring +spring: + main: + allow-circular-references: true + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + application: + # 应用名称 + name: bwie-service + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 124.221.114.13:8848 + config: + # 配置中心地址 + server-addr: 124.221.114.13:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} +fdfs: + so-timeout: 1500 # socket 连接时长 + connect-timeout: 600 # 连接 tracker 服务器超时时长 + # 这两个是你服务器的 IP 地址,注意 23000 端口也要打开,阿里云服务器记得配置安全组。tracker 要和 stroage 服务进行交流 + tracker-list: 124.221.114.13:22122 + web-server-url: 124.221.114.13:8888 + pool: + jmx-enabled: false + # 生成缩略图 + thumb-image: + height: 500 + width: 500 diff --git a/bwie-module/bwie-service/src/main/resources/mapper/ServiceMapper.xml b/bwie-module/bwie-service/src/main/resources/mapper/ServiceMapper.xml new file mode 100644 index 0000000..2e625b1 --- /dev/null +++ b/bwie-module/bwie-service/src/main/resources/mapper/ServiceMapper.xml @@ -0,0 +1,19 @@ + + + + + UPDATE `wuye`.`complain` SET `client_id` = 1, `complain_type` = '一般投诉', `complain_time` = '2023-12-14 14:57:30', `complain_content` = '保安调戏业主', `complain_starts` = 1, `login_id` = #{loginId}, `complain_out_time` = now(), `complain_remark` = #{complainRemark} WHERE `complain_id` = 2; + + + + + diff --git a/bwie-module/bwie-service/target/classes/bootstrap.yml b/bwie-module/bwie-service/target/classes/bootstrap.yml new file mode 100644 index 0000000..c0e3d66 --- /dev/null +++ b/bwie-module/bwie-service/target/classes/bootstrap.yml @@ -0,0 +1,41 @@ +# Tomcat +server: + port: 9004 +# Spring +spring: + main: + allow-circular-references: true + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + application: + # 应用名称 + name: bwie-service + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 124.221.114.13:8848 + config: + # 配置中心地址 + server-addr: 124.221.114.13:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} +fdfs: + so-timeout: 1500 # socket 连接时长 + connect-timeout: 600 # 连接 tracker 服务器超时时长 + # 这两个是你服务器的 IP 地址,注意 23000 端口也要打开,阿里云服务器记得配置安全组。tracker 要和 stroage 服务进行交流 + tracker-list: 124.221.114.13:22122 + web-server-url: 124.221.114.13:8888 + pool: + jmx-enabled: false + # 生成缩略图 + thumb-image: + height: 500 + width: 500 diff --git a/bwie-module/bwie-service/target/classes/com/bwie/service/ServiceApplication.class b/bwie-module/bwie-service/target/classes/com/bwie/service/ServiceApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..d861d081507e8073697fdc2f9ed9e7f21b6afc7b GIT binary patch literal 767 zcma)4%Wl*#6g{3-Xl6>wl)iWhA*5*+c+(9URH+@Qs}vA}h6O7pbyJtb9yw0i-|DIe z2|j?2s(PKN)BuA-r1;wR*yo;O-(T0?e*)OS^AK&U1y~QT5n>aM0z78uyj5DcU54gh zYr@bPnIp-t6e%s=m3b`fClP0q=|?6J*+f|7*SE=*J5dG0t0*x!kI$9lg|ufXk$gOh zd(&yA65*85Ln6D93i70j>V^dyCy@q4Yd~WPl9vkDh zD4j`+K2~XI$xyXrpMbij9y$mZUjB!Fa`30=08e^&if6w;@8eUMIEL+i3Y$r($)Lxx zC0%ShsNL%*6GbtcbCp|jEt69xFB~7;I`*$zD?w=w5AgyGY9s$OK;46Y#(T8l6dA?# z_7&J=1uxLpsgeOgn)hZK(4`r$fJNLV5`XwjMFw>Hjph$DzoGT{jv^$GAfi~T(R8td YWy(LGzfBEGp@DuiuHYd>UwIX{0rjTGu>b%7 literal 0 HcmV?d00001 diff --git a/bwie-module/bwie-service/target/classes/com/bwie/service/controller/ServiceController.class b/bwie-module/bwie-service/target/classes/com/bwie/service/controller/ServiceController.class new file mode 100644 index 0000000000000000000000000000000000000000..18a506fb8332fa515a45a482f3cbf31cbb4d2715 GIT binary patch literal 3583 zcmb_e`)?Fg6#k|UcH0gGD^x*|KA>zLFe2sIS}hfX?Ut4;)Caz1x6^jY?94JVOC`p{ zXkr9oYJ$iwL}DU|KMAM_6d(L(;@@GH{uRdW&de^moy9ijZZh}YbI(2JJKwqY-23O> z_kIV^3#T5m z*xI?A=C~4eBxcp~>ideL+2;+-Rc2f_s~qEJ+!rK$MXuSD%$cs9(I#|9PZ`>vXXzw9INfconNriPWnWO#;sRwb=UQ{RtxeKwqwuV!HQ|qq zgw90T$|$KhUGqRuR%`>EpyA>*{ko~U0}MUZIU%8D$eN^ubqU?nPUJEv%|4|Ps)VM5 zl~#=j)z-y05Z1UeIpjAioU0p3f)dU|oLoAsImEK{A(ls2X)cfCLbedio@I9X zL#8IJ4Dl)j;C%yheJZ3?2D|?;j0&@REAEFmEv2MLUFlXBvmAFs&1SiAxUTlRYUG%& z^-73hnS^+R52+3{4#z^sm&dnqN}>gu;?%J3?>crw{+65LZu7Yzyb;Zvu_nh$zS7TJ{b!5@iJdD zDe~Uv<*fu+v_EYGN3?$2%Gqh{s4fm{5_RZNm88)t zbU=?_Rz?@jN|^Xx-1aP9{$laoR}X%owj{*My)4dOeemU{epo96 z6ihG9f1JNUT112|V9$TDxE$*W+~4@?{tv6Ph*1eUi#5aXZ!Z>sN8cO~ zWM!O#&H5qsx?-rjm`78yTAJ6w_ElZOJYmzCE6xt@>M_-wk+6YR&qH(LuDF7E66>hv zS1H~qD?A8zH|gdSH^sqN*i?zc$J!T`h`V=3h>HRz!BGzyUd9E)rFY<#;&OIE*QbO% zrO*N(D;M}p!m4WMDK(|?A>z2R4l8?neDs6_*|kK+XG}szMF$m_9WGT2_zqLD8i}B- z{oiskqM9lnY<@QV$D4%SQvXAS>NtI!D?a(q%BN*BpP|**EUFuORiZFK!ZYlzVf(Bn zV@X;jtL2zQk>6HoC~PIRwOw~0-S(EW@hc2~4%+#ZeFbd8c8tv{0C|Y02uiZ zRZZ1hKci*=wG#Z!8VL)C)QC}Z0d*1*-FH#%sWyaFd+tJBz}i~$+@is12oN2p+d3j&RcKpVs8yFKV4QufwW`Gl+w>y<}Y3>- zeY`{t5_=yJ^kazaF$|PM7!M)@;^bg2QO0OxpBLeN+9CbDY{CH@pjjXyvVDjhiIyv- z@rf|%k~B7zrt!(JYI%UAX^b<#VWu(8G>$L{ql7$0tS6bqG0u#a1Ua(mH1;zPKgBOr zOydB_eF=rl-b!upt83bD7aM;rZ={izDXYSuM`06thdCaimcK7v`3J*d BMRx!I literal 0 HcmV?d00001 diff --git a/bwie-module/bwie-service/target/classes/com/bwie/service/mapper/ServiceMapper.class b/bwie-module/bwie-service/target/classes/com/bwie/service/mapper/ServiceMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..a55cdd71ad3f215e1c36459aecc368ef737f8ff2 GIT binary patch literal 542 zcma)(%T59@6oyZ^gCK}2A3%c}yYRBXm=F>ZlOY;N+;@iKP}0k!)4_Lh;REU9R)(AEp% MKJ;mBP;mh80iGb5dH?_b literal 0 HcmV?d00001 diff --git a/bwie-module/bwie-service/target/classes/com/bwie/service/service/ServiceService.class b/bwie-module/bwie-service/target/classes/com/bwie/service/service/ServiceService.class new file mode 100644 index 0000000000000000000000000000000000000000..c2139133cf990f3775216115676396ef162406da GIT binary patch literal 476 zcma)3OHRWu6dd=LwiH_65VRY-09HjvP>EF$s5ya~Jc=tPt{kV_jRgnbP>5HDNT4oY zH6Fe3%=r1^^X(nLC5|HuBa8%w&pJ_kw)6?|UA)e>efTf{Y|uY35y!wnBN1@@)Ntm{xM%T7lbf%CO6X$OrB zt%B}J(9Vy7dcWbEz|oZ~wz{oWb*dYYT8QJsN~@DN6}VALOe;t`M#rr+Bim{tF^_|W zl5rZW$ z;*%i{c2TAb=5A$A?&^SrQE3+0U?o?Ktk}a8I6Ywe|5OAHZPh1|aVuDgt!gRb(yLn; zKITN_UGeaxz=36DA12KQ(hY-EhD|EflgxzbYwfx@+3iJNOD?<83siO;rIZ*du}?ax z*UUK|WgPOc9}^z9IErIFPB<}zdB))5D{!j(%^!dI=jnHUfB$szhhIG0_HhRb+uNJJ zK7aG#Hy?MgC~$?f*m)E77$T;bk4s*T`;A8`w7gL7McJ9Mz`=LU-C7Eq8}Q!kHVRz- zkme8IyN2u7uF5E54|w601Ws%-^2ZJEju8>?(ku*B$_CC<`ntcB?%duJHlmD4_|WX| zu3Ps~?CFiueBpd>!uSLRUE50T-di|N8^j1;hZ@g+uo##q^Vh2pdF*ejG=oI`o0WflZD!=jyKSw3Tq x)tu?n7D_i};<2!2$TZH55amy{MFKfvDsh=0QPoSE%*DO)2p>3eSPdEe)~oM-lrzi-|K zFn~{zcpO757{-fnyp+TVysX4X0-bn8ZI3E3)`F9GHHmSYO5!z4sME zO@82dWf2GYgii0xbuY9ipA)M7b%K zY}d>QjP^viD0!As$a`i{F1X%BV?kz&V%ZL?lIaD;%Q0fFRuMHM&(N^r+<-(X?kXPwBwS zUYs;bVaeF50`cQnyHfOII_!hU^Cs0@s$Tsn2Lh?ODfNk2y20g=G)CNF$#vMggF1F& zkA`=3yoXr<(XYYOkwI2R4pPSx*rg+nf{r;@8s>Fegsq{d!@;ZuS4Ro&>)3&v0(&ah zyN8ClhllTd{rR0+OZRX5bocgWcb0Gd`Qy$0ep>f*_~4`IeDM6s`=9R43b8C(|FwpQJ0x^!Go=N~9@`rWJF{dMj8dsn}@`^C2cyHu?=?rRMn>i7sBvy;~B zPG#n0mZpsG$^Z8@C%A$PrXK3Z_MW=cukjeY34s=y^&59`a&aop)~MG<;{pl4obkg~ zq;$sX8sAJL<4&m@(6ls*0v)R$EZ3+xP@P8Av~`8ONCG(}@chQl<6lXPJQY#Ic#)iV z!pV(z!MQmyP`DPDuY|J>z^R%CP~nDXCnTV>49FfEBiiV}8jpB|xn~;2%C;Sm#NK+f zj}V2KSC5SEUbFnsVkux>K2WTvg9dvqgbelIcY_RVIeB;8jY{N-z;zO+FULH$7(Rc} z?OJQDs{N0Q#2Md7&n=gtibr7{sAIg2JEBVR`lR%ImR6uidYg()Bk7$v>U^zyl4Gq>*q&)`7s2oHujq=Ge%QOhx$=R|ZGHu_<)} z;%818u$NLPgJ1N0lzOCq{W!ptKo5Em3om~|y+-a0^sS&lAd+pdB{Vk9E}>~M^&6VG zsf9;zfrDZNiDsNWw1nh!-iv(gM}qTR& + + + + UPDATE `wuye`.`complain` SET `client_id` = 1, `complain_type` = '一般投诉', `complain_time` = '2023-12-14 14:57:30', `complain_content` = '保安调戏业主', `complain_starts` = 1, `login_id` = #{loginId}, `complain_out_time` = now(), `complain_remark` = #{complainRemark} WHERE `complain_id` = 2; + + + + + diff --git a/bwie-module/bwie-user/pom.xml b/bwie-module/bwie-user/pom.xml new file mode 100644 index 0000000..28dfc3b --- /dev/null +++ b/bwie-module/bwie-user/pom.xml @@ -0,0 +1,64 @@ + + + + bwie-module + com.bwie + 1.0-SNAPSHOT + + 4.0.0 + + bwie-user + + + + + + com.bwie + bwie-common + + + + org.springframework.boot + spring-boot-starter-web + + + + com.alibaba + druid-spring-boot-starter + 1.2.8 + + + + mysql + mysql-connector-java + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 2.2.2 + + + + com.github.pagehelper + pagehelper-spring-boot-starter + 1.4.1 + + + + org.springframework.boot + spring-boot-starter-test + test + + + com.github.tobato + fastdfs-client + 1.26.5 + + + + + + \ No newline at end of file diff --git a/bwie-module/bwie-user/src/main/java/com/bwie/user/UserApplication.java b/bwie-module/bwie-user/src/main/java/com/bwie/user/UserApplication.java new file mode 100644 index 0000000..b3ea06b --- /dev/null +++ b/bwie-module/bwie-user/src/main/java/com/bwie/user/UserApplication.java @@ -0,0 +1,13 @@ +package com.bwie.user; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class UserApplication { + + public static void main(String[] args) { + SpringApplication.run(UserApplication.class); + } + +} diff --git a/bwie-module/bwie-user/src/main/java/com/bwie/user/controller/UserController.java b/bwie-module/bwie-user/src/main/java/com/bwie/user/controller/UserController.java new file mode 100644 index 0000000..693acf1 --- /dev/null +++ b/bwie-module/bwie-user/src/main/java/com/bwie/user/controller/UserController.java @@ -0,0 +1,132 @@ +package com.bwie.user.controller; + +import com.alibaba.fastjson.JSON; +import com.bwie.common.domain.Role; +import com.bwie.common.domain.User; +import com.bwie.common.result.Result; +import com.bwie.user.service.UserService; +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("/user") +@Log4j2 +public class UserController { + + + @Autowired + private UserService userService; + + @Autowired + private HttpServletRequest request; + + + @PostMapping("/findByPhone/{phone}") + public Result findByPhone(@PathVariable String phone) { + + log.info("功能描述: 查询手机号,请求URI: {},请求方式: {},请求参数: {}", + request.getServletPath(), request.getMethod(), phone); + + User user= userService.findByPhone(phone); + + Result success = Result.success(user); + + log.info("功能描述: 查询手机号,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(success)); + + return success; + } + + + @PostMapping("/findByUserAuthority") + public Result findByUserAuthority() { + + log.info("功能描述: 查看用户权限,请求URI: {},请求方式: {}", + request.getServletPath(), request.getMethod()); + + List list = userService.findByUserAuthority(); + + Result> success = Result.success(list); + + log.info("功能描述: 查看用户权限,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(success)); + + return success; + } + + + @PostMapping("/findByUser") + public Result findByUser() { + + log.info("功能描述: 查询所有用户,请求URI: {},请求方式: {}", + request.getServletPath(), request.getMethod()); + + List list = userService.findByUser(); + + Result> success = Result.success(list); + + log.info("功能描述: 查询所有用户,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(success)); + + return success; + } + + + @PostMapping("/findByRole") + public Result findByRole() { + + + log.info("功能描述: 查询所有角色,请求URI: {},请求方式: {}", + request.getServletPath(), request.getMethod()); + + List list = userService.findByRole(); + + + Result> success = Result.success(list); + + log.info("功能描述: 查询所有角色,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(success)); + + + return success; + } + + + @PostMapping("/addRole") + public Result addRole(@RequestBody Role user) { + + log.info("功能描述: 添加角色,请求URI: {},请求方式: {},请求参数: {}", + request.getServletPath(), request.getMethod(), user); + + Result result = userService.addRole(user); + + + log.info("功能描述: 添加角色,请求URI: {},请求方式: {},响应结果: {}", + + request.getServletPath(), request.getMethod(), JSON.toJSONString(result)); + + return result; + + } + + @PostMapping("/addUser") + public Result addUser(@RequestBody User user) { + + log.info("功能描述: 添加用户,请求URI: {},请求方式: {},请求参数: {}", + request.getServletPath(), request.getMethod(), user); + + Result result = userService.addUser(user); + + log.info("功能描述: 添加用户,请求URI: {},请求方式: {},响应结果: {}", + request.getServletPath(), request.getMethod(), JSON.toJSONString(result)); + + return result; + + } + + +} diff --git a/bwie-module/bwie-user/src/main/java/com/bwie/user/mapper/UserMapper.java b/bwie-module/bwie-user/src/main/java/com/bwie/user/mapper/UserMapper.java new file mode 100644 index 0000000..bb91879 --- /dev/null +++ b/bwie-module/bwie-user/src/main/java/com/bwie/user/mapper/UserMapper.java @@ -0,0 +1,34 @@ +package com.bwie.user.mapper; + +import com.bwie.common.domain.Login; +import com.bwie.common.domain.Role; +import com.bwie.common.domain.User; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface UserMapper { + + + List findByUser(); + + Integer addRole(Role user); + + List findByRole(); + + Login findByLoginId(@Param("addLoginId") Integer addLoginId); + + Integer addUser(User user); + + + + List findByUserAuthority(@Param("userId") Integer userId); + + User findByPhone(@Param("phone") String phone); + + List AllRole(); + + List findByUserRoleIds(@Param("ids") String ids); +} diff --git a/bwie-module/bwie-user/src/main/java/com/bwie/user/service/UserService.java b/bwie-module/bwie-user/src/main/java/com/bwie/user/service/UserService.java new file mode 100644 index 0000000..af685b7 --- /dev/null +++ b/bwie-module/bwie-user/src/main/java/com/bwie/user/service/UserService.java @@ -0,0 +1,21 @@ +package com.bwie.user.service; + +import com.bwie.common.domain.Role; +import com.bwie.common.domain.User; +import com.bwie.common.result.Result; + +import java.util.List; + +public interface UserService { + List findByUser(); + + Result addRole(Role user); + + List findByRole(); + + Result addUser(User user); + + List findByUserAuthority(); + + User findByPhone(String phone); +} diff --git a/bwie-module/bwie-user/src/main/java/com/bwie/user/service/impl/UserServiceImpl.java b/bwie-module/bwie-user/src/main/java/com/bwie/user/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..d7e3624 --- /dev/null +++ b/bwie-module/bwie-user/src/main/java/com/bwie/user/service/impl/UserServiceImpl.java @@ -0,0 +1,144 @@ +package com.bwie.user.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.bwie.common.domain.Login; +import com.bwie.common.domain.Role; +import com.bwie.common.domain.User; +import com.bwie.common.result.Result; +import com.bwie.user.mapper.UserMapper; +import com.bwie.user.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class UserServiceImpl implements UserService { + + @Autowired + private UserMapper userMapper; + + + @Autowired + private RedisTemplate redisTemplate; + + + @Override + public List findByUser() { + return userMapper.findByUser(); + } + + @Override + public Result addRole(Role role) { + + + String login = redisTemplate.opsForValue().get("login"); + + Login login1 = JSONObject.parseObject(login, Login.class); + + + role.setAddLoginId(login1.getLoginId()); + + + Integer addRole= userMapper.addRole(role); + + + if (addRole>0){ + + return Result.success("添加角色成功"); + } + + + return Result.error("添加角色失败"); + } + + @Override + public List findByRole() { + List list= userMapper.findByRole(); + + for (Role role : list) { + + Integer addLoginId = role.getAddLoginId(); + + Login addName= userMapper.findByLoginId(addLoginId); + + role.setAddLoginName(addName.getLoginName()); + + Integer upLoginId = role.getUpLoginId(); + + Login upName= userMapper.findByLoginId(upLoginId); + + role.setUpLoginName(upName.getLoginName()); + } + + + + return list; + + } + + @Override + public Result addUser(User user) { + + Integer addRole= userMapper.addUser(user); + + if (addRole>0){ + + return Result.success("添加成功"); + } + + return Result.error("添加失败"); + } + + @Override + public List findByUserAuthority() { + + String login = redisTemplate.opsForValue().get("login"); + + + + User user = JSONObject.parseObject(login, User.class); + + if (user.getUserRole()==1){ + + List list= userMapper.AllRole(); + + return list; + } + + + List roleIds = userMapper.findByUserAuthority(user.getUserId()); + + + + if (roleIds.size()!=0){ + + String ids=""; + + for (Integer roleId : roleIds) { + ids+=","+roleId; + } + + ids = ids.substring(1); + + List list= userMapper.findByUserRoleIds(ids); + + + return list; + + } + + + return null; + + } + + @Override + public User findByPhone(String phone) { + + return userMapper.findByPhone(phone); + + + } +} diff --git a/bwie-module/bwie-user/src/main/java/com/bwie/user/util/FastUtil.java b/bwie-module/bwie-user/src/main/java/com/bwie/user/util/FastUtil.java new file mode 100644 index 0000000..9402225 --- /dev/null +++ b/bwie-module/bwie-user/src/main/java/com/bwie/user/util/FastUtil.java @@ -0,0 +1,55 @@ +package com.bwie.user.util; + +import org.springframework.stereotype.Component; +import com.github.tobato.fastdfs.domain.fdfs.StorePath; +import com.github.tobato.fastdfs.service.FastFileStorageClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.util.StringUtils; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; + +/** + * @BelongsProject: 0107day02 + * @BelongsPackage: com.bw.config + * @Author: zhupengfei + * @CreateTime: 2023-02-01 08:52 + */ +@Component +public class FastUtil { + private static final Logger log = LoggerFactory.getLogger(FastUtil.class); + + @Resource + private FastFileStorageClient storageClient ; + + /** + * 上传文件 + */ + public String upload(MultipartFile multipartFile) throws Exception{ + String originalFilename = multipartFile.getOriginalFilename(). + substring(multipartFile.getOriginalFilename(). + lastIndexOf(".") + 1); + StorePath storePath = this.storageClient.uploadImageAndCrtThumbImage( + multipartFile.getInputStream(), + multipartFile.getSize(),originalFilename , null); + return storePath.getFullPath() ; + } + /** + * 删除文件 + */ + public String deleteFile(String fileUrl) { + if (StringUtils.isEmpty(fileUrl)) { + log.info("fileUrl == >>文件路径为空..."); + return "文件路径不能为空"; + } + try { + StorePath storePath = StorePath.parseFromUrl(fileUrl); + storageClient.deleteFile(storePath.getGroup(), storePath.getPath()); + } catch (Exception e) { + log.error(e.getMessage()); + } + return "删除成功"; + } + +} diff --git a/bwie-module/bwie-user/src/main/resources/bootstrap.yml b/bwie-module/bwie-user/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..db63af4 --- /dev/null +++ b/bwie-module/bwie-user/src/main/resources/bootstrap.yml @@ -0,0 +1,41 @@ +# Tomcat +server: + port: 9151 +# Spring +spring: + main: + allow-circular-references: true + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + application: + # 应用名称 + name: bwie-user + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 124.221.114.13:8848 + config: + # 配置中心地址 + server-addr: 124.221.114.13:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} +fdfs: + so-timeout: 1500 # socket 连接时长 + connect-timeout: 600 # 连接 tracker 服务器超时时长 + # 这两个是你服务器的 IP 地址,注意 23000 端口也要打开,阿里云服务器记得配置安全组。tracker 要和 stroage 服务进行交流 + tracker-list: 124.221.114.13:22122 + web-server-url: 124.221.114.13:8888 + pool: + jmx-enabled: false + # 生成缩略图 + thumb-image: + height: 500 + width: 500 diff --git a/bwie-module/bwie-user/src/main/resources/mapper/UserMapper.xml b/bwie-module/bwie-user/src/main/resources/mapper/UserMapper.xml new file mode 100644 index 0000000..f3f324d --- /dev/null +++ b/bwie-module/bwie-user/src/main/resources/mapper/UserMapper.xml @@ -0,0 +1,37 @@ + + + + + INSERT INTO `wuye`.`role` ( `role_name`, `add_login_id`, `up_login_id`, `add_login_time`, `up_login_time`, `user_id`) + VALUES ( #{roleName}, #{addLoginId}, #{addLoginId}, now(), now(), #{userId}); + + + INSERT INTO `wuye`.`user` ( `user_name`, `user_emil`, `user_tel`, `user_zh`, `user_type`, `user_start`, `user_time`) + VALUES (#{userName}, #{userEmil}, #{userTel}, #{userZh}, #{userType}, 0, now()); + + + + + + + + + + + diff --git a/bwie-module/bwie-user/target/classes/bootstrap.yml b/bwie-module/bwie-user/target/classes/bootstrap.yml new file mode 100644 index 0000000..db63af4 --- /dev/null +++ b/bwie-module/bwie-user/target/classes/bootstrap.yml @@ -0,0 +1,41 @@ +# Tomcat +server: + port: 9151 +# Spring +spring: + main: + allow-circular-references: true + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + application: + # 应用名称 + name: bwie-user + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 124.221.114.13:8848 + config: + # 配置中心地址 + server-addr: 124.221.114.13:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} +fdfs: + so-timeout: 1500 # socket 连接时长 + connect-timeout: 600 # 连接 tracker 服务器超时时长 + # 这两个是你服务器的 IP 地址,注意 23000 端口也要打开,阿里云服务器记得配置安全组。tracker 要和 stroage 服务进行交流 + tracker-list: 124.221.114.13:22122 + web-server-url: 124.221.114.13:8888 + pool: + jmx-enabled: false + # 生成缩略图 + thumb-image: + height: 500 + width: 500 diff --git a/bwie-module/bwie-user/target/classes/com/bwie/user/UserApplication.class b/bwie-module/bwie-user/target/classes/com/bwie/user/UserApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..679e2cc73b75d998fcfee88753de7dc30a6a4a70 GIT binary patch literal 752 zcmaJZuh{ z`vdx;s*VE^TeJ`O{@fX72tJS9Esx4PmiAP{8CklKNkldhR{8tAvEeRN!LSu2Cg<^ulDsUW<)29$j>nlw zgi}WM2{so>GpzK^qAT%L@J#5G51myy?N?=mO$lgeiko5aqjZ<%{8(6#OD8P_hC@@@ zM1D}7+VZ1%Z+!`d)ss>?mCKPT6j46Z+PI1jV7-G4Z2sr^6ko~2G3-7`>5jw%0eUT4(mdnd z#5f0;D2o1+3GPg7mU?vZo8yD~Uj4I9lpwQr_pyx{?T!Cxpmjk&a)xf4G$Y;I{Q>s9 za?g@%RmK1zojZ2{XwwOp#T@1d#3#S2z<_qQR{w?iPc*(fK!oH30fdzJ0Mo_-7RmmC U{w8fGsT#VKT*5MGU->2Q4~Ip;r2qf` literal 0 HcmV?d00001 diff --git a/bwie-module/bwie-user/target/classes/com/bwie/user/controller/UserController.class b/bwie-module/bwie-user/target/classes/com/bwie/user/controller/UserController.class new file mode 100644 index 0000000000000000000000000000000000000000..2921b9b4c1ce47e7a8eef38895a1152cc0e18495 GIT binary patch literal 5263 zcmb_f`%@EF6h0fkERgy@>#I^gE25w)6|D-z0+u3%M~Tpfwsw;&u(<5T%?6}OwQ5_@ zTC9)GbjH?Br=9jUA9V)NK7Q=9{|Ax&6PIhGxJe^?GF`ho;=_IS3;%VGV9~IGQI^(5}Im%PC0gfvCnm!4~X^JS_FeQ8}ncO{%IHq9JQ)l%w6|oY9Dmx%zc+SQ^#zV?t08)u_-fh73&~6U4*- zp($o)qp~iA;nu55$752|;AoS7NE{JQnA0ngAq*NuL}WmEsCH;^HgdCOlwUDUviMq_*?Z$j#PzL19DWpT1YUrAxfIs8i zl6Ylu^~-9wd8~U-Q{i<-l?hZ(LTe|f$Afo5(B6e zf@2AVljd5CbF@A=rW2Hsf_qo)bBo5{T(n{G<<^`moDlJYnl2k-*q>F|gC$>)*^XFh z#Y)VO6~T`d_!Lr_GD_E@DN;RKu5Qf@kzqlL|8(JX7^E@tYGC$gJ?%(j!}#n}s2p z{psrL#J#M@{8^CYo7p$;oQQyv<8jeRPek;~HfLm6fh_1&5>%Zq|)CrJ5Wq9*~THm40^Pa>vz& z+k4)fo&6yJf}NEXAvepCeni<_! zgEQenQkw8<=cGyLLrOYqV|M#Y8ib>N4f850a!?G4_(X^rLs2Bn?SZaNj(mp3Dwen$ zRXRZ@CP=dgdz^;$(&VaM$=td+ldTO;TFDMk74bD?t-bYS#ZjFTLW?3sqxdvl0#XrWs11F=8$SU znFFE{s=?D|8PHbRhBu^Xw4Dmf!GEF5M_boD@|5Ilxlj4iQ~H;qtq;g&+HbuBmwCisR8k?HWq6j;YLunmSOtb#(X$K8+E8|Y3xm1E zf?~r2D5|BG0k;ZvJMgjXLC<_H2l*P_^qzlZ8gAs54_0smJI z6BngM+J`-5Tce=LH~82R0%TGpi)P>sTJixAZJ39TR?0fSOB!pet@mE>3dB2D*@c|$oO#%-6((gP-hh~x3>2g?C$;C^gi85>eT6sw3z z1&bMRFlU4qYu%`m*u7x0Tj#dR z%x)CyPJrDg*nJ4Zr@(F;>`sB*>5S~^a%b0<%#NqG632H1ys%$kN$CT6@fY&2Bb;sZ cxg&fTq!r_x>R|4?ShjIwptyRSka`vHNs z9oPMwg5zbHZ5mc-Vt;vw{qsy}5%aGi6~l<I Vti;g9+RrWfKD@wh9km_+`~fOGRlxuN literal 0 HcmV?d00001 diff --git a/bwie-module/bwie-user/target/classes/com/bwie/user/service/UserService.class b/bwie-module/bwie-user/target/classes/com/bwie/user/service/UserService.class new file mode 100644 index 0000000000000000000000000000000000000000..7eed5f9588828c720d8393382e33e99ec7b3899c GIT binary patch literal 665 zcmb7CO-}+b5S`+}3iyHG$JrZPY)rhZA<=`UH4--dfU;YmWVbclE`-14!5`p{GETcF z1SG~ovwb^nX5PH%$LHHS0NlWZ4`)7{6KK2$ncOd)bFK-ryS;GAW{eg_q%;({2?*39 zF_z2}niII*BHV_t%IIh=IK@k*Bu!Mtgrv4&(8qkACCN~wnBDL0BHMV-+lp$Q7pb8` z_rX%FM{Xu688FQ>50$R*x60Cl-74Kkf2-`QEWImGuNG!OpjrMM zOq6s+mPV&cj%j4HkmFzGU$>G#^|j1xM5@p+e-PHwmK7CoJrgm%vb!U2`Lhx04aH-F zZXrt|rnxn{?oXpBk4=pLfeOA2fSN~O4?M(GL=}g9*hgGPT*Ws7fRyGM zQ__4{#R(N(QSns;iGpi7+l+kPbQCNZNZaH3$RW$rWm+Hi=k;ABkzNI@Lxr4YjhnkI z*BZ&18*@3^Gd#=AxeC?|*v_c#<{c|Hy3aAj%|o_xKp!!UoU89M(w^;1=tfCF-&pYM zLzZJ^Xm$o4mb=p&&u0zKRM0i8sf^(nx-Y4xZO7DyDwSxZY1kUg8D7Dmg*|WH!uo;z z#z8~R8o5z@*pn!FYiIhnPvd$kXL)@J8roLuRuJ86XSn060V`(?7RE zK47^XB|2*+*O#|oV#n>Ap0URbE9aZJ3ambFK%oIq29HF5P9I~6RhXJtUNx!ddt_5Pe^j+zc76%lxO?zXwq>E{LOr{>H^lEqq`ZQdFx2gDshU;*> zhPR_f#Wyv43*T08Qo|`cO^%c!3;b2Euyn;%A4#8QD!!xPG@j8gi8C6`VoJjecvizX ze3wV&B#E}aRJpJ|Wozps(R~V(Rw--5;c9;*T2sBw<29a~Zdg5env&=K?G@6|8JVEd3dOQJ}1p&R;eB zO`QEZ{-NQY_?LzQ$SP{txDSVk^N?xXMM@^`V}-%Fw^(1bRjb%<%xcB z$YA+XaCx<*nhHynPgg@Wo5c?c>7=x?quF@T(dapt~6X*mN#b& z*PVW+1RX2g-*b!Q(J$}Ci-tABHNA}$w|`6Jc11C%@@xKAg)GNfR8tVQa$cAgzAN-A zSX3eaJ5rLX>L~9?w~$VoF7L^%N=Hh7zOFh`7&9G5h*qUt_p+?ooZ4}##MG7|UOuIZ z45o}aX1Igq9ZWeRx|xMP=MUx-<$Zih*`C21RKhzWxYA2$sq(XkTisjTSECPFF|$EQ zuHHM0mM>%#sSO0@R$^L2g}D`byUMkGCKbbBpjSWlatBnguNVVQr5NS1T&IL>V>TP~ zn!{??DymNNau;>2J87g*-pF&*TUDu745Z?;1ykV_Nx-V)OJpiD_EPz{X9rV! z333Y~uKzZyU~XG~<(UpdXui4p3Lr7|OT}MW-^J1`*~{;kHT=+0_{A0BA4@9x-TVS; z#oZ3Ro8?ZIB^a7tTYF$T5(MiNojZ;t~ zEXDC{D^pEpk$4_WgB`0Tk(`7kyLC)qMg%?4R!Yx&0!^t|XK~rdRP$M+#D@mohs99Y zUy2l#Voj1q`=l4WKvNbw|Rz?_G)f$_`TPCr9YYTfC{WYQ^YwD_2)n8k5;a@D{{ z026;Bh!A05ahTo35dswE_HsYBS5)OT#aKbilk_@8FXwZAiRFsGN-3X#^{JWAaMvq~Zcs+%;Di~aK zQuBj zT==fe-&O?j2(6_t=35b3NMZuJd)W(Y>?O$pDT{MLl|_iYiZ1_9?Z1dCea`TJkv3hg z@VA{ZbNGtNE#wxumd^;E$&fjnk(z7hAwRN~K&(WKB*uM@!-G3c8xiFE)-GL{dEmdo C?+@Jo literal 0 HcmV?d00001 diff --git a/bwie-module/bwie-user/target/classes/com/bwie/user/util/FastUtil.class b/bwie-module/bwie-user/target/classes/com/bwie/user/util/FastUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..04276f7abfd34ddc6b8a50e4428a203ba341cb97 GIT binary patch literal 2591 zcmbVOYi|@)7=BK-?d)y`D5cm|E&_6Cx6lzq6iTaDTP(H|S*VD&&hDPwPMMuq=Ryl! z_@Ifz#Kcb~BqsX7#P~_Pq)>?b0DlJ{{t4rAX12>xwnl8y_nh;d_wu}#^UnV9_s!b? z4&ZVcPhzMI!+0r)m(w_kR}>jZp&PF%_NXFbZ8(P4(iq3_G+xJqx}8koL>s1XGKn|T z%_&8)ikw!`XEaQw(TO*e%-JN~(r_+~xABgKcLfr*TN3D)aJ`b@+rY?_!eFPIC4Sz{Wfr0<4aUQ)C5h~-$pFp>85O$#)S zxCJS&Zo+cpiLjiL-f5EtqY(0@J#BiHI#-#^!K_6OTO#DSc}p50ks4uO*%8z;+$bMm z#dghtz-Vurh>B-9rJ`q+<-F^iH|Ax|D2H}nRZK51CYN_A(80b4y0;G;D*s7z5l8#we8s>DIhpnNk!@-OOS4RaO=-7nK0z0bM zw+#(#8y>#*_2+kPE#ANW)7{&j-MMk|&mV6N4A8o#!v|kX_rv#J-v9LXSV~8T3p(a8 zqhmplXK_(r!-MM9(xu~)y8lp_)9+sS?ysxg-@EeF-7mi7yHT}XrKvT1q~l|J!Zvzf zbSgI|^R#0`kNv;*IFXfPF!e|~cJ?+beVxbnK?ttY`>WEf*t;S=jF!xNuSZLevgxJ}r z_A#O;^Xi51(QB4JTCN0a%7=;-chF$pxoA8+{KepGww$87LZceF8r?dlr!U7mw;a8F z&e{j9xh(cSGLmF`$2>Qz#1)Uj+|$5#19wD~ruwAxeU?_BMS7m=v8h&m4#&(qM<&ye zqImp;6xdboWP~m5v!p9E2RVGY`Dq85NI65I9Y+oXp5nfh>o%^5VYZoDICdeK1)5pC*R0>Nb_E*KC ze$HgjPfT5$t$VSL77esufHZ+;D6fL;#D4BtILWyPPQd3VreeQEp#;~V{u^k!iuPZi zcdS{$+9q_YyGCAn6u{m^tml8n5;i381DO=#dE*kEpkUXv$U}y{J84YiE{-R|c>1xP zs5*(JhiEc%ypLE02;nf1FUQkEDTTO+R44y=?g*+D;}8x~k7I@0BoduxHN2=V$8<1a l9;(%II|bEWs-yb`dVYnjYAWh#x{=lolh=g7T3Z|e{s9N#x>NuF literal 0 HcmV?d00001 diff --git a/bwie-module/bwie-user/target/classes/mapper/UserMapper.xml b/bwie-module/bwie-user/target/classes/mapper/UserMapper.xml new file mode 100644 index 0000000..f3f324d --- /dev/null +++ b/bwie-module/bwie-user/target/classes/mapper/UserMapper.xml @@ -0,0 +1,37 @@ + + + + + INSERT INTO `wuye`.`role` ( `role_name`, `add_login_id`, `up_login_id`, `add_login_time`, `up_login_time`, `user_id`) + VALUES ( #{roleName}, #{addLoginId}, #{addLoginId}, now(), now(), #{userId}); + + + INSERT INTO `wuye`.`user` ( `user_name`, `user_emil`, `user_tel`, `user_zh`, `user_type`, `user_start`, `user_time`) + VALUES (#{userName}, #{userEmil}, #{userTel}, #{userZh}, #{userType}, 0, now()); + + + + + + + + + + + diff --git a/bwie-module/pom.xml b/bwie-module/pom.xml new file mode 100644 index 0000000..1e3d738 --- /dev/null +++ b/bwie-module/pom.xml @@ -0,0 +1,22 @@ + + + + bwie-tenement + com.bwie + 1.0-SNAPSHOT + + 4.0.0 + + bwie-module + pom + + bwie-service + bwie-login + bwie-user + bwie-floor + + + + \ No newline at end of file diff --git a/bwie-tenement.iml b/bwie-tenement.iml new file mode 100644 index 0000000..78b2cc5 --- /dev/null +++ b/bwie-tenement.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..14468f0 --- /dev/null +++ b/pom.xml @@ -0,0 +1,65 @@ + + + 4.0.0 + + com.bwie + bwie-tenement + pom + 1.0-SNAPSHOT + + bwie-auth + bwie-common + bwie-gateway + bwie-module + + + + + + + + spring-boot-starter-parent + org.springframework.boot + 2.6.2 + + + + + + + + org.springframework.cloud + spring-cloud-dependencies + 2021.0.0 + pom + import + + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + 2021.1 + pom + import + + + + com.alibaba.nacos + nacos-client + 2.0.4 + + + + + com.bwie + bwie-common + 1.0-SNAPSHOT + + + + + + + \ No newline at end of file