From d4f942bebc24d1323d912ca0d3cad1aeb055305f Mon Sep 17 00:00:00 2001 From: sy200 <2063514638@qq.com> Date: Mon, 30 Sep 2024 18:12:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:()=E5=88=9D=E5=A7=8B=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 48 + LICENSE | 21 + README.md | 28 + cloud-auth/pom.xml | 80 ++ .../com/muyu/auth/CloudAuthApplication.java | 19 + .../muyu/auth/controller/TokenController.java | 72 + .../java/com/muyu/auth/form/LoginBody.java | 34 + .../java/com/muyu/auth/form/RegisterBody.java | 10 + .../muyu/auth/service/SysLoginService.java | 127 ++ .../muyu/auth/service/SysPasswordService.java | 76 + .../auth/service/SysRecordLogService.java | 44 + cloud-auth/src/main/resources/banner.txt | 2 + cloud-auth/src/main/resources/bootstrap.yml | 47 + cloud-auth/src/main/resources/logback/dev.xml | 74 + .../src/main/resources/logback/prod.xml | 89 ++ .../src/main/resources/logback/test.xml | 89 ++ cloud-common/cloud-common-api-doc/pom.xml | 33 + .../api/doc/config/SpringDocConfig.java | 34 + ...ot.autoconfigure.AutoConfiguration.imports | 1 + cloud-common/cloud-common-cache/pom.xml | 31 + .../com/muyu/common/cache/CacheAbsBacis.java | 35 + .../com/muyu/common/cache/CacheBasic.java | 29 + .../muyu/common/cache/PrimaryKeyBasic.java | 30 + cloud-common/cloud-common-core/pom.xml | 169 +++ .../muyu/common/core/annotation/Excel.java | 176 +++ .../muyu/common/core/annotation/Excels.java | 17 + .../common/core/config/MyBatisConfig.java | 30 + .../common/core/constant/CacheConstants.java | 58 + .../muyu/common/core/constant/Constants.java | 134 ++ .../common/core/constant/GenConstants.java | 186 +++ .../muyu/common/core/constant/HttpStatus.java | 93 ++ .../common/core/constant/KafkaConstants.java | 81 ++ .../core/constant/ScheduleConstants.java | 56 + .../core/constant/SecurityConstants.java | 53 + .../core/constant/ServiceNameConstants.java | 23 + .../common/core/constant/TokenConstants.java | 24 + .../common/core/constant/UserConstants.java | 113 ++ .../core/context/SecurityContextHolder.java | 83 ++ .../muyu/common/core/domain/PageResult.java | 32 + .../com/muyu/common/core/domain/Result.java | 112 ++ .../muyu/common/core/domain/req/PageReq.java | 38 + .../muyu/common/core/enums/UserStatus.java | 26 + .../core/exception/CaptchaException.java | 14 + .../core/exception/CheckedException.java | 26 + .../core/exception/DemoModeException.java | 13 + .../core/exception/GlobalException.java | 51 + .../core/exception/InnerAuthException.java | 14 + .../core/exception/PreAuthorizeException.java | 13 + .../core/exception/ServiceException.java | 65 + .../common/core/exception/UtilException.java | 22 + .../exception/auth/NotLoginException.java | 14 + .../auth/NotPermissionException.java | 20 + .../core/exception/auth/NotRoleException.java | 20 + .../core/exception/base/BaseException.java | 69 + .../core/exception/file/FileException.java | 17 + .../FileNameLengthLimitExceededException.java | 14 + .../file/FileSizeLimitExceededException.java | 14 + .../exception/file/FileUploadException.java | 52 + .../file/InvalidExtensionException.java | 67 + .../core/exception/job/TaskException.java | 29 + .../user/CaptchaExpireException.java | 14 + .../core/exception/user/UserException.java | 16 + .../user/UserPasswordNotMatchException.java | 14 + .../muyu/common/core/feign/FeginConfig.java | 19 + .../com/muyu/common/core/text/CharsetKit.java | 94 ++ .../com/muyu/common/core/text/Convert.java | 903 ++++++++++++ .../muyu/common/core/text/StrFormatter.java | 77 ++ .../com/muyu/common/core/utils/DateUtils.java | 158 +++ .../muyu/common/core/utils/ExceptionUtil.java | 35 + .../com/muyu/common/core/utils/JwtUtils.java | 165 +++ .../com/muyu/common/core/utils/PageUtils.java | 32 + .../muyu/common/core/utils/ServletUtils.java | 289 ++++ .../muyu/common/core/utils/SpringUtils.java | 114 ++ .../muyu/common/core/utils/StringUtils.java | 504 +++++++ .../common/core/utils/bean/BeanUtils.java | 107 ++ .../core/utils/bean/BeanValidators.java | 22 + .../common/core/utils/file/FileTypeUtils.java | 85 ++ .../common/core/utils/file/FileUtils.java | 223 +++ .../common/core/utils/file/ImageUtils.java | 69 + .../common/core/utils/file/MimeTypeUtils.java | 56 + .../common/core/utils/html/EscapeUtil.java | 145 ++ .../common/core/utils/html/HTMLFilter.java | 498 +++++++ .../muyu/common/core/utils/ip/IpUtils.java | 331 +++++ .../core/utils/poi/ExcelHandlerAdapter.java | 23 + .../muyu/common/core/utils/poi/ExcelUtil.java | 1230 +++++++++++++++++ .../core/utils/reflect/ReflectUtils.java | 324 +++++ .../muyu/common/core/utils/sign/Base64.java | 256 ++++ .../muyu/common/core/utils/sql/SqlUtil.java | 59 + .../muyu/common/core/utils/uuid/IdUtils.java | 44 + .../com/muyu/common/core/utils/uuid/Seq.java | 78 ++ .../com/muyu/common/core/utils/uuid/UUID.java | 450 ++++++ .../core/validation/ValidationConfig.java | 14 + .../core/web/controller/BaseController.java | 129 ++ .../common/core/web/domain/BaseEntity.java | 80 ++ .../common/core/web/domain/TreeEntity.java | 47 + .../muyu/common/core/web/page/PageDomain.java | 93 ++ .../common/core/web/page/TableDataInfo.java | 45 + .../common/core/web/page/TableSupport.java | 53 + .../java/com/muyu/common/core/xss/Xss.java | 27 + .../muyu/common/core/xss/XssValidator.java | 31 + ...ot.autoconfigure.AutoConfiguration.imports | 2 + cloud-common/cloud-common-datascope/pom.xml | 27 + .../datascope/annotation/DataScope.java | 28 + .../datascope/aspect/DataScopeAspect.java | 149 ++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + cloud-common/cloud-common-datasource/pom.xml | 35 + .../common/datasource/annotation/Master.java | 18 + .../common/datasource/annotation/Slave.java | 18 + cloud-common/cloud-common-kafka/pom.xml | 36 + .../kafka/config/KafkaConsumerConfig.java | 94 ++ .../kafka/config/KafkaProducerConfig.java | 67 + ...ot.autoconfigure.AutoConfiguration.imports | 2 + cloud-common/cloud-common-log/pom.xml | 27 + .../com/muyu/common/log/annotation/Log.java | 46 + .../com/muyu/common/log/aspect/LogAspect.java | 220 +++ .../muyu/common/log/enums/BusinessStatus.java | 18 + .../muyu/common/log/enums/BusinessType.java | 58 + .../muyu/common/log/enums/OperatorType.java | 23 + .../log/filter/PropertyPreExcludeFilter.java | 20 + .../common/log/service/AsyncLogService.java | 27 + ...ot.autoconfigure.AutoConfiguration.imports | 2 + cloud-common/cloud-common-rabbit/pom.xml | 35 + .../rabbit/RabbitListenerConfigurer.java | 41 + ...ot.autoconfigure.AutoConfiguration.imports | 1 + cloud-common/cloud-common-redis/pom.xml | 33 + .../FastJson2JsonRedisSerializer.java | 49 + .../common/redis/configure/RedisConfig.java | 41 + .../common/redis/service/RedisService.java | 258 ++++ ...ot.autoconfigure.AutoConfiguration.imports | 2 + cloud-common/cloud-common-saas/pom.xml | 44 + .../many/datasource/ManyDataSource.java | 109 ++ .../constents/DatasourceContent.java | 19 + .../domain/model/DataSourceInfo.java | 50 + .../factory/DruidDataSourceFactory.java | 40 + .../holder/DynamicDataSourceHolder.java | 42 + .../datasource/role/DynamicDataSource.java | 55 + .../common/saas/contents/SaaSConstant.java | 12 + .../common/saas/domain/model/EntInfo.java | 25 + .../common/saas/exception/SaaSException.java | 28 + .../saas/interceptor/SaaSInterceptor.java | 52 + .../saas/interceptor/WebMvcSaaSConfig.java | 31 + cloud-common/cloud-common-seata/pom.xml | 27 + cloud-common/cloud-common-security/pom.xml | 39 + .../annotation/EnableCustomConfig.java | 26 + .../annotation/EnableMyFeignClients.java | 27 + .../common/security/annotation/InnerAuth.java | 18 + .../common/security/annotation/Logical.java | 18 + .../security/annotation/RequiresLogin.java | 16 + .../annotation/RequiresPermissions.java | 25 + .../security/annotation/RequiresRoles.java | 25 + .../security/aspect/InnerAuthAspect.java | 46 + .../security/aspect/PreAuthorizeAspect.java | 89 ++ .../muyu/common/security/auth/AuthLogic.java | 327 +++++ .../muyu/common/security/auth/AuthUtil.java | 154 +++ .../security/config/ApplicationConfig.java | 21 + .../common/security/config/WebMvcConfig.java | 32 + .../feign/FeignAutoConfiguration.java | 18 + .../feign/FeignRequestInterceptor.java | 48 + .../handler/GlobalExceptionHandler.java | 147 ++ .../interceptor/HeaderInterceptor.java | 50 + .../common/security/service/TokenService.java | 154 +++ .../muyu/common/security/utils/DictUtils.java | 71 + .../common/security/utils/SecurityUtils.java | 109 ++ ...ot.autoconfigure.AutoConfiguration.imports | 5 + cloud-common/cloud-common-system/pom.xml | 29 + .../muyu/common/system/domain/LoginUser.java | 66 + .../muyu/common/system/domain/SysDept.java | 108 ++ .../common/system/domain/SysDictData.java | 104 ++ .../common/system/domain/SysDictType.java | 62 + .../muyu/common/system/domain/SysFile.java | 27 + .../common/system/domain/SysLogininfor.java | 64 + .../muyu/common/system/domain/SysOperLog.java | 129 ++ .../muyu/common/system/domain/SysRole.java | 127 ++ .../muyu/common/system/domain/SysUser.java | 180 +++ .../system/remote/RemoteFileService.java | 29 + .../system/remote/RemoteLogService.java | 42 + .../system/remote/RemoteUserService.java | 45 + .../factory/RemoteFileFallbackFactory.java | 31 + .../factory/RemoteLogFallbackFactory.java | 37 + .../factory/RemoteUserFallbackFactory.java | 44 + ...ot.autoconfigure.AutoConfiguration.imports | 3 + cloud-common/cloud-common-xxl/pom.xml | 37 + .../com/muyu/common/xxl/XXLJobConfig.java | 28 + .../com/muyu/common/xxl/XxlJobProperties.java | 63 + .../common/xxl/demo/XxlJobDemoService.java | 38 + ...ot.autoconfigure.AutoConfiguration.imports | 3 + cloud-common/pom.xml | 35 + cloud-gateway/pom.xml | 104 ++ .../muyu/gateway/CloudGatewayApplication.java | 17 + .../muyu/gateway/config/CaptchaConfig.java | 82 ++ .../muyu/gateway/config/GatewayConfig.java | 21 + .../gateway/config/KaptchaTextCreator.java | 61 + .../config/RouterFunctionConfiguration.java | 29 + .../config/properties/CaptchaProperties.java | 41 + .../properties/IgnoreWhiteProperties.java | 31 + .../config/properties/XssProperties.java | 44 + .../muyu/gateway/filter/AccessLogFilter.java | 226 +++ .../com/muyu/gateway/filter/AuthFilter.java | 120 ++ .../gateway/filter/BlackListUrlFilter.java | 58 + .../gateway/filter/CacheRequestFilter.java | 75 + .../gateway/filter/ValidateCodeFilter.java | 69 + .../com/muyu/gateway/filter/XssFilter.java | 114 ++ .../handler/GatewayExceptionHandler.java | 48 + .../handler/SentinelFallbackHandler.java | 35 + .../gateway/handler/ValidateCodeHandler.java | 37 + .../com/muyu/gateway/model/AccessLog.java | 120 ++ .../gateway/model/resp/CaptchaCodeResp.java | 25 + .../gateway/service/ValidateCodeService.java | 23 + .../service/impl/ValidateCodeServiceImpl.java | 109 ++ .../muyu/gateway/utils/WebFrameworkUtils.java | 113 ++ cloud-gateway/src/main/resources/banner.txt | 2 + .../src/main/resources/bootstrap.yml | 75 + .../src/main/resources/logback/dev.xml | 74 + .../src/main/resources/logback/prod.xml | 88 ++ .../src/main/resources/logback/test.xml | 88 ++ .../cloud-modules-enterprise-cache/pom.xml | 38 + .../enterprise/cache/FaultCacheService.java | 23 + .../enterprise/cache/FenceCahceService.java | 24 + .../enterprise/cache/VehicleCacheService.java | 30 + .../cache/WarnRuleCacheService.java | 24 + .../cache/WarnStrategyCacheService.java | 25 + ...ot.autoconfigure.AutoConfiguration.imports | 5 + .../cloud-modules-enterprise-common/pom.xml | 30 + .../java/com/muyu/domain/BoundMiddle.java | 42 + .../src/main/java/com/muyu/domain/Fence.java | 85 ++ .../main/java/com/muyu/domain/FenceGroup.java | 71 + .../main/java/com/muyu/domain/LanType.java | 36 + .../java/com/muyu/domain/MessageTemplate.java | 60 + .../java/com/muyu/domain/MessageValue.java | 80 ++ .../src/main/java/com/muyu/domain/Middle.java | 70 + .../main/java/com/muyu/domain/Vehicle.java | 155 +++ .../java/com/muyu/domain/VehicleType.java | 50 + .../main/java/com/muyu/domain/WarnLogs.java | 118 ++ .../main/java/com/muyu/domain/WarnRule.java | 105 ++ .../java/com/muyu/domain/WarnStrategy.java | 74 + .../com/muyu/domain/req/FenceGroupAddReq.java | 51 + .../com/muyu/domain/req/FenceGroupReq.java | 58 + .../java/com/muyu/domain/req/FenceReq.java | 43 + .../java/com/muyu/domain/req/HaveFence.java | 55 + .../domain/req/MessageTemplateAddReq.java | 36 + .../muyu/domain/req/MessageValueAddReq.java | 60 + .../com/muyu/domain/req/MessageValueReq.java | 33 + .../java/com/muyu/domain/req/MiddleReq.java | 30 + .../com/muyu/domain/req/VehicleAddReq.java | 97 ++ .../com/muyu/domain/req/VehicleManageReq.java | 43 + .../com/muyu/domain/req/VehicleUpdReq.java | 97 ++ .../com/muyu/domain/req/WarnVehicleReq.java | 26 + .../java/com/muyu/domain/resp/BoundFence.java | 62 + .../java/com/muyu/domain/resp/FenceResp.java | 85 ++ .../domain/resp/MessageTemplateListResp.java | 56 + .../domain/resp/MessageValueListResp.java | 72 + .../muyu/domain/resp/VehicleManageResp.java | 65 + .../com/muyu/domain/resp/WarnVehicleResp.java | 69 + .../cloud-modules-enterprise-server/pom.xml | 149 ++ .../CloudEnterpriseApplication.java | 18 + .../controller/ElectController.java | 159 +++ .../controller/FencegroupController.java | 91 ++ .../controller/MessageTemplateController.java | 73 + .../controller/MessageValueController.java | 100 ++ .../controller/MiddleController.java | 59 + .../controller/VehicleController.java | 163 +++ .../controller/VehicleTypeController.java | 42 + .../controller/WarnLogsController.java | 80 ++ .../controller/WarnRuleController.java | 86 ++ .../controller/WarnStrategyController.java | 102 ++ .../muyu/enterprise/mapper/ElectMapper.java | 45 + .../enterprise/mapper/FencegroupMapper.java | 34 + .../muyu/enterprise/mapper/LanTypeMapper.java | 17 + .../mapper/MessageTemplateMapper.java | 17 + .../enterprise/mapper/MessageValueMapper.java | 17 + .../muyu/enterprise/mapper/MiddleMapper.java | 21 + .../muyu/enterprise/mapper/VehicleMapper.java | 43 + .../enterprise/mapper/VehicleTypeMapper.java | 17 + .../enterprise/mapper/WarnLogsMapper.java | 9 + .../enterprise/mapper/WarnRuleMapper.java | 9 + .../enterprise/mapper/WarnStrategyMapper.java | 9 + .../muyu/enterprise/service/ElectService.java | 44 + .../service/IFencegroupService.java | 25 + .../enterprise/service/LanTypeService.java | 25 + .../service/MessageTemplateService.java | 17 + .../service/MessageValueService.java | 41 + .../enterprise/service/MiddleService.java | 32 + .../enterprise/service/VehicleService.java | 34 + .../service/VehicleTypeService.java | 15 + .../enterprise/service/WarnLogsService.java | 11 + .../enterprise/service/WarnRuleService.java | 7 + .../service/WarnStrategyService.java | 13 + .../service/impl/ElectServiceImpl.java | 81 ++ .../service/impl/FencegroupServiceImpl.java | 50 + .../service/impl/LanTypeServiceImpl.java | 24 + .../impl/MessageTemplateServiceImpl.java | 21 + .../service/impl/MessageValueServiceImpl.java | 113 ++ .../service/impl/MiddleServiceImpl.java | 53 + .../service/impl/VehicleServiceImpl.java | 72 + .../service/impl/VehicleTypeServiceImpl.java | 21 + .../service/impl/WarnLogsServiceImpl.java | 28 + .../service/impl/WarnRuleServiceImpl.java | 11 + .../service/impl/WarnStrategyServiceImpl.java | 37 + .../enterprise/utils/VehicleConstant.java | 28 + .../src/main/resources/banner.txt | 2 + .../src/main/resources/bootstrap.yml | 61 + .../src/main/resources/logback/dev.xml | 74 + .../src/main/resources/logback/prod.xml | 81 ++ .../src/main/resources/logback/test.xml | 81 ++ .../cloud-modules-enterprise/pom.xml | 127 ++ cloud-modules/cloud-modules-file/pom.xml | 82 ++ .../com/muyu/file/CloudFileApplication.java | 17 + .../com/muyu/file/config/MinioConfig.java | 72 + .../com/muyu/file/config/ResourcesConfig.java | 48 + .../file/controller/SysFileController.java | 44 + .../muyu/file/service/ISysFileService.java | 21 + .../file/service/LocalSysFileServiceImpl.java | 50 + .../file/service/MinioSysFileServiceImpl.java | 50 + .../com/muyu/file/utils/FileUploadUtils.java | 163 +++ .../src/main/resources/banner.txt | 2 + .../src/main/resources/bootstrap.yml | 47 + .../src/main/resources/logback/dev.xml | 74 + .../src/main/resources/logback/prod.xml | 88 ++ .../src/main/resources/logback/test.xml | 88 ++ cloud-modules/cloud-modules-gen/pom.xml | 109 ++ .../com/muyu/gen/CloudGenApplication.java | 20 + .../java/com/muyu/gen/config/GenConfig.java | 65 + .../muyu/gen/controller/GenController.java | 193 +++ .../java/com/muyu/gen/domain/GenTable.java | 376 +++++ .../com/muyu/gen/domain/GenTableColumn.java | 358 +++++ .../com/muyu/gen/domain/GenTableResp.java | 43 + .../muyu/gen/mapper/GenTableColumnMapper.java | 67 + .../com/muyu/gen/mapper/GenTableMapper.java | 92 ++ .../service/GenTableColumnServiceImpl.java | 68 + .../muyu/gen/service/GenTableServiceImpl.java | 465 +++++++ .../gen/service/IGenTableColumnService.java | 48 + .../muyu/gen/service/IGenTableService.java | 131 ++ .../main/java/com/muyu/gen/util/GenUtils.java | 229 +++ .../muyu/gen/util/VelocityInitializer.java | 30 + .../java/com/muyu/gen/util/VelocityUtils.java | 357 +++++ .../src/main/resources/banner.txt | 2 + .../src/main/resources/bootstrap.yml | 51 + .../src/main/resources/logback/dev.xml | 74 + .../src/main/resources/logback/prod.xml | 88 ++ .../src/main/resources/logback/test.xml | 88 ++ .../mapper/generator/GenTableColumnMapper.xml | 157 +++ .../mapper/generator/GenTableMapper.xml | 317 +++++ .../main/resources/vm/java/controller.java.vm | 116 ++ .../src/main/resources/vm/java/domain.java.vm | 103 ++ .../src/main/resources/vm/java/mapper.java.vm | 91 ++ .../main/resources/vm/java/service.java.vm | 61 + .../resources/vm/java/serviceImpl.java.vm | 169 +++ .../main/resources/vm/java/sub-domain.java.vm | 79 ++ .../src/main/resources/vm/js/api.js.vm | 44 + .../src/main/resources/vm/sql/sql.vm | 22 + .../main/resources/vm/vue/index-tree.vue.vm | 505 +++++++ .../src/main/resources/vm/vue/index.vue.vm | 602 ++++++++ .../resources/vm/vue/v3/index-tree.vue.vm | 474 +++++++ .../src/main/resources/vm/vue/v3/index.vue.vm | 590 ++++++++ .../src/main/resources/vm/vue/v3/readme.txt | 1 + .../src/main/resources/vm/xml/mapper.xml.vm | 135 ++ .../com/muyu/gen/CloudGenApplication.java | 19 + .../java/com/muyu/gen/config/GenConfig.java | 65 + .../muyu/gen/controller/GenController.java | 236 ++++ .../java/com/muyu/gen/domain/GenTable.java | 378 +++++ .../com/muyu/gen/domain/GenTableColumn.java | 358 +++++ .../com/muyu/gen/domain/GenTableResp.java | 43 + .../muyu/gen/mapper/GenTableColumnMapper.java | 64 + .../com/muyu/gen/mapper/GenTableMapper.java | 91 ++ .../service/GenTableColumnServiceImpl.java | 74 + .../muyu/gen/service/GenTableServiceImpl.java | 537 +++++++ .../gen/service/IGenTableColumnService.java | 47 + .../muyu/gen/service/IGenTableService.java | 129 ++ .../main/java/com/muyu/gen/util/GenUtils.java | 229 +++ .../muyu/gen/util/VelocityInitializer.java | 30 + .../java/com/muyu/gen/util/VelocityUtils.java | 357 +++++ .../src/src/main/resources/banner.txt | 2 + .../src/src/main/resources/bootstrap.yml | 51 + .../src/src/main/resources/logback/dev.xml | 74 + .../src/src/main/resources/logback/prod.xml | 88 ++ .../src/src/main/resources/logback/test.xml | 88 ++ .../mapper/generator/GenTableColumnMapper.xml | 132 ++ .../mapper/generator/GenTableMapper.xml | 234 ++++ .../main/resources/vm/java/controller.java.vm | 123 ++ .../src/main/resources/vm/java/domain.java.vm | 103 ++ .../src/main/resources/vm/java/mapper.java.vm | 20 + .../main/resources/vm/java/service.java.vm | 37 + .../resources/vm/java/serviceImpl.java.vm | 115 ++ .../main/resources/vm/java/sub-domain.java.vm | 78 ++ .../src/src/main/resources/vm/js/api.js.vm | 44 + .../src/src/main/resources/vm/sql/sql.vm | 22 + .../main/resources/vm/vue/index-tree.vue.vm | 505 +++++++ .../src/main/resources/vm/vue/index.vue.vm | 602 ++++++++ .../resources/vm/vue/v3/index-tree.vue.vm | 474 +++++++ .../src/main/resources/vm/vue/v3/index.vue.vm | 590 ++++++++ .../src/main/resources/vm/vue/v3/readme.txt | 1 + .../src/main/resources/vm/xml/mapper.xml.vm | 135 ++ .../cloud-modules-processing/pom.xml | 122 ++ .../VehicleProcessingApplication.java | 25 + .../abstraction/EventProcessor.java | 26 + .../consumer/KafkaConsumerService.java | 64 + .../muyu/processing/controller/TestKafka.java | 38 + .../processing/interfaces/EventInterface.java | 17 + .../java/com/muyu/processing/utils/IotDb.java | 73 + .../src/main/resources/banner.txt | 2 + .../src/main/resources/bootstrap.yml | 133 ++ .../src/main/resources/logback/dev.xml | 74 + .../src/main/resources/logback/prod.xml | 81 ++ .../src/main/resources/logback/test.xml | 81 ++ .../cloud-modules-protocol-parsing/pom.xml | 137 ++ .../parsing/ProtocolParsingApplication.java | 23 + .../parsing/feign/RemoteServiceClient.java | 40 + .../factory/RemoteServiceClientFactory.java | 40 + .../protocol/parsing/test/ParsingTest.java | 155 +++ .../src/main/resources/banner.txt | 2 + .../src/main/resources/bootstrap.yml | 133 ++ .../src/main/resources/logback/dev.xml | 74 + .../src/main/resources/logback/prod.xml | 81 ++ .../src/main/resources/logback/test.xml | 81 ++ cloud-modules/cloud-modules-system/pom.xml | 102 ++ .../muyu/system/CloudSystemApplication.java | 21 + .../controller/SysConfigController.java | 122 ++ .../system/controller/SysDeptController.java | 113 ++ .../controller/SysDictDataController.java | 107 ++ .../controller/SysDictTypeController.java | 115 ++ .../controller/SysLogininforController.java | 80 ++ .../system/controller/SysMenuController.java | 137 ++ .../controller/SysNoticeController.java | 80 ++ .../controller/SysOperlogController.java | 67 + .../system/controller/SysPostController.java | 110 ++ .../controller/SysProfileController.java | 134 ++ .../system/controller/SysRoleController.java | 215 +++ .../system/controller/SysUserController.java | 303 ++++ .../controller/SysUserOnlineController.java | 69 + .../com/muyu/system/domain/SysConfig.java | 81 ++ .../java/com/muyu/system/domain/SysMenu.java | 138 ++ .../com/muyu/system/domain/SysNotice.java | 58 + .../java/com/muyu/system/domain/SysPost.java | 78 ++ .../com/muyu/system/domain/SysRoleDept.java | 27 + .../com/muyu/system/domain/SysRoleMenu.java | 28 + .../com/muyu/system/domain/SysUserOnline.java | 52 + .../com/muyu/system/domain/SysUserPost.java | 28 + .../com/muyu/system/domain/SysUserRole.java | 27 + .../muyu/system/domain/resp/AuthRoleResp.java | 33 + .../muyu/system/domain/resp/DeptTreeResp.java | 32 + .../muyu/system/domain/resp/ProfileResp.java | 34 + .../system/domain/resp/RoleMenuTreeResp.java | 31 + .../domain/resp/UserDetailInfoResp.java | 47 + .../muyu/system/domain/resp/UserInfoResp.java | 36 + .../com/muyu/system/domain/vo/MetaVo.java | 54 + .../com/muyu/system/domain/vo/RouterVo.java | 62 + .../com/muyu/system/domain/vo/TreeSelect.java | 56 + .../muyu/system/mapper/SysConfigMapper.java | 12 + .../com/muyu/system/mapper/SysDeptMapper.java | 131 ++ .../muyu/system/mapper/SysDictDataMapper.java | 106 ++ .../muyu/system/mapper/SysDictTypeMapper.java | 92 ++ .../system/mapper/SysLogininforMapper.java | 45 + .../com/muyu/system/mapper/SysMenuMapper.java | 138 ++ .../muyu/system/mapper/SysNoticeMapper.java | 67 + .../muyu/system/mapper/SysOperLogMapper.java | 52 + .../com/muyu/system/mapper/SysPostMapper.java | 110 ++ .../muyu/system/mapper/SysRoleDeptMapper.java | 50 + .../com/muyu/system/mapper/SysRoleMapper.java | 119 ++ .../muyu/system/mapper/SysRoleMenuMapper.java | 50 + .../com/muyu/system/mapper/SysUserMapper.java | 149 ++ .../muyu/system/mapper/SysUserPostMapper.java | 49 + .../muyu/system/mapper/SysUserRoleMapper.java | 69 + .../com/muyu/system/rabbit/RabbitTest.java | 53 + .../muyu/system/service/SysConfigService.java | 44 + .../muyu/system/service/SysDeptService.java | 138 ++ .../system/service/SysDictDataService.java | 66 + .../system/service/SysDictTypeService.java | 106 ++ .../system/service/SysLogininforService.java | 43 + .../muyu/system/service/SysMenuService.java | 161 +++ .../muyu/system/service/SysNoticeService.java | 67 + .../system/service/SysOperLogService.java | 54 + .../system/service/SysPermissionService.java | 30 + .../muyu/system/service/SysPostService.java | 110 ++ .../muyu/system/service/SysRoleService.java | 191 +++ .../system/service/SysUserOnlineService.java | 52 + .../muyu/system/service/SysUserService.java | 235 ++++ .../service/impl/SysConfigServiceImpl.java | 114 ++ .../service/impl/SysDeptServiceImpl.java | 318 +++++ .../service/impl/SysDictDataServiceImpl.java | 108 ++ .../service/impl/SysDictTypeServiceImpl.java | 210 +++ .../impl/SysLogininforServiceImpl.java | 64 + .../service/impl/SysMenuServiceImpl.java | 501 +++++++ .../service/impl/SysNoticeServiceImpl.java | 93 ++ .../service/impl/SysOperLogServiceImpl.java | 77 ++ .../impl/SysPermissionServiceImpl.java | 77 ++ .../service/impl/SysPostServiceImpl.java | 174 +++ .../service/impl/SysRoleServiceImpl.java | 399 ++++++ .../impl/SysUserOnlineServiceImpl.java | 85 ++ .../service/impl/SysUserServiceImpl.java | 512 +++++++ .../src/main/resources/banner.txt | 2 + .../src/main/resources/bootstrap.yml | 60 + .../src/main/resources/logback/dev.xml | 74 + .../src/main/resources/logback/prod.xml | 81 ++ .../src/main/resources/logback/test.xml | 81 ++ .../mapper/system/SysConfigMapper.xml | 128 ++ .../resources/mapper/system/SysDeptMapper.xml | 183 +++ .../mapper/system/SysDictDataMapper.xml | 143 ++ .../mapper/system/SysDictTypeMapper.xml | 107 ++ .../mapper/system/SysLogininforMapper.xml | 54 + .../resources/mapper/system/SysMenuMapper.xml | 258 ++++ .../mapper/system/SysNoticeMapper.xml | 100 ++ .../mapper/system/SysOperLogMapper.xml | 103 ++ .../resources/mapper/system/SysPostMapper.xml | 131 ++ .../mapper/system/SysRoleDeptMapper.xml | 38 + .../resources/mapper/system/SysRoleMapper.xml | 163 +++ .../mapper/system/SysRoleMenuMapper.xml | 38 + .../resources/mapper/system/SysUserMapper.xml | 276 ++++ .../mapper/system/SysUserPostMapper.xml | 38 + .../mapper/system/SysUserRoleMapper.xml | 51 + .../cloud-modules-vehicle-gateway/pom.xml | 136 ++ .../gateway/VehicleGatewayApplication.java | 18 + .../gateway/test/MqttPublishSample.java | 50 + .../gateway/test/example/DelInstance.java | 108 ++ .../vehicle/gateway/test/example/Sample.java | 85 ++ .../gateway/test/example/StartInstance.java | 56 + .../src/main/resources/banner.txt | 2 + .../src/main/resources/bootstrap.yml | 60 + .../src/main/resources/logback/dev.xml | 74 + .../src/main/resources/logback/prod.xml | 81 ++ .../src/main/resources/logback/test.xml | 81 ++ cloud-modules/pom.xml | 48 + cloud-visual/cloud-visual-monitor/pom.xml | 75 + .../monitor/CloudMonitorApplication.java | 18 + .../monitor/config/WebSecurityConfigurer.java | 37 + .../src/main/resources/banner.txt | 2 + .../src/main/resources/bootstrap.yml | 47 + .../src/main/resources/logback/dev.xml | 74 + .../src/main/resources/logback/prod.xml | 74 + .../src/main/resources/logback/test.xml | 74 + cloud-visual/pom.xml | 22 + init-file/cloud-seata.sql | 118 ++ init-file/cloud-system.sql | 682 +++++++++ init-file/nacos_config.zip | Bin 0 -> 7550 bytes init-file/xxl-init.sql | 122 ++ pom.xml | 357 +++++ skywalking/agent/LICENSE | 233 ++++ skywalking/agent/NOTICE | 299 ++++ .../apm-toolkit-kafka-activation-9.2.0.jar | Bin 0 -> 12086 bytes ...apm-toolkit-log4j-1.x-activation-9.2.0.jar | Bin 0 -> 33392 bytes ...apm-toolkit-log4j-2.x-activation-9.2.0.jar | Bin 0 -> 45715 bytes ...m-toolkit-logback-1.x-activation-9.2.0.jar | Bin 0 -> 51489 bytes .../apm-toolkit-logging-common-9.2.0.jar | Bin 0 -> 11940 bytes .../apm-toolkit-meter-activation-9.2.0.jar | Bin 0 -> 28085 bytes ...pm-toolkit-micrometer-activation-9.2.0.jar | Bin 0 -> 186501 bytes ...m-toolkit-opentracing-activation-9.2.0.jar | Bin 0 -> 35571 bytes .../apm-toolkit-trace-activation-9.2.0.jar | Bin 0 -> 113805 bytes .../apm-toolkit-webflux-activation-9.2.0.jar | Bin 0 -> 27347 bytes .../apm-jdk-forkjoinpool-plugin-9.2.0.jar | Bin 0 -> 15834 bytes .../apm-jdk-http-plugin-9.2.0.jar | Bin 0 -> 21541 bytes .../apm-jdk-threading-plugin-9.2.0.jar | Bin 0 -> 20918 bytes .../apm-jdk-threadpool-plugin-9.2.0.jar | Bin 0 -> 16806 bytes skywalking/agent/config/agent.config | 306 ++++ .../apm-impala-jdbc-2.6.x-plugin-9.2.0.jar | Bin 0 -> 30786 bytes skywalking/agent/licenses/LICENSE-asm.txt | 26 + .../apm-customize-enhance-plugin-9.2.0.jar | Bin 0 -> 33367 bytes .../apm-ehcache-2.x-plugin-9.2.0.jar | Bin 0 -> 33401 bytes .../apm-fastjson-1.x-plugin-9.2.0.jar | Bin 0 -> 24700 bytes .../apm-gson-2.x-plugin-9.2.0.jar | Bin 0 -> 17272 bytes .../apm-guava-cache-plugin-9.2.0.jar | Bin 0 -> 19012 bytes .../apm-jackson-2.x-plugin-9.2.0.jar | Bin 0 -> 21118 bytes .../apm-kotlin-coroutine-plugin-9.2.0.jar | Bin 0 -> 14409 bytes .../apm-mybatis-3.x-plugin-9.2.0.jar | Bin 0 -> 16871 bytes .../apm-nacos-client-2.x-plugin-9.2.0.jar | Bin 0 -> 24597 bytes .../apm-netty-http-4.1.x-plugin-9.2.0.jar | Bin 0 -> 57102 bytes .../apm-quartz-scheduler-2.x-plugin-9.2.0.jar | Bin 0 -> 17342 bytes .../apm-resttemplate-6.x-plugin-9.2.0.jar | Bin 0 -> 47227 bytes .../apm-sentinel-1.x-plugin-9.2.0.jar | Bin 0 -> 24347 bytes .../apm-shenyu-2.4.x-plugin-9.2.0.jar | Bin 0 -> 45020 bytes .../apm-spring-annotation-plugin-9.2.0.jar | Bin 0 -> 17981 bytes ...pring-cloud-gateway-2.0.x-plugin-9.2.0.jar | Bin 0 -> 39386 bytes ...pring-cloud-gateway-2.1.x-plugin-9.2.0.jar | Bin 0 -> 44848 bytes ...-spring-cloud-gateway-3.x-plugin-9.2.0.jar | Bin 0 -> 41083 bytes ...-spring-cloud-gateway-4.x-plugin-9.2.0.jar | Bin 0 -> 41244 bytes .../apm-spring-tx-plugin-9.2.0.jar | Bin 0 -> 18956 bytes .../apm-spring-webflux-5.x-plugin-9.2.0.jar | Bin 0 -> 17874 bytes .../apm-spring-webflux-6.x-plugin-9.2.0.jar | Bin 0 -> 18062 bytes ...-springmvc-annotation-6.x-plugin-9.2.0.jar | Bin 0 -> 31461 bytes .../apm-trace-ignore-plugin-9.2.0.jar | Bin 0 -> 17834 bytes .../apm-zookeeper-3.4.x-plugin-9.2.0.jar | Bin 0 -> 21029 bytes .../trace-sampler-cpu-policy-plugin-9.2.0.jar | Bin 0 -> 12369 bytes .../kafka-reporter-plugin-9.2.0.jar | Bin 0 -> 3566533 bytes .../lz4-java-1.6.0.jar | Bin 0 -> 639985 bytes .../snappy-java-1.1.7.3.jar | Bin 0 -> 2021167 bytes .../zstd-jni-1.4.3-1.jar | Bin 0 -> 4056079 bytes .../plugins/apm-activemq-5.x-plugin-9.2.0.jar | Bin 0 -> 21279 bytes ...rtemis-jakarta-client-2.x-plugin-9.2.0.jar | Bin 0 -> 25626 bytes .../plugins/apm-aerospike-plugin-9.2.0.jar | Bin 0 -> 16171 bytes .../apm-armeria-0.84.x-plugin-9.2.0.jar | Bin 0 -> 17447 bytes .../apm-armeria-0.85.x-plugin-9.2.0.jar | Bin 0 -> 25524 bytes .../apm-armeria-1.0.x-plugin-9.2.0.jar | Bin 0 -> 14442 bytes .../apm-asynchttpclient-2.x-plugin-9.2.0.jar | Bin 0 -> 15722 bytes .../agent/plugins/apm-avro-plugin-9.2.0.jar | Bin 0 -> 25758 bytes .../plugins/apm-canal-1.x-plugin-9.2.0.jar | Bin 0 -> 19074 bytes ...cassandra-java-driver-3.x-plugin-9.2.0.jar | Bin 0 -> 24566 bytes .../apm-clickhouse-0.3.1-plugin-9.2.0.jar | Bin 0 -> 23626 bytes .../apm-clickhouse-0.3.2.x-plugin-9.2.0.jar | Bin 0 -> 50779 bytes .../plugins/apm-cxf-3.x-plugin-9.2.0.jar | Bin 0 -> 19396 bytes .../plugins/apm-dubbo-2.7.x-plugin-9.2.0.jar | Bin 0 -> 20766 bytes .../plugins/apm-dubbo-3.x-plugin-9.2.0.jar | Bin 0 -> 16760 bytes .../agent/plugins/apm-dubbo-plugin-9.2.0.jar | Bin 0 -> 17511 bytes .../apm-elastic-job-2.x-plugin-9.2.0.jar | Bin 0 -> 12745 bytes .../apm-elasticjob-3.x-plugin-9.2.0.jar | Bin 0 -> 13019 bytes .../apm-elasticsearch-5.x-plugin-9.2.0.jar | Bin 0 -> 36970 bytes .../apm-elasticsearch-6.x-plugin-9.2.0.jar | Bin 0 -> 98571 bytes .../apm-elasticsearch-7.x-plugin-9.2.0.jar | Bin 0 -> 31771 bytes ...pm-feign-default-http-9.x-plugin-9.2.0.jar | Bin 0 -> 23216 bytes .../apm-finagle-6.25.x-plugin-9.2.0.jar | Bin 0 -> 50637 bytes ...y-2.x-4.x-work-threadpool-plugin-9.2.0.jar | Bin 0 -> 14164 bytes .../plugins/apm-grizzly-2.x-plugin-9.2.0.jar | Bin 0 -> 17526 bytes .../plugins/apm-grpc-1.x-plugin-9.2.0.jar | Bin 0 -> 55432 bytes .../apm-guava-eventbus-plugin-9.2.0.jar | Bin 0 -> 19159 bytes .../agent/plugins/apm-h2-1.x-plugin-9.2.0.jar | Bin 0 -> 22215 bytes .../apm-hbase-1.x-2.x-plugin-9.2.0.jar | Bin 0 -> 19383 bytes .../apm-hikaricp-3.x-4.x-plugin-9.2.0.jar | Bin 0 -> 20900 bytes .../apm-httpClient-4.x-plugin-9.2.0.jar | Bin 0 -> 20761 bytes .../apm-httpasyncclient-4.x-plugin-9.2.0.jar | Bin 0 -> 33294 bytes .../apm-httpclient-3.x-plugin-9.2.0.jar | Bin 0 -> 13892 bytes .../apm-httpclient-5.x-plugin-9.2.0.jar | Bin 0 -> 29829 bytes .../plugins/apm-httpclient-commons-9.2.0.jar | Bin 0 -> 10202 bytes .../apm-hutool-http-5.x-plugin-9.2.0.jar | Bin 0 -> 13518 bytes .../plugins/apm-hystrix-1.x-plugin-9.2.0.jar | Bin 0 -> 31398 bytes .../plugins/apm-influxdb-2.x-plugin-9.2.0.jar | Bin 0 -> 17576 bytes .../agent/plugins/apm-jdbc-commons-9.2.0.jar | Bin 0 -> 105592 bytes .../plugins/apm-jersey-2.x-plugin-9.2.0.jar | Bin 0 -> 13237 bytes .../plugins/apm-jersey-3.x-plugin-9.2.0.jar | Bin 0 -> 13247 bytes .../apm-jetty-client-11.x-plugin-9.2.0.jar | Bin 0 -> 13328 bytes .../apm-jetty-client-9.0-plugin-9.2.0.jar | Bin 0 -> 22487 bytes .../apm-jetty-client-9.x-plugin-9.2.0.jar | Bin 0 -> 22981 bytes .../apm-jetty-server-11.x-plugin-9.2.0.jar | Bin 0 -> 19196 bytes .../apm-jetty-server-9.x-plugin-9.2.0.jar | Bin 0 -> 19412 bytes .../apm-jetty-thread-pool-plugin-9.2.0.jar | Bin 0 -> 13021 bytes .../agent/plugins/apm-kafka-commons-9.2.0.jar | Bin 0 -> 11710 bytes .../agent/plugins/apm-kafka-plugin-9.2.0.jar | Bin 0 -> 46524 bytes ...-kylin-jdbc-2.6.x-3.x-4.x-plugin-9.2.0.jar | Bin 0 -> 30777 bytes .../plugins/apm-lettuce-5.x-plugin-9.2.0.jar | Bin 0 -> 29536 bytes .../plugins/apm-light4j-plugin-9.2.0.jar | Bin 0 -> 15156 bytes .../plugins/apm-mariadb-2.x-plugin-9.2.0.jar | Bin 0 -> 31263 bytes .../plugins/apm-mongodb-2.x-plugin-9.2.0.jar | Bin 0 -> 34231 bytes .../plugins/apm-mongodb-3.x-plugin-9.2.0.jar | Bin 0 -> 37903 bytes .../plugins/apm-mongodb-4.x-plugin-9.2.0.jar | Bin 0 -> 79873 bytes .../agent/plugins/apm-mssql-commons-9.2.0.jar | Bin 0 -> 21810 bytes .../plugins/apm-mssql-jdbc-plugin-9.2.0.jar | Bin 0 -> 16172 bytes .../apm-mssql-jtds-1.x-plugin-9.2.0.jar | Bin 0 -> 14463 bytes .../plugins/apm-mysql-5.x-plugin-9.2.0.jar | Bin 0 -> 31098 bytes .../plugins/apm-mysql-6.x-plugin-9.2.0.jar | Bin 0 -> 32097 bytes .../plugins/apm-mysql-8.x-plugin-9.2.0.jar | Bin 0 -> 30503 bytes .../agent/plugins/apm-mysql-commons-9.2.0.jar | Bin 0 -> 20552 bytes .../plugins/apm-neo4j-4.x-plugin-9.2.0.jar | Bin 0 -> 29423 bytes .../apm-netty-socketio-plugin-9.2.0.jar | Bin 0 -> 22613 bytes .../apm-nutz-http-1.x-plugin-9.2.0.jar | Bin 0 -> 17056 bytes ...m-nutz-mvc-annotation-1.x-plugin-9.2.0.jar | Bin 0 -> 15996 bytes .../plugins/apm-okhttp-3.x-plugin-9.2.0.jar | Bin 0 -> 19774 bytes .../plugins/apm-okhttp-4.x-plugin-9.2.0.jar | Bin 0 -> 19813 bytes .../agent/plugins/apm-okhttp-common-9.2.0.jar | Bin 0 -> 19361 bytes .../plugins/apm-play-2.x-plugin-9.2.0.jar | Bin 0 -> 16508 bytes .../apm-postgresql-8.x-plugin-9.2.0.jar | Bin 0 -> 46943 bytes .../apm-pulsar-2.2-2.7-plugin-9.2.0.jar | Bin 0 -> 14734 bytes .../plugins/apm-pulsar-2.8.x-plugin-9.2.0.jar | Bin 0 -> 15839 bytes .../agent/plugins/apm-pulsar-common-9.2.0.jar | Bin 0 -> 37821 bytes .../agent/plugins/apm-quasar-plugin-9.2.0.jar | Bin 0 -> 12882 bytes .../plugins/apm-rabbitmq-plugin-9.2.0.jar | Bin 0 -> 20026 bytes .../plugins/apm-redisson-3.x-plugin-9.2.0.jar | Bin 0 -> 34243 bytes .../apm-resttemplate-3.x-plugin-9.2.0.jar | Bin 0 -> 39039 bytes .../apm-resttemplate-4.3.x-plugin-9.2.0.jar | Bin 0 -> 39059 bytes .../plugins/apm-rocketMQ-5.x-plugin-9.2.0.jar | Bin 0 -> 37342 bytes .../plugins/apm-rocketmq-3.x-plugin-9.2.0.jar | Bin 0 -> 31792 bytes .../plugins/apm-rocketmq-4.x-plugin-9.2.0.jar | Bin 0 -> 37282 bytes ...-rocketmq-client-java-5.x-plugin-9.2.0.jar | Bin 0 -> 45197 bytes ...vicecomb-java-chassis-2.x-plugin-9.2.0.jar | Bin 0 -> 18009 bytes .../apm-sharding-sphere-3.x-plugin-9.2.0.jar | Bin 0 -> 22514 bytes ...apm-sharding-sphere-4.1.0-plugin-9.2.0.jar | Bin 0 -> 23642 bytes .../apm-shardingsphere-4.0.x-plugin-9.2.0.jar | Bin 0 -> 23621 bytes .../apm-shardingsphere-5.0.0-plugin-9.2.0.jar | Bin 0 -> 29925 bytes .../plugins/apm-solrj-7.x-plugin-9.2.0.jar | Bin 0 -> 22123 bytes ...m-spring-async-annotation-plugin-9.2.0.jar | Bin 0 -> 13216 bytes ...pm-spring-cloud-feign-1.x-plugin-9.2.0.jar | Bin 0 -> 11590 bytes ...pm-spring-cloud-feign-2.x-plugin-9.2.0.jar | Bin 0 -> 11598 bytes ...pring-concurrent-util-4.x-plugin-9.2.0.jar | Bin 0 -> 27946 bytes .../plugins/apm-spring-core-patch-9.2.0.jar | Bin 0 -> 28010 bytes .../apm-spring-kafka-1.x-plugin-9.2.0.jar | Bin 0 -> 14063 bytes .../apm-spring-kafka-2.x-plugin-9.2.0.jar | Bin 0 -> 14806 bytes ...ring-scheduled-annotation-plugin-9.2.0.jar | Bin 0 -> 16865 bytes ...-springmvc-annotation-3.x-plugin-9.2.0.jar | Bin 0 -> 21047 bytes ...-springmvc-annotation-4.x-plugin-9.2.0.jar | Bin 0 -> 25525 bytes ...-springmvc-annotation-5.x-plugin-9.2.0.jar | Bin 0 -> 31620 bytes ...apm-springmvc-annotation-commons-9.2.0.jar | Bin 0 -> 35906 bytes .../apm-spymemcached-2.x-plugin-9.2.0.jar | Bin 0 -> 15300 bytes .../plugins/apm-struts2-2.x-plugin-9.2.0.jar | Bin 0 -> 13051 bytes .../apm-tomcat-thread-pool-plugin-9.2.0.jar | Bin 0 -> 12784 bytes .../plugins/apm-undertow-2.x-plugin-9.2.0.jar | Bin 0 -> 34411 bytes ...dertow-worker-thread-pool-plugin-9.2.0.jar | Bin 0 -> 14769 bytes .../apm-vertx-core-3.x-plugin-9.2.0.jar | Bin 0 -> 86153 bytes .../apm-vertx-core-4.x-plugin-9.2.0.jar | Bin 0 -> 18945 bytes .../apm-xmemcached-2.x-plugin-9.2.0.jar | Bin 0 -> 24405 bytes .../plugins/apm-xxl-job-2.x-plugin-9.2.0.jar | Bin 0 -> 24987 bytes .../plugins/baidu-brpc-3.x-plugin-9.2.0.jar | Bin 0 -> 17826 bytes .../agent/plugins/baidu-brpc-plugin-9.2.0.jar | Bin 0 -> 16911 bytes .../agent/plugins/dbcp-2.x-plugin-9.2.0.jar | Bin 0 -> 21413 bytes .../agent/plugins/druid-1.x-plugin-9.2.0.jar | Bin 0 -> 21780 bytes .../dubbo-2.7.x-conflict-patch-9.2.0.jar | Bin 0 -> 17844 bytes .../dubbo-3.x-conflict-patch-9.2.0.jar | Bin 0 -> 17919 bytes .../plugins/dubbo-conflict-patch-9.2.0.jar | Bin 0 -> 17156 bytes .../plugins/elasticsearch-common-9.2.0.jar | Bin 0 -> 9465 bytes .../graphql-12.x-15.x-plugin-9.2.0.jar | Bin 0 -> 12602 bytes .../plugins/graphql-16plus-plugin-9.2.0.jar | Bin 0 -> 12522 bytes .../plugins/graphql-8.x-plugin-9.2.0.jar | Bin 0 -> 12907 bytes .../plugins/graphql-9.x-plugin-9.2.0.jar | Bin 0 -> 12481 bytes .../plugins/jedis-2.x-3.x-plugin-9.2.0.jar | Bin 0 -> 36797 bytes .../agent/plugins/jedis-4.x-plugin-9.2.0.jar | Bin 0 -> 36043 bytes .../plugins/jsonrpc4j-1.x-plugin-9.2.0.jar | Bin 0 -> 25108 bytes .../micronaut-http-client-plugin-9.2.0.jar | Bin 0 -> 22440 bytes .../micronaut-http-server-plugin-9.2.0.jar | Bin 0 -> 24217 bytes .../agent/plugins/motan-plugin-9.2.0.jar | Bin 0 -> 17747 bytes .../nats-2.14.x-2.15.x-plugin-9.2.0.jar | Bin 0 -> 40153 bytes .../agent/plugins/okhttp-2.x-plugin-9.2.0.jar | Bin 0 -> 28906 bytes .../resteasy-server-3.x-plugin-9.2.0.jar | Bin 0 -> 15928 bytes .../resteasy-server-4.x-plugin-9.2.0.jar | Bin 0 -> 16153 bytes .../resteasy-server-6.x-plugin-9.2.0.jar | Bin 0 -> 16156 bytes .../plugins/resttemplate-commons-9.2.0.jar | Bin 0 -> 34645 bytes .../agent/plugins/sofa-rpc-plugin-9.2.0.jar | Bin 0 -> 21788 bytes .../agent/plugins/spring-commons-9.2.0.jar | Bin 0 -> 8704 bytes ...ing-webflux-5.x-webclient-plugin-9.2.0.jar | Bin 0 -> 18956 bytes ...ing-webflux-6.x-webclient-plugin-9.2.0.jar | Bin 0 -> 18938 bytes .../agent/plugins/thrift-plugin-9.2.0.jar | Bin 0 -> 60936 bytes .../agent/plugins/tomcat-10x-plugin-9.2.0.jar | Bin 0 -> 23390 bytes .../plugins/tomcat-7.x-8.x-plugin-9.2.0.jar | Bin 0 -> 23680 bytes .../websphere-liberty-23.x-plugin-9.2.0.jar | Bin 0 -> 29204 bytes skywalking/agent/skywalking-agent.jar | Bin 0 -> 22355074 bytes skywalking/ins | 10 + .../install/elasticsearch/elasticsearch.sh | 10 + skywalking/install/skywalking-net.sh | 2 + .../install/skywalking/skywalking-oap.sh | 11 + .../install/skywalking/skywalking-ui.sh | 8 + skywalking/show | 6 + .../job-admin/config/application.properties | 33 + xxl-job/job-admin/depXXLAdmin.sh | 8 + xxl-job/mysql/config/my.cnf | 66 + xxl-job/mysql/depXXLMysql.sh | 9 + xxl-job/show | 13 + xxl-job/xxl-net.sh | 1 + 740 files changed, 50045 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 cloud-auth/pom.xml create mode 100644 cloud-auth/src/main/java/com/muyu/auth/CloudAuthApplication.java create mode 100644 cloud-auth/src/main/java/com/muyu/auth/controller/TokenController.java create mode 100644 cloud-auth/src/main/java/com/muyu/auth/form/LoginBody.java create mode 100644 cloud-auth/src/main/java/com/muyu/auth/form/RegisterBody.java create mode 100644 cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java create mode 100644 cloud-auth/src/main/java/com/muyu/auth/service/SysPasswordService.java create mode 100644 cloud-auth/src/main/java/com/muyu/auth/service/SysRecordLogService.java create mode 100644 cloud-auth/src/main/resources/banner.txt create mode 100644 cloud-auth/src/main/resources/bootstrap.yml create mode 100644 cloud-auth/src/main/resources/logback/dev.xml create mode 100644 cloud-auth/src/main/resources/logback/prod.xml create mode 100644 cloud-auth/src/main/resources/logback/test.xml create mode 100644 cloud-common/cloud-common-api-doc/pom.xml create mode 100644 cloud-common/cloud-common-api-doc/src/main/java/com/muyu/common/api/doc/config/SpringDocConfig.java create mode 100644 cloud-common/cloud-common-api-doc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 cloud-common/cloud-common-cache/pom.xml create mode 100644 cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/CacheAbsBacis.java create mode 100644 cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/CacheBasic.java create mode 100644 cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/PrimaryKeyBasic.java create mode 100644 cloud-common/cloud-common-core/pom.xml create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/annotation/Excel.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/annotation/Excels.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/config/MyBatisConfig.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/CacheConstants.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/Constants.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/GenConstants.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/HttpStatus.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/KafkaConstants.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/ScheduleConstants.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/SecurityConstants.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/TokenConstants.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/UserConstants.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/context/SecurityContextHolder.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/domain/PageResult.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/domain/Result.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/domain/req/PageReq.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/enums/UserStatus.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/CaptchaException.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/CheckedException.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/DemoModeException.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/GlobalException.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/InnerAuthException.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/PreAuthorizeException.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/ServiceException.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/UtilException.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/auth/NotLoginException.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/auth/NotPermissionException.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/auth/NotRoleException.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/base/BaseException.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/file/FileException.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/file/FileNameLengthLimitExceededException.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/file/FileSizeLimitExceededException.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/file/FileUploadException.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/file/InvalidExtensionException.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/job/TaskException.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/user/CaptchaExpireException.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/user/UserException.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/user/UserPasswordNotMatchException.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/feign/FeginConfig.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/text/CharsetKit.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/text/Convert.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/text/StrFormatter.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/DateUtils.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/ExceptionUtil.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/JwtUtils.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/PageUtils.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/ServletUtils.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/SpringUtils.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/StringUtils.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/bean/BeanUtils.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/bean/BeanValidators.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/file/FileTypeUtils.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/file/FileUtils.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/file/ImageUtils.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/file/MimeTypeUtils.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/html/EscapeUtil.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/html/HTMLFilter.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/ip/IpUtils.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/poi/ExcelHandlerAdapter.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/poi/ExcelUtil.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/reflect/ReflectUtils.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/sign/Base64.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/sql/SqlUtil.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/uuid/IdUtils.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/uuid/Seq.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/uuid/UUID.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/validation/ValidationConfig.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/controller/BaseController.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/domain/BaseEntity.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/domain/TreeEntity.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/page/PageDomain.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/page/TableDataInfo.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/page/TableSupport.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/xss/Xss.java create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/xss/XssValidator.java create mode 100644 cloud-common/cloud-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 cloud-common/cloud-common-datascope/pom.xml create mode 100644 cloud-common/cloud-common-datascope/src/main/java/com/muyu/common/datascope/annotation/DataScope.java create mode 100644 cloud-common/cloud-common-datascope/src/main/java/com/muyu/common/datascope/aspect/DataScopeAspect.java create mode 100644 cloud-common/cloud-common-datascope/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 cloud-common/cloud-common-datasource/pom.xml create mode 100644 cloud-common/cloud-common-datasource/src/main/java/com/muyu/common/datasource/annotation/Master.java create mode 100644 cloud-common/cloud-common-datasource/src/main/java/com/muyu/common/datasource/annotation/Slave.java create mode 100644 cloud-common/cloud-common-kafka/pom.xml create mode 100644 cloud-common/cloud-common-kafka/src/main/java/com/muyu/common/kafka/config/KafkaConsumerConfig.java create mode 100644 cloud-common/cloud-common-kafka/src/main/java/com/muyu/common/kafka/config/KafkaProducerConfig.java create mode 100644 cloud-common/cloud-common-kafka/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 cloud-common/cloud-common-log/pom.xml create mode 100644 cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/annotation/Log.java create mode 100644 cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/aspect/LogAspect.java create mode 100644 cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/enums/BusinessStatus.java create mode 100644 cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/enums/BusinessType.java create mode 100644 cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/enums/OperatorType.java create mode 100644 cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/filter/PropertyPreExcludeFilter.java create mode 100644 cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/service/AsyncLogService.java create mode 100644 cloud-common/cloud-common-log/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 cloud-common/cloud-common-rabbit/pom.xml create mode 100644 cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/RabbitListenerConfigurer.java create mode 100644 cloud-common/cloud-common-rabbit/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 cloud-common/cloud-common-redis/pom.xml create mode 100644 cloud-common/cloud-common-redis/src/main/java/com/muyu/common/redis/configure/FastJson2JsonRedisSerializer.java create mode 100644 cloud-common/cloud-common-redis/src/main/java/com/muyu/common/redis/configure/RedisConfig.java create mode 100644 cloud-common/cloud-common-redis/src/main/java/com/muyu/common/redis/service/RedisService.java create mode 100644 cloud-common/cloud-common-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 cloud-common/cloud-common-saas/pom.xml create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/constents/DatasourceContent.java create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/domain/model/DataSourceInfo.java create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/factory/DruidDataSourceFactory.java create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/holder/DynamicDataSourceHolder.java create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/role/DynamicDataSource.java create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/contents/SaaSConstant.java create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/domain/model/EntInfo.java create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/exception/SaaSException.java create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/interceptor/SaaSInterceptor.java create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/interceptor/WebMvcSaaSConfig.java create mode 100644 cloud-common/cloud-common-seata/pom.xml create mode 100644 cloud-common/cloud-common-security/pom.xml create mode 100644 cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/EnableCustomConfig.java create mode 100644 cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/EnableMyFeignClients.java create mode 100644 cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/InnerAuth.java create mode 100644 cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/Logical.java create mode 100644 cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/RequiresLogin.java create mode 100644 cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/RequiresPermissions.java create mode 100644 cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/RequiresRoles.java create mode 100644 cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/aspect/InnerAuthAspect.java create mode 100644 cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/aspect/PreAuthorizeAspect.java create mode 100644 cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/auth/AuthLogic.java create mode 100644 cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/auth/AuthUtil.java create mode 100644 cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/config/ApplicationConfig.java create mode 100644 cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/config/WebMvcConfig.java create mode 100644 cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/feign/FeignAutoConfiguration.java create mode 100644 cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/feign/FeignRequestInterceptor.java create mode 100644 cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/handler/GlobalExceptionHandler.java create mode 100644 cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/interceptor/HeaderInterceptor.java create mode 100644 cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/TokenService.java create mode 100644 cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/utils/DictUtils.java create mode 100644 cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/utils/SecurityUtils.java create mode 100644 cloud-common/cloud-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 cloud-common/cloud-common-system/pom.xml create mode 100644 cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/LoginUser.java create mode 100644 cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysDept.java create mode 100644 cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysDictData.java create mode 100644 cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysDictType.java create mode 100644 cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysFile.java create mode 100644 cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysLogininfor.java create mode 100644 cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysOperLog.java create mode 100644 cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysRole.java create mode 100644 cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysUser.java create mode 100644 cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/RemoteFileService.java create mode 100644 cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/RemoteLogService.java create mode 100644 cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/RemoteUserService.java create mode 100644 cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteFileFallbackFactory.java create mode 100644 cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteLogFallbackFactory.java create mode 100644 cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteUserFallbackFactory.java create mode 100644 cloud-common/cloud-common-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 cloud-common/cloud-common-xxl/pom.xml create mode 100644 cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/XXLJobConfig.java create mode 100644 cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/XxlJobProperties.java create mode 100644 cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/demo/XxlJobDemoService.java create mode 100644 cloud-common/cloud-common-xxl/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 cloud-common/pom.xml create mode 100644 cloud-gateway/pom.xml create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/CloudGatewayApplication.java create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/config/CaptchaConfig.java create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/config/GatewayConfig.java create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/config/KaptchaTextCreator.java create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/config/RouterFunctionConfiguration.java create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/config/properties/CaptchaProperties.java create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/config/properties/IgnoreWhiteProperties.java create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/config/properties/XssProperties.java create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/filter/AccessLogFilter.java create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/filter/AuthFilter.java create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/filter/BlackListUrlFilter.java create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/filter/CacheRequestFilter.java create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/filter/ValidateCodeFilter.java create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/filter/XssFilter.java create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/handler/GatewayExceptionHandler.java create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/handler/SentinelFallbackHandler.java create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/handler/ValidateCodeHandler.java create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/model/AccessLog.java create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/model/resp/CaptchaCodeResp.java create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/service/ValidateCodeService.java create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/service/impl/ValidateCodeServiceImpl.java create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/utils/WebFrameworkUtils.java create mode 100644 cloud-gateway/src/main/resources/banner.txt create mode 100644 cloud-gateway/src/main/resources/bootstrap.yml create mode 100644 cloud-gateway/src/main/resources/logback/dev.xml create mode 100644 cloud-gateway/src/main/resources/logback/prod.xml create mode 100644 cloud-gateway/src/main/resources/logback/test.xml create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/pom.xml create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/FaultCacheService.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/FenceCahceService.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/VehicleCacheService.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/WarnRuleCacheService.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/WarnStrategyCacheService.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/pom.xml create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/BoundMiddle.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/Fence.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/FenceGroup.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/LanType.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/MessageTemplate.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/MessageValue.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/Middle.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/Vehicle.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/VehicleType.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/WarnLogs.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/WarnRule.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/WarnStrategy.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/FenceGroupAddReq.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/FenceGroupReq.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/FenceReq.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/HaveFence.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/MessageTemplateAddReq.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/MessageValueAddReq.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/MessageValueReq.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/MiddleReq.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/VehicleAddReq.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/VehicleManageReq.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/VehicleUpdReq.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/WarnVehicleReq.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/BoundFence.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/FenceResp.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/MessageTemplateListResp.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/MessageValueListResp.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/VehicleManageResp.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/WarnVehicleResp.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/pom.xml create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/CloudEnterpriseApplication.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/ElectController.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/FencegroupController.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/MessageTemplateController.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/MessageValueController.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/MiddleController.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleController.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleTypeController.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/WarnLogsController.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/WarnRuleController.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/WarnStrategyController.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/ElectMapper.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/FencegroupMapper.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/LanTypeMapper.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/MessageTemplateMapper.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/MessageValueMapper.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/MiddleMapper.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/VehicleMapper.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/VehicleTypeMapper.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/WarnLogsMapper.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/WarnRuleMapper.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/WarnStrategyMapper.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/ElectService.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/IFencegroupService.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/LanTypeService.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/MessageTemplateService.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/MessageValueService.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/MiddleService.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/VehicleService.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/VehicleTypeService.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/WarnLogsService.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/WarnRuleService.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/WarnStrategyService.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/ElectServiceImpl.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/FencegroupServiceImpl.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/LanTypeServiceImpl.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MessageTemplateServiceImpl.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MessageValueServiceImpl.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MiddleServiceImpl.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/VehicleServiceImpl.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/VehicleTypeServiceImpl.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/WarnLogsServiceImpl.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/WarnRuleServiceImpl.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/WarnStrategyServiceImpl.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/utils/VehicleConstant.java create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/banner.txt create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/bootstrap.yml create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/logback/dev.xml create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/logback/prod.xml create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/logback/test.xml create mode 100644 cloud-modules/cloud-modules-enterprise/pom.xml create mode 100644 cloud-modules/cloud-modules-file/pom.xml create mode 100644 cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/CloudFileApplication.java create mode 100644 cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/config/MinioConfig.java create mode 100644 cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/config/ResourcesConfig.java create mode 100644 cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/controller/SysFileController.java create mode 100644 cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/service/ISysFileService.java create mode 100644 cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/service/LocalSysFileServiceImpl.java create mode 100644 cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/service/MinioSysFileServiceImpl.java create mode 100644 cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/utils/FileUploadUtils.java create mode 100644 cloud-modules/cloud-modules-file/src/main/resources/banner.txt create mode 100644 cloud-modules/cloud-modules-file/src/main/resources/bootstrap.yml create mode 100644 cloud-modules/cloud-modules-file/src/main/resources/logback/dev.xml create mode 100644 cloud-modules/cloud-modules-file/src/main/resources/logback/prod.xml create mode 100644 cloud-modules/cloud-modules-file/src/main/resources/logback/test.xml create mode 100644 cloud-modules/cloud-modules-gen/pom.xml create mode 100644 cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/CloudGenApplication.java create mode 100644 cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/config/GenConfig.java create mode 100644 cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/controller/GenController.java create mode 100644 cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/domain/GenTable.java create mode 100644 cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/domain/GenTableColumn.java create mode 100644 cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/domain/GenTableResp.java create mode 100644 cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/mapper/GenTableColumnMapper.java create mode 100644 cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/mapper/GenTableMapper.java create mode 100644 cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/GenTableColumnServiceImpl.java create mode 100644 cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/GenTableServiceImpl.java create mode 100644 cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/IGenTableColumnService.java create mode 100644 cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/IGenTableService.java create mode 100644 cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/util/GenUtils.java create mode 100644 cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/util/VelocityInitializer.java create mode 100644 cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/util/VelocityUtils.java create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/banner.txt create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/bootstrap.yml create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/logback/dev.xml create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/logback/prod.xml create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/logback/test.xml create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/mapper/generator/GenTableMapper.xml create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/vm/java/controller.java.vm create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/vm/java/domain.java.vm create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/vm/java/mapper.java.vm create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/vm/java/service.java.vm create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/vm/java/serviceImpl.java.vm create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/vm/java/sub-domain.java.vm create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/vm/js/api.js.vm create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/vm/sql/sql.vm create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/vm/vue/index-tree.vue.vm create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/vm/vue/index.vue.vm create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/vm/vue/v3/index-tree.vue.vm create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/vm/vue/v3/index.vue.vm create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/vm/vue/v3/readme.txt create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/vm/xml/mapper.xml.vm create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/CloudGenApplication.java create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/config/GenConfig.java create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/controller/GenController.java create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/domain/GenTable.java create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/domain/GenTableColumn.java create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/domain/GenTableResp.java create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/mapper/GenTableColumnMapper.java create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/mapper/GenTableMapper.java create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/service/GenTableColumnServiceImpl.java create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/service/GenTableServiceImpl.java create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/service/IGenTableColumnService.java create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/service/IGenTableService.java create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/util/GenUtils.java create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/util/VelocityInitializer.java create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/util/VelocityUtils.java create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/resources/banner.txt create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/resources/bootstrap.yml create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/resources/logback/dev.xml create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/resources/logback/prod.xml create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/resources/logback/test.xml create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/resources/mapper/generator/GenTableColumnMapper.xml create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/resources/mapper/generator/GenTableMapper.xml create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/controller.java.vm create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/domain.java.vm create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/mapper.java.vm create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/service.java.vm create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/serviceImpl.java.vm create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/sub-domain.java.vm create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/resources/vm/js/api.js.vm create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/resources/vm/sql/sql.vm create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/resources/vm/vue/index-tree.vue.vm create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/resources/vm/vue/index.vue.vm create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/resources/vm/vue/v3/index-tree.vue.vm create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/resources/vm/vue/v3/index.vue.vm create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/resources/vm/vue/v3/readme.txt create mode 100644 cloud-modules/cloud-modules-gen/src/src/main/resources/vm/xml/mapper.xml.vm create mode 100644 cloud-modules/cloud-modules-processing/pom.xml create mode 100644 cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/VehicleProcessingApplication.java create mode 100644 cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/abstraction/EventProcessor.java create mode 100644 cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/consumer/KafkaConsumerService.java create mode 100644 cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/controller/TestKafka.java create mode 100644 cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/interfaces/EventInterface.java create mode 100644 cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/utils/IotDb.java create mode 100644 cloud-modules/cloud-modules-processing/src/main/resources/banner.txt create mode 100644 cloud-modules/cloud-modules-processing/src/main/resources/bootstrap.yml create mode 100644 cloud-modules/cloud-modules-processing/src/main/resources/logback/dev.xml create mode 100644 cloud-modules/cloud-modules-processing/src/main/resources/logback/prod.xml create mode 100644 cloud-modules/cloud-modules-processing/src/main/resources/logback/test.xml create mode 100644 cloud-modules/cloud-modules-protocol-parsing/pom.xml create mode 100644 cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/ProtocolParsingApplication.java create mode 100644 cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/feign/RemoteServiceClient.java create mode 100644 cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/feign/factory/RemoteServiceClientFactory.java create mode 100644 cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingTest.java create mode 100644 cloud-modules/cloud-modules-protocol-parsing/src/main/resources/banner.txt create mode 100644 cloud-modules/cloud-modules-protocol-parsing/src/main/resources/bootstrap.yml create mode 100644 cloud-modules/cloud-modules-protocol-parsing/src/main/resources/logback/dev.xml create mode 100644 cloud-modules/cloud-modules-protocol-parsing/src/main/resources/logback/prod.xml create mode 100644 cloud-modules/cloud-modules-protocol-parsing/src/main/resources/logback/test.xml create mode 100644 cloud-modules/cloud-modules-system/pom.xml create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/CloudSystemApplication.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysConfigController.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysDeptController.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysDictDataController.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysDictTypeController.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysLogininforController.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysMenuController.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysNoticeController.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysOperlogController.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysPostController.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysProfileController.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysRoleController.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysUserController.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysUserOnlineController.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysConfig.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysMenu.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysNotice.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysPost.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysRoleDept.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysRoleMenu.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysUserOnline.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysUserPost.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysUserRole.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/AuthRoleResp.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/DeptTreeResp.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/ProfileResp.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/RoleMenuTreeResp.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/UserDetailInfoResp.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/UserInfoResp.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/vo/MetaVo.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/vo/RouterVo.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/vo/TreeSelect.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysConfigMapper.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysDeptMapper.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysDictDataMapper.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysDictTypeMapper.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysLogininforMapper.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysMenuMapper.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysNoticeMapper.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysOperLogMapper.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysPostMapper.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysRoleDeptMapper.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysRoleMapper.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysRoleMenuMapper.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysUserMapper.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysUserPostMapper.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysUserRoleMapper.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/rabbit/RabbitTest.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysConfigService.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysDeptService.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysDictDataService.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysDictTypeService.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysLogininforService.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysMenuService.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysNoticeService.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysOperLogService.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysPermissionService.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysPostService.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysRoleService.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysUserOnlineService.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysUserService.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysConfigServiceImpl.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysDeptServiceImpl.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysDictDataServiceImpl.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysDictTypeServiceImpl.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysLogininforServiceImpl.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysNoticeServiceImpl.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysOperLogServiceImpl.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysPermissionServiceImpl.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysPostServiceImpl.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysRoleServiceImpl.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysUserOnlineServiceImpl.java create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java create mode 100644 cloud-modules/cloud-modules-system/src/main/resources/banner.txt create mode 100644 cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml create mode 100644 cloud-modules/cloud-modules-system/src/main/resources/logback/dev.xml create mode 100644 cloud-modules/cloud-modules-system/src/main/resources/logback/prod.xml create mode 100644 cloud-modules/cloud-modules-system/src/main/resources/logback/test.xml create mode 100644 cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysConfigMapper.xml create mode 100644 cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysDeptMapper.xml create mode 100644 cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysDictDataMapper.xml create mode 100644 cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysDictTypeMapper.xml create mode 100644 cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysLogininforMapper.xml create mode 100644 cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysMenuMapper.xml create mode 100644 cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysNoticeMapper.xml create mode 100644 cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysOperLogMapper.xml create mode 100644 cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysPostMapper.xml create mode 100644 cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml create mode 100644 cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysRoleMapper.xml create mode 100644 cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml create mode 100644 cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserMapper.xml create mode 100644 cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserPostMapper.xml create mode 100644 cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserRoleMapper.xml create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/pom.xml create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/VehicleGatewayApplication.java create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/test/MqttPublishSample.java create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/test/example/DelInstance.java create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/test/example/Sample.java create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/test/example/StartInstance.java create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/banner.txt create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/bootstrap.yml create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/logback/dev.xml create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/logback/prod.xml create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/logback/test.xml create mode 100644 cloud-modules/pom.xml create mode 100644 cloud-visual/cloud-visual-monitor/pom.xml create mode 100644 cloud-visual/cloud-visual-monitor/src/main/java/com/muyu/modules/monitor/CloudMonitorApplication.java create mode 100644 cloud-visual/cloud-visual-monitor/src/main/java/com/muyu/modules/monitor/config/WebSecurityConfigurer.java create mode 100644 cloud-visual/cloud-visual-monitor/src/main/resources/banner.txt create mode 100644 cloud-visual/cloud-visual-monitor/src/main/resources/bootstrap.yml create mode 100644 cloud-visual/cloud-visual-monitor/src/main/resources/logback/dev.xml create mode 100644 cloud-visual/cloud-visual-monitor/src/main/resources/logback/prod.xml create mode 100644 cloud-visual/cloud-visual-monitor/src/main/resources/logback/test.xml create mode 100644 cloud-visual/pom.xml create mode 100644 init-file/cloud-seata.sql create mode 100644 init-file/cloud-system.sql create mode 100644 init-file/nacos_config.zip create mode 100644 init-file/xxl-init.sql create mode 100644 pom.xml create mode 100644 skywalking/agent/LICENSE create mode 100644 skywalking/agent/NOTICE create mode 100644 skywalking/agent/activations/apm-toolkit-kafka-activation-9.2.0.jar create mode 100644 skywalking/agent/activations/apm-toolkit-log4j-1.x-activation-9.2.0.jar create mode 100644 skywalking/agent/activations/apm-toolkit-log4j-2.x-activation-9.2.0.jar create mode 100644 skywalking/agent/activations/apm-toolkit-logback-1.x-activation-9.2.0.jar create mode 100644 skywalking/agent/activations/apm-toolkit-logging-common-9.2.0.jar create mode 100644 skywalking/agent/activations/apm-toolkit-meter-activation-9.2.0.jar create mode 100644 skywalking/agent/activations/apm-toolkit-micrometer-activation-9.2.0.jar create mode 100644 skywalking/agent/activations/apm-toolkit-opentracing-activation-9.2.0.jar create mode 100644 skywalking/agent/activations/apm-toolkit-trace-activation-9.2.0.jar create mode 100644 skywalking/agent/activations/apm-toolkit-webflux-activation-9.2.0.jar create mode 100644 skywalking/agent/bootstrap-plugins/apm-jdk-forkjoinpool-plugin-9.2.0.jar create mode 100644 skywalking/agent/bootstrap-plugins/apm-jdk-http-plugin-9.2.0.jar create mode 100644 skywalking/agent/bootstrap-plugins/apm-jdk-threading-plugin-9.2.0.jar create mode 100644 skywalking/agent/bootstrap-plugins/apm-jdk-threadpool-plugin-9.2.0.jar create mode 100644 skywalking/agent/config/agent.config create mode 100644 skywalking/agent/expired-plugins/apm-impala-jdbc-2.6.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/licenses/LICENSE-asm.txt create mode 100644 skywalking/agent/optional-plugins/apm-customize-enhance-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-ehcache-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-fastjson-1.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-gson-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-guava-cache-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-jackson-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-kotlin-coroutine-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-mybatis-3.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-nacos-client-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-netty-http-4.1.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-quartz-scheduler-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-resttemplate-6.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-sentinel-1.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-shenyu-2.4.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-spring-annotation-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-spring-cloud-gateway-2.0.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-spring-cloud-gateway-2.1.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-spring-cloud-gateway-3.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-spring-cloud-gateway-4.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-spring-tx-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-spring-webflux-5.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-spring-webflux-6.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-springmvc-annotation-6.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-trace-ignore-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/apm-zookeeper-3.4.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-plugins/trace-sampler-cpu-policy-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-reporter-plugins/kafka-reporter-plugin-9.2.0.jar create mode 100644 skywalking/agent/optional-reporter-plugins/lz4-java-1.6.0.jar create mode 100644 skywalking/agent/optional-reporter-plugins/snappy-java-1.1.7.3.jar create mode 100644 skywalking/agent/optional-reporter-plugins/zstd-jni-1.4.3-1.jar create mode 100644 skywalking/agent/plugins/apm-activemq-5.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-activemq-artemis-jakarta-client-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-aerospike-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-armeria-0.84.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-armeria-0.85.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-armeria-1.0.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-asynchttpclient-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-avro-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-canal-1.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-cassandra-java-driver-3.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-clickhouse-0.3.1-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-clickhouse-0.3.2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-cxf-3.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-dubbo-2.7.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-dubbo-3.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-dubbo-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-elastic-job-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-elasticjob-3.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-elasticsearch-5.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-elasticsearch-6.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-elasticsearch-7.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-feign-default-http-9.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-finagle-6.25.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-grizzly-2.x-4.x-work-threadpool-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-grizzly-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-grpc-1.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-guava-eventbus-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-h2-1.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-hbase-1.x-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-hikaricp-3.x-4.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-httpClient-4.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-httpasyncclient-4.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-httpclient-3.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-httpclient-5.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-httpclient-commons-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-hutool-http-5.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-hystrix-1.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-influxdb-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-jdbc-commons-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-jersey-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-jersey-3.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-jetty-client-11.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-jetty-client-9.0-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-jetty-client-9.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-jetty-server-11.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-jetty-server-9.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-jetty-thread-pool-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-kafka-commons-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-kafka-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-kylin-jdbc-2.6.x-3.x-4.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-lettuce-5.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-light4j-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-mariadb-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-mongodb-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-mongodb-3.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-mongodb-4.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-mssql-commons-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-mssql-jdbc-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-mssql-jtds-1.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-mysql-5.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-mysql-6.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-mysql-8.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-mysql-commons-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-neo4j-4.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-netty-socketio-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-nutz-http-1.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-nutz-mvc-annotation-1.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-okhttp-3.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-okhttp-4.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-okhttp-common-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-play-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-postgresql-8.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-pulsar-2.2-2.7-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-pulsar-2.8.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-pulsar-common-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-quasar-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-rabbitmq-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-redisson-3.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-resttemplate-3.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-resttemplate-4.3.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-rocketMQ-5.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-rocketmq-3.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-rocketmq-4.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-rocketmq-client-java-5.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-servicecomb-java-chassis-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-sharding-sphere-3.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-sharding-sphere-4.1.0-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-shardingsphere-4.0.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-shardingsphere-5.0.0-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-solrj-7.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-spring-async-annotation-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-spring-cloud-feign-1.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-spring-cloud-feign-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-spring-concurrent-util-4.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-spring-core-patch-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-spring-kafka-1.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-spring-kafka-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-spring-scheduled-annotation-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-springmvc-annotation-3.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-springmvc-annotation-4.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-springmvc-annotation-5.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-springmvc-annotation-commons-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-spymemcached-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-struts2-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-tomcat-thread-pool-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-undertow-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-undertow-worker-thread-pool-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-vertx-core-3.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-vertx-core-4.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-xmemcached-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/apm-xxl-job-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/baidu-brpc-3.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/baidu-brpc-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/dbcp-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/druid-1.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/dubbo-2.7.x-conflict-patch-9.2.0.jar create mode 100644 skywalking/agent/plugins/dubbo-3.x-conflict-patch-9.2.0.jar create mode 100644 skywalking/agent/plugins/dubbo-conflict-patch-9.2.0.jar create mode 100644 skywalking/agent/plugins/elasticsearch-common-9.2.0.jar create mode 100644 skywalking/agent/plugins/graphql-12.x-15.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/graphql-16plus-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/graphql-8.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/graphql-9.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/jedis-2.x-3.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/jedis-4.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/jsonrpc4j-1.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/micronaut-http-client-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/micronaut-http-server-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/motan-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/nats-2.14.x-2.15.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/okhttp-2.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/resteasy-server-3.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/resteasy-server-4.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/resteasy-server-6.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/resttemplate-commons-9.2.0.jar create mode 100644 skywalking/agent/plugins/sofa-rpc-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/spring-commons-9.2.0.jar create mode 100644 skywalking/agent/plugins/spring-webflux-5.x-webclient-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/spring-webflux-6.x-webclient-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/thrift-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/tomcat-10x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/tomcat-7.x-8.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/plugins/websphere-liberty-23.x-plugin-9.2.0.jar create mode 100644 skywalking/agent/skywalking-agent.jar create mode 100644 skywalking/ins create mode 100644 skywalking/install/elasticsearch/elasticsearch.sh create mode 100644 skywalking/install/skywalking-net.sh create mode 100644 skywalking/install/skywalking/skywalking-oap.sh create mode 100644 skywalking/install/skywalking/skywalking-ui.sh create mode 100644 skywalking/show create mode 100644 xxl-job/job-admin/config/application.properties create mode 100644 xxl-job/job-admin/depXXLAdmin.sh create mode 100644 xxl-job/mysql/config/my.cnf create mode 100644 xxl-job/mysql/depXXLMysql.sh create mode 100644 xxl-job/show create mode 100644 xxl-job/xxl-net.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9405b2d --- /dev/null +++ b/.gitignore @@ -0,0 +1,48 @@ +###################################################################### +# Build Tools + +.gradle +/build/ +!gradle/wrapper/gradle-wrapper.jar + +target/ +!.mvn/wrapper/maven-wrapper.jar + +out +###################################################################### +# IDE + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans + +### IntelliJ IDEA ### +.idea +logs +*.iws +*.iml +*.ipr + +### JRebel ### +rebel.xml +### NetBeans ### +nbproject/private/ +build/* +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ + +###################################################################### +# Others +*.log +*.xml.versionsBackup +*.swp + +!*/build/*.java +!*/build/*.html +!*/build/*.xml diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..bd95df1 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 若依 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..439732f --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +## 系统模块 + +~~~ +com.muyu +├── cloud-ui // 前端框架 [80] +├── cloud-gateway // 网关模块 [8080] +├── cloud-auth // 认证中心 [9200] +├── cloud-common // 通用模块 +│ └── cloud-common-core // 核心模块 +│ └── cloud-common-datascope // 权限范围 +│ └── cloud-common-datasource // 多数据源 +│ └── cloud-common-log // 日志记录 +│ └── cloud-common-redis // 缓存服务 +│ └── cloud-common-seata // 分布式事务 +│ └── cloud-common-security // 安全模块 +│ └── cloud-common-swagger // 系统接口 +│ └── cloud-common-system // 系统基础 +├── cloud-modules // 业务模块 +│ └── cloud-system // 系统模块 [9201] +│ └── cloud-gen // 代码生成 [9202] +│ └── cloud-job // 定时任务 [9203] +│ └── cloud-file // 文件服务 [9300] +│ └── cloud-fault // 故障服务 [9300] +│ └── cloud-car // 车辆服务 [9300] +├── cloud-visual // 图形化管理模块 +│ └── cloud-visual-monitor // 监控中心 [9100] +├──pom.xml // 公共依赖 +~~~ diff --git a/cloud-auth/pom.xml b/cloud-auth/pom.xml new file mode 100644 index 0000000..0a76aae --- /dev/null +++ b/cloud-auth/pom.xml @@ -0,0 +1,80 @@ + + + com.muyu + cloud-server + 3.6.3 + + 4.0.0 + + cloud-auth + + + cloud-auth认证授权中心 + + + + + + + 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.boot + spring-boot-starter-web + + + + + org.springframework.boot + spring-boot-starter-actuator + + + + + com.muyu + cloud-common-security + + + + + com.muyu + cloud-common-api-doc + + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + + diff --git a/cloud-auth/src/main/java/com/muyu/auth/CloudAuthApplication.java b/cloud-auth/src/main/java/com/muyu/auth/CloudAuthApplication.java new file mode 100644 index 0000000..e6ea4fd --- /dev/null +++ b/cloud-auth/src/main/java/com/muyu/auth/CloudAuthApplication.java @@ -0,0 +1,19 @@ +package com.muyu.auth; + +import com.muyu.common.security.annotation.EnableMyFeignClients; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; + +/** + * 认证授权中心 + * + * @author muyu + */ +@EnableMyFeignClients +@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) +public class CloudAuthApplication { + public static void main (String[] args) { + SpringApplication.run(CloudAuthApplication.class, args); + } +} diff --git a/cloud-auth/src/main/java/com/muyu/auth/controller/TokenController.java b/cloud-auth/src/main/java/com/muyu/auth/controller/TokenController.java new file mode 100644 index 0000000..d870762 --- /dev/null +++ b/cloud-auth/src/main/java/com/muyu/auth/controller/TokenController.java @@ -0,0 +1,72 @@ +package com.muyu.auth.controller; + +import com.muyu.auth.form.LoginBody; +import com.muyu.auth.form.RegisterBody; +import com.muyu.auth.service.SysLoginService; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.utils.JwtUtils; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.security.auth.AuthUtil; +import com.muyu.common.security.service.TokenService; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.LoginUser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import jakarta.servlet.http.HttpServletRequest; + +/** + * token 控制 + * + * @author muyu + */ +@RestController +public class TokenController { + @Autowired + private TokenService tokenService; + + @Autowired + private SysLoginService sysLoginService; + + @PostMapping("login") + public Result login (@RequestBody LoginBody form) { + // 用户登录 + LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword()); + // 获取登录token + return Result.success(tokenService.createToken(userInfo)); + } + + @DeleteMapping("logout") + public Result logout (HttpServletRequest request) { + String token = SecurityUtils.getToken(request); + if (StringUtils.isNotEmpty(token)) { + String username = JwtUtils.getUserName(token); + // 删除用户缓存记录 + AuthUtil.logoutByToken(token); + // 记录用户退出日志 + sysLoginService.logout(username); + } + return Result.success(); + } + + @PostMapping("refresh") + public Result refresh (HttpServletRequest request) { + LoginUser loginUser = tokenService.getLoginUser(request); + if (StringUtils.isNotNull(loginUser)) { + // 刷新令牌有效期 + tokenService.refreshToken(loginUser); + return Result.success(); + } + return Result.success(); + } + + @PostMapping("register") + public Result register (@RequestBody RegisterBody registerBody) { + // 用户注册 + sysLoginService.register(registerBody.getUsername(), registerBody.getPassword()); + return Result.success(); + } +} diff --git a/cloud-auth/src/main/java/com/muyu/auth/form/LoginBody.java b/cloud-auth/src/main/java/com/muyu/auth/form/LoginBody.java new file mode 100644 index 0000000..999ad44 --- /dev/null +++ b/cloud-auth/src/main/java/com/muyu/auth/form/LoginBody.java @@ -0,0 +1,34 @@ +package com.muyu.auth.form; + +/** + * 用户登录对象 + * + * @author muyu + */ +public class LoginBody { + /** + * 用户名 + */ + private String username; + + /** + * 用户密码 + */ + private String password; + + public String getUsername () { + return username; + } + + public void setUsername (String username) { + this.username = username; + } + + public String getPassword () { + return password; + } + + public void setPassword (String password) { + this.password = password; + } +} diff --git a/cloud-auth/src/main/java/com/muyu/auth/form/RegisterBody.java b/cloud-auth/src/main/java/com/muyu/auth/form/RegisterBody.java new file mode 100644 index 0000000..c2a4d5a --- /dev/null +++ b/cloud-auth/src/main/java/com/muyu/auth/form/RegisterBody.java @@ -0,0 +1,10 @@ +package com.muyu.auth.form; + +/** + * 用户注册对象 + * + * @author muyu + */ +public class RegisterBody extends LoginBody { + +} diff --git a/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java b/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java new file mode 100644 index 0000000..ff0af1a --- /dev/null +++ b/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java @@ -0,0 +1,127 @@ +package com.muyu.auth.service; + +import com.muyu.common.core.constant.CacheConstants; +import com.muyu.common.core.constant.Constants; +import com.muyu.common.core.constant.SecurityConstants; +import com.muyu.common.core.constant.UserConstants; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.enums.UserStatus; +import com.muyu.common.core.exception.ServiceException; +import com.muyu.common.core.text.Convert; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.utils.ip.IpUtils; +import com.muyu.common.redis.service.RedisService; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.remote.RemoteUserService; +import com.muyu.common.system.domain.SysUser; +import com.muyu.common.system.domain.LoginUser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * 登录校验方法 + * + * @author muyu + */ +@Component +public class SysLoginService { + @Autowired + private RemoteUserService remoteUserService; + + @Autowired + private SysPasswordService passwordService; + + @Autowired + private SysRecordLogService recordLogService; + + @Autowired + private RedisService redisService; + + /** + * 登录 + */ + public LoginUser login (String username, String password) { + // 用户名或密码为空 错误 + if (StringUtils.isAnyBlank(username, password)) { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户/密码必须填写"); + throw new ServiceException("用户/密码必须填写"); + } + // 密码如果不在指定范围内 错误 + if (password.length() < UserConstants.PASSWORD_MIN_LENGTH + || password.length() > UserConstants.PASSWORD_MAX_LENGTH) { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户密码不在指定范围"); + throw new ServiceException("用户密码不在指定范围"); + } + // 用户名不在指定范围内 错误 + if (username.length() < UserConstants.USERNAME_MIN_LENGTH + || username.length() > UserConstants.USERNAME_MAX_LENGTH) { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户名不在指定范围"); + throw new ServiceException("用户名不在指定范围"); + } + // IP黑名单校验 + String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST)); + if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单"); + throw new ServiceException("很遗憾,访问IP已被列入系统黑名单"); + } + // 查询用户信息 + Result userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER); + + if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData())) { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在"); + throw new ServiceException("登录用户:" + username + " 不存在"); + } + + if (Result.FAIL == userResult.getCode()) { + throw new ServiceException(userResult.getMsg()); + } + + LoginUser userInfo = userResult.getData(); + SysUser user = userResult.getData().getSysUser(); + if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除"); + throw new ServiceException("对不起,您的账号:" + username + " 已被删除"); + } + if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员"); + throw new ServiceException("对不起,您的账号:" + username + " 已停用"); + } + passwordService.validate(user, password); + recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功"); + return userInfo; + } + + public void logout (String loginName) { + recordLogService.recordLogininfor(loginName, Constants.LOGOUT, "退出成功"); + } + + /** + * 注册 + */ + public void register (String username, String password) { + // 用户名或密码为空 错误 + if (StringUtils.isAnyBlank(username, password)) { + throw new ServiceException("用户/密码必须填写"); + } + if (username.length() < UserConstants.USERNAME_MIN_LENGTH + || username.length() > UserConstants.USERNAME_MAX_LENGTH) { + throw new ServiceException("账户长度必须在2到20个字符之间"); + } + if (password.length() < UserConstants.PASSWORD_MIN_LENGTH + || password.length() > UserConstants.PASSWORD_MAX_LENGTH) { + throw new ServiceException("密码长度必须在5到20个字符之间"); + } + + // 注册用户信息 + SysUser sysUser = new SysUser(); + sysUser.setUserName(username); + sysUser.setNickName(username); + sysUser.setPassword(SecurityUtils.encryptPassword(password)); + Result registerResult = remoteUserService.registerUserInfo(sysUser, SecurityConstants.INNER); + + if (Result.FAIL == registerResult.getCode()) { + throw new ServiceException(registerResult.getMsg()); + } + recordLogService.recordLogininfor(username, Constants.REGISTER, "注册成功"); + } +} diff --git a/cloud-auth/src/main/java/com/muyu/auth/service/SysPasswordService.java b/cloud-auth/src/main/java/com/muyu/auth/service/SysPasswordService.java new file mode 100644 index 0000000..5f3c126 --- /dev/null +++ b/cloud-auth/src/main/java/com/muyu/auth/service/SysPasswordService.java @@ -0,0 +1,76 @@ +package com.muyu.auth.service; + +import com.muyu.common.core.constant.CacheConstants; +import com.muyu.common.core.constant.Constants; +import com.muyu.common.core.exception.ServiceException; +import com.muyu.common.redis.service.RedisService; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.SysUser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.concurrent.TimeUnit; + +/** + * 登录密码方法 + * + * @author muyu + */ +@Component +public class SysPasswordService { + @Autowired + private RedisService redisService; + + private int maxRetryCount = CacheConstants.PASSWORD_MAX_RETRY_COUNT; + + private Long lockTime = CacheConstants.PASSWORD_LOCK_TIME; + + @Autowired + private SysRecordLogService recordLogService; + + /** + * 登录账户密码错误次数缓存键名 + * + * @param username 用户名 + * + * @return 缓存键key + */ + private String getCacheKey (String username) { + return CacheConstants.PWD_ERR_CNT_KEY + username; + } + + public void validate (SysUser user, String password) { + String username = user.getUserName(); + + Integer retryCount = redisService.getCacheObject(getCacheKey(username)); + + if (retryCount == null) { + retryCount = 0; + } + + if (retryCount >= Integer.valueOf(maxRetryCount).intValue()) { + String errMsg = String.format("密码输入错误%s次,帐户锁定%s分钟", maxRetryCount, lockTime); + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, errMsg); + throw new ServiceException(errMsg); + } + + if (!matches(user, password)) { + retryCount = retryCount + 1; + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, String.format("密码输入错误%s次", retryCount)); + redisService.setCacheObject(getCacheKey(username), retryCount, lockTime, TimeUnit.MINUTES); + throw new ServiceException("用户不存在/密码错误"); + } else { + clearLoginRecordCache(username); + } + } + + public boolean matches (SysUser user, String rawPassword) { + return SecurityUtils.matchesPassword(rawPassword, user.getPassword()); + } + + public void clearLoginRecordCache (String loginName) { + if (redisService.hasKey(getCacheKey(loginName))) { + redisService.deleteObject(getCacheKey(loginName)); + } + } +} diff --git a/cloud-auth/src/main/java/com/muyu/auth/service/SysRecordLogService.java b/cloud-auth/src/main/java/com/muyu/auth/service/SysRecordLogService.java new file mode 100644 index 0000000..2d4de80 --- /dev/null +++ b/cloud-auth/src/main/java/com/muyu/auth/service/SysRecordLogService.java @@ -0,0 +1,44 @@ +package com.muyu.auth.service; + +import com.muyu.common.core.constant.Constants; +import com.muyu.common.core.constant.SecurityConstants; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.utils.ip.IpUtils; +import com.muyu.common.system.remote.RemoteLogService; +import com.muyu.common.system.domain.SysLogininfor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * 记录日志方法 + * + * @author muyu + */ +@Component +public class SysRecordLogService { + @Autowired + private RemoteLogService remoteLogService; + + /** + * 记录登录信息 + * + * @param username 用户名 + * @param status 状态 + * @param message 消息内容 + * + * @return + */ + public void recordLogininfor (String username, String status, String message) { + SysLogininfor logininfor = new SysLogininfor(); + logininfor.setUserName(username); + logininfor.setIpaddr(IpUtils.getIpAddr()); + logininfor.setMsg(message); + // 日志状态 + if (StringUtils.equalsAny(status, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) { + logininfor.setStatus(Constants.LOGIN_SUCCESS_STATUS); + } else if (Constants.LOGIN_FAIL.equals(status)) { + logininfor.setStatus(Constants.LOGIN_FAIL_STATUS); + } + remoteLogService.saveLogininfor(logininfor, SecurityConstants.INNER); + } +} diff --git a/cloud-auth/src/main/resources/banner.txt b/cloud-auth/src/main/resources/banner.txt new file mode 100644 index 0000000..0dd5eee --- /dev/null +++ b/cloud-auth/src/main/resources/banner.txt @@ -0,0 +1,2 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} diff --git a/cloud-auth/src/main/resources/bootstrap.yml b/cloud-auth/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..d8dd0cc --- /dev/null +++ b/cloud-auth/src/main/resources/bootstrap.yml @@ -0,0 +1,47 @@ +# Tomcat +server: + port: 9500 + +# nacos线上地址 +nacos: + addr: 47.101.49.53:8848 + user-name: nacos + password: nacos + namespace: seven +# Spring +spring: + application: + # 应用名称 + name: cloud-auth + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + config: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + # 系统共享配置 + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # 系统环境Config共享配置 + - application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + diff --git a/cloud-auth/src/main/resources/logback/dev.xml b/cloud-auth/src/main/resources/logback/dev.xml new file mode 100644 index 0000000..880c02d --- /dev/null +++ b/cloud-auth/src/main/resources/logback/dev.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + diff --git a/cloud-auth/src/main/resources/logback/prod.xml b/cloud-auth/src/main/resources/logback/prod.xml new file mode 100644 index 0000000..d05b780 --- /dev/null +++ b/cloud-auth/src/main/resources/logback/prod.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-auth/src/main/resources/logback/test.xml b/cloud-auth/src/main/resources/logback/test.xml new file mode 100644 index 0000000..d05b780 --- /dev/null +++ b/cloud-auth/src/main/resources/logback/test.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-common/cloud-common-api-doc/pom.xml b/cloud-common/cloud-common-api-doc/pom.xml new file mode 100644 index 0000000..261e760 --- /dev/null +++ b/cloud-common/cloud-common-api-doc/pom.xml @@ -0,0 +1,33 @@ + + + + com.muyu + cloud-common + 3.6.3 + + 4.0.0 + + cloud-common-api-doc + + + cloud-common-api-doc系统接口 + + + + + + + org.springframework.boot + spring-boot-starter-web + + + + + com.github.xiaoymin + knife4j-openapi3-jakarta-spring-boot-starter + + + + diff --git a/cloud-common/cloud-common-api-doc/src/main/java/com/muyu/common/api/doc/config/SpringDocConfig.java b/cloud-common/cloud-common-api-doc/src/main/java/com/muyu/common/api/doc/config/SpringDocConfig.java new file mode 100644 index 0000000..08d7bff --- /dev/null +++ b/cloud-common/cloud-common-api-doc/src/main/java/com/muyu/common/api/doc/config/SpringDocConfig.java @@ -0,0 +1,34 @@ +package com.muyu.common.api.doc.config; + +import io.swagger.v3.oas.models.ExternalDocumentation; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class SpringDocConfig { + + @Value("${spring.application.name}") + private String applicationName; + + private Info info(){ + return new Info() + .title(String.format("%S-微服务接口文档", applicationName)) + .description("微服务接口文档,根据此接口文档可以进行前后端功能对接/联调") + .version("v1.0.0"); + } + private ExternalDocumentation externalDocumentation() { + return new ExternalDocumentation() + .description("服务总站") + .url("https://gitea.qinmian.online"); + } + + @Bean + public OpenAPI springShopOpenAPI() { + return new OpenAPI() + .info(info()) + .externalDocs(externalDocumentation()); + } +} diff --git a/cloud-common/cloud-common-api-doc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-api-doc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..4b1b17b --- /dev/null +++ b/cloud-common/cloud-common-api-doc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.muyu.common.api.doc.config.SpringDocConfig \ No newline at end of file diff --git a/cloud-common/cloud-common-cache/pom.xml b/cloud-common/cloud-common-cache/pom.xml new file mode 100644 index 0000000..ceedb34 --- /dev/null +++ b/cloud-common/cloud-common-cache/pom.xml @@ -0,0 +1,31 @@ + + + 4.0.0 + + com.muyu + cloud-common + 3.6.3 + + + cloud-common-cache + + + cloud-common-cache 缓存基准 + + + + 17 + 17 + UTF-8 + + + + + com.muyu + cloud-common-redis + + + + diff --git a/cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/CacheAbsBacis.java b/cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/CacheAbsBacis.java new file mode 100644 index 0000000..86e83d0 --- /dev/null +++ b/cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/CacheAbsBacis.java @@ -0,0 +1,35 @@ +package com.muyu.common.cache; + +import com.muyu.common.redis.service.RedisService; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.concurrent.TimeUnit; + +/** + * 抽象缓存层 + */ +public abstract class CacheAbsBacis implements CacheBasic { + + /** + * 注解 + */ + @Autowired + private RedisService redisService; + + //存 + @Override + public void put(K key, V value) { + redisService.setCacheObject(encode(key), value); + } + + @Override + public V get(K key) { + return redisService.getCacheObject(encode(key)); + } + + @Override + public void remove(K key) { + redisService.deleteObject(encode(key)); + } + +} diff --git a/cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/CacheBasic.java b/cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/CacheBasic.java new file mode 100644 index 0000000..4bf05ac --- /dev/null +++ b/cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/CacheBasic.java @@ -0,0 +1,29 @@ +package com.muyu.common.cache; + +import java.util.concurrent.TimeUnit; + +/** + * 缓存基础 + */ +public interface CacheBasic extends PrimaryKeyBasic { + + /** + * 添加 + */ + void put(K key, V value); + + /** + * 获取 + */ + V get(K key); + + /** + * 移除 + */ + void remove(K key); + + /** + * 清空 + */ + void clear(); +} diff --git a/cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/PrimaryKeyBasic.java b/cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/PrimaryKeyBasic.java new file mode 100644 index 0000000..1475f0b --- /dev/null +++ b/cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/PrimaryKeyBasic.java @@ -0,0 +1,30 @@ +package com.muyu.common.cache; + +/** + * 主键基础 + */ +public interface PrimaryKeyBasic { + + /** + * 主键前缀 + * @return + */ + public String keyPre(); + + + /** + * 编码 + * @param key + * @return + */ + public default String encode(K key){ + return keyPre() + key.toString(); + } + + /** + * 解码 + * @param key + * @return 解码后的key + */ + public K decode(String key); +} diff --git a/cloud-common/cloud-common-core/pom.xml b/cloud-common/cloud-common-core/pom.xml new file mode 100644 index 0000000..57cf128 --- /dev/null +++ b/cloud-common/cloud-common-core/pom.xml @@ -0,0 +1,169 @@ + + + + com.muyu + cloud-common + 3.6.3 + + 4.0.0 + + cloud-common-core + + + cloud-common-core核心模块 + + + + + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + + + org.springframework.cloud + spring-cloud-starter-loadbalancer + + + + + org.springframework + spring-context-support + + + + + org.springframework + spring-web + + + + + com.alibaba + transmittable-thread-local + + + + + com.github.pagehelper + pagehelper-spring-boot-starter + + + + + com.baomidou + mybatis-plus-spring-boot3-starter + 3.5.6 + + + com.github.jsqlparser + jsqlparser + + + org.mybatis + mybatis + + + + + + org.mybatis + mybatis + 3.5.16 + + + + + org.springframework.boot + spring-boot-starter-validation + + + + + com.fasterxml.jackson.core + jackson-databind + + + + + com.alibaba.fastjson2 + fastjson2 + + + + + io.jsonwebtoken + jjwt + + + + + org.apache.commons + commons-lang3 + + + + + commons-io + commons-io + + + + + org.apache.poi + poi-ooxml + + + + + + jakarta.servlet + jakarta.servlet-api + + + + + org.springframework.boot + spring-boot-starter-aop + + + + + + + + + + javax.annotation + javax.annotation-api + + + + + org.projectlombok + lombok + + + + + org.apache.skywalking + apm-toolkit-trace + + + + + org.apache.skywalking + apm-toolkit-logback-1.x + + + + cn.hutool + hutool-all + + + + diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/annotation/Excel.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/annotation/Excel.java new file mode 100644 index 0000000..36180e5 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/annotation/Excel.java @@ -0,0 +1,176 @@ +package com.muyu.common.core.annotation; + +import com.muyu.common.core.utils.poi.ExcelHandlerAdapter; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.apache.poi.ss.usermodel.IndexedColors; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import java.math.BigDecimal; + +/** + * 自定义导出Excel数据注解 + * + * @author muyu + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface Excel { + /** + * 导出时在excel中排序 + */ + public int sort () default Integer.MAX_VALUE; + + /** + * 导出到Excel中的名字. + */ + public String name () default ""; + + /** + * 日期格式, 如: yyyy-MM-dd + */ + public String dateFormat () default ""; + + /** + * 读取内容转表达式 (如: 0=男,1=女,2=未知) + */ + public String readConverterExp () default ""; + + /** + * 分隔符,读取字符串组内容 + */ + public String separator () default ","; + + /** + * BigDecimal 精度 默认:-1(默认不开启BigDecimal格式化) + */ + public int scale () default -1; + + /** + * BigDecimal 舍入规则 默认:BigDecimal.ROUND_HALF_EVEN + */ + public int roundingMode () default BigDecimal.ROUND_HALF_EVEN; + + /** + * 导出时在excel中每个列的高度 + */ + public double height () default 14; + + /** + * 导出时在excel中每个列的宽度 + */ + public double width () default 16; + + /** + * 文字后缀,如% 90 变成90% + */ + public String suffix () default ""; + + /** + * 当值为空时,字段的默认值 + */ + public String defaultValue () default ""; + + /** + * 提示信息 + */ + public String prompt () default ""; + + /** + * 设置只能选择不能输入的列内容. + */ + public String[] combo () default {}; + + /** + * 是否需要纵向合并单元格,应对需求:含有list集合单元格) + */ + public boolean needMerge () default false; + + /** + * 是否导出数据,应对需求:有时我们需要导出一份模板,这是标题需要但内容需要用户手工填写. + */ + public boolean isExport () default true; + + /** + * 另一个类中的属性名称,支持多级获取,以小数点隔开 + */ + public String targetAttr () default ""; + + /** + * 是否自动统计数据,在最后追加一行统计数据总和 + */ + public boolean isStatistics () default false; + + /** + * 导出类型(0数字 1字符串) + */ + public ColumnType cellType () default ColumnType.STRING; + + /** + * 导出列头背景颜色 + */ + public IndexedColors headerBackgroundColor () default IndexedColors.GREY_50_PERCENT; + + /** + * 导出列头字体颜色 + */ + public IndexedColors headerColor () default IndexedColors.WHITE; + + /** + * 导出单元格背景颜色 + */ + public IndexedColors backgroundColor () default IndexedColors.WHITE; + + /** + * 导出单元格字体颜色 + */ + public IndexedColors color () default IndexedColors.BLACK; + + /** + * 导出字段对齐方式 + */ + public HorizontalAlignment align () default HorizontalAlignment.CENTER; + + /** + * 自定义数据处理器 + */ + public Class handler () default ExcelHandlerAdapter.class; + + /** + * 自定义数据处理器参数 + */ + public String[] args () default {}; + + /** + * 字段类型(0:导出导入;1:仅导出;2:仅导入) + */ + Type type () default Type.ALL; + + public enum Type { + ALL(0), EXPORT(1), IMPORT(2); + private final int value; + + Type (int value) { + this.value = value; + } + + public int value () { + return this.value; + } + } + + public enum ColumnType { + NUMERIC(0), STRING(1), IMAGE(2); + private final int value; + + ColumnType (int value) { + this.value = value; + } + + public int value () { + return this.value; + } + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/annotation/Excels.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/annotation/Excels.java new file mode 100644 index 0000000..f8fc165 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/annotation/Excels.java @@ -0,0 +1,17 @@ +package com.muyu.common.core.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Excel注解集 + * + * @author muyu + */ +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +public @interface Excels { + Excel[] value (); +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/config/MyBatisConfig.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/config/MyBatisConfig.java new file mode 100644 index 0000000..0938b06 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/config/MyBatisConfig.java @@ -0,0 +1,30 @@ +package com.muyu.common.core.config; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.config + * @Project: 2112-car-cloud-server + * @name: MyBatisConfig + * @Date: 2024/9/18 0:58 + * @Description: 分页配置 + */ +@Configuration +public class MyBatisConfig { + + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + // 1.创建分页插件 + PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL); + paginationInnerInterceptor.setMaxLimit(500L); + // 2.添加分页插件 + interceptor.addInnerInterceptor(paginationInnerInterceptor); + return interceptor; + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/CacheConstants.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/CacheConstants.java new file mode 100644 index 0000000..532c9f2 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/CacheConstants.java @@ -0,0 +1,58 @@ +package com.muyu.common.core.constant; + +/** + * 缓存常量信息 + * + * @author muyu + */ +public class CacheConstants { + /** + * 缓存有效期,默认720(分钟) + */ + public final static long EXPIRATION = 720; + + /** + * 缓存刷新时间,默认120(分钟) + */ + public final static long REFRESH_TIME = 120; + + /** + * 密码最大错误次数 + */ + public final static int PASSWORD_MAX_RETRY_COUNT = 5; + + /** + * 密码锁定时间,默认10(分钟) + */ + public final static long PASSWORD_LOCK_TIME = 10; + + /** + * 权限缓存前缀 + */ + public final static String LOGIN_TOKEN_KEY = "login_tokens:"; + + /** + * 验证码 redis key + */ + public static final String CAPTCHA_CODE_KEY = "captcha_codes:"; + + /** + * 参数管理 cache key + */ + public static final String SYS_CONFIG_KEY = "sys_config:"; + + /** + * 字典管理 cache key + */ + public static final String SYS_DICT_KEY = "sys_dict:"; + + /** + * 登录账户密码错误次数 redis key + */ + public static final String PWD_ERR_CNT_KEY = "pwd_err_cnt:"; + + /** + * 登录IP黑名单 cache key + */ + public static final String SYS_LOGIN_BLACKIPLIST = SYS_CONFIG_KEY + "sys.login.blackIPList"; +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/Constants.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/Constants.java new file mode 100644 index 0000000..a3540fc --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/Constants.java @@ -0,0 +1,134 @@ +package com.muyu.common.core.constant; + +/** + * 通用常量信息 + * + * @author muyu + */ +public class Constants { + /** + * UTF-8 字符集 + */ + public static final String UTF8 = "UTF-8"; + + /** + * GBK 字符集 + */ + public static final String GBK = "GBK"; + + /** + * www主域 + */ + public static final String WWW = "www."; + + /** + * RMI 远程方法调用 + */ + public static final String LOOKUP_RMI = "rmi:"; + + /** + * LDAP 远程方法调用 + */ + public static final String LOOKUP_LDAP = "ldap:"; + + /** + * LDAPS 远程方法调用 + */ + public static final String LOOKUP_LDAPS = "ldaps:"; + + /** + * http请求 + */ + public static final String HTTP = "http://"; + + /** + * https请求 + */ + public static final String HTTPS = "https://"; + + /** + * 成功标记 + */ + public static final Integer SUCCESS = 200; + + /** + * 失败标记 + */ + public static final Integer FAIL = 500; + + /** + * 登录成功状态 + */ + public static final String LOGIN_SUCCESS_STATUS = "0"; + + /** + * 登录失败状态 + */ + public static final String LOGIN_FAIL_STATUS = "1"; + + /** + * 登录成功 + */ + public static final String LOGIN_SUCCESS = "Success"; + + /** + * 注销 + */ + public static final String LOGOUT = "Logout"; + + /** + * 注册 + */ + public static final String REGISTER = "Register"; + + /** + * 登录失败 + */ + public static final String LOGIN_FAIL = "Error"; + + /** + * 当前记录起始索引 + */ + public static final String PAGE_NUM = "pageNum"; + + /** + * 每页显示记录数 + */ + public static final String PAGE_SIZE = "pageSize"; + + /** + * 排序列 + */ + public static final String ORDER_BY_COLUMN = "orderByColumn"; + + /** + * 排序的方向 "desc" 或者 "asc". + */ + public static final String IS_ASC = "isAsc"; + + /** + * 验证码有效期(分钟) + */ + public static final long CAPTCHA_EXPIRATION = 2; + + /** + * 资源映射路径 前缀 + */ + public static final String RESOURCE_PREFIX = "/profile"; + + /** + * 自动识别json对象白名单配置(仅允许解析的包名,范围越小越安全) + */ + public static final String[] JSON_WHITELIST_STR = {"org.springframework", "com.muyu"}; + + /** + * 定时任务白名单配置(仅允许访问的包名,如其他需要可以自行添加) + */ + public static final String[] JOB_WHITELIST_STR = {"com.muyu"}; + + /** + * 定时任务违规的字符 + */ + public static final String[] JOB_ERROR_STR = {"java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml", + "org.springframework", "org.apache", "com.muyu.common.core.utils.file"}; +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/GenConstants.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/GenConstants.java new file mode 100644 index 0000000..fde9967 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/GenConstants.java @@ -0,0 +1,186 @@ +package com.muyu.common.core.constant; + +/** + * 代码生成通用常量 + * + * @author muyu + */ +public class GenConstants { + /** + * 单表(增删改查) + */ + public static final String TPL_CRUD = "crud"; + + /** + * 树表(增删改查) + */ + public static final String TPL_TREE = "tree"; + + /** + * 主子表(增删改查) + */ + public static final String TPL_SUB = "sub"; + + /** + * 树编码字段 + */ + public static final String TREE_CODE = "treeCode"; + + /** + * 树父编码字段 + */ + public static final String TREE_PARENT_CODE = "treeParentCode"; + + /** + * 树名称字段 + */ + public static final String TREE_NAME = "treeName"; + + /** + * 上级菜单ID字段 + */ + public static final String PARENT_MENU_ID = "parentMenuId"; + + /** + * 上级菜单名称字段 + */ + public static final String PARENT_MENU_NAME = "parentMenuName"; + + /** + * 数据库字符串类型 + */ + public static final String[] COLUMNTYPE_STR = {"char", "varchar", "nvarchar", "varchar2"}; + + /** + * 数据库文本类型 + */ + public static final String[] COLUMNTYPE_TEXT = {"tinytext", "text", "mediumtext", "longtext"}; + + /** + * 数据库时间类型 + */ + public static final String[] COLUMNTYPE_TIME = {"datetime", "time", "date", "timestamp"}; + + /** + * 数据库数字类型 + */ + public static final String[] COLUMNTYPE_NUMBER = {"tinyint", "smallint", "mediumint", "int", "number", "integer", + "bigint", "float", "double", "decimal"}; + + /** + * 页面不需要编辑字段 + */ + public static final String[] COLUMNNAME_NOT_EDIT = {"id", "create_by", "create_time", "del_flag"}; + + /** + * 页面不需要显示的列表字段 + */ + public static final String[] COLUMNNAME_NOT_LIST = {"id", "create_by", "create_time", "del_flag", "update_by", + "update_time"}; + + /** + * 页面不需要查询字段 + */ + public static final String[] COLUMNNAME_NOT_QUERY = {"id", "create_by", "create_time", "del_flag", "update_by", + "update_time", "remark"}; + + /** + * Entity基类字段 + */ + public static final String[] BASE_ENTITY = {"createBy", "createTime", "updateBy", "updateTime", "remark"}; + + /** + * Tree基类字段 + */ + public static final String[] TREE_ENTITY = {"parentName", "parentId", "orderNum", "ancestors"}; + + /** + * 文本框 + */ + public static final String HTML_INPUT = "input"; + + /** + * 文本域 + */ + public static final String HTML_TEXTAREA = "textarea"; + + /** + * 下拉框 + */ + public static final String HTML_SELECT = "select"; + + /** + * 单选框 + */ + public static final String HTML_RADIO = "radio"; + + /** + * 复选框 + */ + public static final String HTML_CHECKBOX = "checkbox"; + + /** + * 日期控件 + */ + public static final String HTML_DATETIME = "datetime"; + + /** + * 图片上传控件 + */ + public static final String HTML_IMAGE_UPLOAD = "imageUpload"; + + /** + * 文件上传控件 + */ + public static final String HTML_FILE_UPLOAD = "fileUpload"; + + /** + * 富文本控件 + */ + public static final String HTML_EDITOR = "editor"; + + /** + * 字符串类型 + */ + public static final String TYPE_STRING = "String"; + + /** + * 整型 + */ + public static final String TYPE_INTEGER = "Integer"; + + /** + * 长整型 + */ + public static final String TYPE_LONG = "Long"; + + /** + * 浮点型 + */ + public static final String TYPE_DOUBLE = "Double"; + + /** + * 高精度计算类型 + */ + public static final String TYPE_BIGDECIMAL = "BigDecimal"; + + /** + * 时间类型 + */ + public static final String TYPE_DATE = "Date"; + + /** + * 模糊查询 + */ + public static final String QUERY_LIKE = "LIKE"; + + /** + * 相等查询 + */ + public static final String QUERY_EQ = "EQ"; + + /** + * 需要 + */ + public static final String REQUIRE = "1"; +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/HttpStatus.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/HttpStatus.java new file mode 100644 index 0000000..36e0783 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/HttpStatus.java @@ -0,0 +1,93 @@ +package com.muyu.common.core.constant; + +/** + * 返回状态码 + * + * @author muyu + */ +public class HttpStatus { + /** + * 操作成功 + */ + public static final int SUCCESS = 200; + + /** + * 对象创建成功 + */ + public static final int CREATED = 201; + + /** + * 请求已经被接受 + */ + public static final int ACCEPTED = 202; + + /** + * 操作已经执行成功,但是没有返回数据 + */ + public static final int NO_CONTENT = 204; + + /** + * 资源已被移除 + */ + public static final int MOVED_PERM = 301; + + /** + * 重定向 + */ + public static final int SEE_OTHER = 303; + + /** + * 资源没有被修改 + */ + public static final int NOT_MODIFIED = 304; + + /** + * 参数列表错误(缺少,格式不匹配) + */ + public static final int BAD_REQUEST = 400; + + /** + * 未授权 + */ + public static final int UNAUTHORIZED = 401; + + /** + * 访问受限,授权过期 + */ + public static final int FORBIDDEN = 403; + + /** + * 资源,服务未找到 + */ + public static final int NOT_FOUND = 404; + + /** + * 不允许的http方法 + */ + public static final int BAD_METHOD = 405; + + /** + * 资源冲突,或者资源被锁 + */ + public static final int CONFLICT = 409; + + /** + * 不支持的数据,媒体类型 + */ + public static final int UNSUPPORTED_TYPE = 415; + + /** + * 系统内部错误 + */ + public static final int ERROR = 500; + + /** + * 接口未实现 + */ + public static final int NOT_IMPLEMENTED = 501; + + /** + * 系统警告消息 + */ + public static final int WARN = 601; +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/KafkaConstants.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/KafkaConstants.java new file mode 100644 index 0000000..81e2d30 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/KafkaConstants.java @@ -0,0 +1,81 @@ +package com.muyu.common.core.constant; + +import org.springframework.beans.factory.annotation.Value; + +/** + * kafka 连接常量 + * @Author:杨鹏 + * @Package:com.muyu.common.core.constant + * @Project:car-cloud-server + * @name:KafkaConstants + * @Date:2024/9/28 20:26 + * @author muyu + */ +public class KafkaConstants { + + /** + * kafka地址 + */ + public static final String BOOTSTRAP_SERVERS = "bootstrap.servers"; + + /** + * 重试次数 + */ + public static final String RETRIES = "retries"; + + /** + * 默认批量大小 + */ + public static final String BATCH_SIZE = "batch.size"; + + /** + * 总内存字节数 + */ + public static final String BUFFER_MEMORY = "buffer.memory"; + + /** + * 生产者偏移量 + */ + public static final String ACKS = "acks"; + + /** + * 消费者偏移量 + */ + public static final String ENABLE_AUTO_COMMIT = "enable.auto.commit"; + + /** + * 自动提交时间间隔 + */ + public static final String AUTO_COMMIT_INTERVAL = "auto.commit.interval"; + + /** + * 偏移量配置 + */ + public static final String AUTO_OFFSET_RESET = "auto.offset.reset"; + + /** + * 堵塞最大时间 + */ + public static final String FETCH_MAX_WAIT = "fetch.max.wait"; + + /** + * 请求最小字节 + */ + public static final String FETCH_MIN_SIZE = "fetch.min.size"; + + /** + * 心跳间隔时间 + */ + public static final String HEARTBEAT_INTERVAL = "heartbeat.interval"; + + /** + * 最大记录条数 + */ + public static final String MAX_POLL_RECORDS = "max.poll.records"; + + /** + * 消费组 + */ + public static final String GROUP_ID = "group.id"; + +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/ScheduleConstants.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/ScheduleConstants.java new file mode 100644 index 0000000..b5bceb0 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/ScheduleConstants.java @@ -0,0 +1,56 @@ +package com.muyu.common.core.constant; + +/** + * 任务调度通用常量 + * + * @author muyu + */ +public class ScheduleConstants { + public static final String TASK_CLASS_NAME = "TASK_CLASS_NAME"; + + /** + * 执行目标key + */ + public static final String TASK_PROPERTIES = "TASK_PROPERTIES"; + + /** + * 默认 + */ + public static final String MISFIRE_DEFAULT = "0"; + + /** + * 立即触发执行 + */ + public static final String MISFIRE_IGNORE_MISFIRES = "1"; + + /** + * 触发一次执行 + */ + public static final String MISFIRE_FIRE_AND_PROCEED = "2"; + + /** + * 不触发立即执行 + */ + public static final String MISFIRE_DO_NOTHING = "3"; + + public enum Status { + /** + * 正常 + */ + NORMAL("0"), + /** + * 暂停 + */ + PAUSE("1"); + + private String value; + + private Status (String value) { + this.value = value; + } + + public String getValue () { + return value; + } + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/SecurityConstants.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/SecurityConstants.java new file mode 100644 index 0000000..6642bea --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/SecurityConstants.java @@ -0,0 +1,53 @@ +package com.muyu.common.core.constant; + +/** + * 权限相关通用常量 + * + * @author muyu + */ +public class SecurityConstants { + /** + * 用户ID字段 + */ + public static final String DETAILS_USER_ID = "user_id"; + + /** + * 用户名字段 + */ + public static final String DETAILS_USERNAME = "username"; + + /** + * 授权信息字段 + */ + public static final String AUTHORIZATION_HEADER = "authorization"; + + /** + * 请求来源 + */ + public static final String FROM_SOURCE = "from-source"; + + /** + * 内部请求 + */ + public static final String INNER = "inner"; + + /** + * 用户标识 + */ + public static final String USER_KEY = "user_key"; + + /** + * 登录用户 + */ + public static final String LOGIN_USER = "login_user"; + + /** + * 角色权限 + */ + public static final String ROLE_PERMISSION = "role_permission"; + + /** + * + */ + public static final String DATABASE_NAME = "database_name"; +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java new file mode 100644 index 0000000..bb59b70 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java @@ -0,0 +1,23 @@ +package com.muyu.common.core.constant; + +/** + * 服务名称 + * + * @author muyu + */ +public class ServiceNameConstants { + /** + * 认证服务的serviceid + */ + public static final String AUTH_SERVICE = "cloud-auth"; + + /** + * 系统模块的serviceid + */ + public static final String SYSTEM_SERVICE = "cloud-system"; + + /** + * 文件服务的serviceid + */ + public static final String FILE_SERVICE = "cloud-file"; +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/TokenConstants.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/TokenConstants.java new file mode 100644 index 0000000..38abd57 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/TokenConstants.java @@ -0,0 +1,24 @@ +package com.muyu.common.core.constant; + +/** + * Token的Key常量 + * + * @author muyu + */ +public class TokenConstants { + /** + * 令牌自定义标识 + */ + public static final String AUTHENTICATION = "Authorization"; + + /** + * 令牌前缀 + */ + public static final String PREFIX = "Bearer "; + + /** + * 令牌秘钥 + */ + public final static String SECRET = "abcdefghijklmnsalieopadfaqawefwerstuvwxyz"; + +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/UserConstants.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/UserConstants.java new file mode 100644 index 0000000..0df401c --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/UserConstants.java @@ -0,0 +1,113 @@ +package com.muyu.common.core.constant; + +/** + * 用户常量信息 + * + * @author muyu + */ +public class UserConstants { + /** + * 平台内系统用户的唯一标志 + */ + public static final String SYS_USER = "SYS_USER"; + + /** + * 正常状态 + */ + public static final String NORMAL = "0"; + + /** + * 异常状态 + */ + public static final String EXCEPTION = "1"; + + /** + * 用户封禁状态 + */ + public static final String USER_DISABLE = "1"; + + /** + * 角色封禁状态 + */ + public static final String ROLE_DISABLE = "1"; + + /** + * 部门正常状态 + */ + public static final String DEPT_NORMAL = "0"; + + /** + * 部门停用状态 + */ + public static final String DEPT_DISABLE = "1"; + + /** + * 字典正常状态 + */ + public static final String DICT_NORMAL = "0"; + + /** + * 是否为系统默认(是) + */ + public static final String YES = "Y"; + + /** + * 是否菜单外链(是) + */ + public static final String YES_FRAME = "0"; + + /** + * 是否菜单外链(否) + */ + public static final String NO_FRAME = "1"; + + /** + * 菜单类型(目录) + */ + public static final String TYPE_DIR = "M"; + + /** + * 菜单类型(菜单) + */ + public static final String TYPE_MENU = "C"; + + /** + * 菜单类型(按钮) + */ + public static final String TYPE_BUTTON = "F"; + + /** + * Layout组件标识 + */ + public final static String LAYOUT = "Layout"; + + /** + * ParentView组件标识 + */ + public final static String PARENT_VIEW = "ParentView"; + + /** + * InnerLink组件标识 + */ + public final static String INNER_LINK = "InnerLink"; + + /** + * 校验是否唯一的返回标识 + */ + public final static boolean UNIQUE = true; + public final static boolean NOT_UNIQUE = false; + + /** + * 用户名长度限制 + */ + public static final int USERNAME_MIN_LENGTH = 2; + + public static final int USERNAME_MAX_LENGTH = 20; + + /** + * 密码长度限制 + */ + public static final int PASSWORD_MIN_LENGTH = 5; + + public static final int PASSWORD_MAX_LENGTH = 20; +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/context/SecurityContextHolder.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/context/SecurityContextHolder.java new file mode 100644 index 0000000..80ea42b --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/context/SecurityContextHolder.java @@ -0,0 +1,83 @@ +package com.muyu.common.core.context; + +import com.alibaba.ttl.TransmittableThreadLocal; +import com.muyu.common.core.constant.SecurityConstants; +import com.muyu.common.core.text.Convert; +import com.muyu.common.core.utils.StringUtils; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 获取当前线程变量中的 用户id、用户名称、Token等信息 + * 注意: 必须在网关通过请求头的方法传入,同时在HeaderInterceptor拦截器设置值。 否则这里无法获取 + * + * @author muyu + */ +public class SecurityContextHolder { + private static final TransmittableThreadLocal> THREAD_LOCAL = new TransmittableThreadLocal<>(); + + public static void set (String key, Object value) { + Map map = getLocalMap(); + map.put(key, value == null ? StringUtils.EMPTY : value); + } + + public static String get (String key) { + Map map = getLocalMap(); + return Convert.toStr(map.getOrDefault(key, StringUtils.EMPTY)); + } + + public static T get (String key, Class clazz) { + Map map = getLocalMap(); + return StringUtils.cast(map.getOrDefault(key, null)); + } + + public static Map getLocalMap () { + Map map = THREAD_LOCAL.get(); + if (map == null) { + map = new ConcurrentHashMap(); + THREAD_LOCAL.set(map); + } + return map; + } + + public static void setLocalMap (Map threadLocalMap) { + THREAD_LOCAL.set(threadLocalMap); + } + + public static Long getUserId () { + return Convert.toLong(get(SecurityConstants.DETAILS_USER_ID), 0L); + } + + public static void setUserId (String account) { + set(SecurityConstants.DETAILS_USER_ID, account); + } + + public static String getUserName () { + return get(SecurityConstants.DETAILS_USERNAME); + } + + public static void setUserName (String username) { + set(SecurityConstants.DETAILS_USERNAME, username); + } + + public static String getUserKey () { + return get(SecurityConstants.USER_KEY); + } + + public static void setUserKey (String userKey) { + set(SecurityConstants.USER_KEY, userKey); + } + + public static String getPermission () { + return get(SecurityConstants.ROLE_PERMISSION); + } + + public static void setPermission (String permissions) { + set(SecurityConstants.ROLE_PERMISSION, permissions); + } + + public static void remove () { + THREAD_LOCAL.remove(); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/domain/PageResult.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/domain/PageResult.java new file mode 100644 index 0000000..09eeb90 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/domain/PageResult.java @@ -0,0 +1,32 @@ +package com.muyu.common.core.domain; + +import lombok.Data; + +import java.util.List; + +/** +*@Author: LiDongJia +*@Package: com.muyu.common.core.domain +*@Project: 2112-car-cloud-server +*@name: PageResult +*@Date: 2024/9/18 1:52 +*@Description: 分页查询响应结果集 +*/ +@Data +public class PageResult { + + /** + * 总条数 + */ + private Integer total; + + /** + * 总页数 + */ + private Integer pages; + + /** + * 集合 + */ + private List list; +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/domain/Result.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/domain/Result.java new file mode 100644 index 0000000..70faa40 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/domain/Result.java @@ -0,0 +1,112 @@ +package com.muyu.common.core.domain; + +import com.muyu.common.core.constant.Constants; +import com.muyu.common.core.constant.HttpStatus; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 响应信息主体 + * + * @author muyu + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class Result implements Serializable { + /** + * 成功 + */ + public static final int SUCCESS = Constants.SUCCESS; + /** + * 失败 + */ + public static final int FAIL = Constants.FAIL; + /** + * 警告 + */ + public static final int WARN = HttpStatus.WARN; + + private static final long serialVersionUID = 1L; + private int code; + + private String msg; + + private T data; + + public static Result success () { + return restResult(null, SUCCESS, null); + } + + public static Result success (T data) { + return restResult(data, SUCCESS, null); + } + + public static Result success (T data, String msg) { + return restResult(data, SUCCESS, msg); + } + + public static Result error () { + return restResult(null, FAIL, null); + } + + public static Result error (String msg) { + return restResult(null, FAIL, msg); + } + + public static Result error (T data) { + return restResult(data, FAIL, null); + } + + 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); + } + + + + public static Result warn () { + return restResult(null, WARN, null); + } + + public static Result warn (String msg) { + return restResult(null, WARN, msg); + } + + public static Result warn (T data) { + return restResult(data, WARN, null); + } + + public static Result warn (T data, String msg) { + return restResult(data, WARN, msg); + } + + public static Result warn (int code, String msg) { + return restResult(null, code, msg); + } + + private static Result restResult (T data, int code, String msg) { + return Result.builder() + .code(code) + .data(data) + .msg(msg) + .build(); + } + + public static Boolean isError (Result ret) { + return !isSuccess(ret); + } + + public static Boolean isSuccess (Result ret) { + return Result.SUCCESS == ret.getCode(); + } + +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/domain/req/PageReq.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/domain/req/PageReq.java new file mode 100644 index 0000000..c3684e0 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/domain/req/PageReq.java @@ -0,0 +1,38 @@ +package com.muyu.common.core.domain.req; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @Author: LiDongJia + * @Package: com.muyu.common.core.domain.req + * @Project: 2112-car-cloud-server + * @name: PageReq + * @Date: 2024/9/18 1:42 + * @Description: 分页工具参数 + */ +@Data +public class PageReq { + + /** + * 当前页数 + */ + private Integer pageNum; + + /** + * 分页单位 + */ + private Integer pageSize; + + /** + * 排序字段 + */ + private String orderBy; + + /** + * 是否升序 + */ + + private Boolean isAsc; + +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/enums/UserStatus.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/enums/UserStatus.java new file mode 100644 index 0000000..32ff39a --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/enums/UserStatus.java @@ -0,0 +1,26 @@ +package com.muyu.common.core.enums; + +/** + * 用户状态 + * + * @author muyu + */ +public enum UserStatus { + OK("0", "正常"), DISABLE("1", "停用"), DELETED("2", "删除"); + + private final String code; + private final String info; + + UserStatus (String code, String info) { + this.code = code; + this.info = info; + } + + public String getCode () { + return code; + } + + public String getInfo () { + return info; + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/CaptchaException.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/CaptchaException.java new file mode 100644 index 0000000..eb32d0b --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/CaptchaException.java @@ -0,0 +1,14 @@ +package com.muyu.common.core.exception; + +/** + * 验证码错误异常类 + * + * @author muyu + */ +public class CaptchaException extends RuntimeException { + private static final long serialVersionUID = 1L; + + public CaptchaException (String msg) { + super(msg); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/CheckedException.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/CheckedException.java new file mode 100644 index 0000000..4f12893 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/CheckedException.java @@ -0,0 +1,26 @@ +package com.muyu.common.core.exception; + +/** + * 检查异常 + * + * @author muyu + */ +public class CheckedException extends RuntimeException { + private static final long serialVersionUID = 1L; + + public CheckedException (String message) { + super(message); + } + + public CheckedException (Throwable cause) { + super(cause); + } + + public CheckedException (String message, Throwable cause) { + super(message, cause); + } + + public CheckedException (String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/DemoModeException.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/DemoModeException.java new file mode 100644 index 0000000..82249cf --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/DemoModeException.java @@ -0,0 +1,13 @@ +package com.muyu.common.core.exception; + +/** + * 演示模式异常 + * + * @author muyu + */ +public class DemoModeException extends RuntimeException { + private static final long serialVersionUID = 1L; + + public DemoModeException () { + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/GlobalException.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/GlobalException.java new file mode 100644 index 0000000..b14e03c --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/GlobalException.java @@ -0,0 +1,51 @@ +package com.muyu.common.core.exception; + +/** + * 全局异常 + * + * @author muyu + */ +public class GlobalException extends RuntimeException { + private static final long serialVersionUID = 1L; + + /** + * 错误提示 + */ + private String message; + + /** + * 错误明细,内部调试错误 + *

+ * 和 {@link CommonResult#getDetailMessage()} 一致的设计 + */ + private String detailMessage; + + /** + * 空构造方法,避免反序列化问题 + */ + public GlobalException () { + } + + public GlobalException (String message) { + this.message = message; + } + + public String getDetailMessage () { + return detailMessage; + } + + public GlobalException setDetailMessage (String detailMessage) { + this.detailMessage = detailMessage; + return this; + } + + @Override + public String getMessage () { + return message; + } + + public GlobalException setMessage (String message) { + this.message = message; + return this; + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/InnerAuthException.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/InnerAuthException.java new file mode 100644 index 0000000..f211c7f --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/InnerAuthException.java @@ -0,0 +1,14 @@ +package com.muyu.common.core.exception; + +/** + * 内部认证异常 + * + * @author muyu + */ +public class InnerAuthException extends RuntimeException { + private static final long serialVersionUID = 1L; + + public InnerAuthException (String message) { + super(message); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/PreAuthorizeException.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/PreAuthorizeException.java new file mode 100644 index 0000000..6cb8636 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/PreAuthorizeException.java @@ -0,0 +1,13 @@ +package com.muyu.common.core.exception; + +/** + * 权限异常 + * + * @author muyu + */ +public class PreAuthorizeException extends RuntimeException { + private static final long serialVersionUID = 1L; + + public PreAuthorizeException () { + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/ServiceException.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/ServiceException.java new file mode 100644 index 0000000..11bb283 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/ServiceException.java @@ -0,0 +1,65 @@ +package com.muyu.common.core.exception; + +/** + * 业务异常 + * + * @author muyu + */ +public class ServiceException extends RuntimeException { + private static final long serialVersionUID = 1L; + + /** + * 错误码 + */ + private Integer code; + + /** + * 错误提示 + */ + private String message; + + /** + * 错误明细,内部调试错误 + *

+ * 和 {@link CommonResult#getDetailMessage()} 一致的设计 + */ + private String detailMessage; + + /** + * 空构造方法,避免反序列化问题 + */ + public ServiceException () { + } + + public ServiceException (String message) { + this.message = message; + } + + public ServiceException (String message, Integer code) { + this.message = message; + this.code = code; + } + + public String getDetailMessage () { + return detailMessage; + } + + public ServiceException setDetailMessage (String detailMessage) { + this.detailMessage = detailMessage; + return this; + } + + @Override + public String getMessage () { + return message; + } + + public ServiceException setMessage (String message) { + this.message = message; + return this; + } + + public Integer getCode () { + return code; + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/UtilException.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/UtilException.java new file mode 100644 index 0000000..8de4bbf --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/UtilException.java @@ -0,0 +1,22 @@ +package com.muyu.common.core.exception; + +/** + * 工具类异常 + * + * @author muyu + */ +public class UtilException extends RuntimeException { + private static final long serialVersionUID = 8247610319171014183L; + + public UtilException (Throwable e) { + super(e.getMessage(), e); + } + + public UtilException (String message) { + super(message); + } + + public UtilException (String message, Throwable throwable) { + super(message, throwable); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/auth/NotLoginException.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/auth/NotLoginException.java new file mode 100644 index 0000000..40293bf --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/auth/NotLoginException.java @@ -0,0 +1,14 @@ +package com.muyu.common.core.exception.auth; + +/** + * 未能通过的登录认证异常 + * + * @author muyu + */ +public class NotLoginException extends RuntimeException { + private static final long serialVersionUID = 1L; + + public NotLoginException (String message) { + super(message); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/auth/NotPermissionException.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/auth/NotPermissionException.java new file mode 100644 index 0000000..e464840 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/auth/NotPermissionException.java @@ -0,0 +1,20 @@ +package com.muyu.common.core.exception.auth; + +import org.apache.commons.lang3.StringUtils; + +/** + * 未能通过的权限认证异常 + * + * @author muyu + */ +public class NotPermissionException extends RuntimeException { + private static final long serialVersionUID = 1L; + + public NotPermissionException (String permission) { + super(permission); + } + + public NotPermissionException (String[] permissions) { + super(StringUtils.join(permissions, ",")); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/auth/NotRoleException.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/auth/NotRoleException.java new file mode 100644 index 0000000..53a1522 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/auth/NotRoleException.java @@ -0,0 +1,20 @@ +package com.muyu.common.core.exception.auth; + +import org.apache.commons.lang3.StringUtils; + +/** + * 未能通过的角色认证异常 + * + * @author muyu + */ +public class NotRoleException extends RuntimeException { + private static final long serialVersionUID = 1L; + + public NotRoleException (String role) { + super(role); + } + + public NotRoleException (String[] roles) { + super(StringUtils.join(roles, ",")); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/base/BaseException.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/base/BaseException.java new file mode 100644 index 0000000..9bb1356 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/base/BaseException.java @@ -0,0 +1,69 @@ +package com.muyu.common.core.exception.base; + +/** + * 基础异常 + * + * @author muyu + */ +public class BaseException extends RuntimeException { + private static final long serialVersionUID = 1L; + + /** + * 所属模块 + */ + private String module; + + /** + * 错误码 + */ + private String code; + + /** + * 错误码对应的参数 + */ + private Object[] args; + + /** + * 错误消息 + */ + private String defaultMessage; + + public BaseException (String module, String code, Object[] args, String defaultMessage) { + this.module = module; + this.code = code; + this.args = args; + this.defaultMessage = defaultMessage; + } + + public BaseException (String module, String code, Object[] args) { + this(module, code, args, null); + } + + public BaseException (String module, String defaultMessage) { + this(module, null, null, defaultMessage); + } + + public BaseException (String code, Object[] args) { + this(null, code, args, null); + } + + public BaseException (String defaultMessage) { + this(null, null, null, defaultMessage); + } + + public String getModule () { + return module; + } + + public String getCode () { + return code; + } + + public Object[] getArgs () { + return args; + } + + public String getDefaultMessage () { + return defaultMessage; + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/file/FileException.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/file/FileException.java new file mode 100644 index 0000000..ae2e184 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/file/FileException.java @@ -0,0 +1,17 @@ +package com.muyu.common.core.exception.file; + +import com.muyu.common.core.exception.base.BaseException; + +/** + * 文件信息异常类 + * + * @author muyu + */ +public class FileException extends BaseException { + private static final long serialVersionUID = 1L; + + public FileException (String code, Object[] args, String msg) { + super("file", code, args, msg); + } + +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/file/FileNameLengthLimitExceededException.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/file/FileNameLengthLimitExceededException.java new file mode 100644 index 0000000..3a85df3 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/file/FileNameLengthLimitExceededException.java @@ -0,0 +1,14 @@ +package com.muyu.common.core.exception.file; + +/** + * 文件名称超长限制异常类 + * + * @author muyu + */ +public class FileNameLengthLimitExceededException extends FileException { + private static final long serialVersionUID = 1L; + + public FileNameLengthLimitExceededException (int defaultFileNameLength) { + super("upload.filename.exceed.length", new Object[]{defaultFileNameLength}, "the filename is too long"); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/file/FileSizeLimitExceededException.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/file/FileSizeLimitExceededException.java new file mode 100644 index 0000000..7570be5 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/file/FileSizeLimitExceededException.java @@ -0,0 +1,14 @@ +package com.muyu.common.core.exception.file; + +/** + * 文件名大小限制异常类 + * + * @author muyu + */ +public class FileSizeLimitExceededException extends FileException { + private static final long serialVersionUID = 1L; + + public FileSizeLimitExceededException (long defaultMaxSize) { + super("upload.exceed.maxSize", new Object[]{defaultMaxSize}, "the filesize is too large"); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/file/FileUploadException.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/file/FileUploadException.java new file mode 100644 index 0000000..94341ab --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/file/FileUploadException.java @@ -0,0 +1,52 @@ +package com.muyu.common.core.exception.file; + +import java.io.PrintStream; +import java.io.PrintWriter; + +/** + * 文件上传异常类 + * + * @author muyu + */ +public class FileUploadException extends Exception { + + private static final long serialVersionUID = 1L; + + private final Throwable cause; + + public FileUploadException () { + this(null, null); + } + + public FileUploadException (final String msg) { + this(msg, null); + } + + public FileUploadException (String msg, Throwable cause) { + super(msg); + this.cause = cause; + } + + @Override + public void printStackTrace (PrintStream stream) { + super.printStackTrace(stream); + if (cause != null) { + stream.println("Caused by:"); + cause.printStackTrace(stream); + } + } + + @Override + public void printStackTrace (PrintWriter writer) { + super.printStackTrace(writer); + if (cause != null) { + writer.println("Caused by:"); + cause.printStackTrace(writer); + } + } + + @Override + public Throwable getCause () { + return cause; + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/file/InvalidExtensionException.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/file/InvalidExtensionException.java new file mode 100644 index 0000000..3a993c2 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/file/InvalidExtensionException.java @@ -0,0 +1,67 @@ +package com.muyu.common.core.exception.file; + +import java.util.Arrays; + +/** + * 文件上传 误异常类 + * + * @author muyu + */ +public class InvalidExtensionException extends FileUploadException { + private static final long serialVersionUID = 1L; + + private String[] allowedExtension; + private String extension; + private String filename; + + public InvalidExtensionException (String[] allowedExtension, String extension, String filename) { + super("filename : [" + filename + "], extension : [" + extension + "], allowed extension : [" + Arrays.toString(allowedExtension) + "]"); + this.allowedExtension = allowedExtension; + this.extension = extension; + this.filename = filename; + } + + public String[] getAllowedExtension () { + return allowedExtension; + } + + public String getExtension () { + return extension; + } + + public String getFilename () { + return filename; + } + + public static class InvalidImageExtensionException extends InvalidExtensionException { + private static final long serialVersionUID = 1L; + + public InvalidImageExtensionException (String[] allowedExtension, String extension, String filename) { + super(allowedExtension, extension, filename); + } + } + + public static class InvalidFlashExtensionException extends InvalidExtensionException { + private static final long serialVersionUID = 1L; + + public InvalidFlashExtensionException (String[] allowedExtension, String extension, String filename) { + super(allowedExtension, extension, filename); + } + } + + public static class InvalidMediaExtensionException extends InvalidExtensionException { + private static final long serialVersionUID = 1L; + + public InvalidMediaExtensionException (String[] allowedExtension, String extension, String filename) { + super(allowedExtension, extension, filename); + } + } + + public static class InvalidVideoExtensionException extends InvalidExtensionException { + private static final long serialVersionUID = 1L; + + public InvalidVideoExtensionException (String[] allowedExtension, String extension, String filename) { + super(allowedExtension, extension, filename); + } + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/job/TaskException.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/job/TaskException.java new file mode 100644 index 0000000..aee364a --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/job/TaskException.java @@ -0,0 +1,29 @@ +package com.muyu.common.core.exception.job; + +/** + * 计划策略异常 + * + * @author muyu + */ +public class TaskException extends Exception { + private static final long serialVersionUID = 1L; + + private Code code; + + public TaskException (String msg, Code code) { + this(msg, code, null); + } + + public TaskException (String msg, Code code, Exception nestedEx) { + super(msg, nestedEx); + this.code = code; + } + + public Code getCode () { + return code; + } + + public enum Code { + TASK_EXISTS, NO_TASK_EXISTS, TASK_ALREADY_STARTED, UNKNOWN, CONFIG_ERROR, TASK_NODE_NOT_AVAILABLE + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/user/CaptchaExpireException.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/user/CaptchaExpireException.java new file mode 100644 index 0000000..a95a57b --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/user/CaptchaExpireException.java @@ -0,0 +1,14 @@ +package com.muyu.common.core.exception.user; + +/** + * 验证码失效异常类 + * + * @author muyu + */ +public class CaptchaExpireException extends UserException { + private static final long serialVersionUID = 1L; + + public CaptchaExpireException () { + super("user.jcaptcha.expire", null); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/user/UserException.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/user/UserException.java new file mode 100644 index 0000000..f113749 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/user/UserException.java @@ -0,0 +1,16 @@ +package com.muyu.common.core.exception.user; + +import com.muyu.common.core.exception.base.BaseException; + +/** + * 用户信息异常类 + * + * @author muyu + */ +public class UserException extends BaseException { + private static final long serialVersionUID = 1L; + + public UserException (String code, Object[] args) { + super("user", code, args, null); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/user/UserPasswordNotMatchException.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/user/UserPasswordNotMatchException.java new file mode 100644 index 0000000..7615cda --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/user/UserPasswordNotMatchException.java @@ -0,0 +1,14 @@ +package com.muyu.common.core.exception.user; + +/** + * 用户密码不正确或不符合规范异常类 + * + * @author muyu + */ +public class UserPasswordNotMatchException extends UserException { + private static final long serialVersionUID = 1L; + + public UserPasswordNotMatchException () { + super("user.password.not.match", null); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/feign/FeginConfig.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/feign/FeginConfig.java new file mode 100644 index 0000000..77a12fe --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/feign/FeginConfig.java @@ -0,0 +1,19 @@ +package com.muyu.common.core.feign; + +import feign.Contract; +import org.springframework.cloud.openfeign.support.SpringMvcContract; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class FeginConfig { +// @Bean +// public Contract feignConfiguration() { +// return new feign.Contract.Default(); +// } + + @Bean + public Contract feignConfiguration() { + return new SpringMvcContract(); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/text/CharsetKit.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/text/CharsetKit.java new file mode 100644 index 0000000..fe5e9fa --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/text/CharsetKit.java @@ -0,0 +1,94 @@ +package com.muyu.common.core.text; + +import com.muyu.common.core.utils.StringUtils; + +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; + +/** + * 字符集工具类 + * + * @author muyu + */ +public class CharsetKit { + /** + * ISO-8859-1 + */ + public static final String ISO_8859_1 = "ISO-8859-1"; + /** + * UTF-8 + */ + public static final String UTF_8 = "UTF-8"; + /** + * GBK + */ + public static final String GBK = "GBK"; + + /** + * ISO-8859-1 + */ + public static final Charset CHARSET_ISO_8859_1 = Charset.forName(ISO_8859_1); + /** + * UTF-8 + */ + public static final Charset CHARSET_UTF_8 = Charset.forName(UTF_8); + /** + * GBK + */ + public static final Charset CHARSET_GBK = Charset.forName(GBK); + + /** + * 转换为Charset对象 + * + * @param charset 字符集,为空则返回默认字符集 + * + * @return Charset + */ + public static Charset charset (String charset) { + return StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset); + } + + /** + * 转换字符串的字符集编码 + * + * @param source 字符串 + * @param srcCharset 源字符集,默认ISO-8859-1 + * @param destCharset 目标字符集,默认UTF-8 + * + * @return 转换后的字符集 + */ + public static String convert (String source, String srcCharset, String destCharset) { + return convert(source, Charset.forName(srcCharset), Charset.forName(destCharset)); + } + + /** + * 转换字符串的字符集编码 + * + * @param source 字符串 + * @param srcCharset 源字符集,默认ISO-8859-1 + * @param destCharset 目标字符集,默认UTF-8 + * + * @return 转换后的字符集 + */ + public static String convert (String source, Charset srcCharset, Charset destCharset) { + if (null == srcCharset) { + srcCharset = StandardCharsets.ISO_8859_1; + } + + if (null == destCharset) { + destCharset = StandardCharsets.UTF_8; + } + + if (StringUtils.isEmpty(source) || srcCharset.equals(destCharset)) { + return source; + } + return new String(source.getBytes(srcCharset), destCharset); + } + + /** + * @return 系统字符集编码 + */ + public static String systemCharset () { + return Charset.defaultCharset().name(); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/text/Convert.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/text/Convert.java new file mode 100644 index 0000000..fb57cb9 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/text/Convert.java @@ -0,0 +1,903 @@ +package com.muyu.common.core.text; + +import com.muyu.common.core.utils.StringUtils; + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.math.RoundingMode; +import java.nio.ByteBuffer; +import java.nio.charset.Charset; +import java.text.NumberFormat; +import java.util.Set; + +/** + * 类型转换器 + * + * @author muyu + */ +public class Convert { + /** + * 转换为字符串
+ * 如果给定的值为null,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * + * @return 结果 + */ + public static String toStr (Object value, String defaultValue) { + if (null == value) { + return defaultValue; + } + if (value instanceof String) { + return (String) value; + } + return value.toString(); + } + + /** + * 转换为字符串
+ * 如果给定的值为null,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * + * @return 结果 + */ + public static String toStr (Object value) { + return toStr(value, null); + } + + /** + * 转换为字符
+ * 如果给定的值为null,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * + * @return 结果 + */ + public static Character toChar (Object value, Character defaultValue) { + if (null == value) { + return defaultValue; + } + if (value instanceof Character) { + return (Character) value; + } + + final String valueStr = toStr(value, null); + return StringUtils.isEmpty(valueStr) ? defaultValue : valueStr.charAt(0); + } + + /** + * 转换为字符
+ * 如果给定的值为null,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * + * @return 结果 + */ + public static Character toChar (Object value) { + return toChar(value, null); + } + + /** + * 转换为byte
+ * 如果给定的值为null,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * + * @return 结果 + */ + public static Byte toByte (Object value, Byte defaultValue) { + if (value == null) { + return defaultValue; + } + if (value instanceof Byte) { + return (Byte) value; + } + if (value instanceof Number) { + return ((Number) value).byteValue(); + } + final String valueStr = toStr(value, null); + if (StringUtils.isEmpty(valueStr)) { + return defaultValue; + } + try { + return Byte.parseByte(valueStr); + } catch (Exception e) { + return defaultValue; + } + } + + /** + * 转换为byte
+ * 如果给定的值为null,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * + * @return 结果 + */ + public static Byte toByte (Object value) { + return toByte(value, null); + } + + /** + * 转换为Short
+ * 如果给定的值为null,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * + * @return 结果 + */ + public static Short toShort (Object value, Short defaultValue) { + if (value == null) { + return defaultValue; + } + if (value instanceof Short) { + return (Short) value; + } + if (value instanceof Number) { + return ((Number) value).shortValue(); + } + final String valueStr = toStr(value, null); + if (StringUtils.isEmpty(valueStr)) { + return defaultValue; + } + try { + return Short.parseShort(valueStr.trim()); + } catch (Exception e) { + return defaultValue; + } + } + + /** + * 转换为Short
+ * 如果给定的值为null,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * + * @return 结果 + */ + public static Short toShort (Object value) { + return toShort(value, null); + } + + /** + * 转换为Number
+ * 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * + * @return 结果 + */ + public static Number toNumber (Object value, Number defaultValue) { + if (value == null) { + return defaultValue; + } + if (value instanceof Number) { + return (Number) value; + } + final String valueStr = toStr(value, null); + if (StringUtils.isEmpty(valueStr)) { + return defaultValue; + } + try { + return NumberFormat.getInstance().parse(valueStr); + } catch (Exception e) { + return defaultValue; + } + } + + /** + * 转换为Number
+ * 如果给定的值为空,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * + * @return 结果 + */ + public static Number toNumber (Object value) { + return toNumber(value, null); + } + + /** + * 转换为int
+ * 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * + * @return 结果 + */ + public static Integer toInt (Object value, Integer defaultValue) { + if (value == null) { + return defaultValue; + } + if (value instanceof Integer) { + return (Integer) value; + } + if (value instanceof Number) { + return ((Number) value).intValue(); + } + final String valueStr = toStr(value, null); + if (StringUtils.isEmpty(valueStr)) { + return defaultValue; + } + try { + return Integer.parseInt(valueStr.trim()); + } catch (Exception e) { + return defaultValue; + } + } + + /** + * 转换为int
+ * 如果给定的值为null,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * + * @return 结果 + */ + public static Integer toInt (Object value) { + return toInt(value, null); + } + + /** + * 转换为Integer数组
+ * + * @param str 被转换的值 + * + * @return 结果 + */ + public static Integer[] toIntArray (String str) { + return toIntArray(",", str); + } + + /** + * 转换为Long数组
+ * + * @param str 被转换的值 + * + * @return 结果 + */ + public static Long[] toLongArray (String str) { + return toLongArray(",", str); + } + + /** + * 转换为Integer数组
+ * + * @param split 分隔符 + * @param str 被转换的值 + * + * @return 结果 + */ + public static Integer[] toIntArray (String split, String str) { + if (StringUtils.isEmpty(str)) { + return new Integer[]{}; + } + String[] arr = str.split(split); + final Integer[] ints = new Integer[arr.length]; + for (int i = 0 ; i < arr.length ; i++) { + final Integer v = toInt(arr[i], 0); + ints[i] = v; + } + return ints; + } + + /** + * 转换为Long数组
+ * + * @param split 分隔符 + * @param str 被转换的值 + * + * @return 结果 + */ + public static Long[] toLongArray (String split, String str) { + if (StringUtils.isEmpty(str)) { + return new Long[]{}; + } + String[] arr = str.split(split); + final Long[] longs = new Long[arr.length]; + for (int i = 0 ; i < arr.length ; i++) { + final Long v = toLong(arr[i], null); + longs[i] = v; + } + return longs; + } + + /** + * 转换为String数组
+ * + * @param str 被转换的值 + * + * @return 结果 + */ + public static String[] toStrArray (String str) { + return toStrArray(",", str); + } + + /** + * 转换为String数组
+ * + * @param split 分隔符 + * @param str 被转换的值 + * + * @return 结果 + */ + public static String[] toStrArray (String split, String str) { + return str.split(split); + } + + /** + * 转换为long
+ * 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * + * @return 结果 + */ + public static Long toLong (Object value, Long defaultValue) { + if (value == null) { + return defaultValue; + } + if (value instanceof Long) { + return (Long) value; + } + if (value instanceof Number) { + return ((Number) value).longValue(); + } + final String valueStr = toStr(value, null); + if (StringUtils.isEmpty(valueStr)) { + return defaultValue; + } + try { + // 支持科学计数法 + return new BigDecimal(valueStr.trim()).longValue(); + } catch (Exception e) { + return defaultValue; + } + } + + /** + * 转换为long
+ * 如果给定的值为null,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * + * @return 结果 + */ + public static Long toLong (Object value) { + return toLong(value, null); + } + + /** + * 转换为double
+ * 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * + * @return 结果 + */ + public static Double toDouble (Object value, Double defaultValue) { + if (value == null) { + return defaultValue; + } + if (value instanceof Double) { + return (Double) value; + } + if (value instanceof Number) { + return ((Number) value).doubleValue(); + } + final String valueStr = toStr(value, null); + if (StringUtils.isEmpty(valueStr)) { + return defaultValue; + } + try { + // 支持科学计数法 + return new BigDecimal(valueStr.trim()).doubleValue(); + } catch (Exception e) { + return defaultValue; + } + } + + /** + * 转换为double
+ * 如果给定的值为空,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * + * @return 结果 + */ + public static Double toDouble (Object value) { + return toDouble(value, null); + } + + /** + * 转换为Float
+ * 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * + * @return 结果 + */ + public static Float toFloat (Object value, Float defaultValue) { + if (value == null) { + return defaultValue; + } + if (value instanceof Float) { + return (Float) value; + } + if (value instanceof Number) { + return ((Number) value).floatValue(); + } + final String valueStr = toStr(value, null); + if (StringUtils.isEmpty(valueStr)) { + return defaultValue; + } + try { + return Float.parseFloat(valueStr.trim()); + } catch (Exception e) { + return defaultValue; + } + } + + /** + * 转换为Float
+ * 如果给定的值为空,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * + * @return 结果 + */ + public static Float toFloat (Object value) { + return toFloat(value, null); + } + + /** + * 转换为boolean
+ * String支持的值为:true、false、yes、ok、no,1,0 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * + * @return 结果 + */ + public static Boolean toBool (Object value, Boolean defaultValue) { + if (value == null) { + return defaultValue; + } + if (value instanceof Boolean) { + return (Boolean) value; + } + String valueStr = toStr(value, null); + if (StringUtils.isEmpty(valueStr)) { + return defaultValue; + } + valueStr = valueStr.trim().toLowerCase(); + switch (valueStr) { + case "true": + case "yes": + case "ok": + case "1": + return true; + case "false": + case "no": + case "0": + return false; + default: + return defaultValue; + } + } + + /** + * 转换为boolean
+ * 如果给定的值为空,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * + * @return 结果 + */ + public static Boolean toBool (Object value) { + return toBool(value, null); + } + + /** + * 转换为Enum对象
+ * 如果给定的值为空,或者转换失败,返回默认值
+ * + * @param clazz Enum的Class + * @param value 值 + * @param defaultValue 默认值 + * + * @return Enum + */ + public static > E toEnum (Class clazz, Object value, E defaultValue) { + if (value == null) { + return defaultValue; + } + if (clazz.isAssignableFrom(value.getClass())) { + @SuppressWarnings("unchecked") + E myE = (E) value; + return myE; + } + final String valueStr = toStr(value, null); + if (StringUtils.isEmpty(valueStr)) { + return defaultValue; + } + try { + return Enum.valueOf(clazz, valueStr); + } catch (Exception e) { + return defaultValue; + } + } + + /** + * 转换为Enum对象
+ * 如果给定的值为空,或者转换失败,返回默认值null
+ * + * @param clazz Enum的Class + * @param value 值 + * + * @return Enum + */ + public static > E toEnum (Class clazz, Object value) { + return toEnum(clazz, value, null); + } + + /** + * 转换为BigInteger
+ * 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * + * @return 结果 + */ + public static BigInteger toBigInteger (Object value, BigInteger defaultValue) { + if (value == null) { + return defaultValue; + } + if (value instanceof BigInteger) { + return (BigInteger) value; + } + if (value instanceof Long) { + return BigInteger.valueOf((Long) value); + } + final String valueStr = toStr(value, null); + if (StringUtils.isEmpty(valueStr)) { + return defaultValue; + } + try { + return new BigInteger(valueStr); + } catch (Exception e) { + return defaultValue; + } + } + + /** + * 转换为BigInteger
+ * 如果给定的值为空,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * + * @return 结果 + */ + public static BigInteger toBigInteger (Object value) { + return toBigInteger(value, null); + } + + /** + * 转换为BigDecimal
+ * 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * + * @return 结果 + */ + public static BigDecimal toBigDecimal (Object value, BigDecimal defaultValue) { + if (value == null) { + return defaultValue; + } + if (value instanceof BigDecimal) { + return (BigDecimal) value; + } + if (value instanceof Long) { + return new BigDecimal((Long) value); + } + if (value instanceof Double) { + return BigDecimal.valueOf((Double) value); + } + if (value instanceof Integer) { + return new BigDecimal((Integer) value); + } + final String valueStr = toStr(value, null); + if (StringUtils.isEmpty(valueStr)) { + return defaultValue; + } + try { + return new BigDecimal(valueStr); + } catch (Exception e) { + return defaultValue; + } + } + + /** + * 转换为BigDecimal
+ * 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * + * @return 结果 + */ + public static BigDecimal toBigDecimal (Object value) { + return toBigDecimal(value, null); + } + + /** + * 将对象转为字符串
+ * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法 + * + * @param obj 对象 + * + * @return 字符串 + */ + public static String utf8Str (Object obj) { + return str(obj, CharsetKit.CHARSET_UTF_8); + } + + /** + * 将对象转为字符串
+ * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法 + * + * @param obj 对象 + * @param charsetName 字符集 + * + * @return 字符串 + */ + public static String str (Object obj, String charsetName) { + return str(obj, Charset.forName(charsetName)); + } + + /** + * 将对象转为字符串
+ * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法 + * + * @param obj 对象 + * @param charset 字符集 + * + * @return 字符串 + */ + public static String str (Object obj, Charset charset) { + if (null == obj) { + return null; + } + + if (obj instanceof String) { + return (String) obj; + } else if (obj instanceof byte[] || obj instanceof Byte[]) { + if (obj instanceof byte[]) { + return str((byte[]) obj, charset); + } else { + Byte[] bytes = (Byte[]) obj; + int length = bytes.length; + byte[] dest = new byte[length]; + for (int i = 0 ; i < length ; i++) { + dest[i] = bytes[i]; + } + return str(dest, charset); + } + } else if (obj instanceof ByteBuffer) { + return str((ByteBuffer) obj, charset); + } + return obj.toString(); + } + + /** + * 将byte数组转为字符串 + * + * @param bytes byte数组 + * @param charset 字符集 + * + * @return 字符串 + */ + public static String str (byte[] bytes, String charset) { + return str(bytes, StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset)); + } + + /** + * 解码字节码 + * + * @param data 字符串 + * @param charset 字符集,如果此字段为空,则解码的结果取决于平台 + * + * @return 解码后的字符串 + */ + public static String str (byte[] data, Charset charset) { + if (data == null) { + return null; + } + + if (null == charset) { + return new String(data); + } + return new String(data, charset); + } + + /** + * 将编码的byteBuffer数据转换为字符串 + * + * @param data 数据 + * @param charset 字符集,如果为空使用当前系统字符集 + * + * @return 字符串 + */ + public static String str (ByteBuffer data, String charset) { + if (data == null) { + return null; + } + + return str(data, Charset.forName(charset)); + } + + /** + * 将编码的byteBuffer数据转换为字符串 + * + * @param data 数据 + * @param charset 字符集,如果为空使用当前系统字符集 + * + * @return 字符串 + */ + public static String str (ByteBuffer data, Charset charset) { + if (null == charset) { + charset = Charset.defaultCharset(); + } + return charset.decode(data).toString(); + } + + // ----------------------------------------------------------------------- 全角半角转换 + + /** + * 半角转全角 + * + * @param input String. + * + * @return 全角字符串. + */ + public static String toSBC (String input) { + return toSBC(input, null); + } + + /** + * 半角转全角 + * + * @param input String + * @param notConvertSet 不替换的字符集合 + * + * @return 全角字符串. + */ + public static String toSBC (String input, Set notConvertSet) { + char[] c = input.toCharArray(); + for (int i = 0 ; i < c.length ; i++) { + if (null != notConvertSet && notConvertSet.contains(c[i])) { + // 跳过不替换的字符 + continue; + } + + if (c[i] == ' ') { + c[i] = '\u3000'; + } else if (c[i] < '\177') { + c[i] = (char) (c[i] + 65248); + + } + } + return new String(c); + } + + /** + * 全角转半角 + * + * @param input String. + * + * @return 半角字符串 + */ + public static String toDBC (String input) { + return toDBC(input, null); + } + + /** + * 替换全角为半角 + * + * @param text 文本 + * @param notConvertSet 不替换的字符集合 + * + * @return 替换后的字符 + */ + public static String toDBC (String text, Set notConvertSet) { + char[] c = text.toCharArray(); + for (int i = 0 ; i < c.length ; i++) { + if (null != notConvertSet && notConvertSet.contains(c[i])) { + // 跳过不替换的字符 + continue; + } + + if (c[i] == '\u3000') { + c[i] = ' '; + } else if (c[i] > '\uFF00' && c[i] < '\uFF5F') { + c[i] = (char) (c[i] - 65248); + } + } + return new String(c); + } + + /** + * 数字金额大写转换 先写个完整的然后将如零拾替换成零 + * + * @param n 数字 + * + * @return 中文大写数字 + */ + public static String digitUppercase (double n) { + String[] fraction = {"角", "分"}; + String[] digit = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; + String[][] unit = {{"元", "万", "亿"}, {"", "拾", "佰", "仟"}}; + + String head = n < 0 ? "负" : ""; + n = Math.abs(n); + + String s = ""; + for (int i = 0 ; i < fraction.length ; i++) { + // 优化double计算精度丢失问题 + BigDecimal nNum = new BigDecimal(n); + BigDecimal decimal = new BigDecimal(10); + BigDecimal scale = nNum.multiply(decimal).setScale(2, RoundingMode.HALF_EVEN); + double d = scale.doubleValue(); + s += (digit[(int) (Math.floor(d * Math.pow(10, i)) % 10)] + fraction[i]).replaceAll("(零.)+", ""); + } + if (s.length() < 1) { + s = "整"; + } + int integerPart = (int) Math.floor(n); + + for (int i = 0 ; i < unit[0].length && integerPart > 0 ; i++) { + String p = ""; + for (int j = 0 ; j < unit[1].length && n > 0 ; j++) { + p = digit[integerPart % 10] + unit[1][j] + p; + integerPart = integerPart / 10; + } + s = p.replaceAll("(零.)*零$", "").replaceAll("^$", "零") + unit[0][i] + s; + } + return head + s.replaceAll("(零.)*零元", "元").replaceFirst("(零.)+", "").replaceAll("(零.)+", "零").replaceAll("^整$", "零元整"); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/text/StrFormatter.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/text/StrFormatter.java new file mode 100644 index 0000000..0c07cf5 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/text/StrFormatter.java @@ -0,0 +1,77 @@ +package com.muyu.common.core.text; + +import com.muyu.common.core.utils.StringUtils; + +/** + * 字符串格式化 + * + * @author muyu + */ +public class StrFormatter { + public static final String EMPTY_JSON = "{}"; + public static final char C_BACKSLASH = '\\'; + public static final char C_DELIM_START = '{'; + public static final char C_DELIM_END = '}'; + + /** + * 格式化字符串
+ * 此方法只是简单将占位符 {} 按照顺序替换为参数
+ * 如果想输出 {} 使用 \\转义 { 即可,如果想输出 {} 之前的 \ 使用双转义符 \\\\ 即可
+ * 例:
+ * 通常使用:format("this is {} for {}", "a", "b") -> this is a for b
+ * 转义{}: format("this is \\{} for {}", "a", "b") -> this is \{} for a
+ * 转义\: format("this is \\\\{} for {}", "a", "b") -> this is \a for b
+ * + * @param strPattern 字符串模板 + * @param argArray 参数列表 + * + * @return 结果 + */ + public static String format (final String strPattern, final Object... argArray) { + if (StringUtils.isEmpty(strPattern) || StringUtils.isEmpty(argArray)) { + return strPattern; + } + final int strPatternLength = strPattern.length(); + + // 初始化定义好的长度以获得更好的性能 + StringBuilder sbuf = new StringBuilder(strPatternLength + 50); + + int handledPosition = 0; + int delimIndex;// 占位符所在位置 + for (int argIndex = 0 ; argIndex < argArray.length ; argIndex++) { + delimIndex = strPattern.indexOf(EMPTY_JSON, handledPosition); + if (delimIndex == -1) { + if (handledPosition == 0) { + return strPattern; + } else { // 字符串模板剩余部分不再包含占位符,加入剩余部分后返回结果 + sbuf.append(strPattern, handledPosition, strPatternLength); + return sbuf.toString(); + } + } else { + if (delimIndex > 0 && strPattern.charAt(delimIndex - 1) == C_BACKSLASH) { + if (delimIndex > 1 && strPattern.charAt(delimIndex - 2) == C_BACKSLASH) { + // 转义符之前还有一个转义符,占位符依旧有效 + sbuf.append(strPattern, handledPosition, delimIndex - 1); + sbuf.append(Convert.utf8Str(argArray[argIndex])); + handledPosition = delimIndex + 2; + } else { + // 占位符被转义 + argIndex--; + sbuf.append(strPattern, handledPosition, delimIndex - 1); + sbuf.append(C_DELIM_START); + handledPosition = delimIndex + 1; + } + } else { + // 正常占位符 + sbuf.append(strPattern, handledPosition, delimIndex); + sbuf.append(Convert.utf8Str(argArray[argIndex])); + handledPosition = delimIndex + 2; + } + } + } + // 加入最后一个占位符后所有的字符 + sbuf.append(strPattern, handledPosition, strPattern.length()); + + return sbuf.toString(); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/DateUtils.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/DateUtils.java new file mode 100644 index 0000000..fb15c59 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/DateUtils.java @@ -0,0 +1,158 @@ +package com.muyu.common.core.utils; + +import org.apache.commons.lang3.time.DateFormatUtils; + +import java.lang.management.ManagementFactory; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.*; +import java.util.Date; + +/** + * 时间工具类 + * + * @author muyu + */ +public class DateUtils extends org.apache.commons.lang3.time.DateUtils { + public static String YYYY = "yyyy"; + + public static String YYYY_MM = "yyyy-MM"; + + public static String YYYY_MM_DD = "yyyy-MM-dd"; + + public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss"; + + public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; + + private static String[] parsePatterns = { + "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", + "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", + "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"}; + + /** + * 获取当前Date型日期 + * + * @return Date() 当前日期 + */ + public static Date getNowDate () { + return new Date(); + } + + /** + * 获取当前日期, 默认格式为yyyy-MM-dd + * + * @return String + */ + public static String getDate () { + return dateTimeNow(YYYY_MM_DD); + } + + public static final String getTime () { + return dateTimeNow(YYYY_MM_DD_HH_MM_SS); + } + + public static final String dateTimeNow () { + return dateTimeNow(YYYYMMDDHHMMSS); + } + + public static final String dateTimeNow (final String format) { + return parseDateToStr(format, new Date()); + } + + public static final String dateTime (final Date date) { + return parseDateToStr(YYYY_MM_DD, date); + } + + public static final String parseDateToStr (final String format, final Date date) { + return new SimpleDateFormat(format).format(date); + } + + public static final Date dateTime (final String format, final String ts) { + try { + return new SimpleDateFormat(format).parse(ts); + } catch (ParseException e) { + throw new RuntimeException(e); + } + } + + /** + * 日期路径 即年/月/日 如2018/08/08 + */ + public static final String datePath () { + Date now = new Date(); + return DateFormatUtils.format(now, "yyyy/MM/dd"); + } + + /** + * 日期路径 即年/月/日 如20180808 + */ + public static final String dateTime () { + Date now = new Date(); + return DateFormatUtils.format(now, "yyyyMMdd"); + } + + /** + * 日期型字符串转化为日期 格式 + */ + public static Date parseDate (Object str) { + if (str == null) { + return null; + } + try { + return parseDate(str.toString(), parsePatterns); + } catch (ParseException e) { + return null; + } + } + + /** + * 获取服务器启动时间 + */ + public static Date getServerStartDate () { + long time = ManagementFactory.getRuntimeMXBean().getStartTime(); + return new Date(time); + } + + /** + * 计算时间差 + * + * @param endDate 最后时间 + * @param startTime 开始时间 + * + * @return 时间差(天/小时/分钟) + */ + public static String timeDistance (Date endDate, Date startTime) { + long nd = 1000 * 24 * 60 * 60; + long nh = 1000 * 60 * 60; + long nm = 1000 * 60; + // long ns = 1000; + // 获得两个时间的毫秒时间差异 + long diff = endDate.getTime() - startTime.getTime(); + // 计算差多少天 + long day = diff / nd; + // 计算差多少小时 + long hour = diff % nd / nh; + // 计算差多少分钟 + long min = diff % nd % nh / nm; + // 计算差多少秒//输出结果 + // long sec = diff % nd % nh % nm / ns; + return day + "天" + hour + "小时" + min + "分钟"; + } + + /** + * 增加 LocalDateTime ==> Date + */ + public static Date toDate (LocalDateTime temporalAccessor) { + ZonedDateTime zdt = temporalAccessor.atZone(ZoneId.systemDefault()); + return Date.from(zdt.toInstant()); + } + + /** + * 增加 LocalDate ==> Date + */ + public static Date toDate (LocalDate temporalAccessor) { + LocalDateTime localDateTime = LocalDateTime.of(temporalAccessor, LocalTime.of(0, 0, 0)); + ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault()); + return Date.from(zdt.toInstant()); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/ExceptionUtil.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/ExceptionUtil.java new file mode 100644 index 0000000..e6abdf9 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/ExceptionUtil.java @@ -0,0 +1,35 @@ +package com.muyu.common.core.utils; + +import org.apache.commons.lang3.exception.ExceptionUtils; + +import java.io.PrintWriter; +import java.io.StringWriter; + +/** + * 错误信息处理类。 + * + * @author muyu + */ +public class ExceptionUtil { + /** + * 获取exception的详细错误信息。 + */ + public static String getExceptionMessage (Throwable e) { + StringWriter sw = new StringWriter(); + e.printStackTrace(new PrintWriter(sw, true)); + return sw.toString(); + } + + public static String getRootErrorMessage (Exception e) { + Throwable root = ExceptionUtils.getRootCause(e); + root = (root == null ? e : root); + if (root == null) { + return ""; + } + String msg = root.getMessage(); + if (msg == null) { + return "null"; + } + return StringUtils.defaultString(msg); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/JwtUtils.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/JwtUtils.java new file mode 100644 index 0000000..62816cb --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/JwtUtils.java @@ -0,0 +1,165 @@ +package com.muyu.common.core.utils; + +import com.muyu.common.core.constant.SecurityConstants; +import com.muyu.common.core.constant.TokenConstants; +import com.muyu.common.core.text.Convert; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.security.Keys; +import io.jsonwebtoken.security.SecureDigestAlgorithm; + +import javax.crypto.SecretKey; +import java.util.Date; +import java.util.Map; + +/** + * Jwt工具类 + * + * @author muyu + */ +public class JwtUtils { + + /** + * 加密算法 + */ + private final static SecureDigestAlgorithm ALGORITHM = Jwts.SIG.HS256; + /** + * 私钥 / 生成签名的时候使用的秘钥secret,一般可以从本地配置文件中读取,切记这个秘钥不能外露,只在服务端使用,在任何场景都不应该流露出去。 + * 一旦客户端得知这个secret, 那就意味着客户端是可以自我签发jwt了。 + * 应该大于等于 256位(长度32及以上的字符串),并且是随机的字符串 + */ + private final static String secret = TokenConstants.SECRET; + /** + * 秘钥实例 + */ + public static final SecretKey KEY = Keys.hmacShaKeyFor(secret.getBytes()); + /** + * jwt签发者 + */ + private final static String JWT_ISS = "MUYU"; + /** + * jwt主题 + */ + private final static String SUBJECT = "Peripherals"; + + + /** + * 从数据声明生成令牌 + * + * @param claims 数据声明 + * + * @return 令牌 + */ + public static String createToken (Map claims) { + return Jwts.builder() + // 设置头部信息header + .header().add("typ", "JWT").add("alg", "HS256").and() + // 设置自定义负载信息payload + .claims(claims) + // 签发时间 + .issuedAt(new Date()) + // 主题 + .subject(SUBJECT) + // 签发者 + .issuer(JWT_ISS) + // 签名 + .signWith(KEY, ALGORITHM) + .compact(); + } + + /** + * 从令牌中获取数据声明 + * + * @param token 令牌 + * + * @return 数据声明 + */ + public static Claims parseToken (String token) { + return Jwts.parser() + .verifyWith(KEY) + .build() + .parseSignedClaims(token) + .getPayload(); + } + + /** + * 根据令牌获取用户标识 + * + * @param token 令牌 + * + * @return 用户ID + */ + public static String getUserKey (String token) { + Claims claims = parseToken(token); + return getValue(claims, SecurityConstants.USER_KEY); + } + + /** + * 根据令牌获取用户标识 + * + * @param claims 身份信息 + * + * @return 用户ID + */ + public static String getUserKey (Claims claims) { + return getValue(claims, SecurityConstants.USER_KEY); + } + + /** + * 根据令牌获取用户ID + * + * @param token 令牌 + * + * @return 用户ID + */ + public static String getUserId (String token) { + Claims claims = parseToken(token); + return getValue(claims, SecurityConstants.DETAILS_USER_ID); + } + + /** + * 根据身份信息获取用户ID + * + * @param claims 身份信息 + * + * @return 用户ID + */ + public static String getUserId (Claims claims) { + return getValue(claims, SecurityConstants.DETAILS_USER_ID); + } + + /** + * 根据令牌获取用户名 + * + * @param token 令牌 + * + * @return 用户名 + */ + public static String getUserName (String token) { + Claims claims = parseToken(token); + return getValue(claims, SecurityConstants.DETAILS_USERNAME); + } + + /** + * 根据身份信息获取用户名 + * + * @param claims 身份信息 + * + * @return 用户名 + */ + public static String getUserName (Claims claims) { + return getValue(claims, SecurityConstants.DETAILS_USERNAME); + } + + /** + * 根据身份信息获取键值 + * + * @param claims 身份信息 + * @param key 键 + * + * @return 值 + */ + public static String getValue (Claims claims, String key) { + return Convert.toStr(claims.get(key), ""); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/PageUtils.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/PageUtils.java new file mode 100644 index 0000000..d4b0554 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/PageUtils.java @@ -0,0 +1,32 @@ +package com.muyu.common.core.utils; + +import com.github.pagehelper.PageHelper; +import com.muyu.common.core.utils.sql.SqlUtil; +import com.muyu.common.core.web.page.PageDomain; +import com.muyu.common.core.web.page.TableSupport; + +/** + * 分页工具类 + * + * @author muyu + */ +public class PageUtils extends PageHelper { + /** + * 设置请求分页数据 + */ + public static void startPage () { + PageDomain pageDomain = TableSupport.buildPageRequest(); + Integer pageNum = pageDomain.getPageNum(); + Integer pageSize = pageDomain.getPageSize(); + String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy()); + Boolean reasonable = pageDomain.getReasonable(); + PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable); + } + + /** + * 清理分页的线程变量 + */ + public static void clearPage () { + PageHelper.clearPage(); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/ServletUtils.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/ServletUtils.java new file mode 100644 index 0000000..9a50531 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/ServletUtils.java @@ -0,0 +1,289 @@ +package com.muyu.common.core.utils; + +import com.alibaba.fastjson2.JSON; +import com.muyu.common.core.constant.Constants; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.text.Convert; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; +import org.springframework.core.io.buffer.DataBuffer; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.server.reactive.ServerHttpResponse; +import org.springframework.util.LinkedCaseInsensitiveMap; +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import reactor.core.publisher.Mono; + + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.*; + +/** + * 客户端工具类 + * + * @author muyu + */ +public class ServletUtils { + /** + * 获取String参数 + */ + public static String getParameter (String name) { + return getRequest().getParameter(name); + } + + /** + * 获取String参数 + */ + public static String getParameter (String name, String defaultValue) { + return Convert.toStr(getRequest().getParameter(name), defaultValue); + } + + /** + * 获取Integer参数 + */ + public static Integer getParameterToInt (String name) { + return Convert.toInt(getRequest().getParameter(name)); + } + + /** + * 获取Integer参数 + */ + public static Integer getParameterToInt (String name, Integer defaultValue) { + return Convert.toInt(getRequest().getParameter(name), defaultValue); + } + + /** + * 获取Boolean参数 + */ + public static Boolean getParameterToBool (String name) { + return Convert.toBool(getRequest().getParameter(name)); + } + + /** + * 获取Boolean参数 + */ + public static Boolean getParameterToBool (String name, Boolean defaultValue) { + return Convert.toBool(getRequest().getParameter(name), defaultValue); + } + + /** + * 获得所有请求参数 + * + * @param request 请求对象{@link ServletRequest} + * + * @return Map + */ + public static Map getParams (ServletRequest request) { + final Map map = request.getParameterMap(); + return Collections.unmodifiableMap(map); + } + + /** + * 获得所有请求参数 + * + * @param request 请求对象{@link ServletRequest} + * + * @return Map + */ + public static Map getParamMap (ServletRequest request) { + Map params = new HashMap<>(); + for (Map.Entry entry : getParams(request).entrySet()) { + params.put(entry.getKey(), StringUtils.join(entry.getValue(), ",")); + } + return params; + } + + /** + * 获取request + */ + public static HttpServletRequest getRequest () { + try { + return Objects.requireNonNull(getRequestAttributes()).getRequest(); + } catch (Exception e) { + return null; + } + } + + /** + * 获取response + */ + public static HttpServletResponse getResponse () { + try { + return Objects.requireNonNull(getRequestAttributes()).getResponse(); + } catch (Exception e) { + return null; + } + } + + /** + * 获取session + */ + public static HttpSession getSession () { + return Objects.requireNonNull(getRequest()).getSession(); + } + + public static ServletRequestAttributes getRequestAttributes () { + try { + RequestAttributes attributes = RequestContextHolder.getRequestAttributes(); + return (ServletRequestAttributes) attributes; + } catch (Exception e) { + return null; + } + } + + public static String getHeader (HttpServletRequest request, String name) { + String value = request.getHeader(name); + if (StringUtils.isEmpty(value)) { + return StringUtils.EMPTY; + } + return urlDecode(value); + } + + public static Map getHeaders (HttpServletRequest request) { + Map map = new LinkedCaseInsensitiveMap<>(); + Enumeration enumeration = request.getHeaderNames(); + if (enumeration != null) { + while (enumeration.hasMoreElements()) { + String key = enumeration.nextElement(); + String value = request.getHeader(key); + map.put(key, value); + } + } + return map; + } + + /** + * 将字符串渲染到客户端 + * + * @param response 渲染对象 + * @param string 待渲染的字符串 + */ + public static void renderString (HttpServletResponse response, String string) { + try { + response.setStatus(200); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().print(string); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 是否是Ajax异步请求 + * + * @param request + */ + public static boolean isAjaxRequest (HttpServletRequest request) { + String accept = request.getHeader("accept"); + if (accept != null && accept.contains("application/json")) { + return true; + } + + String xRequestedWith = request.getHeader("X-Requested-With"); + if (xRequestedWith != null && xRequestedWith.contains("XMLHttpRequest")) { + return true; + } + + String uri = request.getRequestURI(); + if (StringUtils.inStringIgnoreCase(uri, ".json", ".xml")) { + return true; + } + + String ajax = request.getParameter("__ajax"); + return StringUtils.inStringIgnoreCase(ajax, "json", "xml"); + } + + /** + * 内容编码 + * + * @param str 内容 + * + * @return 编码后的内容 + */ + public static String urlEncode (String str) { + try { + return URLEncoder.encode(str, Constants.UTF8); + } catch (UnsupportedEncodingException e) { + return StringUtils.EMPTY; + } + } + + /** + * 内容解码 + * + * @param str 内容 + * + * @return 解码后的内容 + */ + public static String urlDecode (String str) { + return URLDecoder.decode(str, StandardCharsets.UTF_8); + } + + /** + * 设置webflux模型响应 + * + * @param response ServerHttpResponse + * @param value 响应内容 + * + * @return Mono + */ + public static Mono webFluxResponseWriter (ServerHttpResponse response, Object value) { + return webFluxResponseWriter(response, HttpStatus.OK, value, Result.FAIL); + } + + /** + * 设置webflux模型响应 + * + * @param response ServerHttpResponse + * @param code 响应状态码 + * @param value 响应内容 + * + * @return Mono + */ + public static Mono webFluxResponseWriter (ServerHttpResponse response, Object value, int code) { + return webFluxResponseWriter(response, HttpStatus.OK, value, code); + } + + /** + * 设置webflux模型响应 + * + * @param response ServerHttpResponse + * @param status http状态码 + * @param code 响应状态码 + * @param value 响应内容 + * + * @return Mono + */ + public static Mono webFluxResponseWriter (ServerHttpResponse response, HttpStatus status, Object value, int code) { + return webFluxResponseWriter(response, MediaType.APPLICATION_JSON_VALUE, status, value, code); + } + + /** + * 设置webflux模型响应 + * + * @param response ServerHttpResponse + * @param contentType content-type + * @param status http状态码 + * @param code 响应状态码 + * @param value 响应内容 + * + * @return Mono + */ + public static Mono webFluxResponseWriter (ServerHttpResponse response, String contentType, HttpStatus status, Object value, int code) { + response.setStatusCode(status); + response.getHeaders().add(HttpHeaders.CONTENT_TYPE, contentType); + Result result = Result.error(code, value.toString()); + DataBuffer dataBuffer = response.bufferFactory().wrap(JSON.toJSONString(result).getBytes()); + return response.writeWith(Mono.just(dataBuffer)); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/SpringUtils.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/SpringUtils.java new file mode 100644 index 0000000..c37a65c --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/SpringUtils.java @@ -0,0 +1,114 @@ +package com.muyu.common.core.utils; + +import org.springframework.aop.framework.AopContext; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.NoSuchBeanDefinitionException; +import org.springframework.beans.factory.config.BeanFactoryPostProcessor; +import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; +import org.springframework.stereotype.Component; + +/** + * spring工具类 方便在非spring管理环境中获取bean + * + * @author muyu + */ +@Component +public final class SpringUtils implements BeanFactoryPostProcessor { + /** + * Spring应用上下文环境 + */ + private static ConfigurableListableBeanFactory beanFactory; + + /** + * 获取对象 + * + * @param name + * + * @return Object 一个以所给名字注册的bean的实例 + * + * @throws org.springframework.beans.BeansException + */ + @SuppressWarnings("unchecked") + public static T getBean (String name) throws BeansException { + return (T) beanFactory.getBean(name); + } + + /** + * 获取类型为requiredType的对象 + * + * @param clz + * + * @return + * + * @throws org.springframework.beans.BeansException + */ + public static T getBean (Class clz) throws BeansException { + T result = (T) beanFactory.getBean(clz); + return result; + } + + /** + * 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true + * + * @param name + * + * @return boolean + */ + public static boolean containsBean (String name) { + return beanFactory.containsBean(name); + } + + /** + * 判断以给定名字注册的bean定义是一个singleton还是一个prototype。 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException) + * + * @param name + * + * @return boolean + * + * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException + */ + public static boolean isSingleton (String name) throws NoSuchBeanDefinitionException { + return beanFactory.isSingleton(name); + } + + /** + * @param name + * + * @return Class 注册对象的类型 + * + * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException + */ + public static Class getType (String name) throws NoSuchBeanDefinitionException { + return beanFactory.getType(name); + } + + /** + * 如果给定的bean名字在bean定义中有别名,则返回这些别名 + * + * @param name + * + * @return + * + * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException + */ + public static String[] getAliases (String name) throws NoSuchBeanDefinitionException { + return beanFactory.getAliases(name); + } + + /** + * 获取aop代理对象 + * + * @param invoker + * + * @return + */ + @SuppressWarnings("unchecked") + public static T getAopProxy (T invoker) { + return (T) AopContext.currentProxy(); + } + + @Override + public void postProcessBeanFactory (ConfigurableListableBeanFactory beanFactory) throws BeansException { + SpringUtils.beanFactory = beanFactory; + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/StringUtils.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/StringUtils.java new file mode 100644 index 0000000..ec8f557 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/StringUtils.java @@ -0,0 +1,504 @@ +package com.muyu.common.core.utils; + +import com.muyu.common.core.constant.Constants; +import com.muyu.common.core.text.StrFormatter; +import org.springframework.util.AntPathMatcher; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 字符串工具类 + * + * @author muyu + */ +public class StringUtils extends org.apache.commons.lang3.StringUtils { + /** + * 空字符串 + */ + private static final String NULLSTR = ""; + + /** + * 下划线 + */ + private static final char SEPARATOR = '_'; + + /** + * 获取参数不为空值 + * + * @param value defaultValue 要判断的value + * + * @return value 返回值 + */ + public static T nvl (T value, T defaultValue) { + return value != null ? value : defaultValue; + } + + /** + * * 判断一个Collection是否为空, 包含List,Set,Queue + * + * @param coll 要判断的Collection + * + * @return true:为空 false:非空 + */ + public static boolean isEmpty (Collection coll) { + return isNull(coll) || coll.isEmpty(); + } + + /** + * * 判断一个Collection是否非空,包含List,Set,Queue + * + * @param coll 要判断的Collection + * + * @return true:非空 false:空 + */ + public static boolean isNotEmpty (Collection coll) { + return !isEmpty(coll); + } + + /** + * * 判断一个对象数组是否为空 + * + * @param objects 要判断的对象数组 + * * @return true:为空 false:非空 + */ + public static boolean isEmpty (Object[] objects) { + return isNull(objects) || (objects.length == 0); + } + + /** + * * 判断一个对象数组是否非空 + * + * @param objects 要判断的对象数组 + * + * @return true:非空 false:空 + */ + public static boolean isNotEmpty (Object[] objects) { + return !isEmpty(objects); + } + + /** + * * 判断一个Map是否为空 + * + * @param map 要判断的Map + * + * @return true:为空 false:非空 + */ + public static boolean isEmpty (Map map) { + return isNull(map) || map.isEmpty(); + } + + /** + * * 判断一个Map是否为空 + * + * @param map 要判断的Map + * + * @return true:非空 false:空 + */ + public static boolean isNotEmpty (Map map) { + return !isEmpty(map); + } + + /** + * * 判断一个字符串是否为空串 + * + * @param str String + * + * @return true:为空 false:非空 + */ + public static boolean isEmpty (String str) { + return isNull(str) || NULLSTR.equals(str.trim()); + } + + /** + * * 判断一个字符串是否为非空串 + * + * @param str String + * + * @return true:非空串 false:空串 + */ + public static boolean isNotEmpty (String str) { + return !isEmpty(str); + } + + /** + * * 判断一个对象是否为空 + * + * @param object Object + * + * @return true:为空 false:非空 + */ + public static boolean isNull (Object object) { + return object == null; + } + + /** + * * 判断一个对象是否非空 + * + * @param object Object + * + * @return true:非空 false:空 + */ + public static boolean isNotNull (Object object) { + return !isNull(object); + } + + /** + * * 判断一个对象是否是数组类型(Java基本型别的数组) + * + * @param object 对象 + * + * @return true:是数组 false:不是数组 + */ + public static boolean isArray (Object object) { + return isNotNull(object) && object.getClass().isArray(); + } + + /** + * 去空格 + */ + public static String trim (String str) { + return (str == null ? "" : str.trim()); + } + + /** + * 截取字符串 + * + * @param str 字符串 + * @param start 开始 + * + * @return 结果 + */ + public static String substring (final String str, int start) { + if (str == null) { + return NULLSTR; + } + + if (start < 0) { + start = str.length() + start; + } + + if (start < 0) { + start = 0; + } + if (start > str.length()) { + return NULLSTR; + } + + return str.substring(start); + } + + /** + * 截取字符串 + * + * @param str 字符串 + * @param start 开始 + * @param end 结束 + * + * @return 结果 + */ + public static String substring (final String str, int start, int end) { + if (str == null) { + return NULLSTR; + } + + if (end < 0) { + end = str.length() + end; + } + if (start < 0) { + start = str.length() + start; + } + + if (end > str.length()) { + end = str.length(); + } + + if (start > end) { + return NULLSTR; + } + + if (start < 0) { + start = 0; + } + if (end < 0) { + end = 0; + } + + return str.substring(start, end); + } + + /** + * 判断是否为空,并且不是空白字符 + * + * @param str 要判断的value + * + * @return 结果 + */ + public static boolean hasText (String str) { + return (str != null && !str.isEmpty() && containsText(str)); + } + + private static boolean containsText (CharSequence str) { + int strLen = str.length(); + for (int i = 0 ; i < strLen ; i++) { + if (!Character.isWhitespace(str.charAt(i))) { + return true; + } + } + return false; + } + + /** + * 格式化文本, {} 表示占位符
+ * 此方法只是简单将占位符 {} 按照顺序替换为参数
+ * 如果想输出 {} 使用 \\转义 { 即可,如果想输出 {} 之前的 \ 使用双转义符 \\\\ 即可
+ * 例:
+ * 通常使用:format("this is {} for {}", "a", "b") -> this is a for b
+ * 转义{}: format("this is \\{} for {}", "a", "b") -> this is \{} for a
+ * 转义\: format("this is \\\\{} for {}", "a", "b") -> this is \a for b
+ * + * @param template 文本模板,被替换的部分用 {} 表示 + * @param params 参数值 + * + * @return 格式化后的文本 + */ + public static String format (String template, Object... params) { + if (isEmpty(params) || isEmpty(template)) { + return template; + } + return StrFormatter.format(template, params); + } + + /** + * 是否为http(s)://开头 + * + * @param link 链接 + * + * @return 结果 + */ + public static boolean ishttp (String link) { + return StringUtils.startsWithAny(link, Constants.HTTP, Constants.HTTPS); + } + + /** + * 判断给定的collection列表中是否包含数组array 判断给定的数组array中是否包含给定的元素value + * + * @param collection 给定的集合 + * @param array 给定的数组 + * + * @return boolean 结果 + */ + public static boolean containsAny (Collection collection, String... array) { + if (isEmpty(collection) || isEmpty(array)) { + return false; + } else { + for (String str : array) { + if (collection.contains(str)) { + return true; + } + } + return false; + } + } + + /** + * 驼峰转下划线命名 + */ + public static String toUnderScoreCase (String str) { + if (str == null) { + return null; + } + StringBuilder sb = new StringBuilder(); + // 前置字符是否大写 + boolean preCharIsUpperCase = true; + // 当前字符是否大写 + boolean curreCharIsUpperCase = true; + // 下一字符是否大写 + boolean nexteCharIsUpperCase = true; + for (int i = 0 ; i < str.length() ; i++) { + char c = str.charAt(i); + if (i > 0) { + preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1)); + } else { + preCharIsUpperCase = false; + } + + curreCharIsUpperCase = Character.isUpperCase(c); + + if (i < (str.length() - 1)) { + nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1)); + } + + if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) { + sb.append(SEPARATOR); + } else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase) { + sb.append(SEPARATOR); + } + sb.append(Character.toLowerCase(c)); + } + + return sb.toString(); + } + + /** + * 是否包含字符串 + * + * @param str 验证字符串 + * @param strs 字符串组 + * + * @return 包含返回true + */ + public static boolean inStringIgnoreCase (String str, String... strs) { + if (str != null && strs != null) { + for (String s : strs) { + if (str.equalsIgnoreCase(trim(s))) { + return true; + } + } + } + return false; + } + + /** + * 将下划线大写方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。 例如:HELLO_WORLD->HelloWorld + * + * @param name 转换前的下划线大写方式命名的字符串 + * + * @return 转换后的驼峰式命名的字符串 + */ + public static String convertToCamelCase (String name) { + StringBuilder result = new StringBuilder(); + // 快速检查 + if (name == null || name.isEmpty()) { + // 没必要转换 + return ""; + } else if (!name.contains("_")) { + // 不含下划线,仅将首字母大写 + return name.substring(0, 1).toUpperCase() + name.substring(1); + } + // 用下划线将原始字符串分割 + String[] camels = name.split("_"); + for (String camel : camels) { + // 跳过原始字符串中开头、结尾的下换线或双重下划线 + if (camel.isEmpty()) { + continue; + } + // 首字母大写 + result.append(camel.substring(0, 1).toUpperCase()); + result.append(camel.substring(1).toLowerCase()); + } + return result.toString(); + } + + /** + * 驼峰式命名法 + * 例如:user_name->userName + */ + public static String toCamelCase (String s) { + if (s == null) { + return null; + } + if (s.indexOf(SEPARATOR) == -1) { + return s; + } + s = s.toLowerCase(); + StringBuilder sb = new StringBuilder(s.length()); + boolean upperCase = false; + for (int i = 0 ; i < s.length() ; i++) { + char c = s.charAt(i); + + if (c == SEPARATOR) { + upperCase = true; + } else if (upperCase) { + sb.append(Character.toUpperCase(c)); + upperCase = false; + } else { + sb.append(c); + } + } + return sb.toString(); + } + + /** + * 查找指定字符串是否匹配指定字符串列表中的任意一个字符串 + * + * @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); + } + + @SuppressWarnings("unchecked") + public static T cast (Object obj) { + return (T) obj; + } + + /** + * 数字左边补齐0,使之达到指定长度。注意,如果数字转换为字符串后,长度大于size,则只保留 最后size个字符。 + * + * @param num 数字对象 + * @param size 字符串指定长度 + * + * @return 返回数字的字符串格式,该字符串为指定长度。 + */ + public static final String padl (final Number num, final int size) { + return padl(num.toString(), size, '0'); + } + + /** + * 字符串左补齐。如果原始字符串s长度大于size,则只保留最后size个字符。 + * + * @param s 原始字符串 + * @param size 字符串指定长度 + * @param c 用于补齐的字符 + * + * @return 返回指定长度的字符串,由原字符串左补齐或截取得到。 + */ + public static final String padl (final String s, final int size, final char c) { + final StringBuilder sb = new StringBuilder(size); + if (s != null) { + final int len = s.length(); + if (s.length() <= size) { + for (int i = size - len ; i > 0 ; i--) { + sb.append(c); + } + sb.append(s); + } else { + return s.substring(len - size, len); + } + } else { + for (int i = size ; i > 0 ; i--) { + sb.append(c); + } + } + return sb.toString(); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/bean/BeanUtils.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/bean/BeanUtils.java new file mode 100644 index 0000000..d44b351 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/bean/BeanUtils.java @@ -0,0 +1,107 @@ +package com.muyu.common.core.utils.bean; + +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Bean 工具类 + * + * @author muyu + */ +public class BeanUtils extends org.springframework.beans.BeanUtils { + /** + * Bean方法名中属性名开始的下标 + */ + private static final int BEAN_METHOD_PROP_INDEX = 3; + + /** + * 匹配getter方法的正则表达式 + */ + private static final Pattern GET_PATTERN = Pattern.compile("get(\\p{javaUpperCase}\\w*)"); + + /** + * 匹配setter方法的正则表达式 + */ + private static final Pattern SET_PATTERN = Pattern.compile("set(\\p{javaUpperCase}\\w*)"); + + /** + * Bean属性复制工具方法。 + * + * @param dest 目标对象 + * @param src 源对象 + */ + public static void copyBeanProp (Object dest, Object src) { + try { + copyProperties(src, dest); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 获取对象的setter方法。 + * + * @param obj 对象 + * + * @return 对象的setter方法列表 + */ + public static List getSetterMethods (Object obj) { + // setter方法列表 + List setterMethods = new ArrayList(); + + // 获取所有方法 + Method[] methods = obj.getClass().getMethods(); + + // 查找setter方法 + + for (Method method : methods) { + Matcher m = SET_PATTERN.matcher(method.getName()); + if (m.matches() && (method.getParameterTypes().length == 1)) { + setterMethods.add(method); + } + } + // 返回setter方法列表 + return setterMethods; + } + + /** + * 获取对象的getter方法。 + * + * @param obj 对象 + * + * @return 对象的getter方法列表 + */ + + public static List getGetterMethods (Object obj) { + // getter方法列表 + List getterMethods = new ArrayList(); + // 获取所有方法 + Method[] methods = obj.getClass().getMethods(); + // 查找getter方法 + for (Method method : methods) { + Matcher m = GET_PATTERN.matcher(method.getName()); + if (m.matches() && (method.getParameterTypes().length == 0)) { + getterMethods.add(method); + } + } + // 返回getter方法列表 + return getterMethods; + } + + /** + * 检查Bean方法名中的属性名是否相等。
+ * 如getName()和setName()属性名一样,getName()和setAge()属性名不一样。 + * + * @param m1 方法名1 + * @param m2 方法名2 + * + * @return 属性名一样返回true,否则返回false + */ + + public static boolean isMethodPropEquals (String m1, String m2) { + return m1.substring(BEAN_METHOD_PROP_INDEX).equals(m2.substring(BEAN_METHOD_PROP_INDEX)); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/bean/BeanValidators.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/bean/BeanValidators.java new file mode 100644 index 0000000..b904747 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/bean/BeanValidators.java @@ -0,0 +1,22 @@ +package com.muyu.common.core.utils.bean; + +import jakarta.validation.ConstraintViolation; +import jakarta.validation.ConstraintViolationException; +import jakarta.validation.Validator; + +import java.util.Set; + +/** + * bean对象属性验证 + * + * @author muyu + */ +public class BeanValidators { + public static void validateWithException (Validator validator, Object object, Class... groups) + throws ConstraintViolationException { + Set> constraintViolations = validator.validate(object, groups); + if (!constraintViolations.isEmpty()) { + throw new ConstraintViolationException(constraintViolations); + } + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/file/FileTypeUtils.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/file/FileTypeUtils.java new file mode 100644 index 0000000..dde7e85 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/file/FileTypeUtils.java @@ -0,0 +1,85 @@ +package com.muyu.common.core.utils.file; + +import org.apache.commons.io.FilenameUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.util.Objects; + +/** + * 文件类型工具类 + * + * @author muyu + */ +public class FileTypeUtils { + /** + * 获取文件类型 + *

+ * 例如: muyu.txt, 返回: txt + * + * @param file 文件名 + * + * @return 后缀(不含".") + */ + public static String getFileType (File file) { + if (null == file) { + return StringUtils.EMPTY; + } + return getFileType(file.getName()); + } + + /** + * 获取文件类型 + *

+ * 例如: muyu.txt, 返回: txt + * + * @param fileName 文件名 + * + * @return 后缀(不含".") + */ + public static String getFileType (String fileName) { + int separatorIndex = fileName.lastIndexOf("."); + if (separatorIndex < 0) { + return ""; + } + return fileName.substring(separatorIndex + 1).toLowerCase(); + } + + /** + * 获取文件名的后缀 + * + * @param file 表单文件 + * + * @return 后缀名 + */ + public static final String getExtension (MultipartFile file) { + String extension = FilenameUtils.getExtension(file.getOriginalFilename()); + if (StringUtils.isEmpty(extension)) { + extension = MimeTypeUtils.getExtension(Objects.requireNonNull(file.getContentType())); + } + return extension; + } + + /** + * 获取文件类型 + * + * @param photoByte 文件字节码 + * + * @return 后缀(不含".") + */ + public static String getFileExtendName (byte[] photoByte) { + String strFileExtendName = "JPG"; + if ((photoByte[0] == 71) && (photoByte[1] == 73) && (photoByte[2] == 70) && (photoByte[3] == 56) + && ((photoByte[4] == 55) || (photoByte[4] == 57)) && (photoByte[5] == 97)) { + strFileExtendName = "GIF"; + } else if ((photoByte[6] == 74) && (photoByte[7] == 70) && (photoByte[8] == 73) && (photoByte[9] == 70)) { + strFileExtendName = "JPG"; + } else if ((photoByte[0] == 66) && (photoByte[1] == 77)) { + strFileExtendName = "BMP"; + } else if ((photoByte[1] == 80) && (photoByte[2] == 78) && (photoByte[3] == 71)) { + strFileExtendName = "PNG"; + } + return strFileExtendName; + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/file/FileUtils.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/file/FileUtils.java new file mode 100644 index 0000000..5766365 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/file/FileUtils.java @@ -0,0 +1,223 @@ +package com.muyu.common.core.utils.file; + +import com.muyu.common.core.utils.StringUtils; +import org.apache.commons.lang3.ArrayUtils; + +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; + +/** + * 文件处理工具类 + * + * @author muyu + */ +public class FileUtils { + /** + * 字符常量:斜杠 {@code '/'} + */ + public static final char SLASH = '/'; + + /** + * 字符常量:反斜杠 {@code '\\'} + */ + public static final char BACKSLASH = '\\'; + + public static String FILENAME_PATTERN = "[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+"; + + /** + * 输出指定文件的byte数组 + * + * @param filePath 文件路径 + * @param os 输出流 + * + * @return + */ + public static void writeBytes (String filePath, OutputStream os) throws IOException { + FileInputStream fis = null; + try { + File file = new File(filePath); + if (!file.exists()) { + throw new FileNotFoundException(filePath); + } + fis = new FileInputStream(file); + byte[] b = new byte[1024]; + int length; + while ((length = fis.read(b)) > 0) { + os.write(b, 0, length); + } + } catch (IOException e) { + throw e; + } finally { + if (os != null) { + try { + os.close(); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + if (fis != null) { + try { + fis.close(); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + } + } + + /** + * 删除文件 + * + * @param filePath 文件 + * + * @return + */ + public static boolean deleteFile (String filePath) { + boolean flag = false; + File file = new File(filePath); + // 路径为文件且不为空则进行删除 + if (file.isFile() && file.exists()) { + flag = file.delete(); + } + return flag; + } + + /** + * 文件名称验证 + * + * @param filename 文件名称 + * + * @return true 正常 false 非法 + */ + public static boolean isValidFilename (String filename) { + return filename.matches(FILENAME_PATTERN); + } + + /** + * 检查文件是否可下载 + * + * @param resource 需要下载的文件 + * + * @return true 正常 false 非法 + */ + public static boolean checkAllowDownload (String resource) { + // 禁止目录上跳级别 + if (StringUtils.contains(resource, "..")) { + return false; + } + // 判断是否在允许下载的文件规则内 + return ArrayUtils.contains(MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION, FileTypeUtils.getFileType(resource)); + } + + /** + * 下载文件名重新编码 + * + * @param request 请求对象 + * @param fileName 文件名 + * + * @return 编码后的文件名 + */ + public static String setFileDownloadHeader (HttpServletRequest request, String fileName) throws UnsupportedEncodingException { + final String agent = request.getHeader("USER-AGENT"); + String filename = fileName; + if (agent.contains("MSIE")) { + // IE浏览器 + filename = URLEncoder.encode(filename, "utf-8"); + filename = filename.replace("+", " "); + } else if (agent.contains("Firefox")) { + // 火狐浏览器 + filename = new String(fileName.getBytes(), "ISO8859-1"); + } else if (agent.contains("Chrome")) { + // google浏览器 + filename = URLEncoder.encode(filename, "utf-8"); + } else { + // 其它浏览器 + filename = URLEncoder.encode(filename, "utf-8"); + } + return filename; + } + + /** + * 返回文件名 + * + * @param filePath 文件 + * + * @return 文件名 + */ + public static String getName (String filePath) { + if (null == filePath) { + return null; + } + int len = filePath.length(); + if (0 == len) { + return filePath; + } + if (isFileSeparator(filePath.charAt(len - 1))) { + // 以分隔符结尾的去掉结尾分隔符 + len--; + } + + int begin = 0; + char c; + for (int i = len - 1 ; i > -1 ; i--) { + c = filePath.charAt(i); + if (isFileSeparator(c)) { + // 查找最后一个路径分隔符(/或者\) + begin = i + 1; + break; + } + } + + return filePath.substring(begin, len); + } + + /** + * 是否为Windows或者Linux(Unix)文件分隔符
+ * Windows平台下分隔符为\,Linux(Unix)为/ + * + * @param c 字符 + * + * @return 是否为Windows或者Linux(Unix)文件分隔符 + */ + public static boolean isFileSeparator (char c) { + return SLASH == c || BACKSLASH == c; + } + + /** + * 下载文件名重新编码 + * + * @param response 响应对象 + * @param realFileName 真实文件名 + * + * @return + */ + public static void setAttachmentResponseHeader (HttpServletResponse response, String realFileName) throws UnsupportedEncodingException { + String percentEncodedFileName = percentEncode(realFileName); + + StringBuilder contentDispositionValue = new StringBuilder(); + contentDispositionValue.append("attachment; filename=") + .append(percentEncodedFileName) + .append(";") + .append("filename*=") + .append("utf-8''") + .append(percentEncodedFileName); + + response.setHeader("Content-disposition", contentDispositionValue.toString()); + response.setHeader("download-filename", percentEncodedFileName); + } + + /** + * 百分号编码工具方法 + * + * @param s 需要百分号编码的字符串 + * + * @return 百分号编码后的字符串 + */ + public static String percentEncode (String s) throws UnsupportedEncodingException { + String encode = URLEncoder.encode(s, StandardCharsets.UTF_8.toString()); + return encode.replaceAll("\\+", "%20"); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/file/ImageUtils.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/file/ImageUtils.java new file mode 100644 index 0000000..7e23345 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/file/ImageUtils.java @@ -0,0 +1,69 @@ +package com.muyu.common.core.utils.file; + +import org.apache.poi.util.IOUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.net.URL; +import java.net.URLConnection; +import java.util.Arrays; + +/** + * 图片处理工具类 + * + * @author muyu + */ +public class ImageUtils { + private static final Logger log = LoggerFactory.getLogger(ImageUtils.class); + + public static byte[] getImage (String imagePath) { + InputStream is = getFile(imagePath); + try { + return IOUtils.toByteArray(is); + } catch (Exception e) { + log.error("图片加载异常 {}", e); + return null; + } finally { + IOUtils.closeQuietly(is); + } + } + + public static InputStream getFile (String imagePath) { + try { + byte[] result = readFile(imagePath); + result = Arrays.copyOf(result, result.length); + return new ByteArrayInputStream(result); + } catch (Exception e) { + log.error("获取图片异常 {}", e); + } + return null; + } + + /** + * 读取文件为字节数据 + * + * @param url 地址 + * + * @return 字节数据 + */ + public static byte[] readFile (String url) { + InputStream in = null; + try { + // 网络地址 + URL urlObj = new URL(url); + URLConnection urlConnection = urlObj.openConnection(); + urlConnection.setConnectTimeout(30 * 1000); + urlConnection.setReadTimeout(60 * 1000); + urlConnection.setDoInput(true); + in = urlConnection.getInputStream(); + return IOUtils.toByteArray(in); + } catch (Exception e) { + log.error("访问文件异常 {}", e); + return null; + } finally { + IOUtils.closeQuietly(in); + } + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/file/MimeTypeUtils.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/file/MimeTypeUtils.java new file mode 100644 index 0000000..9eb1d84 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/file/MimeTypeUtils.java @@ -0,0 +1,56 @@ +package com.muyu.common.core.utils.file; + +/** + * 媒体类型工具类 + * + * @author muyu + */ +public class MimeTypeUtils { + public static final String IMAGE_PNG = "image/png"; + + public static final String IMAGE_JPG = "image/jpg"; + + public static final String IMAGE_JPEG = "image/jpeg"; + + public static final String IMAGE_BMP = "image/bmp"; + + public static final String IMAGE_GIF = "image/gif"; + + public static final String[] IMAGE_EXTENSION = {"bmp", "gif", "jpg", "jpeg", "png"}; + + public static final String[] FLASH_EXTENSION = {"swf", "flv"}; + + public static final String[] MEDIA_EXTENSION = {"swf", "flv", "mp3", "wav", "wma", "wmv", "mid", "avi", "mpg", + "asf", "rm", "rmvb"}; + + public static final String[] VIDEO_EXTENSION = {"mp4", "avi", "rmvb"}; + + public static final String[] DEFAULT_ALLOWED_EXTENSION = { + // 图片 + "bmp", "gif", "jpg", "jpeg", "png", + // word excel powerpoint + "doc", "docx", "xls", "xlsx", "ppt", "pptx", "html", "htm", "txt", + // 压缩文件 + "rar", "zip", "gz", "bz2", + // 视频格式 + "mp4", "avi", "rmvb", + // pdf + "pdf"}; + + public static String getExtension (String prefix) { + switch (prefix) { + case IMAGE_PNG: + return "png"; + case IMAGE_JPG: + return "jpg"; + case IMAGE_JPEG: + return "jpeg"; + case IMAGE_BMP: + return "bmp"; + case IMAGE_GIF: + return "gif"; + default: + return ""; + } + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/html/EscapeUtil.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/html/EscapeUtil.java new file mode 100644 index 0000000..7dba9be --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/html/EscapeUtil.java @@ -0,0 +1,145 @@ +package com.muyu.common.core.utils.html; + +import com.muyu.common.core.utils.StringUtils; + +/** + * 转义和反转义工具类 + * + * @author muyu + */ +public class EscapeUtil { + public static final String RE_HTML_MARK = "(<[^<]*?>)|(<[\\s]*?/[^<]*?>)|(<[^<]*?/[\\s]*?>)"; + + private static final char[][] TEXT = new char[64][]; + + static { + for (int i = 0 ; i < 64 ; i++) { + TEXT[i] = new char[]{(char) i}; + } + + // special HTML characters + TEXT['\''] = "'".toCharArray(); // 单引号 + TEXT['"'] = """.toCharArray(); // 双引号 + TEXT['&'] = "&".toCharArray(); // &符 + TEXT['<'] = "<".toCharArray(); // 小于号 + TEXT['>'] = ">".toCharArray(); // 大于号 + } + + /** + * 转义文本中的HTML字符为安全的字符 + * + * @param text 被转义的文本 + * + * @return 转义后的文本 + */ + public static String escape (String text) { + return encode(text); + } + + /** + * 还原被转义的HTML特殊字符 + * + * @param content 包含转义符的HTML内容 + * + * @return 转换后的字符串 + */ + public static String unescape (String content) { + return decode(content); + } + + /** + * 清除所有HTML标签,但是不删除标签内的内容 + * + * @param content 文本 + * + * @return 清除标签后的文本 + */ + public static String clean (String content) { + return new HTMLFilter().filter(content); + } + + /** + * Escape编码 + * + * @param text 被编码的文本 + * + * @return 编码后的字符 + */ + private static String encode (String text) { + if (StringUtils.isEmpty(text)) { + return StringUtils.EMPTY; + } + + final StringBuilder tmp = new StringBuilder(text.length() * 6); + char c; + for (int i = 0 ; i < text.length() ; i++) { + c = text.charAt(i); + if (c < 256) { + tmp.append("%"); + if (c < 16) { + tmp.append("0"); + } + tmp.append(Integer.toString(c, 16)); + } else { + tmp.append("%u"); + if (c <= 0xfff) { + // issue#I49JU8@Gitee + tmp.append("0"); + } + tmp.append(Integer.toString(c, 16)); + } + } + return tmp.toString(); + } + + /** + * Escape解码 + * + * @param content 被转义的内容 + * + * @return 解码后的字符串 + */ + public static String decode (String content) { + if (StringUtils.isEmpty(content)) { + return content; + } + + StringBuilder tmp = new StringBuilder(content.length()); + int lastPos = 0, pos = 0; + char ch; + while (lastPos < content.length()) { + pos = content.indexOf("%", lastPos); + if (pos == lastPos) { + if (content.charAt(pos + 1) == 'u') { + ch = (char) Integer.parseInt(content.substring(pos + 2, pos + 6), 16); + tmp.append(ch); + lastPos = pos + 6; + } else { + ch = (char) Integer.parseInt(content.substring(pos + 1, pos + 3), 16); + tmp.append(ch); + lastPos = pos + 3; + } + } else { + if (pos == -1) { + tmp.append(content.substring(lastPos)); + lastPos = content.length(); + } else { + tmp.append(content.substring(lastPos, pos)); + lastPos = pos; + } + } + } + return tmp.toString(); + } + + public static void main (String[] args) { + String html = ""; + String escape = EscapeUtil.escape(html); + // String html = "ipt>alert(\"XSS\")ipt>"; + // String html = "<123"; + // String html = "123>"; + System.out.println("clean: " + EscapeUtil.clean(html)); + System.out.println("escape: " + escape); + System.out.println("unescape: " + EscapeUtil.unescape(escape)); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/html/HTMLFilter.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/html/HTMLFilter.java new file mode 100644 index 0000000..68221f3 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/html/HTMLFilter.java @@ -0,0 +1,498 @@ +package com.muyu.common.core.utils.html; + +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * HTML过滤器,用于去除XSS漏洞隐患。 + * + * @author muyu + */ +public final class HTMLFilter { + /** + * regex flag union representing /si modifiers in php + **/ + private static final int REGEX_FLAGS_SI = Pattern.CASE_INSENSITIVE | Pattern.DOTALL; + private static final Pattern P_COMMENTS = Pattern.compile("", Pattern.DOTALL); + private static final Pattern P_COMMENT = Pattern.compile("^!--(.*)--$", REGEX_FLAGS_SI); + private static final Pattern P_TAGS = Pattern.compile("<(.*?)>", Pattern.DOTALL); + private static final Pattern P_END_TAG = Pattern.compile("^/([a-z0-9]+)", REGEX_FLAGS_SI); + private static final Pattern P_START_TAG = Pattern.compile("^([a-z0-9]+)(.*?)(/?)$", REGEX_FLAGS_SI); + private static final Pattern P_QUOTED_ATTRIBUTES = Pattern.compile("([a-z0-9]+)=([\"'])(.*?)\\2", REGEX_FLAGS_SI); + private static final Pattern P_UNQUOTED_ATTRIBUTES = Pattern.compile("([a-z0-9]+)(=)([^\"\\s']+)", REGEX_FLAGS_SI); + private static final Pattern P_PROTOCOL = Pattern.compile("^([^:]+):", REGEX_FLAGS_SI); + private static final Pattern P_ENTITY = Pattern.compile("&#(\\d+);?"); + private static final Pattern P_ENTITY_UNICODE = Pattern.compile("&#x([0-9a-f]+);?"); + private static final Pattern P_ENCODE = Pattern.compile("%([0-9a-f]{2});?"); + private static final Pattern P_VALID_ENTITIES = Pattern.compile("&([^&;]*)(?=(;|&|$))"); + private static final Pattern P_VALID_QUOTES = Pattern.compile("(>|^)([^<]+?)(<|$)", Pattern.DOTALL); + private static final Pattern P_END_ARROW = Pattern.compile("^>"); + private static final Pattern P_BODY_TO_END = Pattern.compile("<([^>]*?)(?=<|$)"); + private static final Pattern P_XML_CONTENT = Pattern.compile("(^|>)([^<]*?)(?=>)"); + private static final Pattern P_STRAY_LEFT_ARROW = Pattern.compile("<([^>]*?)(?=<|$)"); + private static final Pattern P_STRAY_RIGHT_ARROW = Pattern.compile("(^|>)([^<]*?)(?=>)"); + private static final Pattern P_AMP = Pattern.compile("&"); + private static final Pattern P_QUOTE = Pattern.compile("\""); + private static final Pattern P_LEFT_ARROW = Pattern.compile("<"); + private static final Pattern P_RIGHT_ARROW = Pattern.compile(">"); + private static final Pattern P_BOTH_ARROWS = Pattern.compile("<>"); + + // @xxx could grow large... maybe use sesat's ReferenceMap + private static final ConcurrentMap P_REMOVE_PAIR_BLANKS = new ConcurrentHashMap<>(); + private static final ConcurrentMap P_REMOVE_SELF_BLANKS = new ConcurrentHashMap<>(); + + /** + * set of allowed html elements, along with allowed attributes for each element + **/ + private final Map> vAllowed; + /** + * counts of open tags for each (allowable) html element + **/ + private final Map vTagCounts = new HashMap<>(); + + /** + * html elements which must always be self-closing (e.g. "") + **/ + private final String[] vSelfClosingTags; + /** + * html elements which must always have separate opening and closing tags (e.g. "") + **/ + private final String[] vNeedClosingTags; + /** + * set of disallowed html elements + **/ + private final String[] vDisallowed; + /** + * attributes which should be checked for valid protocols + **/ + private final String[] vProtocolAtts; + /** + * allowed protocols + **/ + private final String[] vAllowedProtocols; + /** + * tags which should be removed if they contain no content (e.g. "" or "") + **/ + private final String[] vRemoveBlanks; + /** + * entities allowed within html markup + **/ + private final String[] vAllowedEntities; + /** + * flag determining whether comments are allowed in input String. + */ + private final boolean stripComment; + private final boolean encodeQuotes; + /** + * flag determining whether to try to make tags when presented with "unbalanced" angle brackets (e.g. "" + * becomes " text "). If set to false, unbalanced angle brackets will be html escaped. + */ + private final boolean alwaysMakeTags; + + /** + * Default constructor. + */ + public HTMLFilter () { + vAllowed = new HashMap<>(); + + final ArrayList a_atts = new ArrayList<>(); + a_atts.add("href"); + a_atts.add("target"); + vAllowed.put("a", a_atts); + + final ArrayList img_atts = new ArrayList<>(); + img_atts.add("src"); + img_atts.add("width"); + img_atts.add("height"); + img_atts.add("alt"); + vAllowed.put("img", img_atts); + + final ArrayList no_atts = new ArrayList<>(); + vAllowed.put("b", no_atts); + vAllowed.put("strong", no_atts); + vAllowed.put("i", no_atts); + vAllowed.put("em", no_atts); + + vSelfClosingTags = new String[]{"img"}; + vNeedClosingTags = new String[]{"a", "b", "strong", "i", "em"}; + vDisallowed = new String[]{}; + vAllowedProtocols = new String[]{"http", "mailto", "https"}; // no ftp. + vProtocolAtts = new String[]{"src", "href"}; + vRemoveBlanks = new String[]{"a", "b", "strong", "i", "em"}; + vAllowedEntities = new String[]{"amp", "gt", "lt", "quot"}; + stripComment = true; + encodeQuotes = true; + alwaysMakeTags = false; + } + + /** + * Map-parameter configurable constructor. + * + * @param conf map containing configuration. keys match field names. + */ + @SuppressWarnings("unchecked") + public HTMLFilter (final Map conf) { + + assert conf.containsKey("vAllowed") : "configuration requires vAllowed"; + assert conf.containsKey("vSelfClosingTags") : "configuration requires vSelfClosingTags"; + assert conf.containsKey("vNeedClosingTags") : "configuration requires vNeedClosingTags"; + assert conf.containsKey("vDisallowed") : "configuration requires vDisallowed"; + assert conf.containsKey("vAllowedProtocols") : "configuration requires vAllowedProtocols"; + assert conf.containsKey("vProtocolAtts") : "configuration requires vProtocolAtts"; + assert conf.containsKey("vRemoveBlanks") : "configuration requires vRemoveBlanks"; + assert conf.containsKey("vAllowedEntities") : "configuration requires vAllowedEntities"; + + vAllowed = Collections.unmodifiableMap((HashMap>) conf.get("vAllowed")); + vSelfClosingTags = (String[]) conf.get("vSelfClosingTags"); + vNeedClosingTags = (String[]) conf.get("vNeedClosingTags"); + vDisallowed = (String[]) conf.get("vDisallowed"); + vAllowedProtocols = (String[]) conf.get("vAllowedProtocols"); + vProtocolAtts = (String[]) conf.get("vProtocolAtts"); + vRemoveBlanks = (String[]) conf.get("vRemoveBlanks"); + vAllowedEntities = (String[]) conf.get("vAllowedEntities"); + stripComment = conf.containsKey("stripComment") ? (Boolean) conf.get("stripComment") : true; + encodeQuotes = conf.containsKey("encodeQuotes") ? (Boolean) conf.get("encodeQuotes") : true; + alwaysMakeTags = conf.containsKey("alwaysMakeTags") ? (Boolean) conf.get("alwaysMakeTags") : true; + } + + // --------------------------------------------------------------- + // my versions of some PHP library functions + public static String chr (final int decimal) { + return String.valueOf((char) decimal); + } + + public static String htmlSpecialChars (final String s) { + String result = s; + result = regexReplace(P_AMP, "&", result); + result = regexReplace(P_QUOTE, """, result); + result = regexReplace(P_LEFT_ARROW, "<", result); + result = regexReplace(P_RIGHT_ARROW, ">", result); + return result; + } + + private static String regexReplace (final Pattern regex_pattern, final String replacement, final String s) { + Matcher m = regex_pattern.matcher(s); + return m.replaceAll(replacement); + } + + // --------------------------------------------------------------- + + private static boolean inArray (final String s, final String[] array) { + for (String item : array) { + if (item != null && item.equals(s)) { + return true; + } + } + return false; + } + + private void reset () { + vTagCounts.clear(); + } + + /** + * given a user submitted input String, filter out any invalid or restricted html. + * + * @param input text (i.e. submitted by a user) than may contain html + * + * @return "clean" version of input, with only valid, whitelisted html elements allowed + */ + public String filter (final String input) { + reset(); + String s = input; + + s = escapeComments(s); + + s = balanceHTML(s); + + s = checkTags(s); + + s = processRemoveBlanks(s); + + // s = validateEntities(s); + + return s; + } + + public boolean isAlwaysMakeTags () { + return alwaysMakeTags; + } + + public boolean isStripComments () { + return stripComment; + } + + private String escapeComments (final String s) { + final Matcher m = P_COMMENTS.matcher(s); + final StringBuffer buf = new StringBuffer(); + if (m.find()) { + final String match = m.group(1); // (.*?) + m.appendReplacement(buf, Matcher.quoteReplacement("")); + } + m.appendTail(buf); + + return buf.toString(); + } + + private String balanceHTML (String s) { + if (alwaysMakeTags) { + // + // try and form html + // + s = regexReplace(P_END_ARROW, "", s); + // 不追加结束标签 + s = regexReplace(P_BODY_TO_END, "<$1>", s); + s = regexReplace(P_XML_CONTENT, "$1<$2", s); + + } else { + // + // escape stray brackets + // + s = regexReplace(P_STRAY_LEFT_ARROW, "<$1", s); + s = regexReplace(P_STRAY_RIGHT_ARROW, "$1$2><", s); + + // + // the last regexp causes '<>' entities to appear + // (we need to do a lookahead assertion so that the last bracket can + // be used in the next pass of the regexp) + // + s = regexReplace(P_BOTH_ARROWS, "", s); + } + + return s; + } + + private String checkTags (String s) { + Matcher m = P_TAGS.matcher(s); + + final StringBuffer buf = new StringBuffer(); + while (m.find()) { + String replaceStr = m.group(1); + replaceStr = processTag(replaceStr); + m.appendReplacement(buf, Matcher.quoteReplacement(replaceStr)); + } + m.appendTail(buf); + + // these get tallied in processTag + // (remember to reset before subsequent calls to filter method) + final StringBuilder sBuilder = new StringBuilder(buf.toString()); + for (String key : vTagCounts.keySet()) { + for (int ii = 0 ; ii < vTagCounts.get(key) ; ii++) { + sBuilder.append(""); + } + } + s = sBuilder.toString(); + + return s; + } + + private String processRemoveBlanks (final String s) { + String result = s; + for (String tag : vRemoveBlanks) { + if (!P_REMOVE_PAIR_BLANKS.containsKey(tag)) { + P_REMOVE_PAIR_BLANKS.putIfAbsent(tag, Pattern.compile("<" + tag + "(\\s[^>]*)?>")); + } + result = regexReplace(P_REMOVE_PAIR_BLANKS.get(tag), "", result); + if (!P_REMOVE_SELF_BLANKS.containsKey(tag)) { + P_REMOVE_SELF_BLANKS.putIfAbsent(tag, Pattern.compile("<" + tag + "(\\s[^>]*)?/>")); + } + result = regexReplace(P_REMOVE_SELF_BLANKS.get(tag), "", result); + } + + return result; + } + + private String processTag (final String s) { + // ending tags + Matcher m = P_END_TAG.matcher(s); + if (m.find()) { + final String name = m.group(1).toLowerCase(); + if (allowed(name)) { + if (!inArray(name, vSelfClosingTags)) { + if (vTagCounts.containsKey(name)) { + vTagCounts.put(name, vTagCounts.get(name) - 1); + return ""; + } + } + } + } + + // starting tags + m = P_START_TAG.matcher(s); + if (m.find()) { + final String name = m.group(1).toLowerCase(); + final String body = m.group(2); + String ending = m.group(3); + + // debug( "in a starting tag, name='" + name + "'; body='" + body + "'; ending='" + ending + "'" ); + if (allowed(name)) { + final StringBuilder params = new StringBuilder(); + + final Matcher m2 = P_QUOTED_ATTRIBUTES.matcher(body); + final Matcher m3 = P_UNQUOTED_ATTRIBUTES.matcher(body); + final List paramNames = new ArrayList<>(); + final List paramValues = new ArrayList<>(); + while (m2.find()) { + paramNames.add(m2.group(1)); // ([a-z0-9]+) + paramValues.add(m2.group(3)); // (.*?) + } + while (m3.find()) { + paramNames.add(m3.group(1)); // ([a-z0-9]+) + paramValues.add(m3.group(3)); // ([^\"\\s']+) + } + + String paramName, paramValue; + for (int ii = 0 ; ii < paramNames.size() ; ii++) { + paramName = paramNames.get(ii).toLowerCase(); + paramValue = paramValues.get(ii); + + // debug( "paramName='" + paramName + "'" ); + // debug( "paramValue='" + paramValue + "'" ); + // debug( "allowed? " + vAllowed.get( name ).contains( paramName ) ); + + if (allowedAttribute(name, paramName)) { + if (inArray(paramName, vProtocolAtts)) { + paramValue = processParamProtocol(paramValue); + } + params.append(' ').append(paramName).append("=\\\"").append(paramValue).append("\\\""); + } + } + + if (inArray(name, vSelfClosingTags)) { + ending = " /"; + } + + if (inArray(name, vNeedClosingTags)) { + ending = ""; + } + + if (ending == null || ending.length() < 1) { + if (vTagCounts.containsKey(name)) { + vTagCounts.put(name, vTagCounts.get(name) + 1); + } else { + vTagCounts.put(name, 1); + } + } else { + ending = " /"; + } + return "<" + name + params + ending + ">"; + } else { + return ""; + } + } + + // comments + m = P_COMMENT.matcher(s); + if (!stripComment && m.find()) { + return "<" + m.group() + ">"; + } + + return ""; + } + + private String processParamProtocol (String s) { + s = decodeEntities(s); + final Matcher m = P_PROTOCOL.matcher(s); + if (m.find()) { + final String protocol = m.group(1); + if (!inArray(protocol, vAllowedProtocols)) { + // bad protocol, turn into local anchor link instead + s = "#" + s.substring(protocol.length() + 1); + if (s.startsWith("#//")) { + s = "#" + s.substring(3); + } + } + } + + return s; + } + + private String decodeEntities (String s) { + StringBuffer buf = new StringBuffer(); + + Matcher m = P_ENTITY.matcher(s); + while (m.find()) { + final String match = m.group(1); + final int decimal = Integer.decode(match).intValue(); + m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal))); + } + m.appendTail(buf); + s = buf.toString(); + + buf = new StringBuffer(); + m = P_ENTITY_UNICODE.matcher(s); + while (m.find()) { + final String match = m.group(1); + final int decimal = Integer.valueOf(match, 16).intValue(); + m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal))); + } + m.appendTail(buf); + s = buf.toString(); + + buf = new StringBuffer(); + m = P_ENCODE.matcher(s); + while (m.find()) { + final String match = m.group(1); + final int decimal = Integer.valueOf(match, 16).intValue(); + m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal))); + } + m.appendTail(buf); + s = buf.toString(); + + s = validateEntities(s); + return s; + } + + private String validateEntities (final String s) { + StringBuffer buf = new StringBuffer(); + + // validate entities throughout the string + Matcher m = P_VALID_ENTITIES.matcher(s); + while (m.find()) { + final String one = m.group(1); // ([^&;]*) + final String two = m.group(2); // (?=(;|&|$)) + m.appendReplacement(buf, Matcher.quoteReplacement(checkEntity(one, two))); + } + m.appendTail(buf); + + return encodeQuotes(buf.toString()); + } + + private String encodeQuotes (final String s) { + if (encodeQuotes) { + StringBuffer buf = new StringBuffer(); + Matcher m = P_VALID_QUOTES.matcher(s); + while (m.find()) { + final String one = m.group(1); // (>|^) + final String two = m.group(2); // ([^<]+?) + final String three = m.group(3); // (<|$) + // 不替换双引号为",防止json格式无效 regexReplace(P_QUOTE, """, two) + m.appendReplacement(buf, Matcher.quoteReplacement(one + two + three)); + } + m.appendTail(buf); + return buf.toString(); + } else { + return s; + } + } + + private String checkEntity (final String preamble, final String term) { + + return ";".equals(term) && isValidEntity(preamble) ? '&' + preamble : "&" + preamble; + } + + private boolean isValidEntity (final String entity) { + return inArray(entity, vAllowedEntities); + } + + private boolean allowed (final String name) { + return (vAllowed.isEmpty() || vAllowed.containsKey(name)) && !inArray(name, vDisallowed); + } + + private boolean allowedAttribute (final String name, final String paramName) { + return allowed(name) && (vAllowed.isEmpty() || vAllowed.get(name).contains(paramName)); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/ip/IpUtils.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/ip/IpUtils.java new file mode 100644 index 0000000..e750583 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/ip/IpUtils.java @@ -0,0 +1,331 @@ +package com.muyu.common.core.utils.ip; + +import com.muyu.common.core.utils.ServletUtils; +import com.muyu.common.core.utils.StringUtils; + +import jakarta.servlet.http.HttpServletRequest; +import java.net.InetAddress; +import java.net.UnknownHostException; + +/** + * 获取IP方法 + * + * @author muyu + */ +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_SEG = "(" + REGX_IP + "\\-" + REGX_IP + ")"; + public final static String REGX_IP_WILDCARD = "(((\\*\\.){3}\\*)|(" + REGX_0_255 + "(\\.\\*){3})|(" + REGX_0_255 + "\\." + REGX_0_255 + ")(\\.\\*){2}" + "|((" + REGX_0_255 + "\\.){3}\\*))"; + + /** + * 获取客户端IP + * + * @return IP地址 + */ + public static String getIpAddr () { + return getIpAddr(ServletUtils.getRequest()); + } + + /** + * 获取客户端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/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/poi/ExcelHandlerAdapter.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/poi/ExcelHandlerAdapter.java new file mode 100644 index 0000000..e2041fc --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/poi/ExcelHandlerAdapter.java @@ -0,0 +1,23 @@ +package com.muyu.common.core.utils.poi; + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Workbook; + +/** + * Excel数据格式处理适配器 + * + * @author muyu + */ +public interface ExcelHandlerAdapter { + /** + * 格式化 + * + * @param value 单元格数据值 + * @param args excel注解args参数组 + * @param cell 单元格对象 + * @param wb 工作簿对象 + * + * @return 处理后的值 + */ + Object format (Object value, String[] args, Cell cell, Workbook wb); +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/poi/ExcelUtil.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/poi/ExcelUtil.java new file mode 100644 index 0000000..16f2c39 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/poi/ExcelUtil.java @@ -0,0 +1,1230 @@ +package com.muyu.common.core.utils.poi; + +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.annotation.Excel.ColumnType; +import com.muyu.common.core.annotation.Excel.Type; +import com.muyu.common.core.annotation.Excels; +import com.muyu.common.core.exception.UtilException; +import com.muyu.common.core.text.Convert; +import com.muyu.common.core.utils.DateUtils; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.utils.file.FileTypeUtils; +import com.muyu.common.core.utils.file.ImageUtils; +import com.muyu.common.core.utils.reflect.ReflectUtils; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.RegExUtils; +import org.apache.commons.lang3.reflect.FieldUtils; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.ss.util.CellRangeAddressList; +import org.apache.poi.util.IOUtils; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.apache.poi.xssf.usermodel.XSSFClientAnchor; +import org.apache.poi.xssf.usermodel.XSSFDataValidation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import jakarta.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.ParameterizedType; +import java.math.BigDecimal; +import java.text.DecimalFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; + +/** + * Excel相关处理 + * + * @author muyu + */ +public class ExcelUtil { + public static final String FORMULA_REGEX_STR = "=|-|\\+|@"; + public static final String[] FORMULA_STR = {"=", "-", "+", "@"}; + /** + * Excel sheet最大行数,默认65536 + */ + public static final int sheetSize = 65536; + private static final Logger log = LoggerFactory.getLogger(ExcelUtil.class); + /** + * 数字格式 + */ + private static final DecimalFormat DOUBLE_FORMAT = new DecimalFormat("######0.00"); + /** + * 实体对象 + */ + public Class clazz; + /** + * 需要排除列属性 + */ + public String[] excludeFields; + /** + * 工作表名称 + */ + private String sheetName; + /** + * 导出类型(EXPORT:导出数据;IMPORT:导入模板) + */ + private Type type; + /** + * 工作薄对象 + */ + private Workbook wb; + /** + * 工作表对象 + */ + private Sheet sheet; + /** + * 样式列表 + */ + private Map styles; + /** + * 导入导出数据列表 + */ + private List list; + /** + * 注解列表 + */ + private List fields; + /** + * 当前行号 + */ + private int rownum; + /** + * 标题 + */ + private String title; + /** + * 最大高度 + */ + private short maxHeight; + /** + * 合并后最后行数 + */ + private int subMergedLastRowNum = 0; + /** + * 合并后开始行数 + */ + private int subMergedFirstRowNum = 1; + /** + * 对象的子列表方法 + */ + private Method subMethod; + /** + * 对象的子列表属性 + */ + private List subFields; + /** + * 统计列表 + */ + private Map statistics = new HashMap(); + + public ExcelUtil (Class clazz) { + this.clazz = clazz; + } + + /** + * 获取画布 + */ + public static Drawing getDrawingPatriarch (Sheet sheet) { + if (sheet.getDrawingPatriarch() == null) { + sheet.createDrawingPatriarch(); + } + return sheet.getDrawingPatriarch(); + } + + /** + * 解析导出值 0=男,1=女,2=未知 + * + * @param propertyValue 参数值 + * @param converterExp 翻译注解 + * @param separator 分隔符 + * + * @return 解析后值 + */ + public static String convertByExp (String propertyValue, String converterExp, String separator) { + StringBuilder propertyString = new StringBuilder(); + String[] convertSource = converterExp.split(","); + for (String item : convertSource) { + String[] itemArray = item.split("="); + if (StringUtils.containsAny(propertyValue, separator)) { + for (String value : propertyValue.split(separator)) { + if (itemArray[0].equals(value)) { + propertyString.append(itemArray[1] + separator); + break; + } + } + } else { + if (itemArray[0].equals(propertyValue)) { + return itemArray[1]; + } + } + } + return StringUtils.stripEnd(propertyString.toString(), separator); + } + + /** + * 反向解析值 男=0,女=1,未知=2 + * + * @param propertyValue 参数值 + * @param converterExp 翻译注解 + * @param separator 分隔符 + * + * @return 解析后值 + */ + public static String reverseByExp (String propertyValue, String converterExp, String separator) { + StringBuilder propertyString = new StringBuilder(); + String[] convertSource = converterExp.split(","); + for (String item : convertSource) { + String[] itemArray = item.split("="); + if (StringUtils.containsAny(propertyValue, separator)) { + for (String value : propertyValue.split(separator)) { + if (itemArray[1].equals(value)) { + propertyString.append(itemArray[0] + separator); + break; + } + } + } else { + if (itemArray[1].equals(propertyValue)) { + return itemArray[0]; + } + } + } + return StringUtils.stripEnd(propertyString.toString(), separator); + } + + /** + * 隐藏Excel中列属性 + * + * @param fields 列属性名 示例[单个"name"/多个"id","name"] + * + * @throws Exception + */ + public void hideColumn (String... fields) { + this.excludeFields = fields; + } + + public void init (List list, String sheetName, String title, Type type) { + if (list == null) { + list = new ArrayList(); + } + this.list = list; + this.sheetName = sheetName; + this.type = type; + this.title = title; + createExcelField(); + createWorkbook(); + createTitle(); + createSubHead(); + } + + /** + * 创建excel第一行标题 + */ + public void createTitle () { + if (StringUtils.isNotEmpty(title)) { + subMergedFirstRowNum++; + subMergedLastRowNum++; + int titleLastCol = this.fields.size() - 1; + if (isSubList()) { + titleLastCol = titleLastCol + subFields.size() - 1; + } + Row titleRow = sheet.createRow(rownum == 0 ? rownum++ : 0); + titleRow.setHeightInPoints(30); + Cell titleCell = titleRow.createCell(0); + titleCell.setCellStyle(styles.get("title")); + titleCell.setCellValue(title); + sheet.addMergedRegion(new CellRangeAddress(titleRow.getRowNum(), titleRow.getRowNum(), titleRow.getRowNum(), titleLastCol)); + } + } + + /** + * 创建对象的子列表名称 + */ + public void createSubHead () { + if (isSubList()) { + subMergedFirstRowNum++; + subMergedLastRowNum++; + Row subRow = sheet.createRow(rownum); + int excelNum = 0; + for (Object[] objects : fields) { + Excel attr = (Excel) objects[1]; + Cell headCell1 = subRow.createCell(excelNum); + headCell1.setCellValue(attr.name()); + headCell1.setCellStyle(styles.get(StringUtils.format("header_{}_{}", attr.headerColor(), attr.headerBackgroundColor()))); + excelNum++; + } + int headFirstRow = excelNum - 1; + int headLastRow = headFirstRow + subFields.size() - 1; + if (headLastRow > headFirstRow) { + sheet.addMergedRegion(new CellRangeAddress(rownum, rownum, headFirstRow, headLastRow)); + } + rownum++; + } + } + + /** + * 对excel表单默认第一个索引名转换成list + * + * @param is 输入流 + * + * @return 转换后集合 + */ + public List importExcel (InputStream is) { + List list = null; + try { + list = importExcel(is, 0); + } catch (Exception e) { + log.error("导入Excel异常{}", e.getMessage()); + throw new UtilException(e.getMessage()); + } finally { + IOUtils.closeQuietly(is); + } + return list; + } + + /** + * 对excel表单默认第一个索引名转换成list + * + * @param is 输入流 + * @param titleNum 标题占用行数 + * + * @return 转换后集合 + */ + public List importExcel (InputStream is, int titleNum) throws Exception { + return importExcel(StringUtils.EMPTY, is, titleNum); + } + + /** + * 对excel表单指定表格索引名转换成list + * + * @param sheetName 表格索引名 + * @param titleNum 标题占用行数 + * @param is 输入流 + * + * @return 转换后集合 + */ + public List importExcel (String sheetName, InputStream is, int titleNum) throws Exception { + this.type = Type.IMPORT; + this.wb = WorkbookFactory.create(is); + List list = new ArrayList(); + // 如果指定sheet名,则取指定sheet中的内容 否则默认指向第1个sheet + Sheet sheet = StringUtils.isNotEmpty(sheetName) ? wb.getSheet(sheetName) : wb.getSheetAt(0); + if (sheet == null) { + throw new IOException("文件sheet不存在"); + } + + // 获取最后一个非空行的行下标,比如总行数为n,则返回的为n-1 + int rows = sheet.getLastRowNum(); + if (rows > 0) { + // 定义一个map用于存放excel列的序号和field. + Map cellMap = new HashMap(); + // 获取表头 + Row heard = sheet.getRow(titleNum); + for (int i = 0 ; i < heard.getPhysicalNumberOfCells() ; i++) { + Cell cell = heard.getCell(i); + if (StringUtils.isNotNull(cell)) { + String value = this.getCellValue(heard, i).toString(); + cellMap.put(value, i); + } else { + cellMap.put(null, i); + } + } + // 有数据时才处理 得到类的所有field. + List fields = this.getFields(); + Map fieldsMap = new HashMap(); + for (Object[] objects : fields) { + Excel attr = (Excel) objects[1]; + Integer column = cellMap.get(attr.name()); + if (column != null) { + fieldsMap.put(column, objects); + } + } + for (int i = titleNum + 1 ; i <= rows ; i++) { + // 从第2行开始取数据,默认第一行是表头. + Row row = sheet.getRow(i); + // 判断当前行是否是空行 + if (isRowEmpty(row)) { + continue; + } + T entity = null; + for (Map.Entry entry : fieldsMap.entrySet()) { + Object val = this.getCellValue(row, entry.getKey()); + + // 如果不存在实例则新建. + entity = (entity == null ? clazz.newInstance() : entity); + // 从map中得到对应列的field. + Field field = (Field) entry.getValue()[0]; + Excel attr = (Excel) entry.getValue()[1]; + // 取得类型,并根据对象类型设置值. + Class fieldType = field.getType(); + if (String.class == fieldType) { + String s = Convert.toStr(val); + if (StringUtils.endsWith(s, ".0")) { + val = StringUtils.substringBefore(s, ".0"); + } else { + String dateFormat = field.getAnnotation(Excel.class).dateFormat(); + if (StringUtils.isNotEmpty(dateFormat)) { + val = parseDateToStr(dateFormat, val); + } else { + val = Convert.toStr(val); + } + } + } else if ((Integer.TYPE == fieldType || Integer.class == fieldType) && StringUtils.isNumeric(Convert.toStr(val))) { + val = Convert.toInt(val); + } else if ((Long.TYPE == fieldType || Long.class == fieldType) && StringUtils.isNumeric(Convert.toStr(val))) { + val = Convert.toLong(val); + } else if (Double.TYPE == fieldType || Double.class == fieldType) { + val = Convert.toDouble(val); + } else if (Float.TYPE == fieldType || Float.class == fieldType) { + val = Convert.toFloat(val); + } else if (BigDecimal.class == fieldType) { + val = Convert.toBigDecimal(val); + } else if (Date.class == fieldType) { + if (val instanceof String) { + val = DateUtils.parseDate(val); + } else if (val instanceof Double) { + val = DateUtil.getJavaDate((Double) val); + } + } else if (Boolean.TYPE == fieldType || Boolean.class == fieldType) { + val = Convert.toBool(val, false); + } + if (StringUtils.isNotNull(fieldType)) { + String propertyName = field.getName(); + if (StringUtils.isNotEmpty(attr.targetAttr())) { + propertyName = field.getName() + "." + attr.targetAttr(); + } + if (StringUtils.isNotEmpty(attr.readConverterExp())) { + val = reverseByExp(Convert.toStr(val), attr.readConverterExp(), attr.separator()); + } else if (!attr.handler().equals(ExcelHandlerAdapter.class)) { + val = dataFormatHandlerAdapter(val, attr, null); + } + ReflectUtils.invokeSetter(entity, propertyName, val); + } + } + list.add(entity); + } + } + return list; + } + + /** + * 对list数据源将其里面的数据导入到excel表单 + * + * @param response 返回数据 + * @param list 导出数据集合 + * @param sheetName 工作表的名称 + * + * @return 结果 + */ + public void exportExcel (HttpServletResponse response, List list, String sheetName) { + exportExcel(response, list, sheetName, StringUtils.EMPTY); + } + + /** + * 对list数据源将其里面的数据导入到excel表单 + * + * @param response 返回数据 + * @param list 导出数据集合 + * @param sheetName 工作表的名称 + * @param title 标题 + * + * @return 结果 + */ + public void exportExcel (HttpServletResponse response, List list, String sheetName, String title) { + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + this.init(list, sheetName, title, Type.EXPORT); + exportExcel(response); + } + + /** + * 对list数据源将其里面的数据导入到excel表单 + * + * @param sheetName 工作表的名称 + * + * @return 结果 + */ + public void importTemplateExcel (HttpServletResponse response, String sheetName) { + importTemplateExcel(response, sheetName, StringUtils.EMPTY); + } + + /** + * 对list数据源将其里面的数据导入到excel表单 + * + * @param sheetName 工作表的名称 + * @param title 标题 + * + * @return 结果 + */ + public void importTemplateExcel (HttpServletResponse response, String sheetName, String title) { + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + this.init(null, sheetName, title, Type.IMPORT); + exportExcel(response); + } + + /** + * 对list数据源将其里面的数据导入到excel表单 + * + * @return 结果 + */ + public void exportExcel (HttpServletResponse response) { + try { + writeSheet(); + wb.write(response.getOutputStream()); + } catch (Exception e) { + log.error("导出Excel异常{}", e.getMessage()); + } finally { + IOUtils.closeQuietly(wb); + } + } + + /** + * 创建写入数据到Sheet + */ + public void writeSheet () { + // 取出一共有多少个sheet. + int sheetNo = Math.max(1, (int) Math.ceil(list.size() * 1.0 / sheetSize)); + for (int index = 0 ; index < sheetNo ; index++) { + createSheet(sheetNo, index); + + // 产生一行 + Row row = sheet.createRow(rownum); + int column = 0; + // 写入各个字段的列头名称 + for (Object[] os : fields) { + Field field = (Field) os[0]; + Excel excel = (Excel) os[1]; + if (Collection.class.isAssignableFrom(field.getType())) { + for (Field subField : subFields) { + Excel subExcel = subField.getAnnotation(Excel.class); + this.createHeadCell(subExcel, row, column++); + } + } else { + this.createHeadCell(excel, row, column++); + } + } + if (Type.EXPORT.equals(type)) { + fillExcelData(index, row); + addStatisticsRow(); + } + } + } + + /** + * 填充excel数据 + * + * @param index 序号 + * @param row 单元格行 + */ + @SuppressWarnings("unchecked") + public void fillExcelData (int index, Row row) { + int startNo = index * sheetSize; + int endNo = Math.min(startNo + sheetSize, list.size()); + int rowNo = (1 + rownum) - startNo; + for (int i = startNo ; i < endNo ; i++) { + rowNo = isSubList() ? (i > 1 ? rowNo + 1 : rowNo + i) : i + 1 + rownum - startNo; + row = sheet.createRow(rowNo); + // 得到导出对象. + T vo = (T) list.get(i); + Collection subList = null; + if (isSubList()) { + if (isSubListValue(vo)) { + subList = getListCellValue(vo); + subMergedLastRowNum = subMergedLastRowNum + subList.size(); + } else { + subMergedFirstRowNum++; + subMergedLastRowNum++; + } + } + int column = 0; + for (Object[] os : fields) { + Field field = (Field) os[0]; + Excel excel = (Excel) os[1]; + if (Collection.class.isAssignableFrom(field.getType()) && StringUtils.isNotNull(subList)) { + boolean subFirst = false; + for (Object obj : subList) { + if (subFirst) { + rowNo++; + row = sheet.createRow(rowNo); + } + List subFields = FieldUtils.getFieldsListWithAnnotation(obj.getClass(), Excel.class); + int subIndex = 0; + for (Field subField : subFields) { + if (subField.isAnnotationPresent(Excel.class)) { + subField.setAccessible(true); + Excel attr = subField.getAnnotation(Excel.class); + this.addCell(attr, row, (T) obj, subField, column + subIndex); + } + subIndex++; + } + subFirst = true; + } + this.subMergedFirstRowNum = this.subMergedFirstRowNum + subList.size(); + } else { + this.addCell(excel, row, vo, field, column++); + } + } + } + } + + /** + * 创建表格样式 + * + * @param wb 工作薄对象 + * + * @return 样式列表 + */ + private Map createStyles (Workbook wb) { + // 写入各条记录,每条记录对应excel表中的一行 + Map styles = new HashMap(); + CellStyle style = wb.createCellStyle(); + style.setAlignment(HorizontalAlignment.CENTER); + style.setVerticalAlignment(VerticalAlignment.CENTER); + Font titleFont = wb.createFont(); + titleFont.setFontName("Arial"); + titleFont.setFontHeightInPoints((short) 16); + titleFont.setBold(true); + style.setFont(titleFont); + styles.put("title", style); + + style = wb.createCellStyle(); + style.setAlignment(HorizontalAlignment.CENTER); + style.setVerticalAlignment(VerticalAlignment.CENTER); + style.setBorderRight(BorderStyle.THIN); + style.setRightBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); + style.setBorderLeft(BorderStyle.THIN); + style.setLeftBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); + style.setBorderTop(BorderStyle.THIN); + style.setTopBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); + style.setBorderBottom(BorderStyle.THIN); + style.setBottomBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); + Font dataFont = wb.createFont(); + dataFont.setFontName("Arial"); + dataFont.setFontHeightInPoints((short) 10); + style.setFont(dataFont); + styles.put("data", style); + + style = wb.createCellStyle(); + style.setAlignment(HorizontalAlignment.CENTER); + style.setVerticalAlignment(VerticalAlignment.CENTER); + Font totalFont = wb.createFont(); + totalFont.setFontName("Arial"); + totalFont.setFontHeightInPoints((short) 10); + style.setFont(totalFont); + styles.put("total", style); + + styles.putAll(annotationHeaderStyles(wb, styles)); + + styles.putAll(annotationDataStyles(wb)); + + return styles; + } + + /** + * 根据Excel注解创建表格头样式 + * + * @param wb 工作薄对象 + * + * @return 自定义样式列表 + */ + private Map annotationHeaderStyles (Workbook wb, Map styles) { + Map headerStyles = new HashMap(); + for (Object[] os : fields) { + Excel excel = (Excel) os[1]; + String key = StringUtils.format("header_{}_{}", excel.headerColor(), excel.headerBackgroundColor()); + if (!headerStyles.containsKey(key)) { + CellStyle style = wb.createCellStyle(); + style.cloneStyleFrom(styles.get("data")); + style.setAlignment(HorizontalAlignment.CENTER); + style.setVerticalAlignment(VerticalAlignment.CENTER); + style.setFillForegroundColor(excel.headerBackgroundColor().index); + style.setFillPattern(FillPatternType.SOLID_FOREGROUND); + Font headerFont = wb.createFont(); + headerFont.setFontName("Arial"); + headerFont.setFontHeightInPoints((short) 10); + headerFont.setBold(true); + headerFont.setColor(excel.headerColor().index); + style.setFont(headerFont); + headerStyles.put(key, style); + } + } + return headerStyles; + } + + /** + * 根据Excel注解创建表格列样式 + * + * @param wb 工作薄对象 + * + * @return 自定义样式列表 + */ + private Map annotationDataStyles (Workbook wb) { + Map styles = new HashMap(); + for (Object[] os : fields) { + Excel excel = (Excel) os[1]; + String key = StringUtils.format("data_{}_{}_{}", excel.align(), excel.color(), excel.backgroundColor()); + if (!styles.containsKey(key)) { + CellStyle style = wb.createCellStyle(); + style.setAlignment(excel.align()); + style.setVerticalAlignment(VerticalAlignment.CENTER); + style.setBorderRight(BorderStyle.THIN); + style.setRightBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); + style.setBorderLeft(BorderStyle.THIN); + style.setLeftBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); + style.setBorderTop(BorderStyle.THIN); + style.setTopBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); + style.setBorderBottom(BorderStyle.THIN); + style.setBottomBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); + style.setFillPattern(FillPatternType.SOLID_FOREGROUND); + style.setFillForegroundColor(excel.backgroundColor().getIndex()); + Font dataFont = wb.createFont(); + dataFont.setFontName("Arial"); + dataFont.setFontHeightInPoints((short) 10); + dataFont.setColor(excel.color().index); + style.setFont(dataFont); + styles.put(key, style); + } + } + return styles; + } + + /** + * 创建单元格 + */ + public Cell createHeadCell (Excel attr, Row row, int column) { + // 创建列 + Cell cell = row.createCell(column); + // 写入列信息 + cell.setCellValue(attr.name()); + setDataValidation(attr, row, column); + cell.setCellStyle(styles.get(StringUtils.format("header_{}_{}", attr.headerColor(), attr.headerBackgroundColor()))); + if (isSubList()) { + // 填充默认样式,防止合并单元格样式失效 + sheet.setDefaultColumnStyle(column, styles.get(StringUtils.format("data_{}_{}_{}", attr.align(), attr.color(), attr.backgroundColor()))); + if (attr.needMerge()) { + sheet.addMergedRegion(new CellRangeAddress(rownum - 1, rownum, column, column)); + } + } + return cell; + } + + /** + * 设置单元格信息 + * + * @param value 单元格值 + * @param attr 注解相关 + * @param cell 单元格信息 + */ + public void setCellVo (Object value, Excel attr, Cell cell) { + if (ColumnType.STRING == attr.cellType()) { + String cellValue = Convert.toStr(value); + // 对于任何以表达式触发字符 =-+@开头的单元格,直接使用tab字符作为前缀,防止CSV注入。 + if (StringUtils.startsWithAny(cellValue, FORMULA_STR)) { + cellValue = RegExUtils.replaceFirst(cellValue, FORMULA_REGEX_STR, "\t$0"); + } + if (value instanceof Collection && StringUtils.equals("[]", cellValue)) { + cellValue = StringUtils.EMPTY; + } + cell.setCellValue(StringUtils.isNull(cellValue) ? attr.defaultValue() : cellValue + attr.suffix()); + } else if (ColumnType.NUMERIC == attr.cellType()) { + if (StringUtils.isNotNull(value)) { + cell.setCellValue(StringUtils.contains(Convert.toStr(value), ".") ? Convert.toDouble(value) : Convert.toInt(value)); + } + } else if (ColumnType.IMAGE == attr.cellType()) { + ClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, (short) cell.getColumnIndex(), cell.getRow().getRowNum(), (short) (cell.getColumnIndex() + 1), cell.getRow().getRowNum() + 1); + String imagePath = Convert.toStr(value); + if (StringUtils.isNotEmpty(imagePath)) { + byte[] data = ImageUtils.getImage(imagePath); + getDrawingPatriarch(cell.getSheet()).createPicture(anchor, + cell.getSheet().getWorkbook().addPicture(data, getImageType(data))); + } + } + } + + /** + * 获取图片类型,设置图片插入类型 + */ + public int getImageType (byte[] value) { + String type = FileTypeUtils.getFileExtendName(value); + if ("JPG".equalsIgnoreCase(type)) { + return Workbook.PICTURE_TYPE_JPEG; + } else if ("PNG".equalsIgnoreCase(type)) { + return Workbook.PICTURE_TYPE_PNG; + } + return Workbook.PICTURE_TYPE_JPEG; + } + + /** + * 创建表格样式 + */ + public void setDataValidation (Excel attr, Row row, int column) { + if (attr.name().indexOf("注:") >= 0) { + sheet.setColumnWidth(column, 6000); + } else { + // 设置列宽 + sheet.setColumnWidth(column, (int) ((attr.width() + 0.72) * 256)); + } + if (StringUtils.isNotEmpty(attr.prompt()) || attr.combo().length > 0) { + if (attr.combo().length > 15 || StringUtils.join(attr.combo()).length() > 255) { + // 如果下拉数大于15或字符串长度大于255,则使用一个新sheet存储,避免生成的模板下拉值获取不到 + setXSSFValidationWithHidden(sheet, attr.combo(), attr.prompt(), 1, 100, column, column); + } else { + // 提示信息或只能选择不能输入的列内容. + setPromptOrValidation(sheet, attr.combo(), attr.prompt(), 1, 100, column, column); + } + } + } + + /** + * 添加单元格 + */ + public Cell addCell (Excel attr, Row row, T vo, Field field, int column) { + Cell cell = null; + try { + // 设置行高 + row.setHeight(maxHeight); + // 根据Excel中设置情况决定是否导出,有些情况需要保持为空,希望用户填写这一列. + if (attr.isExport()) { + // 创建cell + cell = row.createCell(column); + if (isSubListValue(vo) && getListCellValue(vo).size() > 1 && attr.needMerge()) { + CellRangeAddress cellAddress = new CellRangeAddress(subMergedFirstRowNum, subMergedLastRowNum, column, column); + sheet.addMergedRegion(cellAddress); + } + cell.setCellStyle(styles.get(StringUtils.format("data_{}_{}_{}", attr.align(), attr.color(), attr.backgroundColor()))); + + // 用于读取对象中的属性 + Object value = getTargetValue(vo, field, attr); + String dateFormat = attr.dateFormat(); + String readConverterExp = attr.readConverterExp(); + String separator = attr.separator(); + if (StringUtils.isNotEmpty(dateFormat) && StringUtils.isNotNull(value)) { + cell.setCellValue(parseDateToStr(dateFormat, value)); + } else if (StringUtils.isNotEmpty(readConverterExp) && StringUtils.isNotNull(value)) { + cell.setCellValue(convertByExp(Convert.toStr(value), readConverterExp, separator)); + } else if (value instanceof BigDecimal && -1 != attr.scale()) { + cell.setCellValue((((BigDecimal) value).setScale(attr.scale(), attr.roundingMode())).doubleValue()); + } else if (!attr.handler().equals(ExcelHandlerAdapter.class)) { + cell.setCellValue(dataFormatHandlerAdapter(value, attr, cell)); + } else { + // 设置列类型 + setCellVo(value, attr, cell); + } + addStatisticsData(column, Convert.toStr(value), attr); + } + } catch (Exception e) { + log.error("导出Excel失败{}", e); + } + return cell; + } + + /** + * 设置 POI XSSFSheet 单元格提示或选择框 + * + * @param sheet 表单 + * @param textlist 下拉框显示的内容 + * @param promptContent 提示内容 + * @param firstRow 开始行 + * @param endRow 结束行 + * @param firstCol 开始列 + * @param endCol 结束列 + */ + public void setPromptOrValidation (Sheet sheet, String[] textlist, String promptContent, int firstRow, int endRow, + int firstCol, int endCol) { + DataValidationHelper helper = sheet.getDataValidationHelper(); + DataValidationConstraint constraint = textlist.length > 0 ? helper.createExplicitListConstraint(textlist) : helper.createCustomConstraint("DD1"); + CellRangeAddressList regions = new CellRangeAddressList(firstRow, endRow, firstCol, endCol); + DataValidation dataValidation = helper.createValidation(constraint, regions); + if (StringUtils.isNotEmpty(promptContent)) { + // 如果设置了提示信息则鼠标放上去提示 + dataValidation.createPromptBox("", promptContent); + dataValidation.setShowPromptBox(true); + } + // 处理Excel兼容性问题 + if (dataValidation instanceof XSSFDataValidation) { + dataValidation.setSuppressDropDownArrow(true); + dataValidation.setShowErrorBox(true); + } else { + dataValidation.setSuppressDropDownArrow(false); + } + sheet.addValidationData(dataValidation); + } + + /** + * 设置某些列的值只能输入预制的数据,显示下拉框(兼容超出一定数量的下拉框). + * + * @param sheet 要设置的sheet. + * @param textlist 下拉框显示的内容 + * @param promptContent 提示内容 + * @param firstRow 开始行 + * @param endRow 结束行 + * @param firstCol 开始列 + * @param endCol 结束列 + */ + public void setXSSFValidationWithHidden (Sheet sheet, String[] textlist, String promptContent, int firstRow, int endRow, int firstCol, int endCol) { + String hideSheetName = "combo_" + firstCol + "_" + endCol; + Sheet hideSheet = wb.createSheet(hideSheetName); // 用于存储 下拉菜单数据 + for (int i = 0 ; i < textlist.length ; i++) { + hideSheet.createRow(i).createCell(0).setCellValue(textlist[i]); + } + // 创建名称,可被其他单元格引用 + Name name = wb.createName(); + name.setNameName(hideSheetName + "_data"); + name.setRefersToFormula(hideSheetName + "!$A$1:$A$" + textlist.length); + DataValidationHelper helper = sheet.getDataValidationHelper(); + // 加载下拉列表内容 + DataValidationConstraint constraint = helper.createFormulaListConstraint(hideSheetName + "_data"); + // 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列 + CellRangeAddressList regions = new CellRangeAddressList(firstRow, endRow, firstCol, endCol); + // 数据有效性对象 + DataValidation dataValidation = helper.createValidation(constraint, regions); + if (StringUtils.isNotEmpty(promptContent)) { + // 如果设置了提示信息则鼠标放上去提示 + dataValidation.createPromptBox("", promptContent); + dataValidation.setShowPromptBox(true); + } + // 处理Excel兼容性问题 + if (dataValidation instanceof XSSFDataValidation) { + dataValidation.setSuppressDropDownArrow(true); + dataValidation.setShowErrorBox(true); + } else { + dataValidation.setSuppressDropDownArrow(false); + } + + sheet.addValidationData(dataValidation); + // 设置hiddenSheet隐藏 + wb.setSheetHidden(wb.getSheetIndex(hideSheet), true); + } + + /** + * 数据处理器 + * + * @param value 数据值 + * @param excel 数据注解 + * + * @return + */ + public String dataFormatHandlerAdapter (Object value, Excel excel, Cell cell) { + try { + Object instance = excel.handler().newInstance(); + Method formatMethod = excel.handler().getMethod("format", new Class[]{Object.class, String[].class, Cell.class, Workbook.class}); + value = formatMethod.invoke(instance, value, excel.args(), cell, this.wb); + } catch (Exception e) { + log.error("不能格式化数据 " + excel.handler(), e.getMessage()); + } + return Convert.toStr(value); + } + + /** + * 合计统计信息 + */ + private void addStatisticsData (Integer index, String text, Excel entity) { + if (entity != null && entity.isStatistics()) { + Double temp = 0D; + if (!statistics.containsKey(index)) { + statistics.put(index, temp); + } + try { + temp = Double.valueOf(text); + } catch (NumberFormatException e) { + } + statistics.put(index, statistics.get(index) + temp); + } + } + + /** + * 创建统计行 + */ + public void addStatisticsRow () { + if (statistics.size() > 0) { + Row row = sheet.createRow(sheet.getLastRowNum() + 1); + Set keys = statistics.keySet(); + Cell cell = row.createCell(0); + cell.setCellStyle(styles.get("total")); + cell.setCellValue("合计"); + + for (Integer key : keys) { + cell = row.createCell(key); + cell.setCellStyle(styles.get("total")); + cell.setCellValue(DOUBLE_FORMAT.format(statistics.get(key))); + } + statistics.clear(); + } + } + + /** + * 获取bean中的属性值 + * + * @param vo 实体对象 + * @param field 字段 + * @param excel 注解 + * + * @return 最终的属性值 + * + * @throws Exception + */ + private Object getTargetValue (T vo, Field field, Excel excel) throws Exception { + Object o = field.get(vo); + if (StringUtils.isNotEmpty(excel.targetAttr())) { + String target = excel.targetAttr(); + if (target.contains(".")) { + String[] targets = target.split("[.]"); + for (String name : targets) { + o = getValue(o, name); + } + } else { + o = getValue(o, target); + } + } + return o; + } + + /** + * 以类的属性的get方法方法形式获取值 + * + * @param o + * @param name + * + * @return value + * + * @throws Exception + */ + private Object getValue (Object o, String name) throws Exception { + if (StringUtils.isNotNull(o) && StringUtils.isNotEmpty(name)) { + Class clazz = o.getClass(); + Field field = clazz.getDeclaredField(name); + field.setAccessible(true); + o = field.get(o); + } + return o; + } + + /** + * 得到所有定义字段 + */ + private void createExcelField () { + this.fields = getFields(); + this.fields = this.fields.stream().sorted(Comparator.comparing(objects -> ((Excel) objects[1]).sort())).collect(Collectors.toList()); + this.maxHeight = getRowHeight(); + } + + /** + * 获取字段注解信息 + */ + public List getFields () { + List fields = new ArrayList(); + List tempFields = new ArrayList<>(); + tempFields.addAll(Arrays.asList(clazz.getSuperclass().getDeclaredFields())); + tempFields.addAll(Arrays.asList(clazz.getDeclaredFields())); + for (Field field : tempFields) { + if (!ArrayUtils.contains(this.excludeFields, field.getName())) { + // 单注解 + if (field.isAnnotationPresent(Excel.class)) { + Excel attr = field.getAnnotation(Excel.class); + if (attr != null && (attr.type() == Type.ALL || attr.type() == type)) { + field.setAccessible(true); + fields.add(new Object[]{field, attr}); + } + if (Collection.class.isAssignableFrom(field.getType())) { + subMethod = getSubMethod(field.getName(), clazz); + ParameterizedType pt = (ParameterizedType) field.getGenericType(); + Class subClass = (Class) pt.getActualTypeArguments()[0]; + this.subFields = FieldUtils.getFieldsListWithAnnotation(subClass, Excel.class); + } + } + + // 多注解 + if (field.isAnnotationPresent(Excels.class)) { + Excels attrs = field.getAnnotation(Excels.class); + Excel[] excels = attrs.value(); + for (Excel attr : excels) { + if (!ArrayUtils.contains(this.excludeFields, field.getName() + "." + attr.targetAttr()) + && (attr != null && (attr.type() == Type.ALL || attr.type() == type))) { + field.setAccessible(true); + fields.add(new Object[]{field, attr}); + } + } + } + } + } + return fields; + } + + /** + * 根据注解获取最大行高 + */ + public short getRowHeight () { + double maxHeight = 0; + for (Object[] os : this.fields) { + Excel excel = (Excel) os[1]; + maxHeight = Math.max(maxHeight, excel.height()); + } + return (short) (maxHeight * 20); + } + + /** + * 创建一个工作簿 + */ + public void createWorkbook () { + this.wb = new SXSSFWorkbook(500); + this.sheet = wb.createSheet(); + wb.setSheetName(0, sheetName); + this.styles = createStyles(wb); + } + + /** + * 创建工作表 + * + * @param sheetNo sheet数量 + * @param index 序号 + */ + public void createSheet (int sheetNo, int index) { + // 设置工作表的名称. + if (sheetNo > 1 && index > 0) { + this.sheet = wb.createSheet(); + this.createTitle(); + wb.setSheetName(index, sheetName + index); + } + } + + /** + * 获取单元格值 + * + * @param row 获取的行 + * @param column 获取单元格列号 + * + * @return 单元格值 + */ + public Object getCellValue (Row row, int column) { + if (row == null) { + return row; + } + Object val = ""; + try { + Cell cell = row.getCell(column); + if (StringUtils.isNotNull(cell)) { + if (cell.getCellType() == CellType.NUMERIC || cell.getCellType() == CellType.FORMULA) { + val = cell.getNumericCellValue(); + if (DateUtil.isCellDateFormatted(cell)) { + val = DateUtil.getJavaDate((Double) val); // POI Excel 日期格式转换 + } else { + if ((Double) val % 1 != 0) { + val = new BigDecimal(val.toString()); + } else { + val = new DecimalFormat("0").format(val); + } + } + } else if (cell.getCellType() == CellType.STRING) { + val = cell.getStringCellValue(); + } else if (cell.getCellType() == CellType.BOOLEAN) { + val = cell.getBooleanCellValue(); + } else if (cell.getCellType() == CellType.ERROR) { + val = cell.getErrorCellValue(); + } + + } + } catch (Exception e) { + return val; + } + return val; + } + + /** + * 判断是否是空行 + * + * @param row 判断的行 + * + * @return + */ + private boolean isRowEmpty (Row row) { + if (row == null) { + return true; + } + for (int i = row.getFirstCellNum() ; i < row.getLastCellNum() ; i++) { + Cell cell = row.getCell(i); + if (cell != null && cell.getCellType() != CellType.BLANK) { + return false; + } + } + return true; + } + + /** + * 格式化不同类型的日期对象 + * + * @param dateFormat 日期格式 + * @param val 被格式化的日期对象 + * + * @return 格式化后的日期字符 + */ + public String parseDateToStr (String dateFormat, Object val) { + if (val == null) { + return ""; + } + String str; + if (val instanceof Date) { + str = DateUtils.parseDateToStr(dateFormat, (Date) val); + } else if (val instanceof LocalDateTime) { + str = DateUtils.parseDateToStr(dateFormat, DateUtils.toDate((LocalDateTime) val)); + } else if (val instanceof LocalDate) { + str = DateUtils.parseDateToStr(dateFormat, DateUtils.toDate((LocalDate) val)); + } else { + str = val.toString(); + } + return str; + } + + /** + * 是否有对象的子列表 + */ + public boolean isSubList () { + return StringUtils.isNotNull(subFields) && subFields.size() > 0; + } + + /** + * 是否有对象的子列表,集合不为空 + */ + public boolean isSubListValue (T vo) { + return StringUtils.isNotNull(subFields) && subFields.size() > 0 && StringUtils.isNotNull(getListCellValue(vo)) && getListCellValue(vo).size() > 0; + } + + /** + * 获取集合的值 + */ + public Collection getListCellValue (Object obj) { + Object value; + try { + value = subMethod.invoke(obj, new Object[]{}); + } catch (Exception e) { + return new ArrayList(); + } + return (Collection) value; + } + + /** + * 获取对象的子列表方法 + * + * @param name 名称 + * @param pojoClass 类对象 + * + * @return 子列表方法 + */ + public Method getSubMethod (String name, Class pojoClass) { + StringBuffer getMethodName = new StringBuffer("get"); + getMethodName.append(name.substring(0, 1).toUpperCase()); + getMethodName.append(name.substring(1)); + Method method = null; + try { + method = pojoClass.getMethod(getMethodName.toString(), new Class[]{}); + } catch (Exception e) { + log.error("获取对象异常{}", e.getMessage()); + } + return method; + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/reflect/ReflectUtils.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/reflect/ReflectUtils.java new file mode 100644 index 0000000..2ec7e4f --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/reflect/ReflectUtils.java @@ -0,0 +1,324 @@ +package com.muyu.common.core.utils.reflect; + +import com.muyu.common.core.text.Convert; +import com.muyu.common.core.utils.DateUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.Validate; +import org.apache.poi.ss.usermodel.DateUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.lang.reflect.*; +import java.util.Date; + +/** + * 反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class, 被AOP过的真实类等工具函数. + * + * @author muyu + */ +@SuppressWarnings("rawtypes") +public class ReflectUtils { + private static final String SETTER_PREFIX = "set"; + + private static final String GETTER_PREFIX = "get"; + + private static final String CGLIB_CLASS_SEPARATOR = "$$"; + + private static Logger logger = LoggerFactory.getLogger(ReflectUtils.class); + + /** + * 调用Getter方法. + * 支持多级,如:对象名.对象名.方法 + */ + @SuppressWarnings("unchecked") + public static E invokeGetter (Object obj, String propertyName) { + Object object = obj; + for (String name : StringUtils.split(propertyName, ".")) { + String getterMethodName = GETTER_PREFIX + StringUtils.capitalize(name); + object = invokeMethod(object, getterMethodName, new Class[]{}, new Object[]{}); + } + return (E) object; + } + + /** + * 调用Setter方法, 仅匹配方法名。 + * 支持多级,如:对象名.对象名.方法 + */ + public static void invokeSetter (Object obj, String propertyName, E value) { + Object object = obj; + String[] names = StringUtils.split(propertyName, "."); + for (int i = 0 ; i < names.length ; i++) { + if (i < names.length - 1) { + String getterMethodName = GETTER_PREFIX + StringUtils.capitalize(names[i]); + object = invokeMethod(object, getterMethodName, new Class[]{}, new Object[]{}); + } else { + String setterMethodName = SETTER_PREFIX + StringUtils.capitalize(names[i]); + invokeMethodByName(object, setterMethodName, new Object[]{value}); + } + } + } + + /** + * 直接读取对象属性值, 无视private/protected修饰符, 不经过getter函数. + */ + @SuppressWarnings("unchecked") + public static E getFieldValue (final Object obj, final String fieldName) { + Field field = getAccessibleField(obj, fieldName); + if (field == null) { + logger.debug("在 [" + obj.getClass() + "] 中,没有找到 [" + fieldName + "] 字段 "); + return null; + } + E result = null; + try { + result = (E) field.get(obj); + } catch (IllegalAccessException e) { + logger.error("不可能抛出的异常{}", e.getMessage()); + } + return result; + } + + /** + * 直接设置对象属性值, 无视private/protected修饰符, 不经过setter函数. + */ + public static void setFieldValue (final Object obj, final String fieldName, final E value) { + Field field = getAccessibleField(obj, fieldName); + if (field == null) { + // throw new IllegalArgumentException("在 [" + obj.getClass() + "] 中,没有找到 [" + fieldName + "] 字段 "); + logger.debug("在 [" + obj.getClass() + "] 中,没有找到 [" + fieldName + "] 字段 "); + return; + } + try { + field.set(obj, value); + } catch (IllegalAccessException e) { + logger.error("不可能抛出的异常: {}", e.getMessage()); + } + } + + /** + * 直接调用对象方法, 无视private/protected修饰符. + * 用于一次性调用的情况,否则应使用getAccessibleMethod()函数获得Method后反复调用. + * 同时匹配方法名+参数类型, + */ + @SuppressWarnings("unchecked") + public static E invokeMethod (final Object obj, final String methodName, final Class[] parameterTypes, + final Object[] args) { + if (obj == null || methodName == null) { + return null; + } + Method method = getAccessibleMethod(obj, methodName, parameterTypes); + if (method == null) { + logger.debug("在 [" + obj.getClass() + "] 中,没有找到 [" + methodName + "] 方法 "); + return null; + } + try { + return (E) method.invoke(obj, args); + } catch (Exception e) { + String msg = "method: " + method + ", obj: " + obj + ", args: " + args + ""; + throw convertReflectionExceptionToUnchecked(msg, e); + } + } + + /** + * 直接调用对象方法, 无视private/protected修饰符, + * 用于一次性调用的情况,否则应使用getAccessibleMethodByName()函数获得Method后反复调用. + * 只匹配函数名,如果有多个同名函数调用第一个。 + */ + @SuppressWarnings("unchecked") + public static E invokeMethodByName (final Object obj, final String methodName, final Object[] args) { + Method method = getAccessibleMethodByName(obj, methodName, args.length); + if (method == null) { + // 如果为空不报错,直接返回空。 + logger.debug("在 [" + obj.getClass() + "] 中,没有找到 [" + methodName + "] 方法 "); + return null; + } + try { + // 类型转换(将参数数据类型转换为目标方法参数类型) + Class[] cs = method.getParameterTypes(); + for (int i = 0 ; i < cs.length ; i++) { + if (args[i] != null && !args[i].getClass().equals(cs[i])) { + if (cs[i] == String.class) { + args[i] = Convert.toStr(args[i]); + if (StringUtils.endsWith((String) args[i], ".0")) { + args[i] = StringUtils.substringBefore((String) args[i], ".0"); + } + } else if (cs[i] == Integer.class) { + args[i] = Convert.toInt(args[i]); + } else if (cs[i] == Long.class) { + args[i] = Convert.toLong(args[i]); + } else if (cs[i] == Double.class) { + args[i] = Convert.toDouble(args[i]); + } else if (cs[i] == Float.class) { + args[i] = Convert.toFloat(args[i]); + } else if (cs[i] == Date.class) { + if (args[i] instanceof String) { + args[i] = DateUtils.parseDate(args[i]); + } else { + args[i] = DateUtil.getJavaDate((Double) args[i]); + } + } else if (cs[i] == boolean.class || cs[i] == Boolean.class) { + args[i] = Convert.toBool(args[i]); + } + } + } + return (E) method.invoke(obj, args); + } catch (Exception e) { + String msg = "method: " + method + ", obj: " + obj + ", args: " + args + ""; + throw convertReflectionExceptionToUnchecked(msg, e); + } + } + + /** + * 循环向上转型, 获取对象的DeclaredField, 并强制设置为可访问. + * 如向上转型到Object仍无法找到, 返回null. + */ + public static Field getAccessibleField (final Object obj, final String fieldName) { + // 为空不报错。直接返回 null + if (obj == null) { + return null; + } + Validate.notBlank(fieldName, "fieldName can't be blank"); + for (Class superClass = obj.getClass() ; superClass != Object.class ; superClass = superClass.getSuperclass()) { + try { + Field field = superClass.getDeclaredField(fieldName); + makeAccessible(field); + return field; + } catch (NoSuchFieldException e) { + continue; + } + } + return null; + } + + /** + * 循环向上转型, 获取对象的DeclaredMethod,并强制设置为可访问. + * 如向上转型到Object仍无法找到, 返回null. + * 匹配函数名+参数类型。 + * 用于方法需要被多次调用的情况. 先使用本函数先取得Method,然后调用Method.invoke(Object obj, Object... args) + */ + public static Method getAccessibleMethod (final Object obj, final String methodName, + final Class... parameterTypes) { + // 为空不报错。直接返回 null + if (obj == null) { + return null; + } + Validate.notBlank(methodName, "methodName can't be blank"); + for (Class searchType = obj.getClass() ; searchType != Object.class ; searchType = searchType.getSuperclass()) { + try { + Method method = searchType.getDeclaredMethod(methodName, parameterTypes); + makeAccessible(method); + return method; + } catch (NoSuchMethodException e) { + continue; + } + } + return null; + } + + /** + * 循环向上转型, 获取对象的DeclaredMethod,并强制设置为可访问. + * 如向上转型到Object仍无法找到, 返回null. + * 只匹配函数名。 + * 用于方法需要被多次调用的情况. 先使用本函数先取得Method,然后调用Method.invoke(Object obj, Object... args) + */ + public static Method getAccessibleMethodByName (final Object obj, final String methodName, int argsNum) { + // 为空不报错。直接返回 null + if (obj == null) { + return null; + } + Validate.notBlank(methodName, "methodName can't be blank"); + for (Class searchType = obj.getClass() ; searchType != Object.class ; searchType = searchType.getSuperclass()) { + Method[] methods = searchType.getDeclaredMethods(); + for (Method method : methods) { + if (method.getName().equals(methodName) && method.getParameterTypes().length == argsNum) { + makeAccessible(method); + return method; + } + } + } + return null; + } + + /** + * 改变private/protected的方法为public,尽量不调用实际改动的语句,避免JDK的SecurityManager抱怨。 + */ + public static void makeAccessible (Method method) { + if ((!Modifier.isPublic(method.getModifiers()) || !Modifier.isPublic(method.getDeclaringClass().getModifiers())) + && !method.isAccessible()) { + method.setAccessible(true); + } + } + + /** + * 改变private/protected的成员变量为public,尽量不调用实际改动的语句,避免JDK的SecurityManager抱怨。 + */ + public static void makeAccessible (Field field) { + if ((!Modifier.isPublic(field.getModifiers()) || !Modifier.isPublic(field.getDeclaringClass().getModifiers()) + || Modifier.isFinal(field.getModifiers())) && !field.isAccessible()) { + field.setAccessible(true); + } + } + + /** + * 通过反射, 获得Class定义中声明的泛型参数的类型, 注意泛型必须定义在父类处 + * 如无法找到, 返回Object.class. + */ + @SuppressWarnings("unchecked") + public static Class getClassGenricType (final Class clazz) { + return getClassGenricType(clazz, 0); + } + + /** + * 通过反射, 获得Class定义中声明的父类的泛型参数的类型. + * 如无法找到, 返回Object.class. + */ + public static Class getClassGenricType (final Class clazz, final int index) { + Type genType = clazz.getGenericSuperclass(); + + if (!(genType instanceof ParameterizedType)) { + logger.debug(clazz.getSimpleName() + "'s superclass not ParameterizedType"); + return Object.class; + } + + Type[] params = ((ParameterizedType) genType).getActualTypeArguments(); + + if (index >= params.length || index < 0) { + logger.debug("Index: " + index + ", Size of " + clazz.getSimpleName() + "'s Parameterized Type: " + + params.length); + return Object.class; + } + if (!(params[index] instanceof Class)) { + logger.debug(clazz.getSimpleName() + " not set the actual class on superclass generic parameter"); + return Object.class; + } + + return (Class) params[index]; + } + + public static Class getUserClass (Object instance) { + if (instance == null) { + throw new RuntimeException("Instance must not be null"); + } + Class clazz = instance.getClass(); + if (clazz != null && clazz.getName().contains(CGLIB_CLASS_SEPARATOR)) { + Class superClass = clazz.getSuperclass(); + if (superClass != null && !Object.class.equals(superClass)) { + return superClass; + } + } + return clazz; + + } + + /** + * 将反射时的checked exception转换为unchecked exception. + */ + public static RuntimeException convertReflectionExceptionToUnchecked (String msg, Exception e) { + if (e instanceof IllegalAccessException || e instanceof IllegalArgumentException + || e instanceof NoSuchMethodException) { + return new IllegalArgumentException(msg, e); + } else if (e instanceof InvocationTargetException) { + return new RuntimeException(msg, ((InvocationTargetException) e).getTargetException()); + } + return new RuntimeException(msg, e); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/sign/Base64.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/sign/Base64.java new file mode 100644 index 0000000..038933f --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/sign/Base64.java @@ -0,0 +1,256 @@ +package com.muyu.common.core.utils.sign; + +/** + * Base64工具类 + * + * @author muyu + */ +public final class Base64 { + static private final int BASELENGTH = 128; + static private final int LOOKUPLENGTH = 64; + static private final int TWENTYFOURBITGROUP = 24; + static private final int EIGHTBIT = 8; + static private final int SIXTEENBIT = 16; + static private final int FOURBYTE = 4; + static private final int SIGN = -128; + static private final char PAD = '='; + static final private byte[] base64Alphabet = new byte[BASELENGTH]; + static final private char[] lookUpBase64Alphabet = new char[LOOKUPLENGTH]; + + static { + for (int i = 0 ; i < BASELENGTH ; ++i) { + base64Alphabet[i] = -1; + } + for (int i = 'Z' ; i >= 'A' ; i--) { + base64Alphabet[i] = (byte) (i - 'A'); + } + for (int i = 'z' ; i >= 'a' ; i--) { + base64Alphabet[i] = (byte) (i - 'a' + 26); + } + + for (int i = '9' ; i >= '0' ; i--) { + base64Alphabet[i] = (byte) (i - '0' + 52); + } + + base64Alphabet['+'] = 62; + base64Alphabet['/'] = 63; + + for (int i = 0 ; i <= 25 ; i++) { + lookUpBase64Alphabet[i] = (char) ('A' + i); + } + + for (int i = 26, j = 0 ; i <= 51 ; i++, j++) { + lookUpBase64Alphabet[i] = (char) ('a' + j); + } + + for (int i = 52, j = 0 ; i <= 61 ; i++, j++) { + lookUpBase64Alphabet[i] = (char) ('0' + j); + } + lookUpBase64Alphabet[62] = (char) '+'; + lookUpBase64Alphabet[63] = (char) '/'; + } + + private static boolean isWhiteSpace (char octect) { + return (octect == 0x20 || octect == 0xd || octect == 0xa || octect == 0x9); + } + + private static boolean isPad (char octect) { + return (octect == PAD); + } + + private static boolean isData (char octect) { + return (octect < BASELENGTH && base64Alphabet[octect] != -1); + } + + /** + * Encodes hex octects into Base64 + * + * @param binaryData Array containing binaryData + * + * @return Encoded Base64 array + */ + public static String encode (byte[] binaryData) { + if (binaryData == null) { + return null; + } + + int lengthDataBits = binaryData.length * EIGHTBIT; + if (lengthDataBits == 0) { + return ""; + } + + int fewerThan24bits = lengthDataBits % TWENTYFOURBITGROUP; + int numberTriplets = lengthDataBits / TWENTYFOURBITGROUP; + int numberQuartet = fewerThan24bits != 0 ? numberTriplets + 1 : numberTriplets; + char encodedData[] = null; + + encodedData = new char[numberQuartet * 4]; + + byte k = 0, l = 0, b1 = 0, b2 = 0, b3 = 0; + + int encodedIndex = 0; + int dataIndex = 0; + + for (int i = 0 ; i < numberTriplets ; i++) { + b1 = binaryData[dataIndex++]; + b2 = binaryData[dataIndex++]; + b3 = binaryData[dataIndex++]; + + l = (byte) (b2 & 0x0f); + k = (byte) (b1 & 0x03); + + byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); + byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0); + byte val3 = ((b3 & SIGN) == 0) ? (byte) (b3 >> 6) : (byte) ((b3) >> 6 ^ 0xfc); + + encodedData[encodedIndex++] = lookUpBase64Alphabet[val1]; + encodedData[encodedIndex++] = lookUpBase64Alphabet[val2 | (k << 4)]; + encodedData[encodedIndex++] = lookUpBase64Alphabet[(l << 2) | val3]; + encodedData[encodedIndex++] = lookUpBase64Alphabet[b3 & 0x3f]; + } + + // form integral number of 6-bit groups + if (fewerThan24bits == EIGHTBIT) { + b1 = binaryData[dataIndex]; + k = (byte) (b1 & 0x03); + byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); + encodedData[encodedIndex++] = lookUpBase64Alphabet[val1]; + encodedData[encodedIndex++] = lookUpBase64Alphabet[k << 4]; + encodedData[encodedIndex++] = PAD; + encodedData[encodedIndex++] = PAD; + } else if (fewerThan24bits == SIXTEENBIT) { + b1 = binaryData[dataIndex]; + b2 = binaryData[dataIndex + 1]; + l = (byte) (b2 & 0x0f); + k = (byte) (b1 & 0x03); + + byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); + byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0); + + encodedData[encodedIndex++] = lookUpBase64Alphabet[val1]; + encodedData[encodedIndex++] = lookUpBase64Alphabet[val2 | (k << 4)]; + encodedData[encodedIndex++] = lookUpBase64Alphabet[l << 2]; + encodedData[encodedIndex++] = PAD; + } + return new String(encodedData); + } + + /** + * Decodes Base64 data into octects + * + * @param encoded string containing Base64 data + * + * @return Array containind decoded data. + */ + public static byte[] decode (String encoded) { + if (encoded == null) { + return null; + } + + char[] base64Data = encoded.toCharArray(); + // remove white spaces + int len = removeWhiteSpace(base64Data); + + if (len % FOURBYTE != 0) { + return null;// should be divisible by four + } + + int numberQuadruple = (len / FOURBYTE); + + if (numberQuadruple == 0) { + return new byte[0]; + } + + byte decodedData[] = null; + byte b1 = 0, b2 = 0, b3 = 0, b4 = 0; + char d1 = 0, d2 = 0, d3 = 0, d4 = 0; + + int i = 0; + int encodedIndex = 0; + int dataIndex = 0; + decodedData = new byte[(numberQuadruple) * 3]; + + for ( ; i < numberQuadruple - 1 ; i++) { + + if (!isData((d1 = base64Data[dataIndex++])) || !isData((d2 = base64Data[dataIndex++])) + || !isData((d3 = base64Data[dataIndex++])) || !isData((d4 = base64Data[dataIndex++]))) { + return null; + } // if found "no data" just return null + + b1 = base64Alphabet[d1]; + b2 = base64Alphabet[d2]; + b3 = base64Alphabet[d3]; + b4 = base64Alphabet[d4]; + + decodedData[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4); + decodedData[encodedIndex++] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf)); + decodedData[encodedIndex++] = (byte) (b3 << 6 | b4); + } + + if (!isData((d1 = base64Data[dataIndex++])) || !isData((d2 = base64Data[dataIndex++]))) { + return null;// if found "no data" just return null + } + + b1 = base64Alphabet[d1]; + b2 = base64Alphabet[d2]; + + d3 = base64Data[dataIndex++]; + d4 = base64Data[dataIndex++]; + if (!isData((d3)) || !isData((d4))) {// Check if they are PAD characters + if (isPad(d3) && isPad(d4)) { + if ((b2 & 0xf) != 0)// last 4 bits should be zero + { + return null; + } + byte[] tmp = new byte[i * 3 + 1]; + System.arraycopy(decodedData, 0, tmp, 0, i * 3); + tmp[encodedIndex] = (byte) (b1 << 2 | b2 >> 4); + return tmp; + } else if (!isPad(d3) && isPad(d4)) { + b3 = base64Alphabet[d3]; + if ((b3 & 0x3) != 0)// last 2 bits should be zero + { + return null; + } + byte[] tmp = new byte[i * 3 + 2]; + System.arraycopy(decodedData, 0, tmp, 0, i * 3); + tmp[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4); + tmp[encodedIndex] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf)); + return tmp; + } else { + return null; + } + } else { // No PAD e.g 3cQl + b3 = base64Alphabet[d3]; + b4 = base64Alphabet[d4]; + decodedData[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4); + decodedData[encodedIndex++] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf)); + decodedData[encodedIndex++] = (byte) (b3 << 6 | b4); + + } + return decodedData; + } + + /** + * remove WhiteSpace from MIME containing encoded Base64 data. + * + * @param data the byte array of base64 data (with WS) + * + * @return the new length + */ + private static int removeWhiteSpace (char[] data) { + if (data == null) { + return 0; + } + + // count characters that's not whitespace + int newSize = 0; + int len = data.length; + for (int i = 0 ; i < len ; i++) { + if (!isWhiteSpace(data[i])) { + data[newSize++] = data[i]; + } + } + return newSize; + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/sql/SqlUtil.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/sql/SqlUtil.java new file mode 100644 index 0000000..3f418e7 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/sql/SqlUtil.java @@ -0,0 +1,59 @@ +package com.muyu.common.core.utils.sql; + +import com.muyu.common.core.exception.UtilException; +import com.muyu.common.core.utils.StringUtils; + +/** + * sql操作工具类 + * + * @author muyu + */ +public class SqlUtil { + /** + * 限制orderBy最大长度 + */ + private static final int ORDER_BY_MAX_LENGTH = 500; + /** + * 定义常用的 sql关键字 + */ + public static String SQL_REGEX = "and |extractvalue|updatexml|exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |or |+|user()"; + /** + * 仅支持字母、数字、下划线、空格、逗号、小数点(支持多个字段排序) + */ + public static String SQL_PATTERN = "[a-zA-Z0-9_\\ \\,\\.]+"; + + /** + * 检查字符,防止注入绕过 + */ + public static String escapeOrderBySql (String value) { + if (StringUtils.isNotEmpty(value) && !isValidOrderBySql(value)) { + throw new UtilException("参数不符合规范,不能进行查询"); + } + if (StringUtils.length(value) > ORDER_BY_MAX_LENGTH) { + throw new UtilException("参数已超过最大限制,不能进行查询"); + } + return value; + } + + /** + * 验证 order by 语法是否符合规范 + */ + public static boolean isValidOrderBySql (String value) { + return value.matches(SQL_PATTERN); + } + + /** + * SQL关键字检查 + */ + public static void filterKeyword (String value) { + if (StringUtils.isEmpty(value)) { + return; + } + String[] sqlKeywords = StringUtils.split(SQL_REGEX, "\\|"); + for (String sqlKeyword : sqlKeywords) { + if (StringUtils.indexOfIgnoreCase(value, sqlKeyword) > -1) { + throw new UtilException("参数存在SQL注入风险"); + } + } + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/uuid/IdUtils.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/uuid/IdUtils.java new file mode 100644 index 0000000..375b034 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/uuid/IdUtils.java @@ -0,0 +1,44 @@ +package com.muyu.common.core.utils.uuid; + +/** + * ID生成器工具类 + * + * @author muyu + */ +public class IdUtils { + /** + * 获取随机UUID + * + * @return 随机UUID + */ + public static String randomUUID () { + return UUID.randomUUID().toString(); + } + + /** + * 简化的UUID,去掉了横线 + * + * @return 简化的UUID,去掉了横线 + */ + public static String simpleUUID () { + return UUID.randomUUID().toString(true); + } + + /** + * 获取随机UUID,使用性能更好的ThreadLocalRandom生成UUID + * + * @return 随机UUID + */ + public static String fastUUID () { + return UUID.fastUUID().toString(); + } + + /** + * 简化的UUID,去掉了横线,使用性能更好的ThreadLocalRandom生成UUID + * + * @return 简化的UUID,去掉了横线 + */ + public static String fastSimpleUUID () { + return UUID.fastUUID().toString(true); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/uuid/Seq.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/uuid/Seq.java new file mode 100644 index 0000000..b72e3dd --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/uuid/Seq.java @@ -0,0 +1,78 @@ +package com.muyu.common.core.utils.uuid; + +import com.muyu.common.core.utils.DateUtils; +import com.muyu.common.core.utils.StringUtils; + +import java.util.concurrent.atomic.AtomicInteger; + +/** + * @author muyu 序列生成类 + */ +public class Seq { + // 通用序列类型 + public static final String commSeqType = "COMMON"; + + // 上传序列类型 + public static final String uploadSeqType = "UPLOAD"; + // 机器标识 + private static final String machineCode = "A"; + // 通用接口序列数 + private static AtomicInteger commSeq = new AtomicInteger(1); + // 上传接口序列数 + private static AtomicInteger uploadSeq = new AtomicInteger(1); + + /** + * 获取通用序列号 + * + * @return 序列值 + */ + public static String getId () { + return getId(commSeqType); + } + + /** + * 默认16位序列号 yyMMddHHmmss + 一位机器标识 + 3长度循环递增字符串 + * + * @return 序列值 + */ + public static String getId (String type) { + AtomicInteger atomicInt = commSeq; + if (uploadSeqType.equals(type)) { + atomicInt = uploadSeq; + } + return getId(atomicInt, 3); + } + + /** + * 通用接口序列号 yyMMddHHmmss + 一位机器标识 + length长度循环递增字符串 + * + * @param atomicInt 序列数 + * @param length 数值长度 + * + * @return 序列值 + */ + public static String getId (AtomicInteger atomicInt, int length) { + String result = DateUtils.dateTimeNow(); + result += machineCode; + result += getSeq(atomicInt, length); + return result; + } + + /** + * 序列循环递增字符串[1, 10 的 (length)幂次方), 用0左补齐length位数 + * + * @return 序列值 + */ + private synchronized static String getSeq (AtomicInteger atomicInt, int length) { + // 先取值再+1 + int value = atomicInt.getAndIncrement(); + + // 如果更新后值>=10 的 (length)幂次方则重置为1 + int maxSeq = (int) Math.pow(10, length); + if (atomicInt.get() >= maxSeq) { + atomicInt.set(1); + } + // 转字符串,用0左补齐 + return StringUtils.padl(value, length); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/uuid/UUID.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/uuid/UUID.java new file mode 100644 index 0000000..37c3c9e --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/uuid/UUID.java @@ -0,0 +1,450 @@ +package com.muyu.common.core.utils.uuid; + +import com.muyu.common.core.exception.UtilException; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.util.Random; +import java.util.concurrent.ThreadLocalRandom; + +/** + * 提供通用唯一识别码(universally unique identifier)(UUID)实现 + * + * @author muyu + */ +public final class UUID implements java.io.Serializable, Comparable { + private static final long serialVersionUID = -1185015143654744140L; + /** + * 此UUID的最高64有效位 + */ + private final long mostSigBits; + /** + * 此UUID的最低64有效位 + */ + private final long leastSigBits; + + /** + * 私有构造 + * + * @param data 数据 + */ + private UUID (byte[] data) { + long msb = 0; + long lsb = 0; + assert data.length == 16 : "data must be 16 bytes in length"; + for (int i = 0 ; i < 8 ; i++) { + msb = (msb << 8) | (data[i] & 0xff); + } + for (int i = 8 ; i < 16 ; i++) { + lsb = (lsb << 8) | (data[i] & 0xff); + } + this.mostSigBits = msb; + this.leastSigBits = lsb; + } + + /** + * 使用指定的数据构造新的 UUID。 + * + * @param mostSigBits 用于 {@code UUID} 的最高有效 64 位 + * @param leastSigBits 用于 {@code UUID} 的最低有效 64 位 + */ + public UUID (long mostSigBits, long leastSigBits) { + this.mostSigBits = mostSigBits; + this.leastSigBits = leastSigBits; + } + + /** + * 获取类型 4(伪随机生成的)UUID 的静态工厂。 + * + * @return 随机生成的 {@code UUID} + */ + public static UUID fastUUID () { + return randomUUID(false); + } + + /** + * 获取类型 4(伪随机生成的)UUID 的静态工厂。 使用加密的强伪随机数生成器生成该 UUID。 + * + * @return 随机生成的 {@code UUID} + */ + public static UUID randomUUID () { + return randomUUID(true); + } + + /** + * 获取类型 4(伪随机生成的)UUID 的静态工厂。 使用加密的强伪随机数生成器生成该 UUID。 + * + * @param isSecure 是否使用{@link SecureRandom}如果是可以获得更安全的随机码,否则可以得到更好的性能 + * + * @return 随机生成的 {@code UUID} + */ + public static UUID randomUUID (boolean isSecure) { + final Random ng = isSecure ? Holder.numberGenerator : getRandom(); + + byte[] randomBytes = new byte[16]; + ng.nextBytes(randomBytes); + randomBytes[6] &= 0x0f; /* clear version */ + randomBytes[6] |= 0x40; /* set to version 4 */ + randomBytes[8] &= 0x3f; /* clear variant */ + randomBytes[8] |= 0x80; /* set to IETF variant */ + return new UUID(randomBytes); + } + + /** + * 根据指定的字节数组获取类型 3(基于名称的)UUID 的静态工厂。 + * + * @param name 用于构造 UUID 的字节数组。 + * + * @return 根据指定数组生成的 {@code UUID} + */ + public static UUID nameUUIDFromBytes (byte[] name) { + MessageDigest md; + try { + md = MessageDigest.getInstance("MD5"); + } catch (NoSuchAlgorithmException nsae) { + throw new InternalError("MD5 not supported"); + } + byte[] md5Bytes = md.digest(name); + md5Bytes[6] &= 0x0f; /* clear version */ + md5Bytes[6] |= 0x30; /* set to version 3 */ + md5Bytes[8] &= 0x3f; /* clear variant */ + md5Bytes[8] |= 0x80; /* set to IETF variant */ + return new UUID(md5Bytes); + } + + /** + * 根据 {@link #toString()} 方法中描述的字符串标准表示形式创建{@code UUID}。 + * + * @param name 指定 {@code UUID} 字符串 + * + * @return 具有指定值的 {@code UUID} + * + * @throws IllegalArgumentException 如果 name 与 {@link #toString} 中描述的字符串表示形式不符抛出此异常 + */ + public static UUID fromString (String name) { + String[] components = name.split("-"); + if (components.length != 5) { + throw new IllegalArgumentException("Invalid UUID string: " + name); + } + for (int i = 0 ; i < 5 ; i++) { + components[i] = "0x" + components[i]; + } + + long mostSigBits = Long.decode(components[0]).longValue(); + mostSigBits <<= 16; + mostSigBits |= Long.decode(components[1]).longValue(); + mostSigBits <<= 16; + mostSigBits |= Long.decode(components[2]).longValue(); + + long leastSigBits = Long.decode(components[3]).longValue(); + leastSigBits <<= 48; + leastSigBits |= Long.decode(components[4]).longValue(); + + return new UUID(mostSigBits, leastSigBits); + } + + /** + * 返回指定数字对应的hex值 + * + * @param val 值 + * @param digits 位 + * + * @return 值 + */ + private static String digits (long val, int digits) { + long hi = 1L << (digits * 4); + return Long.toHexString(hi | (val & (hi - 1))).substring(1); + } + + /** + * 获取{@link SecureRandom},类提供加密的强随机数生成器 (RNG) + * + * @return {@link SecureRandom} + */ + public static SecureRandom getSecureRandom () { + try { + return SecureRandom.getInstance("SHA1PRNG"); + } catch (NoSuchAlgorithmException e) { + throw new UtilException(e); + } + } + + /** + * 获取随机数生成器对象
+ * ThreadLocalRandom是JDK 7之后提供并发产生随机数,能够解决多个线程发生的竞争争夺。 + * + * @return {@link ThreadLocalRandom} + */ + public static ThreadLocalRandom getRandom () { + return ThreadLocalRandom.current(); + } + + /** + * 返回此 UUID 的 128 位值中的最低有效 64 位。 + * + * @return 此 UUID 的 128 位值中的最低有效 64 位。 + */ + public long getLeastSignificantBits () { + return leastSigBits; + } + + /** + * 返回此 UUID 的 128 位值中的最高有效 64 位。 + * + * @return 此 UUID 的 128 位值中最高有效 64 位。 + */ + public long getMostSignificantBits () { + return mostSigBits; + } + + /** + * 与此 {@code UUID} 相关联的版本号. 版本号描述此 {@code UUID} 是如何生成的。 + *

+ * 版本号具有以下含意: + *

    + *
  • 1 基于时间的 UUID + *
  • 2 DCE 安全 UUID + *
  • 3 基于名称的 UUID + *
  • 4 随机生成的 UUID + *
+ * + * @return 此 {@code UUID} 的版本号 + */ + public int version () { + // Version is bits masked by 0x000000000000F000 in MS long + return (int) ((mostSigBits >> 12) & 0x0f); + } + + /** + * 与此 {@code UUID} 相关联的变体号。变体号描述 {@code UUID} 的布局。 + *

+ * 变体号具有以下含意: + *

    + *
  • 0 为 NCS 向后兼容保留 + *
  • 2 IETF RFC 4122(Leach-Salz), 用于此类 + *
  • 6 保留,微软向后兼容 + *
  • 7 保留供以后定义使用 + *
+ * + * @return 此 {@code UUID} 相关联的变体号 + */ + public int variant () { + // This field is composed of a varying number of bits. + // 0 - - Reserved for NCS backward compatibility + // 1 0 - The IETF aka Leach-Salz variant (used by this class) + // 1 1 0 Reserved, Microsoft backward compatibility + // 1 1 1 Reserved for future definition. + return (int) ((leastSigBits >>> (64 - (leastSigBits >>> 62))) & (leastSigBits >> 63)); + } + + /** + * 与此 UUID 相关联的时间戳值。 + * + *

+ * 60 位的时间戳值根据此 {@code UUID} 的 time_low、time_mid 和 time_hi 字段构造。
+ * 所得到的时间戳以 100 毫微秒为单位,从 UTC(通用协调时间) 1582 年 10 月 15 日零时开始。 + * + *

+ * 时间戳值仅在在基于时间的 UUID(其 version 类型为 1)中才有意义。
+ * 如果此 {@code UUID} 不是基于时间的 UUID,则此方法抛出 UnsupportedOperationException。 + * + * @throws UnsupportedOperationException 如果此 {@code UUID} 不是 version 为 1 的 UUID。 + */ + public long timestamp () throws UnsupportedOperationException { + checkTimeBase(); + return (mostSigBits & 0x0FFFL) << 48// + | ((mostSigBits >> 16) & 0x0FFFFL) << 32// + | mostSigBits >>> 32; + } + + /** + * 与此 UUID 相关联的时钟序列值。 + * + *

+ * 14 位的时钟序列值根据此 UUID 的 clock_seq 字段构造。clock_seq 字段用于保证在基于时间的 UUID 中的时间唯一性。 + *

+ * {@code clockSequence} 值仅在基于时间的 UUID(其 version 类型为 1)中才有意义。 如果此 UUID 不是基于时间的 UUID,则此方法抛出 + * UnsupportedOperationException。 + * + * @return 此 {@code UUID} 的时钟序列 + * + * @throws UnsupportedOperationException 如果此 UUID 的 version 不为 1 + */ + public int clockSequence () throws UnsupportedOperationException { + checkTimeBase(); + return (int) ((leastSigBits & 0x3FFF000000000000L) >>> 48); + } + + /** + * 与此 UUID 相关的节点值。 + * + *

+ * 48 位的节点值根据此 UUID 的 node 字段构造。此字段旨在用于保存机器的 IEEE 802 地址,该地址用于生成此 UUID 以保证空间唯一性。 + *

+ * 节点值仅在基于时间的 UUID(其 version 类型为 1)中才有意义。
+ * 如果此 UUID 不是基于时间的 UUID,则此方法抛出 UnsupportedOperationException。 + * + * @return 此 {@code UUID} 的节点值 + * + * @throws UnsupportedOperationException 如果此 UUID 的 version 不为 1 + */ + public long node () throws UnsupportedOperationException { + checkTimeBase(); + return leastSigBits & 0x0000FFFFFFFFFFFFL; + } + + /** + * 返回此{@code UUID} 的字符串表现形式。 + * + *

+ * UUID 的字符串表示形式由此 BNF 描述: + * + *

+     * {@code
+     * UUID                   = ----
+     * time_low               = 4*
+     * time_mid               = 2*
+     * time_high_and_version  = 2*
+     * variant_and_sequence   = 2*
+     * node                   = 6*
+     * hexOctet               = 
+     * hexDigit               = [0-9a-fA-F]
+     * }
+     * 
+ * + * + * + * @return 此{@code UUID} 的字符串表现形式 + * + * @see #toString(boolean) + */ + @Override + public String toString () { + return toString(false); + } + + /** + * 返回此{@code UUID} 的字符串表现形式。 + * + *

+ * UUID 的字符串表示形式由此 BNF 描述: + * + *

+     * {@code
+     * UUID                   = ----
+     * time_low               = 4*
+     * time_mid               = 2*
+     * time_high_and_version  = 2*
+     * variant_and_sequence   = 2*
+     * node                   = 6*
+     * hexOctet               = 
+     * hexDigit               = [0-9a-fA-F]
+     * }
+     * 
+ * + * + * + * @param isSimple 是否简单模式,简单模式为不带'-'的UUID字符串 + * + * @return 此{@code UUID} 的字符串表现形式 + */ + public String toString (boolean isSimple) { + final StringBuilder builder = new StringBuilder(isSimple ? 32 : 36); + // time_low + builder.append(digits(mostSigBits >> 32, 8)); + if (false == isSimple) { + builder.append('-'); + } + // time_mid + builder.append(digits(mostSigBits >> 16, 4)); + if (false == isSimple) { + builder.append('-'); + } + // time_high_and_version + builder.append(digits(mostSigBits, 4)); + if (false == isSimple) { + builder.append('-'); + } + // variant_and_sequence + builder.append(digits(leastSigBits >> 48, 4)); + if (false == isSimple) { + builder.append('-'); + } + // node + builder.append(digits(leastSigBits, 12)); + + return builder.toString(); + } + + // Comparison Operations + + /** + * 返回此 UUID 的哈希码。 + * + * @return UUID 的哈希码值。 + */ + @Override + public int hashCode () { + long hilo = mostSigBits ^ leastSigBits; + return ((int) (hilo >> 32)) ^ (int) hilo; + } + + // ------------------------------------------------------------------------------------------------------------------- + // Private method start + + /** + * 将此对象与指定对象比较。 + *

+ * 当且仅当参数不为 {@code null}、而是一个 UUID 对象、具有与此 UUID 相同的 varriant、包含相同的值(每一位均相同)时,结果才为 {@code true}。 + * + * @param obj 要与之比较的对象 + * + * @return 如果对象相同,则返回 {@code true};否则返回 {@code false} + */ + @Override + public boolean equals (Object obj) { + if ((null == obj) || (obj.getClass() != UUID.class)) { + return false; + } + UUID id = (UUID) obj; + return (mostSigBits == id.mostSigBits && leastSigBits == id.leastSigBits); + } + + /** + * 将此 UUID 与指定的 UUID 比较。 + * + *

+ * 如果两个 UUID 不同,且第一个 UUID 的最高有效字段大于第二个 UUID 的对应字段,则第一个 UUID 大于第二个 UUID。 + * + * @param val 与此 UUID 比较的 UUID + * + * @return 在此 UUID 小于、等于或大于 val 时,分别返回 -1、0 或 1。 + */ + @Override + public int compareTo (UUID val) { + // The ordering is intentionally set up so that the UUIDs + // can simply be numerically compared as two numbers + return (this.mostSigBits < val.mostSigBits ? -1 : // + (this.mostSigBits > val.mostSigBits ? 1 : // + (this.leastSigBits < val.leastSigBits ? -1 : // + (this.leastSigBits > val.leastSigBits ? 1 : // + 0)))); + } + + /** + * 检查是否为time-based版本UUID + */ + private void checkTimeBase () { + if (version() != 1) { + throw new UnsupportedOperationException("Not a time-based UUID"); + } + } + + /** + * SecureRandom 的单例 + */ + private static class Holder { + static final SecureRandom numberGenerator = getSecureRandom(); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/validation/ValidationConfig.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/validation/ValidationConfig.java new file mode 100644 index 0000000..0540064 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/validation/ValidationConfig.java @@ -0,0 +1,14 @@ +package com.muyu.common.core.validation; + +import jakarta.validation.Validation; +import jakarta.validation.Validator; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class ValidationConfig { + @Bean + public Validator validator() { + return Validation.byDefaultProvider().configure().buildValidatorFactory().getValidator(); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/controller/BaseController.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/controller/BaseController.java new file mode 100644 index 0000000..3789a82 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/controller/BaseController.java @@ -0,0 +1,129 @@ +package com.muyu.common.core.web.controller; + +import com.github.pagehelper.PageInfo; +import com.muyu.common.core.utils.DateUtils; +import com.muyu.common.core.utils.PageUtils; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.web.page.TableDataInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.annotation.InitBinder; + +import java.beans.PropertyEditorSupport; +import java.util.Date; +import java.util.List; + +/** + * web层通用数据处理 + * + * @author muyu + */ +public class BaseController { + protected final Logger logger = LoggerFactory.getLogger(this.getClass()); + + /** + * 将前台传递过来的日期格式的字符串,自动转化为Date类型 + */ + @InitBinder + public void initBinder (WebDataBinder binder) { + // Date 类型转换 + binder.registerCustomEditor(Date.class, new PropertyEditorSupport() { + @Override + public void setAsText (String text) { + setValue(DateUtils.parseDate(text)); + } + }); + } + + /** + * 设置请求分页数据 + */ + protected void startPage () { + PageUtils.startPage(); + } + + /** + * 清理分页的线程变量 + */ + protected void clearPage () { + PageUtils.clearPage(); + } + + /** + * 响应请求分页数据 + */ + @SuppressWarnings({"rawtypes", "unchecked"}) + protected Result> getDataTable (List list) { + return Result.success( + TableDataInfo.builder() + .total(new PageInfo(list).getTotal()) + .rows(list) + .build() + ); + } + + /** + * 返回成功 + */ + public Result success () { + return Result.success(); + } + + /** + * 返回成功消息 + */ + public Result success (String message) { + return Result.success(message); + } + + /** + * 返回成功消息 + */ + public Result success (Object data) { + return Result.success(data); + } + + /** + * 返回失败消息 + */ + public Result error () { + return Result.error(); + } + + /** + * 返回失败消息 + */ + public Result error (String message) { + return Result.error(message); + } + + /** + * 返回警告消息 + */ + public Result warn (String message) { + return Result.warn(message); + } + + /** + * 响应返回结果 + * + * @param rows 影响行数 + * + * @return 操作结果 + */ + protected Result toAjax (int rows) { + return rows > 0 ? Result.success() : Result.error(); + } + + /** + * 响应返回结果 + * + * @param result 结果 + * + * @return 操作结果 + */ + protected Result toAjax (boolean result) { + return result ? success() : error(); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/domain/BaseEntity.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/domain/BaseEntity.java new file mode 100644 index 0000000..add8e3e --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/domain/BaseEntity.java @@ -0,0 +1,80 @@ +package com.muyu.common.core.web.domain; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.io.Serializable; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * Entity基类 + * + * @author muyu + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class BaseEntity implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 搜索值 + */ + @JsonIgnore + @TableField(exist = false) + private String searchValue; + + /** + * 创建者 + */ + private String createBy; + + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 更新者 + */ + private String updateBy; + + /** + * 更新时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 备注 + */ + private String remark; + + /** + * 请求参数 + */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + @TableField(exist = false) + private Map params; + + public Map getParams () { + if (params == null) { + params = new HashMap<>(); + } + return params; + } + + public void setParams (Map params) { + this.params = params; + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/domain/TreeEntity.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/domain/TreeEntity.java new file mode 100644 index 0000000..85ea8df --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/domain/TreeEntity.java @@ -0,0 +1,47 @@ +package com.muyu.common.core.web.domain; + +import lombok.*; +import lombok.experimental.SuperBuilder; + +import java.util.ArrayList; +import java.util.List; + +/** + * Tree基类 + * + * @author muyu + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class TreeEntity extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 父菜单名称 + */ + private String parentName; + + /** + * 父菜单ID + */ + private Long parentId; + + /** + * 显示顺序 + */ + private Integer orderNum; + + /** + * 祖级列表 + */ + private String ancestors; + + /** + * 子部门 + */ + private List children = new ArrayList<>(); + +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/page/PageDomain.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/page/PageDomain.java new file mode 100644 index 0000000..b9c5e45 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/page/PageDomain.java @@ -0,0 +1,93 @@ +package com.muyu.common.core.web.page; + +import com.muyu.common.core.utils.StringUtils; + +/** + * 分页数据 + * + * @author muyu + */ +public class PageDomain { + /** + * 当前记录起始索引 + */ + private Integer pageNum; + + /** + * 每页显示记录数 + */ + private Integer pageSize; + + /** + * 排序列 + */ + private String orderByColumn; + + /** + * 排序的方向desc或者asc + */ + private String isAsc = "asc"; + + /** + * 分页参数合理化 + */ + private Boolean reasonable = true; + + public String getOrderBy () { + if (StringUtils.isEmpty(orderByColumn)) { + return ""; + } + return StringUtils.toUnderScoreCase(orderByColumn) + " " + isAsc; + } + + public Integer getPageNum () { + return pageNum; + } + + public void setPageNum (Integer pageNum) { + this.pageNum = pageNum; + } + + public Integer getPageSize () { + return pageSize; + } + + public void setPageSize (Integer pageSize) { + this.pageSize = pageSize; + } + + public String getOrderByColumn () { + return orderByColumn; + } + + public void setOrderByColumn (String orderByColumn) { + this.orderByColumn = orderByColumn; + } + + public String getIsAsc () { + return isAsc; + } + + public void setIsAsc (String isAsc) { + if (StringUtils.isNotEmpty(isAsc)) { + // 兼容前端排序类型 + if ("ascending".equals(isAsc)) { + isAsc = "asc"; + } else if ("descending".equals(isAsc)) { + isAsc = "desc"; + } + this.isAsc = isAsc; + } + } + + public Boolean getReasonable () { + if (StringUtils.isNull(reasonable)) { + return Boolean.TRUE; + } + return reasonable; + } + + public void setReasonable (Boolean reasonable) { + this.reasonable = reasonable; + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/page/TableDataInfo.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/page/TableDataInfo.java new file mode 100644 index 0000000..d677cce --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/page/TableDataInfo.java @@ -0,0 +1,45 @@ +package com.muyu.common.core.web.page; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.apache.poi.ss.formula.functions.T; + +import java.io.Serializable; +import java.util.List; + +/** + * 表格分页数据对象 + * + * @author muyu + */ + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TableDataInfo implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 总记录数 + */ + private long total; + + /** + * 列表数据 + */ + private List rows; + + /** + * 消息状态码 + */ + private int code; + + /** + * 消息内容 + */ + private String msg; + +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/page/TableSupport.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/page/TableSupport.java new file mode 100644 index 0000000..ce0328d --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/web/page/TableSupport.java @@ -0,0 +1,53 @@ +package com.muyu.common.core.web.page; + +import com.muyu.common.core.text.Convert; +import com.muyu.common.core.utils.ServletUtils; + +/** + * 表格数据处理 + * + * @author muyu + */ +public class TableSupport { + /** + * 当前记录起始索引 + */ + public static final String PAGE_NUM = "pageNum"; + + /** + * 每页显示记录数 + */ + public static final String PAGE_SIZE = "pageSize"; + + /** + * 排序列 + */ + public static final String ORDER_BY_COLUMN = "orderByColumn"; + + /** + * 排序的方向 "desc" 或者 "asc". + */ + public static final String IS_ASC = "isAsc"; + + /** + * 分页参数合理化 + */ + public static final String REASONABLE = "reasonable"; + + /** + * 封装分页对象 + */ + public static PageDomain getPageDomain () { + PageDomain pageDomain = new PageDomain(); + pageDomain.setPageNum(Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1)); + pageDomain.setPageSize(Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10)); + pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN)); + pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC)); + pageDomain.setReasonable(ServletUtils.getParameterToBool(REASONABLE)); + return pageDomain; + } + + public static PageDomain buildPageRequest () { + return getPageDomain(); + } +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/xss/Xss.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/xss/Xss.java new file mode 100644 index 0000000..fa31755 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/xss/Xss.java @@ -0,0 +1,27 @@ +package com.muyu.common.core.xss; + +import jakarta.validation.Constraint; +import jakarta.validation.Payload; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 自定义xss校验注解 + * + * @author muyu + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(value = {ElementType.METHOD, ElementType.FIELD, ElementType.CONSTRUCTOR, ElementType.PARAMETER}) +@Constraint(validatedBy = {XssValidator.class}) +public @interface Xss { + String message () + + default "不允许任何脚本运行"; + + Class[] groups () default {}; + + Class[] payload () default {}; +} diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/xss/XssValidator.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/xss/XssValidator.java new file mode 100644 index 0000000..3a03eab --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/xss/XssValidator.java @@ -0,0 +1,31 @@ +package com.muyu.common.core.xss; + +import com.muyu.common.core.utils.StringUtils; +import jakarta.validation.ConstraintValidator; +import jakarta.validation.ConstraintValidatorContext; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * 自定义xss校验注解实现 + * + * @author muyu + */ +public class XssValidator implements ConstraintValidator { + private static final String HTML_PATTERN = "<(\\S*?)[^>]*>.*?|<.*? />"; + + public static boolean containsHtml (String value) { + Pattern pattern = Pattern.compile(HTML_PATTERN); + Matcher matcher = pattern.matcher(value); + return matcher.matches(); + } + + @Override + public boolean isValid (String value, ConstraintValidatorContext constraintValidatorContext) { + if (StringUtils.isBlank(value)) { + return true; + } + return !containsHtml(value); + } +} diff --git a/cloud-common/cloud-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..17f73ec --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,2 @@ +com.muyu.common.core.utils.SpringUtils +com.muyu.common.core.feign.FeginConfig diff --git a/cloud-common/cloud-common-datascope/pom.xml b/cloud-common/cloud-common-datascope/pom.xml new file mode 100644 index 0000000..a7681bb --- /dev/null +++ b/cloud-common/cloud-common-datascope/pom.xml @@ -0,0 +1,27 @@ + + + + com.muyu + cloud-common + 3.6.3 + + 4.0.0 + + cloud-common-datascope + + + cloud-common-datascope权限范围 + + + + + + + com.muyu + cloud-common-security + + + + diff --git a/cloud-common/cloud-common-datascope/src/main/java/com/muyu/common/datascope/annotation/DataScope.java b/cloud-common/cloud-common-datascope/src/main/java/com/muyu/common/datascope/annotation/DataScope.java new file mode 100644 index 0000000..498f06b --- /dev/null +++ b/cloud-common/cloud-common-datascope/src/main/java/com/muyu/common/datascope/annotation/DataScope.java @@ -0,0 +1,28 @@ +package com.muyu.common.datascope.annotation; + +import java.lang.annotation.*; + +/** + * 数据权限过滤注解 + * + * @author muyu + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface DataScope { + /** + * 部门表的别名 + */ + public String deptAlias () default ""; + + /** + * 用户表的别名 + */ + public String userAlias () default ""; + + /** + * 权限字符(用于多个角色匹配符合要求的权限)默认根据权限注解@RequiresPermissions获取,多个权限用逗号分隔开来 + */ + public String permission () default ""; +} diff --git a/cloud-common/cloud-common-datascope/src/main/java/com/muyu/common/datascope/aspect/DataScopeAspect.java b/cloud-common/cloud-common-datascope/src/main/java/com/muyu/common/datascope/aspect/DataScopeAspect.java new file mode 100644 index 0000000..3d66b0d --- /dev/null +++ b/cloud-common/cloud-common-datascope/src/main/java/com/muyu/common/datascope/aspect/DataScopeAspect.java @@ -0,0 +1,149 @@ +package com.muyu.common.datascope.aspect; + +import com.muyu.common.core.context.SecurityContextHolder; +import com.muyu.common.core.text.Convert; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.common.datascope.annotation.DataScope; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.SysRole; +import com.muyu.common.system.domain.SysUser; +import com.muyu.common.system.domain.LoginUser; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * 数据过滤处理 + * + * @author muyu + */ +@Aspect +@Component +public class DataScopeAspect { + /** + * 全部数据权限 + */ + public static final String DATA_SCOPE_ALL = "1"; + + /** + * 自定数据权限 + */ + public static final String DATA_SCOPE_CUSTOM = "2"; + + /** + * 部门数据权限 + */ + public static final String DATA_SCOPE_DEPT = "3"; + + /** + * 部门及以下数据权限 + */ + public static final String DATA_SCOPE_DEPT_AND_CHILD = "4"; + + /** + * 仅本人数据权限 + */ + public static final String DATA_SCOPE_SELF = "5"; + + /** + * 数据权限过滤关键字 + */ + public static final String DATA_SCOPE = "dataScope"; + + /** + * 数据范围过滤 + * + * @param joinPoint 切点 + * @param user 用户 + * @param deptAlias 部门别名 + * @param userAlias 用户别名 + * @param permission 权限字符 + */ + public static void dataScopeFilter (JoinPoint joinPoint, SysUser user, String deptAlias, String userAlias, String permission) { + StringBuilder sqlString = new StringBuilder(); + List conditions = new ArrayList(); + + for (SysRole role : user.getRoles()) { + String dataScope = role.getDataScope(); + if (!DATA_SCOPE_CUSTOM.equals(dataScope) && conditions.contains(dataScope)) { + continue; + } + if (StringUtils.isNotEmpty(permission) && StringUtils.isNotEmpty(role.getPermissions()) + && !StringUtils.containsAny(role.getPermissions(), Convert.toStrArray(permission))) { + continue; + } + if (DATA_SCOPE_ALL.equals(dataScope)) { + sqlString = new StringBuilder(); + conditions.add(dataScope); + break; + } else if (DATA_SCOPE_CUSTOM.equals(dataScope)) { + sqlString.append(StringUtils.format( + " OR {}.dept_id IN ( SELECT dept_id FROM sys_role_dept WHERE role_id = {} ) ", deptAlias, + role.getRoleId())); + } else if (DATA_SCOPE_DEPT.equals(dataScope)) { + sqlString.append(StringUtils.format(" OR {}.dept_id = {} ", deptAlias, user.getDeptId())); + } else if (DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope)) { + sqlString.append(StringUtils.format( + " OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or find_in_set( {} , ancestors ) )", + deptAlias, user.getDeptId(), user.getDeptId())); + } else if (DATA_SCOPE_SELF.equals(dataScope)) { + if (StringUtils.isNotBlank(userAlias)) { + sqlString.append(StringUtils.format(" OR {}.user_id = {} ", userAlias, user.getUserId())); + } else { + // 数据权限为仅本人且没有userAlias别名不查询任何数据 + sqlString.append(StringUtils.format(" OR {}.dept_id = 0 ", deptAlias)); + } + } + conditions.add(dataScope); + } + + // 多角色情况下,所有角色都不包含传递过来的权限字符,这个时候sqlString也会为空,所以要限制一下,不查询任何数据 + if (StringUtils.isEmpty(conditions)) { + sqlString.append(StringUtils.format(" OR {}.dept_id = 0 ", deptAlias)); + } + + if (StringUtils.isNotBlank(sqlString.toString())) { + Object params = joinPoint.getArgs()[0]; + if (StringUtils.isNotNull(params) && params instanceof BaseEntity) { + BaseEntity baseEntity = (BaseEntity) params; + baseEntity.getParams().put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")"); + } + } + } + + @Before("@annotation(controllerDataScope)") + public void doBefore (JoinPoint point, DataScope controllerDataScope) throws Throwable { + clearDataScope(point); + handleDataScope(point, controllerDataScope); + } + + protected void handleDataScope (final JoinPoint joinPoint, DataScope controllerDataScope) { + // 获取当前的用户 + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (StringUtils.isNotNull(loginUser)) { + SysUser currentUser = loginUser.getSysUser(); + // 如果是超级管理员,则不过滤数据 + if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin()) { + String permission = StringUtils.defaultIfEmpty(controllerDataScope.permission(), SecurityContextHolder.getPermission()); + dataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(), + controllerDataScope.userAlias(), permission); + } + } + } + + /** + * 拼接权限sql前先清空params.dataScope参数防止注入 + */ + private void clearDataScope (final JoinPoint joinPoint) { + Object params = joinPoint.getArgs()[0]; + if (StringUtils.isNotNull(params) && params instanceof BaseEntity) { + BaseEntity baseEntity = (BaseEntity) params; + baseEntity.getParams().put(DATA_SCOPE, ""); + } + } +} diff --git a/cloud-common/cloud-common-datascope/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-datascope/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..8f4967b --- /dev/null +++ b/cloud-common/cloud-common-datascope/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.muyu.common.datascope.aspect.DataScopeAspect diff --git a/cloud-common/cloud-common-datasource/pom.xml b/cloud-common/cloud-common-datasource/pom.xml new file mode 100644 index 0000000..d1639d5 --- /dev/null +++ b/cloud-common/cloud-common-datasource/pom.xml @@ -0,0 +1,35 @@ + + + + com.muyu + cloud-common + 3.6.3 + + 4.0.0 + + cloud-common-datasource + + + cloud-common-datasource多数据源 + + + + + + + com.alibaba + druid-spring-boot-3-starter + ${druid.version} + + + + + com.baomidou + dynamic-datasource-spring-boot3-starter + ${dynamic-ds.version} + + + + diff --git a/cloud-common/cloud-common-datasource/src/main/java/com/muyu/common/datasource/annotation/Master.java b/cloud-common/cloud-common-datasource/src/main/java/com/muyu/common/datasource/annotation/Master.java new file mode 100644 index 0000000..d9aae00 --- /dev/null +++ b/cloud-common/cloud-common-datasource/src/main/java/com/muyu/common/datasource/annotation/Master.java @@ -0,0 +1,18 @@ +package com.muyu.common.datasource.annotation; + +import com.baomidou.dynamic.datasource.annotation.DS; + +import java.lang.annotation.*; + +/** + * 主库数据源 + * + * @author muyu + */ +@Target({ElementType.TYPE, ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@DS("master") +public @interface Master { + +} diff --git a/cloud-common/cloud-common-datasource/src/main/java/com/muyu/common/datasource/annotation/Slave.java b/cloud-common/cloud-common-datasource/src/main/java/com/muyu/common/datasource/annotation/Slave.java new file mode 100644 index 0000000..9663cd4 --- /dev/null +++ b/cloud-common/cloud-common-datasource/src/main/java/com/muyu/common/datasource/annotation/Slave.java @@ -0,0 +1,18 @@ +package com.muyu.common.datasource.annotation; + +import com.baomidou.dynamic.datasource.annotation.DS; + +import java.lang.annotation.*; + +/** + * 从库数据源 + * + * @author muyu + */ +@Target({ElementType.TYPE, ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@DS("slave") +public @interface Slave { + +} diff --git a/cloud-common/cloud-common-kafka/pom.xml b/cloud-common/cloud-common-kafka/pom.xml new file mode 100644 index 0000000..491191c --- /dev/null +++ b/cloud-common/cloud-common-kafka/pom.xml @@ -0,0 +1,36 @@ + + + 4.0.0 + + com.muyu + cloud-common + 3.6.3 + + + cloud-common-kafka + + + cloud-common-kafka消息队列 + + + + 17 + 17 + UTF-8 + + + + + org.apache.kafka + kafka-clients + 3.0.0 + + + com.muyu + cloud-common-core + + + + diff --git a/cloud-common/cloud-common-kafka/src/main/java/com/muyu/common/kafka/config/KafkaConsumerConfig.java b/cloud-common/cloud-common-kafka/src/main/java/com/muyu/common/kafka/config/KafkaConsumerConfig.java new file mode 100644 index 0000000..6ec4f65 --- /dev/null +++ b/cloud-common/cloud-common-kafka/src/main/java/com/muyu/common/kafka/config/KafkaConsumerConfig.java @@ -0,0 +1,94 @@ +package com.muyu.common.kafka.config; + +import com.muyu.common.core.constant.KafkaConstants; +import org.apache.kafka.clients.consumer.KafkaConsumer; +import org.apache.kafka.common.serialization.StringDeserializer; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.HashMap; + +/** + * kafka消费者配置信息 + * @Author:杨鹏 + * @Package:com.muyu.common.kafka.config + * @Project:car-cloud-server + * @name:KafkaConsumerConfig + * @Date:2024/9/28 17:26 + */ +@Configuration +public class KafkaConsumerConfig { + + /** + * 服务端id+端口号 + */ + @Value("@{spring.kafka.consumer.bootstrap-servers}") + private String bootstrapServers; + + /** + * 偏移量 + */ +// @Value("{spring.kafka.consumer.enable-auto-commit}") +// public boolean enableAutoCommit; + + /** + * 自动提交时间间隔 + */ +// @Value("{spring.kafka.consumer.auto-commit-interval}") +// private Integer autoCommitInterval; + + /** + * 偏移量配置 + */ + @Value("${spring.kafka.consumer.auto-offset-reset}") + private String autoOffsetReset; + + /** + * 堵塞最大时间 + */ +// @Value("{spring.kafka.consumer.fetch-max-wait}") +// private Integer fetchMaxWait; + + /** + * 请求最小字节 + */ +// @Value("${spring.kafka.consumer.fetch-min-size}") +// private Integer fetchMinSize; + + /** + * 心跳间隔时间 + */ +// @Value("${spring.kafka.consumer.heartbeat-interval}") +// private Integer heartbeatInterval; + + /** + * 最大记录条数 + */ +// @Value("${spring.kafka.consumer.max-poll-records") +// private Integer maxPollRecords; + + /** + * 消费组 + */ + @Value("${spring.kafka.consumer.group-id}") + private String groupId; + + @Bean + public KafkaConsumer kafkaConsumer() { + HashMap configs = new HashMap<>(); + configs.put(KafkaConstants.BOOTSTRAP_SERVERS, "111.231.50.146:9092"); + configs.put(KafkaConstants.ENABLE_AUTO_COMMIT, false); + configs.put(KafkaConstants.AUTO_COMMIT_INTERVAL, 5000); + configs.put(KafkaConstants.AUTO_OFFSET_RESET, autoOffsetReset); + configs.put(KafkaConstants.FETCH_MAX_WAIT, 500); + configs.put(KafkaConstants.FETCH_MIN_SIZE, 1); + configs.put(KafkaConstants.HEARTBEAT_INTERVAL, 3000); + configs.put(KafkaConstants.MAX_POLL_RECORDS, 500); + configs.put(KafkaConstants.GROUP_ID, groupId); + StringDeserializer keyDeserializer = new StringDeserializer(); + StringDeserializer valueDeserializer = new StringDeserializer(); + KafkaConsumer kafkaConsumer = new KafkaConsumer<>(configs, keyDeserializer, valueDeserializer); + return kafkaConsumer; + } +} diff --git a/cloud-common/cloud-common-kafka/src/main/java/com/muyu/common/kafka/config/KafkaProducerConfig.java b/cloud-common/cloud-common-kafka/src/main/java/com/muyu/common/kafka/config/KafkaProducerConfig.java new file mode 100644 index 0000000..8999712 --- /dev/null +++ b/cloud-common/cloud-common-kafka/src/main/java/com/muyu/common/kafka/config/KafkaProducerConfig.java @@ -0,0 +1,67 @@ +package com.muyu.common.kafka.config; + +import com.muyu.common.core.constant.KafkaConstants; +import org.apache.kafka.clients.producer.KafkaProducer; +import org.apache.kafka.common.serialization.StringSerializer; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.HashMap; + +/** + * kafka生产者配置信息 + * @Author:杨鹏 + * @Package:com.muyu.common.kafka.config + * @Project:car-cloud-server + * @name:KafkaProducerConfig + * @Date:2024/9/28 17:27 + */ +@Configuration +public class KafkaProducerConfig { + + /** + * kafka地址 + */ + @Value("${spring.kafka.producer.bootstrap-servers}") + private String bootstrapServers; + + /** + * 重试次数 + */ + @Value("${spring.kafka.producer.retries}") + private Integer retries; + + /** + * 默认批量大小 + */ + @Value("${spring.kafka.producer.batch-size}") + private Integer batchSize; + + /** + * 总内存字节数 + */ + @Value("${spring.kafka.producer.buffer-memory}") + private Integer bufferMemory; + + /** + * 偏移量 + */ + @Value("${spring.kafka.producer.acks}") + private String acks; + + @Bean + public KafkaProducer kafkaProducer(){ + HashMap configs = new HashMap<>(); + configs.put(KafkaConstants.BOOTSTRAP_SERVERS,"111.231.50.146:9092"); + configs.put(KafkaConstants.RETRIES,retries); + configs.put(KafkaConstants.BATCH_SIZE,batchSize); + configs.put(KafkaConstants.BUFFER_MEMORY,bufferMemory); + configs.put(KafkaConstants.ACKS,acks); + StringSerializer keySerializer = new StringSerializer(); + StringSerializer valueSerializer = new StringSerializer(); + KafkaProducer kafkaProducer = new KafkaProducer<>(configs, keySerializer, valueSerializer); + return kafkaProducer; + } + +} diff --git a/cloud-common/cloud-common-kafka/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-kafka/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..e87908e --- /dev/null +++ b/cloud-common/cloud-common-kafka/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,2 @@ +com.muyu.common.kafka.config.KafkaConsumerConfig +com.muyu.common.kafka.config.KafkaProducerConfig diff --git a/cloud-common/cloud-common-log/pom.xml b/cloud-common/cloud-common-log/pom.xml new file mode 100644 index 0000000..27ab5a5 --- /dev/null +++ b/cloud-common/cloud-common-log/pom.xml @@ -0,0 +1,27 @@ + + + + com.muyu + cloud-common + 3.6.3 + + 4.0.0 + + cloud-common-log + + + cloud-common-log日志记录 + + + + + + + com.muyu + cloud-common-security + + + + diff --git a/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/annotation/Log.java b/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/annotation/Log.java new file mode 100644 index 0000000..ac6394e --- /dev/null +++ b/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/annotation/Log.java @@ -0,0 +1,46 @@ +package com.muyu.common.log.annotation; + +import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.log.enums.OperatorType; + +import java.lang.annotation.*; + +/** + * 自定义操作日志记录注解 + * + * @author muyu + */ +@Target({ElementType.PARAMETER, ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface Log { + /** + * 模块 + */ + public String title () default ""; + + /** + * 功能 + */ + public BusinessType businessType () default BusinessType.OTHER; + + /** + * 操作人类别 + */ + public OperatorType operatorType () default OperatorType.MANAGE; + + /** + * 是否保存请求的参数 + */ + public boolean isSaveRequestData () default true; + + /** + * 是否保存响应的参数 + */ + public boolean isSaveResponseData () default true; + + /** + * 排除指定的请求参数 + */ + public String[] excludeParamNames () default {}; +} diff --git a/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/aspect/LogAspect.java b/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/aspect/LogAspect.java new file mode 100644 index 0000000..f82ffab --- /dev/null +++ b/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/aspect/LogAspect.java @@ -0,0 +1,220 @@ +package com.muyu.common.log.aspect; + +import com.alibaba.fastjson2.JSON; +import com.muyu.common.core.utils.ServletUtils; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.utils.ip.IpUtils; +import com.muyu.common.log.annotation.Log; +import com.muyu.common.log.enums.BusinessStatus; +import com.muyu.common.log.filter.PropertyPreExcludeFilter; +import com.muyu.common.log.service.AsyncLogService; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.SysOperLog; +import org.apache.commons.lang3.ArrayUtils; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.AfterReturning; +import org.aspectj.lang.annotation.AfterThrowing; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.NamedThreadLocal; +import org.springframework.http.HttpMethod; +import org.springframework.stereotype.Component; +import org.springframework.validation.BindingResult; +import org.springframework.web.multipart.MultipartFile; + +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import java.util.Collection; +import java.util.Map; + +/** + * 操作日志记录处理 + * + * @author muyu + */ +@Aspect +@Component +public class LogAspect { + /** + * 排除敏感属性字段 + */ + public static final String[] EXCLUDE_PROPERTIES = {"password", "oldPassword", "newPassword", "confirmPassword"}; + private static final Logger log = LoggerFactory.getLogger(LogAspect.class); + /** + * 计算操作消耗时间 + */ + private static final ThreadLocal TIME_THREADLOCAL = new NamedThreadLocal("Cost Time"); + + @Autowired + private AsyncLogService asyncLogService; + + /** + * 处理请求前执行 + */ + @Before(value = "@annotation(controllerLog)") + public void boBefore (JoinPoint joinPoint, Log controllerLog) { + TIME_THREADLOCAL.set(System.currentTimeMillis()); + } + + /** + * 处理完请求后执行 + * + * @param joinPoint 切点 + */ + @AfterReturning(pointcut = "@annotation(controllerLog)", returning = "jsonResult") + public void doAfterReturning (JoinPoint joinPoint, Log controllerLog, Object jsonResult) { + handleLog(joinPoint, controllerLog, null, jsonResult); + } + + /** + * 拦截异常操作 + * + * @param joinPoint 切点 + * @param e 异常 + */ + @AfterThrowing(value = "@annotation(controllerLog)", throwing = "e") + public void doAfterThrowing (JoinPoint joinPoint, Log controllerLog, Exception e) { + handleLog(joinPoint, controllerLog, e, null); + } + + protected void handleLog (final JoinPoint joinPoint, Log controllerLog, final Exception e, Object jsonResult) { + try { + // *========数据库日志=========*// + SysOperLog operLog = new SysOperLog(); + operLog.setStatus(BusinessStatus.SUCCESS.ordinal()); + // 请求的地址 + String ip = IpUtils.getIpAddr(); + operLog.setOperIp(ip); + operLog.setOperUrl(StringUtils.substring(ServletUtils.getRequest().getRequestURI(), 0, 255)); + String username = SecurityUtils.getUsername(); + if (StringUtils.isNotBlank(username)) { + operLog.setOperName(username); + } + + if (e != null) { + operLog.setStatus(BusinessStatus.FAIL.ordinal()); + operLog.setErrorMsg(StringUtils.substring(e.getMessage(), 0, 2000)); + } + // 设置方法名称 + String className = joinPoint.getTarget().getClass().getName(); + String methodName = joinPoint.getSignature().getName(); + operLog.setMethod(className + "." + methodName + "()"); + // 设置请求方式 + operLog.setRequestMethod(ServletUtils.getRequest().getMethod()); + // 处理设置注解上的参数 + getControllerMethodDescription(joinPoint, controllerLog, operLog, jsonResult); + // 设置消耗时间 + operLog.setCostTime(System.currentTimeMillis() - TIME_THREADLOCAL.get()); + // 保存数据库 + asyncLogService.saveSysLog(operLog); + } catch (Exception exp) { + // 记录本地异常日志 + log.error("异常信息:{}", exp.getMessage()); + exp.printStackTrace(); + } finally { + TIME_THREADLOCAL.remove(); + } + } + + /** + * 获取注解中对方法的描述信息 用于Controller层注解 + * + * @param log 日志 + * @param operLog 操作日志 + * + * @throws Exception + */ + public void getControllerMethodDescription (JoinPoint joinPoint, Log log, SysOperLog operLog, Object jsonResult) throws Exception { + // 设置action动作 + operLog.setBusinessType(log.businessType().ordinal()); + // 设置标题 + operLog.setTitle(log.title()); + // 设置操作人类别 + operLog.setOperatorType(log.operatorType().ordinal()); + // 是否需要保存request,参数和值 + if (log.isSaveRequestData()) { + // 获取参数的信息,传入到数据库中。 + setRequestValue(joinPoint, operLog, log.excludeParamNames()); + } + // 是否需要保存response,参数和值 + if (log.isSaveResponseData() && StringUtils.isNotNull(jsonResult)) { + operLog.setJsonResult(StringUtils.substring(JSON.toJSONString(jsonResult), 0, 2000)); + } + } + + /** + * 获取请求的参数,放到log中 + * + * @param operLog 操作日志 + * + * @throws Exception 异常 + */ + private void setRequestValue (JoinPoint joinPoint, SysOperLog operLog, String[] excludeParamNames) throws Exception { + String requestMethod = operLog.getRequestMethod(); + Map paramsMap = ServletUtils.getParamMap(ServletUtils.getRequest()); + if (StringUtils.isEmpty(paramsMap) + && (HttpMethod.PUT.name().equals(requestMethod) || HttpMethod.POST.name().equals(requestMethod))) { + String params = argsArrayToString(joinPoint.getArgs(), excludeParamNames); + operLog.setOperParam(StringUtils.substring(params, 0, 2000)); + } else { + operLog.setOperParam(StringUtils.substring(JSON.toJSONString(paramsMap, excludePropertyPreFilter(excludeParamNames)), 0, 2000)); + } + } + + /** + * 参数拼装 + */ + private String argsArrayToString (Object[] paramsArray, String[] excludeParamNames) { + String params = ""; + if (paramsArray != null && paramsArray.length > 0) { + for (Object o : paramsArray) { + if (StringUtils.isNotNull(o) && !isFilterObject(o)) { + try { + String jsonObj = JSON.toJSONString(o, excludePropertyPreFilter(excludeParamNames)); + params += jsonObj.toString() + " "; + } catch (Exception e) { + } + } + } + } + return params.trim(); + } + + /** + * 忽略敏感属性 + */ + public PropertyPreExcludeFilter excludePropertyPreFilter (String[] excludeParamNames) { + return new PropertyPreExcludeFilter().addExcludes(ArrayUtils.addAll(EXCLUDE_PROPERTIES, excludeParamNames)); + } + + /** + * 判断是否需要过滤的对象。 + * + * @param o 对象信息。 + * + * @return 如果是需要过滤的对象,则返回true;否则返回false。 + */ + @SuppressWarnings("rawtypes") + public boolean isFilterObject (final Object o) { + Class clazz = o.getClass(); + if (clazz.isArray()) { + return clazz.getComponentType().isAssignableFrom(MultipartFile.class); + } else if (Collection.class.isAssignableFrom(clazz)) { + Collection collection = (Collection) o; + for (Object value : collection) { + return value instanceof MultipartFile; + } + } else if (Map.class.isAssignableFrom(clazz)) { + Map map = (Map) o; + for (Object value : map.entrySet()) { + Map.Entry entry = (Map.Entry) value; + return entry.getValue() instanceof MultipartFile; + } + } + return o instanceof MultipartFile || o instanceof HttpServletRequest || o instanceof HttpServletResponse + || o instanceof BindingResult; + } +} diff --git a/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/enums/BusinessStatus.java b/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/enums/BusinessStatus.java new file mode 100644 index 0000000..45e9713 --- /dev/null +++ b/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/enums/BusinessStatus.java @@ -0,0 +1,18 @@ +package com.muyu.common.log.enums; + +/** + * 操作状态 + * + * @author muyu + */ +public enum BusinessStatus { + /** + * 成功 + */ + SUCCESS, + + /** + * 失败 + */ + FAIL, +} diff --git a/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/enums/BusinessType.java b/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/enums/BusinessType.java new file mode 100644 index 0000000..2e928c7 --- /dev/null +++ b/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/enums/BusinessType.java @@ -0,0 +1,58 @@ +package com.muyu.common.log.enums; + +/** + * 业务操作类型 + * + * @author muyu + */ +public enum BusinessType { + /** + * 其它 + */ + OTHER, + + /** + * 新增 + */ + INSERT, + + /** + * 修改 + */ + UPDATE, + + /** + * 删除 + */ + DELETE, + + /** + * 授权 + */ + GRANT, + + /** + * 导出 + */ + EXPORT, + + /** + * 导入 + */ + IMPORT, + + /** + * 强退 + */ + FORCE, + + /** + * 生成代码 + */ + GENCODE, + + /** + * 清空数据 + */ + CLEAN, +} diff --git a/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/enums/OperatorType.java b/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/enums/OperatorType.java new file mode 100644 index 0000000..645777f --- /dev/null +++ b/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/enums/OperatorType.java @@ -0,0 +1,23 @@ +package com.muyu.common.log.enums; + +/** + * 操作人类别 + * + * @author muyu + */ +public enum OperatorType { + /** + * 其它 + */ + OTHER, + + /** + * 后台用户 + */ + MANAGE, + + /** + * 手机端用户 + */ + MOBILE +} diff --git a/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/filter/PropertyPreExcludeFilter.java b/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/filter/PropertyPreExcludeFilter.java new file mode 100644 index 0000000..2245256 --- /dev/null +++ b/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/filter/PropertyPreExcludeFilter.java @@ -0,0 +1,20 @@ +package com.muyu.common.log.filter; + +import com.alibaba.fastjson2.filter.SimplePropertyPreFilter; + +/** + * 排除JSON敏感属性 + * + * @author muyu + */ +public class PropertyPreExcludeFilter extends SimplePropertyPreFilter { + public PropertyPreExcludeFilter () { + } + + public PropertyPreExcludeFilter addExcludes (String... filters) { + for (int i = 0 ; i < filters.length ; i++) { + this.getExcludes().add(filters[i]); + } + return this; + } +} diff --git a/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/service/AsyncLogService.java b/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/service/AsyncLogService.java new file mode 100644 index 0000000..46e1cdf --- /dev/null +++ b/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/service/AsyncLogService.java @@ -0,0 +1,27 @@ +package com.muyu.common.log.service; + +import com.muyu.common.core.constant.SecurityConstants; +import com.muyu.common.system.remote.RemoteLogService; +import com.muyu.common.system.domain.SysOperLog; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +/** + * 异步调用日志服务 + * + * @author muyu + */ +@Service +public class AsyncLogService { + @Autowired + private RemoteLogService remoteLogService; + + /** + * 保存系统日志记录 + */ + @Async + public void saveSysLog (SysOperLog sysOperLog) throws Exception { + remoteLogService.saveLog(sysOperLog, SecurityConstants.INNER); + } +} diff --git a/cloud-common/cloud-common-log/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-log/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..e46e773 --- /dev/null +++ b/cloud-common/cloud-common-log/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,2 @@ +com.muyu.common.log.service.AsyncLogService +com.muyu.common.log.aspect.LogAspect diff --git a/cloud-common/cloud-common-rabbit/pom.xml b/cloud-common/cloud-common-rabbit/pom.xml new file mode 100644 index 0000000..fa6d383 --- /dev/null +++ b/cloud-common/cloud-common-rabbit/pom.xml @@ -0,0 +1,35 @@ + + + 4.0.0 + + com.muyu + cloud-common + 3.6.3 + + + cloud-common-rabbit + + + 17 + 17 + UTF-8 + + + + + + + org.springframework.boot + spring-boot-starter-amqp + + + + + com.muyu + cloud-common-core + + + + \ No newline at end of file diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/RabbitListenerConfigurer.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/RabbitListenerConfigurer.java new file mode 100644 index 0000000..51cb359 --- /dev/null +++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/RabbitListenerConfigurer.java @@ -0,0 +1,41 @@ +package com.muyu.common.rabbit; + +import org.springframework.amqp.rabbit.connection.ConnectionFactory; +import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistrar; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.messaging.converter.MappingJackson2MessageConverter; +import org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory; + +@Configuration +public class RabbitListenerConfigurer implements org.springframework.amqp.rabbit.annotation.RabbitListenerConfigurer { + + static { + System.setProperty("spring.amqp.deserialization.trust.all", "true"); + } + + //以下配置RabbitMQ消息服务 + @Autowired + public ConnectionFactory connectionFactory; + + + /** + * 处理器方法工厂 + * @return + */ + @Bean + public DefaultMessageHandlerMethodFactory handlerMethodFactory() { + DefaultMessageHandlerMethodFactory factory = new DefaultMessageHandlerMethodFactory(); + // 这里的转换器设置实现了 通过 @Payload 注解 自动反序列化message body + factory.setMessageConverter(new MappingJackson2MessageConverter()); + return factory; + } + + @Override + public void configureRabbitListeners(RabbitListenerEndpointRegistrar rabbitListenerEndpointRegistrar) { + rabbitListenerEndpointRegistrar.setMessageHandlerMethodFactory(handlerMethodFactory()); + } + +} + diff --git a/cloud-common/cloud-common-rabbit/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-rabbit/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..189ea2c --- /dev/null +++ b/cloud-common/cloud-common-rabbit/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.muyu.common.rabbit.RabbitListenerConfigurer \ No newline at end of file diff --git a/cloud-common/cloud-common-redis/pom.xml b/cloud-common/cloud-common-redis/pom.xml new file mode 100644 index 0000000..4a2d5ea --- /dev/null +++ b/cloud-common/cloud-common-redis/pom.xml @@ -0,0 +1,33 @@ + + + + com.muyu + cloud-common + 3.6.3 + + 4.0.0 + + cloud-common-redis + + + cloud-common-redis缓存服务 + + + + + + + org.springframework.boot + spring-boot-starter-data-redis + + + + + com.muyu + cloud-common-core + + + + diff --git a/cloud-common/cloud-common-redis/src/main/java/com/muyu/common/redis/configure/FastJson2JsonRedisSerializer.java b/cloud-common/cloud-common-redis/src/main/java/com/muyu/common/redis/configure/FastJson2JsonRedisSerializer.java new file mode 100644 index 0000000..f575143 --- /dev/null +++ b/cloud-common/cloud-common-redis/src/main/java/com/muyu/common/redis/configure/FastJson2JsonRedisSerializer.java @@ -0,0 +1,49 @@ +package com.muyu.common.redis.configure; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONReader; +import com.alibaba.fastjson2.JSONWriter; +import com.alibaba.fastjson2.filter.Filter; +import com.muyu.common.core.constant.Constants; +import org.springframework.data.redis.serializer.RedisSerializer; +import org.springframework.data.redis.serializer.SerializationException; + +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; + +/** + * Redis使用FastJson序列化 + * + * @author muyu + */ +public class FastJson2JsonRedisSerializer implements RedisSerializer { + + public static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8; + + static final Filter AUTO_TYPE_FILTER = JSONReader.autoTypeFilter(Constants.JSON_WHITELIST_STR); + + private Class clazz; + + public FastJson2JsonRedisSerializer (Class clazz) { + super(); + this.clazz = clazz; + } + + @Override + public byte[] serialize (T t) throws SerializationException { + if (t == null) { + return new byte[0]; + } + return JSON.toJSONString(t, JSONWriter.Feature.WriteClassName).getBytes(DEFAULT_CHARSET); + } + + @Override + public T deserialize (byte[] bytes) throws SerializationException { + if (bytes == null || bytes.length <= 0) { + return null; + } + String str = new String(bytes, DEFAULT_CHARSET); + + return JSON.parseObject(str, clazz, AUTO_TYPE_FILTER); + } +} diff --git a/cloud-common/cloud-common-redis/src/main/java/com/muyu/common/redis/configure/RedisConfig.java b/cloud-common/cloud-common-redis/src/main/java/com/muyu/common/redis/configure/RedisConfig.java new file mode 100644 index 0000000..ba8760e --- /dev/null +++ b/cloud-common/cloud-common-redis/src/main/java/com/muyu/common/redis/configure/RedisConfig.java @@ -0,0 +1,41 @@ +package com.muyu.common.redis.configure; + +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; +import org.springframework.cache.annotation.CachingConfigurerSupport; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +/** + * redis配置 + * + * @author muyu + */ +@Configuration +@EnableCaching +@AutoConfigureBefore(RedisAutoConfiguration.class) +public class RedisConfig extends CachingConfigurerSupport { + @Bean + @SuppressWarnings(value = {"unchecked", "rawtypes"}) + public RedisTemplate redisTemplate (RedisConnectionFactory connectionFactory) { + RedisTemplate template = new RedisTemplate<>(); + template.setConnectionFactory(connectionFactory); + + FastJson2JsonRedisSerializer serializer = new FastJson2JsonRedisSerializer(Object.class); + + // 使用StringRedisSerializer来序列化和反序列化redis的key值 + template.setKeySerializer(new StringRedisSerializer()); + template.setValueSerializer(serializer); + + // Hash的key也采用StringRedisSerializer的序列化方式 + template.setHashKeySerializer(new StringRedisSerializer()); + template.setHashValueSerializer(serializer); + + template.afterPropertiesSet(); + return template; + } +} diff --git a/cloud-common/cloud-common-redis/src/main/java/com/muyu/common/redis/service/RedisService.java b/cloud-common/cloud-common-redis/src/main/java/com/muyu/common/redis/service/RedisService.java new file mode 100644 index 0000000..db90c1e --- /dev/null +++ b/cloud-common/cloud-common-redis/src/main/java/com/muyu/common/redis/service/RedisService.java @@ -0,0 +1,258 @@ +package com.muyu.common.redis.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.BoundSetOperations; +import org.springframework.data.redis.core.HashOperations; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.ValueOperations; +import org.springframework.stereotype.Component; + +import java.util.*; +import java.util.concurrent.TimeUnit; + +/** + * spring redis 工具类 + * + * @author muyu + **/ +@SuppressWarnings(value = {"unchecked", "rawtypes"}) +@Component +public class RedisService { + @Autowired + public RedisTemplate redisTemplate; + + /** + * 缓存基本的对象,Integer、String、实体类等 + * + * @param key 缓存的键值 + * @param value 缓存的值 + */ + public void setCacheObject (final String key, final T value) { + redisTemplate.opsForValue().set(key, value); + } + + /** + * 缓存基本的对象,Integer、String、实体类等 + * + * @param key 缓存的键值 + * @param value 缓存的值 + * @param timeout 时间 + * @param timeUnit 时间颗粒度 + */ + public void setCacheObject (final String key, final T value, final Long timeout, final TimeUnit timeUnit) { + redisTemplate.opsForValue().set(key, value, timeout, timeUnit); + } + + /** + * 设置有效时间 + * + * @param key Redis键 + * @param timeout 超时时间 + * + * @return true=设置成功;false=设置失败 + */ + public boolean expire (final String key, final long timeout) { + return expire(key, timeout, TimeUnit.SECONDS); + } + + /** + * 设置有效时间 + * + * @param key Redis键 + * @param timeout 超时时间 + * @param unit 时间单位 + * + * @return true=设置成功;false=设置失败 + */ + public boolean expire (final String key, final long timeout, final TimeUnit unit) { + return redisTemplate.expire(key, timeout, unit); + } + + /** + * 获取有效时间 + * + * @param key Redis键 + * + * @return 有效时间 + */ + public long getExpire (final String key) { + return redisTemplate.getExpire(key); + } + + /** + * 判断 key是否存在 + * + * @param key 键 + * + * @return true 存在 false不存在 + */ + public Boolean hasKey (String key) { + return redisTemplate.hasKey(key); + } + + /** + * 获得缓存的基本对象。 + * + * @param key 缓存键值 + * + * @return 缓存键值对应的数据 + */ + public T getCacheObject (final String key) { + ValueOperations operation = redisTemplate.opsForValue(); + return operation.get(key); + } + + /** + * 删除单个对象 + * + * @param key + */ + public boolean deleteObject (final String key) { + return redisTemplate.delete(key); + } + + /** + * 删除集合对象 + * + * @param collection 多个对象 + * + * @return + */ + public boolean deleteObject (final Collection collection) { + return redisTemplate.delete(collection) > 0; + } + + /** + * 缓存List数据 + * + * @param key 缓存的键值 + * @param dataList 待缓存的List数据 + * + * @return 缓存的对象 + */ + public long setCacheList (final String key, final List dataList) { + Long count = redisTemplate.opsForList().rightPushAll(key, dataList); + return count == null ? 0 : count; + } + + /** + * 获得缓存的list对象 + * + * @param key 缓存的键值 + * + * @return 缓存键值对应的数据 + */ + public List getCacheList (final String key) { + return redisTemplate.opsForList().range(key, 0, -1); + } + + /** + * 缓存Set + * + * @param key 缓存键值 + * @param dataSet 缓存的数据 + * + * @return 缓存数据的对象 + */ + public BoundSetOperations setCacheSet (final String key, final Set dataSet) { + BoundSetOperations setOperation = redisTemplate.boundSetOps(key); + Iterator it = dataSet.iterator(); + while (it.hasNext()) { + setOperation.add(it.next()); + } + return setOperation; + } + + /** + * 获得缓存的set + * + * @param key + * + * @return + */ + public Set getCacheSet (final String key) { + return redisTemplate.opsForSet().members(key); + } + + /** + * 缓存Map + * + * @param key + * @param dataMap + */ + public void setCacheMap (final String key, final Map dataMap) { + if (dataMap != null) { + redisTemplate.opsForHash().putAll(key, dataMap); + } + } + + /** + * 获得缓存的Map + * + * @param key + * + * @return + */ + public Map getCacheMap (final String key) { + return redisTemplate.opsForHash().entries(key); + } + + /** + * 往Hash中存入数据 + * + * @param key Redis键 + * @param hKey Hash键 + * @param value 值 + */ + public void setCacheMapValue (final String key, final String hKey, final T value) { + redisTemplate.opsForHash().put(key, hKey, value); + } + + /** + * 获取Hash中的数据 + * + * @param key Redis键 + * @param hKey Hash键 + * + * @return Hash中的对象 + */ + public T getCacheMapValue (final String key, final String hKey) { + HashOperations opsForHash = redisTemplate.opsForHash(); + return opsForHash.get(key, hKey); + } + + /** + * 获取多个Hash中的数据 + * + * @param key Redis键 + * @param hKeys Hash键集合 + * + * @return Hash对象集合 + */ + public List getMultiCacheMapValue (final String key, final Collection hKeys) { + return redisTemplate.opsForHash().multiGet(key, hKeys); + } + + /** + * 删除Hash中的某条数据 + * + * @param key Redis键 + * @param hKey Hash键 + * + * @return 是否成功 + */ + public boolean deleteCacheMapValue (final String key, final String hKey) { + return redisTemplate.opsForHash().delete(key, hKey) > 0; + } + + /** + * 获得缓存的基本对象列表 + * + * @param pattern 字符串前缀 + * + * @return 对象列表 + */ + public Collection keys (final String pattern) { + return redisTemplate.keys(pattern); + } +} diff --git a/cloud-common/cloud-common-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..27b030e --- /dev/null +++ b/cloud-common/cloud-common-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,2 @@ +com.muyu.common.redis.configure.RedisConfig +com.muyu.common.redis.service.RedisService diff --git a/cloud-common/cloud-common-saas/pom.xml b/cloud-common/cloud-common-saas/pom.xml new file mode 100644 index 0000000..c6f7806 --- /dev/null +++ b/cloud-common/cloud-common-saas/pom.xml @@ -0,0 +1,44 @@ + + + 4.0.0 + + com.muyu + cloud-common + 3.6.3 + + + cloud-common-saas + + + cloud-common-saas saas平台 + + + 17 + 17 + UTF-8 + + + + + + + com.muyu + cloud-common-datasource + + + + + com.muyu + cloud-common-security + + + javax.servlet + servlet-api + 2.5 + compile + + + + diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java new file mode 100644 index 0000000..c9dbd87 --- /dev/null +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java @@ -0,0 +1,109 @@ +package com.muyu.cloud.common.many.datasource; + +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.fastjson2.JSON; +import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; +import com.muyu.cloud.common.many.datasource.constents.DatasourceContent; +import com.muyu.cloud.common.many.datasource.domain.model.DataSourceInfo; +import com.muyu.cloud.common.many.datasource.factory.DruidDataSourceFactory; +import com.muyu.cloud.common.many.datasource.role.DynamicDataSource; +import com.muyu.cloud.common.saas.domain.model.EntInfo; +import com.muyu.cloud.common.saas.exception.SaaSException; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.utils.SpringUtils; +import com.muyu.common.system.domain.SysUser; +import com.muyu.common.system.remote.RemoteUserService; +import lombok.extern.log4j.Log4j2; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Author: DongZeLiang + * @date: 2024/6/3 + * @Description: 多数据源 + * @Version: 1.0 + */ +@Log4j2 +@Component +@AutoConfiguration(before = MybatisPlusAutoConfiguration.class) +public class ManyDataSource implements ApplicationRunner{ + + + private List dataSourceInfoList(){ + RemoteUserService remoteUserService = SpringUtils.getBean(RemoteUserService.class); + Result> tableDataInfoResult = remoteUserService.companyList(); + if (tableDataInfoResult==null){ + throw new SaaSException("saas远调数据源错误"); + } + List data = tableDataInfoResult.getData(); + if (tableDataInfoResult.getCode() == Result.SUCCESS && data !=null){ + List list = new ArrayList<>(); + for (SysUser row : data) { + list.add( + EntInfo.builder() + .entCode(row.getDatabaseName()) + .ip(DatasourceContent.IP) + .port(DatasourceContent.PORT) + .build() + ); + } + return list; + }else { + log.error("远调数据源错误,远调数据为:{}", JSON.toJSONString(data)); + return null; + } + } +// private List dataPrimarySourceInfoList(){ +// List list = new ArrayList<>(); +// list.add( +// EntInfo.builder() +// .entCode() +// .ip(DatasourceContent.IP) +// .port(DatasourceContent.PORT) +// .build() +// ); +// return list; +// } + + @Bean + public DynamicDataSource dynamicDataSource(DruidDataSourceFactory druidDataSourceFactory) { + // 企业列表 企业CODE,端口,IP + Map dataSourceMap = new HashMap<>(); + dataSourceInfoList() + .stream() + .map(entInfo -> DataSourceInfo.hostAndPortBuild(entInfo.getEntCode(), entInfo.getIp(), entInfo.getPort())) + .forEach(dataSourceInfo -> { + dataSourceMap.put(dataSourceInfo.getKey(), druidDataSourceFactory.create(dataSourceInfo)); + }); + //设置动态数据源 + DynamicDataSource dynamicDataSource = new DynamicDataSource(); +// dynamicDataSource.setDefaultTargetDataSource(masterDataSource()); + dynamicDataSource.setTargetDataSources(dataSourceMap); + //将数据源信息备份在defineTargetDataSources中 + dynamicDataSource.setDefineTargetDataSources(dataSourceMap); + return dynamicDataSource; + } + + @Override + public void run(ApplicationArguments args) { + DruidDataSourceFactory druidDataSourceFactory = SpringUtils.getBean(DruidDataSourceFactory.class); + DynamicDataSource dynamicDataSource = SpringUtils.getBean(DynamicDataSource.class); + for (EntInfo entInfo : dataSourceInfoList()) { + DataSourceInfo dataSourceInfo = DataSourceInfo.hostAndPortBuild( + entInfo.getEntCode(), entInfo.getIp(), entInfo.getPort() + ); + DruidDataSource druidDataSource = druidDataSourceFactory.create(dataSourceInfo); + dynamicDataSource.put(dataSourceInfo.getKey(), druidDataSource); + log.info("存储数据连接池为:key:{}",dataSourceInfo.getKey()); + } + } + +} diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/constents/DatasourceContent.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/constents/DatasourceContent.java new file mode 100644 index 0000000..18334f6 --- /dev/null +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/constents/DatasourceContent.java @@ -0,0 +1,19 @@ +package com.muyu.cloud.common.many.datasource.constents; + +/** + * @author DongZl + * @description: 数据源常量 + * @Date 2023-8-1 上午 11:02 + */ +public class DatasourceContent { + + public final static String DATASOURCE_URL = "jdbc:mysql://{}:{}/{}?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8"; + + public final static String USER_NAME = "root"; + + public final static String PASSWORD = "hhh@187564"; + + public final static String IP = "47.101.49.53"; + + public final static Integer PORT = 3306; +} diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/domain/model/DataSourceInfo.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/domain/model/DataSourceInfo.java new file mode 100644 index 0000000..73cc26e --- /dev/null +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/domain/model/DataSourceInfo.java @@ -0,0 +1,50 @@ +package com.muyu.cloud.common.many.datasource.domain.model; + +import com.muyu.cloud.common.many.datasource.constents.DatasourceContent; +import com.muyu.common.core.utils.StringUtils; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author DongZl + * @description: 数据源实体类 + * @Date 2023-8-1 上午 11:15 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DataSourceInfo { + + /** + * 键 + */ + private String key; + + /** + * 地址 + */ + private String url; + + /** + * 用户名 + */ + private String userName; + + /** + * 密码 + */ + private String password; + + + public static DataSourceInfo hostAndPortBuild(String key, String host, Integer port) { + return DataSourceInfo.builder() + .key(key) + .url(StringUtils.format(DatasourceContent.DATASOURCE_URL, host, port, key)) + .password(DatasourceContent.PASSWORD) + .userName(DatasourceContent.USER_NAME) + .build(); + } +} diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/factory/DruidDataSourceFactory.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/factory/DruidDataSourceFactory.java new file mode 100644 index 0000000..7ceb782 --- /dev/null +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/factory/DruidDataSourceFactory.java @@ -0,0 +1,40 @@ +package com.muyu.cloud.common.many.datasource.factory; + +import com.alibaba.druid.pool.DruidDataSource; +import com.muyu.cloud.common.many.datasource.domain.model.DataSourceInfo; +import lombok.extern.log4j.Log4j2; +import org.springframework.stereotype.Component; + +import java.sql.SQLException; + +/** + * @Author: DongZeLiang + * @date: 2024/6/3 + * @Description: Druid工厂 + * @Version: 1.0 + */ +@Log4j2 +@Component +public class DruidDataSourceFactory { + + /** + * @Description: 根据传递的数据源信息测试数据库连接 + * @Author Dongzl + */ + public DruidDataSource create(DataSourceInfo dataSourceInfo) { + DruidDataSource druidDataSource = new DruidDataSource(); + druidDataSource.setUrl(dataSourceInfo.getUrl()); + druidDataSource.setUsername(dataSourceInfo.getUserName()); + druidDataSource.setPassword(dataSourceInfo.getPassword()); + druidDataSource.setBreakAfterAcquireFailure(true); + druidDataSource.setConnectionErrorRetryAttempts(0); + try { + druidDataSource.getConnection(2000); + log.info("{} -> 数据源连接成功", dataSourceInfo.getKey()); + return druidDataSource; + } catch (SQLException throwables) { + log.error("数据源 {} 连接失败,用户名:{},密码 {}",dataSourceInfo.getUrl(),dataSourceInfo.getUserName(),dataSourceInfo.getPassword()); + return null; + } + } +} diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/holder/DynamicDataSourceHolder.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/holder/DynamicDataSourceHolder.java new file mode 100644 index 0000000..e53229a --- /dev/null +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/holder/DynamicDataSourceHolder.java @@ -0,0 +1,42 @@ +package com.muyu.cloud.common.many.datasource.holder; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.Assert; + +/** + * 数据源切换处理 + * + * @author Dongzl + */ +@Slf4j +public class DynamicDataSourceHolder { + /** + * 保存动态数据源名称 + */ + private static final ThreadLocal DYNAMIC_DATASOURCE_KEY = new ThreadLocal<>(); + + /** + * 设置/切换数据源,决定当前线程使用哪个数据源 + */ + public static void setDynamicDataSourceKey(String key){ + log.info("数据源切换为:{}",key); + DYNAMIC_DATASOURCE_KEY.set(key); + } + + /** + * 获取动态数据源名称,默认使用mater数据源 + */ + public static String getDynamicDataSourceKey(){ + String key = DYNAMIC_DATASOURCE_KEY.get(); + Assert.notNull(key, "请携带数据标识"); + return key; + } + + /** + * 移除当前数据源 + */ + public static void removeDynamicDataSourceKey(){ + log.info("移除数据源:{}",DYNAMIC_DATASOURCE_KEY.get()); + DYNAMIC_DATASOURCE_KEY.remove(); + } +} diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/role/DynamicDataSource.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/role/DynamicDataSource.java new file mode 100644 index 0000000..6ac17cb --- /dev/null +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/role/DynamicDataSource.java @@ -0,0 +1,55 @@ +package com.muyu.cloud.common.many.datasource.role; + +import com.alibaba.druid.pool.DruidDataSource; +import com.muyu.cloud.common.many.datasource.holder.DynamicDataSourceHolder; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; + +import java.util.Map; + +/** + * 动态数据源 + * 调用AddDefineDataSource组件的addDefineDynamicDataSource()方法,获取原来targetdatasources的map,并将新的数据源信息添加到map中,并替换targetdatasources中的map + * 切换数据源时可以使用@DataSource(value = "数据源名称"),或者DynamicDataSourceContextHolder.setContextKey("数据源名称") + * @author Dongzl + */ +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DynamicDataSource extends AbstractRoutingDataSource { + /** + * 备份所有数据源信息 备份的是个 指针 !!! + */ + private Map defineTargetDataSources; + + /** + * 判定键是否出站了 + * @param key 键 + * @return 存在结果 true存在 false不存在 + */ + public boolean hashKey(String key){ + return defineTargetDataSources.containsKey(key); + } + + /** + * 添加数据库 + * @param key 键 + * @param value 数据源 + */ + public void put(String key, DruidDataSource value) { + defineTargetDataSources.put(key, value); + this.afterPropertiesSet(); + } + + /** + * 决定当前线程使用哪个数据源 + */ + @Override + protected Object determineCurrentLookupKey() { + return DynamicDataSourceHolder.getDynamicDataSourceKey(); + } +} diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/contents/SaaSConstant.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/contents/SaaSConstant.java new file mode 100644 index 0000000..afffa97 --- /dev/null +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/contents/SaaSConstant.java @@ -0,0 +1,12 @@ +package com.muyu.cloud.common.saas.contents; + +/** + * @Author: DongZeLiang + * @date: 2024/6/3 + * @Description: SAAS常量 + * @Version: 1.0 + */ +public class SaaSConstant { + + public final static String SAAS_KEY = "ent_code"; +} diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/domain/model/EntInfo.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/domain/model/EntInfo.java new file mode 100644 index 0000000..5c1985a --- /dev/null +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/domain/model/EntInfo.java @@ -0,0 +1,25 @@ +package com.muyu.cloud.common.saas.domain.model; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author: DongZeLiang + * @date: 2024/6/3 + * @Description: 企业信息 + * @Version: 1.0 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class EntInfo { + + private String entCode; + + private String ip; + + private Integer port; +} diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/exception/SaaSException.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/exception/SaaSException.java new file mode 100644 index 0000000..b2b4cc7 --- /dev/null +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/exception/SaaSException.java @@ -0,0 +1,28 @@ +package com.muyu.cloud.common.saas.exception; + + +import com.muyu.common.core.exception.ServiceException; + +/** + * @Author: DongZeLiang + * @date: 2024/6/3 + * @Description: SaaS异常类 + * @Version: 1.0 + */ +public class SaaSException extends ServiceException { + + public SaaSException (String message, Integer code) { + super(message, code); + } + + public SaaSException (String message) { + super(message); + } + + /** + * 空构造方法,避免反序列化问题 + */ + public SaaSException () { + super(); + } +} diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/interceptor/SaaSInterceptor.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/interceptor/SaaSInterceptor.java new file mode 100644 index 0000000..d4d87b6 --- /dev/null +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/interceptor/SaaSInterceptor.java @@ -0,0 +1,52 @@ +package com.muyu.cloud.common.saas.interceptor; + +import com.muyu.cloud.common.many.datasource.holder.DynamicDataSourceHolder; +import com.muyu.cloud.common.many.datasource.role.DynamicDataSource; +import com.muyu.cloud.common.saas.contents.SaaSConstant; +import com.muyu.cloud.common.saas.exception.SaaSException; +import com.muyu.common.core.utils.ServletUtils; +import com.muyu.common.core.utils.SpringUtils; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.web.method.HandlerMethod; +import org.springframework.web.servlet.AsyncHandlerInterceptor; + + +/** + * @Author: DongZeLiang + * @date: 2024/6/3 + * @Description: SAAS拦截器 + * @Version: 1.0 + */ +public class SaaSInterceptor implements AsyncHandlerInterceptor { + + /** + * 之前 + */ + @Override + public boolean preHandle (HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + if (!(handler instanceof HandlerMethod)) { + return true; + } + + String SaaSKey = ServletUtils.getHeader(request, SaaSConstant.SAAS_KEY); + if (SaaSKey == null) { + throw new SaaSException("SaaS非法访问"); + }else { + DynamicDataSource dynamicDataSource = SpringUtils.getBean(DynamicDataSource.class); + if (!dynamicDataSource.hashKey(SaaSKey)){ + throw new SaaSException("SaaS非法访问"); + } + } + DynamicDataSourceHolder.setDynamicDataSourceKey(SaaSKey); + return true; + } + + /** + * 之后 + */ + @Override + public void afterConcurrentHandlingStarted (HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + DynamicDataSourceHolder.removeDynamicDataSourceKey(); + } +} diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/interceptor/WebMvcSaaSConfig.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/interceptor/WebMvcSaaSConfig.java new file mode 100644 index 0000000..4c79417 --- /dev/null +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/interceptor/WebMvcSaaSConfig.java @@ -0,0 +1,31 @@ +package com.muyu.cloud.common.saas.interceptor; + +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * 拦截器配置 + * + * @author muyu + */ +public class WebMvcSaaSConfig implements WebMvcConfigurer { + /** + * 不需要拦截的地址 + */ + public static final String[] excludeUrls = {"/login", "/logout", "/refresh"}; + + @Override + public void addInterceptors (InterceptorRegistry registry) { + registry.addInterceptor(getHeaderInterceptor()) + .addPathPatterns("/**") + .excludePathPatterns(excludeUrls) + .order(-10); + } + + /** + * 自定义请求头拦截器 + */ + public SaaSInterceptor getHeaderInterceptor () { + return new SaaSInterceptor(); + } +} diff --git a/cloud-common/cloud-common-seata/pom.xml b/cloud-common/cloud-common-seata/pom.xml new file mode 100644 index 0000000..3725683 --- /dev/null +++ b/cloud-common/cloud-common-seata/pom.xml @@ -0,0 +1,27 @@ + + + + com.muyu + cloud-common + 3.6.3 + + 4.0.0 + + cloud-common-seata + + + cloud-common-seata分布式事务 + + + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-seata + + + + diff --git a/cloud-common/cloud-common-security/pom.xml b/cloud-common/cloud-common-security/pom.xml new file mode 100644 index 0000000..f1a480a --- /dev/null +++ b/cloud-common/cloud-common-security/pom.xml @@ -0,0 +1,39 @@ + + + + com.muyu + cloud-common + 3.6.3 + + 4.0.0 + + cloud-common-security + + + cloud-common-security安全模块 + + + + + + + org.springframework + spring-webmvc + + + + + com.muyu + cloud-common-redis + + + + + com.muyu + cloud-common-system + + + + + diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/EnableCustomConfig.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/EnableCustomConfig.java new file mode 100644 index 0000000..ca7a07a --- /dev/null +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/EnableCustomConfig.java @@ -0,0 +1,26 @@ +package com.muyu.common.security.annotation; + +import com.muyu.common.security.config.ApplicationConfig; +import com.muyu.common.security.feign.FeignAutoConfiguration; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.EnableAspectJAutoProxy; +import org.springframework.context.annotation.Import; +import org.springframework.scheduling.annotation.EnableAsync; + +import java.lang.annotation.*; + +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Inherited +// 表示通过aop框架暴露该代理对象,AopContext能够访问 +@EnableAspectJAutoProxy(exposeProxy = true) +// 指定要扫描的Mapper类的包的路径 +@MapperScan("com.muyu.**.mapper") +// 开启线程异步执行 +@EnableAsync +// 自动加载类 +@Import({ApplicationConfig.class, FeignAutoConfiguration.class}) +public @interface EnableCustomConfig { + +} diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/EnableMyFeignClients.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/EnableMyFeignClients.java new file mode 100644 index 0000000..7a59fa4 --- /dev/null +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/EnableMyFeignClients.java @@ -0,0 +1,27 @@ +package com.muyu.common.security.annotation; + +import org.springframework.cloud.openfeign.EnableFeignClients; + +import java.lang.annotation.*; + +/** + * 自定义feign注解 + * 添加basePackages路径 + * + * @author muyu + */ +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@EnableFeignClients +public @interface EnableMyFeignClients { + String[] value () default {}; + + String[] basePackages () default {"com.muyu"}; + + Class[] basePackageClasses () default {}; + + Class[] defaultConfiguration () default {}; + + Class[] clients () default {}; +} diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/InnerAuth.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/InnerAuth.java new file mode 100644 index 0000000..092a573 --- /dev/null +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/InnerAuth.java @@ -0,0 +1,18 @@ +package com.muyu.common.security.annotation; + +import java.lang.annotation.*; + +/** + * 内部认证注解 + * + * @author muyu + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface InnerAuth { + /** + * 是否校验用户信息 + */ + boolean isUser () default false; +} diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/Logical.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/Logical.java new file mode 100644 index 0000000..0be306a --- /dev/null +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/Logical.java @@ -0,0 +1,18 @@ +package com.muyu.common.security.annotation; + +/** + * 权限注解的验证模式 + * + * @author muyu + */ +public enum Logical { + /** + * 必须具有所有的元素 + */ + AND, + + /** + * 只需具有其中一个元素 + */ + OR +} diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/RequiresLogin.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/RequiresLogin.java new file mode 100644 index 0000000..4eff911 --- /dev/null +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/RequiresLogin.java @@ -0,0 +1,16 @@ +package com.muyu.common.security.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 登录认证:只有登录之后才能进入该方法 + * + * @author muyu + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.METHOD, ElementType.TYPE}) +public @interface RequiresLogin { +} diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/RequiresPermissions.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/RequiresPermissions.java new file mode 100644 index 0000000..8d95bb4 --- /dev/null +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/RequiresPermissions.java @@ -0,0 +1,25 @@ +package com.muyu.common.security.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 权限认证:必须具有指定权限才能进入该方法 + * + * @author muyu + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.METHOD, ElementType.TYPE}) +public @interface RequiresPermissions { + /** + * 需要校验的权限码 + */ + String[] value () default {}; + + /** + * 验证模式:AND | OR,默认AND + */ + Logical logical () default Logical.AND; +} diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/RequiresRoles.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/RequiresRoles.java new file mode 100644 index 0000000..78911cc --- /dev/null +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/annotation/RequiresRoles.java @@ -0,0 +1,25 @@ +package com.muyu.common.security.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 角色认证:必须具有指定角色标识才能进入该方法 + * + * @author muyu + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.METHOD, ElementType.TYPE}) +public @interface RequiresRoles { + /** + * 需要校验的角色标识 + */ + String[] value () default {}; + + /** + * 验证逻辑:AND | OR,默认AND + */ + Logical logical () default Logical.AND; +} diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/aspect/InnerAuthAspect.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/aspect/InnerAuthAspect.java new file mode 100644 index 0000000..1707742 --- /dev/null +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/aspect/InnerAuthAspect.java @@ -0,0 +1,46 @@ +package com.muyu.common.security.aspect; + +import com.muyu.common.core.constant.SecurityConstants; +import com.muyu.common.core.exception.InnerAuthException; +import com.muyu.common.core.utils.ServletUtils; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.security.annotation.InnerAuth; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.springframework.core.Ordered; +import org.springframework.stereotype.Component; + +/** + * 内部服务调用验证处理 + * + * @author muyu + */ +@Aspect +@Component +public class InnerAuthAspect implements Ordered { + @Around("@annotation(innerAuth)") + public Object innerAround (ProceedingJoinPoint point, InnerAuth innerAuth) throws Throwable { + String source = ServletUtils.getRequest().getHeader(SecurityConstants.FROM_SOURCE); + // 内部请求验证 + if (!StringUtils.equals(SecurityConstants.INNER, source)) { + throw new InnerAuthException("没有内部访问权限,不允许访问"); + } + + String userid = ServletUtils.getRequest().getHeader(SecurityConstants.DETAILS_USER_ID); + String username = ServletUtils.getRequest().getHeader(SecurityConstants.DETAILS_USERNAME); + // 用户信息验证 + if (innerAuth.isUser() && (StringUtils.isEmpty(userid) || StringUtils.isEmpty(username))) { + throw new InnerAuthException("没有设置用户信息,不允许访问 "); + } + return point.proceed(); + } + + /** + * 确保在权限认证aop执行前执行 + */ + @Override + public int getOrder () { + return Ordered.HIGHEST_PRECEDENCE + 1; + } +} diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/aspect/PreAuthorizeAspect.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/aspect/PreAuthorizeAspect.java new file mode 100644 index 0000000..4cdd933 --- /dev/null +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/aspect/PreAuthorizeAspect.java @@ -0,0 +1,89 @@ +package com.muyu.common.security.aspect; + +import com.muyu.common.security.annotation.RequiresLogin; +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.common.security.annotation.RequiresRoles; +import com.muyu.common.security.auth.AuthUtil; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.aspectj.lang.reflect.MethodSignature; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Method; + +/** + * 基于 Spring Aop 的注解鉴权 + * + * @author kong + */ +@Aspect +@Component +public class PreAuthorizeAspect { + /** + * 定义AOP签名 (切入所有使用鉴权注解的方法) + */ + public static final String POINTCUT_SIGN = " @annotation(com.muyu.common.security.annotation.RequiresLogin) || " + + "@annotation(com.muyu.common.security.annotation.RequiresPermissions) || " + + "@annotation(com.muyu.common.security.annotation.RequiresRoles)"; + + /** + * 构建 + */ + public PreAuthorizeAspect () { + } + + /** + * 声明AOP签名 + */ + @Pointcut(POINTCUT_SIGN) + public void pointcut () { + } + + /** + * 环绕切入 + * + * @param joinPoint 切面对象 + * + * @return 底层方法执行后的返回值 + * + * @throws Throwable 底层方法抛出的异常 + */ + @Around("pointcut()") + public Object around (ProceedingJoinPoint joinPoint) throws Throwable { + // 注解鉴权 + MethodSignature signature = (MethodSignature) joinPoint.getSignature(); + checkMethodAnnotation(signature.getMethod()); + try { + // 执行原有逻辑 + Object obj = joinPoint.proceed(); + return obj; + } catch (Throwable e) { + throw e; + } + } + + /** + * 对一个Method对象进行注解检查 + */ + public void checkMethodAnnotation (Method method) { + // 校验 @RequiresLogin 注解 + RequiresLogin requiresLogin = method.getAnnotation(RequiresLogin.class); + if (requiresLogin != null) { + AuthUtil.checkLogin(); + } + + // 校验 @RequiresRoles 注解 + RequiresRoles requiresRoles = method.getAnnotation(RequiresRoles.class); + if (requiresRoles != null) { + AuthUtil.checkRole(requiresRoles); + } + + // 校验 @RequiresPermissions 注解 + RequiresPermissions requiresPermissions = method.getAnnotation(RequiresPermissions.class); + if (requiresPermissions != null) { + AuthUtil.checkPermi(requiresPermissions); + } + } +} diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/auth/AuthLogic.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/auth/AuthLogic.java new file mode 100644 index 0000000..beb3426 --- /dev/null +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/auth/AuthLogic.java @@ -0,0 +1,327 @@ +package com.muyu.common.security.auth; + +import com.muyu.common.core.context.SecurityContextHolder; +import com.muyu.common.core.exception.auth.NotLoginException; +import com.muyu.common.core.exception.auth.NotPermissionException; +import com.muyu.common.core.exception.auth.NotRoleException; +import com.muyu.common.core.utils.SpringUtils; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.security.annotation.Logical; +import com.muyu.common.security.annotation.RequiresLogin; +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.common.security.annotation.RequiresRoles; +import com.muyu.common.security.service.TokenService; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.LoginUser; +import org.springframework.util.PatternMatchUtils; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +/** + * Token 权限验证,逻辑实现类 + * + * @author muyu + */ +public class AuthLogic { + /** + * 所有权限标识 + */ + private static final String ALL_PERMISSION = "*:*:*"; + + /** + * 管理员角色权限标识 + */ + private static final String SUPER_ADMIN = "admin"; + + public TokenService tokenService = SpringUtils.getBean(TokenService.class); + + /** + * 会话注销 + */ + public void logout () { + String token = SecurityUtils.getToken(); + if (token == null) { + return; + } + logoutByToken(token); + } + + /** + * 会话注销,根据指定Token + */ + public void logoutByToken (String token) { + tokenService.delLoginUser(token); + } + + /** + * 检验用户是否已经登录,如未登录,则抛出异常 + */ + public void checkLogin () { + getLoginUser(); + } + + /** + * 获取当前用户缓存信息, 如果未登录,则抛出异常 + * + * @return 用户缓存信息 + */ + public LoginUser getLoginUser () { + String token = SecurityUtils.getToken(); + if (token == null) { + throw new NotLoginException("未提供token"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser == null) { + throw new NotLoginException("无效的token"); + } + return loginUser; + } + + /** + * 获取当前用户缓存信息, 如果未登录,则抛出异常 + * + * @param token 前端传递的认证信息 + * + * @return 用户缓存信息 + */ + public LoginUser getLoginUser (String token) { + return tokenService.getLoginUser(token); + } + + /** + * 验证当前用户有效期, 如果相差不足120分钟,自动刷新缓存 + * + * @param loginUser 当前用户信息 + */ + public void verifyLoginUserExpire (LoginUser loginUser) { + tokenService.verifyToken(loginUser); + } + + /** + * 验证用户是否具备某权限 + * + * @param permission 权限字符串 + * + * @return 用户是否具备某权限 + */ + public boolean hasPermi (String permission) { + return hasPermi(getPermiList(), permission); + } + + /** + * 验证用户是否具备某权限, 如果验证未通过,则抛出异常: NotPermissionException + * + * @param permission 权限字符串 + * + * @return 用户是否具备某权限 + */ + public void checkPermi (String permission) { + if (!hasPermi(getPermiList(), permission)) { + throw new NotPermissionException(permission); + } + } + + /** + * 根据注解(@RequiresPermissions)鉴权, 如果验证未通过,则抛出异常: NotPermissionException + * + * @param requiresPermissions 注解对象 + */ + public void checkPermi (RequiresPermissions requiresPermissions) { + SecurityContextHolder.setPermission(StringUtils.join(requiresPermissions.value(), ",")); + if (requiresPermissions.logical() == Logical.AND) { + checkPermiAnd(requiresPermissions.value()); + } else { + checkPermiOr(requiresPermissions.value()); + } + } + + /** + * 验证用户是否含有指定权限,必须全部拥有 + * + * @param permissions 权限列表 + */ + public void checkPermiAnd (String... permissions) { + Set permissionList = getPermiList(); + for (String permission : permissions) { + if (!hasPermi(permissionList, permission)) { + throw new NotPermissionException(permission); + } + } + } + + /** + * 验证用户是否含有指定权限,只需包含其中一个 + * + * @param permissions 权限码数组 + */ + public void checkPermiOr (String... permissions) { + Set permissionList = getPermiList(); + for (String permission : permissions) { + if (hasPermi(permissionList, permission)) { + return; + } + } + if (permissions.length > 0) { + throw new NotPermissionException(permissions); + } + } + + /** + * 判断用户是否拥有某个角色 + * + * @param role 角色标识 + * + * @return 用户是否具备某角色 + */ + public boolean hasRole (String role) { + return hasRole(getRoleList(), role); + } + + /** + * 判断用户是否拥有某个角色, 如果验证未通过,则抛出异常: NotRoleException + * + * @param role 角色标识 + */ + public void checkRole (String role) { + if (!hasRole(role)) { + throw new NotRoleException(role); + } + } + + /** + * 根据注解(@RequiresRoles)鉴权 + * + * @param requiresRoles 注解对象 + */ + public void checkRole (RequiresRoles requiresRoles) { + if (requiresRoles.logical() == Logical.AND) { + checkRoleAnd(requiresRoles.value()); + } else { + checkRoleOr(requiresRoles.value()); + } + } + + /** + * 验证用户是否含有指定角色,必须全部拥有 + * + * @param roles 角色标识数组 + */ + public void checkRoleAnd (String... roles) { + Set roleList = getRoleList(); + for (String role : roles) { + if (!hasRole(roleList, role)) { + throw new NotRoleException(role); + } + } + } + + /** + * 验证用户是否含有指定角色,只需包含其中一个 + * + * @param roles 角色标识数组 + */ + public void checkRoleOr (String... roles) { + Set roleList = getRoleList(); + for (String role : roles) { + if (hasRole(roleList, role)) { + return; + } + } + if (roles.length > 0) { + throw new NotRoleException(roles); + } + } + + /** + * 根据注解(@RequiresLogin)鉴权 + * + * @param at 注解对象 + */ + public void checkByAnnotation (RequiresLogin at) { + this.checkLogin(); + } + + /** + * 根据注解(@RequiresRoles)鉴权 + * + * @param at 注解对象 + */ + public void checkByAnnotation (RequiresRoles at) { + String[] roleArray = at.value(); + if (at.logical() == Logical.AND) { + this.checkRoleAnd(roleArray); + } else { + this.checkRoleOr(roleArray); + } + } + + /** + * 根据注解(@RequiresPermissions)鉴权 + * + * @param at 注解对象 + */ + public void checkByAnnotation (RequiresPermissions at) { + String[] permissionArray = at.value(); + if (at.logical() == Logical.AND) { + this.checkPermiAnd(permissionArray); + } else { + this.checkPermiOr(permissionArray); + } + } + + /** + * 获取当前账号的角色列表 + * + * @return 角色列表 + */ + public Set getRoleList () { + try { + LoginUser loginUser = getLoginUser(); + return loginUser.getRoles(); + } catch (Exception e) { + return new HashSet<>(); + } + } + + /** + * 获取当前账号的权限列表 + * + * @return 权限列表 + */ + public Set getPermiList () { + try { + LoginUser loginUser = getLoginUser(); + return loginUser.getPermissions(); + } catch (Exception e) { + return new HashSet<>(); + } + } + + /** + * 判断是否包含权限 + * + * @param authorities 权限列表 + * @param permission 权限字符串 + * + * @return 用户是否具备某权限 + */ + public boolean hasPermi (Collection authorities, String permission) { + return authorities.stream().filter(StringUtils::hasText) + .anyMatch(x -> ALL_PERMISSION.equals(x) || PatternMatchUtils.simpleMatch(x, permission)); + } + + /** + * 判断是否包含角色 + * + * @param roles 角色列表 + * @param role 角色 + * + * @return 用户是否具备某角色权限 + */ + public boolean hasRole (Collection roles, String role) { + return roles.stream().filter(StringUtils::hasText) + .anyMatch(x -> SUPER_ADMIN.equals(x) || PatternMatchUtils.simpleMatch(x, role)); + } +} diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/auth/AuthUtil.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/auth/AuthUtil.java new file mode 100644 index 0000000..131d150 --- /dev/null +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/auth/AuthUtil.java @@ -0,0 +1,154 @@ +package com.muyu.common.security.auth; + +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.common.security.annotation.RequiresRoles; +import com.muyu.common.system.domain.LoginUser; + +/** + * Token 权限验证工具类 + * + * @author muyu + */ +public class AuthUtil { + /** + * 底层的 AuthLogic 对象 + */ + public static AuthLogic authLogic = new AuthLogic(); + + /** + * 会话注销 + */ + public static void logout () { + authLogic.logout(); + } + + /** + * 会话注销,根据指定Token + * + * @param token 指定token + */ + public static void logoutByToken (String token) { + authLogic.logoutByToken(token); + } + + /** + * 检验当前会话是否已经登录,如未登录,则抛出异常 + */ + public static void checkLogin () { + authLogic.checkLogin(); + } + + /** + * 获取当前登录用户信息 + * + * @param token 指定token + * + * @return 用户信息 + */ + public static LoginUser getLoginUser (String token) { + return authLogic.getLoginUser(token); + } + + /** + * 验证当前用户有效期 + * + * @param loginUser 用户信息 + */ + public static void verifyLoginUserExpire (LoginUser loginUser) { + authLogic.verifyLoginUserExpire(loginUser); + } + + /** + * 当前账号是否含有指定角色标识, 返回true或false + * + * @param role 角色标识 + * + * @return 是否含有指定角色标识 + */ + public static boolean hasRole (String role) { + return authLogic.hasRole(role); + } + + /** + * 当前账号是否含有指定角色标识, 如果验证未通过,则抛出异常: NotRoleException + * + * @param role 角色标识 + */ + public static void checkRole (String role) { + authLogic.checkRole(role); + } + + /** + * 根据注解传入参数鉴权, 如果验证未通过,则抛出异常: NotRoleException + * + * @param requiresRoles 角色权限注解 + */ + public static void checkRole (RequiresRoles requiresRoles) { + authLogic.checkRole(requiresRoles); + } + + /** + * 当前账号是否含有指定角色标识 [指定多个,必须全部验证通过] + * + * @param roles 角色标识数组 + */ + public static void checkRoleAnd (String... roles) { + authLogic.checkRoleAnd(roles); + } + + /** + * 当前账号是否含有指定角色标识 [指定多个,只要其一验证通过即可] + * + * @param roles 角色标识数组 + */ + public static void checkRoleOr (String... roles) { + authLogic.checkRoleOr(roles); + } + + /** + * 当前账号是否含有指定权限, 返回true或false + * + * @param permission 权限码 + * + * @return 是否含有指定权限 + */ + public static boolean hasPermi (String permission) { + return authLogic.hasPermi(permission); + } + + /** + * 当前账号是否含有指定权限, 如果验证未通过,则抛出异常: NotPermissionException + * + * @param permission 权限码 + */ + public static void checkPermi (String permission) { + authLogic.checkPermi(permission); + } + + /** + * 根据注解传入参数鉴权, 如果验证未通过,则抛出异常: NotPermissionException + * + * @param requiresPermissions 权限注解 + */ + public static void checkPermi (RequiresPermissions requiresPermissions) { + authLogic.checkPermi(requiresPermissions); + } + + /** + * 当前账号是否含有指定权限 [指定多个,必须全部验证通过] + * + * @param permissions 权限码数组 + */ + public static void checkPermiAnd (String... permissions) { + authLogic.checkPermiAnd(permissions); + } + + /** + * 当前账号是否含有指定权限 [指定多个,只要其一验证通过即可] + * + * @param permissions 权限码数组 + */ + public static void checkPermiOr (String... permissions) { + authLogic.checkPermiOr(permissions); + } +} diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/config/ApplicationConfig.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/config/ApplicationConfig.java new file mode 100644 index 0000000..b78abbf --- /dev/null +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/config/ApplicationConfig.java @@ -0,0 +1,21 @@ +package com.muyu.common.security.config; + +import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; +import org.springframework.context.annotation.Bean; + +import java.util.TimeZone; + +/** + * 系统配置 + * + * @author muyu + */ +public class ApplicationConfig { + /** + * 时区配置 + */ + @Bean + public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization () { + return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault()); + } +} diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/config/WebMvcConfig.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/config/WebMvcConfig.java new file mode 100644 index 0000000..8acde35 --- /dev/null +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/config/WebMvcConfig.java @@ -0,0 +1,32 @@ +package com.muyu.common.security.config; + +import com.muyu.common.security.interceptor.HeaderInterceptor; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * 拦截器配置 + * + * @author muyu + */ +public class WebMvcConfig implements WebMvcConfigurer { + /** + * 不需要拦截地址 + */ + public static final String[] excludeUrls = {"/login", "/logout", "/refresh"}; + + @Override + public void addInterceptors (InterceptorRegistry registry) { + registry.addInterceptor(getHeaderInterceptor()) + .addPathPatterns("/**") + .excludePathPatterns(excludeUrls) + .order(-10); + } + + /** + * 自定义请求头拦截器 + */ + public HeaderInterceptor getHeaderInterceptor () { + return new HeaderInterceptor(); + } +} diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/feign/FeignAutoConfiguration.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/feign/FeignAutoConfiguration.java new file mode 100644 index 0000000..4bfda6d --- /dev/null +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/feign/FeignAutoConfiguration.java @@ -0,0 +1,18 @@ +package com.muyu.common.security.feign; + +import feign.RequestInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * Feign 配置注册 + * + * @author muyu + **/ +@Configuration +public class FeignAutoConfiguration { + @Bean + public RequestInterceptor requestInterceptor () { + return new FeignRequestInterceptor(); + } +} diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/feign/FeignRequestInterceptor.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/feign/FeignRequestInterceptor.java new file mode 100644 index 0000000..8ae21da --- /dev/null +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/feign/FeignRequestInterceptor.java @@ -0,0 +1,48 @@ +package com.muyu.common.security.feign; + +import com.muyu.common.core.constant.SecurityConstants; +import com.muyu.common.core.utils.ServletUtils; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.utils.ip.IpUtils; +import feign.RequestInterceptor; +import feign.RequestTemplate; +import org.springframework.stereotype.Component; + +import jakarta.servlet.http.HttpServletRequest; +import java.util.Map; + +/** + * feign 请求拦截器 + * + * @author muyu + */ +@Component +public class FeignRequestInterceptor implements RequestInterceptor { + @Override + public void apply (RequestTemplate requestTemplate) { + HttpServletRequest httpServletRequest = ServletUtils.getRequest(); + if (StringUtils.isNotNull(httpServletRequest)) { + Map headers = ServletUtils.getHeaders(httpServletRequest); + // 传递用户信息请求头,防止丢失 + String userId = headers.get(SecurityConstants.DETAILS_USER_ID); + if (StringUtils.isNotEmpty(userId)) { + requestTemplate.header(SecurityConstants.DETAILS_USER_ID, userId); + } + String userKey = headers.get(SecurityConstants.USER_KEY); + if (StringUtils.isNotEmpty(userKey)) { + requestTemplate.header(SecurityConstants.USER_KEY, userKey); + } + String userName = headers.get(SecurityConstants.DETAILS_USERNAME); + if (StringUtils.isNotEmpty(userName)) { + requestTemplate.header(SecurityConstants.DETAILS_USERNAME, userName); + } + String authentication = headers.get(SecurityConstants.AUTHORIZATION_HEADER); + if (StringUtils.isNotEmpty(authentication)) { + requestTemplate.header(SecurityConstants.AUTHORIZATION_HEADER, authentication); + } + + // 配置客户端IP + requestTemplate.header("X-Forwarded-For", IpUtils.getIpAddr()); + } + } +} diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/handler/GlobalExceptionHandler.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..170211c --- /dev/null +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/handler/GlobalExceptionHandler.java @@ -0,0 +1,147 @@ +package com.muyu.common.security.handler; + +import com.muyu.common.core.constant.HttpStatus; +import com.muyu.common.core.exception.DemoModeException; +import com.muyu.common.core.exception.InnerAuthException; +import com.muyu.common.core.exception.ServiceException; +import com.muyu.common.core.exception.auth.NotPermissionException; +import com.muyu.common.core.exception.auth.NotRoleException; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.domain.Result; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.validation.BindException; +import org.springframework.web.HttpRequestMethodNotSupportedException; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.MissingPathVariableException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; + +import jakarta.servlet.http.HttpServletRequest; + +/** + * 全局异常处理器 + * + * @author muyu + */ +@RestControllerAdvice +public class GlobalExceptionHandler { + private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class); + + /** + * 权限码异常 + */ + @ExceptionHandler(NotPermissionException.class) + public Result handleNotPermissionException (NotPermissionException e, HttpServletRequest request) { + String requestURI = request.getRequestURI(); + log.error("请求地址'{}',权限码校验失败'{}'", requestURI, e.getMessage()); + return Result.error(HttpStatus.FORBIDDEN, "没有访问权限,请联系管理员授权"); + } + + /** + * 角色权限异常 + */ + @ExceptionHandler(NotRoleException.class) + public Result handleNotRoleException (NotRoleException e, HttpServletRequest request) { + String requestURI = request.getRequestURI(); + log.error("请求地址'{}',角色权限校验失败'{}'", requestURI, e.getMessage()); + return Result.error(HttpStatus.FORBIDDEN, "没有访问权限,请联系管理员授权"); + } + + /** + * 请求方式不支持 + */ + @ExceptionHandler(HttpRequestMethodNotSupportedException.class) + public Result handleHttpRequestMethodNotSupported (HttpRequestMethodNotSupportedException e, HttpServletRequest request) { + String requestURI = request.getRequestURI(); + log.error("请求地址'{}',不支持'{}'请求", requestURI, e.getMethod()); + return Result.error(e.getMessage()); + } + + /** + * 业务异常 + */ + @ExceptionHandler(ServiceException.class) + public Result handleServiceException (ServiceException e, HttpServletRequest request) { + log.error(e.getMessage(), e); + Integer code = e.getCode(); + return StringUtils.isNotNull(code) ? Result.error(code, e.getMessage()) : Result.error(e.getMessage()); + } + + /** + * 请求路径中缺少必需的路径变量 + */ + @ExceptionHandler(MissingPathVariableException.class) + public Result handleMissingPathVariableException (MissingPathVariableException e, HttpServletRequest request) { + String requestURI = request.getRequestURI(); + log.error("请求路径中缺少必需的路径变量'{}',发生系统异常.", requestURI, e); + return Result.error(String.format("请求路径中缺少必需的路径变量[%s]", e.getVariableName())); + } + + /** + * 请求参数类型不匹配 + */ + @ExceptionHandler(MethodArgumentTypeMismatchException.class) + public Result handleMethodArgumentTypeMismatchException (MethodArgumentTypeMismatchException e, HttpServletRequest request) { + String requestURI = request.getRequestURI(); + log.error("请求参数类型不匹配'{}',发生系统异常.", requestURI, e); + return Result.error(String.format("请求参数类型不匹配,参数[%s]要求类型为:'%s',但输入值为:'%s'", e.getName(), e.getRequiredType().getName(), e.getValue())); + } + + /** + * 拦截未知的运行时异常 + */ + @ExceptionHandler(RuntimeException.class) + public Result handleRuntimeException (RuntimeException e, HttpServletRequest request) { + String requestURI = request.getRequestURI(); + log.error("请求地址'{}',发生未知异常.", requestURI, e); + return Result.error(e.getMessage()); + } + + /** + * 系统异常 + */ + @ExceptionHandler(Exception.class) + public Result handleException (Exception e, HttpServletRequest request) { + String requestURI = request.getRequestURI(); + log.error("请求地址'{}',发生系统异常.", requestURI, e); + return Result.error(e.getMessage()); + } + + /** + * 自定义验证异常 + */ + @ExceptionHandler(BindException.class) + public Result handleBindException (BindException e) { + log.error(e.getMessage(), e); + String message = e.getAllErrors().get(0).getDefaultMessage(); + return Result.error(message); + } + + /** + * 自定义验证异常 + */ + @ExceptionHandler(MethodArgumentNotValidException.class) + public Object handleMethodArgumentNotValidException (MethodArgumentNotValidException e) { + log.error(e.getMessage(), e); + String message = e.getBindingResult().getFieldError().getDefaultMessage(); + return Result.error(message); + } + + /** + * 内部认证异常 + */ + @ExceptionHandler(InnerAuthException.class) + public Result handleInnerAuthException (InnerAuthException e) { + return Result.error(e.getMessage()); + } + + /** + * 演示模式异常 + */ + @ExceptionHandler(DemoModeException.class) + public Result handleDemoModeException (DemoModeException e) { + return Result.error("演示模式,不允许操作"); + } +} diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/interceptor/HeaderInterceptor.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/interceptor/HeaderInterceptor.java new file mode 100644 index 0000000..0b1938d --- /dev/null +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/interceptor/HeaderInterceptor.java @@ -0,0 +1,50 @@ +package com.muyu.common.security.interceptor; + +import com.muyu.common.core.constant.SecurityConstants; +import com.muyu.common.core.context.SecurityContextHolder; +import com.muyu.common.core.utils.ServletUtils; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.security.auth.AuthUtil; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.LoginUser; +import org.springframework.web.method.HandlerMethod; +import org.springframework.web.servlet.AsyncHandlerInterceptor; + +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +/** + * 自定义请求头拦截器,将Header数据封装到线程变量中方便获取 + * 注意:此拦截器会同时验证当前用户有效期自动刷新有效期 + * + * @author muyu + */ +public class HeaderInterceptor implements AsyncHandlerInterceptor { + + @Override + public boolean preHandle (HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + if (!(handler instanceof HandlerMethod)) { + return true; + } + + SecurityContextHolder.setUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USER_ID)); + SecurityContextHolder.setUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USERNAME)); + SecurityContextHolder.setUserKey(ServletUtils.getHeader(request, SecurityConstants.USER_KEY)); + + String token = SecurityUtils.getToken(); + if (StringUtils.isNotEmpty(token)) { + LoginUser loginUser = AuthUtil.getLoginUser(token); + if (StringUtils.isNotNull(loginUser)) { + AuthUtil.verifyLoginUserExpire(loginUser); + SecurityContextHolder.set(SecurityConstants.LOGIN_USER, loginUser); + } + } + return true; + } + + @Override + public void afterCompletion (HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) + throws Exception { + SecurityContextHolder.remove(); + } +} diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/TokenService.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/TokenService.java new file mode 100644 index 0000000..c0ec0c3 --- /dev/null +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/TokenService.java @@ -0,0 +1,154 @@ +package com.muyu.common.security.service; + +import com.muyu.common.core.constant.CacheConstants; +import com.muyu.common.core.constant.SecurityConstants; +import com.muyu.common.core.utils.JwtUtils; +import com.muyu.common.core.utils.ServletUtils; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.utils.ip.IpUtils; +import com.muyu.common.core.utils.uuid.IdUtils; +import com.muyu.common.redis.service.RedisService; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.LoginUser; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import jakarta.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +/** + * token验证处理 + * + * @author muyu + */ +@Component +public class TokenService { + protected static final long MILLIS_SECOND = 1000; + protected static final long MILLIS_MINUTE = 60 * MILLIS_SECOND; + private final static Long MILLIS_MINUTE_TEN = CacheConstants.REFRESH_TIME * MILLIS_MINUTE; + private static final Logger log = LoggerFactory.getLogger(TokenService.class); + private final static long expireTime = CacheConstants.EXPIRATION; + + private final static String ACCESS_TOKEN = CacheConstants.LOGIN_TOKEN_KEY; + @Autowired + private RedisService redisService; + + /** + * 创建令牌 + */ + public Map createToken (LoginUser loginUser) { + String token = IdUtils.fastUUID(); + Long userId = loginUser.getSysUser().getUserId(); + String userName = loginUser.getSysUser().getUserName(); + loginUser.setToken(token); + loginUser.setUserid(userId); + loginUser.setUsername(userName); + loginUser.setIpaddr(IpUtils.getIpAddr()); + + refreshToken(loginUser); + + // Jwt存储信息 + Map claimsMap = new HashMap(); + claimsMap.put(SecurityConstants.USER_KEY, token); + claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId); + claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName); + claimsMap.put(SecurityConstants.DATABASE_NAME, loginUser.getSysUser().getDatabaseName()); + // 接口返回信息 + Map rspMap = new HashMap(); + rspMap.put("access_token", JwtUtils.createToken(claimsMap)); + rspMap.put("expires_in", expireTime); + return rspMap; + } + + /** + * 获取用户身份信息 + * + * @return 用户信息 + */ + public LoginUser getLoginUser () { + return getLoginUser(ServletUtils.getRequest()); + } + + /** + * 设置用户身份信息 + */ + public void setLoginUser (LoginUser loginUser) { + if (StringUtils.isNotNull(loginUser) && StringUtils.isNotEmpty(loginUser.getToken())) { + refreshToken(loginUser); + } + } + + /** + * 获取用户身份信息 + * + * @return 用户信息 + */ + public LoginUser getLoginUser (HttpServletRequest request) { + // 获取请求携带的令牌 + String token = SecurityUtils.getToken(request); + return getLoginUser(token); + } + + /** + * 获取用户身份信息 + * + * @return 用户信息 + */ + public LoginUser getLoginUser (String token) { + LoginUser user = null; + try { + if (StringUtils.isNotEmpty(token)) { + String userkey = JwtUtils.getUserKey(token); + user = redisService.getCacheObject(getTokenKey(userkey)); + return user; + } + } catch (Exception e) { + log.error("获取用户信息异常'{}'", e.getMessage()); + } + return user; + } + + /** + * 删除用户缓存信息 + */ + public void delLoginUser (String token) { + if (StringUtils.isNotEmpty(token)) { + String userkey = JwtUtils.getUserKey(token); + redisService.deleteObject(getTokenKey(userkey)); + } + } + + /** + * 验证令牌有效期,相差不足120分钟,自动刷新缓存 + * + * @param loginUser + */ + public void verifyToken (LoginUser loginUser) { + long expireTime = loginUser.getExpireTime(); + long currentTime = System.currentTimeMillis(); + if (expireTime - currentTime <= MILLIS_MINUTE_TEN) { + refreshToken(loginUser); + } + } + + /** + * 刷新令牌有效期 + * + * @param loginUser 登录信息 + */ + public void refreshToken (LoginUser loginUser) { + loginUser.setLoginTime(System.currentTimeMillis()); + loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE); + // 根据uuid将loginUser缓存 + String userKey = getTokenKey(loginUser.getToken()); + redisService.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES); + } + + private String getTokenKey (String token) { + return ACCESS_TOKEN + token; + } +} diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/utils/DictUtils.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/utils/DictUtils.java new file mode 100644 index 0000000..04ee068 --- /dev/null +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/utils/DictUtils.java @@ -0,0 +1,71 @@ +package com.muyu.common.security.utils; + +import com.alibaba.fastjson2.JSONArray; +import com.muyu.common.core.constant.CacheConstants; +import com.muyu.common.core.utils.SpringUtils; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.redis.service.RedisService; +import com.muyu.common.system.domain.SysDictData; + +import java.util.Collection; +import java.util.List; + +/** + * 字典工具类 + * + * @author muyu + */ +public class DictUtils { + /** + * 设置字典缓存 + * + * @param key 参数键 + * @param dictDatas 字典数据列表 + */ + public static void setDictCache (String key, List dictDatas) { + SpringUtils.getBean(RedisService.class).setCacheObject(getCacheKey(key), dictDatas); + } + + /** + * 获取字典缓存 + * + * @param key 参数键 + * + * @return dictDatas 字典数据列表 + */ + public static List getDictCache (String key) { + JSONArray arrayCache = SpringUtils.getBean(RedisService.class).getCacheObject(getCacheKey(key)); + if (StringUtils.isNotNull(arrayCache)) { + return arrayCache.toList(SysDictData.class); + } + return null; + } + + /** + * 删除指定字典缓存 + * + * @param key 字典键 + */ + public static void removeDictCache (String key) { + SpringUtils.getBean(RedisService.class).deleteObject(getCacheKey(key)); + } + + /** + * 清空字典缓存 + */ + public static void clearDictCache () { + Collection keys = SpringUtils.getBean(RedisService.class).keys(CacheConstants.SYS_DICT_KEY + "*"); + SpringUtils.getBean(RedisService.class).deleteObject(keys); + } + + /** + * 设置cache key + * + * @param configKey 参数键 + * + * @return 缓存键key + */ + public static String getCacheKey (String configKey) { + return CacheConstants.SYS_DICT_KEY + configKey; + } +} diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/utils/SecurityUtils.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/utils/SecurityUtils.java new file mode 100644 index 0000000..6e3f92b --- /dev/null +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/utils/SecurityUtils.java @@ -0,0 +1,109 @@ +package com.muyu.common.security.utils; + +import com.muyu.common.core.constant.SecurityConstants; +import com.muyu.common.core.constant.TokenConstants; +import com.muyu.common.core.context.SecurityContextHolder; +import com.muyu.common.core.utils.ServletUtils; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.system.domain.LoginUser; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; + +import jakarta.servlet.http.HttpServletRequest; + +/** + * 权限获取工具类 + * + * @author muyu + */ +public class SecurityUtils { + /** + * 获取用户ID + */ + public static Long getUserId () { + return SecurityContextHolder.getUserId(); + } + + /** + * 获取用户名称 + */ + public static String getUsername () { + return SecurityContextHolder.getUserName(); + } + + /** + * 获取用户key + */ + public static String getUserKey () { + return SecurityContextHolder.getUserKey(); + } + + /** + * 获取登录用户信息 + */ + public static LoginUser getLoginUser () { + return SecurityContextHolder.get(SecurityConstants.LOGIN_USER, LoginUser.class); + } + + /** + * 获取请求token + */ + public static String getToken () { + return getToken(ServletUtils.getRequest()); + } + + /** + * 根据request获取请求token + */ + public static String getToken (HttpServletRequest request) { + // 从header获取token标识 + String token = request.getHeader(TokenConstants.AUTHENTICATION); + return replaceTokenPrefix(token); + } + + /** + * 裁剪token前缀 + */ + public static String replaceTokenPrefix (String token) { + // 如果前端设置了令牌前缀,则裁剪掉前缀 + if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX)) { + token = token.replaceFirst(TokenConstants.PREFIX, ""); + } + return token; + } + + /** + * 是否为管理员 + * + * @param userId 用户ID + * + * @return 结果 + */ + public static boolean isAdmin (Long userId) { + return userId != null && 1L == userId; + } + + /** + * 生成BCryptPasswordEncoder密码 + * + * @param password 密码 + * + * @return 加密字符串 + */ + public static String encryptPassword (String password) { + BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); + return passwordEncoder.encode(password); + } + + /** + * 判断密码是否相同 + * + * @param rawPassword 真实密码 + * @param encodedPassword 加密后字符 + * + * @return 结果 + */ + public static boolean matchesPassword (String rawPassword, String encodedPassword) { + BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); + return passwordEncoder.matches(rawPassword, encodedPassword); + } +} diff --git a/cloud-common/cloud-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..f4e76b1 --- /dev/null +++ b/cloud-common/cloud-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,5 @@ +com.muyu.common.security.config.WebMvcConfig +com.muyu.common.security.service.TokenService +com.muyu.common.security.aspect.PreAuthorizeAspect +com.muyu.common.security.aspect.InnerAuthAspect +com.muyu.common.security.handler.GlobalExceptionHandler diff --git a/cloud-common/cloud-common-system/pom.xml b/cloud-common/cloud-common-system/pom.xml new file mode 100644 index 0000000..ad4356f --- /dev/null +++ b/cloud-common/cloud-common-system/pom.xml @@ -0,0 +1,29 @@ + + + 4.0.0 + + com.muyu + cloud-common + 3.6.3 + + + cloud-common-system + + cloud-common-system系统级远程调用 + + + 17 + 17 + UTF-8 + + + + + + com.muyu + cloud-common-core + + + diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/LoginUser.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/LoginUser.java new file mode 100644 index 0000000..a18af37 --- /dev/null +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/LoginUser.java @@ -0,0 +1,66 @@ +package com.muyu.common.system.domain; + + +import lombok.*; + +import java.io.Serializable; +import java.util.Set; + +/** + * 用户信息 + * + * @author muyu + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class LoginUser implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 用户唯一标识 + */ + private String token; + + /** + * 用户名id + */ + private Long userid; + + /** + * 用户名 + */ + private String username; + + /** + * 登录时间 + */ + private Long loginTime; + + /** + * 过期时间 + */ + private Long expireTime; + + /** + * 登录IP地址 + */ + private String ipaddr; + + /** + * 权限列表 + */ + private Set permissions; + + /** + * 角色列表 + */ + private Set roles; + + /** + * 用户信息 + */ + private SysUser sysUser; + +} diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysDept.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysDept.java new file mode 100644 index 0000000..65ada9e --- /dev/null +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysDept.java @@ -0,0 +1,108 @@ +package com.muyu.common.system.domain; + +import com.muyu.common.core.web.domain.BaseEntity; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.*; +import lombok.experimental.SuperBuilder; + +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotBlank; +import java.util.ArrayList; +import java.util.List; + +/** + * 部门表 sys_dept + * + * @author muyu + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class SysDept extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 部门ID + */ + private Long deptId; + + /** + * 父部门ID + */ + private Long parentId; + + /** + * 祖级列表 + */ + private String ancestors; + + /** + * 部门名称 + */ + private String deptName; + + /** + * 显示顺序 + */ + private Integer orderNum; + + /** + * 负责人 + */ + private String leader; + + /** + * 联系电话 + */ + private String phone; + + /** + * 邮箱 + */ + private String email; + + /** + * 部门状态:0正常,1停用 + */ + private String status; + + /** + * 删除标志(0代表存在 2代表删除) + */ + private String delFlag; + + /** + * 父部门名称 + */ + private String parentName; + + /** + * 子部门 + */ + private List children = new ArrayList(); + + @NotBlank(message = "部门名称不能为空") + @Size(min = 0, max = 30, message = "部门名称长度不能超过30个字符") + public String getDeptName () { + return deptName; + } + + @NotNull(message = "显示顺序不能为空") + public Integer getOrderNum () { + return orderNum; + } + + @Size(min = 0, max = 11, message = "联系电话长度不能超过11个字符") + public String getPhone () { + return phone; + } + + @Email(message = "邮箱格式不正确") + @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符") + public String getEmail () { + return email; + } +} diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysDictData.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysDictData.java new file mode 100644 index 0000000..5beee3f --- /dev/null +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysDictData.java @@ -0,0 +1,104 @@ +package com.muyu.common.system.domain; + +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.annotation.Excel.ColumnType; +import com.muyu.common.core.constant.UserConstants; +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.*; +import lombok.experimental.SuperBuilder; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; + +/** + * 字典数据表 sys_dict_data + * + * @author muyu + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class SysDictData extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 字典编码 + */ + @Excel(name = "字典编码", cellType = ColumnType.NUMERIC) + private Long dictCode; + + /** + * 字典排序 + */ + @Excel(name = "字典排序", cellType = ColumnType.NUMERIC) + private Long dictSort; + + /** + * 字典标签 + */ + @Excel(name = "字典标签") + private String dictLabel; + + /** + * 字典键值 + */ + @Excel(name = "字典键值") + private String dictValue; + + /** + * 字典类型 + */ + @Excel(name = "字典类型") + private String dictType; + + /** + * 样式属性(其他样式扩展) + */ + private String cssClass; + + /** + * 表格字典样式 + */ + private String listClass; + + /** + * 是否默认(Y是 N否) + */ + @Excel(name = "是否默认", readConverterExp = "Y=是,N=否") + private String isDefault; + + /** + * 状态(0正常 1停用) + */ + @Excel(name = "状态", readConverterExp = "0=正常,1=停用") + private String status; + + @NotBlank(message = "字典标签不能为空") + @Size(min = 0, max = 100, message = "字典标签长度不能超过100个字符") + public String getDictLabel () { + return dictLabel; + } + + @NotBlank(message = "字典键值不能为空") + @Size(min = 0, max = 100, message = "字典键值长度不能超过100个字符") + public String getDictValue () { + return dictValue; + } + + @NotBlank(message = "字典类型不能为空") + @Size(min = 0, max = 100, message = "字典类型长度不能超过100个字符") + public String getDictType () { + return dictType; + } + + @Size(min = 0, max = 100, message = "样式属性长度不能超过100个字符") + public String getCssClass () { + return cssClass; + } + + public boolean getDefault () { + return UserConstants.YES.equals(this.isDefault); + } +} diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysDictType.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysDictType.java new file mode 100644 index 0000000..d623333 --- /dev/null +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysDictType.java @@ -0,0 +1,62 @@ +package com.muyu.common.system.domain; + +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.annotation.Excel.ColumnType; +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.*; +import lombok.experimental.SuperBuilder; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.Size; + +/** + * 字典类型表 sys_dict_type + * + * @author muyu + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class SysDictType extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 字典主键 + */ + @Excel(name = "字典主键", cellType = ColumnType.NUMERIC) + private Long dictId; + + /** + * 字典名称 + */ + @Excel(name = "字典名称") + private String dictName; + + /** + * 字典类型 + */ + @Excel(name = "字典类型") + private String dictType; + + /** + * 状态(0正常 1停用) + */ + @Excel(name = "状态", readConverterExp = "0=正常,1=停用") + private String status; + + @NotBlank(message = "字典名称不能为空") + @Size(min = 0, max = 100, message = "字典类型名称长度不能超过100个字符") + public String getDictName () { + return dictName; + } + + @NotBlank(message = "字典类型不能为空") + @Size(min = 0, max = 100, message = "字典类型类型长度不能超过100个字符") + @Pattern(regexp = "^[a-z][a-z0-9_]*$", message = "字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)") + public String getDictType () { + return dictType; + } +} diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysFile.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysFile.java new file mode 100644 index 0000000..ad48a1e --- /dev/null +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysFile.java @@ -0,0 +1,27 @@ +package com.muyu.common.system.domain; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 文件信息 + * + * @author muyu + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SysFile { + /** + * 文件名称 + */ + private String name; + + /** + * 文件地址 + */ + private String url; +} diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysLogininfor.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysLogininfor.java new file mode 100644 index 0000000..c66f131 --- /dev/null +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysLogininfor.java @@ -0,0 +1,64 @@ +package com.muyu.common.system.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.annotation.Excel.ColumnType; +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.Date; + +/** + * 系统访问记录表 sys_logininfor + * + * @author muyu + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class SysLogininfor extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * ID + */ + @Excel(name = "序号", cellType = ColumnType.NUMERIC) + private Long infoId; + + /** + * 用户账号 + */ + @Excel(name = "用户账号") + private String userName; + + /** + * 状态 0成功 1失败 + */ + @Excel(name = "状态", readConverterExp = "0=成功,1=失败") + private String status; + + /** + * 地址 + */ + @Excel(name = "地址") + private String ipaddr; + + /** + * 描述 + */ + @Excel(name = "描述") + private String msg; + + /** + * 访问时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "访问时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date accessTime; +} diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysOperLog.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysOperLog.java new file mode 100644 index 0000000..b207611 --- /dev/null +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysOperLog.java @@ -0,0 +1,129 @@ +package com.muyu.common.system.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.annotation.Excel.ColumnType; +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.Date; + +/** + * 操作日志记录表 oper_log + * + * @author muyu + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class SysOperLog extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 日志主键 + */ + @Excel(name = "操作序号", cellType = ColumnType.NUMERIC) + private Long operId; + + /** + * 操作模块 + */ + @Excel(name = "操作模块") + private String title; + + /** + * 业务类型(0其它 1新增 2修改 3删除) + */ + @Excel(name = "业务类型", readConverterExp = "0=其它,1=新增,2=修改,3=删除,4=授权,5=导出,6=导入,7=强退,8=生成代码,9=清空数据") + private Integer businessType; + + /** + * 业务类型数组 + */ + private Integer[] businessTypes; + + /** + * 请求方法 + */ + @Excel(name = "请求方法") + private String method; + + /** + * 请求方式 + */ + @Excel(name = "请求方式") + private String requestMethod; + + /** + * 操作类别(0其它 1后台用户 2手机端用户) + */ + @Excel(name = "操作类别", readConverterExp = "0=其它,1=后台用户,2=手机端用户") + private Integer operatorType; + + /** + * 操作人员 + */ + @Excel(name = "操作人员") + private String operName; + + /** + * 部门名称 + */ + @Excel(name = "部门名称") + private String deptName; + + /** + * 请求url + */ + @Excel(name = "请求地址") + private String operUrl; + + /** + * 操作地址 + */ + @Excel(name = "操作地址") + private String operIp; + + /** + * 请求参数 + */ + @Excel(name = "请求参数") + private String operParam; + + /** + * 返回参数 + */ + @Excel(name = "返回参数") + private String jsonResult; + + /** + * 操作状态(0正常 1异常) + */ + @Excel(name = "状态", readConverterExp = "0=正常,1=异常") + private Integer status; + + /** + * 错误消息 + */ + @Excel(name = "错误消息") + private String errorMsg; + + /** + * 操作时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date operTime; + + /** + * 消耗时间 + */ + @Excel(name = "消耗时间", suffix = "毫秒") + private Long costTime; +} diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysRole.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysRole.java new file mode 100644 index 0000000..1aab56a --- /dev/null +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysRole.java @@ -0,0 +1,127 @@ +package com.muyu.common.system.domain; + +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.annotation.Excel.ColumnType; +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.*; +import lombok.experimental.SuperBuilder; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import java.util.Set; + +/** + * 角色表 sys_role + * + * @author muyu + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class SysRole extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 角色ID + */ + @Excel(name = "角色序号", cellType = ColumnType.NUMERIC) + private Long roleId; + + /** + * 角色名称 + */ + @Excel(name = "角色名称") + private String roleName; + + /** + * 角色权限 + */ + @Excel(name = "角色权限") + private String roleKey; + + /** + * 角色排序 + */ + @Excel(name = "角色排序") + private Integer roleSort; + + /** + * 数据范围(1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限;5:仅本人数据权限) + */ + @Excel(name = "数据范围", readConverterExp = "1=所有数据权限,2=自定义数据权限,3=本部门数据权限,4=本部门及以下数据权限,5=仅本人数据权限") + private String dataScope; + + /** + * 菜单树选择项是否关联显示( 0:父子不互相关联显示 1:父子互相关联显示) + */ + private boolean menuCheckStrictly; + + /** + * 部门树选择项是否关联显示(0:父子不互相关联显示 1:父子互相关联显示 ) + */ + private boolean deptCheckStrictly; + + /** + * 角色状态(0正常 1停用) + */ + @Excel(name = "角色状态", readConverterExp = "0=正常,1=停用") + private String status; + + /** + * 删除标志(0代表存在 2代表删除) + */ + private String delFlag; + + /** + * 用户是否存在此角色标识 默认不存在 + */ + private boolean flag = false; + + /** + * 菜单组 + */ + private Long[] menuIds; + + /** + * 部门组(数据权限) + */ + private Long[] deptIds; + + /** + * 角色菜单权限 + */ + private Set permissions; + + + public SysRole (Long roleId) { + this.roleId = roleId; + } + + public static boolean isAdmin (Long roleId) { + return roleId != null && 1L == roleId; + } + + public boolean isAdmin () { + return isAdmin(this.roleId); + } + + @NotBlank(message = "角色名称不能为空") + @Size(min = 0, max = 30, message = "角色名称长度不能超过30个字符") + public String getRoleName () { + return roleName; + } + + @NotBlank(message = "权限字符不能为空") + @Size(min = 0, max = 100, message = "权限字符长度不能超过100个字符") + public String getRoleKey () { + return roleKey; + } + + @NotNull(message = "显示顺序不能为空") + public Integer getRoleSort () { + return roleSort; + } +} diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysUser.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysUser.java new file mode 100644 index 0000000..309fe95 --- /dev/null +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysUser.java @@ -0,0 +1,180 @@ +package com.muyu.common.system.domain; + +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.annotation.Excel.ColumnType; +import com.muyu.common.core.annotation.Excel.Type; +import com.muyu.common.core.annotation.Excels; +import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.common.core.xss.Xss; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.Date; +import java.util.List; + +/** + * 用户对象 sys_user + * + * @author muyu + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class SysUser extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 用户ID + */ + @Excel(name = "用户序号", cellType = ColumnType.NUMERIC, prompt = "用户编号") + private Long userId; + + /** + * 部门ID + */ + @Excel(name = "部门编号", type = Type.IMPORT) + private Long deptId; + + /** + * 用户账号 + */ + @Excel(name = "登录名称") + private String userName; + + /** + * 用户昵称 + */ + @Excel(name = "用户名称") + private String nickName; + + /** + * 用户邮箱 + */ + @Excel(name = "用户邮箱") + private String email; + + /** + * 手机号码 + */ + @Excel(name = "手机号码") + private String phonenumber; + + /** + * 用户性别 + */ + @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知") + private String sex; + + /** + * 用户头像 + */ + private String avatar; + + /** + * 密码 + */ + private String password; + + /** + * 帐号状态(0正常 1停用) + */ + @Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用") + private String status; + + /** + * 删除标志(0代表存在 2代表删除) + */ + private String delFlag; + + /** + * 最后登录IP + */ + @Excel(name = "最后登录IP", type = Type.EXPORT) + private String loginIp; + + /** + * 最后登录时间 + */ + @Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT) + private Date loginDate; + + /** + * 部门对象 + */ + @Excels({ + @Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT), + @Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT) + }) + private SysDept dept; + + /** + * 角色对象 + */ + private List roles; + + /** + * 角色组 + */ + private Long[] roleIds; + + /** + * 岗位组 + */ + private Long[] postIds; + + /** + * 角色ID + */ + private Long roleId; + + /** + * 数据库名称 + * @param userId + */ + private String databaseName; + + + public SysUser (Long userId) { + this.userId = userId; + } + + public static boolean isAdmin (Long userId) { + return userId != null && 1L == userId; + } + + public boolean isAdmin () { + return isAdmin(this.userId); + } + + @Xss(message = "用户昵称不能包含脚本字符") + @Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符") + public String getNickName () { + return nickName; + } + + @Xss(message = "用户账号不能包含脚本字符") + @NotBlank(message = "用户账号不能为空") + @Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符") + public String getUserName () { + return userName; + } + + @Email(message = "邮箱格式不正确") + @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符") + public String getEmail () { + return email; + } + + @Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符") + public String getPhonenumber () { + return phonenumber; + } +} diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/RemoteFileService.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/RemoteFileService.java new file mode 100644 index 0000000..96dd181 --- /dev/null +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/RemoteFileService.java @@ -0,0 +1,29 @@ +package com.muyu.common.system.remote; + +import com.muyu.common.core.constant.ServiceNameConstants; +import com.muyu.common.core.domain.Result; +import com.muyu.common.system.domain.SysFile; +import com.muyu.common.system.remote.factory.RemoteFileFallbackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.multipart.MultipartFile; + +/** + * 文件服务 + * + * @author muyu + */ +@FeignClient(contextId = "remoteFileService", value = ServiceNameConstants.FILE_SERVICE, fallbackFactory = RemoteFileFallbackFactory.class) +public interface RemoteFileService { + /** + * 上传文件 + * + * @param file 文件信息 + * + * @return 结果 + */ + @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public Result upload (@RequestPart(value = "file") MultipartFile file); +} diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/RemoteLogService.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/RemoteLogService.java new file mode 100644 index 0000000..7e767c4 --- /dev/null +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/RemoteLogService.java @@ -0,0 +1,42 @@ +package com.muyu.common.system.remote; + +import com.muyu.common.core.constant.SecurityConstants; +import com.muyu.common.core.constant.ServiceNameConstants; +import com.muyu.common.core.domain.Result; +import com.muyu.common.system.domain.SysLogininfor; +import com.muyu.common.system.domain.SysOperLog; +import com.muyu.common.system.remote.factory.RemoteLogFallbackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; + +/** + * 日志服务 + * + * @author muyu + */ +@FeignClient(contextId = "remoteLogService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteLogFallbackFactory.class) +public interface RemoteLogService { + /** + * 保存系统日志 + * + * @param sysOperLog 日志实体 + * @param source 请求来源 + * + * @return 结果 + */ + @PostMapping("/operlog") + public Result saveLog (@RequestBody SysOperLog sysOperLog, @RequestHeader(SecurityConstants.FROM_SOURCE) String source) throws Exception; + + /** + * 保存访问记录 + * + * @param sysLogininfor 访问实体 + * @param source 请求来源 + * + * @return 结果 + */ + @PostMapping("/logininfor") + public Result saveLogininfor (@RequestBody SysLogininfor sysLogininfor, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); +} diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/RemoteUserService.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/RemoteUserService.java new file mode 100644 index 0000000..1730fb9 --- /dev/null +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/RemoteUserService.java @@ -0,0 +1,45 @@ +package com.muyu.common.system.remote; + +import com.muyu.common.core.constant.SecurityConstants; +import com.muyu.common.core.constant.ServiceNameConstants; +import com.muyu.common.core.domain.Result; +import com.muyu.common.system.domain.SysUser; +import com.muyu.common.system.remote.factory.RemoteUserFallbackFactory; +import com.muyu.common.system.domain.LoginUser; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 用户服务 + * + * @author muyu + */ +@FeignClient(contextId = "remoteUserService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteUserFallbackFactory.class) +public interface RemoteUserService { + /** + * 通过用户名查询用户信息 + * + * @param username 用户名 + * @param source 请求来源 + * + * @return 结果 + */ + @GetMapping("/user/info/{username}") + public Result getUserInfo (@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + /** + * 注册用户信息 + * + * @param sysUser 用户信息 + * @param source 请求来源 + * + * @return 结果 + */ + @PostMapping("/user/register") + public Result registerUserInfo (@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + @GetMapping("/user/companyList") + public Result> companyList (); +} diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteFileFallbackFactory.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteFileFallbackFactory.java new file mode 100644 index 0000000..395f74f --- /dev/null +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteFileFallbackFactory.java @@ -0,0 +1,31 @@ +package com.muyu.common.system.remote.factory; + +import com.muyu.common.core.domain.Result; +import com.muyu.common.system.remote.RemoteFileService; +import com.muyu.common.system.domain.SysFile; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +/** + * 文件服务降级处理 + * + * @author muyu + */ +@Component +public class RemoteFileFallbackFactory implements FallbackFactory { + private static final Logger log = LoggerFactory.getLogger(RemoteFileFallbackFactory.class); + + @Override + public RemoteFileService create (Throwable throwable) { + log.error("文件服务调用失败:{}", throwable.getMessage()); + return new RemoteFileService() { + @Override + public Result upload (MultipartFile file) { + return Result.error("上传文件失败:" + throwable.getMessage()); + } + }; + } +} diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteLogFallbackFactory.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteLogFallbackFactory.java new file mode 100644 index 0000000..1fc0491 --- /dev/null +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteLogFallbackFactory.java @@ -0,0 +1,37 @@ +package com.muyu.common.system.remote.factory; + +import com.muyu.common.core.domain.Result; +import com.muyu.common.system.remote.RemoteLogService; +import com.muyu.common.system.domain.SysLogininfor; +import com.muyu.common.system.domain.SysOperLog; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +/** + * 日志服务降级处理 + * + * @author muyu + */ +@Component +public class RemoteLogFallbackFactory implements FallbackFactory { + private static final Logger log = LoggerFactory.getLogger(RemoteLogFallbackFactory.class); + + @Override + public RemoteLogService create (Throwable throwable) { + log.error("日志服务调用失败:{}", throwable.getMessage(), throwable); + return new RemoteLogService() { + @Override + public Result saveLog (SysOperLog sysOperLog, String source) { + return Result.error("保存操作日志失败:" + throwable.getMessage()); + } + + @Override + public Result saveLogininfor (SysLogininfor sysLogininfor, String source) { + return Result.error("保存登录日志失败:" + throwable.getMessage()); + } + }; + + } +} diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteUserFallbackFactory.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteUserFallbackFactory.java new file mode 100644 index 0000000..f274462 --- /dev/null +++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteUserFallbackFactory.java @@ -0,0 +1,44 @@ +package com.muyu.common.system.remote.factory; + +import com.muyu.common.core.domain.Result; +import com.muyu.common.system.remote.RemoteUserService; +import com.muyu.common.system.domain.SysUser; +import com.muyu.common.system.domain.LoginUser; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * 用户服务降级处理 + * + * @author muyu + */ +@Component +public class RemoteUserFallbackFactory implements FallbackFactory { + private static final Logger log = LoggerFactory.getLogger(RemoteUserFallbackFactory.class); + + @Override + public RemoteUserService create (Throwable throwable) { + log.error("用户服务调用失败:{}", throwable.getMessage()); + return new RemoteUserService() { + @Override + public Result getUserInfo (String username, String source) { + return Result.error("获取用户失败:" + throwable.getMessage()); + } + + @Override + public Result registerUserInfo (SysUser sysUser, String source) { + return Result.error("注册用户失败:" + throwable.getMessage()); + } + @Override + public Result> companyList() { + return Result.error("saas连接system失败:" + throwable.getMessage()); + } + }; + } + + +} diff --git a/cloud-common/cloud-common-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..b9a11b8 --- /dev/null +++ b/cloud-common/cloud-common-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,3 @@ +com.muyu.common.system.remote.factory.RemoteUserFallbackFactory +com.muyu.common.system.remote.factory.RemoteLogFallbackFactory +com.muyu.common.system.remote.factory.RemoteFileFallbackFactory diff --git a/cloud-common/cloud-common-xxl/pom.xml b/cloud-common/cloud-common-xxl/pom.xml new file mode 100644 index 0000000..4af9214 --- /dev/null +++ b/cloud-common/cloud-common-xxl/pom.xml @@ -0,0 +1,37 @@ + + + 4.0.0 + + com.muyu + cloud-common + 3.6.3 + + + cloud-common-xxl + + XllJob定时任务 + + + 17 + 17 + UTF-8 + + + + + + + com.muyu + cloud-common-core + + + + + com.xuxueli + xxl-job-core + + + + \ No newline at end of file diff --git a/cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/XXLJobConfig.java b/cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/XXLJobConfig.java new file mode 100644 index 0000000..85ebf6f --- /dev/null +++ b/cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/XXLJobConfig.java @@ -0,0 +1,28 @@ +package com.muyu.common.xxl; + +import com.muyu.common.core.utils.StringUtils; +import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; +import lombok.extern.log4j.Log4j2; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +@Log4j2 +//@Component +public class XXLJobConfig { +// @Bean + public XxlJobSpringExecutor xxlJobExecutor(XxlJobProperties xxlJobProperties) { + if (StringUtils.isEmpty(xxlJobProperties.getAdminAddresses())){ + throw new RuntimeException("请在bootstrap.yml当中配置shared-configs项,xxl-job共享配置[application-xxl-config]"); + } + XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); + xxlJobSpringExecutor.setAdminAddresses(xxlJobProperties.getAdminAddresses()); + xxlJobSpringExecutor.setAppname(xxlJobProperties.getAppName()); + xxlJobSpringExecutor.setIp(xxlJobProperties.getIp()); + xxlJobSpringExecutor.setPort(xxlJobProperties.getPort()); + xxlJobSpringExecutor.setAccessToken(xxlJobProperties.getAccessToken()); + xxlJobSpringExecutor.setLogPath(xxlJobProperties.getLogPath()); + xxlJobSpringExecutor.setLogRetentionDays(xxlJobProperties.getLogRetentionDays()); + log.info(">>>>>>>>>>> xxl-job config init success."); + return xxlJobSpringExecutor; + } +} diff --git a/cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/XxlJobProperties.java b/cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/XxlJobProperties.java new file mode 100644 index 0000000..c1428f7 --- /dev/null +++ b/cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/XxlJobProperties.java @@ -0,0 +1,63 @@ +package com.muyu.common.xxl; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +@ConfigurationProperties(prefix = "xxl-job") +public class XxlJobProperties { + + /** + * 调度中心部署根地址 [选填]: + * 如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调"; + * 为空则关闭自动注册; + */ + private String adminAddresses; + + /** + * 执行器通讯TOKEN [选填]: + * 非空时启用; + */ + private String accessToken; + + /** + * 执行器AppName [选填]: + * 执行器心跳注册分组依据;为空则关闭自动注册 + */ + private String appName; + + /** + * 执行器注册 [选填]: + * 优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。 + * 从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。 + */ + private String address; + + /** + * 执行器IP [选填]: + * 默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用; + * 地址信息用于 "执行器注册" 和 "调度中心请求并触发任务"; + */ + private String ip; + + /** + * 执行器端口号 [选填]: + * 小于等于0则自动获取;默认端口为9999, + * 单机部署多个执行器时,注意要配置不同执行器端口; + */ + private int port; + + /** + * 执行器运行日志文件存储磁盘路径 [选填]: + * 需要对该路径拥有读写权限;为空则使用默认路径; + */ + private String logPath; + + /** + * 执行器日志文件保存天数 [选填]: + * 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能; + */ + private int logRetentionDays; +} diff --git a/cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/demo/XxlJobDemoService.java b/cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/demo/XxlJobDemoService.java new file mode 100644 index 0000000..51cd2a4 --- /dev/null +++ b/cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/demo/XxlJobDemoService.java @@ -0,0 +1,38 @@ +package com.muyu.common.xxl.demo; + +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.extern.log4j.Log4j2; +import org.springframework.stereotype.Component; + +@Log4j2 +@Component +public class XxlJobDemoService { + + /** + * 无参测试 + */ + @XxlJob("xxl-job-demo-no-param") + public void xxlJobDemoNoParam(){ + log.info("调度名称:[{}] - 无参", "xxl-job-demo-no-param"); + } + + /** + * 有参测试 + */ + @XxlJob("xxl-job-demo-one-param") + public void xxlJobDemoOneParam(){ + String param = XxlJobHelper.getJobParam(); + log.info("调度名称:[{}] - 参数:[{}]", "xxl-job-demo-one-param", param); + } + /** + * 分片测试 + */ + @XxlJob("xxl-job-slice-demo") + public void xxlJobSliceDemo(){ + int shardTotal = XxlJobHelper.getShardTotal(); + int shardIndex = XxlJobHelper.getShardIndex(); + String param = XxlJobHelper.getJobParam(); + log.info("调度名称:[{}-[{}/{}(分片位置/分片总数)]] - 参数:[{}]", "xxl-job-slice-demo",shardIndex, shardTotal, param); + } +} diff --git a/cloud-common/cloud-common-xxl/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-xxl/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..1404a51 --- /dev/null +++ b/cloud-common/cloud-common-xxl/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,3 @@ +com.muyu.common.xxl.XXLJobConfig +com.muyu.common.xxl.XxlJobProperties +com.muyu.common.xxl.demo.XxlJobDemoService \ No newline at end of file diff --git a/cloud-common/pom.xml b/cloud-common/pom.xml new file mode 100644 index 0000000..7cb3935 --- /dev/null +++ b/cloud-common/pom.xml @@ -0,0 +1,35 @@ + + + + com.muyu + cloud-server + 3.6.3 + + 4.0.0 + + + cloud-common-log + cloud-common-core + cloud-common-redis + cloud-common-seata + cloud-common-api-doc + cloud-common-security + cloud-common-datascope + cloud-common-datasource + cloud-common-system + cloud-common-xxl + cloud-common-rabbit + cloud-common-saas + cloud-common-kafka + cloud-common-cache + + + cloud-common + pom + + + cloud-common通用模块 + + + diff --git a/cloud-gateway/pom.xml b/cloud-gateway/pom.xml new file mode 100644 index 0000000..106c740 --- /dev/null +++ b/cloud-gateway/pom.xml @@ -0,0 +1,104 @@ + + + com.muyu + cloud-server + 3.6.3 + + 4.0.0 + + cloud-gateway + + + cloud-gateway网关模块 + + + + + + + org.springframework.cloud + spring-cloud-starter-gateway + + + + + 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 + + + + + com.alibaba.cloud + spring-cloud-alibaba-sentinel-gateway + + + + + com.alibaba.csp + sentinel-datasource-nacos + + + + + org.springframework.boot + spring-boot-starter-actuator + + + + + org.springframework.cloud + spring-cloud-loadbalancer + + + + + pro.fessional + kaptcha + + + + + com.muyu + cloud-common-redis + + + + com.github.xiaoymin + knife4j-gateway-spring-boot-starter + 4.5.0 + + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + + diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/CloudGatewayApplication.java b/cloud-gateway/src/main/java/com/muyu/gateway/CloudGatewayApplication.java new file mode 100644 index 0000000..43c7ed9 --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/CloudGatewayApplication.java @@ -0,0 +1,17 @@ +package com.muyu.gateway; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; + +/** + * 网关启动程序 + * + * @author muyu + */ +@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) +public class CloudGatewayApplication { + public static void main (String[] args) { + SpringApplication.run(CloudGatewayApplication.class, args); + } +} diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/config/CaptchaConfig.java b/cloud-gateway/src/main/java/com/muyu/gateway/config/CaptchaConfig.java new file mode 100644 index 0000000..557af8a --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/config/CaptchaConfig.java @@ -0,0 +1,82 @@ +package com.muyu.gateway.config; + +import com.google.code.kaptcha.impl.DefaultKaptcha; +import com.google.code.kaptcha.util.Config; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.Properties; + +import static com.google.code.kaptcha.Constants.*; + +/** + * 验证码配置 + * + * @author muyu + */ +@Configuration +public class CaptchaConfig { + @Bean(name = "captchaProducer") + public DefaultKaptcha getKaptchaBean () { + DefaultKaptcha defaultKaptcha = new DefaultKaptcha(); + Properties properties = new Properties(); + // 是否有边框 默认为true 我们可以自己设置yes,no + properties.setProperty(KAPTCHA_BORDER, "yes"); + // 验证码文本字符颜色 默认为Color.BLACK + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "black"); + // 验证码图片宽度 默认为200 + properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160"); + // 验证码图片高度 默认为50 + properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60"); + // 验证码文本字符大小 默认为40 + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "38"); + // KAPTCHA_SESSION_KEY + properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCode"); + // 验证码文本字符长度 默认为5 + properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4"); + // 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize) + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier"); + // 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影com.google.code.kaptcha.impl.ShadowGimpy + properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy"); + Config config = new Config(properties); + defaultKaptcha.setConfig(config); + return defaultKaptcha; + } + + @Bean(name = "captchaProducerMath") + public DefaultKaptcha getKaptchaBeanMath () { + DefaultKaptcha defaultKaptcha = new DefaultKaptcha(); + Properties properties = new Properties(); + // 是否有边框 默认为true 我们可以自己设置yes,no + properties.setProperty(KAPTCHA_BORDER, "yes"); + // 边框颜色 默认为Color.BLACK + properties.setProperty(KAPTCHA_BORDER_COLOR, "105,179,90"); + // 验证码文本字符颜色 默认为Color.BLACK + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "blue"); + // 验证码图片宽度 默认为200 + properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160"); + // 验证码图片高度 默认为50 + properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60"); + // 验证码文本字符大小 默认为40 + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "35"); + // KAPTCHA_SESSION_KEY + properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCodeMath"); + // 验证码文本生成器 + properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, "com.muyu.gateway.config.KaptchaTextCreator"); + // 验证码文本字符间距 默认为2 + properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_SPACE, "3"); + // 验证码文本字符长度 默认为5 + properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "6"); + // 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize) + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier"); + // 验证码噪点颜色 默认为Color.BLACK + properties.setProperty(KAPTCHA_NOISE_COLOR, "white"); + // 干扰实现类 + properties.setProperty(KAPTCHA_NOISE_IMPL, "com.google.code.kaptcha.impl.NoNoise"); + // 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影com.google.code.kaptcha.impl.ShadowGimpy + properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy"); + Config config = new Config(properties); + defaultKaptcha.setConfig(config); + return defaultKaptcha; + } +} diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/config/GatewayConfig.java b/cloud-gateway/src/main/java/com/muyu/gateway/config/GatewayConfig.java new file mode 100644 index 0000000..bf004bf --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/config/GatewayConfig.java @@ -0,0 +1,21 @@ +package com.muyu.gateway.config; + +import com.muyu.gateway.handler.SentinelFallbackHandler; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; + +/** + * 网关限流配置 + * + * @author muyu + */ +@Configuration +public class GatewayConfig { + @Bean + @Order(Ordered.HIGHEST_PRECEDENCE) + public SentinelFallbackHandler sentinelGatewayExceptionHandler () { + return new SentinelFallbackHandler(); + } +} diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/config/KaptchaTextCreator.java b/cloud-gateway/src/main/java/com/muyu/gateway/config/KaptchaTextCreator.java new file mode 100644 index 0000000..7b0636d --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/config/KaptchaTextCreator.java @@ -0,0 +1,61 @@ +package com.muyu.gateway.config; + +import com.google.code.kaptcha.text.impl.DefaultTextCreator; + +import java.util.Random; + +/** + * 验证码文本生成器 + * + * @author muyu + */ +public class KaptchaTextCreator extends DefaultTextCreator { + private static final String[] CNUMBERS = "0,1,2,3,4,5,6,7,8,9,10".split(","); + + @Override + public String getText () { + Integer result = 0; + Random random = new Random(); + int x = random.nextInt(10); + int y = random.nextInt(10); + StringBuilder suChinese = new StringBuilder(); + int randomoperands = random.nextInt(3); + if (randomoperands == 0) { + result = x * y; + suChinese.append(CNUMBERS[x]); + suChinese.append("*"); + suChinese.append(CNUMBERS[y]); + } else if (randomoperands == 1) { + if ((x != 0) && y % x == 0) { + result = y / x; + suChinese.append(CNUMBERS[y]); + suChinese.append("/"); + suChinese.append(CNUMBERS[x]); + } else { + result = x + y; + suChinese.append(CNUMBERS[x]); + suChinese.append("+"); + suChinese.append(CNUMBERS[y]); + } + } else if (randomoperands == 2) { + if (x >= y) { + result = x - y; + suChinese.append(CNUMBERS[x]); + suChinese.append("-"); + suChinese.append(CNUMBERS[y]); + } else { + result = y - x; + suChinese.append(CNUMBERS[y]); + suChinese.append("-"); + suChinese.append(CNUMBERS[x]); + } + } else { + result = x + y; + suChinese.append(CNUMBERS[x]); + suChinese.append("+"); + suChinese.append(CNUMBERS[y]); + } + suChinese.append("=?@" + result); + return suChinese.toString(); + } +} diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/config/RouterFunctionConfiguration.java b/cloud-gateway/src/main/java/com/muyu/gateway/config/RouterFunctionConfiguration.java new file mode 100644 index 0000000..41b8e47 --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/config/RouterFunctionConfiguration.java @@ -0,0 +1,29 @@ +package com.muyu.gateway.config; + +import com.muyu.gateway.handler.ValidateCodeHandler; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.MediaType; +import org.springframework.web.reactive.function.server.RequestPredicates; +import org.springframework.web.reactive.function.server.RouterFunction; +import org.springframework.web.reactive.function.server.RouterFunctions; + +/** + * 路由配置信息 + * + * @author muyu + */ +@Configuration +public class RouterFunctionConfiguration { + @Autowired + private ValidateCodeHandler validateCodeHandler; + + @SuppressWarnings("rawtypes") + @Bean + public RouterFunction routerFunction () { + return RouterFunctions.route( + RequestPredicates.GET("/code").and(RequestPredicates.accept(MediaType.TEXT_PLAIN)), + validateCodeHandler); + } +} diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/config/properties/CaptchaProperties.java b/cloud-gateway/src/main/java/com/muyu/gateway/config/properties/CaptchaProperties.java new file mode 100644 index 0000000..60b1814 --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/config/properties/CaptchaProperties.java @@ -0,0 +1,41 @@ +package com.muyu.gateway.config.properties; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.context.annotation.Configuration; + +/** + * 验证码配置 + * + * @author muyu + */ +@Configuration +@RefreshScope +@ConfigurationProperties(prefix = "security.captcha") +public class CaptchaProperties { + /** + * 验证码开关 + */ + private Boolean enabled; + + /** + * 验证码类型(math 数组计算 char 字符) + */ + private String type; + + public Boolean getEnabled () { + return enabled; + } + + public void setEnabled (Boolean enabled) { + this.enabled = enabled; + } + + public String getType () { + return type; + } + + public void setType (String type) { + this.type = type; + } +} diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/config/properties/IgnoreWhiteProperties.java b/cloud-gateway/src/main/java/com/muyu/gateway/config/properties/IgnoreWhiteProperties.java new file mode 100644 index 0000000..d5ea46c --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/config/properties/IgnoreWhiteProperties.java @@ -0,0 +1,31 @@ +package com.muyu.gateway.config.properties; + +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; + +/** + * 放行白名单配置 + * + * @author muyu + */ +@Configuration +@RefreshScope +@ConfigurationProperties(prefix = "security.ignore") +public class IgnoreWhiteProperties { + /** + * 放行白名单配置,网关不校验此处的白名单 + */ + private List whites = new ArrayList<>(); + + public List getWhites () { + return whites; + } + + public void setWhites (List whites) { + this.whites = whites; + } +} diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/config/properties/XssProperties.java b/cloud-gateway/src/main/java/com/muyu/gateway/config/properties/XssProperties.java new file mode 100644 index 0000000..31dcc6a --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/config/properties/XssProperties.java @@ -0,0 +1,44 @@ +package com.muyu.gateway.config.properties; + +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; + +/** + * XSS跨站脚本配置 + * + * @author muyu + */ +@Configuration +@RefreshScope +@ConfigurationProperties(prefix = "security.xss") +public class XssProperties { + /** + * Xss开关 + */ + private Boolean enabled; + + /** + * 排除路径 + */ + private List excludeUrls = new ArrayList<>(); + + public Boolean getEnabled () { + return enabled; + } + + public void setEnabled (Boolean enabled) { + this.enabled = enabled; + } + + public List getExcludeUrls () { + return excludeUrls; + } + + public void setExcludeUrls (List excludeUrls) { + this.excludeUrls = excludeUrls; + } +} diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/filter/AccessLogFilter.java b/cloud-gateway/src/main/java/com/muyu/gateway/filter/AccessLogFilter.java new file mode 100644 index 0000000..9ceec12 --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/filter/AccessLogFilter.java @@ -0,0 +1,226 @@ +package com.muyu.gateway.filter; + +import cn.hutool.core.date.LocalDateTimeUtil; +import com.alibaba.nacos.common.utils.StringUtils; +import com.muyu.common.core.constant.SecurityConstants; +import com.muyu.gateway.model.AccessLog; +import com.muyu.gateway.utils.WebFrameworkUtils; +import lombok.extern.log4j.Log4j2; +import org.reactivestreams.Publisher; +import org.springframework.cloud.gateway.filter.GatewayFilterChain; +import org.springframework.cloud.gateway.filter.GlobalFilter; +import org.springframework.cloud.gateway.filter.factory.rewrite.CachedBodyOutputMessage; +import org.springframework.cloud.gateway.filter.factory.rewrite.ModifyRequestBodyGatewayFilterFactory; +import org.springframework.cloud.gateway.support.BodyInserterContext; +import org.springframework.cloud.gateway.support.ServerWebExchangeUtils; +import org.springframework.core.Ordered; +import org.springframework.core.io.buffer.DataBuffer; +import org.springframework.core.io.buffer.DataBufferFactory; +import org.springframework.core.io.buffer.DataBufferUtils; +import org.springframework.core.io.buffer.DefaultDataBufferFactory; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ReactiveHttpOutputMessage; +import org.springframework.http.codec.HttpMessageReader; +import org.springframework.http.server.reactive.ServerHttpRequest; +import org.springframework.http.server.reactive.ServerHttpRequestDecorator; +import org.springframework.http.server.reactive.ServerHttpResponse; +import org.springframework.http.server.reactive.ServerHttpResponseDecorator; +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.function.BodyInserter; +import org.springframework.web.reactive.function.BodyInserters; +import org.springframework.web.reactive.function.server.HandlerStrategies; +import org.springframework.web.reactive.function.server.ServerRequest; +import org.springframework.web.server.ServerWebExchange; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +import java.nio.charset.StandardCharsets; +import java.time.LocalDateTime; +import java.util.List; + + +/** + * 网关的访问日志过滤器 + *

+ *

+ * TODO 如果网关执行异常,不会记录访问日志,后续研究下 https://github.com/Silvmike/webflux-demo/blob/master/tests/src/test/java/ru/hardcoders/demo/webflux/web_handler/filters/logging + */ +@Log4j2 +@Component +public class AccessLogFilter implements GlobalFilter, Ordered { + + private final List> messageReaders = HandlerStrategies.withDefaults().messageReaders(); + + /** + * 打印日志 + * + * @param gatewayLog 网关日志 + */ + private void writeAccessLog(AccessLog gatewayLog) { + log.info("[网关日志:{}]", gatewayLog.toString()); + } + + @Override + public int getOrder() { + return -99; + } + + @Override + public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { + // 将 Request 中可以直接获取到的参数,设置到网关日志 + ServerHttpRequest request = exchange.getRequest(); + // TODO traceId + AccessLog accessLog = AccessLog.builder() + .userId(request.getHeaders().getFirst(SecurityConstants.DETAILS_USER_ID)) + .route(WebFrameworkUtils.getGatewayRoute(exchange)) + .schema(request.getURI().getScheme()) + .requestMethod(request.getMethod().name()) + .requestUrl(request.getURI().getRawPath()) + .queryParams(request.getQueryParams()) + .requestHeaders(request.getHeaders()) + .startTime(LocalDateTime.now()) + .userIp(WebFrameworkUtils.getClientIP(exchange)) + .build(); + + // 继续 filter 过滤 + MediaType mediaType = request.getHeaders().getContentType(); + return MediaType.APPLICATION_FORM_URLENCODED.isCompatibleWith(mediaType) || MediaType.APPLICATION_JSON.isCompatibleWith(mediaType) + ? + filterWithRequestBody(exchange, chain, accessLog) + : + filterWithoutRequestBody(exchange, chain, accessLog); + } + + private Mono filterWithoutRequestBody(ServerWebExchange exchange, GatewayFilterChain chain, AccessLog accessLog) { + // 包装 Response,用于记录 Response Body + ServerHttpResponseDecorator decoratedResponse = recordResponseLog(exchange, accessLog); + return chain.filter(exchange.mutate().response(decoratedResponse).build()) + .then(Mono.fromRunnable(() -> writeAccessLog(accessLog))); // 打印日志 + } + + /** + * 参考 {@link ModifyRequestBodyGatewayFilterFactory} 实现 + *

+ * 差别主要在于使用 modifiedBody 来读取 Request Body 数据 + */ + private Mono filterWithRequestBody(ServerWebExchange exchange, GatewayFilterChain chain, AccessLog gatewayLog) { + // 设置 Request Body 读取时,设置到网关日志 + ServerRequest serverRequest = ServerRequest.create(exchange, messageReaders); + Mono modifiedBody = serverRequest.bodyToMono(String.class).flatMap(body -> { + gatewayLog.setRequestBody(body); + return Mono.just(body); + }); + + // 创建 BodyInserter 对象 + BodyInserter, ReactiveHttpOutputMessage> bodyInserter = BodyInserters.fromPublisher(modifiedBody, String.class); + // 创建 CachedBodyOutputMessage 对象 + HttpHeaders headers = new HttpHeaders(); + headers.putAll(exchange.getRequest().getHeaders()); + // the new content type will be computed by bodyInserter + // and then set in the request decorator + headers.remove(HttpHeaders.CONTENT_LENGTH); // 移除 + CachedBodyOutputMessage outputMessage = new CachedBodyOutputMessage(exchange, headers); + // 通过 BodyInserter 将 Request Body 写入到 CachedBodyOutputMessage 中 + return bodyInserter.insert(outputMessage, new BodyInserterContext()).then(Mono.defer(() -> { + // 包装 Request,用于缓存 Request Body + ServerHttpRequest decoratedRequest = requestDecorate(exchange, headers, outputMessage); + // 包装 Response,用于记录 Response Body + ServerHttpResponseDecorator decoratedResponse = recordResponseLog(exchange, gatewayLog); + // 记录普通的 + return chain.filter(exchange.mutate().request(decoratedRequest).response(decoratedResponse).build()) + .then(Mono.fromRunnable(() -> writeAccessLog(gatewayLog))); // 打印日志 + + })); + } + + /** + * 记录响应日志 + * 通过 DataBufferFactory 解决响应体分段传输问题。 + */ + private ServerHttpResponseDecorator recordResponseLog(ServerWebExchange exchange, AccessLog gatewayLog) { + ServerHttpResponse response = exchange.getResponse(); + return new ServerHttpResponseDecorator(response) { + + @Override + public Mono writeWith(Publisher body) { + if (body instanceof Flux) { + DataBufferFactory bufferFactory = response.bufferFactory(); + // 计算执行时间 + gatewayLog.setEndTime(LocalDateTime.now()); + gatewayLog.setDuration((int) (LocalDateTimeUtil.between(gatewayLog.getStartTime(), + gatewayLog.getEndTime()).toMillis())); + // 设置其它字段 +// gatewayLog.setUserId(SecurityFrameworkUtils.getLoginUserId(exchange)); + gatewayLog.setResponseHeaders(response.getHeaders()); + gatewayLog.setHttpStatus(response.getStatusCode()); + + // 获取响应类型,如果是 json 就打印 + String originalResponseContentType = exchange.getAttribute(ServerWebExchangeUtils.ORIGINAL_RESPONSE_CONTENT_TYPE_ATTR); + if (StringUtils.isNotBlank(originalResponseContentType) + && originalResponseContentType.contains("application/json")) { + Flux fluxBody = Flux.from(body); + return super.writeWith(fluxBody.buffer().map(dataBuffers -> { + // 设置 response body 到网关日志 + byte[] content = readContent(dataBuffers); + String responseResult = new String(content, StandardCharsets.UTF_8); + gatewayLog.setResponseBody(responseResult); + + // 响应 + return bufferFactory.wrap(content); + })); + } + } + // if body is not a flux. never got there. + return super.writeWith(body); + } + }; + } + + // ========== 参考 ModifyRequestBodyGatewayFilterFactory 中的方法 ========== + + /** + * 请求装饰器,支持重新计算 headers、body 缓存 + * + * @param exchange 请求 + * @param headers 请求头 + * @param outputMessage body 缓存 + * @return 请求装饰器 + */ + private ServerHttpRequestDecorator requestDecorate(ServerWebExchange exchange, HttpHeaders headers, CachedBodyOutputMessage outputMessage) { + return new ServerHttpRequestDecorator(exchange.getRequest()) { + + @Override + public HttpHeaders getHeaders() { + long contentLength = headers.getContentLength(); + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.putAll(super.getHeaders()); + if (contentLength > 0) { + httpHeaders.setContentLength(contentLength); + } else { + httpHeaders.set(HttpHeaders.TRANSFER_ENCODING, "chunked"); + } + return httpHeaders; + } + + @Override + public Flux getBody() { + return outputMessage.getBody(); + } + }; + } + + // ========== 参考 ModifyResponseBodyGatewayFilterFactory 中的方法 ========== + + private byte[] readContent(List dataBuffers) { + // 合并多个流集合,解决返回体分段传输 + DataBufferFactory dataBufferFactory = new DefaultDataBufferFactory(); + DataBuffer join = dataBufferFactory.join(dataBuffers); + byte[] content = new byte[join.readableByteCount()]; + join.read(content); + // 释放掉内存 + DataBufferUtils.release(join); + return content; + } + +} diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/filter/AuthFilter.java b/cloud-gateway/src/main/java/com/muyu/gateway/filter/AuthFilter.java new file mode 100644 index 0000000..47e073f --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/filter/AuthFilter.java @@ -0,0 +1,120 @@ +package com.muyu.gateway.filter; + +import com.muyu.common.core.constant.CacheConstants; +import com.muyu.common.core.constant.HttpStatus; +import com.muyu.common.core.constant.SecurityConstants; +import com.muyu.common.core.constant.TokenConstants; +import com.muyu.common.core.utils.JwtUtils; +import com.muyu.common.core.utils.ServletUtils; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.redis.service.RedisService; +import com.muyu.gateway.config.properties.IgnoreWhiteProperties; +import io.jsonwebtoken.Claims; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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.http.server.reactive.ServerHttpRequest; +import org.springframework.stereotype.Component; +import org.springframework.web.server.ServerWebExchange; +import reactor.core.publisher.Mono; + +/** + * 网关鉴权 + * + * @author muyu + */ +@Component +public class AuthFilter implements GlobalFilter, Ordered { + private static final Logger log = LoggerFactory.getLogger(AuthFilter.class); + + // 排除过滤的 uri 地址,nacos自行添加 + @Autowired + private IgnoreWhiteProperties ignoreWhite; + + @Autowired + private RedisService redisService; + + + @Override + public Mono filter (ServerWebExchange exchange, GatewayFilterChain chain) { + ServerHttpRequest request = exchange.getRequest(); + ServerHttpRequest.Builder mutate = request.mutate(); + + String url = request.getURI().getPath(); + // 跳过不需要验证的路径 + if (StringUtils.matches(url, ignoreWhite.getWhites())) { + return chain.filter(exchange); + } + String token = getToken(request); + if (StringUtils.isEmpty(token)) { + return unauthorizedResponse(exchange, "令牌不能为空"); + } + Claims claims = JwtUtils.parseToken(token); + if (claims == null) { + return unauthorizedResponse(exchange, "令牌已过期或验证不正确!"); + } + String userkey = JwtUtils.getUserKey(claims); + boolean islogin = redisService.hasKey(getTokenKey(userkey)); + if (!islogin) { + return unauthorizedResponse(exchange, "登录状态已过期"); + } + String userid = JwtUtils.getUserId(claims); + String username = JwtUtils.getUserName(claims); + if (StringUtils.isEmpty(userid) || StringUtils.isEmpty(username)) { + return unauthorizedResponse(exchange, "令牌验证失败"); + } + + // 设置用户信息到请求 + addHeader(mutate, SecurityConstants.USER_KEY, userkey); + addHeader(mutate, SecurityConstants.DETAILS_USER_ID, userid); + addHeader(mutate, SecurityConstants.DETAILS_USERNAME, username); + // 内部请求来源参数清除 + removeHeader(mutate, SecurityConstants.FROM_SOURCE); + return chain.filter(exchange.mutate().request(mutate.build()).build()); + } + + private void addHeader (ServerHttpRequest.Builder mutate, String name, Object value) { + if (value == null) { + return; + } + String valueStr = value.toString(); + String valueEncode = ServletUtils.urlEncode(valueStr); + mutate.header(name, valueEncode); + } + + private void removeHeader (ServerHttpRequest.Builder mutate, String name) { + mutate.headers(httpHeaders -> httpHeaders.remove(name)).build(); + } + + private Mono unauthorizedResponse (ServerWebExchange exchange, String msg) { + log.error("[鉴权异常处理]请求路径:{}", exchange.getRequest().getPath()); + return ServletUtils.webFluxResponseWriter(exchange.getResponse(), msg, HttpStatus.UNAUTHORIZED); + } + + /** + * 获取缓存key + */ + private String getTokenKey (String token) { + return CacheConstants.LOGIN_TOKEN_KEY + token; + } + + /** + * 获取请求token + */ + private String getToken (ServerHttpRequest request) { + String token = request.getHeaders().getFirst(TokenConstants.AUTHENTICATION); + // 如果前端设置了令牌前缀,则裁剪掉前缀 + if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX)) { + token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY); + } + return token; + } + + @Override + public int getOrder () { + return -200; + } +} diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/filter/BlackListUrlFilter.java b/cloud-gateway/src/main/java/com/muyu/gateway/filter/BlackListUrlFilter.java new file mode 100644 index 0000000..0096d4c --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/filter/BlackListUrlFilter.java @@ -0,0 +1,58 @@ +package com.muyu.gateway.filter; + +import com.muyu.common.core.utils.ServletUtils; +import org.springframework.cloud.gateway.filter.GatewayFilter; +import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Pattern; + +/** + * 黑名单过滤器 + * + * @author muyu + */ +@Component +public class BlackListUrlFilter extends AbstractGatewayFilterFactory { + public BlackListUrlFilter () { + super(Config.class); + } + + @Override + public GatewayFilter apply (Config config) { + return (exchange, chain) -> { + + String url = exchange.getRequest().getURI().getPath(); + if (config.matchBlacklist(url)) { + return ServletUtils.webFluxResponseWriter(exchange.getResponse(), "请求地址不允许访问"); + } + + return chain.filter(exchange); + }; + } + + public static class Config { + private List blacklistUrl; + + private List blacklistUrlPattern = new ArrayList<>(); + + public boolean matchBlacklist (String url) { + return !blacklistUrlPattern.isEmpty() && blacklistUrlPattern.stream().anyMatch(p -> p.matcher(url).find()); + } + + public List getBlacklistUrl () { + return blacklistUrl; + } + + public void setBlacklistUrl (List blacklistUrl) { + this.blacklistUrl = blacklistUrl; + this.blacklistUrlPattern.clear(); + this.blacklistUrl.forEach(url -> { + this.blacklistUrlPattern.add(Pattern.compile(url.replaceAll("\\*\\*", "(.*?)"), Pattern.CASE_INSENSITIVE)); + }); + } + } + +} diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/filter/CacheRequestFilter.java b/cloud-gateway/src/main/java/com/muyu/gateway/filter/CacheRequestFilter.java new file mode 100644 index 0000000..3a09564 --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/filter/CacheRequestFilter.java @@ -0,0 +1,75 @@ +package com.muyu.gateway.filter; + +import org.springframework.cloud.gateway.filter.GatewayFilter; +import org.springframework.cloud.gateway.filter.GatewayFilterChain; +import org.springframework.cloud.gateway.filter.OrderedGatewayFilter; +import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; +import org.springframework.cloud.gateway.support.ServerWebExchangeUtils; +import org.springframework.http.HttpMethod; +import org.springframework.stereotype.Component; +import org.springframework.web.server.ServerWebExchange; +import reactor.core.publisher.Mono; + +import java.util.Collections; +import java.util.List; + +/** + * 获取body请求数据(解决流不能重复读取问题) + * + * @author muyu + */ +@Component +public class CacheRequestFilter extends AbstractGatewayFilterFactory { + public CacheRequestFilter () { + super(Config.class); + } + + @Override + public String name () { + return "CacheRequestFilter"; + } + + @Override + public GatewayFilter apply (Config config) { + CacheRequestGatewayFilter cacheRequestGatewayFilter = new CacheRequestGatewayFilter(); + Integer order = config.getOrder(); + if (order == null) { + return cacheRequestGatewayFilter; + } + return new OrderedGatewayFilter(cacheRequestGatewayFilter, order); + } + + @Override + public List shortcutFieldOrder () { + return Collections.singletonList("order"); + } + + public static class CacheRequestGatewayFilter implements GatewayFilter { + @Override + public Mono filter (ServerWebExchange exchange, GatewayFilterChain chain) { + // GET DELETE 不过滤 + HttpMethod method = exchange.getRequest().getMethod(); + if (method == null || method == HttpMethod.GET || method == HttpMethod.DELETE) { + return chain.filter(exchange); + } + return ServerWebExchangeUtils.cacheRequestBodyAndRequest(exchange, (serverHttpRequest) -> { + if (serverHttpRequest == exchange.getRequest()) { + return chain.filter(exchange); + } + return chain.filter(exchange.mutate().request(serverHttpRequest).build()); + }); + } + } + + static class Config { + private Integer order; + + public Integer getOrder () { + return order; + } + + public void setOrder (Integer order) { + this.order = order; + } + } +} diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/filter/ValidateCodeFilter.java b/cloud-gateway/src/main/java/com/muyu/gateway/filter/ValidateCodeFilter.java new file mode 100644 index 0000000..c19c944 --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/filter/ValidateCodeFilter.java @@ -0,0 +1,69 @@ +package com.muyu.gateway.filter; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.muyu.common.core.utils.ServletUtils; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.gateway.config.properties.CaptchaProperties; +import com.muyu.gateway.service.ValidateCodeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.gateway.filter.GatewayFilter; +import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; +import org.springframework.core.io.buffer.DataBuffer; +import org.springframework.core.io.buffer.DataBufferUtils; +import org.springframework.http.server.reactive.ServerHttpRequest; +import org.springframework.stereotype.Component; +import reactor.core.publisher.Flux; + +import java.nio.CharBuffer; +import java.nio.charset.StandardCharsets; +import java.util.concurrent.atomic.AtomicReference; + +/** + * 验证码过滤器 + * + * @author muyu + */ +@Component +public class ValidateCodeFilter extends AbstractGatewayFilterFactory { + private final static String[] VALIDATE_URL = new String[]{"/auth/login", "/auth/register"}; + private static final String CODE = "code"; + private static final String UUID = "uuid"; + @Autowired + private ValidateCodeService validateCodeService; + @Autowired + private CaptchaProperties captchaProperties; + + @Override + public GatewayFilter apply (Object config) { + return (exchange, chain) -> { + ServerHttpRequest request = exchange.getRequest(); + + // 非登录/注册请求或验证码关闭,不处理 + if (!StringUtils.equalsAnyIgnoreCase(request.getURI().getPath(), VALIDATE_URL) || !captchaProperties.getEnabled()) { + return chain.filter(exchange); + } + + try { + String rspStr = resolveBodyFromRequest(request); + JSONObject obj = JSON.parseObject(rspStr); + validateCodeService.checkCaptcha(obj.getString(CODE), obj.getString(UUID)); + } catch (Exception e) { + return ServletUtils.webFluxResponseWriter(exchange.getResponse(), e.getMessage()); + } + return chain.filter(exchange); + }; + } + + private String resolveBodyFromRequest (ServerHttpRequest serverHttpRequest) { + // 获取请求体 + Flux body = serverHttpRequest.getBody(); + AtomicReference bodyRef = new AtomicReference<>(); + body.subscribe(buffer -> { + CharBuffer charBuffer = StandardCharsets.UTF_8.decode(buffer.asByteBuffer()); + DataBufferUtils.release(buffer); + bodyRef.set(charBuffer.toString()); + }); + return bodyRef.get(); + } +} diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/filter/XssFilter.java b/cloud-gateway/src/main/java/com/muyu/gateway/filter/XssFilter.java new file mode 100644 index 0000000..4316d84 --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/filter/XssFilter.java @@ -0,0 +1,114 @@ +package com.muyu.gateway.filter; + +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.utils.html.EscapeUtil; +import com.muyu.gateway.config.properties.XssProperties; +import io.netty.buffer.ByteBufAllocator; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.cloud.gateway.filter.GatewayFilterChain; +import org.springframework.cloud.gateway.filter.GlobalFilter; +import org.springframework.core.Ordered; +import org.springframework.core.io.buffer.*; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.http.server.reactive.ServerHttpRequest; +import org.springframework.http.server.reactive.ServerHttpRequestDecorator; +import org.springframework.stereotype.Component; +import org.springframework.web.server.ServerWebExchange; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +import java.nio.charset.StandardCharsets; + +/** + * 跨站脚本过滤器 + * + * @author muyu + */ +@Component +@ConditionalOnProperty(value = "security.xss.enabled", havingValue = "true") +public class XssFilter implements GlobalFilter, Ordered { + // 跨站脚本的 xss 配置,nacos自行添加 + @Autowired + private XssProperties xss; + + @Override + public Mono filter (ServerWebExchange exchange, GatewayFilterChain chain) { + ServerHttpRequest request = exchange.getRequest(); + // xss开关未开启 或 通过nacos关闭,不过滤 + if (!xss.getEnabled()) { + return chain.filter(exchange); + } + // GET DELETE 不过滤 + HttpMethod method = request.getMethod(); + if (method == null || method == HttpMethod.GET || method == HttpMethod.DELETE) { + return chain.filter(exchange); + } + // 非json类型,不过滤 + if (!isJsonRequest(exchange)) { + return chain.filter(exchange); + } + // excludeUrls 不过滤 + String url = request.getURI().getPath(); + if (StringUtils.matches(url, xss.getExcludeUrls())) { + return chain.filter(exchange); + } + ServerHttpRequestDecorator httpRequestDecorator = requestDecorator(exchange); + return chain.filter(exchange.mutate().request(httpRequestDecorator).build()); + + } + + private ServerHttpRequestDecorator requestDecorator (ServerWebExchange exchange) { + ServerHttpRequestDecorator serverHttpRequestDecorator = new ServerHttpRequestDecorator(exchange.getRequest()) { + @Override + public Flux getBody () { + Flux body = super.getBody(); + return body.buffer().map(dataBuffers -> { + DataBufferFactory dataBufferFactory = new DefaultDataBufferFactory(); + DataBuffer join = dataBufferFactory.join(dataBuffers); + byte[] content = new byte[join.readableByteCount()]; + join.read(content); + DataBufferUtils.release(join); + String bodyStr = new String(content, StandardCharsets.UTF_8); + // 防xss攻击过滤 + bodyStr = EscapeUtil.clean(bodyStr); + // 转成字节 + byte[] bytes = bodyStr.getBytes(StandardCharsets.UTF_8); + NettyDataBufferFactory nettyDataBufferFactory = new NettyDataBufferFactory(ByteBufAllocator.DEFAULT); + DataBuffer buffer = nettyDataBufferFactory.allocateBuffer(bytes.length); + buffer.write(bytes); + return buffer; + }); + } + + @Override + public HttpHeaders getHeaders () { + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.putAll(super.getHeaders()); + // 由于修改了请求体的body,导致content-length长度不确定,因此需要删除原先的content-length + httpHeaders.remove(HttpHeaders.CONTENT_LENGTH); + httpHeaders.set(HttpHeaders.TRANSFER_ENCODING, "chunked"); + return httpHeaders; + } + + }; + return serverHttpRequestDecorator; + } + + /** + * 是否是Json请求 + * + * @param exchange HTTP请求 + */ + public boolean isJsonRequest (ServerWebExchange exchange) { + String header = exchange.getRequest().getHeaders().getFirst(HttpHeaders.CONTENT_TYPE); + return StringUtils.startsWithIgnoreCase(header, MediaType.APPLICATION_JSON_VALUE); + } + + @Override + public int getOrder () { + return -100; + } +} diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/handler/GatewayExceptionHandler.java b/cloud-gateway/src/main/java/com/muyu/gateway/handler/GatewayExceptionHandler.java new file mode 100644 index 0000000..ed5198e --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/handler/GatewayExceptionHandler.java @@ -0,0 +1,48 @@ +package com.muyu.gateway.handler; + +import com.muyu.common.core.utils.ServletUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.web.reactive.error.ErrorWebExceptionHandler; +import org.springframework.cloud.gateway.support.NotFoundException; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.annotation.Order; +import org.springframework.http.server.reactive.ServerHttpResponse; +import org.springframework.web.server.ResponseStatusException; +import org.springframework.web.server.ServerWebExchange; +import reactor.core.publisher.Mono; + +/** + * 网关统一异常处理 + * + * @author muyu + */ +@Order(-1) +@Configuration +public class GatewayExceptionHandler implements ErrorWebExceptionHandler { + private static final Logger log = LoggerFactory.getLogger(GatewayExceptionHandler.class); + + @Override + public Mono handle (ServerWebExchange exchange, Throwable ex) { + ServerHttpResponse response = exchange.getResponse(); + + if (exchange.getResponse().isCommitted()) { + return Mono.error(ex); + } + + String msg; + + if (ex instanceof NotFoundException) { + msg = "服务未找到"; + } else if (ex instanceof ResponseStatusException) { + ResponseStatusException responseStatusException = (ResponseStatusException) ex; + msg = responseStatusException.getMessage(); + } else { + msg = "内部服务器错误"; + } + + log.error("[网关异常处理]请求路径:{},异常信息:{}", exchange.getRequest().getPath(), ex.getMessage()); + + return ServletUtils.webFluxResponseWriter(response, msg); + } +} diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/handler/SentinelFallbackHandler.java b/cloud-gateway/src/main/java/com/muyu/gateway/handler/SentinelFallbackHandler.java new file mode 100644 index 0000000..d93866f --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/handler/SentinelFallbackHandler.java @@ -0,0 +1,35 @@ +package com.muyu.gateway.handler; + +import com.alibaba.csp.sentinel.adapter.gateway.sc.callback.GatewayCallbackManager; +import com.alibaba.csp.sentinel.slots.block.BlockException; +import com.muyu.common.core.utils.ServletUtils; +import org.springframework.web.reactive.function.server.ServerResponse; +import org.springframework.web.server.ServerWebExchange; +import org.springframework.web.server.WebExceptionHandler; +import reactor.core.publisher.Mono; + +/** + * 自定义限流异常处理 + * + * @author muyu + */ +public class SentinelFallbackHandler implements WebExceptionHandler { + private Mono writeResponse (ServerResponse response, ServerWebExchange exchange) { + return ServletUtils.webFluxResponseWriter(exchange.getResponse(), "请求超过最大数,请稍候再试"); + } + + @Override + public Mono handle (ServerWebExchange exchange, Throwable ex) { + if (exchange.getResponse().isCommitted()) { + return Mono.error(ex); + } + if (!BlockException.isBlockException(ex)) { + return Mono.error(ex); + } + return handleBlockedRequest(exchange, ex).flatMap(response -> writeResponse(response, exchange)); + } + + private Mono handleBlockedRequest (ServerWebExchange exchange, Throwable throwable) { + return GatewayCallbackManager.getBlockHandler().handleRequest(exchange, throwable); + } +} diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/handler/ValidateCodeHandler.java b/cloud-gateway/src/main/java/com/muyu/gateway/handler/ValidateCodeHandler.java new file mode 100644 index 0000000..f3b3206 --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/handler/ValidateCodeHandler.java @@ -0,0 +1,37 @@ +package com.muyu.gateway.handler; + +import com.muyu.common.core.exception.CaptchaException; +import com.muyu.common.core.domain.Result; +import com.muyu.gateway.service.ValidateCodeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.function.BodyInserters; +import org.springframework.web.reactive.function.server.HandlerFunction; +import org.springframework.web.reactive.function.server.ServerRequest; +import org.springframework.web.reactive.function.server.ServerResponse; +import reactor.core.publisher.Mono; + +import java.io.IOException; + +/** + * 验证码获取 + * + * @author muyu + */ +@Component +public class ValidateCodeHandler implements HandlerFunction { + @Autowired + private ValidateCodeService validateCodeService; + + @Override + public Mono handle (ServerRequest serverRequest) { + Result ajax; + try { + ajax = validateCodeService.createCaptcha(); + } catch (CaptchaException | IOException e) { + return Mono.error(e); + } + return ServerResponse.status(HttpStatus.OK).body(BodyInserters.fromValue(ajax)); + } +} diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/model/AccessLog.java b/cloud-gateway/src/main/java/com/muyu/gateway/model/AccessLog.java new file mode 100644 index 0000000..b52eb3e --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/model/AccessLog.java @@ -0,0 +1,120 @@ +package com.muyu.gateway.model; + +import com.muyu.common.core.utils.StringUtils; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import org.springframework.cloud.gateway.route.Route; +import org.springframework.http.HttpStatusCode; +import org.springframework.util.MultiValueMap; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +/** + * 网关的访问日志 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AccessLog { + + /** + * 链路追踪编号 + */ + private String traceId; + /** + * 用户编号 + */ + private String userId; + + /** + * 路由 + * + * 类似 ApiAccessLogCreateReqDTO 的 applicationName + */ + private Route route; + + /** + * 协议 + */ + private String schema; + /** + * 请求方法名 + */ + private String requestMethod; + /** + * 访问地址 + */ + private String requestUrl; + /** + * 查询参数 + */ + private MultiValueMap queryParams; + /** + * 请求体 + */ + private String requestBody; + /** + * 请求头 + */ + private MultiValueMap requestHeaders; + /** + * 用户 IP + */ + private String userIp; + + /** + * 响应体 + * + * 类似 ApiAccessLogCreateReqDTO 的 resultCode + resultMsg + */ + private String responseBody; + /** + * 响应头 + */ + private MultiValueMap responseHeaders; + /** + * 响应结果 + */ + private HttpStatusCode httpStatus; + + /** + * 开始请求时间 + */ + private LocalDateTime startTime; + /** + * 结束请求时间 + */ + private LocalDateTime endTime; + /** + * 执行时长,单位:毫秒 + */ + private Integer duration; + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("请求简略信息", + StringUtils.format("[userId:[{}]-userIp:[{}]-traceId:[{}]] ---结果--- {{}-{}}:{} ---> {}",userId, userIp, traceId, schema, requestMethod, requestUrl,httpStatus) + ) + .append("路由", route) + .append("查询参数", queryParams) + .append("请求体", requestBody) + .append("请求头", requestHeaders) + .append("响应体", responseBody) + .append("响应头", responseHeaders) + .append("耗时/时间", + StringUtils.format( + "{}MS-{}-{}", + duration, + startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), + endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))) + ) + .toString(); + } +} diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/model/resp/CaptchaCodeResp.java b/cloud-gateway/src/main/java/com/muyu/gateway/model/resp/CaptchaCodeResp.java new file mode 100644 index 0000000..bd12aad --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/model/resp/CaptchaCodeResp.java @@ -0,0 +1,25 @@ +package com.muyu.gateway.model.resp; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author DongZl + * @description: 验证码 + * @Date 2023-11-12 下午 03:36 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class CaptchaCodeResp { + + private boolean captchaEnabled; + + private String uuid; + + private String img; + +} diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/service/ValidateCodeService.java b/cloud-gateway/src/main/java/com/muyu/gateway/service/ValidateCodeService.java new file mode 100644 index 0000000..25ed94e --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/service/ValidateCodeService.java @@ -0,0 +1,23 @@ +package com.muyu.gateway.service; + +import com.muyu.common.core.exception.CaptchaException; +import com.muyu.common.core.domain.Result; + +import java.io.IOException; + +/** + * 验证码处理 + * + * @author muyu + */ +public interface ValidateCodeService { + /** + * 生成验证码 + */ + public Result createCaptcha () throws IOException, CaptchaException; + + /** + * 校验验证码 + */ + public void checkCaptcha (String key, String value) throws CaptchaException; +} diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/service/impl/ValidateCodeServiceImpl.java b/cloud-gateway/src/main/java/com/muyu/gateway/service/impl/ValidateCodeServiceImpl.java new file mode 100644 index 0000000..978a3b4 --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/service/impl/ValidateCodeServiceImpl.java @@ -0,0 +1,109 @@ +package com.muyu.gateway.service.impl; + +import com.google.code.kaptcha.Producer; +import com.muyu.common.core.constant.CacheConstants; +import com.muyu.common.core.constant.Constants; +import com.muyu.common.core.exception.CaptchaException; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.utils.sign.Base64; +import com.muyu.common.core.utils.uuid.IdUtils; +import com.muyu.common.core.domain.Result; +import com.muyu.common.redis.service.RedisService; +import com.muyu.gateway.config.properties.CaptchaProperties; +import com.muyu.gateway.model.resp.CaptchaCodeResp; +import com.muyu.gateway.service.ValidateCodeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.FastByteArrayOutputStream; + +import javax.annotation.Resource; +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +/** + * 验证码实现处理 + * + * @author muyu + */ +@Service +public class ValidateCodeServiceImpl implements ValidateCodeService { + @Resource(name = "captchaProducer") + private Producer captchaProducer; + + @Resource(name = "captchaProducerMath") + private Producer captchaProducerMath; + + @Autowired + private RedisService redisService; + + @Autowired + private CaptchaProperties captchaProperties; + + /** + * 生成验证码 + */ + @Override + public Result createCaptcha () throws IOException, CaptchaException { + boolean captchaEnabled = captchaProperties.getEnabled(); + CaptchaCodeResp.CaptchaCodeRespBuilder respBuilder = CaptchaCodeResp.builder() + .captchaEnabled(captchaEnabled); + if (!captchaEnabled) { + return Result.success(respBuilder.build()); + } + + // 保存验证码信息 + String uuid = IdUtils.simpleUUID(); + String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid; + + String capStr = null, code = null; + BufferedImage image = null; + + String captchaType = captchaProperties.getType(); + // 生成验证码 + if ("math".equals(captchaType)) { + String capText = captchaProducerMath.createText(); + capStr = capText.substring(0, capText.lastIndexOf("@")); + code = capText.substring(capText.lastIndexOf("@") + 1); + image = captchaProducerMath.createImage(capStr); + } else if ("char".equals(captchaType)) { + capStr = code = captchaProducer.createText(); + image = captchaProducer.createImage(capStr); + } + + redisService.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); + // 转换流信息写出 + FastByteArrayOutputStream os = new FastByteArrayOutputStream(); + try { + ImageIO.write(image, "jpg", os); + } catch (IOException e) { + return Result.error(e.getMessage()); + } + + CaptchaCodeResp captchaCodeResp = respBuilder.uuid(uuid) + .img(Base64.encode(os.toByteArray())) + .build(); + return Result.success(captchaCodeResp); + } + + /** + * 校验验证码 + */ + @Override + public void checkCaptcha (String code, String uuid) throws CaptchaException { + if (StringUtils.isEmpty(code)) { + throw new CaptchaException("验证码不能为空"); + } + if (StringUtils.isEmpty(uuid)) { + throw new CaptchaException("验证码已失效"); + } + String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid; + String captcha = redisService.getCacheObject(verifyKey); + redisService.deleteObject(verifyKey); + + if (!code.equalsIgnoreCase(captcha)) { + throw new CaptchaException("验证码错误"); + } + } +} diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/utils/WebFrameworkUtils.java b/cloud-gateway/src/main/java/com/muyu/gateway/utils/WebFrameworkUtils.java new file mode 100644 index 0000000..2443e13 --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/utils/WebFrameworkUtils.java @@ -0,0 +1,113 @@ +package com.muyu.gateway.utils; + +import cn.hutool.core.net.NetUtil; +import cn.hutool.core.util.ArrayUtil; +import com.alibaba.fastjson2.JSONObject; +import lombok.extern.log4j.Log4j2; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.cloud.gateway.route.Route; +import org.springframework.cloud.gateway.support.ServerWebExchangeUtils; +import org.springframework.core.io.buffer.DataBufferFactory; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.server.reactive.ServerHttpRequest; +import org.springframework.http.server.reactive.ServerHttpResponse; +import org.springframework.web.server.ServerWebExchange; +import reactor.core.publisher.Mono; + +/** + * Web 工具类 + * + * + */ +@Log4j2 +public class WebFrameworkUtils { + + private static final String HEADER_TENANT_ID = "tenant-id"; + + private WebFrameworkUtils() {} + + /** + * 将 Gateway 请求中的 header,设置到 HttpHeaders 中 + * + * @param tenantId 租户编号 + * @param httpHeaders WebClient 的请求 + */ + public static void setTenantIdHeader(Long tenantId, HttpHeaders httpHeaders) { + if (tenantId == null) { + return; + } + httpHeaders.set(HEADER_TENANT_ID, String.valueOf(tenantId)); + } + + public static Long getTenantId(ServerWebExchange exchange) { + String tenantId = exchange.getRequest().getHeaders().getFirst(HEADER_TENANT_ID); + return tenantId != null ? Long.parseLong(tenantId) : null; + } + + /** + * 返回 JSON 字符串 + * + * @param exchange 响应 + * @param object 对象,会序列化成 JSON 字符串 + */ + @SuppressWarnings("deprecation") // 必须使用 APPLICATION_JSON_UTF8_VALUE,否则会乱码 + public static Mono writeJSON(ServerWebExchange exchange, Object object) { + // 设置 header + ServerHttpResponse response = exchange.getResponse(); + response.getHeaders().setContentType(MediaType.APPLICATION_JSON_UTF8); + // 设置 body + return response.writeWith(Mono.fromSupplier(() -> { + DataBufferFactory bufferFactory = response.bufferFactory(); + try { + return bufferFactory.wrap(JSONObject.toJSONString(object).getBytes()); + } catch (Exception ex) { + ServerHttpRequest request = exchange.getRequest(); + log.error("[writeJSON][uri({}/{}) 发生异常]", request.getURI(), request.getMethod(), ex); + return bufferFactory.wrap(new byte[0]); + } + })); + } + + /** + * 获得客户端 IP + * + * + * @param exchange 请求 + * @param otherHeaderNames 其它 header 名字的数组 + * @return 客户端 IP + */ + public static String getClientIP(ServerWebExchange exchange, String... otherHeaderNames) { + String[] headers = { "X-Forwarded-For", "X-Real-IP", "Proxy-Client-IP", "WL-Proxy-Client-IP", "HTTP_CLIENT_IP", "HTTP_X_FORWARDED_FOR" }; + if (ArrayUtil.isNotEmpty(otherHeaderNames)) { + headers = ArrayUtil.addAll(headers, otherHeaderNames); + } + // 方式一,通过 header 获取 + String ip; + for (String header : headers) { + ip = exchange.getRequest().getHeaders().getFirst(header); + if (!NetUtil.isUnknown(ip)) { + return NetUtil.getMultistageReverseProxyIp(ip); + } + } + + // 方式二,通过 remoteAddress 获取 + if (exchange.getRequest().getRemoteAddress() == null) { + return null; + } + ip = exchange.getRequest().getRemoteAddress().getHostString(); + return NetUtil.getMultistageReverseProxyIp(ip); + } + + /** + * 获得请求匹配的 Route 路由 + * + * @param exchange 请求 + * @return 路由 + */ + public static Route getGatewayRoute(ServerWebExchange exchange) { + return exchange.getAttribute(ServerWebExchangeUtils.GATEWAY_ROUTE_ATTR); + } + +} diff --git a/cloud-gateway/src/main/resources/banner.txt b/cloud-gateway/src/main/resources/banner.txt new file mode 100644 index 0000000..0dd5eee --- /dev/null +++ b/cloud-gateway/src/main/resources/banner.txt @@ -0,0 +1,2 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} diff --git a/cloud-gateway/src/main/resources/bootstrap.yml b/cloud-gateway/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..c9b97fd --- /dev/null +++ b/cloud-gateway/src/main/resources/bootstrap.yml @@ -0,0 +1,75 @@ +# Tomcat +server: + port: 8080 + +# nacos线上地址 +nacos: + addr: 47.101.49.53:8848 + user-name: nacos + password: nacos + namespace: seven + +# Spring +spring: + application: + # 应用名称 + name: cloud-gateway + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + config: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + # 系统共享配置 + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # 系统环境Config共享配置 + - application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + sentinel: + # 取消控制台懒加载 + eager: true + transport: + # 控制台地址 + dashboard: 127.0.0.1:8718 + # nacos配置持久化 + datasource: + ds1: + nacos: + server-addr: ${nacos.addr} + dataId: sentinel-cloud-gateway + groupId: DEFAULT_GROUP + namespace: ${nacos.namespace} + data-type: json + rule-type: gw-flow +knife4j: + gateway: + enabled: true + # 指定服务发现的模式聚合微服务文档,并且是默认`default`分组 + strategy: discover + discover: + enabled: true + # 指定版本号(Swagger2|OpenAPI3) + version : openapi3 + # 需要排除的微服务(eg:网关服务) + excluded-services: + - cloud-monitor diff --git a/cloud-gateway/src/main/resources/logback/dev.xml b/cloud-gateway/src/main/resources/logback/dev.xml new file mode 100644 index 0000000..5ac21d0 --- /dev/null +++ b/cloud-gateway/src/main/resources/logback/dev.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + diff --git a/cloud-gateway/src/main/resources/logback/prod.xml b/cloud-gateway/src/main/resources/logback/prod.xml new file mode 100644 index 0000000..971e45e --- /dev/null +++ b/cloud-gateway/src/main/resources/logback/prod.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-gateway/src/main/resources/logback/test.xml b/cloud-gateway/src/main/resources/logback/test.xml new file mode 100644 index 0000000..971e45e --- /dev/null +++ b/cloud-gateway/src/main/resources/logback/test.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/pom.xml b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/pom.xml new file mode 100644 index 0000000..c6f2c9c --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/pom.xml @@ -0,0 +1,38 @@ + + + 4.0.0 + + com.muyu + cloud-modules-enterprise + 3.6.3 + + + cloud-modules-enterprise-cache + + + cloud-modules-enterprise-cache 模块,提供缓存功能 + + + 17 + 17 + UTF-8 + + + + + + + com.muyu + cloud-modules-enterprise-common + + + + + com.muyu + cloud-common-cache + 3.6.3 + + + diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/FaultCacheService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/FaultCacheService.java new file mode 100644 index 0000000..4c3f431 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/FaultCacheService.java @@ -0,0 +1,23 @@ +package com.muyu.enterprise.cache; + +import com.muyu.common.cache.CacheAbsBacis; + +/** + * 故障缓存服务 + */ +public class FaultCacheService extends CacheAbsBacis { + @Override + public void clear() { + + } + + @Override + public String keyPre() { + return "fault:info:"; + } + + @Override + public String decode(String key) { + return key.replace("fault:info:", ""); + } +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/FenceCahceService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/FenceCahceService.java new file mode 100644 index 0000000..c9cfdca --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/FenceCahceService.java @@ -0,0 +1,24 @@ +package com.muyu.enterprise.cache; + +import com.muyu.common.cache.CacheAbsBacis; +import com.muyu.domain.Fence; + +/** + * 电子围栏缓存 + */ +public class FenceCahceService extends CacheAbsBacis { + @Override + public void clear() { + + } + + @Override + public String keyPre() { + return "fence:info:"; + } + + @Override + public String decode(String key) { + return key.replace("fence:info:", ""); + } +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/VehicleCacheService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/VehicleCacheService.java new file mode 100644 index 0000000..052fa9d --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/VehicleCacheService.java @@ -0,0 +1,30 @@ +package com.muyu.enterprise.cache; + +import com.muyu.common.cache.CacheAbsBacis; +import com.muyu.domain.Vehicle; + +/** + * 车辆缓存 + */ +public class VehicleCacheService extends CacheAbsBacis { + + + @Override + public void clear() { + + } + + /** + * 缓存key前缀 + * @return + */ + @Override + public String keyPre() { + return "vehicle:info:"; + } + + @Override + public String decode(String key) { + return key.replace("vehicle:info:", ""); + } +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/WarnRuleCacheService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/WarnRuleCacheService.java new file mode 100644 index 0000000..1d8922f --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/WarnRuleCacheService.java @@ -0,0 +1,24 @@ +package com.muyu.enterprise.cache; + +import com.muyu.common.cache.CacheAbsBacis; +import com.muyu.domain.WarnRule; + +/** + * 预警规则缓存服务 + */ +public class WarnRuleCacheService extends CacheAbsBacis { + @Override + public void clear() { + + } + + @Override + public String keyPre() { + return "warn:info:"; + } + + @Override + public String decode(String key) { + return key.replace("warn:info:", ""); + } +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/WarnStrategyCacheService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/WarnStrategyCacheService.java new file mode 100644 index 0000000..bddedf0 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/WarnStrategyCacheService.java @@ -0,0 +1,25 @@ +package com.muyu.enterprise.cache; + +import com.muyu.common.cache.CacheAbsBacis; +import com.muyu.domain.WarnRule; +import com.muyu.domain.WarnStrategy; + +/** + * 预警规则缓存服务 + */ +public class WarnStrategyCacheService extends CacheAbsBacis { + @Override + public void clear() { + + } + + @Override + public String keyPre() { + return "warn:info:"; + } + + @Override + public String decode(String key) { + return key.replace("warn:info:", ""); + } +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..5da48af --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,5 @@ +com.muyu.enterprise.cache.VehicleCacheService +com.muyu.enterprise.cache.FaultCacheService +com.muyu.enterprise.cache.FenceCahceService +com.muyu.enterprise.cache.WarnRuleCacheService +com.muyu.enterprise.cache.WarnStrategyCacheService diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/pom.xml b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/pom.xml new file mode 100644 index 0000000..0b45e63 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/pom.xml @@ -0,0 +1,30 @@ + + + 4.0.0 + + com.muyu + cloud-modules-enterprise + 3.6.3 + + + cloud-modules-enterprise-common + 3.6.3 + + cloud-modules-enterprise-common 企业公共模块 + + + 17 + 17 + UTF-8 + + + + + com.muyu + cloud-common-core + + + + diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/BoundMiddle.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/BoundMiddle.java new file mode 100644 index 0000000..e2c07be --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/BoundMiddle.java @@ -0,0 +1,42 @@ +package com.muyu.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.common.core.web.domain.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * 绑定围栏组中间表 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@SuperBuilder +@TableName(value = "bound_middle",autoResultMap = true) +public class BoundMiddle extends BaseEntity { + + /** + * 主键 + */ + @TableId(value = "bound_middle_id") + @Schema(description = "主键",type = "Integer") + private Long boundMiddleId; + + /** + * 车辆id + */ + @Schema(description = "车辆id",type = "Integer") + private Integer vehicleId; + + /** + * 围栏组id + */ + @Schema(description = "围栏组id",type = "Integer") + private Integer fenceGroupId; + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/Fence.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/Fence.java new file mode 100644 index 0000000..87778e8 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/Fence.java @@ -0,0 +1,85 @@ +package com.muyu.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.common.core.web.domain.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.Date; + +/** + * 电子围栏表 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@TableName(value = "fence", autoResultMap = true) +public class Fence extends BaseEntity{ + + + /** + * 主键 + */ + @TableId(value = "fence_id" ,type = IdType.AUTO) + @Schema(type = "Long", description = "主键") + private Long fenceId; + + /** + * 围栏名称 + */ + @Schema(type = "String", description = "围栏名称") + private String fenceName; + + /** + * 业务类型 + */ + @Schema(type = "Integer", description = "业务类型") + private Integer fenceType; + + /** + * 围栏类型 + */ + @Schema(type = "Integer",description = "围栏类型") + private Integer typeId; + + /** + * 坐标 + */ + @Schema(type = "String", description = "坐标") + private String coordinates; + + /** + * 描述 + */ + @Schema(type = "String", description = "描述") + private String description; + + /** + * 状态 + */ + @Schema(type = "Integer", description = "状态") + private Integer status; + + /** + * 开始时间 + */ + @Schema(type = "Date", description = "开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm") + private Date startTime; + + /** + * 结束时间 + */ + @Schema(type = "Date", description = "结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm") + private Date endTime; + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/FenceGroup.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/FenceGroup.java new file mode 100644 index 0000000..2498ccf --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/FenceGroup.java @@ -0,0 +1,71 @@ +package com.muyu.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.domain.req.FenceGroupAddReq; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * 围栏组表 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@TableName(value = "fence_group", autoResultMap = true) +public class FenceGroup extends BaseEntity { + + /** + * 主键 + */ + @TableId(value = "fence_group_id" ,type = IdType.AUTO) + @Schema(type = "Long",description = "围栏组id") + private Long fenceGroupId; + + /** + * 优先级 + */ + @Schema(type = "String",description = "优先级") + private String priority; + + /** + * 状态 0:启用 1:禁止 + */ + @Schema(type = "Integer",description = "状态 0:启用 1:禁止") + private Integer status; + + /** + * 围栏组类型 + */ + @Schema(type = "String",description = "围栏组类型") + private String groupType; + + //添加 + public static FenceGroup build(FenceGroupAddReq req){ + return FenceGroup.builder() + .priority(req.getPriority()) + .groupType(req.getGroupType()) + .status(req.getStatus()) + .build(); + } + + /** + * 电子围栏id + */ + @Schema(type = "Long",description = "电子围栏id") + private Long fenceId; + + /** + * 围栏名称 + */ + @Schema(type = "String",description = "围栏名称") + private String fenceName; + + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/LanType.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/LanType.java new file mode 100644 index 0000000..53d6f9f --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/LanType.java @@ -0,0 +1,36 @@ +package com.muyu.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.common.core.web.domain.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * 围栏类型 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@TableName(value = "lantype", autoResultMap = true) +public class LanType extends BaseEntity { + + + /** + * 主键 + */ + @TableId(value = "type_id" ,type = IdType.AUTO) + @Schema(type = "Long",description = "主键") + private Long typeId; + + /** + * 类型名称 + */ + @Schema(type = "String",description = "类型名称") + private String typeName; +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/MessageTemplate.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/MessageTemplate.java new file mode 100644 index 0000000..24e12a4 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/MessageTemplate.java @@ -0,0 +1,60 @@ +package com.muyu.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.domain.req.MessageTemplateAddReq; +import com.muyu.common.core.web.domain.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.domain + * @Project: 2112-car-cloud-server + * @name: MessageTemplate + * @Date: 2024/9/18 21:11 + * @Description: 报文模版 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@TableName(value = "message_template", autoResultMap = true) +public class MessageTemplate extends BaseEntity { + + /** + * 报文模版主键 + */ + @TableId(value = "message_template_id", type = IdType.AUTO) + @Schema(type = "Long",description = "报文模版主键") + private Long messageTemplateId; + + /** + * 报文模版名称 + */ + @Schema(type = "String",description = "报文模版名称") + private String messageTemplateName; + + /** + * 报文模版描述 + */ + @Schema(type = "String",description = "报文模版描述") + private String messageTemplateDescribe; + + /** + * 报文模版添加数据转换 + * @param messageTemplateAddReq + * @return + */ + public static MessageTemplate addBuild(MessageTemplateAddReq messageTemplateAddReq){ + return MessageTemplate.builder() + .messageTemplateName(messageTemplateAddReq.getMessageTemplateName()) + .messageTemplateDescribe(messageTemplateAddReq.getMessageTemplateDescribe()) + .build(); + } + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/MessageValue.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/MessageValue.java new file mode 100644 index 0000000..1efe125 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/MessageValue.java @@ -0,0 +1,80 @@ +package com.muyu.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.domain.req.MessageValueAddReq; +import com.muyu.common.core.web.domain.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * 报文类型对象 message_type + * + * @author muyu + * @date 2024-09-18 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@TableName(value = "message_value", autoResultMap = true) +public class MessageValue extends BaseEntity { + + /** + * 报文数据主键 + */ + @TableId(value = "message_id", type = IdType.AUTO) + @Schema(description = "报文数据主键",type = "Long") + private Long messageId; + + /** + * 模版主键 + */ + @Schema(description = "模版主键",type = "Long") + private Long templateId; + + /** + * 报文类别 + */ + @Schema(description = "报文类别",type = "String") + private String messageType; + + /** + * 报文编码 + */ + @Schema(description = "报文编码",type = "String") + private String messageCode; + + /** + * 报文标签 + */ + @Schema(description = "报文标签",type = "String") + private String messageLabel; + + /** + * 起始下标 + */ + @Schema(description = "起始下标",type = "Integer") + private Integer messageStartIndex; + + /** + * 终止下标 + */ + @Schema(description = "终止下标",type = "Integer") + private Integer messageEndIndex; + + public static MessageValue addBuild(MessageValueAddReq messageValueAddReq){ + return MessageValue.builder() + .templateId(messageValueAddReq.getTemplateId()) + .messageType(messageValueAddReq.getMessageType()) + .messageCode(messageValueAddReq.getMessageCode()) + .messageLabel(messageValueAddReq.getMessageLabel()) + .messageStartIndex(messageValueAddReq.getMessageStartIndex()) + .messageEndIndex(messageValueAddReq.getMessageEndIndex()) + .build(); + } +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/Middle.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/Middle.java new file mode 100644 index 0000000..8fdc7fc --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/Middle.java @@ -0,0 +1,70 @@ +package com.muyu.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.domain.req.MiddleReq; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * 围栏组与电子围栏关联表 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@TableName(value = "middle", autoResultMap = true) +public class Middle extends BaseEntity { + + /** + * 主键 + */ + @TableId(value = "middle_id", type = IdType.AUTO) + @Schema(type = "Long",description = "主键") + private Long middleId; + + /** + * 电子围栏主键id + */ + @Schema(type = "Long",description = "电子围栏主键id") + private Long fenceId; + + /** + * 围栏主键id + */ + @Schema(type = "Long",description = "围栏主键id") + private Long fenceGroupId; + + + //添加 + public static Middle build(MiddleReq req) { + return Middle.builder() + .fenceGroupId(req.getFenceGroupId()) + .fenceId(req.getFenceId()) + .build(); + } + + /** + * 描述 + */ + @Schema(type = "String",description = "描述") + private String description; + + /** + * 围栏名称 + */ + @Schema(type = "String",description = "围栏名称") + private String fenceName; + + /** + * 经纬度 + */ + @Schema(type = "String",description = "经纬度") + private String coordinates; + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/Vehicle.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/Vehicle.java new file mode 100644 index 0000000..8c827a7 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/Vehicle.java @@ -0,0 +1,155 @@ +package com.muyu.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.domain.req.VehicleAddReq; +import com.muyu.domain.req.VehicleUpdReq; +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.annotation.Excel.ColumnType; +import com.muyu.common.core.web.domain.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.Date; +import java.util.function.Supplier; + +/** + * 车辆表 + * @Author: LiDongJia + * @Package: com.muyu.vehicle.domain + * @Project: 2112-car-cloud-server + * @name: Vehicle + * @Date: 2024/9/16 15:24 + * @Description: 车辆信息实体类 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@TableName(value = "vehicle", autoResultMap = true) +public class Vehicle extends BaseEntity { + + /** + * 车辆主键 + */ + @Excel(name = "车辆主键", cellType = ColumnType.NUMERIC) + @TableId(value = "vehicle_id", type = IdType.AUTO) + @Schema(type = "Long",description = "车辆主键") + private Long vehicleId; + + /** + * 车牌号 + */ + @Schema(type = "String",description = "车牌号") + @Excel(name = "车牌号") + private String licenceNumber; + + /** + * 车辆颜色 + */ + @Schema(type = "String",description = "车辆颜色") + @Excel(name = "车辆颜色") + private String vehicleColor; + + /** + * 车辆VIN + */ + @Schema(type = "String",description = "车辆VIN") + @Excel(name = "车辆VIN") + private String vehicleVin; + + /** + * 车辆类型外键 + */ + @Schema(type = "Long",description = "车辆类型外键") + @Excel(name = "车辆类型外键") + private Long vehicleTypeId; + + /** + * 车辆品牌 + */ + @Schema(type = "String",description = "车辆品牌") + @Excel(name = "车辆品牌") + private String vehicleBrand; + + /** + * 车辆型号 + */ + @Schema(type = "String",description = "车辆型号") + @Excel(name = "车辆型号") + private String vehicleModel; + + /** + * 车辆行驶证 + */ + @Schema(type = "String",description = "车辆行驶证") + @Excel(name = "车辆行驶证") + private String vehicleLicense; + + /** + * 行驶证到期日期 + */ + @Schema(type = "Date",description = "行驶证到期日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date vehicleLicenseDueDate; + + /** + * 车辆状态 + */ + @Schema(type = "String",description = "车辆状态") + @Excel(name = "车辆状态") + private String vehicleStatus; + + /** + * 车辆所属企业外键 + */ + @Schema(type = "Long",description = "车辆所属企业外键") + private Long companyId; + + /** + * 电子围栏外键 + */ + @Schema(type = "Integer",description = "电子围栏外键") + private Integer fenceGroupId; + + public static Vehicle addBuild(VehicleAddReq vehicleAddReq){ + return Vehicle.builder() + .licenceNumber(vehicleAddReq.getLicenceNumber()) + .vehicleColor(vehicleAddReq.getVehicleColor()) + .vehicleVin(vehicleAddReq.getVehicleVin()) + .vehicleTypeId(vehicleAddReq.getVehicleTypeId()) + .vehicleBrand(vehicleAddReq.getVehicleBrand()) + .vehicleModel(vehicleAddReq.getVehicleModel()) + .vehicleLicense(vehicleAddReq.getVehicleLicense()) + .vehicleLicenseDueDate(vehicleAddReq.getVehicleLicenseDueDate()) + .vehicleStatus(vehicleAddReq.getVehicleStatus()) + .companyId(vehicleAddReq.getCompanyId()) + .fenceGroupId(vehicleAddReq.getFenceGroupId()) + .build(); + } + + public static Vehicle updBuild(VehicleUpdReq vehicleUpdReq, Supplier idSupplier){ + return Vehicle.builder() + .vehicleId(idSupplier.get()) + .licenceNumber(vehicleUpdReq.getLicenceNumber()) + .vehicleColor(vehicleUpdReq.getVehicleColor()) + .vehicleVin(vehicleUpdReq.getVehicleVin()) + .vehicleTypeId(vehicleUpdReq.getVehicleTypeId()) + .vehicleBrand(vehicleUpdReq.getVehicleBrand()) + .vehicleModel(vehicleUpdReq.getVehicleModel()) + .vehicleLicense(vehicleUpdReq.getVehicleLicense()) + .vehicleLicenseDueDate(vehicleUpdReq.getVehicleLicenseDueDate()) + .vehicleStatus(vehicleUpdReq.getVehicleStatus()) + .companyId(vehicleUpdReq.getCompanyId()) + .fenceGroupId(vehicleUpdReq.getFenceGroupId()) + .build(); + } + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/VehicleType.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/VehicleType.java new file mode 100644 index 0000000..4833c1d --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/VehicleType.java @@ -0,0 +1,50 @@ +package com.muyu.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.annotation.Excel.ColumnType; +import com.muyu.common.core.web.domain.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import lombok.experimental.SuperBuilder; + +/** + * 车辆类型表 + * @Author: LiDongJia + * @Package: com.muyu.vehicle.domain + * @Project: 2112-car-cloud-server + * @name: Vehicle + * @Date: 2024/9/16 15:24 + * @Description: 车辆类型实体类 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@TableName(value = "vehicle_type", autoResultMap = true) +public class VehicleType extends BaseEntity { + + /** + * 车辆类型主键 + */ + @TableId(value = "vehicle_type_id", type = IdType.AUTO) + @Schema(type = "Long",description = "车辆类型主键") + private Long vehicleTypeId; + + /** + * 车辆类型名称 + */ + @Schema(type = "String",description = "车辆类型名称") + private String vehicleTypeName; + + /** + * 报文模版外键 + */ + @Schema(type = "Integer",description = "报文模版外键") + private Integer messageTemplateId; + + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/WarnLogs.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/WarnLogs.java new file mode 100644 index 0000000..24787c2 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/WarnLogs.java @@ -0,0 +1,118 @@ +package com.muyu.domain; + +import java.util.Date; +import java.util.function.Supplier; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.web.domain.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import lombok.experimental.SuperBuilder; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; + +/** + * 预警日志对象 warn_logs + * + * @author muyu + * @date 2024-09-20 + */ + +@Data +@Setter +@Getter +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@TableName("warn_logs") +public class WarnLogs extends BaseEntity{ + private static final long serialVersionUID = 1L; + + /** 预警日志id */ + @TableId( type = IdType.AUTO) + @Schema(type = "Long",description = "预警日志id") + private Long warnLogsId; + + /** 车辆vin码 */ + @Schema(type = "String",description = "车辆vin码") + @Excel(name = "车辆vin码") + private String vin; + + /** 规则id */ + @Schema(type = "Integer",description = "规则id") + @Excel(name = "规则id") + private Integer warnRuleId; + + /** 开始时间 */ + @Schema(type = "Date",description = "开始时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date startTime; + + /** 结束时间 */ + @Schema(type = "Date",description = "结束时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date endTime; + + /** 最大值 */ + @Schema(type = "Integer",description = "最大值") + @Excel(name = "最大值") + private Integer maxValue; + + /** 最小值 */ + @Schema(type = "Integer",description = "最小值") + @Excel(name = "最小值") + private Integer minValue; + + /** 平均值 */ + @Schema(type = "Integer",description = "平均值") + @Excel(name = "平均值") + private Integer avgValue; + + /** 中位数 */ + @Schema(type = "Integer",description = "中位数") + @Excel(name = "中位数") + private Integer medianValue; + + /** 是否发送预警 */ + @Schema(type = "Integer",description = "是否发送预警") + @Excel(name = "是否发送预警") + private Integer status; + + public static WarnLogs updateBuilder(WarnLogs warnLogs, Supplier supplier) { + return WarnLogs.builder() + .warnLogsId(supplier.get()) + .vin(warnLogs.getVin()) + .warnRuleId(warnLogs.getWarnRuleId()) + .startTime(warnLogs.getStartTime()) + .endTime(warnLogs.getEndTime()) + .maxValue(warnLogs.getMaxValue()) + .minValue(warnLogs.getMinValue()) + .avgValue(warnLogs.getAvgValue()) + .medianValue(warnLogs.getMedianValue()) + .status(warnLogs.getStatus()) + .build(); + } + + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getWarnLogsId()) + .append("vin", getVin()) + .append("warnRuleId", getWarnRuleId()) + .append("startTime", getStartTime()) + .append("endTime", getEndTime()) + .append("maxValue", getMaxValue()) + .append("minValue", getMinValue()) + .append("avgValue", getAvgValue()) + .append("medianValue", getMedianValue()) + .append("status", getStatus()) + .toString(); + } +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/WarnRule.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/WarnRule.java new file mode 100644 index 0000000..0ce12fd --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/WarnRule.java @@ -0,0 +1,105 @@ +package com.muyu.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.web.domain.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import lombok.experimental.SuperBuilder; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; +import java.util.function.Supplier; + +/** + * 预警规则对象 warn_rule + * + * @author muyu + * @date 2024-09-20 + */ + +@Data +@Setter +@Getter +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@TableName("warn_rule") +public class WarnRule extends BaseEntity{ + private static final long serialVersionUID = 1L; + + /** 规则id */ + @Schema(type = "Long",description = "规则id") + @TableId( type = IdType.AUTO) + private Long warnRuleId; + + /** 规则名称 */ + @Schema(type = "String",description = "规则名称") + @Excel(name = "规则名称") + private String ruleName; + + /** 策略id */ + @Schema(type = "Integer",description = "策略id") + @Excel(name = "策略id") + private Integer strategyId; + + /** 报文数据类型id */ + @Schema(type = "Integer",description = "报文数据类型id") + @Excel(name = "报文数据类型id") + private Integer msgTypeId; + + /** 滑窗时间 */ + @Schema(type = "Date",description = "滑窗时间") + @Excel(name = "滑窗时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date slideTime; + + /** 滑窗频率 */ + @Schema(type = "Integer",description = "滑窗频率") + @Excel(name = "滑窗频率") + private Integer slideFrequency; + + /** 最大值 */ + @Schema(type = "Integer",description = "最大值") + @Excel(name = "最大值") + private Integer maxValue; + + /** 最小值 */ + @Schema(type = "Integer",description = "最小值") + @Excel(name = "最小值") + private Integer minValue; + + public static WarnRule updateBuilder(WarnRule warnRule, Supplier supplier) { + return WarnRule.builder() + .warnRuleId(supplier.get()) + .ruleName(warnRule.getRuleName()) + .strategyId(warnRule.getStrategyId()) + .msgTypeId(warnRule.getMsgTypeId()) + .slideTime(warnRule.getSlideTime()) + .slideFrequency(warnRule.getSlideFrequency()) + .maxValue(warnRule.getMaxValue()) + .minValue(warnRule.getMinValue()) + .build(); + } + + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getWarnRuleId()) + .append("ruleName", getRuleName()) + .append("strategyId", getStrategyId()) + .append("msgTypeId", getMsgTypeId()) + .append("slideTime", getSlideTime()) + .append("slideFrequency", getSlideFrequency()) + .append("maxValue", getMaxValue()) + .append("minValue", getMinValue()) + .toString(); + } +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/WarnStrategy.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/WarnStrategy.java new file mode 100644 index 0000000..e0f387e --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/WarnStrategy.java @@ -0,0 +1,74 @@ +package com.muyu.domain; + +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.web.domain.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import lombok.experimental.SuperBuilder; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; + +import java.util.function.Supplier; + +/** + * 预警策略对象 warn_strategy + * + * @author muyu + * @date 2024-09-20 + */ + +@Data +@Setter +@Getter +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@TableName("warn_strategy") +public class WarnStrategy extends BaseEntity{ + private static final long serialVersionUID = 1L; + + /** 策略id */ + @Schema(type = "Long",description = "策略id") + @TableId( type = IdType.AUTO) + private Long warnStrategyId; + + /** 策略名称 */ + @Schema(type = "String",description = "策略名称") + @Excel(name = "策略名称") + private String strategyName; + + /** 报文模版id */ + @Schema(type = "Integer",description = "报文模版id") + @Excel(name = "报文模版id") + private Integer messageTemplateId; + + /** 车辆类型id */ + @Schema(type = "Long",description = "车辆类型id") + @Excel(name = "车辆类型id") + private Long vehicleTypeId; + + + public static WarnStrategy updateBuilder(WarnStrategy warnStrategy, Supplier supplier) { + return WarnStrategy.builder() + .warnStrategyId(supplier.get()) + .vehicleTypeId(warnStrategy.getVehicleTypeId()) + .strategyName(warnStrategy.getStrategyName()) + .vehicleTypeId(warnStrategy.getVehicleTypeId()) + .messageTemplateId(warnStrategy.getMessageTemplateId()) + .build(); + } + + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getWarnStrategyId()) + .append("vehicleTypeId", getVehicleTypeId()) + .append("strategyName", getStrategyName()) + .append("messageTemplateId", getMessageTemplateId()) + .toString(); + } +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/FenceGroupAddReq.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/FenceGroupAddReq.java new file mode 100644 index 0000000..6de494b --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/FenceGroupAddReq.java @@ -0,0 +1,51 @@ +package com.muyu.domain.req; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Builder +@Data +@NoArgsConstructor +@AllArgsConstructor +@Tag(name = "添加围栏组") +public class FenceGroupAddReq { + + /** + * 主键 + */ + @Schema(type = "integer",description = "主键") + @TableId(value = "fence_group_id",type = IdType.AUTO) + private Long fenceGroupId; + + /** + * 优先级 + */ + @Schema(type = "string",description = "优先级") + private String priority; + + /** + * 状态 0:启用 1:停止 + */ + @Schema(type = "integer",description = "状态 0:启用 1:停止") + private Integer status; + + /** + * 围栏组类型 + */ + @Schema(type = "string",description = "围栏组类型") + private String groupType; + + /** + * 多选框数组 + */ + @Schema(type = "array",description = "多选框数组") + private Integer[] fenceIds; + + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/FenceGroupReq.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/FenceGroupReq.java new file mode 100644 index 0000000..27b480f --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/FenceGroupReq.java @@ -0,0 +1,58 @@ +package com.muyu.domain.req; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Tag(name = "围栏组信息查询") +public class FenceGroupReq { + + + /** + * 优先级 + */ + @Schema(type = "string",description = "优先级") + private String priority; + + /** + * 状态 + */ + @Schema(type = "integer",description = "状态") + private Integer status; + + /** + * 围栏组类型 + */ + @Schema(type = "string",description = "围栏组类型") + private String groupType; + + /** + * 电子围栏Id + */ + @Schema(type = "integer",description = "电子围栏Id") + private Integer fenceId; + + /** + * 围栏名称 + */ + @Schema(type = "string",description = "围栏名称") + private String fenceName; + + /** + * 主键 + */ + @TableId(value = "fence_group_id" ,type = IdType.AUTO) + @Schema(type = "Long",description = "围栏组id") + private Long fenceGroupId; + + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/FenceReq.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/FenceReq.java new file mode 100644 index 0000000..1587059 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/FenceReq.java @@ -0,0 +1,43 @@ +package com.muyu.domain.req; + +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Tag(name ="电子围栏信息查询" ) +public class FenceReq { + +// /** +// * 围栏类型ID +// */ +// @Schema(type = "Long",description = "围栏类型ID") +// private Long typeId; + + /** + * 围栏类型名称 + */ + @Schema(type = "String",description = "围栏类型名称") + private String typeName; + + /** + * 电子围栏名称 + */ + @Schema(type = "String",description = "电子围栏名称") + private String fenceName; + +// /** +// * 业务类型 +// */ +// @Schema(type = "Integer",description = "业务类型") +// private Integer fenceType; + + + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/HaveFence.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/HaveFence.java new file mode 100644 index 0000000..dd4fef0 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/HaveFence.java @@ -0,0 +1,55 @@ +//package com.muyu.domain.req; +// +//import com.baomidou.mybatisplus.annotation.IdType; +//import com.baomidou.mybatisplus.annotation.TableId; +//import com.muyu.domain.Fence; +//import io.swagger.v3.oas.annotations.media.Schema; +//import io.swagger.v3.oas.annotations.tags.Tag; +//import lombok.AllArgsConstructor; +//import lombok.Builder; +//import lombok.Data; +//import lombok.NoArgsConstructor; +// +//import java.util.List; +// +//@Data +//@Builder +//@AllArgsConstructor +//@NoArgsConstructor +//@Tag(name = "查看绑定的围栏信息") +//public class HaveFence { +// +// /** +// * 主键 +// */ +// @Schema(type = "Long",description = "主键") +// @TableId(value = "id",type = IdType.AUTO) +// private Long id; +// +// /** +// * 围栏名称 +// */ +// @Schema(type = "String",description = "围栏名称") +// private String fenceName; +// +// /** +// * 坐标 +// */ +// @Schema(type = "String",description = "坐标") +// private String coordinates; +// +// /** +// * 描述 +// */ +// @Schema(type = "String",description = "描述") +// private String description; +// +// /** +// * 电子围栏列表 +// */ +// @Schema(type = "List",description = "电子围栏列表") +// List fenceList; +// +// +// +//} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/MessageTemplateAddReq.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/MessageTemplateAddReq.java new file mode 100644 index 0000000..bc40226 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/MessageTemplateAddReq.java @@ -0,0 +1,36 @@ +package com.muyu.domain.req; + +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.domain.req + * @Project: 2112-car-cloud-server + * @name: MessageTemplateAddReq + * @Date: 2024/9/18 22:35 + * @Description: 报文模版添加参数 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Tag(name = "新增报文模版请求参数", description = "根据入参进行报文模版的添加") +public class MessageTemplateAddReq { + + /** + * 报文模版名称 + */ + @Schema(type = "string", description = "报文模版名称") + private String messageTemplateName; + + /** + * 报文模版描述 + */ + @Schema(type = "string", description = "报文模版描述") + private String messageTemplateDescribe; +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/MessageValueAddReq.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/MessageValueAddReq.java new file mode 100644 index 0000000..61b8541 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/MessageValueAddReq.java @@ -0,0 +1,60 @@ +package com.muyu.domain.req; + +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.domain.req + * @Project: 2112-car-cloud-server + * @name: MessageTypeAddReq + * @Date: 2024/9/18 20:38 + * @Description: 报文类型参数 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Tag(name = "新增报文数据请求参数", description = "根据入参进行报文数据的添加") +public class MessageValueAddReq { + + /** + * 模版主键 + */ + @Schema(type = "Long", description = "模版主键") + private Long templateId; + + /** + * 报文类别 + */ + @Schema(type = "String", description = "报文类别") + private String messageType; + + /** + * 报文编码 + */ + @Schema(type = "String", description = "报文编码") + private String messageCode; + + /** + * 报文标签 + */ + @Schema(type = "String", description = "报文标签") + private String messageLabel; + + /** + * 起始下标 + */ + @Schema(type = "Integer", description = "起始下标") + private Integer messageStartIndex; + + /** + * 终止下标 + */ + @Schema(type = "Integer", description = "终止下标") + private Integer messageEndIndex; +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/MessageValueReq.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/MessageValueReq.java new file mode 100644 index 0000000..eb22db7 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/MessageValueReq.java @@ -0,0 +1,33 @@ +package com.muyu.domain.req; + +import com.muyu.common.core.annotation.Excel; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.domain.req + * @Project: 2112-car-cloud-server + * @name: MessageTypeReq + * @Date: 2024/9/18 20:24 + * @Description: 报文类型列表参数 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Tag(name = "报文数据请求参数", description = "根据入参进行报文数据的查询") +public class MessageValueReq { + + /** 报文模版主键 */ + @Schema(title = "报文模版主键", type = "Long", defaultValue = "1", description = "报文模版主键") + private Long messageTemplateId; + + /** 报文分类 */ + @Schema(title = "报文分类", type = "String", defaultValue = "basics", description = "报文分类") + private String messageType; +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/MiddleReq.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/MiddleReq.java new file mode 100644 index 0000000..0ae4b8f --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/MiddleReq.java @@ -0,0 +1,30 @@ +package com.muyu.domain.req; + +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Tag(name ="中间表信息查询" ) +public class MiddleReq { + + /** + * 电子围栏主键id + */ + @Schema(type = "Long",description = "电子围栏主键id") + private Long fenceId; + + /** + * 围栏主键id + */ + @Schema(type = "Long",description = "围栏主键id") + private Long fenceGroupId; + + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/VehicleAddReq.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/VehicleAddReq.java new file mode 100644 index 0000000..cec6378 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/VehicleAddReq.java @@ -0,0 +1,97 @@ +package com.muyu.domain.req; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.common.core.annotation.Excel; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.constraints.NotEmpty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.domain.req + * @Project: 2112-car-cloud-server + * @name: VehicleAddReq + * @Date: 2024/9/17 18:59 + * @Description: 新增车辆参数 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Tag(name = "录入车辆请求参数", description = "根据入参进行车辆管理的添加") +public class VehicleAddReq { + + /** + * 车牌号 + */ + @NotEmpty(message = "车牌号不可为空") + @Schema(title = "车牌号", type = "String", defaultValue = "冀A93827", description = "车牌号") + private String licenceNumber; + + /** + * 车辆颜色 + */ + @Schema(title = "车辆颜色", type = "String", defaultValue = "RED", description = "车牌颜色") + private String vehicleColor; + + /** + * 车辆VIN + */ + @Schema(title = "车辆VIN", type = "String", defaultValue = "LDC913L2240606423", description = "车辆VIN") + private String vehicleVin; + + /** + * 车辆类型外键 + */ + @Schema(title = "车辆类型", type = "BigInt", defaultValue = "1", description = "车辆类型") + private Long vehicleTypeId; + + /** + * 车辆品牌 + */ + @Schema(title = "车辆品牌", type = "String", defaultValue = "1", description = "车辆品牌") + private String vehicleBrand; + + /** + * 车辆型号 + */ + @Schema(title = "车辆型号", type = "String", defaultValue = "1", description = "车辆型号") + private String vehicleModel; + + /** + * 车辆行驶证 + */ + @Schema(title = "车辆行驶证", type = "String", defaultValue = "111111", description = "车辆行驶证") + private String vehicleLicense; + + /** + * 行驶证到期日期 + */ + @Schema(title = "行驶证到期日期", type = "Date", defaultValue = "2024-01-01 00:00:00", description = "行驶证到期日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date vehicleLicenseDueDate; + + /** + * 车辆状态 + */ + @Schema(title = "车辆状态", type = "String", defaultValue = "OFFLINE", description = "车辆状态") + private String vehicleStatus; + + /** + * 车辆所属企业外键 + */ + @Schema(title = "车辆所属企业外键", type = "BigInt", defaultValue = "1", description = "车辆所属企业外键") + private Long companyId; + + /** + * 电子围栏外键 + */ + @Schema(title = "电子围栏外键", type = "Integer", defaultValue = "1", description = "电子围栏外键") + private Integer fenceGroupId; +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/VehicleManageReq.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/VehicleManageReq.java new file mode 100644 index 0000000..9a5087e --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/VehicleManageReq.java @@ -0,0 +1,43 @@ +package com.muyu.domain.req; + +import com.muyu.common.core.domain.req.PageReq; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author: LiDongJia + * @Package: com.muyu.vehicle.domain.vehicle.req + * @Project: 2112-car-cloud-server + * @name: VehicleManageReq + * @Date: 2024/9/16 15:52 + * @Description: 车辆管理查询条件实体类 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Tag(name = "车辆管理查询条件", description = "负责车辆查询条件的实体类") +public class VehicleManageReq { + + /** + * 车牌号 + */ + @Schema(type = "String", defaultValue = "冀A93827", description = "车牌号") + private String licenceNumber; + + /** + * 车辆VIN + */ + @Schema(type = "String", defaultValue = "LDC913L2240606423", description = "车辆VIN") + private String vehicleVin; + + /** + * 车辆状态 + */ + @Schema(type = "String", defaultValue = "", description = "车辆状态") + private String vehicleStatus; +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/VehicleUpdReq.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/VehicleUpdReq.java new file mode 100644 index 0000000..41ace43 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/VehicleUpdReq.java @@ -0,0 +1,97 @@ +package com.muyu.domain.req; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.common.core.annotation.Excel; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.constraints.NotEmpty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.domain.req + * @Project: 2112-car-cloud-server + * @name: VehicleUpdReq + * @Date: 2024/9/17 20:31 + * @Description: 修改车辆信息参数 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Tag(name = "修改车辆信息参数", description = "根据入参信息修改车辆信息") +public class VehicleUpdReq { + + /** + * 车牌号 + */ + @NotEmpty(message = "车牌号不可为空") + @Schema(title = "车牌号", type = "String", defaultValue = "冀A93827", description = "车牌号") + private String licenceNumber; + + /** + * 车辆颜色 + */ + @Schema(title = "车牌颜色", type = "String", defaultValue = "RED", description = "车牌颜色") + private String vehicleColor; + + /** + * 车辆VIN + */ + @Schema(title = "车辆VIN", type = "String", defaultValue = "LDC913L2240606423", description = "车辆VIN") + private String vehicleVin; + + /** + * 车辆类型外键 + */ + @Schema(title = "车辆类型", type = "BigInt", defaultValue = "1", description = "车辆类型") + private Long vehicleTypeId; + + /** + * 车辆品牌 + */ + @Schema(title = "车辆品牌", type = "String", defaultValue = "1", description = "车辆品牌") + private String vehicleBrand; + + /** + * 车辆型号 + */ + @Schema(title = "车辆型号", type = "String", defaultValue = "1", description = "车辆型号") + private String vehicleModel; + + /** + * 车辆行驶证 + */ + @Schema(title = "车辆行驶证", type = "String", defaultValue = "111111", description = "车辆行驶证") + private String vehicleLicense; + + /** + * 行驶证到期日期 + */ + @Schema(title = "行驶证到期日期", type = "Date", defaultValue = "2024-01-01 00:00:00", description = "行驶证到期日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date vehicleLicenseDueDate; + + /** + * 车辆状态 + */ + @Schema(title = "车辆状态", type = "String", defaultValue = "OFFLINE", description = "车辆状态") + private String vehicleStatus; + + /** + * 车辆所属企业外键 + */ + @Schema(title = "车辆所属企业外键", type = "BigInt", defaultValue = "1", description = "车辆所属企业外键") + private Long companyId; + + /** + * 电子围栏外键 + */ + @Schema(title = "电子围栏外键", type = "Integer", defaultValue = "1", description = "电子围栏外键") + private Integer fenceGroupId; +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/WarnVehicleReq.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/WarnVehicleReq.java new file mode 100644 index 0000000..9fbdde1 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/req/WarnVehicleReq.java @@ -0,0 +1,26 @@ +package com.muyu.domain.req; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.muyu.common.core.annotation.Excel; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Tag(name = "预警与车辆连查") +public class WarnVehicleReq { + + + /** 策略名称 */ + @Schema(type = "String",description = "策略名称") + @Excel(name = "策略名称") + private String strategyName; + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/BoundFence.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/BoundFence.java new file mode 100644 index 0000000..49a06a9 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/BoundFence.java @@ -0,0 +1,62 @@ +package com.muyu.domain.resp; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Tag(name = "围栏组绑定的围栏信息") +public class BoundFence { + + /** + * 围栏组id + */ + @TableId(value = "fence_group_id" ,type = IdType.AUTO) + @Schema(type = "Long",description = "围栏组id") + private Long fenceGroupId; + + /** + * 电子围栏id + */ + @Schema(type = "Long", description = "主键") + private Long fenceId; + + /** + * 电子围栏名称 + */ + @Schema(type = "String",description = "电子围栏名称") + private String fenceName; + + /** + * 业务类型 + */ + @Schema(type = "Integer", description = "业务类型") + private Integer fenceType; + + /** + * 围栏类型 + */ + @Schema(type = "Integer",description = "围栏类型") + private Integer typeId; + + /** + * 坐标 + */ + @Schema(type = "String", description = "坐标") + private String coordinates; + + /** + * 描述 + */ + @Schema(type = "String", description = "描述") + private String description; + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/FenceResp.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/FenceResp.java new file mode 100644 index 0000000..06f864d --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/FenceResp.java @@ -0,0 +1,85 @@ +package com.muyu.domain.resp; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@Builder +@Data +@AllArgsConstructor +@NoArgsConstructor +@Tag(name = "查询围栏") +public class FenceResp { + + /** + * 主键 + */ + @TableId(value = "fence_id" ,type = IdType.AUTO) + @Schema(type = "Long", description = "主键") + private Long fenceId; + + /** + * 围栏类型名称 + */ + @Schema(type = "String", description = "电子围栏名称") + private String typeName; + + /** + * 电子围栏名称 + */ + @Schema(type = "String",description = "电子围栏名称") + private String fenceName; + + /** + * 业务类型 + */ + @Schema(type = "Integer", description = "业务类型") + private Integer fenceType; + + /** + * 围栏类型 + */ + @Schema(type = "Integer",description = "围栏类型") + private Integer typeId; + + /** + * 坐标 + */ + @Schema(type = "String", description = "坐标") + private String coordinates; + + /** + * 描述 + */ + @Schema(type = "String", description = "描述") + private String description; + + /** + * 状态 + */ + @Schema(type = "Integer", description = "状态") + private Integer status; + + /** + * 开始时间 + */ + @Schema(type = "Date", description = "开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm") + private Date startTime; + + /** + * 结束时间 + */ + @Schema(type = "Date", description = "结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm") + private Date endTime; + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/MessageTemplateListResp.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/MessageTemplateListResp.java new file mode 100644 index 0000000..c628893 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/MessageTemplateListResp.java @@ -0,0 +1,56 @@ +package com.muyu.domain.resp; + +import com.muyu.domain.MessageTemplate; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.domain.resp + * @Project: 2112-car-cloud-server + * @name: MessageTemplateListResp + * @Date: 2024/9/18 21:15 + * @Description: 报文模版响应数据 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Tag(name = "报文模版列表", description = "负责报文模版管理列表的相应数据") +public class MessageTemplateListResp { + + /** + * 报文模版主键 + */ + @Schema(type = "Long",title = "报文模版主键") + private Long messageTemplateId; + + /** + * 报文模版名称 + */ + @Schema(type = "String",title = "报文模版名称") + private String messageTemplateName; + + /** + * 报文模版描述 + */ + @Schema(type = "String",title = "报文模版描述") + private String messageTemplateDescribe; + + /** + * 数据库对象构建为返回结果对象 + * @param messageTemplate + * @return + */ + public static MessageTemplateListResp messageTemplateBuild(MessageTemplate messageTemplate) { + return MessageTemplateListResp.builder() + .messageTemplateId(messageTemplate.getMessageTemplateId()) + .messageTemplateName(messageTemplate.getMessageTemplateName()) + .messageTemplateDescribe(messageTemplate.getMessageTemplateDescribe()) + .build(); + } +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/MessageValueListResp.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/MessageValueListResp.java new file mode 100644 index 0000000..56abbf7 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/MessageValueListResp.java @@ -0,0 +1,72 @@ +package com.muyu.domain.resp; + +import com.muyu.domain.MessageValue; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.domain.resp + * @Project: 2112-car-cloud-server + * @name: MessageValueListResp + * @Date: 2024/9/19 15:52 + * @Description: 报文数据响应数据 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Tag(name = "报文数据列表", description = "负责报文数据管理列表的相应数据") +public class MessageValueListResp { + + /** + * 报文数据主键 + */ + @Schema(type = "Long",title = "报文数据主键") + private Long messageId; + + /** + * 报文类别 + */ + @Schema(type = "String",title = "报文类别") + private String messageType; + + /** + * 报文编码 + */ + @Schema(type = "String",title = "报文编码") + private String messageCode; + + /** + * 报文标签 + */ + @Schema(type = "String",title = "报文标签") + private String messageLabel; + + /** + * 起始下标 + */ + @Schema(type = "Integer",title = "起始下标") + private Integer messageStartIndex; + + /** + * 终止下标 + */ + @Schema(type = "Integer",title = "终止下标") + private Integer messageEndIndex; + + public static MessageValueListResp valueBuild(MessageValue messageValue){ + return MessageValueListResp.builder() + .messageId(messageValue.getMessageId()) + .messageType(messageValue.getMessageType()) + .messageCode(messageValue.getMessageCode()) + .messageLabel(messageValue.getMessageLabel()) + .messageStartIndex(messageValue.getMessageStartIndex()) + .messageEndIndex(messageValue.getMessageEndIndex()) + .build(); + } +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/VehicleManageResp.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/VehicleManageResp.java new file mode 100644 index 0000000..564d8cb --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/VehicleManageResp.java @@ -0,0 +1,65 @@ +package com.muyu.domain.resp; + +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Tag(name = "车辆管理列表",description = "负责车辆管理列表的相应数据") +public class VehicleManageResp { + + /** + * 车辆主键 + */ + @Schema(type = "Long",defaultValue = "1",description = "车辆主键") + private Long vehicleId; + + /** + * 车牌号 + */ + @Schema(type = "String", defaultValue = "冀A93827", description = "车牌号") + private String licenceNumber; + + /** + * 车辆颜色 + */ + @Schema(type = "String", defaultValue = "", description = "车辆颜色") + private String vehicleColor; + + /** + * 车辆VIN + */ + @Schema(type = "String", defaultValue = "LDC913L2240606423", description = "车辆VIN") + private String vehicleVin; + + /** + * 车辆类型 + */ + @Schema(type = "Long", defaultValue = "新能源", description = "车辆类型") + private String vehicleTypeName; + + /** + * 车辆品牌 + */ + @Schema(title = "车辆品牌", type = "String", defaultValue = "1", description = "车辆品牌") + private String vehicleBrand; + + /** + * 车辆型号 + */ + @Schema(title = "车辆型号", type = "String", defaultValue = "1", description = "车辆型号") + private String vehicleModel; + + /** + * 车辆状态 + */ + @Schema(type = "String", defaultValue = "", description = "车辆状态") + private String vehicleStatus; + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/WarnVehicleResp.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/WarnVehicleResp.java new file mode 100644 index 0000000..7c24ec8 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/resp/WarnVehicleResp.java @@ -0,0 +1,69 @@ +package com.muyu.domain.resp; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.muyu.common.core.annotation.Excel; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Tag(name = "预警与车辆连查") +public class WarnVehicleResp { + + /** 策略id */ + @Schema(type = "Long",description = "策略id") + @TableId( type = IdType.AUTO) + private Long warnStrategyId; + + /** + * 车牌号 + */ + @Schema(type = "String", defaultValue = "冀A93827", description = "车牌号") + private String licenceNumber; + + /** + * 车辆VIN + */ + @Schema(type = "String", defaultValue = "LDC913L2240606423", description = "车辆VIN") + private String vehicleVin; + + /** + * 车辆状态 + */ + @Schema(type = "String", defaultValue = "", description = "车辆状态") + private String vehicleStatus; + + /** + * 车辆类型id + */ + @Schema(type = "Long",description = "车辆类型id") + @Excel(name = "车辆类型id") + private Long vehicleTypeId; + + /** + * 车辆类型名称 + */ + @Schema(type = "String",description = "车辆类型名称") + private String vehicleTypeName; + + /** + * 策略名称 + */ + @Schema(type = "String",description = "策略名称") + @Excel(name = "策略名称") + private String strategyName; + + /** + * 报文模版名称 + */ + @Schema(type = "String",description = "报文模版名称") + private String messageTemplateName; + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/pom.xml b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/pom.xml new file mode 100644 index 0000000..839a9f2 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/pom.xml @@ -0,0 +1,149 @@ + + + 4.0.0 + + com.muyu + cloud-modules-enterprise + 3.6.3 + + + cloud-modules-enterprise-server + 3.6.3 + + + cloud-modules-enterprise-server 企业业务平台 + + + 17 + 17 + UTF-8 + + + + + + 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.boot + spring-boot-starter-actuator + + + + + com.mysql + mysql-connector-j + + + + + com.muyu + cloud-common-datasource + + + + + com.muyu + cloud-common-datascope + + + + + com.muyu + cloud-common-log + + + + + com.muyu + cloud-common-xxl + + + + com.muyu + cloud-common-rabbit + + + + + com.muyu + cloud-common-system + + + + + com.muyu + cloud-common-api-doc + + + + + com.muyu + cloud-common-core + + + + + com.muyu + cloud-modules-enterprise-common + + + + + com.github.yulichang + mybatis-plus-join-boot-starter + 1.4.11 + + + + + com.muyu + cloud-modules-enterprise-cache + 3.6.3 + + + + + com.muyu + cloud-auth + 3.6.3 + + + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + + diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/CloudEnterpriseApplication.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/CloudEnterpriseApplication.java new file mode 100644 index 0000000..ac28d2f --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/CloudEnterpriseApplication.java @@ -0,0 +1,18 @@ +package com.muyu.enterprise; + +import com.muyu.common.security.annotation.EnableCustomConfig; +import com.muyu.common.security.annotation.EnableMyFeignClients; +import lombok.extern.log4j.Log4j2; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@Log4j2 +@EnableCustomConfig +@EnableMyFeignClients +@SpringBootApplication +public class CloudEnterpriseApplication { + public static void main(String[] args) { + SpringApplication.run(CloudEnterpriseApplication.class,args); + System.out.println("Hello world!"); + } +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/ElectController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/ElectController.java new file mode 100644 index 0000000..faacde7 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/ElectController.java @@ -0,0 +1,159 @@ +package com.muyu.enterprise.controller; + +import com.muyu.common.redis.service.RedisService; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.LoginUser; +import com.muyu.enterprise.cache.FenceCahceService; +import com.muyu.enterprise.cache.VehicleCacheService; +import com.muyu.enterprise.service.ElectService; +import com.muyu.enterprise.service.LanTypeService; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.domain.Fence; +import com.muyu.domain.LanType; +import com.muyu.domain.req.FenceReq; +import com.muyu.domain.resp.FenceResp; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.log4j.Log4j2; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.security.Security; +import java.util.List; +import java.util.concurrent.TimeUnit; + + +@RequestMapping("/elect") +@RestController +@Log4j2 +@Tag(name = "电子围栏信息展示",description = "电子围栏信息展示") +public class ElectController extends BaseController { + + @Autowired + private ElectService electService; + @Autowired + private LanTypeService lanTypeService; + + @Autowired + private FenceCahceService fenceCahceService; + + + + /** + * 获取电子围栏信息 + * @return + */ + @RequestMapping(path = "/list",method = RequestMethod.POST) + @Operation(description = "获取电子围栏信息列表") + public Result> showList(@RequestBody @Validated FenceReq req) { + startPage(); + List list = electService.selectFenceList(req); + fenceCahceService.get(String.valueOf(req)); + return getDataTable(list); + } + + /** + * 添加电子围栏信息 + * @param fence + * @return + */ + @PostMapping("/add") + @Operation(description = "添加电子围栏信息") + public Result add(@Validated @RequestBody Fence fence){ + boolean save = electService.save(fence); + //获取用户信息 + LoginUser loginUser = SecurityUtils.getLoginUser(); + //获取租户唯一标识 + String databaseName = loginUser.getSysUser().getDatabaseName(); + //将信息存到Redis + fenceCahceService.put(databaseName+fence.getCoordinates(),fence); + return Result.success(save?"操作成功":"操作失败"); + } + + /** + * 根据id删除信息 + * @param id + * @return + */ + @DeleteMapping("/{id}") + @Operation(description = "通过ID删除电子围栏信息") + public Result deleteById(@PathVariable("id")Long id){ + electService.removeById(id); + return Result.success(null,"操作成功"); + } + + /** + * 下拉框查询 + */ + @RequestMapping(path = "/showLanTypeList",method = RequestMethod.POST) + @Operation(description = "获取电子围栏信息列表") + public Result> showLanTypeList(){ + List list = lanTypeService.selectLanTypeList(); + return Result.success(list,"操作成功"); + } + + /** + * 启用 + */ + @PostMapping("/fenceOn/{fenceId}") + @Operation(description = "启用电子围栏") + public Result fenceOn( + @Schema(title = "ID",defaultValue = "1",type = "Long",description = "修改信息所需的唯一条件") + @PathVariable("fenceId") Long fenceId + ){ + electService.updateFenceOn(fenceId); + return Result.success(null,"操作成功"); + } + + /** + * 禁用 + */ + @GetMapping("/fenceOff/{fenceId}") + @Operation(description = "禁用电子围栏") + public Result fenceOff( + @Schema(title = "ID",defaultValue = "1",type = "Long",description = "修改信息所需的唯一条件") + @PathVariable("fenceId") Long fenceId){ + electService.updateFenceOff(fenceId); + return Result.success(null,"操作成功"); + } + + /** + * 地图信息回显 + */ + @GetMapping("/mapShow/{fenceId}") + @Operation(description = "地图信息回显,围栏") + public Result> mapShow(@PathVariable("fenceId") Long fenceId){ + List fences = electService.mapShow(fenceId); + System.out.println(fences); + return Result.success(fences); + } + + /** + * 批删 + */ + @DeleteMapping("/delMoreFence") + @Operation(description = "批量删除电子围栏") + public Result delMore(@RequestBody List fenceIds){ +// electService.delMoreFence(fenceIds); + electService.removeBatchByIds(fenceIds); + return Result.success(null,"操作成功"); + } + + /** + * 查询绑定的电子围栏(终版) + */ + @GetMapping("/showBoundFence/{fenceGroupId}") + @Operation(description = "查询绑定的电子围栏") + public Result> showBoundFence(@PathVariable("fenceGroupId") Long fenceGroupId){ + List fences = electService.showFenceBound(fenceGroupId); + return Result.success(fences); + } + + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/FencegroupController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/FencegroupController.java new file mode 100644 index 0000000..21edbb5 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/FencegroupController.java @@ -0,0 +1,91 @@ +package com.muyu.enterprise.controller; + +import com.muyu.enterprise.service.IFencegroupService; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.domain.FenceGroup; +import com.muyu.domain.req.FenceGroupAddReq; +import com.muyu.domain.req.FenceGroupReq; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + + +/** + * 围栏组Controller + * + * @author muyu + * @date 2024-09-19 + */ +@RestController +@RequestMapping("/fencegroup") +@Log4j2 +public class FencegroupController extends BaseController{ + + @Autowired + private IFencegroupService fencegroupService; + + + /** + * 单个删除 + */ + @DeleteMapping("/{id}") + @Operation(description = "根据id删除") + public Result delete(@PathVariable("id") Integer id) { + fencegroupService.removeById(id); + return Result.success(null,"操作成功"); + } + + /** + * 修改 + */ + @PutMapping("/{id}") + @Operation(description = "根据id修改围栏组信息") + public Result updateGroup( + @Validated @RequestBody FenceGroup group, + @Schema(title = "ID",defaultValue = "1",type = "Long",description = "修改信息的唯一条件") + @PathVariable Long id) { + fencegroupService.updateById(group); + return Result.success(null,"操作成功"); + } + + /** + * 围栏组信息展示(多对多) + */ + @PostMapping(path = "/showList") + @Operation(description = "围栏组信息展示") + public Result> showList(@RequestBody @Validated FenceGroupReq req) { + List fenceGroups = fencegroupService.showGroupList(req); + System.out.println(fenceGroups); + return Result.success(fenceGroups); + } + + /** + * 添加围栏组 + */ + @PostMapping("/add") + @Operation(description = "添加围栏组信息") + public Result addGroup(@Validated @RequestBody FenceGroupAddReq addReq) { + fencegroupService.addGroup(addReq); + //打印日志 + log.info(addReq); + return Result.success(null,"操作成功"); + } + + /** + * 批删 + */ + @DeleteMapping("/delMore") + @Operation(description = "根据id进行批量删除") + public Result delMore(@RequestBody List fenceGroupIds) { +// fencegroupService.delMore(fenceGroupIds); + fencegroupService.removeBatchByIds(fenceGroupIds); + return Result.success(null,"操作成功"); + } + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/MessageTemplateController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/MessageTemplateController.java new file mode 100644 index 0000000..c3b97d8 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/MessageTemplateController.java @@ -0,0 +1,73 @@ +package com.muyu.enterprise.controller; + +import com.muyu.domain.MessageTemplate; +import com.muyu.domain.req.MessageTemplateAddReq; +import com.muyu.domain.resp.MessageTemplateListResp; +import com.muyu.enterprise.service.MessageTemplateService; +import com.muyu.common.core.domain.Result; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.controller + * @Project: 2112-car-cloud-server + * @name: MessageTypeController + * @Date: 2024/9/18 20:18 + * @Description: 报文模版控制层 + */ +@Log4j2 +@RestController +@RequestMapping("messageTemplate") +@Tag(name = "报文模版控制层", description = "进行报文模版操作") +public class MessageTemplateController { + + @Autowired + private MessageTemplateService messageTemplateService; + + /** + * 报文模版列表查询 + *1 + * @return + */ + @RequestMapping(value = "/list", method = RequestMethod.POST) + public Result> findAll() { + List list = messageTemplateService.list(); + List messageTemplateListRespList = list.stream() + .map(template -> MessageTemplateListResp.messageTemplateBuild( + template + ) + ).collect(Collectors.toList()); +// ).toList(); + return Result.success(messageTemplateListRespList); + } + + /** + * 新增报文模版 + * + * @param messageTemplateAddReq + * @return + */ + @PostMapping("/") + public Result save(@RequestBody MessageTemplateAddReq messageTemplateAddReq) { + messageTemplateService.save(MessageTemplate.addBuild(messageTemplateAddReq)); + return Result.success("添加成功"); + } + + /** + * 删除报文模版 + * @param messageTemplateId + * @return + */ + @DeleteMapping("/{messageTemplateId}") + public Result delete(@PathVariable("messageTemplateId") Long messageTemplateId) { + messageTemplateService.removeById(messageTemplateId); + return Result.success("删除成功"); + } + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/MessageValueController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/MessageValueController.java new file mode 100644 index 0000000..62f376e --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/MessageValueController.java @@ -0,0 +1,100 @@ +package com.muyu.enterprise.controller; + +import com.muyu.enterprise.service.MessageValueService; +import com.muyu.common.core.domain.Result; +import com.muyu.domain.MessageValue; +import com.muyu.domain.req.MessageValueAddReq; +import com.muyu.domain.req.MessageValueReq; +import com.muyu.domain.resp.MessageValueListResp; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.controller + * @Project: 2112-car-cloud-server + * @name: MessageValueController + * @Date: 2024/9/19 15:46 + * @Description: 报文数据控制层 + */ +@Log4j2 +@RestController +@RequestMapping("/messageValue") +@Tag(name = "报文数据控制层", description = "进行报文数据操作") +public class MessageValueController { + + @Autowired + private MessageValueService messageValueService; + + /** + * 报文数据列表查询 + * + * @param messageValueReq + * @return + */ + @RequestMapping(value = "/list", method = RequestMethod.POST) + @Operation(summary = "报文数据列表", description = "根据报文类别, 报文模版筛选报文数据") + public Result> findAll(@RequestBody MessageValueReq messageValueReq) { + List list = messageValueService.findAll(messageValueReq); + return Result.success(list); + } + + /** + * 提供预警和故障调用 + * @return + */ + @GetMapping("/allList") + @Operation(summary = "报文数据下拉框", description = "全部报文数据下拉框") + public Result> findAllList() { + List list = messageValueService.list().stream().map( + value -> MessageValueListResp.valueBuild( + value + ) + ).collect(Collectors.toList()); + return Result.success(list); + } + + /** + * 添加报文数据 + * @param messageValueAddReq + * @return + */ + @PostMapping("/add") + @Operation(summary = "添加报文数据", description = "新增报文数据") + public Result save(@RequestBody MessageValueAddReq messageValueAddReq) { + messageValueService.save(MessageValue.addBuild(messageValueAddReq)); + return Result.success("添加成功"); + } + + /** + * 通过报文id删除数据 + * @param messageId + * @return + */ + @DeleteMapping("/{messageId}") + @Operation(summary = "删除报文数据", description = "删除报文数据") + public Result delete(@PathVariable Long messageId) { + messageValueService.removeById(messageId); + return Result.success("删除成功"); + } + + /** + * 根据报文模版id查询报文数据 + * @param templateId + * @return + */ + @GetMapping("/findByTemplateId/{templateId}") + @Operation(summary = "根据报文模版id查询报文数据", description = "根据报文模版id查询报文数据") + public Result> findByTemplateId(@PathVariable("templateId") Long templateId) { + List list = messageValueService.findByTemplateId(templateId); + return Result.success(list); + } + + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/MiddleController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/MiddleController.java new file mode 100644 index 0000000..860e435 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/MiddleController.java @@ -0,0 +1,59 @@ +package com.muyu.enterprise.controller; + +import com.muyu.enterprise.service.MiddleService; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.domain.Middle; +import com.muyu.domain.req.MiddleReq; +import groovy.util.logging.Log4j2; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +@Log4j2 +@RequestMapping("/middle") +@RestController +@Tag(name = "中间表", description = "中间表") +public class MiddleController extends BaseController { + + @Autowired + private MiddleService middleService; + + + /** + * 删除 + */ + @DeleteMapping("/{id}") + @Operation(description = "删除信息") + public Result deleteMiddle(@PathVariable Integer id) { + middleService.removeById(id); + logger.info("删除id为{}的中间表信息", id); + return Result.success(null,"操作成功"); + } + + /** + * 修改 + */ + @PutMapping("/{id}") + @Operation(description = "修改信息") + public Result updateMiddle( + @PathVariable Integer id, + @Validated @RequestBody MiddleReq req) { + middleService.updateById(req); + logger.info("修改id为{}的中间表信息", id); + return Result.success(null,"操作成功"); + } + + /** + * 添加 + */ + @PostMapping("/addMiddle") + @Operation(description = "添加") + public Result addMiddle(@Validated @RequestBody MiddleReq req) { + middleService.save(Middle.build(req)); + return Result.success(null,"操作成功"); + } + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleController.java new file mode 100644 index 0000000..c38fc4f --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleController.java @@ -0,0 +1,163 @@ +package com.muyu.enterprise.controller; + +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.LoginUser; +import com.muyu.enterprise.cache.VehicleCacheService; +import com.muyu.enterprise.service.VehicleService; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.utils.poi.ExcelUtil; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.domain.BoundMiddle; +import com.muyu.domain.Vehicle; +import com.muyu.domain.req.VehicleAddReq; +import com.muyu.domain.req.VehicleManageReq; +import com.muyu.domain.req.VehicleUpdReq; +import com.muyu.domain.resp.VehicleManageResp; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.controller + * @Project: 2112-car-cloud-server + * @name: VehicleController + * @Date: 2024/9/17 17:35 + * @Description: 车辆管理控制层 + */ +@Log4j2 +@RestController +@RequestMapping("/vehicleManage") +@Tag(name = "车辆管理控制层", description = "进行车辆管理操作") +public class VehicleController extends BaseController { + + @Autowired + private VehicleService vehicleService; + + //车辆缓存 + @Autowired + private VehicleCacheService vehicleCacheService; + + + /** + * 查询车辆管理列表 + * + * @return + */ + @RequestMapping(path = "/list", method = RequestMethod.POST) + @Operation(summary = "车辆管理列表", description = "根据车牌号、VIN码、车辆状态筛选车辆") + public Result> getVehicleList(@RequestBody VehicleManageReq vehicleManageReq) { + startPage(); + List list = vehicleService.getVehicleList(vehicleManageReq); + return getDataTable(list); + } + + /** + * 车辆录入 + * + * @param vehicleAddReq + * @return + */ + @PostMapping("/") + @Operation(summary = "新增车辆", description = "录入车辆信息") + public Result save(@RequestBody VehicleAddReq vehicleAddReq) { + boolean save = vehicleService.save(Vehicle.addBuild(vehicleAddReq)); + //获取用户信息 + LoginUser loginUser = SecurityUtils.getLoginUser(); + //获取租户唯一标识 + String databaseName = loginUser.getSysUser().getDatabaseName(); + //存到redis + vehicleCacheService.put(databaseName+vehicleAddReq.getVehicleVin(), Vehicle.addBuild(vehicleAddReq)); + return Result.success(save? "新增成功" : "新增失败"); + } + + /** + * 通过车辆id获取车辆信息 + * + * @param vehicleId + * @return + */ + @GetMapping("/{vehicleId}") + @Operation(summary = "通过id查询车辆信息", description = "通过id查询车辆信息") + public Result findById(@PathVariable("vehicleId") Long vehicleId) { + return Result.success(vehicleService.getById(vehicleId)); + } + + /** + * 修改车辆信息 + * + * @param vehicleId + * @param vehicleUpdReq + * @return + */ + @PutMapping("/{vehicleId}") + @Operation(summary = "修改车辆信息", description = "修改车辆信息") + public Result update( + @PathVariable("vehicleId") Long vehicleId, + @RequestBody @Validated VehicleUpdReq vehicleUpdReq) { + vehicleService.updateById(Vehicle.updBuild(vehicleUpdReq, () -> vehicleId)); + return Result.success("修改成功"); + } + + /** + * 通过车辆id删除车辆信息 + * + * @param vehicleId + * @return + */ + @DeleteMapping("/{vehicleId}") + @Operation(summary = "通过车辆id删除车辆信息", description = "通过车辆id删除车辆信息") + public Result delete(@PathVariable("vehicleId") Long vehicleId) { + vehicleService.removeById(vehicleId); + return Result.success("删除成功"); + } + + /** + * 批量删除车辆 + * + * @param vehicleIds + * @return + */ + @DeleteMapping("/batchDelete") + @Operation(summary = "批量删除车辆") + public Result batchDelete(@RequestBody List vehicleIds) { + vehicleService.removeBatchByIds(vehicleIds); + return Result.success("批量删除成功"); + } + + @PostMapping("/export") + public void export(HttpServletResponse response) { + List list = vehicleService.list(); + ExcelUtil util = new ExcelUtil<>(Vehicle.class); + util.exportExcel(response, list, "车辆数据"); + } + + /** + * 车辆绑定围栏组 + */ + @GetMapping("/addBoundFenceGroup") + @Operation(description = "车辆绑定围栏组") + public Result boundFenceGroup( + @Validated @RequestBody BoundMiddle boundMiddle){ + return null; + } + + /** + * 通过车辆vin码查询模板id + * @param vehicleVin + * @return + */ + @GetMapping("/findByVehicleVin/{vehicleVin}") + @Operation(description = "通过车辆vin码查询模板id") + public Result findByVehicleVin(@PathVariable("vehicleVin") String vehicleVin) { + Long templateId = vehicleService.findByVehicleVin(vehicleVin); + return Result.success(templateId); + } +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleTypeController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleTypeController.java new file mode 100644 index 0000000..a2ee8ce --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleTypeController.java @@ -0,0 +1,42 @@ +package com.muyu.enterprise.controller; + +import com.muyu.domain.VehicleType; +import com.muyu.enterprise.service.VehicleTypeService; +import com.muyu.common.core.domain.Result; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.controller + * @Project: 2112-car-cloud-server + * @name: VehicleTypeController + * @Date: 2024/9/17 17:08 + * @Description: 车辆类型实体类 + */ +@Log4j2 +@RestController +@RequestMapping("/vehicleType") +@Tag(name = "车辆类型控制层", description = "车辆类型控制层") +public class VehicleTypeController { + + @Autowired + private VehicleTypeService vehicleTypeService; + + /** + * 查询所有车辆类型 + * @return + */ + @RequestMapping(path = "/", method = RequestMethod.POST) + @Operation(summary = "车辆类型列表",description = "车辆类型列表") + public Result> findAll(){ + return Result.success(vehicleTypeService.list()); + } +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/WarnLogsController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/WarnLogsController.java new file mode 100644 index 0000000..ac73d8b --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/WarnLogsController.java @@ -0,0 +1,80 @@ +package com.muyu.enterprise.controller; + +import com.muyu.common.core.domain.Result; +import com.muyu.domain.WarnLogs; +import com.muyu.enterprise.service.WarnLogsService; +import io.swagger.v3.oas.annotations.Operation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; + +@RestController +@RequestMapping("/logs") +public class WarnLogsController { + + @Autowired + private WarnLogsService warnLogsService; + + /** + * 日志列表 + * @return + */ + @PostMapping("logsList") + @Operation(summary = "车辆类型列表",description = "车辆类型列表") + public Result> logsList(){ + return Result.success(warnLogsService.list()); + } + + /** + * 根据ID查询日志 + * @param id + * @return + */ + @GetMapping("/{id}") + @Operation(summary = "根据ID查询日志", description = "根据ID查询日志") + public Result getById(@PathVariable("id") Long id){ + return Result.success(warnLogsService.getById(id)); + } + + /** + * 添加日志 + * @param warnLogs + * @return + */ + @PostMapping("logsAdd") + @Operation(summary = "添加日志",description = "添加日志") + public Result logsAdd(@Validated @RequestBody WarnLogs warnLogs){ + return Result.success(warnLogsService.save(warnLogs)); + } + + /** + * 修改日志 + * @param warnLogs + * @param id + * @return + */ + @PostMapping("/{id}") + @Operation(summary = "修改日志",description = "修改日志") + public Result logsUpdate(@Validated @RequestBody WarnLogs warnLogs,@PathVariable("id") Long id){ + return Result.success(warnLogsService.updateById(WarnLogs.updateBuilder(warnLogs, () -> id))); + } + + /** + * 删除日志 + * @param id + * @return + */ + @DeleteMapping("/{id}") + @Operation(summary = "删除日志",description = "删除日志") + public Result logsDelete(@PathVariable("id") Long id){ + return Result.success(warnLogsService.removeById(id)); + } + + @DeleteMapping("deleteLogs") + public Result deleteLogs(@RequestParam("id") Long[] id){ + return Result.success(warnLogsService.removeBatchByIds(Arrays.asList(id))); + } +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/WarnRuleController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/WarnRuleController.java new file mode 100644 index 0000000..6867691 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/WarnRuleController.java @@ -0,0 +1,86 @@ +package com.muyu.enterprise.controller; + +import com.muyu.common.core.domain.Result; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.LoginUser; +import com.muyu.domain.WarnRule; +import com.muyu.enterprise.cache.WarnRuleCacheService; +import com.muyu.enterprise.service.WarnRuleService; +import io.swagger.v3.oas.annotations.Operation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/rule") +public class WarnRuleController { + @Autowired + private WarnRuleService warnRuleService; + + @Autowired + private WarnRuleCacheService warnRuleCacheService; + + /** + * 规则列表 + * @return + */ + @RequestMapping(path = "/ruleList",method = RequestMethod.POST) + @Operation(summary = "规则列表", description = "获取所有规则列表") + public Result> ruleList(){ + return Result.success(warnRuleService.list()); + } + + /** + * 根据ID查询规则 + * @param id + * @return + */ + @GetMapping("/{id}") + @Operation(summary = "根据ID来查询数据", description = "根据ID来查询数据") + public Result getById(@PathVariable("id")Long id){ + return Result.success(warnRuleService.getById(id)); + } + + /** + * 添加规则 + * @param warnRule + * @return + */ + @RequestMapping(path = "ruleAdd",method = RequestMethod.POST) + @Operation(summary = "添加规则", description = "添加规则") + public Result ruleAdd(@Validated @RequestBody WarnRule warnRule){ + boolean save = warnRuleService.save(warnRule); + //获取用户信息 + LoginUser loginUser = SecurityUtils.getLoginUser(); + //获取租户唯一标识 + String databaseName = loginUser.getSysUser().getDatabaseName(); + warnRuleCacheService.put(databaseName+warnRule.getRuleName(),warnRule); + return Result.success(save); + } + + /** + * 修改规则 + * @param warnRule + * @param id + * @return + */ + @RequestMapping(path = "/{id}",method = RequestMethod.POST) + @Operation(summary = "修改规则", description = "修改规则") + public Result ruleUpdate(@Validated @RequestBody WarnRule warnRule, @PathVariable("id")Long id){ + return Result.success(warnRuleService.updateById(WarnRule.updateBuilder(warnRule,() -> id))); + } + + /** + * 删除规则 + * @param id + * @return + */ + @RequestMapping(path = "/{id}",method = RequestMethod.DELETE) + @Operation(summary = "删除规则", description = "删除规则") + public Result ruleDelete(@PathVariable("id")Long id){ + return Result.success(warnRuleService.removeById(id)); + } + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/WarnStrategyController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/WarnStrategyController.java new file mode 100644 index 0000000..4071bf0 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/WarnStrategyController.java @@ -0,0 +1,102 @@ +package com.muyu.enterprise.controller; + +import com.muyu.common.core.domain.Result; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.LoginUser; +import com.muyu.domain.WarnStrategy; +import com.muyu.enterprise.cache.WarnStrategyCacheService; +import com.muyu.enterprise.service.WarnStrategyService; +import com.muyu.domain.req.WarnVehicleReq; +import com.muyu.domain.resp.WarnVehicleResp; +import io.swagger.v3.oas.annotations.Operation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/strategy") +public class WarnStrategyController { + + @Autowired + private WarnStrategyService warnStrategyService; + + //缓存策略 + @Autowired + private WarnStrategyCacheService warnStrategyCacheService; + + /** + * 策略列表 + * @return + */ + @RequestMapping(path = "/strategyList",method = RequestMethod.POST) + @Operation(summary = "策略列表", description = "获取所有策略列表") + public Result> strategyList() { + return Result.success(warnStrategyService.list()); + } + + /** + * 根据ID查询策略数据 + * @param id + * @return + */ + @GetMapping("/{id}") + @Operation(summary = "根据ID查询策略数据", description = "根据ID查询策略数据") + public Result getById(@PathVariable("id") Long id){ + return Result.success(warnStrategyService.getById(id)); + } + + /** + * 规则策略双表联查 + * @param warnVehicleReq + * @return + */ + @RequestMapping(path = "ruleStrategyList",method = RequestMethod.POST) + @Operation(summary = "策略规则双表联查", description = "获取所有策略规则双表联查") + public Result> ruleStrategyList(@RequestBody WarnVehicleReq warnVehicleReq){ + return Result.success(warnStrategyService.ruleStrategyList(warnVehicleReq)); + } + + /** + * 添加策略 + * @param warnStrategy + * @return + */ + @RequestMapping(path = "strategyAdd",method = RequestMethod.POST) + @Operation(summary = "添加策略", description = "添加策略") + public Result strategyAdd(@Validated @RequestBody WarnStrategy warnStrategy){ + + boolean save = warnStrategyService.save(warnStrategy); + //存进Redis + //获取用户信息 + LoginUser loginUser = SecurityUtils.getLoginUser(); + //获取租户唯一标识 + String databaseName = loginUser.getSysUser().getDatabaseName(); + warnStrategyCacheService.put(databaseName+warnStrategy.getWarnStrategyId(),warnStrategy); + return Result.success(); + } + + /** + * 修改策略 + * @param warnStrategy + * @param id + * @return + */ + @RequestMapping(path = "/{id}",method = RequestMethod.POST) + @Operation(summary = "修改策略", description = "修改策略") + public Result strategyUpdate(@Validated @RequestBody WarnStrategy warnStrategy, @PathVariable("id")Long id){ + return Result.success(warnStrategyService.updateById(WarnStrategy.updateBuilder(warnStrategy,() -> id))); + } + + /** + * 删除策略 + * @param id + * @return + */ + @RequestMapping(path = "/{id}",method = RequestMethod.DELETE) + @Operation(summary = "删除策略", description = "删除策略") + public Result strategyDelete(@PathVariable("id") Long id){ + return Result.success(warnStrategyService.removeById(id)); + } +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/ElectMapper.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/ElectMapper.java new file mode 100644 index 0000000..518253d --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/ElectMapper.java @@ -0,0 +1,45 @@ +package com.muyu.enterprise.mapper; + +import com.github.yulichang.base.MPJBaseMapper; +import com.muyu.domain.Fence; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; + +import java.util.List; + +@Mapper +public interface ElectMapper extends MPJBaseMapper { + + /** + * 启用 + */ + @Update("update fence set status = 0 where fence_id = #{fenceId}") + int updateFenceOn(@Param("fenceId") Long fenceId); + + /** + * 禁用 + */ + @Update("update fence set status = 1 where fence_id = #{fenceId}") + int updateFenceOff(@Param("fenceId") Long fenceId); + + /** + * 回显地图 + */ + @Select("select * from fence where fence_id=#{fenceId}") + List mapShow(@Param("fenceId") Long fenceId); + +// /** +// * 根据id查询车辆 +// */ +// Fence boundFence(@Param("fenceId") Long fenceId); + + /** + * 查询电子围栏(终版) + */ + @Select("SELECT * FROM middle m LEFT JOIN fence f ON m.fence_id = f.fence_id WHERE fence_group_id = #{fenceGroupId}") + List showFenceBound(@Param("fenceGroupId") Long fenceGroupId ); + + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/FencegroupMapper.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/FencegroupMapper.java new file mode 100644 index 0000000..a074b79 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/FencegroupMapper.java @@ -0,0 +1,34 @@ +package com.muyu.enterprise.mapper; + +import com.github.yulichang.base.MPJBaseMapper; +import com.muyu.domain.FenceGroup; +import com.muyu.domain.req.FenceGroupReq; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 围栏组Mapper接口 + * + * @author muyu + * @date 2024-09-19 + */ +@Mapper +public interface FencegroupMapper extends MPJBaseMapper { + + + /* + * 展示围栏组信息 + * @param req + * @return + */ + @Select("SELECT g.fence_group_id,g.group_type,g.priority,g.`status`,f.fence_id, group_CONCAT( f.fence_name ) AS fence_name FROM fence_group g LEFT JOIN middle m ON m.fence_group_id = g.fence_group_id LEFT JOIN fence f ON m.fence_id = f.fence_id GROUP BY g.fence_group_id") + List showGroupList(FenceGroupReq req); + + @Insert("INSERT INTO `vehicle-basic`.`middle` (`fence_id`, `fence_group_id`) VALUES (#{id},#{fenceGroupId}) ") + void addMiddle(@Param("fenceIds") Integer[] fenceIds,@Param("fenceGroupId") Long fenceGroupId); + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/LanTypeMapper.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/LanTypeMapper.java new file mode 100644 index 0000000..de76daf --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/LanTypeMapper.java @@ -0,0 +1,17 @@ +package com.muyu.enterprise.mapper; + +import com.github.yulichang.base.MPJBaseMapper; +import com.muyu.domain.LanType; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.mapper + * @Project: 2112-car-cloud-server + * @name: VehicleMapper + * @Date: 2024/9/17 17:43 + * @Description: 车辆管理持久层 + */ +@Mapper +public interface LanTypeMapper extends MPJBaseMapper { +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/MessageTemplateMapper.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/MessageTemplateMapper.java new file mode 100644 index 0000000..e265c7e --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/MessageTemplateMapper.java @@ -0,0 +1,17 @@ +package com.muyu.enterprise.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.domain.MessageTemplate; +import org.apache.ibatis.annotations.Mapper; + +/** +*@Author: LiDongJia +*@Package: com.muyu.car.mapper +*@Project: 2112-car-cloud-server +*@name: MessageTypeMapper +*@Date: 2024/9/18 20:12 +*@Description: 报文类型持久层 +*/ +@Mapper +public interface MessageTemplateMapper extends BaseMapper { +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/MessageValueMapper.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/MessageValueMapper.java new file mode 100644 index 0000000..52c8b48 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/MessageValueMapper.java @@ -0,0 +1,17 @@ +package com.muyu.enterprise.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.domain.MessageValue; +import org.apache.ibatis.annotations.Mapper; + +/** +*@Author: LiDongJia +*@Package: com.muyu.car.mapper +*@Project: 2112-car-cloud-server +*@name: MessageTypeMapper +*@Date: 2024/9/18 20:12 +*@Description: 报文类型持久层 +*/ +@Mapper +public interface MessageValueMapper extends BaseMapper { +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/MiddleMapper.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/MiddleMapper.java new file mode 100644 index 0000000..7a6c49f --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/MiddleMapper.java @@ -0,0 +1,21 @@ +package com.muyu.enterprise.mapper; + +import com.github.yulichang.base.MPJBaseMapper; +import com.muyu.domain.Middle; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface MiddleMapper extends MPJBaseMapper { + + /** + * 绑定的电子围栏 + */ + @Select("SELECT fence.fence_name,fence.description FROM middle LEFT JOIN fence ON middle.fence_id = fence.fence_id LEFT JOIN fencegroup ON middle.fence_group_id = fencegroup.fence_group_id WHERE middle.fence_group_id=#{fenceGruopId}") + List showFenceList(@Param("fenceGruopId") Long fenceGruopId); + + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/VehicleMapper.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/VehicleMapper.java new file mode 100644 index 0000000..5a986fe --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/VehicleMapper.java @@ -0,0 +1,43 @@ +package com.muyu.enterprise.mapper; + +import com.github.yulichang.base.MPJBaseMapper; +import com.muyu.domain.Vehicle; +import com.muyu.domain.req.VehicleManageReq; +import com.muyu.domain.resp.VehicleManageResp; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.mapper + * @Project: 2112-car-cloud-server + * @name: VehicleMapper + * @Date: 2024/9/17 17:43 + * @Description: 车辆管理持久层 + */ +@Mapper +public interface VehicleMapper extends MPJBaseMapper { + + /** + * 查询车辆管理列表 + * @param vehicleManageReq + * @return + */ + List findAll(VehicleManageReq vehicleManageReq); + + /** + * 车辆绑定围栏组 + */ + void bindFenceGroup(@Param("fenceGroupIds") Integer[] fenceGroupIds, @Param("vehicleId") Long vehicleId); + + /** + * 根据车辆vin查询模版id + * @param vehicleVin + * @return + */ + @Select("SELECT t.message_template_id FROM vehicle v LEFT JOIN vehicle_type t ON v.vehicle_type_id = t.vehicle_type_id WHERE v.vehicle_vin = #{vehicleVin}") + Long findByVehicleVin(String vehicleVin); +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/VehicleTypeMapper.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/VehicleTypeMapper.java new file mode 100644 index 0000000..f9859b2 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/VehicleTypeMapper.java @@ -0,0 +1,17 @@ +package com.muyu.enterprise.mapper; + +import com.github.yulichang.base.MPJBaseMapper; +import com.muyu.domain.VehicleType; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.mapper + * @Project: 2112-car-cloud-server + * @name: VehicleTypeMapper + * @Date: 2024/9/17 17:22 + * @Description: 车辆类型持久层 + */ +@Mapper +public interface VehicleTypeMapper extends MPJBaseMapper { +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/WarnLogsMapper.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/WarnLogsMapper.java new file mode 100644 index 0000000..9068977 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/WarnLogsMapper.java @@ -0,0 +1,9 @@ +package com.muyu.enterprise.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.domain.WarnLogs; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface WarnLogsMapper extends BaseMapper { +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/WarnRuleMapper.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/WarnRuleMapper.java new file mode 100644 index 0000000..8d082f3 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/WarnRuleMapper.java @@ -0,0 +1,9 @@ +package com.muyu.enterprise.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.domain.WarnRule; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface WarnRuleMapper extends BaseMapper { +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/WarnStrategyMapper.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/WarnStrategyMapper.java new file mode 100644 index 0000000..5e0a799 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/WarnStrategyMapper.java @@ -0,0 +1,9 @@ +package com.muyu.enterprise.mapper; + +import com.github.yulichang.base.MPJBaseMapper; +import com.muyu.domain.WarnStrategy; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface WarnStrategyMapper extends MPJBaseMapper { +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/ElectService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/ElectService.java new file mode 100644 index 0000000..d0b2896 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/ElectService.java @@ -0,0 +1,44 @@ +package com.muyu.enterprise.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.domain.Fence; +import com.muyu.domain.req.FenceReq; +import com.muyu.domain.resp.FenceResp; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface ElectService extends IService { + + /** + * 列表查询 + */ + List selectFenceList(FenceReq req); + + /** + * 启用 + */ + void updateFenceOn(Long fenceId); + + /** + * 禁用 + */ + void updateFenceOff(Long fenceId); + + /** + * 回显地图 + */ + List mapShow(@Param("fenceId") Long fenceId); + +// /** +// * 根据id查询车辆 +// */ +// Fence boundFence(@Param("fenceId") Long fenceId); + + /** + * 查询电子围栏(终版) + */ + List showFenceBound(@Param("fenceGroupId") Long fenceGroupId ); + + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/IFencegroupService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/IFencegroupService.java new file mode 100644 index 0000000..d9c4968 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/IFencegroupService.java @@ -0,0 +1,25 @@ +package com.muyu.enterprise.service; +import java.util.List; +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.domain.FenceGroup; +import com.muyu.domain.req.FenceGroupAddReq; +import com.muyu.domain.req.FenceGroupReq; +/** + * 围栏组Service接口 + */ +public interface IFencegroupService extends IService { + + + /** + * 展示围栏组信息 + * @param req + * @return + */ + List showGroupList(FenceGroupReq req); + + void addGroup(FenceGroupAddReq addReq); + +// List haveFence(HaveFence haveFence); +// + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/LanTypeService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/LanTypeService.java new file mode 100644 index 0000000..144bdde --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/LanTypeService.java @@ -0,0 +1,25 @@ +package com.muyu.enterprise.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.domain.LanType; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.mapper + * @Project: 2112-car-cloud-server + * @name: VehicleMapper + * @Date: 2024/9/17 17:43 + * @Description: 车辆管理持久层 + */ +@Mapper +public interface LanTypeService extends IService { + + /** + * 围栏类型下拉框 + */ + List selectLanTypeList(); + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/MessageTemplateService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/MessageTemplateService.java new file mode 100644 index 0000000..cb614a9 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/MessageTemplateService.java @@ -0,0 +1,17 @@ +package com.muyu.enterprise.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.domain.MessageTemplate; +import org.springframework.stereotype.Service; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.service + * @Project: 2112-car-cloud-server + * @name: MessageService + * @Date: 2024/9/18 20:13 + * @Description: 报文模版接口 + */ +@Service +public interface MessageTemplateService extends IService { +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/MessageValueService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/MessageValueService.java new file mode 100644 index 0000000..8def6fd --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/MessageValueService.java @@ -0,0 +1,41 @@ +package com.muyu.enterprise.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.domain.MessageValue; +import com.muyu.domain.req.MessageValueReq; +import com.muyu.domain.resp.MessageValueListResp; + +import java.util.List; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.service + * @Project: 2112-car-cloud-server + * @name: MessageValueService + * @Date: 2024/9/19 15:47 + * @Description: 报文数据接口 + */ +public interface MessageValueService extends IService { + + /** + * 报文模版数据列表 + * @param messageValueReq + * @return + */ + List findAll(MessageValueReq messageValueReq); + + /** + * 根据报文模版id查询报文数据列表 + * @param templateId + * @return + */ + List findByTemplateId(Long templateId); + +// /** +// * 报文解析 +// * +// * @param testStr +// * @return +// */ +// JSONObject analysis(String testStr); +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/MiddleService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/MiddleService.java new file mode 100644 index 0000000..e79ccd5 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/MiddleService.java @@ -0,0 +1,32 @@ +package com.muyu.enterprise.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.domain.Middle; +import com.muyu.domain.req.MiddleReq; + +import java.util.List; + +public interface MiddleService extends IService { + + void updateById(MiddleReq req); + + /** + * 查询围栏组绑定的 + * + * @param fenceGruopId + * @return + */ +// HaveFence showList(@Param("fenceGruopId") Long fenceGruopId); + + /** + * 查询中间表中id + */ + List selectMiddleList(Long id); + +// /** +// * 绑定的电子围栏 +// */ +// List showFenceList(@Param("fenceGruopId") Long fenceGruopId); +// + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/VehicleService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/VehicleService.java new file mode 100644 index 0000000..a7f2c89 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/VehicleService.java @@ -0,0 +1,34 @@ +package com.muyu.enterprise.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.domain.Vehicle; +import com.muyu.domain.req.VehicleManageReq; +import com.muyu.domain.resp.VehicleManageResp; + +import java.util.List; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.service + * @Project: 2112-car-cloud-server + * @name: VehicleService + * @Date: 2024/9/17 17:39 + * @Description: 车辆管理接口 + */ +public interface VehicleService extends IService { + + /** + * 查询车辆管理列表 + * @param vehicleManageReq + * @return + */ + List getVehicleList(VehicleManageReq vehicleManageReq); + + + /** + * 根据车辆vin查询模板id + * @param vehicleVin + * @return + */ + Long findByVehicleVin(String vehicleVin); +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/VehicleTypeService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/VehicleTypeService.java new file mode 100644 index 0000000..e7e0390 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/VehicleTypeService.java @@ -0,0 +1,15 @@ +package com.muyu.enterprise.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.domain.VehicleType; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.service + * @Project: 2112-car-cloud-server + * @name: VehicleTypeImpl + * @Date: 2024/9/17 17:18 + * @Description: 车辆类型接口 + */ +public interface VehicleTypeService extends IService { +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/WarnLogsService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/WarnLogsService.java new file mode 100644 index 0000000..a8c294d --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/WarnLogsService.java @@ -0,0 +1,11 @@ +package com.muyu.enterprise.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.domain.WarnLogs; + +import java.util.List; + +public interface WarnLogsService extends IService { + + List logsList(WarnLogs warnLogs); +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/WarnRuleService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/WarnRuleService.java new file mode 100644 index 0000000..77a8bb7 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/WarnRuleService.java @@ -0,0 +1,7 @@ +package com.muyu.enterprise.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.domain.WarnRule; + +public interface WarnRuleService extends IService { +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/WarnStrategyService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/WarnStrategyService.java new file mode 100644 index 0000000..061954a --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/WarnStrategyService.java @@ -0,0 +1,13 @@ +package com.muyu.enterprise.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.domain.WarnStrategy; +import com.muyu.domain.req.WarnVehicleReq; +import com.muyu.domain.resp.WarnVehicleResp; + +import java.util.List; + +public interface WarnStrategyService extends IService { + + ListruleStrategyList(WarnVehicleReq warnVehicleReq); +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/ElectServiceImpl.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/ElectServiceImpl.java new file mode 100644 index 0000000..5f39ff7 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/ElectServiceImpl.java @@ -0,0 +1,81 @@ +package com.muyu.enterprise.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.muyu.enterprise.mapper.ElectMapper; +import com.muyu.enterprise.mapper.WarnLogsMapper; +import com.muyu.enterprise.service.ElectService; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.domain.Fence; +import com.muyu.domain.LanType; +import com.muyu.domain.req.FenceReq; +import com.muyu.domain.resp.FenceResp; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class ElectServiceImpl + extends ServiceImpl + implements ElectService { + + @Autowired + private ElectMapper electMapper; + @Autowired + private WarnLogsMapper warnLogsMapper; + + @Override + public List selectFenceList(FenceReq req) { + + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + + wrapper.selectAll(Fence.class) + .selectAs(LanType::getTypeName,FenceReq::getTypeName) + .leftJoin(LanType.class,LanType::getTypeId,Fence::getTypeId) + .like( + StringUtils.isNotEmpty(req.getFenceName()), + Fence::getFenceName, + req.getFenceName() + ); + List list = electMapper.selectJoinList(FenceResp.class, wrapper); + return list; + } +// +// @Override +// public int addFence(Fence fence) { +// int i = electMapper.addFence(fence); +// return i; +// } + + + @Override + public void updateFenceOn(Long fenceId) { + int i = electMapper.updateFenceOn(fenceId); + } + + @Override + public void updateFenceOff(Long fenceId) { + int i = electMapper.updateFenceOff(fenceId); + } + + @Override + public List mapShow(Long fenceId) { + List fences = electMapper.mapShow(fenceId); + return fences; + } + +// @Override +// public Fence boundFence(Long fenceId) { +// Fence fence = electMapper.boundFence(fenceId); +// return fence; +// } + + @Override + public List showFenceBound(Long fenceGroupId) { + List fences = electMapper.showFenceBound(fenceGroupId); + return fences; + } + + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/FencegroupServiceImpl.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/FencegroupServiceImpl.java new file mode 100644 index 0000000..98a6e69 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/FencegroupServiceImpl.java @@ -0,0 +1,50 @@ +package com.muyu.enterprise.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.enterprise.mapper.FencegroupMapper; +import com.muyu.enterprise.service.IFencegroupService; +import com.muyu.domain.FenceGroup; +import com.muyu.domain.req.FenceGroupAddReq; +import com.muyu.domain.req.FenceGroupReq; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 围栏组Service业务层处理 + * + * @author muyu + * @date 2024-09-19 + */ +@Service +public class FencegroupServiceImpl + extends ServiceImpl + implements IFencegroupService { + + @Autowired + private FencegroupMapper fencegroupMapper; + + @Override + public List showGroupList(FenceGroupReq req) { + List fenceGroups = fencegroupMapper.showGroupList(req); + return fenceGroups; + } + + @Override + public void addGroup(FenceGroupAddReq addReq) { + FenceGroup build = FenceGroup.build(addReq); + this.save(build); + //添加中间表 + Long fenceGroupId = build.getFenceGroupId(); + fencegroupMapper.addMiddle(addReq.getFenceIds(),fenceGroupId); + + } + +// @Override +// public List haveFence(HaveFence haveFence) { +// return null; +// } + + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/LanTypeServiceImpl.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/LanTypeServiceImpl.java new file mode 100644 index 0000000..a79b39e --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/LanTypeServiceImpl.java @@ -0,0 +1,24 @@ +package com.muyu.enterprise.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.enterprise.mapper.LanTypeMapper; +import com.muyu.enterprise.service.LanTypeService; +import com.muyu.domain.LanType; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class LanTypeServiceImpl + extends ServiceImpl + implements LanTypeService { + + @Autowired + private LanTypeMapper lanTypeMapper; + + @Override + public List selectLanTypeList() { + return lanTypeMapper.selectList(null); + } +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MessageTemplateServiceImpl.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MessageTemplateServiceImpl.java new file mode 100644 index 0000000..c538b45 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MessageTemplateServiceImpl.java @@ -0,0 +1,21 @@ +package com.muyu.enterprise.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.enterprise.mapper.MessageTemplateMapper; +import com.muyu.enterprise.service.MessageTemplateService; +import com.muyu.domain.MessageTemplate; +import org.springframework.stereotype.Service; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.service.impl + * @Project: 2112-car-cloud-server + * @name: MessageServiceImpl + * @Date: 2024/9/18 20:14 + * @Description: 报文类型业务层 + */ +@Service +public class MessageTemplateServiceImpl + extends ServiceImpl + implements MessageTemplateService { +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MessageValueServiceImpl.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MessageValueServiceImpl.java new file mode 100644 index 0000000..bab87e8 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MessageValueServiceImpl.java @@ -0,0 +1,113 @@ +package com.muyu.enterprise.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.enterprise.mapper.MessageValueMapper; +import com.muyu.enterprise.service.MessageValueService; +import com.muyu.domain.MessageValue; +import com.muyu.domain.req.MessageValueReq; +import com.muyu.domain.resp.MessageValueListResp; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.service.impl + * @Project: 2112-car-cloud-server + * @name: MessageValueServiceImpl + * @Date: 2024/9/19 15:48 + * @Description: 报文数据业务层 + */ +@Log4j2 +@Service +public class MessageValueServiceImpl + extends ServiceImpl + implements MessageValueService { + + @Autowired + private MessageValueMapper messageValueMapper; + + public MessageValueServiceImpl(MessageValueMapper messageValueMapper) { + this.messageValueMapper = messageValueMapper; + } + + @Override + public List findAll(MessageValueReq messageValueReq) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq( + MessageValue::getTemplateId, messageValueReq.getMessageTemplateId() + ); + queryWrapper.eq( + MessageValue::getMessageType, messageValueReq.getMessageType() + ); + List list = this.list(queryWrapper); + return list.stream() + .map(messageValue -> MessageValueListResp.valueBuild( + messageValue + ) + ).collect(Collectors.toList()); +// ).list; + } + + /** + * 根据报文模版id获取报文模板列表 + * @param templateId 报文模版id + * @return 报文模板列表 + */ + @Override + public List findByTemplateId(Long templateId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(MessageValue::getTemplateId, templateId); + List list = this.list(queryWrapper); + return list.stream() + .map(messageValue -> MessageValueListResp.valueBuild( + messageValue + ) + ).collect(Collectors.toList()); + } + + +// @Override +// public JSONObject analysis(String testStr) { +// +// if (testStr.length() < 18){ +// throw new RuntimeException("报文格式不正确"); +// } +// //根据空格切割数据 +// String[] hexArray = testStr.split(" "); +// StringBuilder result = new StringBuilder(); +// for (String hex : hexArray) { +// int decimal = Integer.parseInt(hex, 16); +// result.append((char) decimal); +// } +// log.info(result); +// //取出车辆VIN码 +// String vehicleVin = result.substring(1, 18); +// log.info("车辆VIN:" + vehicleVin); +// //根据车辆VIN码, 查找到报文模版id +// Long templateId = messageValueMapper.getTemplateId(vehicleVin); +// log.info("模版id:" + templateId); +// //获取到报文模版的列表 +// List templateList = messageValueMapper.getTemplateList(templateId); +// //存储报文模板解析后数据 +// JSONObject jsonObject = new JSONObject(); +// for (MessageValueListResp messageValue : templateList) { +// //起始位下标 +// Integer startIndex = messageValue.getMessageStartIndex() - 1; +// //截止位下标 +// Integer endIndex = messageValue.getMessageEndIndex(); +// //根据报文模版截取数据 +// String value = result.substring(startIndex, endIndex); +// //存入数据 +// jsonObject.put(messageValue.getMessageLabel(), value); +// } +// for (Map.Entry stringObjectEntry : jsonObject) { +// log.info(stringObjectEntry.getKey() + ":" + stringObjectEntry.getValue()); +// } +// return jsonObject; +// } +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MiddleServiceImpl.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MiddleServiceImpl.java new file mode 100644 index 0000000..0410dbd --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MiddleServiceImpl.java @@ -0,0 +1,53 @@ +package com.muyu.enterprise.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.enterprise.mapper.ElectMapper; +import com.muyu.enterprise.mapper.MiddleMapper; +import com.muyu.enterprise.service.MiddleService; +import com.muyu.domain.Middle; +import com.muyu.domain.req.MiddleReq; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class MiddleServiceImpl + extends ServiceImpl + implements MiddleService { + + @Autowired + private MiddleMapper middleMapper; + @Autowired + private ElectMapper electMapper; + + + @Override + public void updateById(MiddleReq req) { + + } + + @Override + public List selectMiddleList(Long gruopId) { + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Middle::getFenceGroupId,gruopId); + this.list(queryWrapper); + return this.list(); + } + +// @Override +// public List showFenceList(Long fenceGruopId) { +// List fenceList = middleMapper.showFenceList(fenceGruopId); +// ArrayList fences = new ArrayList<>(); +// for (Middle middle : fenceList) { +// //获取中间表电子围栏id +// Long fenceId = middle.getFenceId(); +// //查询围栏组绑定的围栏列表 +// fences.add(electMapper.boundFence(fenceId)); +// } +// return fences; +// } + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/VehicleServiceImpl.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/VehicleServiceImpl.java new file mode 100644 index 0000000..1c3716b --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/VehicleServiceImpl.java @@ -0,0 +1,72 @@ +package com.muyu.enterprise.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.domain.Vehicle; +import com.muyu.domain.VehicleType; +import com.muyu.domain.req.VehicleManageReq; +import com.muyu.domain.resp.VehicleManageResp; +import com.muyu.enterprise.mapper.VehicleMapper; +import com.muyu.enterprise.service.VehicleService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.service.impl + * @Project: 2112-car-cloud-server + * @name: VehicleServiceImpl + * @Date: 2024/9/17 17:41 + * @Description: 车辆管理业务层 + */ +@Service +public class VehicleServiceImpl + extends ServiceImpl + implements VehicleService { + + @Autowired + private VehicleMapper vehicleMapper; + + /** + * 查询车辆管理列表 + * @param vehicleManageReq + * @return + */ + @Override + public List getVehicleList(VehicleManageReq vehicleManageReq) { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + + wrapper.selectAll(Vehicle.class) + .selectAs(VehicleType::getVehicleTypeName, VehicleManageResp::getVehicleTypeName) + .leftJoin(VehicleType.class, VehicleType::getVehicleTypeId, Vehicle::getVehicleTypeId) + .like( + StringUtils.isNotEmpty(vehicleManageReq.getLicenceNumber()), + Vehicle::getLicenceNumber, vehicleManageReq.getLicenceNumber() + ) + .like( + StringUtils.isNotEmpty(vehicleManageReq.getVehicleVin()), + Vehicle::getVehicleVin, vehicleManageReq.getVehicleVin() + ) + .eq( + StringUtils.isNotBlank(vehicleManageReq.getVehicleStatus()), + Vehicle::getVehicleStatus, vehicleManageReq.getVehicleStatus() + ); + List list = vehicleMapper.selectJoinList(VehicleManageResp.class, wrapper); + return list; + } + + /** + * 根据车辆vin查询模板id + * @param vehicleVin + * @return + */ + @Override + public Long findByVehicleVin(String vehicleVin) { + Long templateId = vehicleMapper.findByVehicleVin(vehicleVin); + return templateId; + } + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/VehicleTypeServiceImpl.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/VehicleTypeServiceImpl.java new file mode 100644 index 0000000..02da105 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/VehicleTypeServiceImpl.java @@ -0,0 +1,21 @@ +package com.muyu.enterprise.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.domain.VehicleType; +import com.muyu.enterprise.mapper.VehicleTypeMapper; +import com.muyu.enterprise.service.VehicleTypeService; +import org.springframework.stereotype.Service; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.service.impl + * @Project: 2112-car-cloud-server + * @name: VehicleTypeServiceImpl + * @Date: 2024/9/17 17:21 + * @Description: 车辆类型实现层 + */ +@Service +public class VehicleTypeServiceImpl + extends ServiceImpl + implements VehicleTypeService { +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/WarnLogsServiceImpl.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/WarnLogsServiceImpl.java new file mode 100644 index 0000000..428005d --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/WarnLogsServiceImpl.java @@ -0,0 +1,28 @@ +package com.muyu.enterprise.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.domain.WarnLogs; +import com.muyu.enterprise.mapper.WarnLogsMapper; +import com.muyu.enterprise.service.WarnLogsService; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class WarnLogsServiceImpl extends ServiceImpl implements WarnLogsService { + @Override + public List logsList(WarnLogs warnLogs) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.like( + StringUtils.isNotEmpty(warnLogs.getVin()), + WarnLogs::getVin,warnLogs.getVin() + ); + queryWrapper.eq( + StringUtils.isNotEmpty(String.valueOf(warnLogs.getWarnRuleId())), + WarnLogs::getWarnRuleId,warnLogs.getWarnRuleId() + ); + return baseMapper.selectList(queryWrapper); + } +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/WarnRuleServiceImpl.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/WarnRuleServiceImpl.java new file mode 100644 index 0000000..8280780 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/WarnRuleServiceImpl.java @@ -0,0 +1,11 @@ +package com.muyu.enterprise.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.domain.WarnRule; +import com.muyu.enterprise.mapper.WarnRuleMapper; +import com.muyu.enterprise.service.WarnRuleService; +import org.springframework.stereotype.Service; + +@Service +public class WarnRuleServiceImpl extends ServiceImpl implements WarnRuleService { +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/WarnStrategyServiceImpl.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/WarnStrategyServiceImpl.java new file mode 100644 index 0000000..bd43942 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/WarnStrategyServiceImpl.java @@ -0,0 +1,37 @@ +package com.muyu.enterprise.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.muyu.enterprise.mapper.WarnStrategyMapper; +import com.muyu.enterprise.service.WarnStrategyService; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.domain.VehicleType; +import com.muyu.domain.WarnStrategy; +import com.muyu.domain.req.WarnVehicleReq; +import com.muyu.domain.resp.WarnVehicleResp; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class WarnStrategyServiceImpl extends ServiceImpl + implements WarnStrategyService { + + @Autowired + private WarnStrategyMapper warnStrategyMapper; + + @Override + public List ruleStrategyList(WarnVehicleReq warnVehicleReq) { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + wrapper.selectAll(WarnStrategy.class) + .selectAs(VehicleType::getVehicleTypeName,WarnVehicleResp::getVehicleTypeName) + .leftJoin(VehicleType.class, VehicleType::getVehicleTypeId,WarnStrategy::getVehicleTypeId) + .like( + StringUtils.isNotEmpty(warnVehicleReq.getStrategyName()), + WarnStrategy::getStrategyName,warnVehicleReq.getStrategyName() + ); + List list = warnStrategyMapper.selectJoinList(WarnVehicleResp.class, wrapper); + return list; + } +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/utils/VehicleConstant.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/utils/VehicleConstant.java new file mode 100644 index 0000000..8d701ae --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/utils/VehicleConstant.java @@ -0,0 +1,28 @@ +package com.muyu.enterprise.utils; + +/** + * @Author: LiDongJia + * @Package: com.muyu.car.utils + * @Project: 2112-car-cloud-server + * @name: VehicleConstant + * @Date: 2024/9/25 23:12 + * @Description: 常量 + */ +public class VehicleConstant { + + /** + * 分包符 + */ + public static final String DATA_PACK_SEPARATOR = "#$&"; + + /** + * 报文起始位 + */ + public static final String MSG_START = "7E"; + + /** + * 报文结束位 + */ + public static final String MSG_END = "7E"; + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/banner.txt b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/banner.txt new file mode 100644 index 0000000..0dd5eee --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/banner.txt @@ -0,0 +1,2 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..66bc686 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/bootstrap.yml @@ -0,0 +1,61 @@ +# Tomcat +server: + port: 9207 + + +# nacos线上地址 +nacos: + addr: 47.101.49.53:8848 + user-name: nacos + password: nacos + namespace: seven +# SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all +# Spring +spring: + amqp: + deserialization: + trust: + all: true + main: + allow-bean-definition-overriding: true + application: + # 应用名称 + name: cloud-car + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + config: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + # 系统共享配置 + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # 系统环境Config共享配置 + - application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # xxl-job 配置文件 + - application-xxl-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # rabbit 配置文件 + - application-rabbit-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} +logging: + level: + com.muyu.system.mapper: DEBUG diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/logback/dev.xml b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/logback/dev.xml new file mode 100644 index 0000000..a0e16b0 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/logback/dev.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/logback/prod.xml b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/logback/prod.xml new file mode 100644 index 0000000..1a1ebfb --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/logback/prod.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + ${log.sky.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/logback/test.xml b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/logback/test.xml new file mode 100644 index 0000000..1a1ebfb --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/logback/test.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + ${log.sky.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-enterprise/pom.xml b/cloud-modules/cloud-modules-enterprise/pom.xml new file mode 100644 index 0000000..d34833d --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/pom.xml @@ -0,0 +1,127 @@ + + + 4.0.0 + + com.muyu + cloud-modules + 3.6.3 + + + cloud-modules-enterprise + 3.6.3 + + cloud-modules-enterprise 企业平台 + + + 17 + 17 + UTF-8 + + + + cloud-modules-enterprise-common + cloud-modules-enterprise-server + cloud-modules-enterprise-cache + + + pom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-file/pom.xml b/cloud-modules/cloud-modules-file/pom.xml new file mode 100644 index 0000000..e151176 --- /dev/null +++ b/cloud-modules/cloud-modules-file/pom.xml @@ -0,0 +1,82 @@ + + + + com.muyu + cloud-modules + 3.6.3 + + 4.0.0 + + cloud-modules-file + + + cloud-modules-file文件服务 + + + + + + + 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.boot + spring-boot-starter-actuator + + + + + io.minio + minio + ${minio.version} + + + + + com.muyu + cloud-common-system + + + + + com.muyu + cloud-common-api-doc + + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + + diff --git a/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/CloudFileApplication.java b/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/CloudFileApplication.java new file mode 100644 index 0000000..4e1c628 --- /dev/null +++ b/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/CloudFileApplication.java @@ -0,0 +1,17 @@ +package com.muyu.file; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; + +/** + * 文件服务 + * + * @author muyu + */ +@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) +public class CloudFileApplication { + public static void main (String[] args) { + SpringApplication.run(CloudFileApplication.class, args); + } +} diff --git a/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/config/MinioConfig.java b/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/config/MinioConfig.java new file mode 100644 index 0000000..af8c1bb --- /dev/null +++ b/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/config/MinioConfig.java @@ -0,0 +1,72 @@ +package com.muyu.file.config; + +import io.minio.MinioClient; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * Minio 配置信息 + * + * @author muyu + */ +@Configuration +@ConfigurationProperties(prefix = "minio") +public class MinioConfig { + /** + * 服务地址 + */ + private String url; + + /** + * 用户名 + */ + private String accessKey; + + /** + * 密码 + */ + private String secretKey; + + /** + * 存储桶名称 + */ + private String bucketName; + + public String getUrl () { + return url; + } + + public void setUrl (String url) { + this.url = url; + } + + public String getAccessKey () { + return accessKey; + } + + public void setAccessKey (String accessKey) { + this.accessKey = accessKey; + } + + public String getSecretKey () { + return secretKey; + } + + public void setSecretKey (String secretKey) { + this.secretKey = secretKey; + } + + public String getBucketName () { + return bucketName; + } + + public void setBucketName (String bucketName) { + this.bucketName = bucketName; + } + + @Bean + public MinioClient getMinioClient () { + return MinioClient.builder().endpoint(url).credentials(accessKey, secretKey).build(); + } +} diff --git a/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/config/ResourcesConfig.java b/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/config/ResourcesConfig.java new file mode 100644 index 0000000..78a8be0 --- /dev/null +++ b/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/config/ResourcesConfig.java @@ -0,0 +1,48 @@ +package com.muyu.file.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import java.io.File; + +/** + * 通用映射配置 + * + * @author muyu + */ +@Configuration +public class ResourcesConfig implements WebMvcConfigurer { + /** + * 资源映射路径 前缀 + */ + @Value("${file.prefix}") + public String localFilePrefix; + /** + * 上传文件存储在本地的根路径 + */ + @Value("${file.path}") + private String localFilePath; + + @Override + public void addResourceHandlers (ResourceHandlerRegistry registry) { + /** 本地文件上传路径 */ + registry.addResourceHandler(localFilePrefix + "/**") + .addResourceLocations("file:" + localFilePath + File.separator); + } + + /** + * 开启跨域 + */ + @Override + public void addCorsMappings (CorsRegistry registry) { + // 设置允许跨域的路由 + registry.addMapping(localFilePrefix + "/**") + // 设置允许跨域请求的域名 + .allowedOrigins("*") + // 设置允许的方法 + .allowedMethods("GET"); + } +} diff --git a/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/controller/SysFileController.java b/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/controller/SysFileController.java new file mode 100644 index 0000000..ed04d11 --- /dev/null +++ b/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/controller/SysFileController.java @@ -0,0 +1,44 @@ +package com.muyu.file.controller; + +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.utils.file.FileUtils; +import com.muyu.file.service.ISysFileService; +import com.muyu.common.system.domain.SysFile; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +/** + * 文件请求处理 + * + * @author muyu + */ +@RestController +public class SysFileController { + private static final Logger log = LoggerFactory.getLogger(SysFileController.class); + + @Autowired + private ISysFileService sysFileService; + + /** + * 文件上传请求 + */ + @PostMapping("/upload") + public Result upload (@RequestPart(value = "file") MultipartFile file) { + try { + // 上传并返回访问地址 + String url = sysFileService.uploadFile(file); + SysFile sysFile = new SysFile(); + sysFile.setName(FileUtils.getName(url)); + sysFile.setUrl(url); + return Result.success(sysFile); + } catch (Exception e) { + log.error("上传文件失败", e); + return Result.error(e.getMessage()); + } + } +} diff --git a/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/service/ISysFileService.java b/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/service/ISysFileService.java new file mode 100644 index 0000000..416c26c --- /dev/null +++ b/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/service/ISysFileService.java @@ -0,0 +1,21 @@ +package com.muyu.file.service; + +import org.springframework.web.multipart.MultipartFile; + +/** + * 文件上传接口 + * + * @author muyu + */ +public interface ISysFileService { + /** + * 文件上传接口 + * + * @param file 上传的文件 + * + * @return 访问地址 + * + * @throws Exception + */ + public String uploadFile (MultipartFile file) throws Exception; +} diff --git a/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/service/LocalSysFileServiceImpl.java b/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/service/LocalSysFileServiceImpl.java new file mode 100644 index 0000000..f3ce089 --- /dev/null +++ b/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/service/LocalSysFileServiceImpl.java @@ -0,0 +1,50 @@ +package com.muyu.file.service; + +import com.muyu.file.utils.FileUploadUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +/** + * 本地文件存储 + * + * @author muyu + */ +@Primary +@Service +public class LocalSysFileServiceImpl implements ISysFileService { + /** + * 资源映射路径 前缀 + */ + @Value("${file.prefix}") + public String localFilePrefix; + + /** + * 域名或本机访问地址 + */ + @Value("${file.domain}") + public String domain; + + /** + * 上传文件存储在本地的根路径 + */ + @Value("${file.path}") + private String localFilePath; + + /** + * 本地文件上传接口 + * + * @param file 上传的文件 + * + * @return 访问地址 + * + * @throws Exception + */ + @Override + public String uploadFile (MultipartFile file) throws Exception { + String name = FileUploadUtils.upload(localFilePath, file); + String url = domain + localFilePrefix + name; + return url; + } +} diff --git a/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/service/MinioSysFileServiceImpl.java b/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/service/MinioSysFileServiceImpl.java new file mode 100644 index 0000000..9a50de4 --- /dev/null +++ b/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/service/MinioSysFileServiceImpl.java @@ -0,0 +1,50 @@ +package com.muyu.file.service; + +import com.alibaba.nacos.common.utils.IoUtils; +import com.muyu.file.config.MinioConfig; +import com.muyu.file.utils.FileUploadUtils; +import io.minio.MinioClient; +import io.minio.PutObjectArgs; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.io.InputStream; + +/** + * Minio 文件存储 + * + * @author muyu + */ +@Service +public class MinioSysFileServiceImpl implements ISysFileService { + @Autowired + private MinioConfig minioConfig; + + @Autowired + private MinioClient client; + + /** + * Minio文件上传接口 + * + * @param file 上传的文件 + * + * @return 访问地址 + * + * @throws Exception + */ + @Override + public String uploadFile (MultipartFile file) throws Exception { + String fileName = FileUploadUtils.extractFilename(file); + InputStream inputStream = file.getInputStream(); + PutObjectArgs args = PutObjectArgs.builder() + .bucket(minioConfig.getBucketName()) + .object(fileName) + .stream(inputStream, file.getSize(), -1) + .contentType(file.getContentType()) + .build(); + client.putObject(args); + IoUtils.closeQuietly(inputStream); + return minioConfig.getUrl() + "/" + minioConfig.getBucketName() + "/" + fileName; + } +} diff --git a/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/utils/FileUploadUtils.java b/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/utils/FileUploadUtils.java new file mode 100644 index 0000000..0a48cbf --- /dev/null +++ b/cloud-modules/cloud-modules-file/src/main/java/com/muyu/file/utils/FileUploadUtils.java @@ -0,0 +1,163 @@ +package com.muyu.file.utils; + +import com.muyu.common.core.exception.file.FileException; +import com.muyu.common.core.exception.file.FileNameLengthLimitExceededException; +import com.muyu.common.core.exception.file.FileSizeLimitExceededException; +import com.muyu.common.core.exception.file.InvalidExtensionException; +import com.muyu.common.core.utils.DateUtils; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.utils.file.FileTypeUtils; +import com.muyu.common.core.utils.file.MimeTypeUtils; +import com.muyu.common.core.utils.uuid.Seq; +import org.apache.commons.io.FilenameUtils; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Paths; +import java.util.Objects; + +/** + * 文件上传工具类 + * + * @author muyu + */ +public class FileUploadUtils { + /** + * 默认大小 50M + */ + public static final long DEFAULT_MAX_SIZE = 50 * 1024 * 1024; + + /** + * 默认的文件名最大长度 100 + */ + public static final int DEFAULT_FILE_NAME_LENGTH = 100; + + /** + * 根据文件路径上传 + * + * @param baseDir 相对应用的基目录 + * @param file 上传的文件 + * + * @return 文件名称 + * + * @throws IOException + */ + public static final String upload (String baseDir, MultipartFile file) throws IOException { + try { + return upload(baseDir, file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION); + } catch (FileException fe) { + throw new IOException(fe.getDefaultMessage(), fe); + } catch (Exception e) { + throw new IOException(e.getMessage(), e); + } + } + + /** + * 文件上传 + * + * @param baseDir 相对应用的基目录 + * @param file 上传的文件 + * @param allowedExtension 上传文件类型 + * + * @return 返回上传成功的文件名 + * + * @throws FileSizeLimitExceededException 如果超出最大大小 + * @throws FileNameLengthLimitExceededException 文件名太长 + * @throws IOException 比如读写文件出错时 + * @throws InvalidExtensionException 文件校验异常 + */ + public static final String upload (String baseDir, MultipartFile file, String[] allowedExtension) + throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException, + InvalidExtensionException { + int fileNamelength = Objects.requireNonNull(file.getOriginalFilename()).length(); + if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH) { + throw new FileNameLengthLimitExceededException(FileUploadUtils.DEFAULT_FILE_NAME_LENGTH); + } + + assertAllowed(file, allowedExtension); + + String fileName = extractFilename(file); + + String absPath = getAbsoluteFile(baseDir, fileName).getAbsolutePath(); + file.transferTo(Paths.get(absPath)); + return getPathFileName(fileName); + } + + /** + * 编码文件名 + */ + public static final String extractFilename (MultipartFile file) { + return StringUtils.format("{}/{}_{}.{}", DateUtils.datePath(), + FilenameUtils.getBaseName(file.getOriginalFilename()), Seq.getId(Seq.uploadSeqType), FileTypeUtils.getExtension(file)); + } + + private static final File getAbsoluteFile (String uploadDir, String fileName) throws IOException { + File desc = new File(uploadDir + File.separator + fileName); + + if (!desc.exists()) { + if (!desc.getParentFile().exists()) { + desc.getParentFile().mkdirs(); + } + } + return desc.isAbsolute() ? desc : desc.getAbsoluteFile(); + } + + private static final String getPathFileName (String fileName) throws IOException { + String pathFileName = "/" + fileName; + return pathFileName; + } + + /** + * 文件大小校验 + * + * @param file 上传的文件 + * + * @throws FileSizeLimitExceededException 如果超出最大大小 + * @throws InvalidExtensionException 文件校验异常 + */ + public static final void assertAllowed (MultipartFile file, String[] allowedExtension) + throws FileSizeLimitExceededException, InvalidExtensionException { + long size = file.getSize(); + if (size > DEFAULT_MAX_SIZE) { + throw new FileSizeLimitExceededException(DEFAULT_MAX_SIZE / 1024 / 1024); + } + + String fileName = file.getOriginalFilename(); + String extension = FileTypeUtils.getExtension(file); + if (allowedExtension != null && !isAllowedExtension(extension, allowedExtension)) { + if (allowedExtension == MimeTypeUtils.IMAGE_EXTENSION) { + throw new InvalidExtensionException.InvalidImageExtensionException(allowedExtension, extension, + fileName); + } else if (allowedExtension == MimeTypeUtils.FLASH_EXTENSION) { + throw new InvalidExtensionException.InvalidFlashExtensionException(allowedExtension, extension, + fileName); + } else if (allowedExtension == MimeTypeUtils.MEDIA_EXTENSION) { + throw new InvalidExtensionException.InvalidMediaExtensionException(allowedExtension, extension, + fileName); + } else if (allowedExtension == MimeTypeUtils.VIDEO_EXTENSION) { + throw new InvalidExtensionException.InvalidVideoExtensionException(allowedExtension, extension, + fileName); + } else { + throw new InvalidExtensionException(allowedExtension, extension, fileName); + } + } + } + + /** + * 判断MIME类型是否是允许的MIME类型 + * + * @param extension 上传文件类型 + * @param allowedExtension 允许上传文件类型 + * + * @return true/false + */ + public static final boolean isAllowedExtension (String extension, String[] allowedExtension) { + for (String str : allowedExtension) { + if (str.equalsIgnoreCase(extension)) { + return true; + } + } + return false; + } +} diff --git a/cloud-modules/cloud-modules-file/src/main/resources/banner.txt b/cloud-modules/cloud-modules-file/src/main/resources/banner.txt new file mode 100644 index 0000000..0dd5eee --- /dev/null +++ b/cloud-modules/cloud-modules-file/src/main/resources/banner.txt @@ -0,0 +1,2 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} diff --git a/cloud-modules/cloud-modules-file/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-file/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..489071b --- /dev/null +++ b/cloud-modules/cloud-modules-file/src/main/resources/bootstrap.yml @@ -0,0 +1,47 @@ +# Tomcat +server: + port: 9300 + +# nacos线上地址 +nacos: + addr: 47.101.49.53:8848 + user-name: nacos + password: nacos + namespace: seven + +# Spring +spring: + application: + # 应用名称 + name: cloud-file + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + config: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + # 系统共享配置 + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # 系统环境Config共享配置 + - application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} diff --git a/cloud-modules/cloud-modules-file/src/main/resources/logback/dev.xml b/cloud-modules/cloud-modules-file/src/main/resources/logback/dev.xml new file mode 100644 index 0000000..30606f7 --- /dev/null +++ b/cloud-modules/cloud-modules-file/src/main/resources/logback/dev.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-file/src/main/resources/logback/prod.xml b/cloud-modules/cloud-modules-file/src/main/resources/logback/prod.xml new file mode 100644 index 0000000..151a3cb --- /dev/null +++ b/cloud-modules/cloud-modules-file/src/main/resources/logback/prod.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-file/src/main/resources/logback/test.xml b/cloud-modules/cloud-modules-file/src/main/resources/logback/test.xml new file mode 100644 index 0000000..151a3cb --- /dev/null +++ b/cloud-modules/cloud-modules-file/src/main/resources/logback/test.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-gen/pom.xml b/cloud-modules/cloud-modules-gen/pom.xml new file mode 100644 index 0000000..39d5526 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/pom.xml @@ -0,0 +1,109 @@ + + + + com.muyu + cloud-modules + 3.6.3 + + 4.0.0 + + cloud-modules-gen + + + cloud-modules-gen代码生成 + + + + + + + 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.boot + spring-boot-starter-actuator + + + + + org.apache.velocity + velocity-engine-core + + + + + com.mysql + mysql-connector-j + + + + + com.muyu + cloud-common-log + + + + + com.muyu + cloud-common-api-doc + + + + + com.muyu + cloud-common-xxl + + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + + -parameters + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/CloudGenApplication.java b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/CloudGenApplication.java new file mode 100644 index 0000000..da3eb43 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/CloudGenApplication.java @@ -0,0 +1,20 @@ +package com.muyu.gen; + +import com.muyu.common.security.annotation.EnableCustomConfig; +import com.muyu.common.security.annotation.EnableMyFeignClients; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * 代码生成 + * + * @author muyu + */ +@EnableCustomConfig +@EnableMyFeignClients +@SpringBootApplication +public class CloudGenApplication { + public static void main (String[] args) { + SpringApplication.run(CloudGenApplication.class, args); + } +} diff --git a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/config/GenConfig.java b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/config/GenConfig.java new file mode 100644 index 0000000..65d9824 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/config/GenConfig.java @@ -0,0 +1,65 @@ +package com.muyu.gen.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * 代码生成相关配置 + * + * @author muyu + */ +@Component +@ConfigurationProperties(prefix = "gen") +public class GenConfig { + /** + * 作者 + */ + public static String author; + + /** + * 生成包路径 + */ + public static String packageName; + + /** + * 自动去除表前缀,默认是false + */ + public static boolean autoRemovePre; + + /** + * 表前缀(类名不会包含表前缀) + */ + public static String tablePrefix; + + public static String getAuthor () { + return author; + } + + public void setAuthor (String author) { + GenConfig.author = author; + } + + public static String getPackageName () { + return packageName; + } + + public void setPackageName (String packageName) { + GenConfig.packageName = packageName; + } + + public static boolean getAutoRemovePre () { + return autoRemovePre; + } + + public void setAutoRemovePre (boolean autoRemovePre) { + GenConfig.autoRemovePre = autoRemovePre; + } + + public static String getTablePrefix () { + return tablePrefix; + } + + public void setTablePrefix (String tablePrefix) { + GenConfig.tablePrefix = tablePrefix; + } +} diff --git a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/controller/GenController.java b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/controller/GenController.java new file mode 100644 index 0000000..1dfe039 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/controller/GenController.java @@ -0,0 +1,193 @@ +package com.muyu.gen.controller; + +import com.muyu.common.core.text.Convert; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.common.log.annotation.Log; +import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.gen.domain.GenTable; +import com.muyu.gen.domain.GenTableColumn; +import com.muyu.gen.service.IGenTableColumnService; +import com.muyu.gen.service.IGenTableService; +import org.apache.commons.io.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import jakarta.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 代码生成 操作处理 + * + * @author muyu + */ +@RequestMapping("/gen") +@RestController +public class GenController extends BaseController { + @Autowired + private IGenTableService genTableService; + + @Autowired + private IGenTableColumnService genTableColumnService; + + /** + * 查询代码生成列表 + */ + @RequiresPermissions("tool:gen:list") + @GetMapping("/list") + public Result> genList (GenTable genTable) { + startPage(); + List list = genTableService.selectGenTableList(genTable); + return getDataTable(list); + } + + /** + * 修改代码生成业务 + */ + @RequiresPermissions("tool:gen:query") + @GetMapping(value = "/{tableId}") + public Result getInfo (@PathVariable("tableId") Long tableId) { + GenTable table = genTableService.selectGenTableById(tableId); + List tables = genTableService.selectGenTableAll(); + List list = genTableColumnService.selectGenTableColumnListByTableId(tableId); + Map map = new HashMap(); + map.put("info", table); + map.put("rows", list); + map.put("tables", tables); + return success(map); + } + + /** + * 查询数据库列表 + */ + @RequiresPermissions("tool:gen:list") + @GetMapping("/db/list") + public Result> dataList (GenTable genTable) { + startPage(); + List list = genTableService.selectDbTableList(genTable); + return getDataTable(list); + } + + /** + * 查询数据表字段列表 + */ + @GetMapping(value = "/column/{tableId}") + public Result> columnList (Long tableId) { + List list = genTableColumnService.selectGenTableColumnListByTableId(tableId); + return Result.success( + TableDataInfo.builder() + .total(list.size()) + .rows(list) + .build() + ); + } + + /** + * 导入表结构(保存) + */ + @RequiresPermissions("tool:gen:import") + @Log(title = "代码生成", businessType = BusinessType.IMPORT) + @PostMapping("/importTable") + public Result importTableSave (String tables) { + String[] tableNames = Convert.toStrArray(tables); + // 查询表信息 + List tableList = genTableService.selectDbTableListByNames(tableNames); + genTableService.importGenTable(tableList); + return success(); + } + + /** + * 修改保存代码生成业务 + */ + @RequiresPermissions("tool:gen:edit") + @Log(title = "代码生成", businessType = BusinessType.UPDATE) + @PutMapping + public Result editSave (@Validated @RequestBody GenTable genTable) { + genTableService.validateEdit(genTable); + genTableService.updateGenTable(genTable); + return success(); + } + + /** + * 删除代码生成 + */ + @RequiresPermissions("tool:gen:remove") + @Log(title = "代码生成", businessType = BusinessType.DELETE) + @DeleteMapping("/{tableIds}") + public Result remove (@PathVariable("tableIds") Long[] tableIds) { + genTableService.deleteGenTableByIds(tableIds); + return success(); + } + + /** + * 预览代码 + */ + @RequiresPermissions("tool:gen:preview") + @GetMapping("/preview/{tableId}") + public Result preview (@PathVariable("tableId") Long tableId) throws IOException { + Map dataMap = genTableService.previewCode(tableId); + return success(dataMap); + } + + /** + * 生成代码(下载方式) + */ + @RequiresPermissions("tool:gen:code") + @Log(title = "代码生成", businessType = BusinessType.GENCODE) + @GetMapping("/download/{tableName}") + public void download (HttpServletResponse response, @PathVariable("tableName") String tableName) throws IOException { + byte[] data = genTableService.downloadCode(tableName); + genCode(response, data); + } + + /** + * 生成代码(自定义路径) + */ + @RequiresPermissions("tool:gen:code") + @Log(title = "代码生成", businessType = BusinessType.GENCODE) + @GetMapping("/genCode/{tableName}") + public Result genCode (@PathVariable("tableName") String tableName) { + genTableService.generatorCode(tableName); + return success(); + } + + /** + * 同步数据库 + */ + @RequiresPermissions("tool:gen:edit") + @Log(title = "代码生成", businessType = BusinessType.UPDATE) + @GetMapping("/synchDb/{tableName}") + public Result synchDb (@PathVariable("tableName") String tableName) { + genTableService.synchDb(tableName); + return success(); + } + + /** + * 批量生成代码 + */ + @RequiresPermissions("tool:gen:code") + @Log(title = "代码生成", businessType = BusinessType.GENCODE) + @GetMapping("/batchGenCode") + public void batchGenCode (HttpServletResponse response, String tables) throws IOException { + String[] tableNames = Convert.toStrArray(tables); + byte[] data = genTableService.downloadCode(tableNames); + genCode(response, data); + } + + /** + * 生成zip文件 + */ + private void genCode (HttpServletResponse response, byte[] data) throws IOException { + response.reset(); + response.setHeader("Content-Disposition", "attachment; filename=\"muyu.zip\""); + response.addHeader("Content-Length", String.valueOf(data.length)); + response.setContentType("application/octet-stream; charset=UTF-8"); + IOUtils.write(data, response.getOutputStream()); + } +} diff --git a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/domain/GenTable.java b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/domain/GenTable.java new file mode 100644 index 0000000..edb6510 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/domain/GenTable.java @@ -0,0 +1,376 @@ +package com.muyu.gen.domain; + +import com.muyu.common.core.constant.GenConstants; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import org.apache.commons.lang3.ArrayUtils; + +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotBlank; +import java.util.List; + + + + +/** + * 业务表 gen_table + * + * @author muyu + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class GenTable extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 编号 + */ + private Long tableId; + + /** + * 表名称 + */ + @NotBlank(message = "表名称不能为空") + private String tableName; + + /** + * 表描述 + */ + @NotBlank(message = "表描述不能为空") + private String tableComment; + + /** + * 关联父表的表名 + */ + private String subTableName; + + /** + * 本表关联父表的外键名 + */ + private String subTableFkName; + + /** + * 实体类名称(首字母大写) + */ + @NotBlank(message = "实体类名称不能为空") + private String className; + + /** + * 使用的模板(crud单表操作 tree树表操作 sub主子表操作) + */ + private String tplCategory; + + /** + * 生成包路径 + */ + @NotBlank(message = "生成包路径不能为空") + private String packageName; + + /** + * 生成模块名 + */ + @NotBlank(message = "生成模块名不能为空") + private String moduleName; + + /** + * 生成业务名 + */ + @NotBlank(message = "生成业务名不能为空") + private String businessName; + + /** + * 生成功能名 + */ + @NotBlank(message = "生成功能名不能为空") + private String functionName; + + /** + * 生成作者 + */ + @NotBlank(message = "作者不能为空") + private String functionAuthor; + + /** + * 生成代码方式(0zip压缩包 1自定义路径) + */ + private String genType; + + /** + * 生成路径(不填默认项目路径) + */ + private String genPath; + + /** + * 主键信息 + */ + private GenTableColumn pkColumn; + + /** + * 子表信息 + */ + private GenTable subTable; + + /** + * 表列信息 + */ + @Valid + private List columns; + + /** + * 其它生成选项 + */ + private String options; + + /** + * 树编码字段 + */ + private String treeCode; + + /** + * 树父编码字段 + */ + private String treeParentCode; + + /** + * 树名称字段 + */ + private String treeName; + + /** + * 上级菜单ID字段 + */ + private String parentMenuId; + + /** + * 上级菜单名称字段 + */ + private String parentMenuName; + + public static boolean isSub (String tplCategory) { + return tplCategory != null && StringUtils.equals(GenConstants.TPL_SUB, tplCategory); + } + + public static boolean isTree (String tplCategory) { + return tplCategory != null && StringUtils.equals(GenConstants.TPL_TREE, tplCategory); + } + + public static boolean isCrud (String tplCategory) { + return tplCategory != null && StringUtils.equals(GenConstants.TPL_CRUD, tplCategory); + } + + public static boolean isSuperColumn (String tplCategory, String javaField) { + if (isTree(tplCategory)) { + return StringUtils.equalsAnyIgnoreCase(javaField, + ArrayUtils.addAll(GenConstants.TREE_ENTITY, GenConstants.BASE_ENTITY)); + } + return StringUtils.equalsAnyIgnoreCase(javaField, GenConstants.BASE_ENTITY); + } + + public Long getTableId () { + return tableId; + } + + public void setTableId (Long tableId) { + this.tableId = tableId; + } + + public String getTableName () { + return tableName; + } + + public void setTableName (String tableName) { + this.tableName = tableName; + } + + public String getTableComment () { + return tableComment; + } + + public void setTableComment (String tableComment) { + this.tableComment = tableComment; + } + + public String getSubTableName () { + return subTableName; + } + + public void setSubTableName (String subTableName) { + this.subTableName = subTableName; + } + + public String getSubTableFkName () { + return subTableFkName; + } + + public void setSubTableFkName (String subTableFkName) { + this.subTableFkName = subTableFkName; + } + + public String getClassName () { + return className; + } + + public void setClassName (String className) { + this.className = className; + } + + public String getTplCategory () { + return tplCategory; + } + + public void setTplCategory (String tplCategory) { + this.tplCategory = tplCategory; + } + + public String getPackageName () { + return packageName; + } + + public void setPackageName (String packageName) { + this.packageName = packageName; + } + + public String getModuleName () { + return moduleName; + } + + public void setModuleName (String moduleName) { + this.moduleName = moduleName; + } + + public String getBusinessName () { + return businessName; + } + + public void setBusinessName (String businessName) { + this.businessName = businessName; + } + + public String getFunctionName () { + return functionName; + } + + public void setFunctionName (String functionName) { + this.functionName = functionName; + } + + public String getFunctionAuthor () { + return functionAuthor; + } + + public void setFunctionAuthor (String functionAuthor) { + this.functionAuthor = functionAuthor; + } + + public String getGenType () { + return genType; + } + + public void setGenType (String genType) { + this.genType = genType; + } + + public String getGenPath () { + return genPath; + } + + public void setGenPath (String genPath) { + this.genPath = genPath; + } + + public GenTableColumn getPkColumn () { + return pkColumn; + } + + public void setPkColumn (GenTableColumn pkColumn) { + this.pkColumn = pkColumn; + } + + public GenTable getSubTable () { + return subTable; + } + + public void setSubTable (GenTable subTable) { + this.subTable = subTable; + } + + public List getColumns () { + return columns; + } + + public void setColumns (List columns) { + this.columns = columns; + } + + public String getOptions () { + return options; + } + + public void setOptions (String options) { + this.options = options; + } + + public String getTreeCode () { + return treeCode; + } + + public void setTreeCode (String treeCode) { + this.treeCode = treeCode; + } + + public String getTreeParentCode () { + return treeParentCode; + } + + public void setTreeParentCode (String treeParentCode) { + this.treeParentCode = treeParentCode; + } + + public String getTreeName () { + return treeName; + } + + public void setTreeName (String treeName) { + this.treeName = treeName; + } + + public String getParentMenuId () { + return parentMenuId; + } + + public void setParentMenuId (String parentMenuId) { + this.parentMenuId = parentMenuId; + } + + public String getParentMenuName () { + return parentMenuName; + } + + public void setParentMenuName (String parentMenuName) { + this.parentMenuName = parentMenuName; + } + + public boolean isSub () { + return isSub(this.tplCategory); + } + + public boolean isTree () { + return isTree(this.tplCategory); + } + + public boolean isCrud () { + return isCrud(this.tplCategory); + } + + public boolean isSuperColumn (String javaField) { + return isSuperColumn(this.tplCategory, javaField); + } +} diff --git a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/domain/GenTableColumn.java b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/domain/GenTableColumn.java new file mode 100644 index 0000000..98e4c28 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/domain/GenTableColumn.java @@ -0,0 +1,358 @@ +package com.muyu.gen.domain; + +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import jakarta.validation.constraints.NotBlank; + +/** + * 代码生成业务字段表 gen_table_column + * + * @author muyu + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class GenTableColumn extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 编号 + */ + private Long columnId; + + /** + * 归属表编号 + */ + private Long tableId; + + /** + * 列名称 + */ + private String columnName; + + /** + * 列描述 + */ + private String columnComment; + + /** + * 列类型 + */ + private String columnType; + + /** + * JAVA类型 + */ + private String javaType; + + /** + * JAVA字段名 + */ + @NotBlank(message = "Java属性不能为空") + private String javaField; + + /** + * 是否主键(1是) + */ + private String isPk; + + /** + * 是否自增(1是) + */ + private String isIncrement; + + /** + * 是否必填(1是) + */ + private String isRequired; + + /** + * 是否为插入字段(1是) + */ + private String isInsert; + + /** + * 是否编辑字段(1是) + */ + private String isEdit; + + /** + * 是否列表字段(1是) + */ + private String isList; + + /** + * 是否查询字段(1是) + */ + private String isQuery; + + /** + * 查询方式(EQ等于、NE不等于、GT大于、LT小于、LIKE模糊、BETWEEN范围) + */ + private String queryType; + + /** + * 显示类型(input文本框、textarea文本域、select下拉框、checkbox复选框、radio单选框、datetime日期控件、image图片上传控件、upload文件上传控件、editor富文本控件) + */ + private String htmlType; + + /** + * 字典类型 + */ + private String dictType; + + /** + * 排序 + */ + private Integer sort; + + public static boolean isSuperColumn (String javaField) { + return StringUtils.equalsAnyIgnoreCase(javaField, + // BaseEntity + "createBy", "createTime", "updateBy", "updateTime", "remark", + // TreeEntity + "parentName", "parentId", "orderNum", "ancestors"); + } + + public static boolean isUsableColumn (String javaField) { + // isSuperColumn()中的名单用于避免生成多余Domain属性,若某些属性在生成页面时需要用到不能忽略,则放在此处白名单 + return StringUtils.equalsAnyIgnoreCase(javaField, "parentId", "orderNum", "remark"); + } + + public Long getColumnId () { + return columnId; + } + + public void setColumnId (Long columnId) { + this.columnId = columnId; + } + + public Long getTableId () { + return tableId; + } + + public void setTableId (Long tableId) { + this.tableId = tableId; + } + + public String getColumnName () { + return columnName; + } + + public void setColumnName (String columnName) { + this.columnName = columnName; + } + + public String getColumnComment () { + return columnComment; + } + + public void setColumnComment (String columnComment) { + this.columnComment = columnComment; + } + + public String getColumnType () { + return columnType; + } + + public void setColumnType (String columnType) { + this.columnType = columnType; + } + + public String getJavaType () { + return javaType; + } + + public void setJavaType (String javaType) { + this.javaType = javaType; + } + + public String getJavaField () { + return javaField; + } + + public void setJavaField (String javaField) { + this.javaField = javaField; + } + + public String getCapJavaField () { + return StringUtils.capitalize(javaField); + } + + public String getIsPk () { + return isPk; + } + + public void setIsPk (String isPk) { + this.isPk = isPk; + } + + public boolean isPk () { + return isPk(this.isPk); + } + + public boolean isPk (String isPk) { + return isPk != null && StringUtils.equals("1", isPk); + } + + public String getIsIncrement () { + return isIncrement; + } + + public void setIsIncrement (String isIncrement) { + this.isIncrement = isIncrement; + } + + public boolean isIncrement () { + return isIncrement(this.isIncrement); + } + + public boolean isIncrement (String isIncrement) { + return isIncrement != null && StringUtils.equals("1", isIncrement); + } + + public String getIsRequired () { + return isRequired; + } + + public void setIsRequired (String isRequired) { + this.isRequired = isRequired; + } + + public boolean isRequired () { + return isRequired(this.isRequired); + } + + public boolean isRequired (String isRequired) { + return isRequired != null && StringUtils.equals("1", isRequired); + } + + public String getIsInsert () { + return isInsert; + } + + public void setIsInsert (String isInsert) { + this.isInsert = isInsert; + } + + public boolean isInsert () { + return isInsert(this.isInsert); + } + + public boolean isInsert (String isInsert) { + return isInsert != null && StringUtils.equals("1", isInsert); + } + + public String getIsEdit () { + return isEdit; + } + + public void setIsEdit (String isEdit) { + this.isEdit = isEdit; + } + + public boolean isEdit () { + return isInsert(this.isEdit); + } + + public boolean isEdit (String isEdit) { + return isEdit != null && StringUtils.equals("1", isEdit); + } + + public String getIsList () { + return isList; + } + + public void setIsList (String isList) { + this.isList = isList; + } + + public boolean isList () { + return isList(this.isList); + } + + public boolean isList (String isList) { + return isList != null && StringUtils.equals("1", isList); + } + + public String getIsQuery () { + return isQuery; + } + + public void setIsQuery (String isQuery) { + this.isQuery = isQuery; + } + + public boolean isQuery () { + return isQuery(this.isQuery); + } + + public boolean isQuery (String isQuery) { + return isQuery != null && StringUtils.equals("1", isQuery); + } + + public String getQueryType () { + return queryType; + } + + public void setQueryType (String queryType) { + this.queryType = queryType; + } + + public String getHtmlType () { + return htmlType; + } + + public void setHtmlType (String htmlType) { + this.htmlType = htmlType; + } + + public String getDictType () { + return dictType; + } + + public void setDictType (String dictType) { + this.dictType = dictType; + } + + public Integer getSort () { + return sort; + } + + public void setSort (Integer sort) { + this.sort = sort; + } + + public boolean isSuperColumn () { + return isSuperColumn(this.javaField); + } + + public boolean isUsableColumn () { + return isUsableColumn(javaField); + } + + public String readConverterExp () { + String remarks = StringUtils.substringBetween(this.columnComment, "(", ")"); + StringBuffer sb = new StringBuffer(); + if (StringUtils.isNotEmpty(remarks)) { + for (String value : remarks.split(" ")) { + if (StringUtils.isNotEmpty(value)) { + Object startStr = value.subSequence(0, 1); + String endStr = value.substring(1); + sb.append(startStr).append("=").append(endStr).append(","); + } + } + return sb.deleteCharAt(sb.length() - 1).toString(); + } else { + return this.columnComment; + } + } +} diff --git a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/domain/GenTableResp.java b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/domain/GenTableResp.java new file mode 100644 index 0000000..70b30dc --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/domain/GenTableResp.java @@ -0,0 +1,43 @@ +package com.muyu.gen.domain; + +import com.muyu.common.core.constant.GenConstants; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.web.domain.BaseEntity; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotBlank; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import org.apache.commons.lang3.ArrayUtils; + +import java.util.List; + + +/** + * 业务表 gen_table + * + * @author muyu + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class GenTableResp extends BaseEntity { + + private String dbName; + + /** + * 表名称 + */ + private String tableName; + + /** + * 表描述 + */ + private String tableComment; + + +} diff --git a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/mapper/GenTableColumnMapper.java b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/mapper/GenTableColumnMapper.java new file mode 100644 index 0000000..5825d59 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/mapper/GenTableColumnMapper.java @@ -0,0 +1,67 @@ +package com.muyu.gen.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.gen.domain.GenTableColumn; + +import java.util.List; + +/** + * 业务字段 数据层 + * + * @author muyu + */ +public interface GenTableColumnMapper extends BaseMapper { + /** + * 根据表名称查询列信息 + * + * @param tableName 表名称 + * + * @return 列信息 + */ + List selectDbTableColumnsByName (String tableName); + + /** + * 查询业务字段列表 + * + * @param tableId 业务字段编号 + * + * @return 业务字段集合 + */ + List selectGenTableColumnListByTableId (Long tableId); + + /** + * 新增业务字段 + * + * @param genTableColumn 业务字段信息 + * + * @return 结果 + */ + int insertGenTableColumn (GenTableColumn genTableColumn); + + /** + * 修改业务字段 + * + * @param genTableColumn 业务字段信息 + * + * @return 结果 + */ + int updateGenTableColumn (GenTableColumn genTableColumn); + + /** + * 删除业务字段 + * + * @param genTableColumns 列数据 + * + * @return 结果 + */ + int deleteGenTableColumns (List genTableColumns); + + /** + * 批量删除业务字段 + * + * @param ids 需要删除的数据ID + * + * @return 结果 + */ + int deleteGenTableColumnByIds (Long[] ids); +} diff --git a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/mapper/GenTableMapper.java b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/mapper/GenTableMapper.java new file mode 100644 index 0000000..66858cb --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/mapper/GenTableMapper.java @@ -0,0 +1,92 @@ +package com.muyu.gen.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.gen.domain.GenTable; + +import java.util.List; + +/** + * 业务 数据层 + * + * @author muyu + */ +public interface GenTableMapper extends BaseMapper { + /** + * 查询业务列表 + * + * @param genTable 业务信息 + * + * @return 业务集合 + */ + List selectGenTableList (GenTable genTable); + + /** + * 查询据库列表 + * + * @param genTable 业务信息 + * + * @return 数据库表集合 + */ + List selectDbTableList (GenTable genTable); + + /** + * 查询据库列表 + * + * @param tableNames 表名称组 + * + * @return 数据库表集合 + */ + List selectDbTableListByNames (String[] tableNames); + + /** + * 查询所有表信息 + * + * @return 表信息集合 + */ + List selectGenTableAll (); + + /** + * 查询表ID业务信息 + * + * @param id 业务ID + * + * @return 业务信息 + */ + GenTable selectGenTableById (Long id); + + /** + * 查询表名称业务信息 + * + * @param tableName 表名称 + * + * @return 业务信息 + */ + GenTable selectGenTableByName (String tableName); + + /** + * 新增业务 + * + * @param genTable 业务信息 + * + * @return 结果 + */ + int insertGenTable (GenTable genTable); + + /** + * 修改业务 + * + * @param genTable 业务信息 + * + * @return 结果 + */ + int updateGenTable (GenTable genTable); + + /** + * 批量删除业务 + * + * @param ids 需要删除的数据ID + * + * @return 结果 + */ + int deleteGenTableByIds (Long[] ids); +} diff --git a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/GenTableColumnServiceImpl.java b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/GenTableColumnServiceImpl.java new file mode 100644 index 0000000..895b1ed --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/GenTableColumnServiceImpl.java @@ -0,0 +1,68 @@ +package com.muyu.gen.service; + +import com.muyu.common.core.text.Convert; +import com.muyu.gen.domain.GenTableColumn; +import com.muyu.gen.mapper.GenTableColumnMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 业务字段 服务层实现 + * + * @author muyu + */ +@Service +public class GenTableColumnServiceImpl implements IGenTableColumnService { + @Autowired + private GenTableColumnMapper genTableColumnMapper; + + /** + * 查询业务字段列表 + * + * @param tableId 业务字段编号 + * + * @return 业务字段集合 + */ + @Override + public List selectGenTableColumnListByTableId (Long tableId) { + return genTableColumnMapper.selectGenTableColumnListByTableId(tableId); + } + + /** + * 新增业务字段 + * + * @param genTableColumn 业务字段信息 + * + * @return 结果 + */ + @Override + public int insertGenTableColumn (GenTableColumn genTableColumn) { + return genTableColumnMapper.insertGenTableColumn(genTableColumn); + } + + /** + * 修改业务字段 + * + * @param genTableColumn 业务字段信息 + * + * @return 结果 + */ + @Override + public int updateGenTableColumn (GenTableColumn genTableColumn) { + return genTableColumnMapper.updateGenTableColumn(genTableColumn); + } + + /** + * 删除业务字段对象 + * + * @param ids 需要删除的数据ID + * + * @return 结果 + */ + @Override + public int deleteGenTableColumnByIds (String ids) { + return genTableColumnMapper.deleteGenTableColumnByIds(Convert.toLongArray(ids)); + } +} diff --git a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/GenTableServiceImpl.java b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/GenTableServiceImpl.java new file mode 100644 index 0000000..6273779 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/GenTableServiceImpl.java @@ -0,0 +1,465 @@ +package com.muyu.gen.service; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.muyu.common.core.constant.Constants; +import com.muyu.common.core.constant.GenConstants; +import com.muyu.common.core.exception.ServiceException; +import com.muyu.common.core.text.CharsetKit; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.gen.domain.GenTable; +import com.muyu.gen.domain.GenTableColumn; +import com.muyu.gen.mapper.GenTableColumnMapper; +import com.muyu.gen.mapper.GenTableMapper; +import com.muyu.gen.util.GenUtils; +import com.muyu.gen.util.VelocityInitializer; +import com.muyu.gen.util.VelocityUtils; +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; +import org.apache.velocity.Template; +import org.apache.velocity.VelocityContext; +import org.apache.velocity.app.Velocity; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.StringWriter; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +/** + * 业务 服务层实现 + * + * @author muyu + */ +@Service +public class GenTableServiceImpl implements IGenTableService { + private static final Logger log = LoggerFactory.getLogger(GenTableServiceImpl.class); + + @Autowired + private GenTableMapper genTableMapper; + + @Autowired + private GenTableColumnMapper genTableColumnMapper; + + /** + * 获取代码生成地址 + * + * @param table 业务表信息 + * @param template 模板文件路径 + * + * @return 生成地址 + */ + public static String getGenPath (GenTable table, String template) { + String genPath = table.getGenPath(); + if (StringUtils.equals(genPath, "/")) { + return System.getProperty("user.dir") + File.separator + "src" + File.separator + VelocityUtils.getFileName(template, table); + } + return genPath + File.separator + VelocityUtils.getFileName(template, table); + } + + /** + * 查询业务信息 + * + * @param id 业务ID + * + * @return 业务信息 + */ + @Override + public GenTable selectGenTableById (Long id) { + GenTable genTable = genTableMapper.selectGenTableById(id); + setTableFromOptions(genTable); + return genTable; + } + + /** + * 查询业务列表 + * + * @param genTable 业务信息 + * + * @return 业务集合 + */ + @Override + public List selectGenTableList (GenTable genTable) { + return genTableMapper.selectGenTableList(genTable); + } + + /** + * 查询据库列表 + * + * @param genTable 业务信息 + * + * @return 数据库表集合 + */ + @Override + public List selectDbTableList (GenTable genTable) { + return genTableMapper.selectDbTableList(genTable); + } + + /** + * 查询据库列表 + * + * @param tableNames 表名称组 + * + * @return 数据库表集合 + */ + @Override + public List selectDbTableListByNames (String[] tableNames) { + return genTableMapper.selectDbTableListByNames(tableNames); + } + + /** + * 查询所有表信息 + * + * @return 表信息集合 + */ + @Override + public List selectGenTableAll () { + return genTableMapper.selectGenTableAll(); + } + + /** + * 修改业务 + * + * @param genTable 业务信息 + * + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void updateGenTable (GenTable genTable) { + String options = JSON.toJSONString(genTable.getParams()); + genTable.setOptions(options); + int row = genTableMapper.updateGenTable(genTable); + if (row > 0) { + for (GenTableColumn cenTableColumn : genTable.getColumns()) { + genTableColumnMapper.updateGenTableColumn(cenTableColumn); + } + } + } + + /** + * 删除业务对象 + * + * @param tableIds 需要删除的数据ID + * + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteGenTableByIds (Long[] tableIds) { + genTableMapper.deleteGenTableByIds(tableIds); + genTableColumnMapper.deleteGenTableColumnByIds(tableIds); + } + + /** + * 导入表结构 + * + * @param tableList 导入表列表 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void importGenTable (List tableList) { + String operName = SecurityUtils.getUsername(); + try { + for (GenTable table : tableList) { + String tableName = table.getTableName(); + GenUtils.initTable(table, operName); + int row = genTableMapper.insertGenTable(table); + if (row > 0) { + // 保存列信息 + List genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName); + for (GenTableColumn column : genTableColumns) { + GenUtils.initColumnField(column, table); + genTableColumnMapper.insertGenTableColumn(column); + } + } + } + } catch (Exception e) { + throw new ServiceException("导入失败:" + e.getMessage()); + } + } + + /** + * 预览代码 + * + * @param tableId 表编号 + * + * @return 预览数据列表 + */ + @Override + public Map previewCode (Long tableId) { + Map dataMap = new LinkedHashMap<>(); + // 查询表信息 + GenTable table = genTableMapper.selectGenTableById(tableId); + // 设置主子表信息 + setSubTable(table); + // 设置主键列信息 + setPkColumn(table); + VelocityInitializer.initVelocity(); + + VelocityContext context = VelocityUtils.prepareContext(table); + + // 获取模板列表 + List templates = VelocityUtils.getTemplateList(table.getTplCategory()); + for (String template : templates) { + // 渲染模板 + StringWriter sw = new StringWriter(); + Template tpl = Velocity.getTemplate(template, Constants.UTF8); + tpl.merge(context, sw); + dataMap.put(template, sw.toString()); + } + return dataMap; + } + + /** + * 生成代码(下载方式) + * + * @param tableName 表名称 + * + * @return 数据 + */ + @Override + public byte[] downloadCode (String tableName) { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + ZipOutputStream zip = new ZipOutputStream(outputStream); + generatorCode(tableName, zip); + IOUtils.closeQuietly(zip); + return outputStream.toByteArray(); + } + + /** + * 生成代码(自定义路径) + * + * @param tableName 表名称 + */ + @Override + public void generatorCode (String tableName) { + // 查询表信息 + GenTable table = genTableMapper.selectGenTableByName(tableName); + // 设置主子表信息 + setSubTable(table); + // 设置主键列信息 + setPkColumn(table); + + VelocityInitializer.initVelocity(); + + VelocityContext context = VelocityUtils.prepareContext(table); + + // 获取模板列表 + List templates = VelocityUtils.getTemplateList(table.getTplCategory()); + for (String template : templates) { + if (!StringUtils.containsAny(template, "sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm")) { + // 渲染模板 + StringWriter sw = new StringWriter(); + Template tpl = Velocity.getTemplate(template, Constants.UTF8); + tpl.merge(context, sw); + try { + String path = getGenPath(table, template); + FileUtils.writeStringToFile(new File(path), sw.toString(), CharsetKit.UTF_8); + } catch (IOException e) { + throw new ServiceException("渲染模板失败,表名:" + table.getTableName()); + } + } + } + } + + /** + * 同步数据库 + * + * @param tableName 表名称 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void synchDb (String tableName) { + GenTable table = genTableMapper.selectGenTableByName(tableName); + List tableColumns = table.getColumns(); + Map tableColumnMap = tableColumns.stream().collect(Collectors.toMap(GenTableColumn::getColumnName, Function.identity())); + + List dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName); + if (StringUtils.isEmpty(dbTableColumns)) { + throw new ServiceException("同步数据失败,原表结构不存在"); + } + List dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList()); + + dbTableColumns.forEach(column -> { + GenUtils.initColumnField(column, table); + if (tableColumnMap.containsKey(column.getColumnName())) { + GenTableColumn prevColumn = tableColumnMap.get(column.getColumnName()); + column.setColumnId(prevColumn.getColumnId()); + if (column.isList()) { + // 如果是列表,继续保留查询方式/字典类型选项 + column.setDictType(prevColumn.getDictType()); + column.setQueryType(prevColumn.getQueryType()); + } + if (StringUtils.isNotEmpty(prevColumn.getIsRequired()) && !column.isPk() + && (column.isInsert() || column.isEdit()) + && ((column.isUsableColumn()) || (!column.isSuperColumn()))) { + // 如果是(新增/修改&非主键/非忽略及父属性),继续保留必填/显示类型选项 + column.setIsRequired(prevColumn.getIsRequired()); + column.setHtmlType(prevColumn.getHtmlType()); + } + genTableColumnMapper.updateGenTableColumn(column); + } else { + genTableColumnMapper.insertGenTableColumn(column); + } + }); + + List delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList()); + if (StringUtils.isNotEmpty(delColumns)) { + genTableColumnMapper.deleteGenTableColumns(delColumns); + } + } + + /** + * 批量生成代码(下载方式) + * + * @param tableNames 表数组 + * + * @return 数据 + */ + @Override + public byte[] downloadCode (String[] tableNames) { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + ZipOutputStream zip = new ZipOutputStream(outputStream); + for (String tableName : tableNames) { + generatorCode(tableName, zip); + } + IOUtils.closeQuietly(zip); + return outputStream.toByteArray(); + } + + /** + * 查询表信息并生成代码 + */ + private void generatorCode (String tableName, ZipOutputStream zip) { + // 查询表信息 + GenTable table = genTableMapper.selectGenTableByName(tableName); + // 设置主子表信息 + setSubTable(table); + // 设置主键列信息 + setPkColumn(table); + + VelocityInitializer.initVelocity(); + + VelocityContext context = VelocityUtils.prepareContext(table); + + // 获取模板列表 + List templates = VelocityUtils.getTemplateList(table.getTplCategory()); + for (String template : templates) { + // 渲染模板 + StringWriter sw = new StringWriter(); + Template tpl = Velocity.getTemplate(template, Constants.UTF8); + tpl.merge(context, sw); + try { + // 添加到zip + zip.putNextEntry(new ZipEntry(VelocityUtils.getFileName(template, table))); + IOUtils.write(sw.toString(), zip, Constants.UTF8); + IOUtils.closeQuietly(sw); + zip.flush(); + zip.closeEntry(); + } catch (IOException e) { + log.error("渲染模板失败,表名:" + table.getTableName(), e); + } + } + } + + /** + * 修改保存参数校验 + * + * @param genTable 业务信息 + */ + @Override + public void validateEdit (GenTable genTable) { + if (GenConstants.TPL_TREE.equals(genTable.getTplCategory())) { + String options = JSON.toJSONString(genTable.getParams()); + JSONObject paramsObj = JSON.parseObject(options); + if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_CODE))) { + throw new ServiceException("树编码字段不能为空"); + } else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_PARENT_CODE))) { + throw new ServiceException("树父编码字段不能为空"); + } else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_NAME))) { + throw new ServiceException("树名称字段不能为空"); + } else if (GenConstants.TPL_SUB.equals(genTable.getTplCategory())) { + if (StringUtils.isEmpty(genTable.getSubTableName())) { + throw new ServiceException("关联子表的表名不能为空"); + } else if (StringUtils.isEmpty(genTable.getSubTableFkName())) { + throw new ServiceException("子表关联的外键名不能为空"); + } + } + } + } + + /** + * 设置主键列信息 + * + * @param table 业务表信息 + */ + public void setPkColumn (GenTable table) { + for (GenTableColumn column : table.getColumns()) { + if (column.isPk()) { + table.setPkColumn(column); + break; + } + } + if (StringUtils.isNull(table.getPkColumn())) { + table.setPkColumn(table.getColumns().get(0)); + } + if (GenConstants.TPL_SUB.equals(table.getTplCategory())) { + for (GenTableColumn column : table.getSubTable().getColumns()) { + if (column.isPk()) { + table.getSubTable().setPkColumn(column); + break; + } + } + if (StringUtils.isNull(table.getSubTable().getPkColumn())) { + table.getSubTable().setPkColumn(table.getSubTable().getColumns().get(0)); + } + } + } + + /** + * 设置主子表信息 + * + * @param table 业务表信息 + */ + public void setSubTable (GenTable table) { + String subTableName = table.getSubTableName(); + if (StringUtils.isNotEmpty(subTableName)) { + table.setSubTable(genTableMapper.selectGenTableByName(subTableName)); + } + } + + /** + * 设置代码生成其他选项值 + * + * @param genTable 设置后的生成对象 + */ + public void setTableFromOptions (GenTable genTable) { + JSONObject paramsObj = JSON.parseObject(genTable.getOptions()); + if (StringUtils.isNotNull(paramsObj)) { + String treeCode = paramsObj.getString(GenConstants.TREE_CODE); + String treeParentCode = paramsObj.getString(GenConstants.TREE_PARENT_CODE); + String treeName = paramsObj.getString(GenConstants.TREE_NAME); + String parentMenuId = paramsObj.getString(GenConstants.PARENT_MENU_ID); + String parentMenuName = paramsObj.getString(GenConstants.PARENT_MENU_NAME); + + genTable.setTreeCode(treeCode); + genTable.setTreeParentCode(treeParentCode); + genTable.setTreeName(treeName); + genTable.setParentMenuId(parentMenuId); + genTable.setParentMenuName(parentMenuName); + } + } +} diff --git a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/IGenTableColumnService.java b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/IGenTableColumnService.java new file mode 100644 index 0000000..b60ea57 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/IGenTableColumnService.java @@ -0,0 +1,48 @@ +package com.muyu.gen.service; + +import com.muyu.gen.domain.GenTableColumn; + +import java.util.List; + +/** + * 业务字段 服务层 + * + * @author muyu + */ +public interface IGenTableColumnService { + /** + * 查询业务字段列表 + * + * @param tableId 业务字段编号 + * + * @return 业务字段集合 + */ + List selectGenTableColumnListByTableId (Long tableId); + + /** + * 新增业务字段 + * + * @param genTableColumn 业务字段信息 + * + * @return 结果 + */ + int insertGenTableColumn (GenTableColumn genTableColumn); + + /** + * 修改业务字段 + * + * @param genTableColumn 业务字段信息 + * + * @return 结果 + */ + int updateGenTableColumn (GenTableColumn genTableColumn); + + /** + * 删除业务字段信息 + * + * @param ids 需要删除的数据ID + * + * @return 结果 + */ + int deleteGenTableColumnByIds (String ids); +} diff --git a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/IGenTableService.java b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/IGenTableService.java new file mode 100644 index 0000000..f34dc37 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/IGenTableService.java @@ -0,0 +1,131 @@ +package com.muyu.gen.service; + +import com.muyu.gen.domain.GenTable; + +import java.util.List; +import java.util.Map; + +/** + * 业务 服务层 + * + * @author muyu + */ +public interface IGenTableService { + /** + * 查询业务列表 + * + * @param genTable 业务信息 + * + * @return 业务集合 + */ + List selectGenTableList (GenTable genTable); + + /** + * 查询据库列表 + * + * @param genTable 业务信息 + * + * @return 数据库表集合 + */ + List selectDbTableList (GenTable genTable); + + /** + * 查询据库列表 + * + * @param tableNames 表名称组 + * + * @return 数据库表集合 + */ + List selectDbTableListByNames (String[] tableNames); + + /** + * 查询所有表信息 + * + * @return 表信息集合 + */ + List selectGenTableAll (); + + /** + * 查询业务信息 + * + * @param id 业务ID + * + * @return 业务信息 + */ + GenTable selectGenTableById (Long id); + + /** + * 修改业务 + * + * @param genTable 业务信息 + * + * @return 结果 + */ + void updateGenTable (GenTable genTable); + + /** + * 删除业务信息 + * + * @param tableIds 需要删除的表数据ID + * + * @return 结果 + */ + void deleteGenTableByIds (Long[] tableIds); + + /** + * 导入表结构 + * + * @param tableList 导入表列表 + */ + void importGenTable (List tableList); + + /** + * 预览代码 + * + * @param tableId 表编号 + * + * @return 预览数据列表 + */ + Map previewCode (Long tableId); + + /** + * 生成代码(下载方式) + * + * @param tableName 表名称 + * + * @return 数据 + */ + byte[] downloadCode (String tableName); + + /** + * 生成代码(自定义路径) + * + * @param tableName 表名称 + * + * @return 数据 + */ + void generatorCode (String tableName); + + /** + * 同步数据库 + * + * @param tableName 表名称 + */ + void synchDb (String tableName); + + /** + * 批量生成代码(下载方式) + * + * @param tableNames 表数组 + * + * @return 数据 + */ + byte[] downloadCode (String[] tableNames); + + /** + * 修改保存参数校验 + * + * @param genTable 业务信息 + */ + void validateEdit (GenTable genTable); +} diff --git a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/util/GenUtils.java b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/util/GenUtils.java new file mode 100644 index 0000000..5aea1f2 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/util/GenUtils.java @@ -0,0 +1,229 @@ +package com.muyu.gen.util; + +import com.muyu.common.core.constant.GenConstants; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.gen.config.GenConfig; +import com.muyu.gen.domain.GenTable; +import com.muyu.gen.domain.GenTableColumn; +import org.apache.commons.lang3.RegExUtils; + +import java.util.Arrays; + +/** + * 代码生成器 工具类 + * + * @author muyu + */ +public class GenUtils { + /** + * 初始化表信息 + */ + public static void initTable (GenTable genTable, String operName) { + genTable.setClassName(convertClassName(genTable.getTableName())); + genTable.setPackageName(GenConfig.getPackageName()); + genTable.setModuleName(getModuleName(GenConfig.getPackageName())); + genTable.setBusinessName(getBusinessName(genTable.getTableName())); + genTable.setFunctionName(replaceText(genTable.getTableComment())); + genTable.setFunctionAuthor(GenConfig.getAuthor()); + genTable.setCreateBy(operName); + } + + /** + * 初始化列属性字段 + */ + public static void initColumnField (GenTableColumn column, GenTable table) { + String dataType = getDbType(column.getColumnType()); + String columnName = column.getColumnName(); + column.setTableId(table.getTableId()); + column.setCreateBy(table.getCreateBy()); + // 设置java字段名 + column.setJavaField(StringUtils.toCamelCase(columnName)); + // 设置默认类型 + column.setJavaType(GenConstants.TYPE_STRING); + column.setQueryType(GenConstants.QUERY_EQ); + + if (arraysContains(GenConstants.COLUMNTYPE_STR, dataType) || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType)) { + // 字符串长度超过500设置为文本域 + Integer columnLength = getColumnLength(column.getColumnType()); + String htmlType = columnLength >= 500 || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType) ? GenConstants.HTML_TEXTAREA : GenConstants.HTML_INPUT; + column.setHtmlType(htmlType); + } else if (arraysContains(GenConstants.COLUMNTYPE_TIME, dataType)) { + column.setJavaType(GenConstants.TYPE_DATE); + column.setHtmlType(GenConstants.HTML_DATETIME); + } else if (arraysContains(GenConstants.COLUMNTYPE_NUMBER, dataType)) { + column.setHtmlType(GenConstants.HTML_INPUT); + + // 如果是浮点型 统一用BigDecimal + String[] str = StringUtils.split(StringUtils.substringBetween(column.getColumnType(), "(", ")"), ","); + if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0) { + column.setJavaType(GenConstants.TYPE_BIGDECIMAL); + } + // 如果是整形 + else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10) { + column.setJavaType(GenConstants.TYPE_INTEGER); + } + // 长整形 + else { + column.setJavaType(GenConstants.TYPE_LONG); + } + } + + // 插入字段(默认所有字段都需要插入) + column.setIsInsert(GenConstants.REQUIRE); + + // 编辑字段 + if (!arraysContains(GenConstants.COLUMNNAME_NOT_EDIT, columnName) && !column.isPk()) { + column.setIsEdit(GenConstants.REQUIRE); + } + // 列表字段 + if (!arraysContains(GenConstants.COLUMNNAME_NOT_LIST, columnName) && !column.isPk()) { + column.setIsList(GenConstants.REQUIRE); + } + // 查询字段 + if (!arraysContains(GenConstants.COLUMNNAME_NOT_QUERY, columnName) && !column.isPk()) { + column.setIsQuery(GenConstants.REQUIRE); + } + + // 查询字段类型 + if (StringUtils.endsWithIgnoreCase(columnName, "name")) { + column.setQueryType(GenConstants.QUERY_LIKE); + } + // 状态字段设置单选框 + if (StringUtils.endsWithIgnoreCase(columnName, "status")) { + column.setHtmlType(GenConstants.HTML_RADIO); + } + // 类型&性别字段设置下拉框 + else if (StringUtils.endsWithIgnoreCase(columnName, "type") + || StringUtils.endsWithIgnoreCase(columnName, "sex")) { + column.setHtmlType(GenConstants.HTML_SELECT); + } + // 图片字段设置图片上传控件 + else if (StringUtils.endsWithIgnoreCase(columnName, "image")) { + column.setHtmlType(GenConstants.HTML_IMAGE_UPLOAD); + } + // 文件字段设置文件上传控件 + else if (StringUtils.endsWithIgnoreCase(columnName, "file")) { + column.setHtmlType(GenConstants.HTML_FILE_UPLOAD); + } + // 内容字段设置富文本控件 + else if (StringUtils.endsWithIgnoreCase(columnName, "content")) { + column.setHtmlType(GenConstants.HTML_EDITOR); + } + } + + /** + * 校验数组是否包含指定值 + * + * @param arr 数组 + * @param targetValue 值 + * + * @return 是否包含 + */ + public static boolean arraysContains (String[] arr, String targetValue) { + return Arrays.asList(arr).contains(targetValue); + } + + /** + * 获取模块名 + * + * @param packageName 包名 + * + * @return 模块名 + */ + public static String getModuleName (String packageName) { + int lastIndex = packageName.lastIndexOf("."); + int nameLength = packageName.length(); + return StringUtils.substring(packageName, lastIndex + 1, nameLength); + } + + /** + * 获取业务名 + * + * @param tableName 表名 + * + * @return 业务名 + */ + public static String getBusinessName (String tableName) { + int lastIndex = tableName.lastIndexOf("_"); + int nameLength = tableName.length(); + return StringUtils.substring(tableName, lastIndex + 1, nameLength); + } + + /** + * 表名转换成Java类名 + * + * @param tableName 表名称 + * + * @return 类名 + */ + public static String convertClassName (String tableName) { + boolean autoRemovePre = GenConfig.getAutoRemovePre(); + String tablePrefix = GenConfig.getTablePrefix(); + if (autoRemovePre && StringUtils.isNotEmpty(tablePrefix)) { + String[] searchList = StringUtils.split(tablePrefix, ","); + tableName = replaceFirst(tableName, searchList); + } + return StringUtils.convertToCamelCase(tableName); + } + + /** + * 批量替换前缀 + * + * @param replacementm 替换值 + * @param searchList 替换列表 + * + * @return + */ + public static String replaceFirst (String replacementm, String[] searchList) { + String text = replacementm; + for (String searchString : searchList) { + if (replacementm.startsWith(searchString)) { + text = replacementm.replaceFirst(searchString, ""); + break; + } + } + return text; + } + + /** + * 关键字替换 + * + * @param text 需要被替换的名字 + * + * @return 替换后的名字 + */ + public static String replaceText (String text) { + return RegExUtils.replaceAll(text, "(?:表|若依)", ""); + } + + /** + * 获取数据库类型字段 + * + * @param columnType 列类型 + * + * @return 截取后的列类型 + */ + public static String getDbType (String columnType) { + if (StringUtils.indexOf(columnType, "(") > 0) { + return StringUtils.substringBefore(columnType, "("); + } else { + return columnType; + } + } + + /** + * 获取字段长度 + * + * @param columnType 列类型 + * + * @return 截取后的列类型 + */ + public static Integer getColumnLength (String columnType) { + if (StringUtils.indexOf(columnType, "(") > 0) { + String length = StringUtils.substringBetween(columnType, "(", ")"); + return Integer.valueOf(length); + } else { + return 0; + } + } +} diff --git a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/util/VelocityInitializer.java b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/util/VelocityInitializer.java new file mode 100644 index 0000000..cc171b4 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/util/VelocityInitializer.java @@ -0,0 +1,30 @@ +package com.muyu.gen.util; + +import com.muyu.common.core.constant.Constants; +import org.apache.velocity.app.Velocity; + +import java.util.Properties; + +/** + * VelocityEngine工厂 + * + * @author muyu + */ +public class VelocityInitializer { + /** + * 初始化vm方法 + */ + public static void initVelocity () { + Properties p = new Properties(); + try { + // 加载classpath目录下的vm文件 + p.setProperty("resource.loader.file.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); + // 定义字符集 + p.setProperty(Velocity.INPUT_ENCODING, Constants.UTF8); + // 初始化Velocity引擎,指定配置Properties + Velocity.init(p); + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff --git a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/util/VelocityUtils.java b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/util/VelocityUtils.java new file mode 100644 index 0000000..9305ff7 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/util/VelocityUtils.java @@ -0,0 +1,357 @@ +package com.muyu.gen.util; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.muyu.common.core.constant.GenConstants; +import com.muyu.common.core.utils.DateUtils; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.gen.domain.GenTable; +import com.muyu.gen.domain.GenTableColumn; +import org.apache.velocity.VelocityContext; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + * 模板工具类 + * + * @author muyu + */ +public class VelocityUtils { + /** + * 项目空间路径 + */ + private static final String PROJECT_PATH = "main/java"; + + /** + * mybatis空间路径 + */ + private static final String MYBATIS_PATH = "main/resources/mapper"; + + /** + * 默认上级菜单,系统工具 + */ + private static final String DEFAULT_PARENT_MENU_ID = "3"; + + /** + * 设置模板变量信息 + * + * @return 模板列表 + */ + public static VelocityContext prepareContext (GenTable genTable) { + String moduleName = genTable.getModuleName(); + String businessName = genTable.getBusinessName(); + String packageName = genTable.getPackageName(); + String tplCategory = genTable.getTplCategory(); + String functionName = genTable.getFunctionName(); + + VelocityContext velocityContext = new VelocityContext(); + velocityContext.put("tplCategory", genTable.getTplCategory()); + velocityContext.put("tableName", genTable.getTableName()); + velocityContext.put("functionName", StringUtils.isNotEmpty(functionName) ? functionName : "【请填写功能名称】"); + velocityContext.put("ClassName", genTable.getClassName()); + velocityContext.put("className", StringUtils.uncapitalize(genTable.getClassName())); + velocityContext.put("moduleName", genTable.getModuleName()); + velocityContext.put("BusinessName", StringUtils.capitalize(genTable.getBusinessName())); + velocityContext.put("businessName", genTable.getBusinessName()); + velocityContext.put("basePackage", getPackagePrefix(packageName)); + velocityContext.put("packageName", packageName); + velocityContext.put("author", genTable.getFunctionAuthor()); + velocityContext.put("datetime", DateUtils.getDate()); + velocityContext.put("pkColumn", genTable.getPkColumn()); + velocityContext.put("importList", getImportList(genTable)); + velocityContext.put("permissionPrefix", getPermissionPrefix(moduleName, businessName)); + velocityContext.put("columns", genTable.getColumns()); + velocityContext.put("table", genTable); + velocityContext.put("dicts", getDicts(genTable)); + setMenuVelocityContext(velocityContext, genTable); + if (GenConstants.TPL_TREE.equals(tplCategory)) { + setTreeVelocityContext(velocityContext, genTable); + } + if (GenConstants.TPL_SUB.equals(tplCategory)) { + setSubVelocityContext(velocityContext, genTable); + } + return velocityContext; + } + + public static void setMenuVelocityContext (VelocityContext context, GenTable genTable) { + String options = genTable.getOptions(); + JSONObject paramsObj = JSON.parseObject(options); + String parentMenuId = getParentMenuId(paramsObj); + context.put("parentMenuId", parentMenuId); + } + + public static void setTreeVelocityContext (VelocityContext context, GenTable genTable) { + String options = genTable.getOptions(); + JSONObject paramsObj = JSON.parseObject(options); + String treeCode = getTreecode(paramsObj); + String treeParentCode = getTreeParentCode(paramsObj); + String treeName = getTreeName(paramsObj); + + context.put("treeCode", treeCode); + context.put("treeParentCode", treeParentCode); + context.put("treeName", treeName); + context.put("expandColumn", getExpandColumn(genTable)); + if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) { + context.put("tree_parent_code", paramsObj.getString(GenConstants.TREE_PARENT_CODE)); + } + if (paramsObj.containsKey(GenConstants.TREE_NAME)) { + context.put("tree_name", paramsObj.getString(GenConstants.TREE_NAME)); + } + } + + public static void setSubVelocityContext (VelocityContext context, GenTable genTable) { + GenTable subTable = genTable.getSubTable(); + String subTableName = genTable.getSubTableName(); + String subTableFkName = genTable.getSubTableFkName(); + String subClassName = genTable.getSubTable().getClassName(); + String subTableFkClassName = StringUtils.convertToCamelCase(subTableFkName); + + context.put("subTable", subTable); + context.put("subTableName", subTableName); + context.put("subTableFkName", subTableFkName); + context.put("subTableFkClassName", subTableFkClassName); + context.put("subTableFkclassName", StringUtils.uncapitalize(subTableFkClassName)); + context.put("subClassName", subClassName); + context.put("subclassName", StringUtils.uncapitalize(subClassName)); + context.put("subImportList", getImportList(genTable.getSubTable())); + } + + /** + * 获取模板信息 + * + * @return 模板列表 + */ + public static List getTemplateList (String tplCategory) { + List templates = new ArrayList(); + templates.add("vm/java/domain.java.vm"); + templates.add("vm/java/mapper.java.vm"); + templates.add("vm/java/service.java.vm"); + templates.add("vm/java/serviceImpl.java.vm"); + templates.add("vm/java/controller.java.vm"); + templates.add("vm/xml/mapper.xml.vm"); + templates.add("vm/sql/sql.vm"); + templates.add("vm/js/api.js.vm"); + if (GenConstants.TPL_CRUD.equals(tplCategory)) { + templates.add("vm/vue/index.vue.vm"); + } else if (GenConstants.TPL_TREE.equals(tplCategory)) { + templates.add("vm/vue/index-tree.vue.vm"); + } else if (GenConstants.TPL_SUB.equals(tplCategory)) { + templates.add("vm/vue/index.vue.vm"); + templates.add("vm/java/sub-domain.java.vm"); + } + return templates; + } + + /** + * 获取文件名 + */ + public static String getFileName (String template, GenTable genTable) { + // 文件名称 + String fileName = ""; + // 包路径 + String packageName = genTable.getPackageName(); + // 模块名 + String moduleName = genTable.getModuleName(); + // 大写类名 + String className = genTable.getClassName(); + // 业务名称 + String businessName = genTable.getBusinessName(); + + String javaPath = PROJECT_PATH + "/" + StringUtils.replace(packageName, ".", "/"); + String mybatisPath = MYBATIS_PATH + "/" + moduleName; + String vuePath = "vue"; + + if (template.contains("domain.java.vm")) { + fileName = StringUtils.format("{}/domain/{}.java", javaPath, className); + } + if (template.contains("sub-domain.java.vm") && StringUtils.equals(GenConstants.TPL_SUB, genTable.getTplCategory())) { + fileName = StringUtils.format("{}/domain/{}.java", javaPath, genTable.getSubTable().getClassName()); + } else if (template.contains("mapper.java.vm")) { + fileName = StringUtils.format("{}/mapper/{}Mapper.java", javaPath, className); + } else if (template.contains("service.java.vm")) { + fileName = StringUtils.format("{}/service/I{}Service.java", javaPath, className); + } else if (template.contains("serviceImpl.java.vm")) { + fileName = StringUtils.format("{}/service/impl/{}ServiceImpl.java", javaPath, className); + } else if (template.contains("controller.java.vm")) { + fileName = StringUtils.format("{}/controller/{}Controller.java", javaPath, className); + } else if (template.contains("mapper.xml.vm")) { + fileName = StringUtils.format("{}/{}Mapper.xml", mybatisPath, className); + } else if (template.contains("sql.vm")) { + fileName = businessName + "Menu.sql"; + } else if (template.contains("api.js.vm")) { + fileName = StringUtils.format("{}/api/{}/{}.js", vuePath, moduleName, businessName); + } else if (template.contains("index.vue.vm")) { + fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName); + } else if (template.contains("index-tree.vue.vm")) { + fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName); + } + return fileName; + } + + /** + * 获取包前缀 + * + * @param packageName 包名称 + * + * @return 包前缀名称 + */ + public static String getPackagePrefix (String packageName) { + int lastIndex = packageName.lastIndexOf("."); + return StringUtils.substring(packageName, 0, lastIndex); + } + + /** + * 根据列类型获取导入包 + * + * @param genTable 业务表对象 + * + * @return 返回需要导入的包列表 + */ + public static HashSet getImportList (GenTable genTable) { + List columns = genTable.getColumns(); + GenTable subGenTable = genTable.getSubTable(); + HashSet importList = new HashSet(); + if (StringUtils.isNotNull(subGenTable)) { + importList.add("java.util.List"); + } + for (GenTableColumn column : columns) { + if (!column.isSuperColumn() && GenConstants.TYPE_DATE.equals(column.getJavaType())) { + importList.add("java.util.Date"); + importList.add("com.fasterxml.jackson.annotation.JsonFormat"); + } else if (!column.isSuperColumn() && GenConstants.TYPE_BIGDECIMAL.equals(column.getJavaType())) { + importList.add("java.math.BigDecimal"); + } + } + return importList; + } + + /** + * 根据列类型获取字典组 + * + * @param genTable 业务表对象 + * + * @return 返回字典组 + */ + public static String getDicts (GenTable genTable) { + List columns = genTable.getColumns(); + Set dicts = new HashSet(); + addDicts(dicts, columns); + if (StringUtils.isNotNull(genTable.getSubTable())) { + List subColumns = genTable.getSubTable().getColumns(); + addDicts(dicts, subColumns); + } + return StringUtils.join(dicts, ", "); + } + + /** + * 添加字典列表 + * + * @param dicts 字典列表 + * @param columns 列集合 + */ + public static void addDicts (Set dicts, List columns) { + for (GenTableColumn column : columns) { + if (!column.isSuperColumn() && StringUtils.isNotEmpty(column.getDictType()) && StringUtils.equalsAny( + column.getHtmlType(), + new String[]{GenConstants.HTML_SELECT, GenConstants.HTML_RADIO, GenConstants.HTML_CHECKBOX})) { + dicts.add("'" + column.getDictType() + "'"); + } + } + } + + /** + * 获取权限前缀 + * + * @param moduleName 模块名称 + * @param businessName 业务名称 + * + * @return 返回权限前缀 + */ + public static String getPermissionPrefix (String moduleName, String businessName) { + return StringUtils.format("{}:{}", moduleName, businessName); + } + + /** + * 获取上级菜单ID字段 + * + * @param paramsObj 生成其他选项 + * + * @return 上级菜单ID字段 + */ + public static String getParentMenuId (JSONObject paramsObj) { + if (StringUtils.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.PARENT_MENU_ID) + && StringUtils.isNotEmpty(paramsObj.getString(GenConstants.PARENT_MENU_ID))) { + return paramsObj.getString(GenConstants.PARENT_MENU_ID); + } + return DEFAULT_PARENT_MENU_ID; + } + + /** + * 获取树编码 + * + * @param paramsObj 生成其他选项 + * + * @return 树编码 + */ + public static String getTreecode (JSONObject paramsObj) { + if (paramsObj.containsKey(GenConstants.TREE_CODE)) { + return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_CODE)); + } + return StringUtils.EMPTY; + } + + /** + * 获取树父编码 + * + * @param paramsObj 生成其他选项 + * + * @return 树父编码 + */ + public static String getTreeParentCode (JSONObject paramsObj) { + if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) { + return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_PARENT_CODE)); + } + return StringUtils.EMPTY; + } + + /** + * 获取树名称 + * + * @param paramsObj 生成其他选项 + * + * @return 树名称 + */ + public static String getTreeName (JSONObject paramsObj) { + if (paramsObj.containsKey(GenConstants.TREE_NAME)) { + return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_NAME)); + } + return StringUtils.EMPTY; + } + + /** + * 获取需要在哪一列上面显示展开按钮 + * + * @param genTable 业务表对象 + * + * @return 展开按钮列序号 + */ + public static int getExpandColumn (GenTable genTable) { + String options = genTable.getOptions(); + JSONObject paramsObj = JSON.parseObject(options); + String treeName = paramsObj.getString(GenConstants.TREE_NAME); + int num = 0; + for (GenTableColumn column : genTable.getColumns()) { + if (column.isList()) { + num++; + String columnName = column.getColumnName(); + if (columnName.equals(treeName)) { + break; + } + } + } + return num; + } +} diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/banner.txt b/cloud-modules/cloud-modules-gen/src/main/resources/banner.txt new file mode 100644 index 0000000..0dd5eee --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/banner.txt @@ -0,0 +1,2 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-gen/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..97fb5ad --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/bootstrap.yml @@ -0,0 +1,51 @@ +# Tomcat +server: + port: 9202 + +# nacos线上地址 +nacos: + addr: 47.101.49.53:8848 + user-name: nacos + password: nacos + namespace: seven + +# Spring +spring: + main: + allow-bean-definition-overriding: true + application: + # 应用名称 + name: cloud-gen + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + config: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + # 系统共享配置 + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # 系统环境Config共享配置 + - application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # xxl-job 配置文件 + - application-xxl-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/logback/dev.xml b/cloud-modules/cloud-modules-gen/src/main/resources/logback/dev.xml new file mode 100644 index 0000000..0b3964c --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/logback/dev.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/logback/prod.xml b/cloud-modules/cloud-modules-gen/src/main/resources/logback/prod.xml new file mode 100644 index 0000000..4a9d602 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/logback/prod.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/logback/test.xml b/cloud-modules/cloud-modules-gen/src/main/resources/logback/test.xml new file mode 100644 index 0000000..4a9d602 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/logback/test.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml b/cloud-modules/cloud-modules-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml new file mode 100644 index 0000000..fb9800e --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select column_id, + table_id, + column_name, + column_comment, + column_type, + java_type, + java_field, + is_pk, + is_increment, + is_required, + is_insert, + is_edit, + is_list, + is_query, + query_type, + html_type, + dict_type, + sort, + create_by, + create_time, + update_by, + update_time + from gen_table_column + + + + + + + + insert into gen_table_column ( + table_id, + column_name, + column_comment, + column_type, + java_type, + java_field, + is_pk, + is_increment, + is_required, + is_insert, + is_edit, + is_list, + is_query, + query_type, + html_type, + dict_type, + sort, + create_by, + create_time + )values( + #{tableId}, + #{columnName}, + #{columnComment}, + #{columnType}, + #{javaType}, + #{javaField}, + #{isPk}, + #{isIncrement}, + #{isRequired}, + #{isInsert}, + #{isEdit}, + #{isList}, + #{isQuery}, + #{queryType}, + #{htmlType}, + #{dictType}, + #{sort}, + #{createBy}, + sysdate() + ) + + + + update gen_table_column + + column_comment = #{columnComment}, + java_type = #{javaType}, + java_field = #{javaField}, + is_insert = #{isInsert}, + is_edit = #{isEdit}, + is_list = #{isList}, + is_query = #{isQuery}, + is_required = #{isRequired}, + query_type = #{queryType}, + html_type = #{htmlType}, + dict_type = #{dictType}, + sort = #{sort}, + update_by = #{updateBy}, + update_time = sysdate() + + where column_id = #{columnId} + + + + delete from gen_table_column where table_id in + + #{tableId} + + + + + delete from gen_table_column where column_id in + + #{item.columnId} + + + + diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/mapper/generator/GenTableMapper.xml b/cloud-modules/cloud-modules-gen/src/main/resources/mapper/generator/GenTableMapper.xml new file mode 100644 index 0000000..42ab2cf --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/mapper/generator/GenTableMapper.xml @@ -0,0 +1,317 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select table_id, + table_name, + table_comment, + sub_table_name, + sub_table_fk_name, + class_name, + tpl_category, + package_name, + module_name, + business_name, + function_name, + function_author, + gen_type, + gen_path, + options, + create_by, + create_time, + update_by, + update_time, + remark + from gen_table + + + + + + + + + + + + + + + + + + insert into gen_table ( + table_name, + table_comment, + class_name, + tpl_category, + package_name, + module_name, + business_name, + function_name, + function_author, + gen_type, + gen_path, + remark, + create_by, + create_time + )values( + #{tableName}, + #{tableComment}, + #{className}, + #{tplCategory}, + #{packageName}, + #{moduleName}, + #{businessName}, + #{functionName}, + #{functionAuthor}, + #{genType}, + #{genPath}, + #{remark}, + #{createBy}, + sysdate() + ) + + + + update gen_table + + table_name = #{tableName}, + table_comment = #{tableComment}, + sub_table_name = #{subTableName}, + sub_table_fk_name = #{subTableFkName}, + class_name = #{className}, + function_author = #{functionAuthor}, + gen_type = #{genType}, + gen_path = #{genPath}, + tpl_category = #{tplCategory}, + package_name = #{packageName}, + module_name = #{moduleName}, + business_name = #{businessName}, + function_name = #{functionName}, + options = #{options}, + update_by = #{updateBy}, + remark = #{remark}, + update_time = sysdate() + + where table_id = #{tableId} + + + + delete from gen_table where table_id in + + #{tableId} + + + + diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/controller.java.vm b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/controller.java.vm new file mode 100644 index 0000000..1df5be0 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/controller.java.vm @@ -0,0 +1,116 @@ +package ${packageName}.controller; + +import java.util.List; +import java.io.IOException; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.muyu.common.log.annotation.Log; +import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.security.annotation.RequiresPermissions; +import ${packageName}.domain.${ClassName}; +import ${packageName}.service.I${ClassName}Service; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.utils.poi.ExcelUtil; +#if($table.crud || $table.sub) +import com.muyu.common.core.web.page.TableDataInfo; +#elseif($table.tree) +#end + +/** + * ${functionName}Controller + * + * @author ${author} + * @date ${datetime} + */ +@RestController +@RequestMapping("/${businessName}") +public class ${ClassName}Controller extends BaseController +{ + @Autowired + private I${ClassName}Service ${className}Service; + + /** + * 查询${functionName}列表 + */ + @RequiresPermissions("${permissionPrefix}:list") + @GetMapping("/list") +#if($table.crud || $table.sub) + public Result list(${ClassName} ${className}) + { + startPage(); + List<${ClassName}> list = ${className}Service.select${ClassName}List(${className}); + return getDataTable(list); + } +#elseif($table.tree) + public Result list(${ClassName} ${className}) + { + List<${ClassName}> list = ${className}Service.select${ClassName}List(${className}); + return success(list); + } +#end + + /** + * 导出${functionName}列表 + */ + @RequiresPermissions("${permissionPrefix}:export") + @Log(title = "${functionName}", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, ${ClassName} ${className}) + { + List<${ClassName}> list = ${className}Service.select${ClassName}List(${className}); + ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}.class); + util.exportExcel(response, list, "${functionName}数据"); + } + + /** + * 获取${functionName}详细信息 + */ + @RequiresPermissions("${permissionPrefix}:query") + @GetMapping(value = "/{${pkColumn.javaField}}") + public Result getInfo(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}) + { + return success(${className}Service.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField})); + } + + /** + * 新增${functionName} + */ + @RequiresPermissions("${permissionPrefix}:add") + @Log(title = "${functionName}", businessType = BusinessType.INSERT) + @PostMapping + public Result add(@RequestBody ${ClassName} ${className}) + { + return toAjax(${className}Service.insert${ClassName}(${className})); + } + + /** + * 修改${functionName} + */ + @RequiresPermissions("${permissionPrefix}:edit") + @Log(title = "${functionName}", businessType = BusinessType.UPDATE) + @PutMapping + public Result edit(@RequestBody ${ClassName} ${className}) + { + return toAjax(${className}Service.update${ClassName}(${className})); + } + + /** + * 删除${functionName} + */ + @RequiresPermissions("${permissionPrefix}:remove") + @Log(title = "${functionName}", businessType = BusinessType.DELETE) + @DeleteMapping("/{${pkColumn.javaField}s}") + public Result remove(@PathVariable("${pkColumn.javaField}s") ${pkColumn.javaType}[] ${pkColumn.javaField}s) + { + return toAjax(${className}Service.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s)); + } +} diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/domain.java.vm b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/domain.java.vm new file mode 100644 index 0000000..1292991 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/domain.java.vm @@ -0,0 +1,103 @@ +package ${packageName}.domain; + +#foreach ($import in $importList) +import ${import}; +#end +import com.muyu.common.core.annotation.Excel; +#if($table.crud || $table.sub) +import com.muyu.common.core.web.domain.BaseEntity; +#elseif($table.tree) +import com.muyu.common.core.web.domain.TreeEntity; +#end + +/** + * ${functionName}对象 ${tableName} + * + * @author ${author} + * @date ${datetime} + */ +#if($table.crud || $table.sub) +#set($Entity="BaseEntity") +#elseif($table.tree) +#set($Entity="TreeEntity") +#end +public class ${ClassName} extends ${Entity} +{ + private static final long serialVersionUID = 1L; + +#foreach ($column in $columns) +#if(!$table.isSuperColumn($column.javaField)) + /** $column.columnComment */ +#if($column.list) +#set($parentheseIndex=$column.columnComment.indexOf("(")) +#if($parentheseIndex != -1) +#set($comment=$column.columnComment.substring(0, $parentheseIndex)) +#else +#set($comment=$column.columnComment) +#end +#if($parentheseIndex != -1) + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") +#elseif($column.javaType == 'Date') + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd") +#else + @Excel(name = "${comment}") +#end +#end + private $column.javaType $column.javaField; + +#end +#end +#if($table.sub) + /** $table.subTable.functionName信息 */ + private List<${subClassName}> ${subclassName}List; + +#end +#foreach ($column in $columns) +#if(!$table.isSuperColumn($column.javaField)) +#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) +#set($AttrName=$column.javaField) +#else +#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) +#end + public void set${AttrName}($column.javaType $column.javaField) + { + this.$column.javaField = $column.javaField; + } + + public $column.javaType get${AttrName}() + { + return $column.javaField; + } +#end +#end + +#if($table.sub) + public List<${subClassName}> get${subClassName}List() + { + return ${subclassName}List; + } + + public void set${subClassName}List(List<${subClassName}> ${subclassName}List) + { + this.${subclassName}List = ${subclassName}List; + } + +#end + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) +#foreach ($column in $columns) +#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) +#set($AttrName=$column.javaField) +#else +#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) +#end + .append("${column.javaField}", get${AttrName}()) +#end +#if($table.sub) + .append("${subclassName}List", get${subClassName}List()) +#end + .toString(); + } +} diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/mapper.java.vm b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/mapper.java.vm new file mode 100644 index 0000000..7e7d7c2 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/mapper.java.vm @@ -0,0 +1,91 @@ +package ${packageName}.mapper; + +import java.util.List; +import ${packageName}.domain.${ClassName}; +#if($table.sub) +import ${packageName}.domain.${subClassName}; +#end + +/** + * ${functionName}Mapper接口 + * + * @author ${author} + * @date ${datetime} + */ +public interface ${ClassName}Mapper +{ + /** + * 查询${functionName} + * + * @param ${pkColumn.javaField} ${functionName}主键 + * @return ${functionName} + */ + public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); + + /** + * 查询${functionName}列表 + * + * @param ${className} ${functionName} + * @return ${functionName}集合 + */ + public List<${ClassName}> select${ClassName}List(${ClassName} ${className}); + + /** + * 新增${functionName} + * + * @param ${className} ${functionName} + * @return 结果 + */ + public int insert${ClassName}(${ClassName} ${className}); + + /** + * 修改${functionName} + * + * @param ${className} ${functionName} + * @return 结果 + */ + public int update${ClassName}(${ClassName} ${className}); + + /** + * 删除${functionName} + * + * @param ${pkColumn.javaField} ${functionName}主键 + * @return 结果 + */ + public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); + + /** + * 批量删除${functionName} + * + * @param ${pkColumn.javaField}s 需要删除的数据主键集合 + * @return 结果 + */ + public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s); +#if($table.sub) + + /** + * 批量删除${subTable.functionName} + * + * @param ${pkColumn.javaField}s 需要删除的数据主键集合 + * @return 结果 + */ + public int delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaType}[] ${pkColumn.javaField}s); + + /** + * 批量新增${subTable.functionName} + * + * @param ${subclassName}List ${subTable.functionName}列表 + * @return 结果 + */ + public int batch${subClassName}(List<${subClassName}> ${subclassName}List); + + + /** + * 通过${functionName}主键删除${subTable.functionName}信息 + * + * @param ${pkColumn.javaField} ${functionName}ID + * @return 结果 + */ + public int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField}); +#end +} diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/service.java.vm b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/service.java.vm new file mode 100644 index 0000000..264882b --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/service.java.vm @@ -0,0 +1,61 @@ +package ${packageName}.service; + +import java.util.List; +import ${packageName}.domain.${ClassName}; + +/** + * ${functionName}Service接口 + * + * @author ${author} + * @date ${datetime} + */ +public interface I${ClassName}Service +{ + /** + * 查询${functionName} + * + * @param ${pkColumn.javaField} ${functionName}主键 + * @return ${functionName} + */ + public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); + + /** + * 查询${functionName}列表 + * + * @param ${className} ${functionName} + * @return ${functionName}集合 + */ + public List<${ClassName}> select${ClassName}List(${ClassName} ${className}); + + /** + * 新增${functionName} + * + * @param ${className} ${functionName} + * @return 结果 + */ + public int insert${ClassName}(${ClassName} ${className}); + + /** + * 修改${functionName} + * + * @param ${className} ${functionName} + * @return 结果 + */ + public int update${ClassName}(${ClassName} ${className}); + + /** + * 批量删除${functionName} + * + * @param ${pkColumn.javaField}s 需要删除的${functionName}主键集合 + * @return 结果 + */ + public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s); + + /** + * 删除${functionName}信息 + * + * @param ${pkColumn.javaField} ${functionName}主键 + * @return 结果 + */ + public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); +} diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/serviceImpl.java.vm b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/serviceImpl.java.vm new file mode 100644 index 0000000..3904af5 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/serviceImpl.java.vm @@ -0,0 +1,169 @@ +package ${packageName}.service.impl; + +import java.util.List; +#foreach ($column in $columns) +#if($column.javaField == 'createTime' || $column.javaField == 'updateTime') +import com.muyu.common.core.utils.DateUtils; +#break +#end +#end +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +#if($table.sub) +import java.util.ArrayList; +import com.muyu.common.core.utils.StringUtils; +import org.springframework.transaction.annotation.Transactional; +import ${packageName}.domain.${subClassName}; +#end +import ${packageName}.mapper.${ClassName}Mapper; +import ${packageName}.domain.${ClassName}; +import ${packageName}.service.I${ClassName}Service; + +/** + * ${functionName}Service业务层处理 + * + * @author ${author} + * @date ${datetime} + */ +@Service +public class ${ClassName}ServiceImpl implements I${ClassName}Service +{ + @Autowired + private ${ClassName}Mapper ${className}Mapper; + + /** + * 查询${functionName} + * + * @param ${pkColumn.javaField} ${functionName}主键 + * @return ${functionName} + */ + @Override + public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) + { + return ${className}Mapper.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}); + } + + /** + * 查询${functionName}列表 + * + * @param ${className} ${functionName} + * @return ${functionName} + */ + @Override + public List<${ClassName}> select${ClassName}List(${ClassName} ${className}) + { + return ${className}Mapper.select${ClassName}List(${className}); + } + + /** + * 新增${functionName} + * + * @param ${className} ${functionName} + * @return 结果 + */ +#if($table.sub) + @Transactional +#end + @Override + public int insert${ClassName}(${ClassName} ${className}) + { +#foreach ($column in $columns) +#if($column.javaField == 'createTime') + ${className}.setCreateTime(DateUtils.getNowDate()); +#end +#end +#if($table.sub) + int rows = ${className}Mapper.insert${ClassName}(${className}); + insert${subClassName}(${className}); + return rows; +#else + return ${className}Mapper.insert${ClassName}(${className}); +#end + } + + /** + * 修改${functionName} + * + * @param ${className} ${functionName} + * @return 结果 + */ +#if($table.sub) + @Transactional +#end + @Override + public int update${ClassName}(${ClassName} ${className}) + { +#foreach ($column in $columns) +#if($column.javaField == 'updateTime') + ${className}.setUpdateTime(DateUtils.getNowDate()); +#end +#end +#if($table.sub) + ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}()); + insert${subClassName}(${className}); +#end + return ${className}Mapper.update${ClassName}(${className}); + } + + /** + * 批量删除${functionName} + * + * @param ${pkColumn.javaField}s 需要删除的${functionName}主键 + * @return 结果 + */ +#if($table.sub) + @Transactional +#end + @Override + public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s) + { +#if($table.sub) + ${className}Mapper.delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaField}s); +#end + return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s); + } + + /** + * 删除${functionName}信息 + * + * @param ${pkColumn.javaField} ${functionName}主键 + * @return 结果 + */ +#if($table.sub) + @Transactional +#end + @Override + public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) + { +#if($table.sub) + ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField}); +#end + return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}); + } +#if($table.sub) + + /** + * 新增${subTable.functionName}信息 + * + * @param ${className} ${functionName}对象 + */ + public void insert${subClassName}(${ClassName} ${className}) + { + List<${subClassName}> ${subclassName}List = ${className}.get${subClassName}List(); + ${pkColumn.javaType} ${pkColumn.javaField} = ${className}.get${pkColumn.capJavaField}(); + if (StringUtils.isNotNull(${subclassName}List)) + { + List<${subClassName}> list = new ArrayList<${subClassName}>(); + for (${subClassName} ${subclassName} : ${subclassName}List) + { + ${subclassName}.set${subTableFkClassName}(${pkColumn.javaField}); + list.add(${subclassName}); + } + if (list.size() > 0) + { + ${className}Mapper.batch${subClassName}(list); + } + } + } +#end +} diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/sub-domain.java.vm b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/sub-domain.java.vm new file mode 100644 index 0000000..a5c170c --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/sub-domain.java.vm @@ -0,0 +1,79 @@ +package ${packageName}.domain; + +#foreach ($import in $subImportList) +import ${import}; +#end +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.web.domain.BaseEntity; + +/** + * ${subTable.functionName}对象 ${subTableName} + * + * @author ${author} + * @date ${datetime} + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class ${subClassName} extends BaseEntity +{ + private static final long serialVersionUID = 1L; + +#foreach ($column in $subTable.columns) +#if(!$table.isSuperColumn($column.javaField)) + /** $column.columnComment */ +#if($column.list) +#set($parentheseIndex=$column.columnComment.indexOf("(")) +#if($parentheseIndex != -1) +#set($comment=$column.columnComment.substring(0, $parentheseIndex)) +#else +#set($comment=$column.columnComment) +#end +#if($parentheseIndex != -1) + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") +#elseif($column.javaType == 'Date') + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd") +#else + @Excel(name = "${comment}") +#end +#end + private $column.javaType $column.javaField; + +#end +#end +#foreach ($column in $subTable.columns) +#if(!$table.isSuperColumn($column.javaField)) +#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) +#set($AttrName=$column.javaField) +#else +#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) +#end + public void set${AttrName}($column.javaType $column.javaField) + { + this.$column.javaField = $column.javaField; + } + + public $column.javaType get${AttrName}() + { + return $column.javaField; + } +#end +#end + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) +#foreach ($column in $subTable.columns) +#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) +#set($AttrName=$column.javaField) +#else +#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) +#end + .append("${column.javaField}", get${AttrName}()) +#end + .toString(); + } +} diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/vm/js/api.js.vm b/cloud-modules/cloud-modules-gen/src/main/resources/vm/js/api.js.vm new file mode 100644 index 0000000..9295524 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/vm/js/api.js.vm @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询${functionName}列表 +export function list${BusinessName}(query) { + return request({ + url: '/${moduleName}/${businessName}/list', + method: 'get', + params: query + }) +} + +// 查询${functionName}详细 +export function get${BusinessName}(${pkColumn.javaField}) { + return request({ + url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField}, + method: 'get' + }) +} + +// 新增${functionName} +export function add${BusinessName}(data) { + return request({ + url: '/${moduleName}/${businessName}', + method: 'post', + data: data + }) +} + +// 修改${functionName} +export function update${BusinessName}(data) { + return request({ + url: '/${moduleName}/${businessName}', + method: 'put', + data: data + }) +} + +// 删除${functionName} +export function del${BusinessName}(${pkColumn.javaField}) { + return request({ + url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField}, + method: 'delete' + }) +} diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/vm/sql/sql.vm b/cloud-modules/cloud-modules-gen/src/main/resources/vm/sql/sql.vm new file mode 100644 index 0000000..0575583 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/vm/sql/sql.vm @@ -0,0 +1,22 @@ +-- 菜单 SQL +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 'admin', sysdate(), '', null, '${functionName}菜单'); + +-- 按钮父菜单ID +SELECT @parentId := LAST_INSERT_ID(); + +-- 按钮 SQL +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('${functionName}查询', @parentId, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('${functionName}新增', @parentId, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('${functionName}修改', @parentId, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('${functionName}删除', @parentId, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('${functionName}导出', @parentId, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 'admin', sysdate(), '', null, ''); \ No newline at end of file diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/vm/vue/index-tree.vue.vm b/cloud-modules/cloud-modules-gen/src/main/resources/vm/vue/index-tree.vue.vm new file mode 100644 index 0000000..a4c64a0 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/vm/vue/index-tree.vue.vm @@ -0,0 +1,505 @@ + + + diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/vm/vue/index.vue.vm b/cloud-modules/cloud-modules-gen/src/main/resources/vm/vue/index.vue.vm new file mode 100644 index 0000000..6296014 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/vm/vue/index.vue.vm @@ -0,0 +1,602 @@ + + + diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/vm/vue/v3/index-tree.vue.vm b/cloud-modules/cloud-modules-gen/src/main/resources/vm/vue/v3/index-tree.vue.vm new file mode 100644 index 0000000..7bbd2fc --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/vm/vue/v3/index-tree.vue.vm @@ -0,0 +1,474 @@ + + + diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/vm/vue/v3/index.vue.vm b/cloud-modules/cloud-modules-gen/src/main/resources/vm/vue/v3/index.vue.vm new file mode 100644 index 0000000..8b25665 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/vm/vue/v3/index.vue.vm @@ -0,0 +1,590 @@ + + + diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/vm/vue/v3/readme.txt b/cloud-modules/cloud-modules-gen/src/main/resources/vm/vue/v3/readme.txt new file mode 100644 index 0000000..9f60284 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/vm/vue/v3/readme.txt @@ -0,0 +1 @@ +���ʹ�õ���cloud-Cloud-Vue3ǰ�ˣ���ô��Ҫ����һ�´�Ŀ¼��ģ��index.vue.vm��index-tree.vue.vm�ļ����ϼ�vueĿ¼�� diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/vm/xml/mapper.xml.vm b/cloud-modules/cloud-modules-gen/src/main/resources/vm/xml/mapper.xml.vm new file mode 100644 index 0000000..0ceb3d8 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/vm/xml/mapper.xml.vm @@ -0,0 +1,135 @@ + + + + + +#foreach ($column in $columns) + +#end + +#if($table.sub) + + + + + + +#foreach ($column in $subTable.columns) + +#end + +#end + + + select#foreach($column in $columns) $column.columnName#if($foreach.count != $columns.size()),#end#end from ${tableName} + + + + + + + + insert into ${tableName} + +#foreach($column in $columns) +#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment) + $column.columnName, +#end +#end + + +#foreach($column in $columns) +#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment) + #{$column.javaField}, +#end +#end + + + + + update ${tableName} + +#foreach($column in $columns) +#if($column.columnName != $pkColumn.columnName) + $column.columnName = #{$column.javaField}, +#end +#end + + where ${pkColumn.columnName} = #{${pkColumn.javaField}} + + + + delete from ${tableName} where ${pkColumn.columnName} = #{${pkColumn.javaField}} + + + + delete from ${tableName} where ${pkColumn.columnName} in + + #{${pkColumn.javaField}} + + +#if($table.sub) + + + delete from ${subTableName} where ${subTableFkName} in + + #{${subTableFkclassName}} + + + + + delete from ${subTableName} where ${subTableFkName} = #{${subTableFkclassName}} + + + + insert into ${subTableName}(#foreach($column in $subTable.columns) $column.columnName#if($foreach.count != $subTable.columns.size()),#end#end) values + + (#foreach($column in $subTable.columns) #{item.$column.javaField}#if($foreach.count != $subTable.columns.size()),#end#end) + + +#end + \ No newline at end of file diff --git a/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/CloudGenApplication.java b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/CloudGenApplication.java new file mode 100644 index 0000000..fe39313 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/CloudGenApplication.java @@ -0,0 +1,19 @@ +package com.muyu.warn; + + +import com.muyu.common.security.annotation.EnableCustomConfig; +import com.muyu.common.security.annotation.EnableMyFeignClients; +import groovy.util.logging.Log4j2; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@Log4j2 +@EnableCustomConfig +@EnableMyFeignClients +@SpringBootApplication +public class CloudWarnApplication { + public static void main(String[] args) { + SpringApplication.run(CloudWarnApplication.class,args); + System.out.println("Hello world!"); + } +} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/config/GenConfig.java b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/config/GenConfig.java new file mode 100644 index 0000000..65d9824 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/config/GenConfig.java @@ -0,0 +1,65 @@ +package com.muyu.gen.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * 代码生成相关配置 + * + * @author muyu + */ +@Component +@ConfigurationProperties(prefix = "gen") +public class GenConfig { + /** + * 作者 + */ + public static String author; + + /** + * 生成包路径 + */ + public static String packageName; + + /** + * 自动去除表前缀,默认是false + */ + public static boolean autoRemovePre; + + /** + * 表前缀(类名不会包含表前缀) + */ + public static String tablePrefix; + + public static String getAuthor () { + return author; + } + + public void setAuthor (String author) { + GenConfig.author = author; + } + + public static String getPackageName () { + return packageName; + } + + public void setPackageName (String packageName) { + GenConfig.packageName = packageName; + } + + public static boolean getAutoRemovePre () { + return autoRemovePre; + } + + public void setAutoRemovePre (boolean autoRemovePre) { + GenConfig.autoRemovePre = autoRemovePre; + } + + public static String getTablePrefix () { + return tablePrefix; + } + + public void setTablePrefix (String tablePrefix) { + GenConfig.tablePrefix = tablePrefix; + } +} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/controller/GenController.java b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/controller/GenController.java new file mode 100644 index 0000000..100a2c4 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/controller/GenController.java @@ -0,0 +1,236 @@ +package com.muyu.gen.controller; + +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.text.Convert; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.common.log.annotation.Log; +import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.gen.domain.GenTable; +import com.muyu.gen.domain.GenTableColumn; +import com.muyu.gen.domain.GenTableResp; +import com.muyu.gen.service.IGenTableColumnService; +import com.muyu.gen.service.IGenTableService; +import jakarta.servlet.http.HttpServletResponse; +import org.apache.commons.io.IOUtils; + +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 代码生成 操作处理 + * + * @author ruoyi + */ +@RequestMapping("/gen") +@RestController +public class GenController extends BaseController +{ + @Resource + private IGenTableService genTableService; + + @Resource + private HttpServletResponse response; + + @Resource + private IGenTableColumnService genTableColumnService; + + /** + * 查询代码生成列表 + */ + @RequiresPermissions("tool:gen:list") + @GetMapping("/list") + public Result genList(GenTable genTable) + { + startPage(); + List list = genTableService.selectGenTableList(genTable); + return getDataTable(list); + } + + /** + * 修改代码生成业务 + */ + @RequiresPermissions("tool:gen:query") + @GetMapping(value = "/{tableId}") + public Result getInfo(@PathVariable("tableId") Long tableId) + { + GenTable table = genTableService.selectGenTableById(tableId); + List tables = genTableService.selectGenTableAll(); + List list = genTableColumnService.selectGenTableColumnListByTableId(tableId); + Map map = new HashMap(); + map.put("info", table); + map.put("rows", list); + map.put("tables", tables); + return success(map); + } + + + /** + * 查询数据库列表 + */ + @RequiresPermissions("tool:gen:list") + @GetMapping("/db/list") + public Result dataList(GenTable genTable) + { + startPage(); + List list = genTableService.selectDbTableList(genTable); + return getDataTable(list); + } + + /** + * 查询数据表字段列表 + */ + @GetMapping(value = "/column/{tableId}") + public Result columnList(@PathVariable("tableId") Long tableId) + { + TableDataInfo dataInfo = new TableDataInfo(); + List list = genTableColumnService.selectGenTableColumnListByTableId(tableId); + dataInfo.setRows(list); + dataInfo.setTotal(list.size()); + return success(dataInfo); + } + + /** + * 导入表结构(保存) + */ +// @RequiresPermissions("tool:gen:import") + @Log(title = "代码生成", businessType = BusinessType.IMPORT) + @PostMapping("/importTable") + public Result importTableSave(@RequestParam("tables") String tables, @RequestParam("dbName") String dbName) + { + String[] tableNames = Convert.toStrArray(tables); + // 查询表信息 + List tableList = genTableService.selectDbTableListByNames(tableNames,dbName); + genTableService.importGenTable(tableList); + return success(); + } + + /** + * 修改保存代码生成业务 + */ + @RequiresPermissions("tool:gen:edit") + @Log(title = "代码生成", businessType = BusinessType.UPDATE) + @PutMapping + public Result editSave(@Validated @RequestBody GenTable genTable) + { + genTableService.validateEdit(genTable); + genTableService.updateGenTable(genTable); + return success(); + } + + /** + * 删除代码生成 + */ + @RequiresPermissions("tool:gen:remove") + @Log(title = "代码生成", businessType = BusinessType.DELETE) + @DeleteMapping("/{tableIds}") + public Result remove(@PathVariable("tableIds") Long[] tableIds) + { + genTableService.deleteGenTableByIds(tableIds); + return success(); + } + + /** + * 预览代码 + */ + @RequiresPermissions("tool:gen:preview") + @GetMapping("/preview/{tableId}") + public Result preview(@PathVariable("tableId") Long tableId) throws IOException + { + Map dataMap = genTableService.previewCode(tableId); + return success(dataMap); + } + + /** + * 生成代码(下载方式) + */ + @RequiresPermissions("tool:gen:code") + @Log(title = "代码生成", businessType = BusinessType.GENCODE) + @GetMapping("/download/{tableName}") + public void download(@PathVariable("tableName") String tableName) throws IOException + { + byte[] data = genTableService.downloadCode(tableName); + genCode(response, data); + } + + /** + * 生成代码(自定义路径) + */ + @RequiresPermissions("tool:gen:code") + @Log(title = "代码生成", businessType = BusinessType.GENCODE) + @GetMapping("/genCode/{tableName}") + public Result genCode(@PathVariable("tableName") String tableName) + { + genTableService.generatorCode(tableName); + return success(); + } + + /** + * 同步数据库 + */ + @RequiresPermissions("tool:gen:edit") + @Log(title = "代码生成", businessType = BusinessType.UPDATE) + @GetMapping("/synchDb/{tableName}/{dbName}") + public Result synchDb(@PathVariable("tableName") String tableName,@PathVariable("dbName") String dbName) + { + genTableService.synchDb(tableName,dbName); + return success(); + } + + /** + * 批量生成代码 + */ + @RequiresPermissions("tool:gen:code") + @Log(title = "代码生成", businessType = BusinessType.GENCODE) + @GetMapping("/batchGenCode") + public void batchGenCode(@RequestParam("tables") String tables) throws IOException + { + String[] tableNames = Convert.toStrArray(tables); + byte[] data = genTableService.downloadCode(tableNames); + genCode(response, data); + } + + /** + * 生成zip文件 + */ + private void genCode(HttpServletResponse response, byte[] data) throws IOException + { + response.reset(); + response.setHeader("Content-Disposition", "attachment; filename=\"ruoyi.zip\""); + response.addHeader("Content-Length", "" + data.length); + response.setContentType("application/octet-stream; charset=UTF-8"); + IOUtils.write(data, response.getOutputStream()); + } + + /** + * 查询所有数据库名称 + */ + @GetMapping("/selDbNameAll") + public Result> selDbNameAll(){ + return Result.success(genTableService.selDbNameAll()); + } + + /** + * 查询所有表,不分数据库 + */ + @GetMapping("/db/listAll") + public Result> genListAll() { + return success(genTableService.selectDbTableListAll()); + } + + /** + * 根据数据库名称与表名称查询表字段 + */ + @GetMapping("/selectDbTableColumnsByName") + public Result> selTableAll(@RequestParam("dbName") String dbName,@RequestParam("table") String table){ + List genTableColumns = genTableColumnService.selectDbTableColumnsByName(table, dbName); + return Result.success(genTableColumns); + } +} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/domain/GenTable.java b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/domain/GenTable.java new file mode 100644 index 0000000..c906725 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/domain/GenTable.java @@ -0,0 +1,378 @@ +package com.muyu.gen.domain; + +import com.muyu.common.core.constant.GenConstants; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import org.apache.commons.lang3.ArrayUtils; + +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotBlank; +import java.util.List; + + + + +/** + * 业务表 gen_table + * + * @author muyu + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class GenTable extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 编号 + */ + private Long tableId; + + private String dbName; + + /** + * 表名称 + */ + @NotBlank(message = "表名称不能为空") + private String tableName; + + /** + * 表描述 + */ + @NotBlank(message = "表描述不能为空") + private String tableComment; + + /** + * 关联父表的表名 + */ + private String subTableName; + + /** + * 本表关联父表的外键名 + */ + private String subTableFkName; + + /** + * 实体类名称(首字母大写) + */ + @NotBlank(message = "实体类名称不能为空") + private String className; + + /** + * 使用的模板(crud单表操作 tree树表操作 sub主子表操作) + */ + private String tplCategory; + + /** + * 生成包路径 + */ + @NotBlank(message = "生成包路径不能为空") + private String packageName; + + /** + * 生成模块名 + */ + @NotBlank(message = "生成模块名不能为空") + private String moduleName; + + /** + * 生成业务名 + */ + @NotBlank(message = "生成业务名不能为空") + private String businessName; + + /** + * 生成功能名 + */ + @NotBlank(message = "生成功能名不能为空") + private String functionName; + + /** + * 生成作者 + */ + @NotBlank(message = "作者不能为空") + private String functionAuthor; + + /** + * 生成代码方式(0zip压缩包 1自定义路径) + */ + private String genType; + + /** + * 生成路径(不填默认项目路径) + */ + private String genPath; + + /** + * 主键信息 + */ + private GenTableColumn pkColumn; + + /** + * 子表信息 + */ + private GenTable subTable; + + /** + * 表列信息 + */ + @Valid + private List columns; + + /** + * 其它生成选项 + */ + private String options; + + /** + * 树编码字段 + */ + private String treeCode; + + /** + * 树父编码字段 + */ + private String treeParentCode; + + /** + * 树名称字段 + */ + private String treeName; + + /** + * 上级菜单ID字段 + */ + private String parentMenuId; + + /** + * 上级菜单名称字段 + */ + private String parentMenuName; + + public static boolean isSub (String tplCategory) { + return tplCategory != null && StringUtils.equals(GenConstants.TPL_SUB, tplCategory); + } + + public static boolean isTree (String tplCategory) { + return tplCategory != null && StringUtils.equals(GenConstants.TPL_TREE, tplCategory); + } + + public static boolean isCrud (String tplCategory) { + return tplCategory != null && StringUtils.equals(GenConstants.TPL_CRUD, tplCategory); + } + + public static boolean isSuperColumn (String tplCategory, String javaField) { + if (isTree(tplCategory)) { + return StringUtils.equalsAnyIgnoreCase(javaField, + ArrayUtils.addAll(GenConstants.TREE_ENTITY, GenConstants.BASE_ENTITY)); + } + return StringUtils.equalsAnyIgnoreCase(javaField, GenConstants.BASE_ENTITY); + } + + public Long getTableId () { + return tableId; + } + + public void setTableId (Long tableId) { + this.tableId = tableId; + } + + public String getTableName () { + return tableName; + } + + public void setTableName (String tableName) { + this.tableName = tableName; + } + + public String getTableComment () { + return tableComment; + } + + public void setTableComment (String tableComment) { + this.tableComment = tableComment; + } + + public String getSubTableName () { + return subTableName; + } + + public void setSubTableName (String subTableName) { + this.subTableName = subTableName; + } + + public String getSubTableFkName () { + return subTableFkName; + } + + public void setSubTableFkName (String subTableFkName) { + this.subTableFkName = subTableFkName; + } + + public String getClassName () { + return className; + } + + public void setClassName (String className) { + this.className = className; + } + + public String getTplCategory () { + return tplCategory; + } + + public void setTplCategory (String tplCategory) { + this.tplCategory = tplCategory; + } + + public String getPackageName () { + return packageName; + } + + public void setPackageName (String packageName) { + this.packageName = packageName; + } + + public String getModuleName () { + return moduleName; + } + + public void setModuleName (String moduleName) { + this.moduleName = moduleName; + } + + public String getBusinessName () { + return businessName; + } + + public void setBusinessName (String businessName) { + this.businessName = businessName; + } + + public String getFunctionName () { + return functionName; + } + + public void setFunctionName (String functionName) { + this.functionName = functionName; + } + + public String getFunctionAuthor () { + return functionAuthor; + } + + public void setFunctionAuthor (String functionAuthor) { + this.functionAuthor = functionAuthor; + } + + public String getGenType () { + return genType; + } + + public void setGenType (String genType) { + this.genType = genType; + } + + public String getGenPath () { + return genPath; + } + + public void setGenPath (String genPath) { + this.genPath = genPath; + } + + public GenTableColumn getPkColumn () { + return pkColumn; + } + + public void setPkColumn (GenTableColumn pkColumn) { + this.pkColumn = pkColumn; + } + + public GenTable getSubTable () { + return subTable; + } + + public void setSubTable (GenTable subTable) { + this.subTable = subTable; + } + + public List getColumns () { + return columns; + } + + public void setColumns (List columns) { + this.columns = columns; + } + + public String getOptions () { + return options; + } + + public void setOptions (String options) { + this.options = options; + } + + public String getTreeCode () { + return treeCode; + } + + public void setTreeCode (String treeCode) { + this.treeCode = treeCode; + } + + public String getTreeParentCode () { + return treeParentCode; + } + + public void setTreeParentCode (String treeParentCode) { + this.treeParentCode = treeParentCode; + } + + public String getTreeName () { + return treeName; + } + + public void setTreeName (String treeName) { + this.treeName = treeName; + } + + public String getParentMenuId () { + return parentMenuId; + } + + public void setParentMenuId (String parentMenuId) { + this.parentMenuId = parentMenuId; + } + + public String getParentMenuName () { + return parentMenuName; + } + + public void setParentMenuName (String parentMenuName) { + this.parentMenuName = parentMenuName; + } + + public boolean isSub () { + return isSub(this.tplCategory); + } + + public boolean isTree () { + return isTree(this.tplCategory); + } + + public boolean isCrud () { + return isCrud(this.tplCategory); + } + + public boolean isSuperColumn (String javaField) { + return isSuperColumn(this.tplCategory, javaField); + } +} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/domain/GenTableColumn.java b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/domain/GenTableColumn.java new file mode 100644 index 0000000..98e4c28 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/domain/GenTableColumn.java @@ -0,0 +1,358 @@ +package com.muyu.gen.domain; + +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import jakarta.validation.constraints.NotBlank; + +/** + * 代码生成业务字段表 gen_table_column + * + * @author muyu + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class GenTableColumn extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 编号 + */ + private Long columnId; + + /** + * 归属表编号 + */ + private Long tableId; + + /** + * 列名称 + */ + private String columnName; + + /** + * 列描述 + */ + private String columnComment; + + /** + * 列类型 + */ + private String columnType; + + /** + * JAVA类型 + */ + private String javaType; + + /** + * JAVA字段名 + */ + @NotBlank(message = "Java属性不能为空") + private String javaField; + + /** + * 是否主键(1是) + */ + private String isPk; + + /** + * 是否自增(1是) + */ + private String isIncrement; + + /** + * 是否必填(1是) + */ + private String isRequired; + + /** + * 是否为插入字段(1是) + */ + private String isInsert; + + /** + * 是否编辑字段(1是) + */ + private String isEdit; + + /** + * 是否列表字段(1是) + */ + private String isList; + + /** + * 是否查询字段(1是) + */ + private String isQuery; + + /** + * 查询方式(EQ等于、NE不等于、GT大于、LT小于、LIKE模糊、BETWEEN范围) + */ + private String queryType; + + /** + * 显示类型(input文本框、textarea文本域、select下拉框、checkbox复选框、radio单选框、datetime日期控件、image图片上传控件、upload文件上传控件、editor富文本控件) + */ + private String htmlType; + + /** + * 字典类型 + */ + private String dictType; + + /** + * 排序 + */ + private Integer sort; + + public static boolean isSuperColumn (String javaField) { + return StringUtils.equalsAnyIgnoreCase(javaField, + // BaseEntity + "createBy", "createTime", "updateBy", "updateTime", "remark", + // TreeEntity + "parentName", "parentId", "orderNum", "ancestors"); + } + + public static boolean isUsableColumn (String javaField) { + // isSuperColumn()中的名单用于避免生成多余Domain属性,若某些属性在生成页面时需要用到不能忽略,则放在此处白名单 + return StringUtils.equalsAnyIgnoreCase(javaField, "parentId", "orderNum", "remark"); + } + + public Long getColumnId () { + return columnId; + } + + public void setColumnId (Long columnId) { + this.columnId = columnId; + } + + public Long getTableId () { + return tableId; + } + + public void setTableId (Long tableId) { + this.tableId = tableId; + } + + public String getColumnName () { + return columnName; + } + + public void setColumnName (String columnName) { + this.columnName = columnName; + } + + public String getColumnComment () { + return columnComment; + } + + public void setColumnComment (String columnComment) { + this.columnComment = columnComment; + } + + public String getColumnType () { + return columnType; + } + + public void setColumnType (String columnType) { + this.columnType = columnType; + } + + public String getJavaType () { + return javaType; + } + + public void setJavaType (String javaType) { + this.javaType = javaType; + } + + public String getJavaField () { + return javaField; + } + + public void setJavaField (String javaField) { + this.javaField = javaField; + } + + public String getCapJavaField () { + return StringUtils.capitalize(javaField); + } + + public String getIsPk () { + return isPk; + } + + public void setIsPk (String isPk) { + this.isPk = isPk; + } + + public boolean isPk () { + return isPk(this.isPk); + } + + public boolean isPk (String isPk) { + return isPk != null && StringUtils.equals("1", isPk); + } + + public String getIsIncrement () { + return isIncrement; + } + + public void setIsIncrement (String isIncrement) { + this.isIncrement = isIncrement; + } + + public boolean isIncrement () { + return isIncrement(this.isIncrement); + } + + public boolean isIncrement (String isIncrement) { + return isIncrement != null && StringUtils.equals("1", isIncrement); + } + + public String getIsRequired () { + return isRequired; + } + + public void setIsRequired (String isRequired) { + this.isRequired = isRequired; + } + + public boolean isRequired () { + return isRequired(this.isRequired); + } + + public boolean isRequired (String isRequired) { + return isRequired != null && StringUtils.equals("1", isRequired); + } + + public String getIsInsert () { + return isInsert; + } + + public void setIsInsert (String isInsert) { + this.isInsert = isInsert; + } + + public boolean isInsert () { + return isInsert(this.isInsert); + } + + public boolean isInsert (String isInsert) { + return isInsert != null && StringUtils.equals("1", isInsert); + } + + public String getIsEdit () { + return isEdit; + } + + public void setIsEdit (String isEdit) { + this.isEdit = isEdit; + } + + public boolean isEdit () { + return isInsert(this.isEdit); + } + + public boolean isEdit (String isEdit) { + return isEdit != null && StringUtils.equals("1", isEdit); + } + + public String getIsList () { + return isList; + } + + public void setIsList (String isList) { + this.isList = isList; + } + + public boolean isList () { + return isList(this.isList); + } + + public boolean isList (String isList) { + return isList != null && StringUtils.equals("1", isList); + } + + public String getIsQuery () { + return isQuery; + } + + public void setIsQuery (String isQuery) { + this.isQuery = isQuery; + } + + public boolean isQuery () { + return isQuery(this.isQuery); + } + + public boolean isQuery (String isQuery) { + return isQuery != null && StringUtils.equals("1", isQuery); + } + + public String getQueryType () { + return queryType; + } + + public void setQueryType (String queryType) { + this.queryType = queryType; + } + + public String getHtmlType () { + return htmlType; + } + + public void setHtmlType (String htmlType) { + this.htmlType = htmlType; + } + + public String getDictType () { + return dictType; + } + + public void setDictType (String dictType) { + this.dictType = dictType; + } + + public Integer getSort () { + return sort; + } + + public void setSort (Integer sort) { + this.sort = sort; + } + + public boolean isSuperColumn () { + return isSuperColumn(this.javaField); + } + + public boolean isUsableColumn () { + return isUsableColumn(javaField); + } + + public String readConverterExp () { + String remarks = StringUtils.substringBetween(this.columnComment, "(", ")"); + StringBuffer sb = new StringBuffer(); + if (StringUtils.isNotEmpty(remarks)) { + for (String value : remarks.split(" ")) { + if (StringUtils.isNotEmpty(value)) { + Object startStr = value.subSequence(0, 1); + String endStr = value.substring(1); + sb.append(startStr).append("=").append(endStr).append(","); + } + } + return sb.deleteCharAt(sb.length() - 1).toString(); + } else { + return this.columnComment; + } + } +} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/domain/GenTableResp.java b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/domain/GenTableResp.java new file mode 100644 index 0000000..70b30dc --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/domain/GenTableResp.java @@ -0,0 +1,43 @@ +package com.muyu.gen.domain; + +import com.muyu.common.core.constant.GenConstants; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.web.domain.BaseEntity; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotBlank; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import org.apache.commons.lang3.ArrayUtils; + +import java.util.List; + + +/** + * 业务表 gen_table + * + * @author muyu + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class GenTableResp extends BaseEntity { + + private String dbName; + + /** + * 表名称 + */ + private String tableName; + + /** + * 表描述 + */ + private String tableComment; + + +} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/mapper/GenTableColumnMapper.java b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/mapper/GenTableColumnMapper.java new file mode 100644 index 0000000..76f5909 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/mapper/GenTableColumnMapper.java @@ -0,0 +1,64 @@ +package com.muyu.gen.mapper; + +import com.muyu.gen.domain.GenTableColumn; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + * 业务字段 数据层 + * + * @author ruoyi + */ +public interface GenTableColumnMapper +{ + /** + * 根据表名称查询列信息 + * + * @param tableName 表名称 + * @param dbName + * @return 列信息 + */ + public List selectDbTableColumnsByName(@Param("tableName") String tableName, @Param("dbName") String dbName); + + /** + * 查询业务字段列表 + * + * @param tableId 业务字段编号 + * @return 业务字段集合 + */ + public List selectGenTableColumnListByTableId(@Param("tableId") Long tableId); + + /** + * 新增业务字段 + * + * @param genTableColumn 业务字段信息 + * @return 结果 + */ + public int insertGenTableColumn(GenTableColumn genTableColumn); + + /** + * 修改业务字段 + * + * @param genTableColumn 业务字段信息 + * @return 结果 + */ + public int updateGenTableColumn(GenTableColumn genTableColumn); + + /** + * 删除业务字段 + * + * @param genTableColumns 列数据 + * @return 结果 + */ + public int deleteGenTableColumns(@Param("genTableColumns") List genTableColumns); + + /** + * 批量删除业务字段 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteGenTableColumnByIds(@Param("ids") Long[] ids); +} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/mapper/GenTableMapper.java b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/mapper/GenTableMapper.java new file mode 100644 index 0000000..aa49b3f --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/mapper/GenTableMapper.java @@ -0,0 +1,91 @@ +package com.muyu.gen.mapper; + +import com.muyu.gen.domain.GenTable; +import com.muyu.gen.domain.GenTableResp; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 业务 数据层 + * + * @author ruoyi + */ +public interface GenTableMapper +{ + /** + * 查询业务列表 + * + * @param genTable 业务信息 + * @return 业务集合 + */ + public List selectGenTableList(GenTable genTable); + + /** + * 查询据库列表 + * + * @param genTable 业务信息 + * @return 数据库表集合 + */ + public List selectDbTableList(GenTable genTable); + + /** + * 查询据库列表 + * + * @param tableNames 表名称组 + * @param dbName + * @return 数据库表集合 + */ + public List selectDbTableListByNames(@Param("tableNames") String[] tableNames, @Param("dbName") String dbName); + + /** + * 查询所有表信息 + * + * @return 表信息集合 + */ + public List selectGenTableAll(); + + /** + * 查询表ID业务信息 + * + * @param id 业务ID + * @return 业务信息 + */ + public GenTable selectGenTableById(@Param("id") Long id); + + /** + * 查询表名称业务信息 + * + * @param tableName 表名称 + * @return 业务信息 + */ + public GenTable selectGenTableByName(@Param("tableName") String tableName); + + /** + * 新增业务 + * + * @param genTable 业务信息 + * @return 结果 + */ + public int insertGenTable(GenTable genTable); + + /** + * 修改业务 + * + * @param genTable 业务信息 + * @return 结果 + */ + public int updateGenTable(GenTable genTable); + + /** + * 批量删除业务 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteGenTableByIds(@Param("ids") Long[] ids); + + List selDbNameAll(); + + List selectDbTableListAll(); +} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/service/GenTableColumnServiceImpl.java b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/service/GenTableColumnServiceImpl.java new file mode 100644 index 0000000..043c83b --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/service/GenTableColumnServiceImpl.java @@ -0,0 +1,74 @@ +package com.muyu.gen.service; + +import com.muyu.common.core.text.Convert; +import com.muyu.gen.domain.GenTableColumn; +import com.muyu.gen.mapper.GenTableColumnMapper; + import javax.annotation.Resource; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 业务字段 服务层实现 + * + * @author ruoyi + */ +@Service +public class GenTableColumnServiceImpl implements IGenTableColumnService +{ + @Resource + private GenTableColumnMapper genTableColumnMapper; + + /** + * 查询业务字段列表 + * + * @param tableId 业务字段编号 + * @return 业务字段集合 + */ + @Override + public List selectGenTableColumnListByTableId(Long tableId) + { + return genTableColumnMapper.selectGenTableColumnListByTableId(tableId); + } + + /** + * 新增业务字段 + * + * @param genTableColumn 业务字段信息 + * @return 结果 + */ + @Override + public int insertGenTableColumn(GenTableColumn genTableColumn) + { + return genTableColumnMapper.insertGenTableColumn(genTableColumn); + } + + /** + * 修改业务字段 + * + * @param genTableColumn 业务字段信息 + * @return 结果 + */ + @Override + public int updateGenTableColumn(GenTableColumn genTableColumn) + { + return genTableColumnMapper.updateGenTableColumn(genTableColumn); + } + + /** + * 删除业务字段对象 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + @Override + public int deleteGenTableColumnByIds(String ids) + { + return genTableColumnMapper.deleteGenTableColumnByIds(Convert.toLongArray(ids)); + } + + @Override + public List selectDbTableColumnsByName(String table, String dbName) { + return genTableColumnMapper.selectDbTableColumnsByName(table,dbName); + } +} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/service/GenTableServiceImpl.java b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/service/GenTableServiceImpl.java new file mode 100644 index 0000000..8cdefc5 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/service/GenTableServiceImpl.java @@ -0,0 +1,537 @@ +package com.muyu.gen.service; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.muyu.common.core.constant.Constants; +import com.muyu.common.core.constant.GenConstants; +import com.muyu.common.core.exception.ServiceException; +import com.muyu.common.core.text.CharsetKit; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.gen.domain.GenTable; +import com.muyu.gen.domain.GenTableColumn; +import com.muyu.gen.domain.GenTableResp; +import com.muyu.gen.mapper.GenTableColumnMapper; +import com.muyu.gen.mapper.GenTableMapper; +import com.muyu.gen.util.GenUtils; +import com.muyu.gen.util.VelocityInitializer; +import com.muyu.gen.util.VelocityUtils; +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; +import org.apache.velocity.Template; +import org.apache.velocity.VelocityContext; +import org.apache.velocity.app.Velocity; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import javax.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.StringWriter; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +/** + * 业务 服务层实现 + * + * @author ruoyi + */ +@Service +public class GenTableServiceImpl implements IGenTableService +{ + private static final Logger log = LoggerFactory.getLogger(GenTableServiceImpl.class); + + @Resource + private GenTableMapper genTableMapper; + + @Resource + private GenTableColumnMapper genTableColumnMapper; + + /** + * 查询业务信息 + * + * @param id 业务ID + * @return 业务信息 + */ + @Override + public GenTable selectGenTableById(Long id) + { + GenTable genTable = genTableMapper.selectGenTableById(id); + setTableFromOptions(genTable); + return genTable; + } + + /** + * 查询业务列表 + * + * @param genTable 业务信息 + * @return 业务集合 + */ + @Override + public List selectGenTableList(GenTable genTable) + { + return genTableMapper.selectGenTableList(genTable); + } + + /** + * 查询据库列表 + * + * @param genTable 业务信息 + * @return 数据库表集合 + */ + @Override + public List selectDbTableList(GenTable genTable) + { + return genTableMapper.selectDbTableList(genTable); + } + + /** + * 查询据库列表 + * + * @param tableNames 表名称组 + * @param dbName + * @return 数据库表集合 + */ + @Override + public List selectDbTableListByNames(String[] tableNames, String dbName) + { + return genTableMapper.selectDbTableListByNames(tableNames,dbName); + } + + /** + * 查询所有表信息 + * + * @return 表信息集合 + */ + @Override + public List selectGenTableAll() + { + return genTableMapper.selectGenTableAll(); + } + + /** + * 修改业务 + * + * @param genTable 业务信息 + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void updateGenTable(GenTable genTable) + { + String options = JSON.toJSONString(genTable.getParams()); + genTable.setOptions(options); + int row = genTableMapper.updateGenTable(genTable); + if (row > 0) + { + for (GenTableColumn cenTableColumn : genTable.getColumns()) + { + genTableColumnMapper.updateGenTableColumn(cenTableColumn); + } + } + } + + /** + * 删除业务对象 + * + * @param tableIds 需要删除的数据ID + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteGenTableByIds(Long[] tableIds) + { + genTableMapper.deleteGenTableByIds(tableIds); + genTableColumnMapper.deleteGenTableColumnByIds(tableIds); + } + + /** + * 导入表结构 + * + * @param tableList 导入表列表 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void importGenTable(List tableList) + { + String operName = SecurityUtils.getUsername(); + try + { + for (GenTable table : tableList) + { + String dbName = table.getDbName(); + String tableName = table.getTableName(); + GenUtils.initTable(table, operName); + int row = genTableMapper.insertGenTable(table); + if (row > 0) + { + // 保存列信息 + List genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName, dbName); + for (GenTableColumn column : genTableColumns) + { + GenUtils.initColumnField(column, table); + genTableColumnMapper.insertGenTableColumn(column); + } + } + } + } + catch (Exception e) + { + throw new ServiceException("导入失败:" + e.getMessage()); + } + } + + /** + * 预览代码 + * + * @param tableId 表编号 + * @return 预览数据列表 + */ + @Override + public Map previewCode(Long tableId) + { + Map dataMap = new LinkedHashMap<>(); + // 查询表信息 + GenTable table = genTableMapper.selectGenTableById(tableId); + // 设置主子表信息 + setSubTable(table); + // 设置主键列信息 + setPkColumn(table); + VelocityInitializer.initVelocity(); + + VelocityContext context = VelocityUtils.prepareContext(table); + + // 获取模板列表 + List templates = VelocityUtils.getTemplateList(table.getTplCategory()); + for (String template : templates) + { + // 渲染模板 + StringWriter sw = new StringWriter(); + Template tpl = Velocity.getTemplate(template, Constants.UTF8); + tpl.merge(context, sw); + dataMap.put(template, sw.toString()); + } + return dataMap; + } + + /** + * 生成代码(下载方式) + * + * @param tableName 表名称 + * @return 数据 + */ + @Override + public byte[] downloadCode(String tableName) + { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + ZipOutputStream zip = new ZipOutputStream(outputStream); + generatorCode(tableName, zip); + IOUtils.closeQuietly(zip); + return outputStream.toByteArray(); + } + + /** + * 生成代码(自定义路径) + * + * @param tableName 表名称 + */ + @Override + public void generatorCode(String tableName) + { + // 查询表信息 + GenTable table = genTableMapper.selectGenTableByName(tableName); + // 设置主子表信息 + setSubTable(table); + // 设置主键列信息 + setPkColumn(table); + + VelocityInitializer.initVelocity(); + + VelocityContext context = VelocityUtils.prepareContext(table); + + // 获取模板列表 + List templates = VelocityUtils.getTemplateList(table.getTplCategory()); + for (String template : templates) + { + if (!StringUtils.containsAny(template, "sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm")) + { + // 渲染模板 + StringWriter sw = new StringWriter(); + Template tpl = Velocity.getTemplate(template, Constants.UTF8); + tpl.merge(context, sw); + try + { + String path = getGenPath(table, template); + FileUtils.writeStringToFile(new File(path), sw.toString(), CharsetKit.UTF_8); + } + catch (IOException e) + { + throw new ServiceException("渲染模板失败,表名:" + table.getTableName()); + } + } + } + } + + /** + * 同步数据库 + * + * @param tableName 表名称 + * @param dbName + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void synchDb(String tableName, String dbName) + { + GenTable table = genTableMapper.selectGenTableByName(tableName); + List tableColumns = table.getColumns(); + Map tableColumnMap = tableColumns.stream().collect(Collectors.toMap(GenTableColumn::getColumnName, Function.identity())); + + List dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName, dbName); + if (StringUtils.isEmpty(dbTableColumns)) + { + throw new ServiceException("同步数据失败,原表结构不存在"); + } + List dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList()); + + dbTableColumns.forEach(column -> { + GenUtils.initColumnField(column, table); + if (tableColumnMap.containsKey(column.getColumnName())) + { + GenTableColumn prevColumn = tableColumnMap.get(column.getColumnName()); + column.setColumnId(prevColumn.getColumnId()); + if (column.isList()) + { + // 如果是列表,继续保留查询方式/字典类型选项 + column.setDictType(prevColumn.getDictType()); + column.setQueryType(prevColumn.getQueryType()); + } + if (StringUtils.isNotEmpty(prevColumn.getIsRequired()) && !column.isPk() + && (column.isInsert() || column.isEdit()) + && ((column.isUsableColumn()) || (!column.isSuperColumn()))) + { + // 如果是(新增/修改&非主键/非忽略及父属性),继续保留必填/显示类型选项 + column.setIsRequired(prevColumn.getIsRequired()); + column.setHtmlType(prevColumn.getHtmlType()); + } + genTableColumnMapper.updateGenTableColumn(column); + } + else + { + genTableColumnMapper.insertGenTableColumn(column); + } + }); + + List delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList()); + if (StringUtils.isNotEmpty(delColumns)) + { + genTableColumnMapper.deleteGenTableColumns(delColumns); + } + } + + /** + * 批量生成代码(下载方式) + * + * @param tableNames 表数组 + * @return 数据 + */ + @Override + public byte[] downloadCode(String[] tableNames) + { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + ZipOutputStream zip = new ZipOutputStream(outputStream); + for (String tableName : tableNames) + { + generatorCode(tableName, zip); + } + IOUtils.closeQuietly(zip); + return outputStream.toByteArray(); + } + + /** + * 查询表信息并生成代码 + */ + private void generatorCode(String tableName, ZipOutputStream zip) + { + // 查询表信息 + GenTable table = genTableMapper.selectGenTableByName(tableName); + // 设置主子表信息 + setSubTable(table); + // 设置主键列信息 + setPkColumn(table); + + VelocityInitializer.initVelocity(); + + VelocityContext context = VelocityUtils.prepareContext(table); + + // 获取模板列表 + List templates = VelocityUtils.getTemplateList(table.getTplCategory()); + for (String template : templates) + { + // 渲染模板 + StringWriter sw = new StringWriter(); + Template tpl = Velocity.getTemplate(template, Constants.UTF8); + tpl.merge(context, sw); + try + { + // 添加到zip + zip.putNextEntry(new ZipEntry(VelocityUtils.getFileName(template, table))); + IOUtils.write(sw.toString(), zip, Constants.UTF8); + IOUtils.closeQuietly(sw); + zip.flush(); + zip.closeEntry(); + } + catch (IOException e) + { + log.error("渲染模板失败,表名:" + table.getTableName(), e); + } + } + } + + /** + * 修改保存参数校验 + * + * @param genTable 业务信息 + */ + @Override + public void validateEdit(GenTable genTable) + { + if (GenConstants.TPL_TREE.equals(genTable.getTplCategory())) + { + String options = JSON.toJSONString(genTable.getParams()); + JSONObject paramsObj = JSON.parseObject(options); + if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_CODE))) + { + throw new ServiceException("树编码字段不能为空"); + } + else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_PARENT_CODE))) + { + throw new ServiceException("树父编码字段不能为空"); + } + else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_NAME))) + { + throw new ServiceException("树名称字段不能为空"); + } + else if (GenConstants.TPL_SUB.equals(genTable.getTplCategory())) + { + if (StringUtils.isEmpty(genTable.getSubTableName())) + { + throw new ServiceException("关联子表的表名不能为空"); + } + else if (StringUtils.isEmpty(genTable.getSubTableFkName())) + { + throw new ServiceException("子表关联的外键名不能为空"); + } + } + } + } + + @Override + public List selDbNameAll() { + return genTableMapper.selDbNameAll(); + } + + @Override + public List selectDbTableListAll() { + return genTableMapper.selectDbTableListAll(); + } + + + /** + * 设置主键列信息 + * + * @param table 业务表信息 + */ + public void setPkColumn(GenTable table) + { + for (GenTableColumn column : table.getColumns()) + { + if (column.isPk()) + { + table.setPkColumn(column); + break; + } + } + if (StringUtils.isNull(table.getPkColumn())) + { + table.setPkColumn(table.getColumns().get(0)); + } + if (GenConstants.TPL_SUB.equals(table.getTplCategory())) + { + for (GenTableColumn column : table.getSubTable().getColumns()) + { + if (column.isPk()) + { + table.getSubTable().setPkColumn(column); + break; + } + } + if (StringUtils.isNull(table.getSubTable().getPkColumn())) + { + table.getSubTable().setPkColumn(table.getSubTable().getColumns().get(0)); + } + } + } + + /** + * 设置主子表信息 + * + * @param table 业务表信息 + */ + public void setSubTable(GenTable table) + { + String subTableName = table.getSubTableName(); + if (StringUtils.isNotEmpty(subTableName)) + { + table.setSubTable(genTableMapper.selectGenTableByName(subTableName)); + } + } + + /** + * 设置代码生成其他选项值 + * + * @param genTable 设置后的生成对象 + */ + public void setTableFromOptions(GenTable genTable) + { + JSONObject paramsObj = JSON.parseObject(genTable.getOptions()); + if (StringUtils.isNotNull(paramsObj)) + { + String treeCode = paramsObj.getString(GenConstants.TREE_CODE); + String treeParentCode = paramsObj.getString(GenConstants.TREE_PARENT_CODE); + String treeName = paramsObj.getString(GenConstants.TREE_NAME); + String parentMenuId = paramsObj.getString(GenConstants.PARENT_MENU_ID); + String parentMenuName = paramsObj.getString(GenConstants.PARENT_MENU_NAME); + + genTable.setTreeCode(treeCode); + genTable.setTreeParentCode(treeParentCode); + genTable.setTreeName(treeName); + genTable.setParentMenuId(parentMenuId); + genTable.setParentMenuName(parentMenuName); + } + } + + /** + * 获取代码生成地址 + * + * @param table 业务表信息 + * @param template 模板文件路径 + * @return 生成地址 + */ + public static String getGenPath(GenTable table, String template) + { + String genPath = table.getGenPath(); + if (StringUtils.equals(genPath, "/")) + { + return System.getProperty("user.dir") + File.separator + "src" + File.separator + VelocityUtils.getFileName(template, table); + } + return genPath + File.separator + VelocityUtils.getFileName(template, table); + } +} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/service/IGenTableColumnService.java b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/service/IGenTableColumnService.java new file mode 100644 index 0000000..e6d4d55 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/service/IGenTableColumnService.java @@ -0,0 +1,47 @@ +package com.muyu.gen.service; + +import com.muyu.gen.domain.GenTableColumn; + +import java.util.List; + +/** + * 业务字段 服务层 + * + * @author ruoyi + */ +public interface IGenTableColumnService +{ + /** + * 查询业务字段列表 + * + * @param tableId 业务字段编号 + * @return 业务字段集合 + */ + public List selectGenTableColumnListByTableId(Long tableId); + + /** + * 新增业务字段 + * + * @param genTableColumn 业务字段信息 + * @return 结果 + */ + public int insertGenTableColumn(GenTableColumn genTableColumn); + + /** + * 修改业务字段 + * + * @param genTableColumn 业务字段信息 + * @return 结果 + */ + public int updateGenTableColumn(GenTableColumn genTableColumn); + + /** + * 删除业务字段信息 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteGenTableColumnByIds(String ids); + + List selectDbTableColumnsByName(String table, String dbName); +} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/service/IGenTableService.java b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/service/IGenTableService.java new file mode 100644 index 0000000..f79d5e8 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/service/IGenTableService.java @@ -0,0 +1,129 @@ +package com.muyu.gen.service; + +import com.muyu.gen.domain.GenTable; +import com.muyu.gen.domain.GenTableResp; + +import java.util.List; +import java.util.Map; + +/** + * 业务 服务层 + * + * @author ruoyi + */ +public interface IGenTableService +{ + /** + * 查询业务列表 + * + * @param genTable 业务信息 + * @return 业务集合 + */ + public List selectGenTableList(GenTable genTable); + + /** + * 查询据库列表 + * + * @param genTable 业务信息 + * @return 数据库表集合 + */ + public List selectDbTableList(GenTable genTable); + + /** + * 查询据库列表 + * + * @param tableNames 表名称组 + * @param dbName + * @return 数据库表集合 + */ + public List selectDbTableListByNames(String[] tableNames, String dbName); + + /** + * 查询所有表信息 + * + * @return 表信息集合 + */ + public List selectGenTableAll(); + + /** + * 查询业务信息 + * + * @param id 业务ID + * @return 业务信息 + */ + public GenTable selectGenTableById(Long id); + + /** + * 修改业务 + * + * @param genTable 业务信息 + * @return 结果 + */ + public void updateGenTable(GenTable genTable); + + /** + * 删除业务信息 + * + * @param tableIds 需要删除的表数据ID + * @return 结果 + */ + public void deleteGenTableByIds(Long[] tableIds); + + /** + * 导入表结构 + * + * @param tableList 导入表列表 + */ + public void importGenTable(List tableList); + + /** + * 预览代码 + * + * @param tableId 表编号 + * @return 预览数据列表 + */ + public Map previewCode(Long tableId); + + /** + * 生成代码(下载方式) + * + * @param tableName 表名称 + * @return 数据 + */ + public byte[] downloadCode(String tableName); + + /** + * 生成代码(自定义路径) + * + * @param tableName 表名称 + * @return 数据 + */ + public void generatorCode(String tableName); + + /** + * 同步数据库 + * + * @param tableName 表名称 + * @param dbName + */ + public void synchDb(String tableName, String dbName); + + /** + * 批量生成代码(下载方式) + * + * @param tableNames 表数组 + * @return 数据 + */ + public byte[] downloadCode(String[] tableNames); + + /** + * 修改保存参数校验 + * + * @param genTable 业务信息 + */ + public void validateEdit(GenTable genTable); + + List selDbNameAll(); + + List selectDbTableListAll(); +} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/util/GenUtils.java b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/util/GenUtils.java new file mode 100644 index 0000000..5aea1f2 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/util/GenUtils.java @@ -0,0 +1,229 @@ +package com.muyu.gen.util; + +import com.muyu.common.core.constant.GenConstants; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.gen.config.GenConfig; +import com.muyu.gen.domain.GenTable; +import com.muyu.gen.domain.GenTableColumn; +import org.apache.commons.lang3.RegExUtils; + +import java.util.Arrays; + +/** + * 代码生成器 工具类 + * + * @author muyu + */ +public class GenUtils { + /** + * 初始化表信息 + */ + public static void initTable (GenTable genTable, String operName) { + genTable.setClassName(convertClassName(genTable.getTableName())); + genTable.setPackageName(GenConfig.getPackageName()); + genTable.setModuleName(getModuleName(GenConfig.getPackageName())); + genTable.setBusinessName(getBusinessName(genTable.getTableName())); + genTable.setFunctionName(replaceText(genTable.getTableComment())); + genTable.setFunctionAuthor(GenConfig.getAuthor()); + genTable.setCreateBy(operName); + } + + /** + * 初始化列属性字段 + */ + public static void initColumnField (GenTableColumn column, GenTable table) { + String dataType = getDbType(column.getColumnType()); + String columnName = column.getColumnName(); + column.setTableId(table.getTableId()); + column.setCreateBy(table.getCreateBy()); + // 设置java字段名 + column.setJavaField(StringUtils.toCamelCase(columnName)); + // 设置默认类型 + column.setJavaType(GenConstants.TYPE_STRING); + column.setQueryType(GenConstants.QUERY_EQ); + + if (arraysContains(GenConstants.COLUMNTYPE_STR, dataType) || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType)) { + // 字符串长度超过500设置为文本域 + Integer columnLength = getColumnLength(column.getColumnType()); + String htmlType = columnLength >= 500 || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType) ? GenConstants.HTML_TEXTAREA : GenConstants.HTML_INPUT; + column.setHtmlType(htmlType); + } else if (arraysContains(GenConstants.COLUMNTYPE_TIME, dataType)) { + column.setJavaType(GenConstants.TYPE_DATE); + column.setHtmlType(GenConstants.HTML_DATETIME); + } else if (arraysContains(GenConstants.COLUMNTYPE_NUMBER, dataType)) { + column.setHtmlType(GenConstants.HTML_INPUT); + + // 如果是浮点型 统一用BigDecimal + String[] str = StringUtils.split(StringUtils.substringBetween(column.getColumnType(), "(", ")"), ","); + if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0) { + column.setJavaType(GenConstants.TYPE_BIGDECIMAL); + } + // 如果是整形 + else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10) { + column.setJavaType(GenConstants.TYPE_INTEGER); + } + // 长整形 + else { + column.setJavaType(GenConstants.TYPE_LONG); + } + } + + // 插入字段(默认所有字段都需要插入) + column.setIsInsert(GenConstants.REQUIRE); + + // 编辑字段 + if (!arraysContains(GenConstants.COLUMNNAME_NOT_EDIT, columnName) && !column.isPk()) { + column.setIsEdit(GenConstants.REQUIRE); + } + // 列表字段 + if (!arraysContains(GenConstants.COLUMNNAME_NOT_LIST, columnName) && !column.isPk()) { + column.setIsList(GenConstants.REQUIRE); + } + // 查询字段 + if (!arraysContains(GenConstants.COLUMNNAME_NOT_QUERY, columnName) && !column.isPk()) { + column.setIsQuery(GenConstants.REQUIRE); + } + + // 查询字段类型 + if (StringUtils.endsWithIgnoreCase(columnName, "name")) { + column.setQueryType(GenConstants.QUERY_LIKE); + } + // 状态字段设置单选框 + if (StringUtils.endsWithIgnoreCase(columnName, "status")) { + column.setHtmlType(GenConstants.HTML_RADIO); + } + // 类型&性别字段设置下拉框 + else if (StringUtils.endsWithIgnoreCase(columnName, "type") + || StringUtils.endsWithIgnoreCase(columnName, "sex")) { + column.setHtmlType(GenConstants.HTML_SELECT); + } + // 图片字段设置图片上传控件 + else if (StringUtils.endsWithIgnoreCase(columnName, "image")) { + column.setHtmlType(GenConstants.HTML_IMAGE_UPLOAD); + } + // 文件字段设置文件上传控件 + else if (StringUtils.endsWithIgnoreCase(columnName, "file")) { + column.setHtmlType(GenConstants.HTML_FILE_UPLOAD); + } + // 内容字段设置富文本控件 + else if (StringUtils.endsWithIgnoreCase(columnName, "content")) { + column.setHtmlType(GenConstants.HTML_EDITOR); + } + } + + /** + * 校验数组是否包含指定值 + * + * @param arr 数组 + * @param targetValue 值 + * + * @return 是否包含 + */ + public static boolean arraysContains (String[] arr, String targetValue) { + return Arrays.asList(arr).contains(targetValue); + } + + /** + * 获取模块名 + * + * @param packageName 包名 + * + * @return 模块名 + */ + public static String getModuleName (String packageName) { + int lastIndex = packageName.lastIndexOf("."); + int nameLength = packageName.length(); + return StringUtils.substring(packageName, lastIndex + 1, nameLength); + } + + /** + * 获取业务名 + * + * @param tableName 表名 + * + * @return 业务名 + */ + public static String getBusinessName (String tableName) { + int lastIndex = tableName.lastIndexOf("_"); + int nameLength = tableName.length(); + return StringUtils.substring(tableName, lastIndex + 1, nameLength); + } + + /** + * 表名转换成Java类名 + * + * @param tableName 表名称 + * + * @return 类名 + */ + public static String convertClassName (String tableName) { + boolean autoRemovePre = GenConfig.getAutoRemovePre(); + String tablePrefix = GenConfig.getTablePrefix(); + if (autoRemovePre && StringUtils.isNotEmpty(tablePrefix)) { + String[] searchList = StringUtils.split(tablePrefix, ","); + tableName = replaceFirst(tableName, searchList); + } + return StringUtils.convertToCamelCase(tableName); + } + + /** + * 批量替换前缀 + * + * @param replacementm 替换值 + * @param searchList 替换列表 + * + * @return + */ + public static String replaceFirst (String replacementm, String[] searchList) { + String text = replacementm; + for (String searchString : searchList) { + if (replacementm.startsWith(searchString)) { + text = replacementm.replaceFirst(searchString, ""); + break; + } + } + return text; + } + + /** + * 关键字替换 + * + * @param text 需要被替换的名字 + * + * @return 替换后的名字 + */ + public static String replaceText (String text) { + return RegExUtils.replaceAll(text, "(?:表|若依)", ""); + } + + /** + * 获取数据库类型字段 + * + * @param columnType 列类型 + * + * @return 截取后的列类型 + */ + public static String getDbType (String columnType) { + if (StringUtils.indexOf(columnType, "(") > 0) { + return StringUtils.substringBefore(columnType, "("); + } else { + return columnType; + } + } + + /** + * 获取字段长度 + * + * @param columnType 列类型 + * + * @return 截取后的列类型 + */ + public static Integer getColumnLength (String columnType) { + if (StringUtils.indexOf(columnType, "(") > 0) { + String length = StringUtils.substringBetween(columnType, "(", ")"); + return Integer.valueOf(length); + } else { + return 0; + } + } +} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/util/VelocityInitializer.java b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/util/VelocityInitializer.java new file mode 100644 index 0000000..cc171b4 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/util/VelocityInitializer.java @@ -0,0 +1,30 @@ +package com.muyu.gen.util; + +import com.muyu.common.core.constant.Constants; +import org.apache.velocity.app.Velocity; + +import java.util.Properties; + +/** + * VelocityEngine工厂 + * + * @author muyu + */ +public class VelocityInitializer { + /** + * 初始化vm方法 + */ + public static void initVelocity () { + Properties p = new Properties(); + try { + // 加载classpath目录下的vm文件 + p.setProperty("resource.loader.file.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); + // 定义字符集 + p.setProperty(Velocity.INPUT_ENCODING, Constants.UTF8); + // 初始化Velocity引擎,指定配置Properties + Velocity.init(p); + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/util/VelocityUtils.java b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/util/VelocityUtils.java new file mode 100644 index 0000000..9305ff7 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/java/com/muyu/gen/util/VelocityUtils.java @@ -0,0 +1,357 @@ +package com.muyu.gen.util; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.muyu.common.core.constant.GenConstants; +import com.muyu.common.core.utils.DateUtils; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.gen.domain.GenTable; +import com.muyu.gen.domain.GenTableColumn; +import org.apache.velocity.VelocityContext; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + * 模板工具类 + * + * @author muyu + */ +public class VelocityUtils { + /** + * 项目空间路径 + */ + private static final String PROJECT_PATH = "main/java"; + + /** + * mybatis空间路径 + */ + private static final String MYBATIS_PATH = "main/resources/mapper"; + + /** + * 默认上级菜单,系统工具 + */ + private static final String DEFAULT_PARENT_MENU_ID = "3"; + + /** + * 设置模板变量信息 + * + * @return 模板列表 + */ + public static VelocityContext prepareContext (GenTable genTable) { + String moduleName = genTable.getModuleName(); + String businessName = genTable.getBusinessName(); + String packageName = genTable.getPackageName(); + String tplCategory = genTable.getTplCategory(); + String functionName = genTable.getFunctionName(); + + VelocityContext velocityContext = new VelocityContext(); + velocityContext.put("tplCategory", genTable.getTplCategory()); + velocityContext.put("tableName", genTable.getTableName()); + velocityContext.put("functionName", StringUtils.isNotEmpty(functionName) ? functionName : "【请填写功能名称】"); + velocityContext.put("ClassName", genTable.getClassName()); + velocityContext.put("className", StringUtils.uncapitalize(genTable.getClassName())); + velocityContext.put("moduleName", genTable.getModuleName()); + velocityContext.put("BusinessName", StringUtils.capitalize(genTable.getBusinessName())); + velocityContext.put("businessName", genTable.getBusinessName()); + velocityContext.put("basePackage", getPackagePrefix(packageName)); + velocityContext.put("packageName", packageName); + velocityContext.put("author", genTable.getFunctionAuthor()); + velocityContext.put("datetime", DateUtils.getDate()); + velocityContext.put("pkColumn", genTable.getPkColumn()); + velocityContext.put("importList", getImportList(genTable)); + velocityContext.put("permissionPrefix", getPermissionPrefix(moduleName, businessName)); + velocityContext.put("columns", genTable.getColumns()); + velocityContext.put("table", genTable); + velocityContext.put("dicts", getDicts(genTable)); + setMenuVelocityContext(velocityContext, genTable); + if (GenConstants.TPL_TREE.equals(tplCategory)) { + setTreeVelocityContext(velocityContext, genTable); + } + if (GenConstants.TPL_SUB.equals(tplCategory)) { + setSubVelocityContext(velocityContext, genTable); + } + return velocityContext; + } + + public static void setMenuVelocityContext (VelocityContext context, GenTable genTable) { + String options = genTable.getOptions(); + JSONObject paramsObj = JSON.parseObject(options); + String parentMenuId = getParentMenuId(paramsObj); + context.put("parentMenuId", parentMenuId); + } + + public static void setTreeVelocityContext (VelocityContext context, GenTable genTable) { + String options = genTable.getOptions(); + JSONObject paramsObj = JSON.parseObject(options); + String treeCode = getTreecode(paramsObj); + String treeParentCode = getTreeParentCode(paramsObj); + String treeName = getTreeName(paramsObj); + + context.put("treeCode", treeCode); + context.put("treeParentCode", treeParentCode); + context.put("treeName", treeName); + context.put("expandColumn", getExpandColumn(genTable)); + if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) { + context.put("tree_parent_code", paramsObj.getString(GenConstants.TREE_PARENT_CODE)); + } + if (paramsObj.containsKey(GenConstants.TREE_NAME)) { + context.put("tree_name", paramsObj.getString(GenConstants.TREE_NAME)); + } + } + + public static void setSubVelocityContext (VelocityContext context, GenTable genTable) { + GenTable subTable = genTable.getSubTable(); + String subTableName = genTable.getSubTableName(); + String subTableFkName = genTable.getSubTableFkName(); + String subClassName = genTable.getSubTable().getClassName(); + String subTableFkClassName = StringUtils.convertToCamelCase(subTableFkName); + + context.put("subTable", subTable); + context.put("subTableName", subTableName); + context.put("subTableFkName", subTableFkName); + context.put("subTableFkClassName", subTableFkClassName); + context.put("subTableFkclassName", StringUtils.uncapitalize(subTableFkClassName)); + context.put("subClassName", subClassName); + context.put("subclassName", StringUtils.uncapitalize(subClassName)); + context.put("subImportList", getImportList(genTable.getSubTable())); + } + + /** + * 获取模板信息 + * + * @return 模板列表 + */ + public static List getTemplateList (String tplCategory) { + List templates = new ArrayList(); + templates.add("vm/java/domain.java.vm"); + templates.add("vm/java/mapper.java.vm"); + templates.add("vm/java/service.java.vm"); + templates.add("vm/java/serviceImpl.java.vm"); + templates.add("vm/java/controller.java.vm"); + templates.add("vm/xml/mapper.xml.vm"); + templates.add("vm/sql/sql.vm"); + templates.add("vm/js/api.js.vm"); + if (GenConstants.TPL_CRUD.equals(tplCategory)) { + templates.add("vm/vue/index.vue.vm"); + } else if (GenConstants.TPL_TREE.equals(tplCategory)) { + templates.add("vm/vue/index-tree.vue.vm"); + } else if (GenConstants.TPL_SUB.equals(tplCategory)) { + templates.add("vm/vue/index.vue.vm"); + templates.add("vm/java/sub-domain.java.vm"); + } + return templates; + } + + /** + * 获取文件名 + */ + public static String getFileName (String template, GenTable genTable) { + // 文件名称 + String fileName = ""; + // 包路径 + String packageName = genTable.getPackageName(); + // 模块名 + String moduleName = genTable.getModuleName(); + // 大写类名 + String className = genTable.getClassName(); + // 业务名称 + String businessName = genTable.getBusinessName(); + + String javaPath = PROJECT_PATH + "/" + StringUtils.replace(packageName, ".", "/"); + String mybatisPath = MYBATIS_PATH + "/" + moduleName; + String vuePath = "vue"; + + if (template.contains("domain.java.vm")) { + fileName = StringUtils.format("{}/domain/{}.java", javaPath, className); + } + if (template.contains("sub-domain.java.vm") && StringUtils.equals(GenConstants.TPL_SUB, genTable.getTplCategory())) { + fileName = StringUtils.format("{}/domain/{}.java", javaPath, genTable.getSubTable().getClassName()); + } else if (template.contains("mapper.java.vm")) { + fileName = StringUtils.format("{}/mapper/{}Mapper.java", javaPath, className); + } else if (template.contains("service.java.vm")) { + fileName = StringUtils.format("{}/service/I{}Service.java", javaPath, className); + } else if (template.contains("serviceImpl.java.vm")) { + fileName = StringUtils.format("{}/service/impl/{}ServiceImpl.java", javaPath, className); + } else if (template.contains("controller.java.vm")) { + fileName = StringUtils.format("{}/controller/{}Controller.java", javaPath, className); + } else if (template.contains("mapper.xml.vm")) { + fileName = StringUtils.format("{}/{}Mapper.xml", mybatisPath, className); + } else if (template.contains("sql.vm")) { + fileName = businessName + "Menu.sql"; + } else if (template.contains("api.js.vm")) { + fileName = StringUtils.format("{}/api/{}/{}.js", vuePath, moduleName, businessName); + } else if (template.contains("index.vue.vm")) { + fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName); + } else if (template.contains("index-tree.vue.vm")) { + fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName); + } + return fileName; + } + + /** + * 获取包前缀 + * + * @param packageName 包名称 + * + * @return 包前缀名称 + */ + public static String getPackagePrefix (String packageName) { + int lastIndex = packageName.lastIndexOf("."); + return StringUtils.substring(packageName, 0, lastIndex); + } + + /** + * 根据列类型获取导入包 + * + * @param genTable 业务表对象 + * + * @return 返回需要导入的包列表 + */ + public static HashSet getImportList (GenTable genTable) { + List columns = genTable.getColumns(); + GenTable subGenTable = genTable.getSubTable(); + HashSet importList = new HashSet(); + if (StringUtils.isNotNull(subGenTable)) { + importList.add("java.util.List"); + } + for (GenTableColumn column : columns) { + if (!column.isSuperColumn() && GenConstants.TYPE_DATE.equals(column.getJavaType())) { + importList.add("java.util.Date"); + importList.add("com.fasterxml.jackson.annotation.JsonFormat"); + } else if (!column.isSuperColumn() && GenConstants.TYPE_BIGDECIMAL.equals(column.getJavaType())) { + importList.add("java.math.BigDecimal"); + } + } + return importList; + } + + /** + * 根据列类型获取字典组 + * + * @param genTable 业务表对象 + * + * @return 返回字典组 + */ + public static String getDicts (GenTable genTable) { + List columns = genTable.getColumns(); + Set dicts = new HashSet(); + addDicts(dicts, columns); + if (StringUtils.isNotNull(genTable.getSubTable())) { + List subColumns = genTable.getSubTable().getColumns(); + addDicts(dicts, subColumns); + } + return StringUtils.join(dicts, ", "); + } + + /** + * 添加字典列表 + * + * @param dicts 字典列表 + * @param columns 列集合 + */ + public static void addDicts (Set dicts, List columns) { + for (GenTableColumn column : columns) { + if (!column.isSuperColumn() && StringUtils.isNotEmpty(column.getDictType()) && StringUtils.equalsAny( + column.getHtmlType(), + new String[]{GenConstants.HTML_SELECT, GenConstants.HTML_RADIO, GenConstants.HTML_CHECKBOX})) { + dicts.add("'" + column.getDictType() + "'"); + } + } + } + + /** + * 获取权限前缀 + * + * @param moduleName 模块名称 + * @param businessName 业务名称 + * + * @return 返回权限前缀 + */ + public static String getPermissionPrefix (String moduleName, String businessName) { + return StringUtils.format("{}:{}", moduleName, businessName); + } + + /** + * 获取上级菜单ID字段 + * + * @param paramsObj 生成其他选项 + * + * @return 上级菜单ID字段 + */ + public static String getParentMenuId (JSONObject paramsObj) { + if (StringUtils.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.PARENT_MENU_ID) + && StringUtils.isNotEmpty(paramsObj.getString(GenConstants.PARENT_MENU_ID))) { + return paramsObj.getString(GenConstants.PARENT_MENU_ID); + } + return DEFAULT_PARENT_MENU_ID; + } + + /** + * 获取树编码 + * + * @param paramsObj 生成其他选项 + * + * @return 树编码 + */ + public static String getTreecode (JSONObject paramsObj) { + if (paramsObj.containsKey(GenConstants.TREE_CODE)) { + return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_CODE)); + } + return StringUtils.EMPTY; + } + + /** + * 获取树父编码 + * + * @param paramsObj 生成其他选项 + * + * @return 树父编码 + */ + public static String getTreeParentCode (JSONObject paramsObj) { + if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) { + return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_PARENT_CODE)); + } + return StringUtils.EMPTY; + } + + /** + * 获取树名称 + * + * @param paramsObj 生成其他选项 + * + * @return 树名称 + */ + public static String getTreeName (JSONObject paramsObj) { + if (paramsObj.containsKey(GenConstants.TREE_NAME)) { + return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_NAME)); + } + return StringUtils.EMPTY; + } + + /** + * 获取需要在哪一列上面显示展开按钮 + * + * @param genTable 业务表对象 + * + * @return 展开按钮列序号 + */ + public static int getExpandColumn (GenTable genTable) { + String options = genTable.getOptions(); + JSONObject paramsObj = JSON.parseObject(options); + String treeName = paramsObj.getString(GenConstants.TREE_NAME); + int num = 0; + for (GenTableColumn column : genTable.getColumns()) { + if (column.isList()) { + num++; + String columnName = column.getColumnName(); + if (columnName.equals(treeName)) { + break; + } + } + } + return num; + } +} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/resources/banner.txt b/cloud-modules/cloud-modules-gen/src/src/main/resources/banner.txt new file mode 100644 index 0000000..0dd5eee --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/resources/banner.txt @@ -0,0 +1,2 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-gen/src/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..d0dbae7 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/resources/bootstrap.yml @@ -0,0 +1,51 @@ +# Tomcat +server: + port: 9307 + +# nacos线上地址 +nacos: + addr: 47.101.49.53:8848 + user-name: nacos + password: nacos + namespace: seven + +# Spring +spring: + main: + allow-bean-definition-overriding: true + application: + # 应用名称 + name: cloud-warn + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + config: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + # 系统共享配置 + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # 系统环境Config共享配置 + - application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # xxl-job 配置文件 + - application-xxl-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/resources/logback/dev.xml b/cloud-modules/cloud-modules-gen/src/src/main/resources/logback/dev.xml new file mode 100644 index 0000000..0b3964c --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/resources/logback/dev.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-gen/src/src/main/resources/logback/prod.xml b/cloud-modules/cloud-modules-gen/src/src/main/resources/logback/prod.xml new file mode 100644 index 0000000..4a9d602 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/resources/logback/prod.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-gen/src/src/main/resources/logback/test.xml b/cloud-modules/cloud-modules-gen/src/src/main/resources/logback/test.xml new file mode 100644 index 0000000..4a9d602 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/resources/logback/test.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-gen/src/src/main/resources/mapper/generator/GenTableColumnMapper.xml b/cloud-modules/cloud-modules-gen/src/src/main/resources/mapper/generator/GenTableColumnMapper.xml new file mode 100644 index 0000000..ea0616b --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/resources/mapper/generator/GenTableColumnMapper.xml @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select column_id, table_id, column_name, column_comment, column_type, java_type, java_field, is_pk, is_increment, is_required, is_insert, is_edit, is_list, is_query, query_type, html_type, dict_type, sort, create_by, create_time, update_by, update_time from gen_table_column + + + + + + + + insert into gen_table_column ( + table_id, + column_name, + column_comment, + column_type, + java_type, + java_field, + is_pk, + is_increment, + is_required, + is_insert, + is_edit, + is_list, + is_query, + query_type, + html_type, + dict_type, + sort, + create_by, + create_time + )values( + #{tableId}, + #{columnName}, + #{columnComment}, + #{columnType}, + #{javaType}, + #{javaField}, + #{isPk}, + #{isIncrement}, + #{isRequired}, + #{isInsert}, + #{isEdit}, + #{isList}, + #{isQuery}, + #{queryType}, + #{htmlType}, + #{dictType}, + #{sort}, + #{createBy}, + sysdate() + ) + + + + update gen_table_column + + column_comment = #{columnComment}, + java_type = #{javaType}, + java_field = #{javaField}, + is_insert = #{isInsert}, + is_edit = #{isEdit}, + is_list = #{isList}, + is_query = #{isQuery}, + is_required = #{isRequired}, + query_type = #{queryType}, + html_type = #{htmlType}, + dict_type = #{dictType}, + sort = #{sort}, + update_by = #{updateBy}, + update_time = sysdate() + + where column_id = #{columnId} + + + + delete from gen_table_column where table_id in ( + + #{tableId} + + ) + + + + + delete from gen_table_column where column_id in ( + + #{item.columnId} + + ) + + + diff --git a/cloud-modules/cloud-modules-gen/src/src/main/resources/mapper/generator/GenTableMapper.xml b/cloud-modules/cloud-modules-gen/src/src/main/resources/mapper/generator/GenTableMapper.xml new file mode 100644 index 0000000..ba9b0cf --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/resources/mapper/generator/GenTableMapper.xml @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select table_id, db_name, table_name, table_comment, sub_table_name, sub_table_fk_name, class_name, tpl_category, package_name, module_name, business_name, function_name, function_author, gen_type, gen_path, options, create_by, create_time, update_by, update_time, remark from gen_table + + + + + + table_schema in (#{dbName}) + + + table_schema = (select database()) + + + + + + + + + + + + + + + + + + + + + + + insert into gen_table ( + db_name, + table_name, + table_comment, + class_name, + tpl_category, + package_name, + module_name, + business_name, + function_name, + function_author, + gen_type, + gen_path, + remark, + create_by, + create_time + )values( + #{dbName}, + #{tableName}, + #{tableComment}, + #{className}, + #{tplCategory}, + #{packageName}, + #{moduleName}, + #{businessName}, + #{functionName}, + #{functionAuthor}, + #{genType}, + #{genPath}, + #{remark}, + #{createBy}, + sysdate() + ) + + + + update gen_table + + db_name = #{dbName}, + table_name = #{tableName}, + table_comment = #{tableComment}, + sub_table_name = #{subTableName}, + sub_table_fk_name = #{subTableFkName}, + class_name = #{className}, + function_author = #{functionAuthor}, + gen_type = #{genType}, + gen_path = #{genPath}, + tpl_category = #{tplCategory}, package_name = #{packageName}, + module_name = #{moduleName}, + business_name = #{businessName}, + function_name = #{functionName}, + options = #{options}, + update_by = #{updateBy}, + remark = #{remark}, + update_time = sysdate() + + where table_id = #{tableId} + + + + delete from gen_table where table_id in ( + + #{tableId} + + ) + + + diff --git a/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/controller.java.vm b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/controller.java.vm new file mode 100644 index 0000000..c62cc8b --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/controller.java.vm @@ -0,0 +1,123 @@ +package ${packageName}.controller; + +import java.util.Arrays; +import java.util.List; +import jakarta.servlet.http.HttpServletResponse; +import javax.annotation.Resource; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.muyu.common.security.annotation.RequiresPermissions; +import ${packageName}.domain.${ClassName}; +import ${packageName}.service.I${ClassName}Service; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.utils.poi.ExcelUtil; +import com.muyu.common.security.utils.SecurityUtils; +import org.springframework.validation.annotation.Validated; +#if($table.crud || $table.sub) +import com.muyu.common.core.web.page.TableDataInfo; +#elseif($table.tree) +#end + +/** + * ${functionName}Controller + * + * @author ${author} + * @date ${datetime} + */ +@RestController +@RequestMapping("/${businessName}") +public class ${ClassName}Controller extends BaseController +{ + @Resource + private I${ClassName}Service ${className}Service; + + /** + * 查询${functionName}列表 + */ + @RequiresPermissions("${permissionPrefix}:list") + @GetMapping("/list") +#if($table.crud || $table.sub) + public Result> list(${ClassName} ${className}) + { + startPage(); + List<${ClassName}> list = ${className}Service.select${ClassName}List(${className}); + return getDataTable(list); + } +#elseif($table.tree) + public Result<${ClassName}> list(${ClassName} ${className}) + { + List<${ClassName}> list = ${className}Service.select${ClassName}List(${className}); + return success(list); + } +#end + + /** + * 导出${functionName}列表 + */ + @RequiresPermissions("${permissionPrefix}:export") + @PostMapping("/export") + public void export(HttpServletResponse response, ${ClassName} ${className}) + { + List<${ClassName}> list = ${className}Service.select${ClassName}List(${className}); + ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}.class); + util.exportExcel(response, list, "${functionName}数据"); + } + + /** + * 获取${functionName}详细信息 + */ + @RequiresPermissions("${permissionPrefix}:query") + @GetMapping(value = "/{${pkColumn.javaField}}") + public Result> getInfo(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}) + { + return success(${className}Service.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField})); + } + + /** + * 新增${functionName} + */ + @RequiresPermissions("${permissionPrefix}:add") + @PostMapping + public Result add( + @Validated @RequestBody ${ClassName} ${className}) + { + if (${className}Service.checkIdUnique(${className})) { + return error("新增 ${functionName} '" + ${className} + "'失败,${functionName}已存在"); + } + ${className}.setCreateBy(SecurityUtils.getUsername()); + return toAjax(${className}Service.save(${className})); + } + + /** + * 修改${functionName} + */ + @RequiresPermissions("${permissionPrefix}:edit") + @PutMapping + public Result edit( + @Validated @RequestBody ${ClassName} ${className}) + { + if (!${className}Service.checkIdUnique(${className})) { + return error("修改 ${functionName} '" + ${className} + "'失败,${functionName}不存在"); + } + ${className}.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(${className}Service.updateById(${className})); + } + + /** + * 删除${functionName} + */ + @RequiresPermissions("${permissionPrefix}:remove") + @DeleteMapping("/{${pkColumn.javaField}s}") + public Result remove(@PathVariable("${pkColumn.javaField}s") ${pkColumn.javaType}[] ${pkColumn.javaField}s) + { + ${className}Service.removeBatchByIds(Arrays.asList(${pkColumn.javaField}s)); + return success(); + } +} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/domain.java.vm b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/domain.java.vm new file mode 100644 index 0000000..4c89918 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/domain.java.vm @@ -0,0 +1,103 @@ +package ${packageName}.domain; + +#foreach ($import in $importList) +import ${import}; +#end +import com.muyu.common.core.annotation.Excel; +#if($table.crud || $table.sub) +import com.muyu.common.core.web.domain.BaseEntity; +#elseif($table.tree) +import com.muyu.common.core.web.domain.TreeEntity; +#end +import lombok.*; +import lombok.experimental.SuperBuilder; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; + +/** + * ${functionName}对象 ${tableName} + * + * @author ${author} + * @date ${datetime} + */ + +#if($table.crud || $table.sub) +#set($Entity="BaseEntity") +#elseif($table.tree) +#set($Entity="TreeEntity") +#end +@Data +@Setter +@Getter +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@TableName("${tableName}") +public class ${ClassName} extends ${Entity}{ + private static final long serialVersionUID = 1L; + +#foreach ($column in $columns) +#if(!$table.isSuperColumn($column.javaField)) + /** $column.columnComment */ +#if($column.list) +#set($parentheseIndex=$column.columnComment.indexOf("(")) +#if($parentheseIndex != -1) +#set($comment=$column.columnComment.substring(0, $parentheseIndex)) +#else +#set($comment=$column.columnComment) +#end +#if($parentheseIndex != -1) + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") +#elseif($column.javaType == 'Date') + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd") +#else + @Excel(name = "${comment}") +#end +#end + #if($column.javaField == $pkColumn.javaField) + @TableId( type = IdType.AUTO) + #end + private $column.javaType $column.javaField; + +#end +#end + +#if($table.sub) + /** $table.subTable.functionName信息 */ + private List<${subClassName}> ${subclassName}List; + +#end + +#if($table.sub) + public List<${subClassName}> get${subClassName}List() + { + return ${subclassName}List; + } + + public void set${subClassName}List(List<${subClassName}> ${subclassName}List) + { + this.${subclassName}List = ${subclassName}List; + } + +#end + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) +#foreach ($column in $columns) +#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) +#set($AttrName=$column.javaField) +#else +#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) +#end + .append("${column.javaField}", get${AttrName}()) +#end +#if($table.sub) + .append("${subclassName}List", get${subClassName}List()) +#end + .toString(); + } +} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/mapper.java.vm b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/mapper.java.vm new file mode 100644 index 0000000..e6f420b --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/mapper.java.vm @@ -0,0 +1,20 @@ +package ${packageName}.mapper; + +import java.util.List; +import ${packageName}.domain.${ClassName}; +#if($table.sub) +import ${packageName}.domain.${subClassName}; +#end +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * ${functionName}Mapper接口 + * + * @author ${author} + * @date ${datetime} + */ +@Mapper +public interface ${ClassName}Mapper extends BaseMapper<${ClassName}>{ + +} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/service.java.vm b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/service.java.vm new file mode 100644 index 0000000..1a01fae --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/service.java.vm @@ -0,0 +1,37 @@ +package ${packageName}.service; + +import java.util.List; +import ${packageName}.domain.${ClassName}; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * ${functionName}Service接口 + * + * @author ${author} + * @date ${datetime} + */ +public interface I${ClassName}Service extends IService<${ClassName}> { + /** + * 精确查询${functionName} + * + * @param ${pkColumn.javaField} ${functionName}主键 + * @return ${functionName} + */ + public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); + + /** + * 查询${functionName}列表 + * + * @param ${className} ${functionName} + * @return ${functionName}集合 + */ + public List<${ClassName}> select${ClassName}List(${ClassName} ${className}); + + /** + * 判断 ${functionName} id是否唯一 + * @param ${className} ${functionName} + * @return 结果 + */ + Boolean checkIdUnique(${ClassName} ${className}); + +} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/serviceImpl.java.vm b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/serviceImpl.java.vm new file mode 100644 index 0000000..38f1eca --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/serviceImpl.java.vm @@ -0,0 +1,115 @@ +package ${packageName}.service.impl; + +import java.util.List; +#foreach ($column in $columns) +#if($column.javaField == 'createTime' || $column.javaField == 'updateTime') +import com.muyu.common.core.utils.DateUtils; +#break +#end +#end +import org.springframework.stereotype.Service; +#if($table.sub) +import java.util.ArrayList; +import com.muyu.common.core.utils.StringUtils; +import org.springframework.transaction.annotation.Transactional; +import ${packageName}.domain.${subClassName}; +#end +import ${packageName}.mapper.${ClassName}Mapper; +import ${packageName}.domain.${ClassName}; +import ${packageName}.service.I${ClassName}Service; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.utils.StringUtils; +import org.springframework.util.Assert; + +/** + * ${functionName}Service业务层处理 + * + * @author ${author} + * @date ${datetime} + */ +@Service +public class ${ClassName}ServiceImpl + extends ServiceImpl<${ClassName}Mapper, ${ClassName}> + implements I${ClassName}Service { + + /** + * 精确查询${functionName} + * + * @param ${pkColumn.javaField} ${functionName}主键 + * @return ${functionName} + */ + @Override + public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) + { + LambdaQueryWrapper<${ClassName}> queryWrapper = new LambdaQueryWrapper<>(); + Assert.notNull(${pkColumn.javaField}, "${pkColumn.javaField}不可为空"); + queryWrapper.eq(${ClassName}::get${pkColumn.capJavaField}, ${pkColumn.javaField}); + return this.getOne(queryWrapper); + } + + + /** + * 查询${functionName}列表 + * + * @param ${className} ${functionName} + * @return ${functionName} + */ + @Override + public List<${ClassName}> select${ClassName}List(${ClassName} ${className}) + { + LambdaQueryWrapper<${ClassName}> queryWrapper = new LambdaQueryWrapper<>(); +#foreach($column in $columns) + #set($queryType=$column.queryType) + #set($javaField=$column.javaField) + #set($javaType=$column.javaType) + #set($columnName=$column.columnName) + #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) + #if($column.query) + #if($column.queryType == "EQ") + if (StringUtils.isNotEmpty(${className}.get${AttrName}())){ + queryWrapper.eq(${ClassName}::get${AttrName}, ${className}.get${AttrName}()); + } + #elseif($queryType == "NE") + if (StringUtils.isNotEmpty(${className}.get${AttrName}())){ + queryWrapper.ne(${ClassName}::get${AttrName}, ${className}.get${AttrName}()); + } + #elseif($queryType == "GT") + if (StringUtils.isNotEmpty(${className}.get${AttrName}())){ + queryWrapper.gt(${ClassName}::get${AttrName}, ${className}.get${AttrName}()); + } + #elseif($queryType == "GTE") + if (StringUtils.isNotEmpty(${className}.get${AttrName}())){ + queryWrapper.ge(${ClassName}::get${AttrName}, ${className}.get${AttrName}()); + } + #elseif($queryType == "LT") + if (StringUtils.isNotEmpty(${className}.get${AttrName}())){ + queryWrapper.lt(${ClassName}::get${AttrName}, ${className}.get${AttrName}()); + } + #elseif($queryType == "LTE") + if (StringUtils.isNotEmpty(${className}.get${AttrName}())){ + queryWrapper.le(${ClassName}::get${AttrName}, ${className}.get${AttrName}()); + } + #elseif($queryType == "LIKE") + if (StringUtils.isNotEmpty(${className}.get${AttrName}())){ + queryWrapper.like(${ClassName}::get${AttrName}, ${className}.get${AttrName}()); + } + #end + #end +#end + return this.list(queryWrapper); + } + + /** + * 唯一 判断 + * @param ${className} ${functionName} + * @return ${functionName} + */ + @Override + public Boolean checkIdUnique(${ClassName} ${className}) { + LambdaQueryWrapper<${ClassName}> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(${ClassName}::get${pkColumn.capJavaField}, ${className}.get${pkColumn.capJavaField}()); + return this.count(queryWrapper) > 0; + } + +} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/sub-domain.java.vm b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/sub-domain.java.vm new file mode 100644 index 0000000..61c6273 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/java/sub-domain.java.vm @@ -0,0 +1,78 @@ +package ${packageName}.domain; + +#foreach ($import in $subImportList) +import ${import}; +#end +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.web.domain.BaseEntity; + +/** + * ${subTable.functionName}对象 ${subTableName} + * + * @author ${author} + * @date ${datetime} + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class ${subClassName} extends BaseEntity { + private static final long serialVersionUID = 1L; + +#foreach ($column in $subTable.columns) +#if(!$table.isSuperColumn($column.javaField)) + /** $column.columnComment */ +#if($column.list) +#set($parentheseIndex=$column.columnComment.indexOf("(")) +#if($parentheseIndex != -1) +#set($comment=$column.columnComment.substring(0, $parentheseIndex)) +#else +#set($comment=$column.columnComment) +#end +#if($parentheseIndex != -1) + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") +#elseif($column.javaType == 'Date') + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd") +#else + @Excel(name = "${comment}") +#end +#end + private $column.javaType $column.javaField; + +#end +#end +#foreach ($column in $subTable.columns) +#if(!$table.isSuperColumn($column.javaField)) +#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) +#set($AttrName=$column.javaField) +#else +#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) +#end + public void set${AttrName}($column.javaType $column.javaField) + { + this.$column.javaField = $column.javaField; + } + + public $column.javaType get${AttrName}() + { + return $column.javaField; + } +#end +#end + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) +#foreach ($column in $subTable.columns) +#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) +#set($AttrName=$column.javaField) +#else +#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) +#end + .append("${column.javaField}", get${AttrName}()) +#end + .toString(); + } +} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/js/api.js.vm b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/js/api.js.vm new file mode 100644 index 0000000..9295524 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/js/api.js.vm @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询${functionName}列表 +export function list${BusinessName}(query) { + return request({ + url: '/${moduleName}/${businessName}/list', + method: 'get', + params: query + }) +} + +// 查询${functionName}详细 +export function get${BusinessName}(${pkColumn.javaField}) { + return request({ + url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField}, + method: 'get' + }) +} + +// 新增${functionName} +export function add${BusinessName}(data) { + return request({ + url: '/${moduleName}/${businessName}', + method: 'post', + data: data + }) +} + +// 修改${functionName} +export function update${BusinessName}(data) { + return request({ + url: '/${moduleName}/${businessName}', + method: 'put', + data: data + }) +} + +// 删除${functionName} +export function del${BusinessName}(${pkColumn.javaField}) { + return request({ + url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField}, + method: 'delete' + }) +} diff --git a/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/sql/sql.vm b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/sql/sql.vm new file mode 100644 index 0000000..0575583 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/sql/sql.vm @@ -0,0 +1,22 @@ +-- 菜单 SQL +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 'admin', sysdate(), '', null, '${functionName}菜单'); + +-- 按钮父菜单ID +SELECT @parentId := LAST_INSERT_ID(); + +-- 按钮 SQL +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('${functionName}查询', @parentId, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('${functionName}新增', @parentId, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('${functionName}修改', @parentId, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('${functionName}删除', @parentId, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('${functionName}导出', @parentId, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 'admin', sysdate(), '', null, ''); \ No newline at end of file diff --git a/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/vue/index-tree.vue.vm b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/vue/index-tree.vue.vm new file mode 100644 index 0000000..a4c64a0 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/vue/index-tree.vue.vm @@ -0,0 +1,505 @@ + + + diff --git a/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/vue/index.vue.vm b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/vue/index.vue.vm new file mode 100644 index 0000000..cf9b3b0 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/vue/index.vue.vm @@ -0,0 +1,602 @@ + + + diff --git a/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/vue/v3/index-tree.vue.vm b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/vue/v3/index-tree.vue.vm new file mode 100644 index 0000000..7bbd2fc --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/vue/v3/index-tree.vue.vm @@ -0,0 +1,474 @@ + + + diff --git a/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/vue/v3/index.vue.vm b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/vue/v3/index.vue.vm new file mode 100644 index 0000000..8b25665 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/vue/v3/index.vue.vm @@ -0,0 +1,590 @@ + + + diff --git a/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/vue/v3/readme.txt b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/vue/v3/readme.txt new file mode 100644 index 0000000..9f60284 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/vue/v3/readme.txt @@ -0,0 +1 @@ +���ʹ�õ���cloud-Cloud-Vue3ǰ�ˣ���ô��Ҫ����һ�´�Ŀ¼��ģ��index.vue.vm��index-tree.vue.vm�ļ����ϼ�vueĿ¼�� diff --git a/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/xml/mapper.xml.vm b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/xml/mapper.xml.vm new file mode 100644 index 0000000..0ceb3d8 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/src/main/resources/vm/xml/mapper.xml.vm @@ -0,0 +1,135 @@ + + + + + +#foreach ($column in $columns) + +#end + +#if($table.sub) + + + + + + +#foreach ($column in $subTable.columns) + +#end + +#end + + + select#foreach($column in $columns) $column.columnName#if($foreach.count != $columns.size()),#end#end from ${tableName} + + + + + + + + insert into ${tableName} + +#foreach($column in $columns) +#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment) + $column.columnName, +#end +#end + + +#foreach($column in $columns) +#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment) + #{$column.javaField}, +#end +#end + + + + + update ${tableName} + +#foreach($column in $columns) +#if($column.columnName != $pkColumn.columnName) + $column.columnName = #{$column.javaField}, +#end +#end + + where ${pkColumn.columnName} = #{${pkColumn.javaField}} + + + + delete from ${tableName} where ${pkColumn.columnName} = #{${pkColumn.javaField}} + + + + delete from ${tableName} where ${pkColumn.columnName} in + + #{${pkColumn.javaField}} + + +#if($table.sub) + + + delete from ${subTableName} where ${subTableFkName} in + + #{${subTableFkclassName}} + + + + + delete from ${subTableName} where ${subTableFkName} = #{${subTableFkclassName}} + + + + insert into ${subTableName}(#foreach($column in $subTable.columns) $column.columnName#if($foreach.count != $subTable.columns.size()),#end#end) values + + (#foreach($column in $subTable.columns) #{item.$column.javaField}#if($foreach.count != $subTable.columns.size()),#end#end) + + +#end + \ No newline at end of file diff --git a/cloud-modules/cloud-modules-processing/pom.xml b/cloud-modules/cloud-modules-processing/pom.xml new file mode 100644 index 0000000..f4ed06a --- /dev/null +++ b/cloud-modules/cloud-modules-processing/pom.xml @@ -0,0 +1,122 @@ + + + 4.0.0 + + com.muyu + cloud-modules + 3.6.3 + + + cloud-modules-processing + + + cloud-modules-processing数据处理 + + + + 17 + 17 + UTF-8 + + + + + + + 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.boot + spring-boot-starter-actuator + + + + + com.mysql + mysql-connector-j + + + + + com.muyu + cloud-common-datasource + + + + + com.muyu + cloud-common-datascope + + + + + com.muyu + cloud-common-log + + + + + com.muyu + cloud-common-api-doc + + + + + com.muyu + cloud-common-xxl + + + + com.muyu + cloud-common-rabbit + + + + org.apache.iotdb + iotdb-session + 1.3.2 + + + + + com.muyu + cloud-common-kafka + + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + + diff --git a/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/VehicleProcessingApplication.java b/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/VehicleProcessingApplication.java new file mode 100644 index 0000000..3b32ddb --- /dev/null +++ b/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/VehicleProcessingApplication.java @@ -0,0 +1,25 @@ +package com.muyu.processing; + +import com.muyu.common.security.annotation.EnableCustomConfig; +import com.muyu.common.security.annotation.EnableMyFeignClients; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * 数据处理 + * @Author:杨鹏 + * @Package:com.muyu.processing + * @Project:car-cloud-server + * @name:VehicleProcessingApplication + * @Date:2024/9/28 16:48 + */ +@EnableCustomConfig +@EnableMyFeignClients +@SpringBootApplication +public class VehicleProcessingApplication { + + public static void main(String[] args) { + SpringApplication.run(VehicleProcessingApplication.class, args); + } + +} diff --git a/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/abstraction/EventProcessor.java b/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/abstraction/EventProcessor.java new file mode 100644 index 0000000..f404fbc --- /dev/null +++ b/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/abstraction/EventProcessor.java @@ -0,0 +1,26 @@ +package com.muyu.processing.abstraction; + +import com.alibaba.fastjson.JSONObject; +import com.muyu.processing.interfaces.EventInterface; + +/** +* 事件处理抽象类 + * @Author:杨鹏 + * @Package:com.muyu.processing.abstraction + * @Project:car-cloud-server + * @name:EventProcessor + * @Date:2024/9/28 20:58 + */ +public abstract class EventProcessor implements EventInterface { + + private EventProcessor eventProcessor; + + public EventProcessor setEventProcessor(EventProcessor eventProcessor){ + this.eventProcessor = eventProcessor; + return this; + } + + @Override + public abstract void handle(JSONObject jsonObject); + +} diff --git a/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/consumer/KafkaConsumerService.java b/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/consumer/KafkaConsumerService.java new file mode 100644 index 0000000..6d92523 --- /dev/null +++ b/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/consumer/KafkaConsumerService.java @@ -0,0 +1,64 @@ +package com.muyu.processing.consumer; + +import cn.hutool.core.thread.ThreadUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.nacos.shaded.com.google.common.collect.Lists; +import com.muyu.common.core.constant.KafkaConstants; +import com.muyu.processing.interfaces.EventInterface; +import lombok.extern.log4j.Log4j2; +import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.apache.kafka.clients.consumer.KafkaConsumer; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.time.Duration; +import java.util.Collection; + +/** + * @Author:杨鹏 + * @Package:com.muyu.processing.consumer + * @Project:car-cloud-server + * @name:KafkaConsumerService + * @Date:2024/9/28 22:08 + */ +@Log4j2 +@Component +public class KafkaConsumerService implements InitializingBean { + + @Resource + private KafkaConsumer kafkaConsumer; + +// @Resource +// private EventInterface eventInterface; + + @Override + public void afterPropertiesSet() throws Exception { + + Thread thread = new Thread(() -> { + log.info("启动线程监听Topic: {}", "zeshi"); + ThreadUtil.sleep(1000); + Collection topics = Lists.newArrayList("zeshi"); + kafkaConsumer.subscribe(topics); + while (true) { + ConsumerRecords consumerRecords = kafkaConsumer.poll(Duration.ofMillis(1000)); + for (ConsumerRecord consumerRecord : consumerRecords) { + //从ConsumerRecord中获取消费数据 + String originalMsg = (String) consumerRecord.value(); + log.info("从Kafka中消费的原始数据: " + originalMsg); + //把消费数据转换为JSON对象 + JSONObject jsonObject = JSON.parseObject(originalMsg); + log.info("消费数据转换为JSON对象: " + jsonObject); + log.info("消费数据转换为JSON对象: " + jsonObject.toString()); +// eventInterface.handle(jsonObject); + + } + } + }); + thread.start(); + + } +} diff --git a/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/controller/TestKafka.java b/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/controller/TestKafka.java new file mode 100644 index 0000000..732eb0f --- /dev/null +++ b/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/controller/TestKafka.java @@ -0,0 +1,38 @@ +package com.muyu.processing.controller; + +import com.alibaba.fastjson.JSONObject; +import com.muyu.common.core.constant.KafkaConstants; +import com.muyu.common.kafka.config.KafkaProducerConfig; +import lombok.extern.log4j.Log4j2; +import org.apache.kafka.clients.producer.KafkaProducer; +import org.apache.kafka.clients.producer.ProducerRecord; +import org.apache.kafka.common.protocol.types.Field; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @Author:杨鹏 + * @Package:com.muyu.processing.controller + * @Project:car-cloud-server + * @name:TestKafka + * @Date:2024/9/28 21:17 + */ +@Log4j2 +@RestController +@RequestMapping("/kafka") +public class TestKafka { + + + @Resource + private KafkaProducer kafkaProducer; + + @GetMapping("/send") + public void sendMsg(){ + ProducerRecord producerRecord = new ProducerRecord<>("zeshi", "你好啊"); + kafkaProducer.send(producerRecord); + } + +} diff --git a/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/interfaces/EventInterface.java b/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/interfaces/EventInterface.java new file mode 100644 index 0000000..7301387 --- /dev/null +++ b/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/interfaces/EventInterface.java @@ -0,0 +1,17 @@ +package com.muyu.processing.interfaces; + +import com.alibaba.fastjson.JSONObject; + +/** + * 事件处理接口 + * @Author:杨鹏 + * @Package:com.muyu.processing.interfaces + * @Project:car-cloud-server + * @name:EventInterface + * @Date:2024/9/28 20:57 + */ +public interface EventInterface { + + public void handle(JSONObject jsonObject); + +} diff --git a/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/utils/IotDb.java b/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/utils/IotDb.java new file mode 100644 index 0000000..a36e2cb --- /dev/null +++ b/cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/utils/IotDb.java @@ -0,0 +1,73 @@ +package com.muyu.processing.utils; + + +import com.muyu.common.kafka.config.KafkaProducerConfig; +import org.apache.iotdb.isession.SessionDataSet; +import org.apache.iotdb.isession.util.Version; +import org.apache.iotdb.rpc.IoTDBConnectionException; +import org.apache.iotdb.rpc.StatementExecutionException; +import org.apache.iotdb.session.Session; +import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author:杨鹏 + * @Package:com.muyu.processing.utils + * @Project:car-cloud-server + * @name:lotdb + * @Date:2024/9/28 19:12 + */ +public class IotDb { + + public static void main(String[] args) throws IoTDBConnectionException , StatementExecutionException { + System.out.println("开始测试IoTDB数据库连接"); + + // 初始化与连接 + Session session = new Session.Builder() + .host("47.116.173.119") + .port(6667) + .username("root") + .password("root") + .version(Version.V_1_0) + .build(); + + // 开启Session RPC不压缩 + session.open(false); + + // 写入数据 + ArrayList values = new ArrayList<>(); + values.add(88); + insertRecord(session, values); + + //查询数据 + queryRecord(session); + + // 关闭连接 + session.close(); + + } + + private static void insertRecord(Session session, List value) throws IoTDBConnectionException, StatementExecutionException { + ArrayList measurements = new ArrayList<>(); + ArrayList types = new ArrayList<>(); + measurements.add("status"); + types.add(TSDataType.INT32); + session.insertRecord("root.four.test", System.currentTimeMillis(), measurements, types, value); + System.out.println("————————————————写入数据成功————————————————"); + } + + private static void queryRecord(Session session) throws IoTDBConnectionException, StatementExecutionException { + System.out.println("————————————————查询数据开始————————————————"); + try (SessionDataSet dataSet = session.executeQueryStatement("select * from root.four.test")) { + System.out.println(dataSet.getColumnNames()); + dataSet.setFetchSize(1024); + while (dataSet.hasNext()){ + System.out.println(dataSet.next()); + } + } + System.out.println("————————————————查询数据结束————————————————"); + } + +} diff --git a/cloud-modules/cloud-modules-processing/src/main/resources/banner.txt b/cloud-modules/cloud-modules-processing/src/main/resources/banner.txt new file mode 100644 index 0000000..0dd5eee --- /dev/null +++ b/cloud-modules/cloud-modules-processing/src/main/resources/banner.txt @@ -0,0 +1,2 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} diff --git a/cloud-modules/cloud-modules-processing/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-processing/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..6937759 --- /dev/null +++ b/cloud-modules/cloud-modules-processing/src/main/resources/bootstrap.yml @@ -0,0 +1,133 @@ +# Tomcat +server: + port: 9717 + +# nacos线上地址 +nacos: + addr: 47.101.49.53:8848 + user-name: nacos + password: nacos + namespace: seven +# SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all +# Spring +spring: + amqp: + deserialization: + trust: + all: true + main: + allow-bean-definition-overriding: true + application: + # 应用名称 + name: cloud-processing + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + config: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + # 系统共享配置 + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # 系统环境Config共享配置 + - application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # xxl-job 配置文件 + - application-xxl-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # rabbit 配置文件 + - application-rabbit-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + kafka: + producer: + # Kafka服务器 + bootstrap-servers: 111.231.50.146: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: 111.231.50.146: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-commit-interval: 5000 + 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 +logging: + level: + com.muyu.system.mapper: DEBUG diff --git a/cloud-modules/cloud-modules-processing/src/main/resources/logback/dev.xml b/cloud-modules/cloud-modules-processing/src/main/resources/logback/dev.xml new file mode 100644 index 0000000..51b4446 --- /dev/null +++ b/cloud-modules/cloud-modules-processing/src/main/resources/logback/dev.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-processing/src/main/resources/logback/prod.xml b/cloud-modules/cloud-modules-processing/src/main/resources/logback/prod.xml new file mode 100644 index 0000000..42bd602 --- /dev/null +++ b/cloud-modules/cloud-modules-processing/src/main/resources/logback/prod.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + ${log.sky.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-processing/src/main/resources/logback/test.xml b/cloud-modules/cloud-modules-processing/src/main/resources/logback/test.xml new file mode 100644 index 0000000..42bd602 --- /dev/null +++ b/cloud-modules/cloud-modules-processing/src/main/resources/logback/test.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + ${log.sky.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-protocol-parsing/pom.xml b/cloud-modules/cloud-modules-protocol-parsing/pom.xml new file mode 100644 index 0000000..fa6b4ec --- /dev/null +++ b/cloud-modules/cloud-modules-protocol-parsing/pom.xml @@ -0,0 +1,137 @@ + + + 4.0.0 + + com.muyu + cloud-modules + 3.6.3 + + + cloud-modules-protocol-parsing + + + 17 + 17 + UTF-8 + + + + cloud-modules-protocol-parsing协议解析模块 + + + + + + + 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.boot + spring-boot-starter-actuator + + + + + com.mysql + mysql-connector-j + + + + + com.muyu + cloud-common-datasource + + + + + com.muyu + cloud-common-datascope + + + + + com.muyu + cloud-common-log + + + + + com.muyu + cloud-common-api-doc + + + + + com.muyu + cloud-common-xxl + + + + com.muyu + cloud-common-rabbit + + + + com.muyu + cloud-modules-enterprise-common + 3.6.3 + + + + com.muyu + cloud-common-core + + + + org.eclipse.paho + org.eclipse.paho.client.mqttv3 + 1.2.2 + + + + + org.apache.kafka + kafka-clients + + + + com.muyu + cloud-common-kafka + + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + diff --git a/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/ProtocolParsingApplication.java b/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/ProtocolParsingApplication.java new file mode 100644 index 0000000..bb5c2be --- /dev/null +++ b/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/ProtocolParsingApplication.java @@ -0,0 +1,23 @@ +package com.muyu.cloud.protocol.parsing; + +import com.muyu.common.security.annotation.EnableCustomConfig; +import com.muyu.common.security.annotation.EnableMyFeignClients; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * @Author: LiDongJia + * @Package: com.muyu.cloud.protocol.parsing + * @Project: 2112-car-cloud-server + * @name: ProtocolParsingApplication + * @Date: 2024/9/28 11:54 + * @Description: 协议解析启动类 + */ +@EnableCustomConfig +@EnableMyFeignClients +@SpringBootApplication +public class ProtocolParsingApplication { + public static void main(String[] args) { + SpringApplication.run(ProtocolParsingApplication.class, args); + } +} diff --git a/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/feign/RemoteServiceClient.java b/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/feign/RemoteServiceClient.java new file mode 100644 index 0000000..1f12ca7 --- /dev/null +++ b/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/feign/RemoteServiceClient.java @@ -0,0 +1,40 @@ +package com.muyu.cloud.protocol.parsing.feign; + +import com.muyu.common.core.domain.Result; +import com.muyu.domain.resp.MessageValueListResp; +import io.swagger.v3.oas.annotations.Operation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +import java.util.List; + +/** + * @Author: LiDongJia + * @Package: com.muyu.cloud.protocol.parsing.feign + * @Project: 2112-car-cloud-server + * @name: RemoteServiceClient + * @Date: 2024/9/28 14:49 + * @Description: 远程调用接口 + */ +@FeignClient(name = "cloud-car") +public interface RemoteServiceClient { + + /** + * 通过车辆vin码查询模板id + * @param vehicleVin + * @return + */ + @GetMapping("/vehicleManage/findByVehicleVin/{vehicleVin}") + @Operation(description = "通过车辆vin码查询模板id") + public Result findByVehicleVin(@PathVariable("vehicleVin") String vehicleVin); + + /** + * 根据报文模版id查询报文数据 + * @param templateId + * @return + */ + @GetMapping("/messageValue/findByTemplateId/{templateId}") + @Operation(summary = "根据报文模版id查询报文数据", description = "根据报文模版id查询报文数据") + public Result> findByTemplateId(@PathVariable("templateId") Long templateId); +} diff --git a/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/feign/factory/RemoteServiceClientFactory.java b/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/feign/factory/RemoteServiceClientFactory.java new file mode 100644 index 0000000..3d2af79 --- /dev/null +++ b/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/feign/factory/RemoteServiceClientFactory.java @@ -0,0 +1,40 @@ +package com.muyu.cloud.protocol.parsing.feign.factory; + +import com.muyu.cloud.protocol.parsing.feign.RemoteServiceClient; +import com.muyu.common.core.domain.Result; +import com.muyu.domain.resp.MessageValueListResp; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; + +import java.util.List; + +/** + * 报文模版对象服务降级处理 + * @Author:李庆帅 + * @Package:com.muyu.analysis.parsing.remote.factory + * @Project:cloud-server + * @name:RemoteServiceClientFactory + * @Date:2024/9/28 21:16 + */ +public class RemoteServiceClientFactory implements FallbackFactory +{ + private static final Logger log = LoggerFactory.getLogger(com.muyu.cloud.protocol.parsing.feign.factory.RemoteServiceClientFactory.class); + + @Override + public RemoteServiceClient create(Throwable throwable) { + log.error("报文模版传参调用失败:{}", throwable.getMessage()); + return new RemoteServiceClient() { + + @Override + public Result findByVehicleVin(String vehicleVin) { + return Result.success(Long.valueOf(vehicleVin)); + } + + @Override + public Result> findByTemplateId(Long templateId) { + return null; + } + }; + } +} diff --git a/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingTest.java b/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingTest.java new file mode 100644 index 0000000..9d9e31b --- /dev/null +++ b/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingTest.java @@ -0,0 +1,155 @@ +package com.muyu.cloud.protocol.parsing.test; + +import cn.hutool.json.JSONObject; +import com.alibaba.fastjson.JSON; +import com.muyu.cloud.protocol.parsing.feign.RemoteServiceClient; +import com.muyu.common.core.domain.Result; +import com.muyu.domain.resp.MessageValueListResp; +import lombok.extern.log4j.Log4j2; +import org.apache.kafka.clients.producer.KafkaProducer; +import org.apache.kafka.clients.producer.ProducerRecord; +import org.eclipse.paho.client.mqttv3.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author: LiDongJia + * @Package: com.muyu.cloud.protocol.parsing.service.impl + * @Project: 2112-car-cloud-server + * @name: ParsingServiceImpl + * @Date: 2024/9/28 14:31 + * @Description: 协议解析实现层 + */ +@Log4j2 +@Component +public class ParsingTest { + + @Resource + private RedisTemplate redisTemplate; + + @Autowired + private RemoteServiceClient remoteServiceClient; + + @Resource + private KafkaProducer kafkaProducer; + + /** + * 协议解析 + */ + @PostConstruct + public void mqttClient() { + String topic = "vehicle"; + String broker = "tcp://111.231.50.146:1883"; + String clientId = "JavaSample"; + + try { + // 第三个参数为空,默认持久化策略 + MqttClient sampleClient = new MqttClient(broker, clientId); + MqttConnectOptions connOpts = new MqttConnectOptions(); + connOpts.setCleanSession(true); + System.out.println("Connecting to broker: " + broker); + sampleClient.connect(connOpts); + sampleClient.subscribe(topic, 0); + sampleClient.setCallback(new MqttCallback() { + // 连接丢失 + @Override + public void connectionLost(Throwable throwable) { + + } + + // 连接成功 + @Override + public void messageArrived(String s, MqttMessage mqttMessage) throws Exception { + System.out.println(new String(mqttMessage.getPayload())); + JSONObject entries = this.protocolParsing(new String(mqttMessage.getPayload())); + + ProducerRecord producerRecord = new ProducerRecord<>("zeshi", + entries.toString() ); + kafkaProducer.send(producerRecord); + System.out.println(entries); + } + + /** + * 协议解析 + * @param messageStr + * @return + */ + public JSONObject protocolParsing(String messageStr) { + //根据空格切割数据 + String[] hexArray = messageStr.split(" "); + StringBuilder result = new StringBuilder(); + //遍历十六进制数据转换为字符 + for (String hex : hexArray) { + int decimal = Integer.parseInt(hex, 16); + result.append((char) decimal); + } + //取出车辆VIN码 + String vehicleVin = result.substring(1, 18); + log.info("车辆VIN码: " + vehicleVin); + //根据车辆VIN码查询报文模板ID + Result byVehicleVin = remoteServiceClient.findByVehicleVin(vehicleVin); + Long templateId = byVehicleVin.getData(); + List templateList; + //从redis缓存中获取报文模板数据 + try { + String redisKey = "messageTemplate" + templateId; + if (redisTemplate.hasKey(redisKey)) { + List list = redisTemplate.opsForList().range(redisKey, 0, -1); + templateList = list.stream() + .map(obj -> JSON.parseObject(obj.toString(), MessageValueListResp.class)) + .toList(); + log.info("Redis缓存查询成功"); + } else { + Result> byTemplateId = remoteServiceClient.findByTemplateId(templateId); + templateList = byTemplateId.getData(); + templateList.forEach( + listResp -> + redisTemplate.opsForList().rightPush( + redisKey, JSON.toJSONString(listResp) + ) + ); + log.info("数据库查询成功"); + } + } catch (Exception e) { + throw new RuntimeException("获取报文模板失败"); + } + //判断报文模板列表不为空 + if (templateList.isEmpty()) { + throw new RuntimeException("报文模版为空"); + } + //存储报文模版解析后的数据 + JSONObject jsonObject = new JSONObject(); + for (MessageValueListResp messageValue : templateList) { + //起始位下标 + Integer startIndex = messageValue.getMessageStartIndex() - 1; + //结束位下标 + Integer endIndex = messageValue.getMessageEndIndex(); + //根据报文模版截取数据 + String value = result.substring(startIndex, endIndex); + //存入数据 + jsonObject.put(messageValue.getMessageLabel(), value); + } + return jsonObject; + } + + // 接收信息 + @Override + public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { + + } + }); + } catch (MqttException me) { + System.out.println("reason " + me.getReasonCode()); + System.out.println("msg " + me.getMessage()); + System.out.println("loc " + me.getLocalizedMessage()); + System.out.println("cause " + me.getCause()); + System.out.println("excep " + me); + me.printStackTrace(); + } + } +} diff --git a/cloud-modules/cloud-modules-protocol-parsing/src/main/resources/banner.txt b/cloud-modules/cloud-modules-protocol-parsing/src/main/resources/banner.txt new file mode 100644 index 0000000..0dd5eee --- /dev/null +++ b/cloud-modules/cloud-modules-protocol-parsing/src/main/resources/banner.txt @@ -0,0 +1,2 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} diff --git a/cloud-modules/cloud-modules-protocol-parsing/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-protocol-parsing/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..619fc26 --- /dev/null +++ b/cloud-modules/cloud-modules-protocol-parsing/src/main/resources/bootstrap.yml @@ -0,0 +1,133 @@ +# Tomcat +server: + port: 9208 + +# nacos线上地址 +nacos: + addr: 47.101.49.53:8848 + user-name: nacos + password: nacos + namespace: seven +# SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all +# Spring +spring: + amqp: + deserialization: + trust: + all: true + main: + allow-bean-definition-overriding: true + application: + # 应用名称 + name: cloud-protocol-parsing + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + config: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + # 系统共享配置 + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # 系统环境Config共享配置 + - application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # xxl-job 配置文件 + - application-xxl-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # rabbit 配置文件 + - application-rabbit-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + kafka: + producer: + # Kafka服务器 + bootstrap-servers: 120.53.86.181: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: 120.53.86.181: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 + +logging: + level: + com.muyu.system.mapper: DEBUG diff --git a/cloud-modules/cloud-modules-protocol-parsing/src/main/resources/logback/dev.xml b/cloud-modules/cloud-modules-protocol-parsing/src/main/resources/logback/dev.xml new file mode 100644 index 0000000..99dd7b7 --- /dev/null +++ b/cloud-modules/cloud-modules-protocol-parsing/src/main/resources/logback/dev.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-protocol-parsing/src/main/resources/logback/prod.xml b/cloud-modules/cloud-modules-protocol-parsing/src/main/resources/logback/prod.xml new file mode 100644 index 0000000..f9cfee4 --- /dev/null +++ b/cloud-modules/cloud-modules-protocol-parsing/src/main/resources/logback/prod.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + ${log.sky.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-protocol-parsing/src/main/resources/logback/test.xml b/cloud-modules/cloud-modules-protocol-parsing/src/main/resources/logback/test.xml new file mode 100644 index 0000000..f9cfee4 --- /dev/null +++ b/cloud-modules/cloud-modules-protocol-parsing/src/main/resources/logback/test.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + ${log.sky.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-system/pom.xml b/cloud-modules/cloud-modules-system/pom.xml new file mode 100644 index 0000000..e65eaf8 --- /dev/null +++ b/cloud-modules/cloud-modules-system/pom.xml @@ -0,0 +1,102 @@ + + + + com.muyu + cloud-modules + 3.6.3 + + 4.0.0 + + cloud-modules-system + + + cloud-modules-system系统模块 + + + + + + + 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.boot + spring-boot-starter-actuator + + + + + com.mysql + mysql-connector-j + + + + + com.muyu + cloud-common-datasource + + + + + com.muyu + cloud-common-datascope + + + + + com.muyu + cloud-common-log + + + + + com.muyu + cloud-common-api-doc + + + + com.muyu + cloud-common-xxl + + + + com.muyu + cloud-common-rabbit + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + + diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/CloudSystemApplication.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/CloudSystemApplication.java new file mode 100644 index 0000000..b01e5db --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/CloudSystemApplication.java @@ -0,0 +1,21 @@ +package com.muyu.system; + +import com.muyu.common.security.annotation.EnableCustomConfig; +import com.muyu.common.security.annotation.EnableMyFeignClients; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * 系统模块 + * + * @author muyu + */ +@EnableCustomConfig +//@EnableCustomSwagger2 +@EnableMyFeignClients +@SpringBootApplication +public class CloudSystemApplication { + public static void main (String[] args) { + SpringApplication.run(CloudSystemApplication.class, args); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysConfigController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysConfigController.java new file mode 100644 index 0000000..3bced52 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysConfigController.java @@ -0,0 +1,122 @@ +package com.muyu.system.controller; + +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.utils.poi.ExcelUtil; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.common.log.annotation.Log; +import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.system.domain.SysConfig; +import com.muyu.system.service.SysConfigService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; + +/** + * 参数配置 信息操作处理 + * + * @author muyu + */ +@RestController +@RequestMapping("/config") +@Tag(name = "SysConfigController", description = "系统参数配置") +public class SysConfigController extends BaseController { + + @Autowired + private SysConfigService configService; + + /** + * 获取参数配置列表 + */ + @RequiresPermissions("system:config:list") + @GetMapping("/list") + @Operation(summary = "查询集合", description = "更新水果信息") + public Result> list (SysConfig config) { + startPage(); + List list = configService.pageQuery(config); + return getDataTable(list); + } + + @Log(title = "参数管理", businessType = BusinessType.EXPORT) + @RequiresPermissions("system:config:export") + @PostMapping("/export") + public void export (HttpServletResponse response, SysConfig config) { + List list = configService.pageQuery(config); + ExcelUtil util = new ExcelUtil(SysConfig.class); + util.exportExcel(response, list, "参数数据"); + } + + /** + * 根据参数编号获取详细信息 + */ + @GetMapping(value = "/{configId}") + public Result getInfo (@PathVariable("configId") Long configId) { + return success(configService.getById(configId)); + } + + /** + * 根据参数键名查询参数值 + */ + @GetMapping(value = "/configKey/{configKey}") + public Result getConfigKey (@PathVariable("configKey") String configKey) { + return success(configService.selectConfigByKey(configKey)); + } + + /** + * 新增参数配置 + */ + @RequiresPermissions("system:config:add") + @Log(title = "参数管理", businessType = BusinessType.INSERT) + @PostMapping + public Result add (@Validated @RequestBody SysConfig config) { + if (!configService.checkConfigKeyUnique(config)) { + return error("新增参数'" + config.getConfigName() + "'失败,参数键名已存在"); + } + config.setCreateBy(SecurityUtils.getUsername()); + return toAjax(configService.save(config)); + } + + /** + * 修改参数配置 + */ + @RequiresPermissions("system:config:edit") + @Log(title = "参数管理", businessType = BusinessType.UPDATE) + @PutMapping + public Result edit (@Validated @RequestBody SysConfig config) { + if (!configService.checkConfigKeyUnique(config)) { + return error("修改参数'" + config.getConfigName() + "'失败,参数键名已存在"); + } + config.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(configService.updateById(config)); + } + + /** + * 删除参数配置 + */ + @RequiresPermissions("system:config:remove") + @Log(title = "参数管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{configIds}") + public Result remove (@PathVariable("configIds") Long[] configIds) { + configService.removeBatchByIds(Arrays.asList(configIds)); + return success(); + } + + /** + * 刷新参数缓存 + */ + @RequiresPermissions("system:config:remove") + @Log(title = "参数管理", businessType = BusinessType.CLEAN) + @DeleteMapping("/refreshCache") + public Result refreshCache () { + configService.resetConfigCache(); + return success(); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysDeptController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysDeptController.java new file mode 100644 index 0000000..37e48fc --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysDeptController.java @@ -0,0 +1,113 @@ +package com.muyu.system.controller; + +import com.muyu.common.core.constant.UserConstants; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.domain.Result; +import com.muyu.common.log.annotation.Log; +import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.SysDept; +import com.muyu.system.service.SysDeptService; +import org.apache.commons.lang3.ArrayUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 部门信息 + * + * @author muyu + */ +@RestController +@RequestMapping("/dept") +public class SysDeptController extends BaseController { + + @Autowired + private SysDeptService deptService; + + /** + * 获取部门列表 + */ + @RequiresPermissions("system:dept:list") + @GetMapping("/list") + public Result list (SysDept dept) { + List depts = deptService.selectDeptList(dept); + return success(depts); + } + + /** + * 查询部门列表(排除节点) + */ + @RequiresPermissions("system:dept:list") + @GetMapping("/list/exclude/{deptId}") + public Result excludeChild (@PathVariable(value = "deptId", required = false) Long deptId) { + List depts = deptService.selectDeptList(new SysDept()); + depts.removeIf(d -> d.getDeptId().intValue() == deptId || ArrayUtils.contains(StringUtils.split(d.getAncestors(), ","), deptId + "")); + return success(depts); + } + + /** + * 根据部门编号获取详细信息 + */ + @RequiresPermissions("system:dept:query") + @GetMapping(value = "/{deptId}") + public Result getInfo (@PathVariable("deptId") Long deptId) { + deptService.checkDeptDataScope(deptId); + return success(deptService.selectDeptById(deptId)); + } + + /** + * 新增部门 + */ + @RequiresPermissions("system:dept:add") + @Log(title = "部门管理", businessType = BusinessType.INSERT) + @PostMapping + public Result add (@Validated @RequestBody SysDept dept) { + if (!deptService.checkDeptNameUnique(dept)) { + return error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在"); + } + dept.setCreateBy(SecurityUtils.getUsername()); + return toAjax(deptService.insertDept(dept)); + } + + /** + * 修改部门 + */ + @RequiresPermissions("system:dept:edit") + @Log(title = "部门管理", businessType = BusinessType.UPDATE) + @PutMapping + public Result edit (@Validated @RequestBody SysDept dept) { + Long deptId = dept.getDeptId(); + deptService.checkDeptDataScope(deptId); + if (!deptService.checkDeptNameUnique(dept)) { + return error("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在"); + } else if (dept.getParentId().equals(deptId)) { + return error("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己"); + } else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()) && deptService.selectNormalChildrenDeptById(deptId) > 0) { + return error("该部门包含未停用的子部门!"); + } + dept.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(deptService.updateDept(dept)); + } + + /** + * 删除部门 + */ + @RequiresPermissions("system:dept:remove") + @Log(title = "部门管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{deptId}") + public Result remove (@PathVariable("deptId") Long deptId) { + if (deptService.hasChildByDeptId(deptId)) { + return warn("存在下级部门,不允许删除"); + } + if (deptService.checkDeptExistUser(deptId)) { + return warn("部门存在用户,不允许删除"); + } + deptService.checkDeptDataScope(deptId); + return toAjax(deptService.deleteDeptById(deptId)); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysDictDataController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysDictDataController.java new file mode 100644 index 0000000..f9862d9 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysDictDataController.java @@ -0,0 +1,107 @@ +package com.muyu.system.controller; + +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.utils.poi.ExcelUtil; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.common.log.annotation.Log; +import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.SysDictData; +import com.muyu.system.service.SysDictDataService; +import com.muyu.system.service.SysDictTypeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import jakarta.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据字典信息 + * + * @author muyu + */ +@RestController +@RequestMapping("/dict/data") +public class SysDictDataController extends BaseController { + @Autowired + private SysDictDataService dictDataService; + + @Autowired + private SysDictTypeService dictTypeService; + + @RequiresPermissions("system:dict:list") + @GetMapping("/list") + public Result> list (SysDictData dictData) { + startPage(); + List list = dictDataService.selectDictDataList(dictData); + return getDataTable(list); + } + + @Log(title = "字典数据", businessType = BusinessType.EXPORT) + @RequiresPermissions("system:dict:export") + @PostMapping("/export") + public void export (HttpServletResponse response, SysDictData dictData) { + List list = dictDataService.selectDictDataList(dictData); + ExcelUtil util = new ExcelUtil(SysDictData.class); + util.exportExcel(response, list, "字典数据"); + } + + /** + * 查询字典数据详细 + */ + @RequiresPermissions("system:dict:query") + @GetMapping(value = "/{dictCode}") + public Result getInfo (@PathVariable("dictCode") Long dictCode) { + return success(dictDataService.selectDictDataById(dictCode)); + } + + /** + * 根据字典类型查询字典数据信息 + */ + @GetMapping(value = "/type/{dictType}") + public Result dictType (@PathVariable("dictType") String dictType) { + List data = dictTypeService.selectDictDataByType(dictType); + if (StringUtils.isNull(data)) { + data = new ArrayList(); + } + return success(data); + } + + /** + * 新增字典类型 + */ + @RequiresPermissions("system:dict:add") + @Log(title = "字典数据", businessType = BusinessType.INSERT) + @PostMapping + public Result add (@Validated @RequestBody SysDictData dict) { + dict.setCreateBy(SecurityUtils.getUsername()); + return toAjax(dictDataService.insertDictData(dict)); + } + + /** + * 修改保存字典类型 + */ + @RequiresPermissions("system:dict:edit") + @Log(title = "字典数据", businessType = BusinessType.UPDATE) + @PutMapping + public Result edit (@Validated @RequestBody SysDictData dict) { + dict.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(dictDataService.updateDictData(dict)); + } + + /** + * 删除字典类型 + */ + @RequiresPermissions("system:dict:remove") + @Log(title = "字典类型", businessType = BusinessType.DELETE) + @DeleteMapping("/{dictCodes}") + public Result remove (@PathVariable("dictCode") Long[] dictCodes) { + dictDataService.deleteDictDataByIds(dictCodes); + return success(); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysDictTypeController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysDictTypeController.java new file mode 100644 index 0000000..c4a7b9f --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysDictTypeController.java @@ -0,0 +1,115 @@ +package com.muyu.system.controller; + +import com.muyu.common.core.utils.poi.ExcelUtil; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.common.log.annotation.Log; +import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.SysDictType; +import com.muyu.system.service.SysDictTypeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import jakarta.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 数据字典信息 + * + * @author muyu + */ +@RestController +@RequestMapping("/dict/type") +public class SysDictTypeController extends BaseController { + @Autowired + private SysDictTypeService dictTypeService; + + @RequiresPermissions("system:dict:list") + @GetMapping("/list") + public Result> list (SysDictType dictType) { + startPage(); + List list = dictTypeService.selectDictTypeList(dictType); + return getDataTable(list); + } + + @Log(title = "字典类型", businessType = BusinessType.EXPORT) + @RequiresPermissions("system:dict:export") + @PostMapping("/export") + public void export (HttpServletResponse response, SysDictType dictType) { + List list = dictTypeService.selectDictTypeList(dictType); + ExcelUtil util = new ExcelUtil(SysDictType.class); + util.exportExcel(response, list, "字典类型"); + } + + /** + * 查询字典类型详细 + */ + @RequiresPermissions("system:dict:query") + @GetMapping(value = "/{dictId}") + public Result getInfo (@PathVariable("dictId") Long dictId) { + return success(dictTypeService.selectDictTypeById(dictId)); + } + + /** + * 新增字典类型 + */ + @RequiresPermissions("system:dict:add") + @Log(title = "字典类型", businessType = BusinessType.INSERT) + @PostMapping + public Result add (@Validated @RequestBody SysDictType dict) { + if (!dictTypeService.checkDictTypeUnique(dict)) { + return error("新增字典'" + dict.getDictName() + "'失败,字典类型已存在"); + } + dict.setCreateBy(SecurityUtils.getUsername()); + return toAjax(dictTypeService.insertDictType(dict)); + } + + /** + * 修改字典类型 + */ + @RequiresPermissions("system:dict:edit") + @Log(title = "字典类型", businessType = BusinessType.UPDATE) + @PutMapping + public Result edit (@Validated @RequestBody SysDictType dict) { + if (!dictTypeService.checkDictTypeUnique(dict)) { + return error("修改字典'" + dict.getDictName() + "'失败,字典类型已存在"); + } + dict.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(dictTypeService.updateDictType(dict)); + } + + /** + * 删除字典类型 + */ + @RequiresPermissions("system:dict:remove") + @Log(title = "字典类型", businessType = BusinessType.DELETE) + @DeleteMapping("/{dictIds}") + public Result remove (@PathVariable("dictIds") Long[] dictIds) { + dictTypeService.deleteDictTypeByIds(dictIds); + return success(); + } + + /** + * 刷新字典缓存 + */ + @RequiresPermissions("system:dict:remove") + @Log(title = "字典类型", businessType = BusinessType.CLEAN) + @DeleteMapping("/refreshCache") + public Result refreshCache () { + dictTypeService.resetDictCache(); + return success(); + } + + /** + * 获取字典选择框列表 + */ + @GetMapping("/optionselect") + public Result optionselect () { + List dictTypes = dictTypeService.selectDictTypeAll(); + return success(dictTypes); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysLogininforController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysLogininforController.java new file mode 100644 index 0000000..c1e92b7 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysLogininforController.java @@ -0,0 +1,80 @@ +package com.muyu.system.controller; + +import com.muyu.common.core.constant.CacheConstants; +import com.muyu.common.core.utils.poi.ExcelUtil; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.common.log.annotation.Log; +import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.redis.service.RedisService; +import com.muyu.common.security.annotation.InnerAuth; +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.common.system.domain.SysLogininfor; +import com.muyu.system.service.SysLogininforService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import jakarta.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 系统访问记录 + * + * @author muyu + */ +@RestController +@RequestMapping("/logininfor") +public class SysLogininforController extends BaseController { + @Autowired + private SysLogininforService logininforService; + + @Autowired + private RedisService redisService; + + @RequiresPermissions("system:logininfor:list") + @GetMapping("/list") + public Result> list (SysLogininfor logininfor) { + startPage(); + List list = logininforService.selectLogininforList(logininfor); + return getDataTable(list); + } + + @Log(title = "登录日志", businessType = BusinessType.EXPORT) + @RequiresPermissions("system:logininfor:export") + @PostMapping("/export") + public void export (HttpServletResponse response, SysLogininfor logininfor) { + List list = logininforService.selectLogininforList(logininfor); + ExcelUtil util = new ExcelUtil(SysLogininfor.class); + util.exportExcel(response, list, "登录日志"); + } + + @RequiresPermissions("system:logininfor:remove") + @Log(title = "登录日志", businessType = BusinessType.DELETE) + @DeleteMapping("/{infoIds}") + public Result remove (@PathVariable("infoIds") Long[] infoIds) { + return toAjax(logininforService.deleteLogininforByIds(infoIds)); + } + + @RequiresPermissions("system:logininfor:remove") + @Log(title = "登录日志", businessType = BusinessType.DELETE) + @DeleteMapping("/clean") + public Result clean () { + logininforService.cleanLogininfor(); + return success(); + } + + @RequiresPermissions("system:logininfor:unlock") + @Log(title = "账户解锁", businessType = BusinessType.OTHER) + @GetMapping("/unlock/{userName}") + public Result unlock (@PathVariable("userName") String userName) { + redisService.deleteObject(CacheConstants.PWD_ERR_CNT_KEY + userName); + return success(); + } + + @InnerAuth + @PostMapping + public Result add (@RequestBody SysLogininfor logininfor) { + return toAjax(logininforService.insertLogininfor(logininfor)); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysMenuController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysMenuController.java new file mode 100644 index 0000000..e5ae348 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysMenuController.java @@ -0,0 +1,137 @@ +package com.muyu.system.controller; + +import com.muyu.common.core.constant.UserConstants; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.domain.Result; +import com.muyu.common.log.annotation.Log; +import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.system.domain.SysMenu; +import com.muyu.system.domain.resp.RoleMenuTreeResp; +import com.muyu.system.service.SysMenuService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 菜单信息 + * + * @author muyu + */ +@RestController +@RequestMapping("/menu") +public class SysMenuController extends BaseController { + @Autowired + private SysMenuService menuService; + + /** + * 获取菜单列表 + */ + @RequiresPermissions("system:menu:list") + @GetMapping("/list") + public Result list (SysMenu menu) { + Long userId = SecurityUtils.getUserId(); + List menus = menuService.selectMenuList(menu, userId); + return success(menus); + } + + /** + * 根据菜单编号获取详细信息 + */ + @RequiresPermissions("system:menu:query") + @GetMapping(value = "/{menuId}") + public Result getInfo (@PathVariable("menuId") Long menuId) { + return success(menuService.selectMenuById(menuId)); + } + + /** + * 获取菜单下拉树列表 + */ + @GetMapping("/treeselect") + public Result treeselect (SysMenu menu) { + Long userId = SecurityUtils.getUserId(); + List menus = menuService.selectMenuList(menu, userId); + return success(menuService.buildMenuTreeSelect(menus)); + } + + /** + * 加载对应角色菜单列表树 + */ + @GetMapping(value = "/roleMenuTreeselect/{roleId}") + public Result roleMenuTreeselect (@PathVariable("roleId") Long roleId) { + Long userId = SecurityUtils.getUserId(); + List menus = menuService.selectMenuList(userId); + return Result.success( + RoleMenuTreeResp.builder() + .menus(menuService.buildMenuTreeSelect(menus)) + .checkedKeys(menuService.selectMenuListByRoleId(roleId)) + .build() + ); + } + + /** + * 新增菜单 + */ + @RequiresPermissions("system:menu:add") + @Log(title = "菜单管理", businessType = BusinessType.INSERT) + @PostMapping + public Result add (@Validated @RequestBody SysMenu menu) { + if (!menuService.checkMenuNameUnique(menu)) { + return error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); + } else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) { + return error("新增菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头"); + } + menu.setCreateBy(SecurityUtils.getUsername()); + return toAjax(menuService.insertMenu(menu)); + } + + /** + * 修改菜单 + */ + @RequiresPermissions("system:menu:edit") + @Log(title = "菜单管理", businessType = BusinessType.UPDATE) + @PutMapping + public Result edit (@Validated @RequestBody SysMenu menu) { + if (!menuService.checkMenuNameUnique(menu)) { + return error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); + } else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) { + return error("修改菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头"); + } else if (menu.getMenuId().equals(menu.getParentId())) { + return error("修改菜单'" + menu.getMenuName() + "'失败,上级菜单不能选择自己"); + } + menu.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(menuService.updateMenu(menu)); + } + + /** + * 删除菜单 + */ + @RequiresPermissions("system:menu:remove") + @Log(title = "菜单管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{menuId}") + public Result remove (@PathVariable("menuId") Long menuId) { + if (menuService.hasChildByMenuId(menuId)) { + return warn("存在子菜单,不允许删除"); + } + if (menuService.checkMenuExistRole(menuId)) { + return warn("菜单已分配,不允许删除"); + } + return toAjax(menuService.deleteMenuById(menuId)); + } + + /** + * 获取路由信息 + * + * @return 路由信息 + */ + @GetMapping("getRouters") + public Result getRouters () { + Long userId = SecurityUtils.getUserId(); + List menus = menuService.selectMenuTreeByUserId(userId); + return success(menuService.buildMenus(menus)); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysNoticeController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysNoticeController.java new file mode 100644 index 0000000..e6b9ede --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysNoticeController.java @@ -0,0 +1,80 @@ +package com.muyu.system.controller; + +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.common.log.annotation.Log; +import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.system.domain.SysNotice; +import com.muyu.system.service.SysNoticeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 公告 信息操作处理 + * + * @author muyu + */ +@RestController +@RequestMapping("/notice") +public class SysNoticeController extends BaseController { + @Autowired + private SysNoticeService noticeService; + + /** + * 获取通知公告列表 + */ + @RequiresPermissions("system:notice:list") + @GetMapping("/list") + public Result> list (SysNotice notice) { + startPage(); + List list = noticeService.selectNoticeList(notice); + return getDataTable(list); + } + + /** + * 根据通知公告编号获取详细信息 + */ + @RequiresPermissions("system:notice:query") + @GetMapping(value = "/{noticeId}") + public Result getInfo (@PathVariable("noticeId") Long noticeId) { + return success(noticeService.selectNoticeById(noticeId)); + } + + /** + * 新增通知公告 + */ + @RequiresPermissions("system:notice:add") + @Log(title = "通知公告", businessType = BusinessType.INSERT) + @PostMapping + public Result add (@Validated @RequestBody SysNotice notice) { + notice.setCreateBy(SecurityUtils.getUsername()); + return toAjax(noticeService.insertNotice(notice)); + } + + /** + * 修改通知公告 + */ + @RequiresPermissions("system:notice:edit") + @Log(title = "通知公告", businessType = BusinessType.UPDATE) + @PutMapping + public Result edit (@Validated @RequestBody SysNotice notice) { + notice.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(noticeService.updateNotice(notice)); + } + + /** + * 删除通知公告 + */ + @RequiresPermissions("system:notice:remove") + @Log(title = "通知公告", businessType = BusinessType.DELETE) + @DeleteMapping("/{noticeIds}") + public Result remove (@PathVariable("noticeIds") Long[] noticeIds) { + return toAjax(noticeService.deleteNoticeByIds(noticeIds)); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysOperlogController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysOperlogController.java new file mode 100644 index 0000000..bb00d1d --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysOperlogController.java @@ -0,0 +1,67 @@ +package com.muyu.system.controller; + +import com.muyu.common.core.utils.poi.ExcelUtil; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.common.log.annotation.Log; +import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.security.annotation.InnerAuth; +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.common.system.domain.SysOperLog; +import com.muyu.system.service.SysOperLogService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import jakarta.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 操作日志记录 + * + * @author muyu + */ +@RestController +@RequestMapping("/operlog") +public class SysOperlogController extends BaseController { + @Autowired + private SysOperLogService operLogService; + + @RequiresPermissions("system:operlog:list") + @GetMapping("/list") + public Result> list (SysOperLog operLog) { + startPage(); + List list = operLogService.selectOperLogList(operLog); + return getDataTable(list); + } + + @Log(title = "操作日志", businessType = BusinessType.EXPORT) + @RequiresPermissions("system:operlog:export") + @PostMapping("/export") + public void export (HttpServletResponse response, SysOperLog operLog) { + List list = operLogService.selectOperLogList(operLog); + ExcelUtil util = new ExcelUtil(SysOperLog.class); + util.exportExcel(response, list, "操作日志"); + } + + @Log(title = "操作日志", businessType = BusinessType.DELETE) + @RequiresPermissions("system:operlog:remove") + @DeleteMapping("/{operIds}") + public Result remove (@PathVariable("operIds") Long[] operIds) { + return toAjax(operLogService.deleteOperLogByIds(operIds)); + } + + @RequiresPermissions("system:operlog:remove") + @Log(title = "操作日志", businessType = BusinessType.CLEAN) + @DeleteMapping("/clean") + public Result clean () { + operLogService.cleanOperLog(); + return success(); + } + + @InnerAuth + @PostMapping + public Result add (@RequestBody SysOperLog operLog) { + return toAjax(operLogService.insertOperlog(operLog)); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysPostController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysPostController.java new file mode 100644 index 0000000..79f3f47 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysPostController.java @@ -0,0 +1,110 @@ +package com.muyu.system.controller; + +import com.muyu.common.core.utils.poi.ExcelUtil; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.common.log.annotation.Log; +import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.system.domain.SysPost; +import com.muyu.system.service.SysPostService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import jakarta.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 岗位信息操作处理 + * + * @author muyu + */ +@RestController +@RequestMapping("/post") +public class SysPostController extends BaseController { + @Autowired + private SysPostService postService; + + /** + * 获取岗位列表 + */ + @RequiresPermissions("system:post:list") + @GetMapping("/list") + public Result> list (SysPost post) { + startPage(); + List list = postService.selectPostList(post); + return getDataTable(list); + } + + @Log(title = "岗位管理", businessType = BusinessType.EXPORT) + @RequiresPermissions("system:post:export") + @PostMapping("/export") + public void export (HttpServletResponse response, SysPost post) { + List list = postService.selectPostList(post); + ExcelUtil util = new ExcelUtil(SysPost.class); + util.exportExcel(response, list, "岗位数据"); + } + + /** + * 根据岗位编号获取详细信息 + */ + @RequiresPermissions("system:post:query") + @GetMapping(value = "/{postId}") + public Result getInfo (@PathVariable("postId") Long postId) { + return success(postService.selectPostById(postId)); + } + + /** + * 新增岗位 + */ + @RequiresPermissions("system:post:add") + @Log(title = "岗位管理", businessType = BusinessType.INSERT) + @PostMapping + public Result add (@Validated @RequestBody SysPost post) { + if (!postService.checkPostNameUnique(post)) { + return error("新增岗位'" + post.getPostName() + "'失败,岗位名称已存在"); + } else if (!postService.checkPostCodeUnique(post)) { + return error("新增岗位'" + post.getPostName() + "'失败,岗位编码已存在"); + } + post.setCreateBy(SecurityUtils.getUsername()); + return toAjax(postService.insertPost(post)); + } + + /** + * 修改岗位 + */ + @RequiresPermissions("system:post:edit") + @Log(title = "岗位管理", businessType = BusinessType.UPDATE) + @PutMapping + public Result edit (@Validated @RequestBody SysPost post) { + if (!postService.checkPostNameUnique(post)) { + return error("修改岗位'" + post.getPostName() + "'失败,岗位名称已存在"); + } else if (!postService.checkPostCodeUnique(post)) { + return error("修改岗位'" + post.getPostName() + "'失败,岗位编码已存在"); + } + post.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(postService.updatePost(post)); + } + + /** + * 删除岗位 + */ + @RequiresPermissions("system:post:remove") + @Log(title = "岗位管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{postIds}") + public Result remove (@PathVariable("postIds") Long[] postIds) { + return toAjax(postService.deletePostByIds(postIds)); + } + + /** + * 获取岗位选择框列表 + */ + @GetMapping("/optionselect") + public Result optionselect () { + List posts = postService.selectPostAll(); + return success(posts); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysProfileController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysProfileController.java new file mode 100644 index 0000000..ae49255 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysProfileController.java @@ -0,0 +1,134 @@ +package com.muyu.system.controller; + +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.utils.file.FileTypeUtils; +import com.muyu.common.core.utils.file.MimeTypeUtils; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.log.annotation.Log; +import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.security.service.TokenService; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.remote.RemoteFileService; +import com.muyu.common.system.domain.SysFile; +import com.muyu.common.system.domain.SysUser; +import com.muyu.common.system.domain.LoginUser; +import com.muyu.system.domain.resp.ProfileResp; +import com.muyu.system.service.SysUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.Arrays; + +/** + * 个人信息 业务处理 + * + * @author muyu + */ +@RestController +@RequestMapping("/user/profile") +public class SysProfileController extends BaseController { + @Autowired + private SysUserService userService; + + @Autowired + private TokenService tokenService; + + @Autowired + private RemoteFileService remoteFileService; + + /** + * 个人信息 + */ + @GetMapping + public Result profile () { + String username = SecurityUtils.getUsername(); + SysUser user = userService.selectUserByUserName(username); + return Result.success( + ProfileResp.builder() + .roleGroup( userService.selectUserRoleGroup(username) ) + .postGroup( userService.selectUserPostGroup(username) ) + .sysUser(user) + .build() + ); + } + + /** + * 修改用户 + */ + @Log(title = "个人信息", businessType = BusinessType.UPDATE) + @PutMapping + public Result updateProfile (@RequestBody SysUser user) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + SysUser currentUser = loginUser.getSysUser(); + currentUser.setNickName(user.getNickName()); + currentUser.setEmail(user.getEmail()); + currentUser.setPhonenumber(user.getPhonenumber()); + currentUser.setSex(user.getSex()); + if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(currentUser)) { + return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); + } + if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(currentUser)) { + return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在"); + } + if (userService.updateUserProfile(currentUser) > 0) { + // 更新缓存用户信息 + tokenService.setLoginUser(loginUser); + return success(); + } + return error("修改个人信息异常,请联系管理员"); + } + + /** + * 重置密码 + */ + @Log(title = "个人信息", businessType = BusinessType.UPDATE) + @PutMapping("/updatePwd") + public Result updatePwd (String oldPassword, String newPassword) { + String username = SecurityUtils.getUsername(); + SysUser user = userService.selectUserByUserName(username); + String password = user.getPassword(); + if (!SecurityUtils.matchesPassword(oldPassword, password)) { + return error("修改密码失败,旧密码错误"); + } + if (SecurityUtils.matchesPassword(newPassword, password)) { + return error("新密码不能与旧密码相同"); + } + if (userService.resetUserPwd(username, SecurityUtils.encryptPassword(newPassword)) > 0) { + // 更新缓存用户密码 + LoginUser loginUser = SecurityUtils.getLoginUser(); + loginUser.getSysUser().setPassword(SecurityUtils.encryptPassword(newPassword)); + tokenService.setLoginUser(loginUser); + return success(); + } + return error("修改密码异常,请联系管理员"); + } + + /** + * 头像上传 + */ + @Log(title = "用户头像", businessType = BusinessType.UPDATE) + @PostMapping("/avatar") + public Result avatar (@RequestParam("avatarfile") MultipartFile file) { + if (!file.isEmpty()) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + String extension = FileTypeUtils.getExtension(file); + if (!StringUtils.equalsAnyIgnoreCase(extension, MimeTypeUtils.IMAGE_EXTENSION)) { + return error("文件格式不正确,请上传" + Arrays.toString(MimeTypeUtils.IMAGE_EXTENSION) + "格式"); + } + Result fileResult = remoteFileService.upload(file); + if (StringUtils.isNull(fileResult) || StringUtils.isNull(fileResult.getData())) { + return error("文件服务异常,请联系管理员"); + } + String url = fileResult.getData().getUrl(); + if (userService.updateUserAvatar(loginUser.getUsername(), url)) { + // 更新缓存用户头像 + loginUser.getSysUser().setAvatar(url); + tokenService.setLoginUser(loginUser); + return Result.success(url); + } + } + return error("上传图片异常,请联系管理员"); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysRoleController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysRoleController.java new file mode 100644 index 0000000..f8b05ad --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysRoleController.java @@ -0,0 +1,215 @@ +package com.muyu.system.controller; + +import com.muyu.common.core.utils.poi.ExcelUtil; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.common.log.annotation.Log; +import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.SysDept; +import com.muyu.common.system.domain.SysRole; +import com.muyu.common.system.domain.SysUser; +import com.muyu.system.domain.SysUserRole; +import com.muyu.system.domain.resp.DeptTreeResp; +import com.muyu.system.service.SysDeptService; +import com.muyu.system.service.SysRoleService; +import com.muyu.system.service.SysUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import jakarta.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 角色信息 + * + * @author muyu + */ +@RestController +@RequestMapping("/role") +public class SysRoleController extends BaseController { + @Autowired + private SysRoleService roleService; + + @Autowired + private SysUserService userService; + + @Autowired + private SysDeptService deptService; + + @RequiresPermissions("system:role:list") + @GetMapping("/list") + public Result> list (SysRole role) { + startPage(); + List list = roleService.selectRoleList(role); + return getDataTable(list); + } + + @Log(title = "角色管理", businessType = BusinessType.EXPORT) + @RequiresPermissions("system:role:export") + @PostMapping("/export") + public void export (HttpServletResponse response, SysRole role) { + List list = roleService.selectRoleList(role); + ExcelUtil util = new ExcelUtil(SysRole.class); + util.exportExcel(response, list, "角色数据"); + } + + /** + * 根据角色编号获取详细信息 + */ + @RequiresPermissions("system:role:query") + @GetMapping(value = "/{roleId}") + public Result getInfo (@PathVariable("roleId") Long roleId) { + roleService.checkRoleDataScope(roleId); + return success(roleService.selectRoleById(roleId)); + } + + /** + * 新增角色 + */ + @RequiresPermissions("system:role:add") + @Log(title = "角色管理", businessType = BusinessType.INSERT) + @PostMapping + public Result add (@Validated @RequestBody SysRole role) { + if (!roleService.checkRoleNameUnique(role)) { + return error("新增角色'" + role.getRoleName() + "'失败,角色名称已存在"); + } else if (!roleService.checkRoleKeyUnique(role)) { + return error("新增角色'" + role.getRoleName() + "'失败,角色权限已存在"); + } + role.setCreateBy(SecurityUtils.getUsername()); + return toAjax(roleService.insertRole(role)); + + } + + /** + * 修改保存角色 + */ + @RequiresPermissions("system:role:edit") + @Log(title = "角色管理", businessType = BusinessType.UPDATE) + @PutMapping + public Result edit (@Validated @RequestBody SysRole role) { + roleService.checkRoleAllowed(role); + roleService.checkRoleDataScope(role.getRoleId()); + if (!roleService.checkRoleNameUnique(role)) { + return error("修改角色'" + role.getRoleName() + "'失败,角色名称已存在"); + } else if (!roleService.checkRoleKeyUnique(role)) { + return error("修改角色'" + role.getRoleName() + "'失败,角色权限已存在"); + } + role.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(roleService.updateRole(role)); + } + + /** + * 修改保存数据权限 + */ + @RequiresPermissions("system:role:edit") + @Log(title = "角色管理", businessType = BusinessType.UPDATE) + @PutMapping("/dataScope") + public Result dataScope (@RequestBody SysRole role) { + roleService.checkRoleAllowed(role); + roleService.checkRoleDataScope(role.getRoleId()); + return toAjax(roleService.authDataScope(role)); + } + + /** + * 状态修改 + */ + @RequiresPermissions("system:role:edit") + @Log(title = "角色管理", businessType = BusinessType.UPDATE) + @PutMapping("/changeStatus") + public Result changeStatus (@RequestBody SysRole role) { + roleService.checkRoleAllowed(role); + roleService.checkRoleDataScope(role.getRoleId()); + role.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(roleService.updateRoleStatus(role)); + } + + /** + * 删除角色 + */ + @RequiresPermissions("system:role:remove") + @Log(title = "角色管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{roleIds}") + public Result remove (@PathVariable("roleIds") Long[] roleIds) { + return toAjax(roleService.deleteRoleByIds(roleIds)); + } + + /** + * 获取角色选择框列表 + */ + @RequiresPermissions("system:role:query") + @GetMapping("/optionselect") + public Result optionselect () { + return success(roleService.selectRoleAll()); + } + + /** + * 查询已分配用户角色列表 + */ + @RequiresPermissions("system:role:list") + @GetMapping("/authUser/allocatedList") + public Result> allocatedList (SysUser user) { + startPage(); + List list = userService.selectAllocatedList(user); + return getDataTable(list); + } + + /** + * 查询未分配用户角色列表 + */ + @RequiresPermissions("system:role:list") + @GetMapping("/authUser/unallocatedList") + public Result> unallocatedList (SysUser user) { + startPage(); + List list = userService.selectUnallocatedList(user); + return getDataTable(list); + } + + /** + * 取消授权用户 + */ + @RequiresPermissions("system:role:edit") + @Log(title = "角色管理", businessType = BusinessType.GRANT) + @PutMapping("/authUser/cancel") + public Result cancelAuthUser (@RequestBody SysUserRole userRole) { + return toAjax(roleService.deleteAuthUser(userRole)); + } + + /** + * 批量取消授权用户 + */ + @RequiresPermissions("system:role:edit") + @Log(title = "角色管理", businessType = BusinessType.GRANT) + @PutMapping("/authUser/cancelAll") + public Result cancelAuthUserAll (Long roleId, Long[] userIds) { + return toAjax(roleService.deleteAuthUsers(roleId, userIds)); + } + + /** + * 批量选择用户授权 + */ + @RequiresPermissions("system:role:edit") + @Log(title = "角色管理", businessType = BusinessType.GRANT) + @PutMapping("/authUser/selectAll") + public Result selectAuthUserAll (Long roleId, Long[] userIds) { + roleService.checkRoleDataScope(roleId); + return toAjax(roleService.insertAuthUsers(roleId, userIds)); + } + + /** + * 获取对应角色部门树列表 + */ + @RequiresPermissions("system:role:query") + @GetMapping(value = "/deptTree/{roleId}") + public Result deptTree (@PathVariable("roleId") Long roleId) { + return Result.success( + DeptTreeResp.builder() + .depts(deptService.selectDeptTreeList(new SysDept())) + .checkedKeys(deptService.selectDeptListByRoleId(roleId)) + .build() + ); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysUserController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysUserController.java new file mode 100644 index 0000000..ce7145d --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysUserController.java @@ -0,0 +1,303 @@ +package com.muyu.system.controller; + +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.utils.poi.ExcelUtil; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.common.log.annotation.Log; +import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.security.annotation.InnerAuth; +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.SysDept; +import com.muyu.common.system.domain.SysRole; +import com.muyu.common.system.domain.SysUser; +import com.muyu.common.system.domain.LoginUser; +import com.muyu.system.domain.resp.AuthRoleResp; +import com.muyu.system.domain.resp.UserDetailInfoResp; +import com.muyu.system.domain.resp.UserInfoResp; +import com.muyu.system.service.*; +import org.apache.commons.lang3.ArrayUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import jakarta.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 用户信息 + * + * @author muyu + */ +@RestController +@RequestMapping("/user") +public class SysUserController extends BaseController { + @Autowired + private SysUserService userService; + + @Autowired + private SysRoleService roleService; + + @Autowired + private SysDeptService deptService; + + @Autowired + private SysPostService postService; + + @Autowired + private SysPermissionService permissionService; + + @Autowired + private SysConfigService configService; + + /** + * 获取用户列表 + */ + @RequiresPermissions("system:user:list") + @GetMapping("/list") + public Result> list (SysUser user) { + startPage(); + List list = userService.selectUserList(user); + return getDataTable(list); + } + + /** + * 查询数据库名称 + * @return + */ + @GetMapping("/companyList") + public Result> companyList () { + List list = userService.selectCompanyList(); + return Result.success(list); + } + + @Log(title = "用户管理", businessType = BusinessType.EXPORT) + @RequiresPermissions("system:user:export") + @PostMapping("/export") + public void export (HttpServletResponse response, SysUser user) { + List list = userService.selectUserList(user); + ExcelUtil util = new ExcelUtil(SysUser.class); + util.exportExcel(response, list, "用户数据"); + } + + @Log(title = "用户管理", businessType = BusinessType.IMPORT) + @RequiresPermissions("system:user:import") + @PostMapping("/importData") + public Result importData (MultipartFile file, boolean updateSupport) throws Exception { + ExcelUtil util = new ExcelUtil(SysUser.class); + List userList = util.importExcel(file.getInputStream()); + String operName = SecurityUtils.getUsername(); + String message = userService.importUser(userList, updateSupport, operName); + return success(message); + } + + @PostMapping("/importTemplate") + public void importTemplate (HttpServletResponse response) throws IOException { + ExcelUtil util = new ExcelUtil(SysUser.class); + util.importTemplateExcel(response, "用户数据"); + } + + /** + * 获取当前用户信息 + */ + @InnerAuth + @GetMapping("/info/{username}") + public Result info (@PathVariable("username") String username) { + SysUser sysUser = userService.selectUserByUserName(username); + if (StringUtils.isNull(sysUser)) { + return Result.error("用户名或密码错误"); + } + // 角色集合 + Set roles = permissionService.getRolePermission(sysUser); + // 权限集合 + Set permissions = permissionService.getMenuPermission(sysUser); + LoginUser sysUserVo = new LoginUser(); + sysUserVo.setSysUser(sysUser); + sysUserVo.setRoles(roles); + sysUserVo.setPermissions(permissions); + return Result.success(sysUserVo); + } + + /** + * 注册用户信息 + */ + @InnerAuth + @PostMapping("/register") + public Result register (@RequestBody SysUser sysUser) { + String username = sysUser.getUserName(); + if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) { + return Result.error("当前系统没有开启注册功能!"); + } + if (!userService.checkUserNameUnique(sysUser)) { + return Result.error("保存用户'" + username + "'失败,注册账号已存在"); + } + return Result.success(userService.registerUser(sysUser)); + } + + /** + * 获取用户信息 + * + * @return 用户信息 + */ + @GetMapping("getInfo") + public Result getInfo () { + SysUser user = userService.selectUserById(SecurityUtils.getUserId()); + // 角色集合 + Set roles = permissionService.getRolePermission(user); + // 权限集合 + Set permissions = permissionService.getMenuPermission(user); + + return Result.success( + UserInfoResp.builder() + .user(user) + .roles(roles) + .permissions(permissions) + .build() + ); + } + + /** + * 根据用户编号获取详细信息 + */ + @RequiresPermissions("system:user:query") + @GetMapping(value = {"/", "/{userId}"}) + public Result getInfo (@PathVariable(value = "userId", required = false) Long userId) { + userService.checkUserDataScope(userId); + UserDetailInfoResp.UserDetailInfoRespBuilder builder = UserDetailInfoResp.builder(); + List roles = roleService.selectRoleAll(); + builder.roles( + SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()) + ) + .posts( postService.selectPostAll() ); + if (StringUtils.isNotNull(userId)) { + SysUser sysUser = userService.selectUserById(userId); + builder.sysUser(sysUser) + .postIds(postService.selectPostListByUserId(userId)) + .roleIds(sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList())) + .build(); + } + return Result.success(builder.build()); + } + + /** + * 新增用户 + */ + @RequiresPermissions("system:user:add") + @Log(title = "用户管理", businessType = BusinessType.INSERT) + @PostMapping + public Result add (@Validated @RequestBody SysUser user) { + if (!userService.checkUserNameUnique(user)) { + return error("新增用户'" + user.getUserName() + "'失败,登录账号已存在"); + } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { + return error("新增用户'" + user.getUserName() + "'失败,手机号码已存在"); + } else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) { + return error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在"); + } + user.setCreateBy(SecurityUtils.getUsername()); + user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); + return toAjax(userService.insertUser(user)); + } + + /** + * 修改用户 + */ + @RequiresPermissions("system:user:edit") + @Log(title = "用户管理", businessType = BusinessType.UPDATE) + @PutMapping + public Result edit (@Validated @RequestBody SysUser user) { + userService.checkUserAllowed(user); + userService.checkUserDataScope(user.getUserId()); + if (!userService.checkUserNameUnique(user)) { + return error("修改用户'" + user.getUserName() + "'失败,登录账号已存在"); + } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { + return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); + } else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) { + return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在"); + } + user.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(userService.updateUser(user)); + } + + /** + * 删除用户 + */ + @RequiresPermissions("system:user:remove") + @Log(title = "用户管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{userIds}") + public Result remove (@PathVariable("userIds") Long[] userIds) { + if (ArrayUtils.contains(userIds, SecurityUtils.getUserId())) { + return error("当前用户不能删除"); + } + return toAjax(userService.deleteUserByIds(userIds)); + } + + /** + * 重置密码 + */ + @RequiresPermissions("system:user:edit") + @Log(title = "用户管理", businessType = BusinessType.UPDATE) + @PutMapping("/resetPwd") + public Result resetPwd (@RequestBody SysUser user) { + userService.checkUserAllowed(user); + userService.checkUserDataScope(user.getUserId()); + user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); + user.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(userService.resetPwd(user)); + } + + /** + * 状态修改 + */ + @RequiresPermissions("system:user:edit") + @Log(title = "用户管理", businessType = BusinessType.UPDATE) + @PutMapping("/changeStatus") + public Result changeStatus (@RequestBody SysUser user) { + userService.checkUserAllowed(user); + userService.checkUserDataScope(user.getUserId()); + user.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(userService.updateUserStatus(user)); + } + + /** + * 根据用户编号获取授权角色 + */ + @RequiresPermissions("system:user:query") + @GetMapping("/authRole/{userId}") + public Result authRole (@PathVariable("userId") Long userId) { + SysUser user = userService.selectUserById(userId); + List roles = roleService.selectRolesByUserId(userId); + return Result.success( + AuthRoleResp.builder() + .roles(SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())) + .user(user) + .build() + ); + } + + /** + * 用户授权角色 + */ + @RequiresPermissions("system:user:edit") + @Log(title = "用户管理", businessType = BusinessType.GRANT) + @PutMapping("/authRole") + public Result insertAuthRole (Long userId, Long[] roleIds) { + userService.checkUserDataScope(userId); + userService.insertUserAuth(userId, roleIds); + return success(); + } + + /** + * 获取部门树列表 + */ + @RequiresPermissions("system:user:list") + @GetMapping("/deptTree") + public Result deptTree (SysDept dept) { + return success(deptService.selectDeptTreeList(dept)); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysUserOnlineController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysUserOnlineController.java new file mode 100644 index 0000000..5b78721 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysUserOnlineController.java @@ -0,0 +1,69 @@ +package com.muyu.system.controller; + +import com.muyu.common.core.constant.CacheConstants; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.common.log.annotation.Log; +import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.redis.service.RedisService; +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.common.system.domain.LoginUser; +import com.muyu.system.domain.SysUserOnline; +import com.muyu.system.service.SysUserOnlineService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +/** + * 在线用户监控 + * + * @author muyu + */ +@RestController +@RequestMapping("/online") +public class SysUserOnlineController extends BaseController { + @Autowired + private SysUserOnlineService userOnlineService; + + @Autowired + private RedisService redisService; + + @RequiresPermissions("monitor:online:list") + @GetMapping("/list") + public Result> list (String ipaddr, String userName) { + Collection keys = redisService.keys(CacheConstants.LOGIN_TOKEN_KEY + "*"); + List userOnlineList = new ArrayList(); + for (String key : keys) { + LoginUser user = redisService.getCacheObject(key); + if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) { + userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user)); + } else if (StringUtils.isNotEmpty(ipaddr)) { + userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user)); + } else if (StringUtils.isNotEmpty(userName)) { + userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, user)); + } else { + userOnlineList.add(userOnlineService.loginUserToUserOnline(user)); + } + } + Collections.reverse(userOnlineList); + userOnlineList.removeAll(Collections.singleton(null)); + return getDataTable(userOnlineList); + } + + /** + * 强退用户 + */ + @RequiresPermissions("monitor:online:forceLogout") + @Log(title = "在线用户", businessType = BusinessType.FORCE) + @DeleteMapping("/{tokenId}") + public Result forceLogout (@PathVariable("tokenId") String tokenId) { + redisService.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + tokenId); + return success(); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysConfig.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysConfig.java new file mode 100644 index 0000000..6f7e8bf --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysConfig.java @@ -0,0 +1,81 @@ +package com.muyu.system.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.annotation.Excel.ColumnType; +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; + +/** + * 参数配置表 sys_config + * + * @author muyu + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@TableName("sys_config") +public class SysConfig extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 参数主键 + */ + @Excel(name = "参数主键", cellType = ColumnType.NUMERIC) + @TableId( type = IdType.AUTO) + private Long configId; + + /** + * 参数名称 + */ + @Excel(name = "参数名称") + private String configName; + + /** + * 参数键名 + */ + @Excel(name = "参数键名") + private String configKey; + + /** + * 参数键值 + */ + @Excel(name = "参数键值") + private String configValue; + + /** + * 系统内置(Y是 N否) + */ + @Excel(name = "系统内置", readConverterExp = "Y=是,N=否") + private String configType; + + @NotBlank(message = "参数名称不能为空") + @Size(min = 0, max = 100, message = "参数名称不能超过100个字符") + public String getConfigName () { + return configName; + } + + @NotBlank(message = "参数键名长度不能为空") + @Size(min = 0, max = 100, message = "参数键名长度不能超过100个字符") + public String getConfigKey () { + return configKey; + } + + @NotBlank(message = "参数键值不能为空") + @Size(min = 0, max = 500, message = "参数键值长度不能超过500个字符") + public String getConfigValue () { + return configValue; + } + +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysMenu.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysMenu.java new file mode 100644 index 0000000..e4ad4e4 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysMenu.java @@ -0,0 +1,138 @@ +package com.muyu.system.domain; + +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.*; +import lombok.experimental.SuperBuilder; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import java.util.ArrayList; +import java.util.List; + +/** + * 菜单权限表 sys_menu + * + * @author muyu + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class SysMenu extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 菜单ID + */ + private Long menuId; + + /** + * 菜单名称 + */ + private String menuName; + + /** + * 父菜单名称 + */ + private String parentName; + + /** + * 父菜单ID + */ + private Long parentId; + + /** + * 显示顺序 + */ + private Integer orderNum; + + /** + * 路由地址 + */ + private String path; + + /** + * 组件路径 + */ + private String component; + + /** + * 路由参数 + */ + private String query; + + /** + * 是否为外链(0是 1否) + */ + private String isFrame; + + /** + * 是否缓存(0缓存 1不缓存) + */ + private String isCache; + + /** + * 类型(M目录 C菜单 F按钮) + */ + private String menuType; + + /** + * 显示状态(0显示 1隐藏) + */ + private String visible; + + /** + * 菜单状态(0正常 1停用) + */ + private String status; + + /** + * 权限字符串 + */ + private String perms; + + /** + * 菜单图标 + */ + private String icon; + + /** + * 子菜单 + */ + @Builder.Default + private List children = new ArrayList(); + + @NotBlank(message = "菜单名称不能为空") + @Size(min = 0, max = 50, message = "菜单名称长度不能超过50个字符") + public String getMenuName () { + return menuName; + } + + @NotNull(message = "显示顺序不能为空") + public Integer getOrderNum () { + return orderNum; + } + + @Size(min = 0, max = 200, message = "路由地址不能超过200个字符") + public String getPath () { + return path; + } + + @Size(min = 0, max = 200, message = "组件路径不能超过255个字符") + public String getComponent () { + return component; + } + + @NotBlank(message = "菜单类型不能为空") + public String getMenuType () { + return menuType; + } + + @Size(min = 0, max = 100, message = "权限标识长度不能超过100个字符") + public String getPerms () { + return perms; + } + +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysNotice.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysNotice.java new file mode 100644 index 0000000..a0c30e0 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysNotice.java @@ -0,0 +1,58 @@ +package com.muyu.system.domain; + +import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.common.core.xss.Xss; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; + +/** + * 通知公告表 sys_notice + * + * @author muyu + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class SysNotice extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 公告ID + */ + private Long noticeId; + + /** + * 公告标题 + */ + private String noticeTitle; + + /** + * 公告类型(1通知 2公告) + */ + private String noticeType; + + /** + * 公告内容 + */ + private String noticeContent; + + /** + * 公告状态(0正常 1关闭) + */ + private String status; + + @Xss(message = "公告标题不能包含脚本字符") + @NotBlank(message = "公告标题不能为空") + @Size(min = 0, max = 50, message = "公告标题不能超过50个字符") + public String getNoticeTitle () { + return noticeTitle; + } + } diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysPost.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysPost.java new file mode 100644 index 0000000..326987c --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysPost.java @@ -0,0 +1,78 @@ +package com.muyu.system.domain; + +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.annotation.Excel.ColumnType; +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.*; +import lombok.experimental.SuperBuilder; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; + +/** + * 岗位表 sys_post + * + * @author muyu + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class SysPost extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 岗位序号 + */ + @Excel(name = "岗位序号", cellType = ColumnType.NUMERIC) + private Long postId; + + /** + * 岗位编码 + */ + @Excel(name = "岗位编码") + private String postCode; + + /** + * 岗位名称 + */ + @Excel(name = "岗位名称") + private String postName; + + /** + * 岗位排序 + */ + @Excel(name = "岗位排序") + private Integer postSort; + + /** + * 状态(0正常 1停用) + */ + @Excel(name = "状态", readConverterExp = "0=正常,1=停用") + private String status; + + /** + * 用户是否存在此岗位标识 默认不存在 + */ + @Builder.Default + private boolean flag = false; + + @NotBlank(message = "岗位编码不能为空") + @Size(min = 0, max = 64, message = "岗位编码长度不能超过64个字符") + public String getPostCode () { + return postCode; + } + + @NotBlank(message = "岗位名称不能为空") + @Size(min = 0, max = 50, message = "岗位名称长度不能超过50个字符") + public String getPostName () { + return postName; + } + + @NotNull(message = "显示顺序不能为空") + public Integer getPostSort () { + return postSort; + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysRoleDept.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysRoleDept.java new file mode 100644 index 0000000..ef9f13c --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysRoleDept.java @@ -0,0 +1,27 @@ +package com.muyu.system.domain; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 角色和部门关联 sys_role_dept + * + * @author muyu + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SysRoleDept { + /** + * 角色ID + */ + private Long roleId; + + /** + * 部门ID + */ + private Long deptId; +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysRoleMenu.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysRoleMenu.java new file mode 100644 index 0000000..fe4074b --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysRoleMenu.java @@ -0,0 +1,28 @@ +package com.muyu.system.domain; + + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 角色和菜单关联 sys_role_menu + * + * @author muyu + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SysRoleMenu { + /** + * 角色ID + */ + private Long roleId; + + /** + * 菜单ID + */ + private Long menuId; +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysUserOnline.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysUserOnline.java new file mode 100644 index 0000000..23d1979 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysUserOnline.java @@ -0,0 +1,52 @@ +package com.muyu.system.domain; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 当前在线会话 + * + * @author muyu + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SysUserOnline { + /** + * 会话编号 + */ + private String tokenId; + + /** + * 用户名称 + */ + private String userName; + + /** + * 登录IP地址 + */ + private String ipaddr; + + /** + * 登录地址 + */ + private String loginLocation; + + /** + * 浏览器类型 + */ + private String browser; + + /** + * 操作系统 + */ + private String os; + + /** + * 登录时间 + */ + private Long loginTime; +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysUserPost.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysUserPost.java new file mode 100644 index 0000000..229dc70 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysUserPost.java @@ -0,0 +1,28 @@ +package com.muyu.system.domain; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 用户和岗位关联 sys_user_post + * + * @author muyu + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SysUserPost { + /** + * 用户ID + */ + private Long userId; + + /** + * 岗位ID + */ + private Long postId; + +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysUserRole.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysUserRole.java new file mode 100644 index 0000000..ee9c945 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/SysUserRole.java @@ -0,0 +1,27 @@ +package com.muyu.system.domain; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 用户和角色关联 sys_user_role + * + * @author muyu + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SysUserRole { + /** + * 用户ID + */ + private Long userId; + + /** + * 角色ID + */ + private Long roleId; +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/AuthRoleResp.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/AuthRoleResp.java new file mode 100644 index 0000000..69294b6 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/AuthRoleResp.java @@ -0,0 +1,33 @@ +package com.muyu.system.domain.resp; + + +import com.muyu.common.system.domain.SysRole; +import com.muyu.common.system.domain.SysUser; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.List; + +/** + * @author DongZl + * @description: 授权角色返回结果集 + * @Date 2023-6-19 下午 02:50 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class AuthRoleResp { + + /** + * 用户信息 + */ + private SysUser user; + + /** + * 角色集合 + */ + private List roles; +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/DeptTreeResp.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/DeptTreeResp.java new file mode 100644 index 0000000..cd72807 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/DeptTreeResp.java @@ -0,0 +1,32 @@ +package com.muyu.system.domain.resp; + + +import com.muyu.system.domain.vo.TreeSelect; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.List; + +/** + * @author DongZl + * @description: 部门树返回结果集 + * @Date 2023-6-19 下午 02:52 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class DeptTreeResp { + + /** + * 授权的ID + */ + private List checkedKeys; + + /** + * 部门树 + */ + private List depts; +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/ProfileResp.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/ProfileResp.java new file mode 100644 index 0000000..21d9808 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/ProfileResp.java @@ -0,0 +1,34 @@ +package com.muyu.system.domain.resp; + +import com.muyu.common.system.domain.SysUser; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * @author DongZl + * @description: 个人信息模型对象 + * @Date 2023-6-19 下午 02:05 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class ProfileResp { + + /** + * 系统用户 + */ + private SysUser sysUser; + + /** + * 用户权限组 + */ + private String roleGroup; + + /** + * 用户岗位组 + */ + private String postGroup; +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/RoleMenuTreeResp.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/RoleMenuTreeResp.java new file mode 100644 index 0000000..696763e --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/RoleMenuTreeResp.java @@ -0,0 +1,31 @@ +package com.muyu.system.domain.resp; + +import com.muyu.system.domain.vo.TreeSelect; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.List; + +/** + * @author DongZl + * @description: 角色返回菜单树 + * @Date 2023-6-19 下午 02:40 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class RoleMenuTreeResp { + + /** + * 拥有的菜单权限 + */ + private List checkedKeys; + + /** + * 系统所有的菜单 + */ + private List menus; +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/UserDetailInfoResp.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/UserDetailInfoResp.java new file mode 100644 index 0000000..4c61832 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/UserDetailInfoResp.java @@ -0,0 +1,47 @@ +package com.muyu.system.domain.resp; + +import com.muyu.common.system.domain.SysRole; +import com.muyu.common.system.domain.SysUser; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.List; + +/** + * @author DongZl + * @description: 用户详细信息 + * @Date 2023-6-19 下午 02:45 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class UserDetailInfoResp { + + /** + * 角色权限集合 + */ + private List roles; + + /** + * 岗位集合 + */ + private List posts; + + /** + * 用户信息 + */ + private SysUser sysUser; + + /** + * 用户又有的职位ID + */ + private List postIds; + + /** + * 用户拥有的角色ID + */ + private List roleIds; +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/UserInfoResp.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/UserInfoResp.java new file mode 100644 index 0000000..d15a760 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/resp/UserInfoResp.java @@ -0,0 +1,36 @@ +package com.muyu.system.domain.resp; + +import com.muyu.common.system.domain.SysUser; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.Set; + +/** + * @author DongZl + * @description: 用户信息结果集 + * @Date 2023-6-19 下午 02:42 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class UserInfoResp { + + /** + * 用户 + */ + private SysUser user; + + /** + * 角色集合 + */ + private Set roles; + + /** + * 权限集合 + */ + private Set permissions; +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/vo/MetaVo.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/vo/MetaVo.java new file mode 100644 index 0000000..c7d5f25 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/vo/MetaVo.java @@ -0,0 +1,54 @@ +package com.muyu.system.domain.vo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 路由显示信息 + * + * @author muyu + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MetaVo { + /** + * 设置该路由在侧边栏和面包屑中展示的名字 + */ + private String title; + + /** + * 设置该路由的图标,对应路径src/assets/icons/svg + */ + private String icon; + + /** + * 设置为true,则不会被 缓存 + */ + private boolean noCache; + + /** + * 内链地址(http(s)://开头) + */ + private String link; + + public MetaVo (String title, String icon) { + this.title = title; + this.icon = icon; + } + + public MetaVo (String title, String icon, boolean noCache) { + this.title = title; + this.icon = icon; + this.noCache = noCache; + } + + public MetaVo (String title, String icon, String link) { + this.title = title; + this.icon = icon; + this.link = link; + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/vo/RouterVo.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/vo/RouterVo.java new file mode 100644 index 0000000..6ea8d3f --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/vo/RouterVo.java @@ -0,0 +1,62 @@ +package com.muyu.system.domain.vo; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; +import lombok.Setter; + +import java.util.List; + +/** + * 路由配置信息 + * + * @author muyu + */ +@Data +@JsonInclude(JsonInclude.Include.NON_EMPTY) +public class RouterVo { + /** + * 路由名字 + */ + private String name; + + /** + * 路由地址 + */ + private String path; + + /** + * 是否隐藏路由,当设置 true 的时候该路由不会再侧边栏出现 + */ + private boolean hidden; + + /** + * 重定向地址,当设置 noRedirect 的时候该路由在面包屑导航中不可被点击 + */ + private String redirect; + + /** + * 组件地址 + */ + private String component; + + /** + * 路由参数:如 {"id": 1, "name": "ry"} + */ + private String query; + + /** + * 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面 + */ + private Boolean alwaysShow; + + /** + * 其他元素 + */ + private MetaVo meta; + + /** + * 子路由 + */ + private List children; + +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/vo/TreeSelect.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/vo/TreeSelect.java new file mode 100644 index 0000000..d1ef75f --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/domain/vo/TreeSelect.java @@ -0,0 +1,56 @@ +package com.muyu.system.domain.vo; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.muyu.common.system.domain.SysDept; +import com.muyu.system.domain.SysMenu; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Treeselect树结构实体类 + * + * @author muyu + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TreeSelect implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 节点ID + */ + private Long id; + + /** + * 节点名称 + */ + private String label; + + /** + * 子节点 + */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List children; + + + public TreeSelect (SysDept dept) { + this.id = dept.getDeptId(); + this.label = dept.getDeptName(); + this.children = dept.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); + } + + public TreeSelect (SysMenu menu) { + this.id = menu.getMenuId(); + this.label = menu.getMenuName(); + this.children = menu.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); + } + +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysConfigMapper.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysConfigMapper.java new file mode 100644 index 0000000..ced239a --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysConfigMapper.java @@ -0,0 +1,12 @@ +package com.muyu.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.system.domain.SysConfig; + +/** + * @author DongZl + * @description: 配置mybatis配置 + * @Date 2023-11-13 上午 10:05 + */ +public interface SysConfigMapper extends BaseMapper { +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysDeptMapper.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysDeptMapper.java new file mode 100644 index 0000000..5ef9ab4 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysDeptMapper.java @@ -0,0 +1,131 @@ +package com.muyu.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.common.system.domain.SysDept; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 部门管理 数据层 + * + * @author muyu + */ +public interface SysDeptMapper extends BaseMapper { + /** + * 查询部门管理数据 + * + * @param dept 部门信息 + * + * @return 部门信息集合 + */ + public List selectDeptList (SysDept dept); + + /** + * 根据角色ID查询部门树信息 + * + * @param roleId 角色ID + * @param deptCheckStrictly 部门树选择项是否关联显示 + * + * @return 选中部门列表 + */ + public List selectDeptListByRoleId (@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly); + + /** + * 根据部门ID查询信息 + * + * @param deptId 部门ID + * + * @return 部门信息 + */ + public SysDept selectDeptById (Long deptId); + + /** + * 根据ID查询所有子部门 + * + * @param deptId 部门ID + * + * @return 部门列表 + */ + public List selectChildrenDeptById (Long deptId); + + /** + * 根据ID查询所有子部门(正常状态) + * + * @param deptId 部门ID + * + * @return 子部门数 + */ + public int selectNormalChildrenDeptById (Long deptId); + + /** + * 是否存在子节点 + * + * @param deptId 部门ID + * + * @return 结果 + */ + public int hasChildByDeptId (Long deptId); + + /** + * 查询部门是否存在用户 + * + * @param deptId 部门ID + * + * @return 结果 + */ + public int checkDeptExistUser (Long deptId); + + /** + * 校验部门名称是否唯一 + * + * @param deptName 部门名称 + * @param parentId 父部门ID + * + * @return 结果 + */ + public SysDept checkDeptNameUnique (@Param("deptName") String deptName, @Param("parentId") Long parentId); + + /** + * 新增部门信息 + * + * @param dept 部门信息 + * + * @return 结果 + */ + public int insertDept (SysDept dept); + + /** + * 修改部门信息 + * + * @param dept 部门信息 + * + * @return 结果 + */ + public int updateDept (SysDept dept); + + /** + * 修改所在部门正常状态 + * + * @param deptIds 部门ID组 + */ + public void updateDeptStatusNormal (Long[] deptIds); + + /** + * 修改子元素关系 + * + * @param depts 子元素 + * + * @return 结果 + */ + public int updateDeptChildren (@Param("depts") List depts); + + /** + * 删除部门管理信息 + * + * @param deptId 部门ID + * + * @return 结果 + */ + public int deleteDeptById (Long deptId); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysDictDataMapper.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysDictDataMapper.java new file mode 100644 index 0000000..1e87a7e --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysDictDataMapper.java @@ -0,0 +1,106 @@ +package com.muyu.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.common.system.domain.SysDictData; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 字典表 数据层 + * + * @author muyu + */ +public interface SysDictDataMapper extends BaseMapper { + /** + * 根据条件分页查询字典数据 + * + * @param dictData 字典数据信息 + * + * @return 字典数据集合信息 + */ + public List selectDictDataList (SysDictData dictData); + + /** + * 根据字典类型查询字典数据 + * + * @param dictType 字典类型 + * + * @return 字典数据集合信息 + */ + public List selectDictDataByType (String dictType); + + /** + * 根据字典类型和字典键值查询字典数据信息 + * + * @param dictType 字典类型 + * @param dictValue 字典键值 + * + * @return 字典标签 + */ + public String selectDictLabel (@Param("dictType") String dictType, @Param("dictValue") String dictValue); + + /** + * 根据字典数据ID查询信息 + * + * @param dictCode 字典数据ID + * + * @return 字典数据 + */ + public SysDictData selectDictDataById (Long dictCode); + + /** + * 查询字典数据 + * + * @param dictType 字典类型 + * + * @return 字典数据 + */ + public int countDictDataByType (String dictType); + + /** + * 通过字典ID删除字典数据信息 + * + * @param dictCode 字典数据ID + * + * @return 结果 + */ + public int deleteDictDataById (Long dictCode); + + /** + * 批量删除字典数据信息 + * + * @param dictCodes 需要删除的字典数据ID + * + * @return 结果 + */ + public int deleteDictDataByIds (Long[] dictCodes); + + /** + * 新增字典数据信息 + * + * @param dictData 字典数据信息 + * + * @return 结果 + */ + public int insertDictData (SysDictData dictData); + + /** + * 修改字典数据信息 + * + * @param dictData 字典数据信息 + * + * @return 结果 + */ + public int updateDictData (SysDictData dictData); + + /** + * 同步修改字典类型 + * + * @param oldDictType 旧字典类型 + * @param newDictType 新旧字典类型 + * + * @return 结果 + */ + public int updateDictDataType (@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysDictTypeMapper.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysDictTypeMapper.java new file mode 100644 index 0000000..0a4ffe6 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysDictTypeMapper.java @@ -0,0 +1,92 @@ +package com.muyu.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.common.system.domain.SysDictType; + +import java.util.List; + +/** + * 字典表 数据层 + * + * @author muyu + */ +public interface SysDictTypeMapper extends BaseMapper { + /** + * 根据条件分页查询字典类型 + * + * @param dictType 字典类型信息 + * + * @return 字典类型集合信息 + */ + public List selectDictTypeList (SysDictType dictType); + + /** + * 根据所有字典类型 + * + * @return 字典类型集合信息 + */ + public List selectDictTypeAll (); + + /** + * 根据字典类型ID查询信息 + * + * @param dictId 字典类型ID + * + * @return 字典类型 + */ + public SysDictType selectDictTypeById (Long dictId); + + /** + * 根据字典类型查询信息 + * + * @param dictType 字典类型 + * + * @return 字典类型 + */ + public SysDictType selectDictTypeByType (String dictType); + + /** + * 通过字典ID删除字典信息 + * + * @param dictId 字典ID + * + * @return 结果 + */ + public int deleteDictTypeById (Long dictId); + + /** + * 批量删除字典类型信息 + * + * @param dictIds 需要删除的字典ID + * + * @return 结果 + */ + public int deleteDictTypeByIds (Long[] dictIds); + + /** + * 新增字典类型信息 + * + * @param dictType 字典类型信息 + * + * @return 结果 + */ + public int insertDictType (SysDictType dictType); + + /** + * 修改字典类型信息 + * + * @param dictType 字典类型信息 + * + * @return 结果 + */ + public int updateDictType (SysDictType dictType); + + /** + * 校验字典类型称是否唯一 + * + * @param dictType 字典类型 + * + * @return 结果 + */ + public SysDictType checkDictTypeUnique (String dictType); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysLogininforMapper.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysLogininforMapper.java new file mode 100644 index 0000000..0f1f86a --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysLogininforMapper.java @@ -0,0 +1,45 @@ +package com.muyu.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.common.system.domain.SysLogininfor; + +import java.util.List; + +/** + * 系统访问日志情况信息 数据层 + * + * @author muyu + */ +public interface SysLogininforMapper extends BaseMapper { + /** + * 新增系统登录日志 + * + * @param logininfor 访问日志对象 + */ + public int insertLogininfor (SysLogininfor logininfor); + + /** + * 查询系统登录日志集合 + * + * @param logininfor 访问日志对象 + * + * @return 登录记录集合 + */ + public List selectLogininforList (SysLogininfor logininfor); + + /** + * 批量删除系统登录日志 + * + * @param infoIds 需要删除的登录日志ID + * + * @return 结果 + */ + public int deleteLogininforByIds (Long[] infoIds); + + /** + * 清空系统登录日志 + * + * @return 结果 + */ + public int cleanLogininfor (); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysMenuMapper.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysMenuMapper.java new file mode 100644 index 0000000..8ceaaa0 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysMenuMapper.java @@ -0,0 +1,138 @@ +package com.muyu.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.system.domain.SysMenu; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 菜单表 数据层 + * + * @author muyu + */ +public interface SysMenuMapper extends BaseMapper { + /** + * 查询系统菜单列表 + * + * @param menu 菜单信息 + * + * @return 菜单列表 + */ + public List selectMenuList (SysMenu menu); + + /** + * 根据用户所有权限 + * + * @return 权限列表 + */ + public List selectMenuPerms (); + + /** + * 根据用户查询系统菜单列表 + * + * @param menu 菜单信息 + * + * @return 菜单列表 + */ + public List selectMenuListByUserId (SysMenu menu); + + /** + * 根据角色ID查询权限 + * + * @param roleId 角色ID + * + * @return 权限列表 + */ + public List selectMenuPermsByRoleId (Long roleId); + + /** + * 根据用户ID查询权限 + * + * @param userId 用户ID + * + * @return 权限列表 + */ + public List selectMenuPermsByUserId (Long userId); + + /** + * 根据用户ID查询菜单 + * + * @return 菜单列表 + */ + public List selectMenuTreeAll (); + + /** + * 根据用户ID查询菜单 + * + * @param userId 用户ID + * + * @return 菜单列表 + */ + public List selectMenuTreeByUserId (Long userId); + + /** + * 根据角色ID查询菜单树信息 + * + * @param roleId 角色ID + * @param menuCheckStrictly 菜单树选择项是否关联显示 + * + * @return 选中菜单列表 + */ + public List selectMenuListByRoleId (@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly); + + /** + * 根据菜单ID查询信息 + * + * @param menuId 菜单ID + * + * @return 菜单信息 + */ + public SysMenu selectMenuById (Long menuId); + + /** + * 是否存在菜单子节点 + * + * @param menuId 菜单ID + * + * @return 结果 + */ + public int hasChildByMenuId (Long menuId); + + /** + * 新增菜单信息 + * + * @param menu 菜单信息 + * + * @return 结果 + */ + public int insertMenu (SysMenu menu); + + /** + * 修改菜单信息 + * + * @param menu 菜单信息 + * + * @return 结果 + */ + public int updateMenu (SysMenu menu); + + /** + * 删除菜单管理信息 + * + * @param menuId 菜单ID + * + * @return 结果 + */ + public int deleteMenuById (Long menuId); + + /** + * 校验菜单名称是否唯一 + * + * @param menuName 菜单名称 + * @param parentId 父菜单ID + * + * @return 结果 + */ + public SysMenu checkMenuNameUnique (@Param("menuName") String menuName, @Param("parentId") Long parentId); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysNoticeMapper.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysNoticeMapper.java new file mode 100644 index 0000000..fee9930 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysNoticeMapper.java @@ -0,0 +1,67 @@ +package com.muyu.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.system.domain.SysNotice; + +import java.util.List; + +/** + * 通知公告表 数据层 + * + * @author muyu + */ +public interface SysNoticeMapper extends BaseMapper { + /** + * 查询公告信息 + * + * @param noticeId 公告ID + * + * @return 公告信息 + */ + public SysNotice selectNoticeById (Long noticeId); + + /** + * 查询公告列表 + * + * @param notice 公告信息 + * + * @return 公告集合 + */ + public List selectNoticeList (SysNotice notice); + + /** + * 新增公告 + * + * @param notice 公告信息 + * + * @return 结果 + */ + public int insertNotice (SysNotice notice); + + /** + * 修改公告 + * + * @param notice 公告信息 + * + * @return 结果 + */ + public int updateNotice (SysNotice notice); + + /** + * 批量删除公告 + * + * @param noticeId 公告ID + * + * @return 结果 + */ + public int deleteNoticeById (Long noticeId); + + /** + * 批量删除公告信息 + * + * @param noticeIds 需要删除的公告ID + * + * @return 结果 + */ + public int deleteNoticeByIds (Long[] noticeIds); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysOperLogMapper.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysOperLogMapper.java new file mode 100644 index 0000000..6ea1bcd --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysOperLogMapper.java @@ -0,0 +1,52 @@ +package com.muyu.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.common.system.domain.SysOperLog; + +import java.util.List; + +/** + * 操作日志 数据层 + * + * @author muyu + */ +public interface SysOperLogMapper extends BaseMapper { + /** + * 新增操作日志 + * + * @param operLog 操作日志对象 + */ + public int insertOperlog (SysOperLog operLog); + + /** + * 查询系统操作日志集合 + * + * @param operLog 操作日志对象 + * + * @return 操作日志集合 + */ + public List selectOperLogList (SysOperLog operLog); + + /** + * 批量删除系统操作日志 + * + * @param operIds 需要删除的操作日志ID + * + * @return 结果 + */ + public int deleteOperLogByIds (Long[] operIds); + + /** + * 查询操作日志详细 + * + * @param operId 操作ID + * + * @return 操作日志对象 + */ + public SysOperLog selectOperLogById (Long operId); + + /** + * 清空操作日志 + */ + public void cleanOperLog (); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysPostMapper.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysPostMapper.java new file mode 100644 index 0000000..4bfd66d --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysPostMapper.java @@ -0,0 +1,110 @@ +package com.muyu.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.system.domain.SysPost; + +import java.util.List; + +/** + * 岗位信息 数据层 + * + * @author muyu + */ +public interface SysPostMapper extends BaseMapper { + /** + * 查询岗位数据集合 + * + * @param post 岗位信息 + * + * @return 岗位数据集合 + */ + public List selectPostList (SysPost post); + + /** + * 查询所有岗位 + * + * @return 岗位列表 + */ + public List selectPostAll (); + + /** + * 通过岗位ID查询岗位信息 + * + * @param postId 岗位ID + * + * @return 角色对象信息 + */ + public SysPost selectPostById (Long postId); + + /** + * 根据用户ID获取岗位选择框列表 + * + * @param userId 用户ID + * + * @return 选中岗位ID列表 + */ + public List selectPostListByUserId (Long userId); + + /** + * 查询用户所属岗位组 + * + * @param userName 用户名 + * + * @return 结果 + */ + public List selectPostsByUserName (String userName); + + /** + * 删除岗位信息 + * + * @param postId 岗位ID + * + * @return 结果 + */ + public int deletePostById (Long postId); + + /** + * 批量删除岗位信息 + * + * @param postIds 需要删除的岗位ID + * + * @return 结果 + */ + public int deletePostByIds (Long[] postIds); + + /** + * 修改岗位信息 + * + * @param post 岗位信息 + * + * @return 结果 + */ + public int updatePost (SysPost post); + + /** + * 新增岗位信息 + * + * @param post 岗位信息 + * + * @return 结果 + */ + public int insertPost (SysPost post); + + /** + * 校验岗位名称 + * + * @param postName 岗位名称 + * + * @return 结果 + */ + public SysPost checkPostNameUnique (String postName); + + /** + * 校验岗位编码 + * + * @param postCode 岗位编码 + * + * @return 结果 + */ + public SysPost checkPostCodeUnique (String postCode); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysRoleDeptMapper.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysRoleDeptMapper.java new file mode 100644 index 0000000..0e6dd4d --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysRoleDeptMapper.java @@ -0,0 +1,50 @@ +package com.muyu.system.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.system.domain.SysRoleDept; + +import java.util.List; + +/** + * 角色与部门关联表 数据层 + * + * @author muyu + */ +public interface SysRoleDeptMapper extends BaseMapper { + /** + * 通过角色ID删除角色和部门关联 + * + * @param roleId 角色ID + * + * @return 结果 + */ + public int deleteRoleDeptByRoleId (Long roleId); + + /** + * 批量删除角色部门关联信息 + * + * @param ids 需要删除的数据ID + * + * @return 结果 + */ + public int deleteRoleDept (Long[] ids); + + /** + * 查询部门使用数量 + * + * @param deptId 部门ID + * + * @return 结果 + */ + public int selectCountRoleDeptByDeptId (Long deptId); + + /** + * 批量新增角色部门信息 + * + * @param roleDeptList 角色部门列表 + * + * @return 结果 + */ + public int batchRoleDept (List roleDeptList); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysRoleMapper.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysRoleMapper.java new file mode 100644 index 0000000..2b01dc3 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysRoleMapper.java @@ -0,0 +1,119 @@ +package com.muyu.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.common.system.domain.SysRole; + +import java.util.List; + +/** + * 角色表 数据层 + * + * @author muyu + */ +public interface SysRoleMapper extends BaseMapper { + /** + * 根据条件分页查询角色数据 + * + * @param role 角色信息 + * + * @return 角色数据集合信息 + */ + public List selectRoleList (SysRole role); + + /** + * 根据用户ID查询角色 + * + * @param userId 用户ID + * + * @return 角色列表 + */ + public List selectRolePermissionByUserId (Long userId); + + /** + * 查询所有角色 + * + * @return 角色列表 + */ + public List selectRoleAll (); + + /** + * 根据用户ID获取角色选择框列表 + * + * @param userId 用户ID + * + * @return 选中角色ID列表 + */ + public List selectRoleListByUserId (Long userId); + + /** + * 通过角色ID查询角色 + * + * @param roleId 角色ID + * + * @return 角色对象信息 + */ + public SysRole selectRoleById (Long roleId); + + /** + * 根据用户ID查询角色 + * + * @param userName 用户名 + * + * @return 角色列表 + */ + public List selectRolesByUserName (String userName); + + /** + * 校验角色名称是否唯一 + * + * @param roleName 角色名称 + * + * @return 角色信息 + */ + public SysRole checkRoleNameUnique (String roleName); + + /** + * 校验角色权限是否唯一 + * + * @param roleKey 角色权限 + * + * @return 角色信息 + */ + public SysRole checkRoleKeyUnique (String roleKey); + + /** + * 修改角色信息 + * + * @param role 角色信息 + * + * @return 结果 + */ + public int updateRole (SysRole role); + + /** + * 新增角色信息 + * + * @param role 角色信息 + * + * @return 结果 + */ + public int insertRole (SysRole role); + + /** + * 通过角色ID删除角色 + * + * @param roleId 角色ID + * + * @return 结果 + */ + public int deleteRoleById (Long roleId); + + /** + * 批量删除角色信息 + * + * @param roleIds 需要删除的角色ID + * + * @return 结果 + */ + public int deleteRoleByIds (Long[] roleIds); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysRoleMenuMapper.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysRoleMenuMapper.java new file mode 100644 index 0000000..664ce26 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysRoleMenuMapper.java @@ -0,0 +1,50 @@ +package com.muyu.system.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.system.domain.SysRoleMenu; + +import java.util.List; + +/** + * 角色与菜单关联表 数据层 + * + * @author muyu + */ +public interface SysRoleMenuMapper extends BaseMapper { + /** + * 查询菜单使用数量 + * + * @param menuId 菜单ID + * + * @return 结果 + */ + public int checkMenuExistRole (Long menuId); + + /** + * 通过角色ID删除角色和菜单关联 + * + * @param roleId 角色ID + * + * @return 结果 + */ + public int deleteRoleMenuByRoleId (Long roleId); + + /** + * 批量删除角色菜单关联信息 + * + * @param ids 需要删除的数据ID + * + * @return 结果 + */ + public int deleteRoleMenu (Long[] ids); + + /** + * 批量新增角色菜单信息 + * + * @param roleMenuList 角色菜单列表 + * + * @return 结果 + */ + public int batchRoleMenu (List roleMenuList); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysUserMapper.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysUserMapper.java new file mode 100644 index 0000000..1529770 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysUserMapper.java @@ -0,0 +1,149 @@ +package com.muyu.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.common.system.domain.SysUser; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 用户表 数据层 + * + * @author muyu + */ +public interface SysUserMapper extends BaseMapper { + /** + * 根据条件分页查询用户列表 + * + * @param sysUser 用户信息 + * + * @return 用户信息集合信息 + */ + public List selectUserList (SysUser sysUser); + + /** + * 根据条件分页查询已配用户角色列表 + * + * @param user 用户信息 + * + * @return 用户信息集合信息 + */ + public List selectAllocatedList (SysUser user); + + /** + * 根据条件分页查询未分配用户角色列表 + * + * @param user 用户信息 + * + * @return 用户信息集合信息 + */ + public List selectUnallocatedList (SysUser user); + + /** + * 通过用户名查询用户 + * + * @param userName 用户名 + * + * @return 用户对象信息 + */ + public SysUser selectUserByUserName (String userName); + + /** + * 通过用户ID查询用户 + * + * @param userId 用户ID + * + * @return 用户对象信息 + */ + public SysUser selectUserById (Long userId); + + /** + * 新增用户信息 + * + * @param user 用户信息 + * + * @return 结果 + */ + public int insertUser (SysUser user); + + /** + * 修改用户信息 + * + * @param user 用户信息 + * + * @return 结果 + */ + public int updateUser (SysUser user); + + /** + * 修改用户头像 + * + * @param userName 用户名 + * @param avatar 头像地址 + * + * @return 结果 + */ + public int updateUserAvatar (@Param("userName") String userName, @Param("avatar") String avatar); + + /** + * 重置用户密码 + * + * @param userName 用户名 + * @param password 密码 + * + * @return 结果 + */ + public int resetUserPwd (@Param("userName") String userName, @Param("password") String password); + + /** + * 通过用户ID删除用户 + * + * @param userId 用户ID + * + * @return 结果 + */ + public int deleteUserById (Long userId); + + /** + * 批量删除用户信息 + * + * @param userIds 需要删除的用户ID + * + * @return 结果 + */ + public int deleteUserByIds (Long[] userIds); + + /** + * 校验用户名称是否唯一 + * + * @param userName 用户名称 + * + * @return 结果 + */ + public SysUser checkUserNameUnique (String userName); + + /** + * 校验手机号码是否唯一 + * + * @param phonenumber 手机号码 + * + * @return 结果 + */ + public SysUser checkPhoneUnique (String phonenumber); + + /** + * 校验email是否唯一 + * + * @param email 用户邮箱 + * + * @return 结果 + */ + public SysUser checkEmailUnique (String email); + + /** + * 查询数据库名称 + * @return + */ + List selectCompanyList(); + +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysUserPostMapper.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysUserPostMapper.java new file mode 100644 index 0000000..8d09a47 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysUserPostMapper.java @@ -0,0 +1,49 @@ +package com.muyu.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.system.domain.SysUserPost; + +import java.util.List; + +/** + * 用户与岗位关联表 数据层 + * + * @author muyu + */ +public interface SysUserPostMapper extends BaseMapper { + /** + * 通过用户ID删除用户和岗位关联 + * + * @param userId 用户ID + * + * @return 结果 + */ + public int deleteUserPostByUserId (Long userId); + + /** + * 通过岗位ID查询岗位使用数量 + * + * @param postId 岗位ID + * + * @return 结果 + */ + public int countUserPostById (Long postId); + + /** + * 批量删除用户和岗位关联 + * + * @param ids 需要删除的数据ID + * + * @return 结果 + */ + public int deleteUserPost (Long[] ids); + + /** + * 批量新增用户岗位信息 + * + * @param userPostList 用户角色列表 + * + * @return 结果 + */ + public int batchUserPost (List userPostList); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysUserRoleMapper.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysUserRoleMapper.java new file mode 100644 index 0000000..512adb8 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysUserRoleMapper.java @@ -0,0 +1,69 @@ +package com.muyu.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.system.domain.SysUserRole; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 用户与角色关联表 数据层 + * + * @author muyu + */ +public interface SysUserRoleMapper extends BaseMapper { + /** + * 通过用户ID删除用户和角色关联 + * + * @param userId 用户ID + * + * @return 结果 + */ + public int deleteUserRoleByUserId (Long userId); + + /** + * 批量删除用户和角色关联 + * + * @param ids 需要删除的数据ID + * + * @return 结果 + */ + public int deleteUserRole (Long[] ids); + + /** + * 通过角色ID查询角色使用数量 + * + * @param roleId 角色ID + * + * @return 结果 + */ + public int countUserRoleByRoleId (Long roleId); + + /** + * 批量新增用户角色信息 + * + * @param userRoleList 用户角色列表 + * + * @return 结果 + */ + public int batchUserRole (List userRoleList); + + /** + * 删除用户和角色关联信息 + * + * @param userRole 用户和角色关联信息 + * + * @return 结果 + */ + public int deleteUserRoleInfo (SysUserRole userRole); + + /** + * 批量取消授权用户角色 + * + * @param roleId 角色ID + * @param userIds 需要删除的用户数据ID + * + * @return 结果 + */ + public int deleteUserRoleInfos (@Param("roleId") Long roleId, @Param("userIds") Long[] userIds); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/rabbit/RabbitTest.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/rabbit/RabbitTest.java new file mode 100644 index 0000000..791711f --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/rabbit/RabbitTest.java @@ -0,0 +1,53 @@ +package com.muyu.system.rabbit; + +import com.alibaba.fastjson2.JSONObject; +import com.muyu.system.domain.SysConfig; +import jakarta.annotation.PostConstruct; +import lombok.extern.log4j.Log4j2; +import org.springframework.amqp.core.Queue; +import org.springframework.amqp.rabbit.annotation.RabbitHandler; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Log4j2 +@RestController +@RequestMapping("/rabbit/test") +public class RabbitTest { + + @Autowired + private RabbitTemplate rabbitTemplate; + + @Bean + public Queue initQueue(){ + return new Queue("rabbit.test.init"); + } + + @RabbitListener(queues = "rabbit.test.init") + public void msg(SysConfig sysConfig){ + log.info("消息队列:[{}], 消息内容:[{}]", "rabbit.test.init", JSONObject.toJSONString(sysConfig)); + } + + @PostConstruct + public void init(){ + new Thread(() -> { + try { + Thread.sleep(5000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + SysConfig sysConfig = SysConfig.builder() + .configId(1L) + .configKey("ceshi-key") + .configName("测试名称") + .configType("测试类型") + .configValue("测试值") + .build(); + rabbitTemplate.convertAndSend("rabbit.test.init",sysConfig); + }).start(); + } + +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysConfigService.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysConfigService.java new file mode 100644 index 0000000..f23d67e --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysConfigService.java @@ -0,0 +1,44 @@ +package com.muyu.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.system.domain.SysConfig; + +import java.util.List; + +/** + * @author DongZl + * @description: 配置plus业务层 + * @Date 2023-11-13 上午 10:06 + */ +public interface SysConfigService extends IService { + List pageQuery (SysConfig config); + + /** + * 通过Key进行查询值 + * @param configKey + * @return + */ + String selectConfigByKey (String configKey); + + /** + * 检测参数是否唯一 + * @param config + * @return + */ + boolean checkConfigKeyUnique (SysConfig config); + + /** + * 刷新缓存 + */ + void resetConfigCache (); + + /** + * 清空参数缓存数据 + */ + public void clearConfigCache (); + + /** + * 加载参数缓存数据 + */ + public void loadingConfigCache (); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysDeptService.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysDeptService.java new file mode 100644 index 0000000..140cf91 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysDeptService.java @@ -0,0 +1,138 @@ +package com.muyu.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.common.system.domain.SysDept; +import com.muyu.system.domain.vo.TreeSelect; + +import java.util.List; + +/** + * 部门管理 服务层 + * + * @author muyu + */ +public interface SysDeptService extends IService { + /** + * 查询部门管理数据 + * + * @param dept 部门信息 + * + * @return 部门信息集合 + */ + public List selectDeptList (SysDept dept); + + /** + * 查询部门树结构信息 + * + * @param dept 部门信息 + * + * @return 部门树信息集合 + */ + public List selectDeptTreeList (SysDept dept); + + /** + * 构建前端所需要树结构 + * + * @param depts 部门列表 + * + * @return 树结构列表 + */ + public List buildDeptTree (List depts); + + /** + * 构建前端所需要下拉树结构 + * + * @param depts 部门列表 + * + * @return 下拉树结构列表 + */ + public List buildDeptTreeSelect (List depts); + + /** + * 根据角色ID查询部门树信息 + * + * @param roleId 角色ID + * + * @return 选中部门列表 + */ + public List selectDeptListByRoleId (Long roleId); + + /** + * 根据部门ID查询信息 + * + * @param deptId 部门ID + * + * @return 部门信息 + */ + public SysDept selectDeptById (Long deptId); + + /** + * 根据ID查询所有子部门(正常状态) + * + * @param deptId 部门ID + * + * @return 子部门数 + */ + public int selectNormalChildrenDeptById (Long deptId); + + /** + * 是否存在部门子节点 + * + * @param deptId 部门ID + * + * @return 结果 + */ + public boolean hasChildByDeptId (Long deptId); + + /** + * 查询部门是否存在用户 + * + * @param deptId 部门ID + * + * @return 结果 true 存在 false 不存在 + */ + public boolean checkDeptExistUser (Long deptId); + + /** + * 校验部门名称是否唯一 + * + * @param dept 部门信息 + * + * @return 结果 + */ + public boolean checkDeptNameUnique (SysDept dept); + + /** + * 校验部门是否有数据权限 + * + * @param deptId 部门id + */ + public void checkDeptDataScope (Long deptId); + + /** + * 新增保存部门信息 + * + * @param dept 部门信息 + * + * @return 结果 + */ + public int insertDept (SysDept dept); + + /** + * 修改保存部门信息 + * + * @param dept 部门信息 + * + * @return 结果 + */ + public int updateDept (SysDept dept); + + /** + * 删除部门管理信息 + * + * @param deptId 部门ID + * + * @return 结果 + */ + public int deleteDeptById (Long deptId); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysDictDataService.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysDictDataService.java new file mode 100644 index 0000000..47aae4b --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysDictDataService.java @@ -0,0 +1,66 @@ +package com.muyu.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.common.system.domain.SysDictData; + +import java.util.List; + +/** + * 字典 业务层 + * + * @author muyu + */ +public interface SysDictDataService extends IService { + /** + * 根据条件分页查询字典数据 + * + * @param dictData 字典数据信息 + * + * @return 字典数据集合信息 + */ + public List selectDictDataList (SysDictData dictData); + + /** + * 根据字典类型和字典键值查询字典数据信息 + * + * @param dictType 字典类型 + * @param dictValue 字典键值 + * + * @return 字典标签 + */ + public String selectDictLabel (String dictType, String dictValue); + + /** + * 根据字典数据ID查询信息 + * + * @param dictCode 字典数据ID + * + * @return 字典数据 + */ + public SysDictData selectDictDataById (Long dictCode); + + /** + * 批量删除字典数据信息 + * + * @param dictCodes 需要删除的字典数据ID + */ + public void deleteDictDataByIds (Long[] dictCodes); + + /** + * 新增保存字典数据信息 + * + * @param dictData 字典数据信息 + * + * @return 结果 + */ + public int insertDictData (SysDictData dictData); + + /** + * 修改保存字典数据信息 + * + * @param dictData 字典数据信息 + * + * @return 结果 + */ + public int updateDictData (SysDictData dictData); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysDictTypeService.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysDictTypeService.java new file mode 100644 index 0000000..1b3212d --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysDictTypeService.java @@ -0,0 +1,106 @@ +package com.muyu.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.common.system.domain.SysDictData; +import com.muyu.common.system.domain.SysDictType; + +import java.util.List; + +/** + * 字典 业务层 + * + * @author muyu + */ +public interface SysDictTypeService extends IService { + /** + * 根据条件分页查询字典类型 + * + * @param dictType 字典类型信息 + * + * @return 字典类型集合信息 + */ + public List selectDictTypeList (SysDictType dictType); + + /** + * 根据所有字典类型 + * + * @return 字典类型集合信息 + */ + public List selectDictTypeAll (); + + /** + * 根据字典类型查询字典数据 + * + * @param dictType 字典类型 + * + * @return 字典数据集合信息 + */ + public List selectDictDataByType (String dictType); + + /** + * 根据字典类型ID查询信息 + * + * @param dictId 字典类型ID + * + * @return 字典类型 + */ + public SysDictType selectDictTypeById (Long dictId); + + /** + * 根据字典类型查询信息 + * + * @param dictType 字典类型 + * + * @return 字典类型 + */ + public SysDictType selectDictTypeByType (String dictType); + + /** + * 批量删除字典信息 + * + * @param dictIds 需要删除的字典ID + */ + public void deleteDictTypeByIds (Long[] dictIds); + + /** + * 加载字典缓存数据 + */ + public void loadingDictCache (); + + /** + * 清空字典缓存数据 + */ + public void clearDictCache (); + + /** + * 重置字典缓存数据 + */ + public void resetDictCache (); + + /** + * 新增保存字典类型信息 + * + * @param dictType 字典类型信息 + * + * @return 结果 + */ + public int insertDictType (SysDictType dictType); + + /** + * 修改保存字典类型信息 + * + * @param dictType 字典类型信息 + * + * @return 结果 + */ + public int updateDictType (SysDictType dictType); + + /** + * 校验字典类型称是否唯一 + * + * @param dictType 字典类型 + * + * @return 结果 + */ + public boolean checkDictTypeUnique (SysDictType dictType); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysLogininforService.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysLogininforService.java new file mode 100644 index 0000000..bb3031e --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysLogininforService.java @@ -0,0 +1,43 @@ +package com.muyu.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.common.system.domain.SysLogininfor; + +import java.util.List; + +/** + * 系统访问日志情况信息 服务层 + * + * @author muyu + */ +public interface SysLogininforService extends IService { + /** + * 新增系统登录日志 + * + * @param logininfor 访问日志对象 + */ + public int insertLogininfor (SysLogininfor logininfor); + + /** + * 查询系统登录日志集合 + * + * @param logininfor 访问日志对象 + * + * @return 登录记录集合 + */ + public List selectLogininforList (SysLogininfor logininfor); + + /** + * 批量删除系统登录日志 + * + * @param infoIds 需要删除的登录日志ID + * + * @return 结果 + */ + public int deleteLogininforByIds (Long[] infoIds); + + /** + * 清空系统登录日志 + */ + public void cleanLogininfor (); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysMenuService.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysMenuService.java new file mode 100644 index 0000000..29bfb07 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysMenuService.java @@ -0,0 +1,161 @@ +package com.muyu.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.system.domain.SysMenu; +import com.muyu.system.domain.vo.RouterVo; +import com.muyu.system.domain.vo.TreeSelect; + +import java.util.List; +import java.util.Set; + +/** + * 菜单 业务层 + * + * @author muyu + */ +public interface SysMenuService extends IService { + /** + * 根据用户查询系统菜单列表 + * + * @param userId 用户ID + * + * @return 菜单列表 + */ + public List selectMenuList (Long userId); + + /** + * 根据用户查询系统菜单列表 + * + * @param menu 菜单信息 + * @param userId 用户ID + * + * @return 菜单列表 + */ + public List selectMenuList (SysMenu menu, Long userId); + + /** + * 根据用户ID查询权限 + * + * @param userId 用户ID + * + * @return 权限列表 + */ + public Set selectMenuPermsByUserId (Long userId); + + /** + * 根据角色ID查询权限 + * + * @param roleId 角色ID + * + * @return 权限列表 + */ + public Set selectMenuPermsByRoleId (Long roleId); + + /** + * 根据用户ID查询菜单树信息 + * + * @param userId 用户ID + * + * @return 菜单列表 + */ + public List selectMenuTreeByUserId (Long userId); + + /** + * 根据角色ID查询菜单树信息 + * + * @param roleId 角色ID + * + * @return 选中菜单列表 + */ + public List selectMenuListByRoleId (Long roleId); + + /** + * 构建前端路由所需要的菜单 + * + * @param menus 菜单列表 + * + * @return 路由列表 + */ + public List buildMenus (List menus); + + /** + * 构建前端所需要树结构 + * + * @param menus 菜单列表 + * + * @return 树结构列表 + */ + public List buildMenuTree (List menus); + + /** + * 构建前端所需要下拉树结构 + * + * @param menus 菜单列表 + * + * @return 下拉树结构列表 + */ + public List buildMenuTreeSelect (List menus); + + /** + * 根据菜单ID查询信息 + * + * @param menuId 菜单ID + * + * @return 菜单信息 + */ + public SysMenu selectMenuById (Long menuId); + + /** + * 是否存在菜单子节点 + * + * @param menuId 菜单ID + * + * @return 结果 true 存在 false 不存在 + */ + public boolean hasChildByMenuId (Long menuId); + + /** + * 查询菜单是否存在角色 + * + * @param menuId 菜单ID + * + * @return 结果 true 存在 false 不存在 + */ + public boolean checkMenuExistRole (Long menuId); + + /** + * 新增保存菜单信息 + * + * @param menu 菜单信息 + * + * @return 结果 + */ + public int insertMenu (SysMenu menu); + + /** + * 修改保存菜单信息 + * + * @param menu 菜单信息 + * + * @return 结果 + */ + public int updateMenu (SysMenu menu); + + /** + * 删除菜单管理信息 + * + * @param menuId 菜单ID + * + * @return 结果 + */ + public int deleteMenuById (Long menuId); + + /** + * 校验菜单名称是否唯一 + * + * @param menu 菜单信息 + * + * @return 结果 + */ + public boolean checkMenuNameUnique (SysMenu menu); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysNoticeService.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysNoticeService.java new file mode 100644 index 0000000..a1afe02 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysNoticeService.java @@ -0,0 +1,67 @@ +package com.muyu.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.system.domain.SysNotice; + +import java.util.List; + +/** + * 公告 服务层 + * + * @author muyu + */ +public interface SysNoticeService extends IService { + /** + * 查询公告信息 + * + * @param noticeId 公告ID + * + * @return 公告信息 + */ + public SysNotice selectNoticeById (Long noticeId); + + /** + * 查询公告列表 + * + * @param notice 公告信息 + * + * @return 公告集合 + */ + public List selectNoticeList (SysNotice notice); + + /** + * 新增公告 + * + * @param notice 公告信息 + * + * @return 结果 + */ + public int insertNotice (SysNotice notice); + + /** + * 修改公告 + * + * @param notice 公告信息 + * + * @return 结果 + */ + public int updateNotice (SysNotice notice); + + /** + * 删除公告信息 + * + * @param noticeId 公告ID + * + * @return 结果 + */ + public int deleteNoticeById (Long noticeId); + + /** + * 批量删除公告信息 + * + * @param noticeIds 需要删除的公告ID + * + * @return 结果 + */ + public int deleteNoticeByIds (Long[] noticeIds); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysOperLogService.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysOperLogService.java new file mode 100644 index 0000000..70b63ee --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysOperLogService.java @@ -0,0 +1,54 @@ +package com.muyu.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.common.system.domain.SysOperLog; + +import java.util.List; + +/** + * 操作日志 服务层 + * + * @author muyu + */ +public interface SysOperLogService extends IService { + /** + * 新增操作日志 + * + * @param operLog 操作日志对象 + * + * @return 结果 + */ + public int insertOperlog (SysOperLog operLog); + + /** + * 查询系统操作日志集合 + * + * @param operLog 操作日志对象 + * + * @return 操作日志集合 + */ + public List selectOperLogList (SysOperLog operLog); + + /** + * 批量删除系统操作日志 + * + * @param operIds 需要删除的操作日志ID + * + * @return 结果 + */ + public int deleteOperLogByIds (Long[] operIds); + + /** + * 查询操作日志详细 + * + * @param operId 操作ID + * + * @return 操作日志对象 + */ + public SysOperLog selectOperLogById (Long operId); + + /** + * 清空操作日志 + */ + public void cleanOperLog (); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysPermissionService.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysPermissionService.java new file mode 100644 index 0000000..02e9d14 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysPermissionService.java @@ -0,0 +1,30 @@ +package com.muyu.system.service; + +import com.muyu.common.system.domain.SysUser; + +import java.util.Set; + +/** + * 权限信息 服务层 + * + * @author muyu + */ +public interface SysPermissionService { + /** + * 获取角色数据权限 + * + * @param userId 用户Id + * + * @return 角色权限信息 + */ + public Set getRolePermission (SysUser user); + + /** + * 获取菜单数据权限 + * + * @param userId 用户Id + * + * @return 菜单权限信息 + */ + public Set getMenuPermission (SysUser user); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysPostService.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysPostService.java new file mode 100644 index 0000000..fbd8677 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysPostService.java @@ -0,0 +1,110 @@ +package com.muyu.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.system.domain.SysPost; + +import java.util.List; + +/** + * 岗位信息 服务层 + * + * @author muyu + */ +public interface SysPostService extends IService { + /** + * 查询岗位信息集合 + * + * @param post 岗位信息 + * + * @return 岗位列表 + */ + public List selectPostList (SysPost post); + + /** + * 查询所有岗位 + * + * @return 岗位列表 + */ + public List selectPostAll (); + + /** + * 通过岗位ID查询岗位信息 + * + * @param postId 岗位ID + * + * @return 角色对象信息 + */ + public SysPost selectPostById (Long postId); + + /** + * 根据用户ID获取岗位选择框列表 + * + * @param userId 用户ID + * + * @return 选中岗位ID列表 + */ + public List selectPostListByUserId (Long userId); + + /** + * 校验岗位名称 + * + * @param post 岗位信息 + * + * @return 结果 + */ + public boolean checkPostNameUnique (SysPost post); + + /** + * 校验岗位编码 + * + * @param post 岗位信息 + * + * @return 结果 + */ + public boolean checkPostCodeUnique (SysPost post); + + /** + * 通过岗位ID查询岗位使用数量 + * + * @param postId 岗位ID + * + * @return 结果 + */ + public int countUserPostById (Long postId); + + /** + * 删除岗位信息 + * + * @param postId 岗位ID + * + * @return 结果 + */ + public int deletePostById (Long postId); + + /** + * 批量删除岗位信息 + * + * @param postIds 需要删除的岗位ID + * + * @return 结果 + */ + public int deletePostByIds (Long[] postIds); + + /** + * 新增保存岗位信息 + * + * @param post 岗位信息 + * + * @return 结果 + */ + public int insertPost (SysPost post); + + /** + * 修改保存岗位信息 + * + * @param post 岗位信息 + * + * @return 结果 + */ + public int updatePost (SysPost post); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysRoleService.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysRoleService.java new file mode 100644 index 0000000..47009f8 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysRoleService.java @@ -0,0 +1,191 @@ +package com.muyu.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.common.system.domain.SysRole; +import com.muyu.system.domain.SysUserRole; + +import java.util.List; +import java.util.Set; + +/** + * 角色业务层 + * + * @author muyu + */ +public interface SysRoleService extends IService { + /** + * 根据条件分页查询角色数据 + * + * @param role 角色信息 + * + * @return 角色数据集合信息 + */ + public List selectRoleList (SysRole role); + + /** + * 根据用户ID查询角色列表 + * + * @param userId 用户ID + * + * @return 角色列表 + */ + public List selectRolesByUserId (Long userId); + + /** + * 根据用户ID查询角色权限 + * + * @param userId 用户ID + * + * @return 权限列表 + */ + public Set selectRolePermissionByUserId (Long userId); + + /** + * 查询所有角色 + * + * @return 角色列表 + */ + public List selectRoleAll (); + + /** + * 根据用户ID获取角色选择框列表 + * + * @param userId 用户ID + * + * @return 选中角色ID列表 + */ + public List selectRoleListByUserId (Long userId); + + /** + * 通过角色ID查询角色 + * + * @param roleId 角色ID + * + * @return 角色对象信息 + */ + public SysRole selectRoleById (Long roleId); + + /** + * 校验角色名称是否唯一 + * + * @param role 角色信息 + * + * @return 结果 + */ + public boolean checkRoleNameUnique (SysRole role); + + /** + * 校验角色权限是否唯一 + * + * @param role 角色信息 + * + * @return 结果 + */ + public boolean checkRoleKeyUnique (SysRole role); + + /** + * 校验角色是否允许操作 + * + * @param role 角色信息 + */ + public void checkRoleAllowed (SysRole role); + + /** + * 校验角色是否有数据权限 + * + * @param roleId 角色id + */ + public void checkRoleDataScope (Long roleId); + + /** + * 通过角色ID查询角色使用数量 + * + * @param roleId 角色ID + * + * @return 结果 + */ + public int countUserRoleByRoleId (Long roleId); + + /** + * 新增保存角色信息 + * + * @param role 角色信息 + * + * @return 结果 + */ + public int insertRole (SysRole role); + + /** + * 修改保存角色信息 + * + * @param role 角色信息 + * + * @return 结果 + */ + public int updateRole (SysRole role); + + /** + * 修改角色状态 + * + * @param role 角色信息 + * + * @return 结果 + */ + public int updateRoleStatus (SysRole role); + + /** + * 修改数据权限信息 + * + * @param role 角色信息 + * + * @return 结果 + */ + public int authDataScope (SysRole role); + + /** + * 通过角色ID删除角色 + * + * @param roleId 角色ID + * + * @return 结果 + */ + public int deleteRoleById (Long roleId); + + /** + * 批量删除角色信息 + * + * @param roleIds 需要删除的角色ID + * + * @return 结果 + */ + public int deleteRoleByIds (Long[] roleIds); + + /** + * 取消授权用户角色 + * + * @param userRole 用户和角色关联信息 + * + * @return 结果 + */ + public int deleteAuthUser (SysUserRole userRole); + + /** + * 批量取消授权用户角色 + * + * @param roleId 角色ID + * @param userIds 需要取消授权的用户数据ID + * + * @return 结果 + */ + public int deleteAuthUsers (Long roleId, Long[] userIds); + + /** + * 批量选择授权用户角色 + * + * @param roleId 角色ID + * @param userIds 需要删除的用户数据ID + * + * @return 结果 + */ + public int insertAuthUsers (Long roleId, Long[] userIds); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysUserOnlineService.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysUserOnlineService.java new file mode 100644 index 0000000..531735b --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysUserOnlineService.java @@ -0,0 +1,52 @@ +package com.muyu.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.common.system.domain.LoginUser; +import com.muyu.system.domain.SysUserOnline; + +/** + * 在线用户 服务层 + * + * @author muyu + */ +public interface SysUserOnlineService { + /** + * 通过登录地址查询信息 + * + * @param ipaddr 登录地址 + * @param user 用户信息 + * + * @return 在线用户信息 + */ + public SysUserOnline selectOnlineByIpaddr (String ipaddr, LoginUser user); + + /** + * 通过用户名称查询信息 + * + * @param userName 用户名称 + * @param user 用户信息 + * + * @return 在线用户信息 + */ + public SysUserOnline selectOnlineByUserName (String userName, LoginUser user); + + /** + * 通过登录地址/用户名称查询信息 + * + * @param ipaddr 登录地址 + * @param userName 用户名称 + * @param user 用户信息 + * + * @return 在线用户信息 + */ + public SysUserOnline selectOnlineByInfo (String ipaddr, String userName, LoginUser user); + + /** + * 设置在线用户信息 + * + * @param user 用户信息 + * + * @return 在线用户 + */ + public SysUserOnline loginUserToUserOnline (LoginUser user); +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysUserService.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysUserService.java new file mode 100644 index 0000000..9e3a8a0 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysUserService.java @@ -0,0 +1,235 @@ +package com.muyu.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.common.system.domain.SysUser; + +import java.util.List; + +/** + * 用户 业务层 + * + * @author muyu + */ +public interface SysUserService extends IService { + /** + * 根据条件分页查询用户列表 + * + * @param user 用户信息 + * + * @return 用户信息集合信息 + */ + public List selectUserList (SysUser user); + + /** + * 根据条件分页查询已分配用户角色列表 + * + * @param user 用户信息 + * + * @return 用户信息集合信息 + */ + public List selectAllocatedList (SysUser user); + + /** + * 根据条件分页查询未分配用户角色列表 + * + * @param user 用户信息 + * + * @return 用户信息集合信息 + */ + public List selectUnallocatedList (SysUser user); + + /** + * 通过用户名查询用户 + * + * @param userName 用户名 + * + * @return 用户对象信息 + */ + public SysUser selectUserByUserName (String userName); + + /** + * 通过用户ID查询用户 + * + * @param userId 用户ID + * + * @return 用户对象信息 + */ + public SysUser selectUserById (Long userId); + + /** + * 根据用户ID查询用户所属角色组 + * + * @param userName 用户名 + * + * @return 结果 + */ + public String selectUserRoleGroup (String userName); + + /** + * 根据用户ID查询用户所属岗位组 + * + * @param userName 用户名 + * + * @return 结果 + */ + public String selectUserPostGroup (String userName); + + /** + * 校验用户名称是否唯一 + * + * @param user 用户信息 + * + * @return 结果 + */ + public boolean checkUserNameUnique (SysUser user); + + /** + * 校验手机号码是否唯一 + * + * @param user 用户信息 + * + * @return 结果 + */ + public boolean checkPhoneUnique (SysUser user); + + /** + * 校验email是否唯一 + * + * @param user 用户信息 + * + * @return 结果 + */ + public boolean checkEmailUnique (SysUser user); + + /** + * 校验用户是否允许操作 + * + * @param user 用户信息 + */ + public void checkUserAllowed (SysUser user); + + /** + * 校验用户是否有数据权限 + * + * @param userId 用户id + */ + public void checkUserDataScope (Long userId); + + /** + * 新增用户信息 + * + * @param user 用户信息 + * + * @return 结果 + */ + public int insertUser (SysUser user); + + /** + * 注册用户信息 + * + * @param user 用户信息 + * + * @return 结果 + */ + public boolean registerUser (SysUser user); + + /** + * 修改用户信息 + * + * @param user 用户信息 + * + * @return 结果 + */ + public int updateUser (SysUser user); + + /** + * 用户授权角色 + * + * @param userId 用户ID + * @param roleIds 角色组 + */ + public void insertUserAuth (Long userId, Long[] roleIds); + + /** + * 修改用户状态 + * + * @param user 用户信息 + * + * @return 结果 + */ + public int updateUserStatus (SysUser user); + + /** + * 修改用户基本信息 + * + * @param user 用户信息 + * + * @return 结果 + */ + public int updateUserProfile (SysUser user); + + /** + * 修改用户头像 + * + * @param userName 用户名 + * @param avatar 头像地址 + * + * @return 结果 + */ + public boolean updateUserAvatar (String userName, String avatar); + + /** + * 重置用户密码 + * + * @param user 用户信息 + * + * @return 结果 + */ + public int resetPwd (SysUser user); + + /** + * 重置用户密码 + * + * @param userName 用户名 + * @param password 密码 + * + * @return 结果 + */ + public int resetUserPwd (String userName, String password); + + /** + * 通过用户ID删除用户 + * + * @param userId 用户ID + * + * @return 结果 + */ + public int deleteUserById (Long userId); + + /** + * 批量删除用户信息 + * + * @param userIds 需要删除的用户ID + * + * @return 结果 + */ + public int deleteUserByIds (Long[] userIds); + + /** + * 导入用户数据 + * + * @param userList 用户数据列表 + * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 + * @param operName 操作用户 + * + * @return 结果 + */ + public String importUser (List userList, Boolean isUpdateSupport, String operName); + + /** + * 查询数据库名称 + * @return + */ + List selectCompanyList(); + +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysConfigServiceImpl.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysConfigServiceImpl.java new file mode 100644 index 0000000..bc07cc8 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysConfigServiceImpl.java @@ -0,0 +1,114 @@ +package com.muyu.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.constant.CacheConstants; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.redis.service.RedisService; +import com.muyu.system.domain.SysConfig; +import com.muyu.system.mapper.SysConfigMapper; +import com.muyu.system.service.SysConfigService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; + +import java.util.Collection; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @author DongZl + * @description: 配置plus业务实现层 + * @Date 2023-11-13 上午 10:06 + */ +@Service +public class SysConfigServiceImpl extends ServiceImpl + implements SysConfigService { + + @Autowired + private RedisService redisService; + + @Override + public List pageQuery (SysConfig config) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (StringUtils.isNotEmpty(config.getConfigName())){ + queryWrapper.like(SysConfig::getConfigName, config.getConfigName()); + } + if (StringUtils.isNotEmpty(config.getConfigType())){ + queryWrapper.like(SysConfig::getConfigType, config.getConfigType()); + } + if (StringUtils.isNotEmpty(config.getConfigKey())){ + queryWrapper.like(SysConfig::getConfigKey, config.getConfigKey()); + } + Object beginTime = config.getParams().get("beginTime"); + if (Objects.nonNull(beginTime) && beginTime instanceof Date beginDate){ + queryWrapper.gt(SysConfig::getCreateTime, beginDate); + } + Object endTime = config.getParams().get("endTime"); + if (Objects.nonNull(endTime) && endTime instanceof Date endDate){ + queryWrapper.lt(SysConfig::getCreateTime, endDate); + } + return this.list(queryWrapper); + } + + /** + * 通过Key进行查询值 + * + * @param configKey + * + * @return + */ + @Override + public String selectConfigByKey (String configKey) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + Assert.notNull(configKey, "key不可为空"); + queryWrapper.eq(SysConfig::getConfigKey, configKey); + SysConfig sysConfig = this.getOne(queryWrapper); + return sysConfig.getConfigValue(); + } + + @Override + public boolean checkConfigKeyUnique (SysConfig config) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SysConfig::getConfigKey, config.getConfigKey()); + return this.count(queryWrapper) > 0; + } + + @Override + public void resetConfigCache () { + this.clearConfigCache(); + this.loadingConfigCache(); + } + + /** + * 清空参数缓存数据 + */ + @Override + public void clearConfigCache () { + Collection keys = redisService.keys(CacheConstants.SYS_CONFIG_KEY + "*"); + redisService.deleteObject(keys); + } + + /** + * 加载参数缓存数据 + */ + @Override + public void loadingConfigCache () { + List configsList = this.list(); + for (SysConfig config : configsList) { + redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue()); + } + } + + /** + * 设置cache key + * + * @param configKey 参数键 + * + * @return 缓存键key + */ + private String getCacheKey (String configKey) { + return CacheConstants.SYS_CONFIG_KEY + configKey; + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysDeptServiceImpl.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysDeptServiceImpl.java new file mode 100644 index 0000000..a55301b --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysDeptServiceImpl.java @@ -0,0 +1,318 @@ +package com.muyu.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.constant.UserConstants; +import com.muyu.common.core.exception.ServiceException; +import com.muyu.common.core.text.Convert; +import com.muyu.common.core.utils.SpringUtils; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.datascope.annotation.DataScope; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.SysDept; +import com.muyu.common.system.domain.SysRole; +import com.muyu.common.system.domain.SysUser; +import com.muyu.system.domain.vo.TreeSelect; +import com.muyu.system.mapper.SysDeptMapper; +import com.muyu.system.mapper.SysRoleMapper; +import com.muyu.system.service.SysDeptService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 部门管理 服务实现 + * + * @author muyu + */ +@Service +public class SysDeptServiceImpl extends ServiceImpl implements SysDeptService { + @Autowired + private SysDeptMapper deptMapper; + + @Autowired + private SysRoleMapper roleMapper; + + /** + * 查询部门管理数据 + * + * @param dept 部门信息 + * + * @return 部门信息集合 + */ + @Override + @DataScope(deptAlias = "d") + public List selectDeptList (SysDept dept) { + return deptMapper.selectDeptList(dept); + } + + /** + * 查询部门树结构信息 + * + * @param dept 部门信息 + * + * @return 部门树信息集合 + */ + @Override + public List selectDeptTreeList (SysDept dept) { + List depts = SpringUtils.getAopProxy(this).selectDeptList(dept); + return buildDeptTreeSelect(depts); + } + + /** + * 构建前端所需要树结构 + * + * @param depts 部门列表 + * + * @return 树结构列表 + */ + @Override + public List buildDeptTree (List depts) { + List returnList = new ArrayList(); + List tempList = depts.stream().map(SysDept::getDeptId).collect(Collectors.toList()); + for (SysDept dept : depts) { + // 如果是顶级节点, 遍历该父节点的所有子节点 + if (!tempList.contains(dept.getParentId())) { + recursionFn(depts, dept); + returnList.add(dept); + } + } + if (returnList.isEmpty()) { + returnList = depts; + } + return returnList; + } + + /** + * 构建前端所需要下拉树结构 + * + * @param depts 部门列表 + * + * @return 下拉树结构列表 + */ + @Override + public List buildDeptTreeSelect (List depts) { + List deptTrees = buildDeptTree(depts); + return deptTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); + } + + /** + * 根据角色ID查询部门树信息 + * + * @param roleId 角色ID + * + * @return 选中部门列表 + */ + @Override + public List selectDeptListByRoleId (Long roleId) { + SysRole role = roleMapper.selectRoleById(roleId); + return deptMapper.selectDeptListByRoleId(roleId, role.isDeptCheckStrictly()); + } + + /** + * 根据部门ID查询信息 + * + * @param deptId 部门ID + * + * @return 部门信息 + */ + @Override + public SysDept selectDeptById (Long deptId) { + return deptMapper.selectDeptById(deptId); + } + + /** + * 根据ID查询所有子部门(正常状态) + * + * @param deptId 部门ID + * + * @return 子部门数 + */ + @Override + public int selectNormalChildrenDeptById (Long deptId) { + return deptMapper.selectNormalChildrenDeptById(deptId); + } + + /** + * 是否存在子节点 + * + * @param deptId 部门ID + * + * @return 结果 + */ + @Override + public boolean hasChildByDeptId (Long deptId) { + int result = deptMapper.hasChildByDeptId(deptId); + return result > 0; + } + + /** + * 查询部门是否存在用户 + * + * @param deptId 部门ID + * + * @return 结果 true 存在 false 不存在 + */ + @Override + public boolean checkDeptExistUser (Long deptId) { + int result = deptMapper.checkDeptExistUser(deptId); + return result > 0; + } + + /** + * 校验部门名称是否唯一 + * + * @param dept 部门信息 + * + * @return 结果 + */ + @Override + public boolean checkDeptNameUnique (SysDept dept) { + Long deptId = StringUtils.isNull(dept.getDeptId()) ? -1L : dept.getDeptId(); + SysDept info = deptMapper.checkDeptNameUnique(dept.getDeptName(), dept.getParentId()); + if (StringUtils.isNotNull(info) && info.getDeptId().longValue() != deptId.longValue()) { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 校验部门是否有数据权限 + * + * @param deptId 部门id + */ + @Override + public void checkDeptDataScope (Long deptId) { + if (!SysUser.isAdmin(SecurityUtils.getUserId())) { + SysDept dept = new SysDept(); + dept.setDeptId(deptId); + List depts = SpringUtils.getAopProxy(this).selectDeptList(dept); + if (StringUtils.isEmpty(depts)) { + throw new ServiceException("没有权限访问部门数据!"); + } + } + } + + /** + * 新增保存部门信息 + * + * @param dept 部门信息 + * + * @return 结果 + */ + @Override + public int insertDept (SysDept dept) { + SysDept info = deptMapper.selectDeptById(dept.getParentId()); + // 如果父节点不为正常状态,则不允许新增子节点 + if (!UserConstants.DEPT_NORMAL.equals(info.getStatus())) { + throw new ServiceException("部门停用,不允许新增"); + } + dept.setAncestors(info.getAncestors() + "," + dept.getParentId()); + return deptMapper.insertDept(dept); + } + + /** + * 修改保存部门信息 + * + * @param dept 部门信息 + * + * @return 结果 + */ + @Override + public int updateDept (SysDept dept) { + SysDept newParentDept = deptMapper.selectDeptById(dept.getParentId()); + SysDept oldDept = deptMapper.selectDeptById(dept.getDeptId()); + if (StringUtils.isNotNull(newParentDept) && StringUtils.isNotNull(oldDept)) { + String newAncestors = newParentDept.getAncestors() + "," + newParentDept.getDeptId(); + String oldAncestors = oldDept.getAncestors(); + dept.setAncestors(newAncestors); + updateDeptChildren(dept.getDeptId(), newAncestors, oldAncestors); + } + int result = deptMapper.updateDept(dept); + if (UserConstants.DEPT_NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors()) + && !StringUtils.equals("0", dept.getAncestors())) { + // 如果该部门是启用状态,则启用该部门的所有上级部门 + updateParentDeptStatusNormal(dept); + } + return result; + } + + /** + * 修改该部门的父级部门状态 + * + * @param dept 当前部门 + */ + private void updateParentDeptStatusNormal (SysDept dept) { + String ancestors = dept.getAncestors(); + Long[] deptIds = Convert.toLongArray(ancestors); + deptMapper.updateDeptStatusNormal(deptIds); + } + + /** + * 修改子元素关系 + * + * @param deptId 被修改的部门ID + * @param newAncestors 新的父ID集合 + * @param oldAncestors 旧的父ID集合 + */ + public void updateDeptChildren (Long deptId, String newAncestors, String oldAncestors) { + List children = deptMapper.selectChildrenDeptById(deptId); + for (SysDept child : children) { + child.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors)); + } + if (children.size() > 0) { + deptMapper.updateDeptChildren(children); + } + } + + /** + * 删除部门管理信息 + * + * @param deptId 部门ID + * + * @return 结果 + */ + @Override + public int deleteDeptById (Long deptId) { + return deptMapper.deleteDeptById(deptId); + } + + /** + * 递归列表 + */ + private void recursionFn (List list, SysDept t) { + // 得到子节点列表 + List childList = getChildList(list, t); + t.setChildren(childList); + for (SysDept tChild : childList) { + if (hasChild(list, tChild)) { + recursionFn(list, tChild); + } + } + } + + /** + * 得到子节点列表 + */ + private List getChildList (List list, SysDept t) { + List tlist = new ArrayList(); + Iterator it = list.iterator(); + while (it.hasNext()) { + SysDept n = (SysDept) it.next(); + if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getDeptId().longValue()) { + tlist.add(n); + } + } + return tlist; + } + + /** + * 判断是否有子节点 + */ + private boolean hasChild (List list, SysDept t) { + return getChildList(list, t).size() > 0 ? true : false; + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysDictDataServiceImpl.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysDictDataServiceImpl.java new file mode 100644 index 0000000..777ffbd --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysDictDataServiceImpl.java @@ -0,0 +1,108 @@ +package com.muyu.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.security.utils.DictUtils; +import com.muyu.common.system.domain.SysDictData; +import com.muyu.system.mapper.SysDictDataMapper; +import com.muyu.system.service.SysDictDataService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 字典 业务层处理 + * + * @author muyu + */ +@Service +public class SysDictDataServiceImpl extends ServiceImpl implements SysDictDataService { + @Autowired + private SysDictDataMapper dictDataMapper; + + /** + * 根据条件分页查询字典数据 + * + * @param dictData 字典数据信息 + * + * @return 字典数据集合信息 + */ + @Override + public List selectDictDataList (SysDictData dictData) { + return dictDataMapper.selectDictDataList(dictData); + } + + /** + * 根据字典类型和字典键值查询字典数据信息 + * + * @param dictType 字典类型 + * @param dictValue 字典键值 + * + * @return 字典标签 + */ + @Override + public String selectDictLabel (String dictType, String dictValue) { + return dictDataMapper.selectDictLabel(dictType, dictValue); + } + + /** + * 根据字典数据ID查询信息 + * + * @param dictCode 字典数据ID + * + * @return 字典数据 + */ + @Override + public SysDictData selectDictDataById (Long dictCode) { + return dictDataMapper.selectDictDataById(dictCode); + } + + /** + * 批量删除字典数据信息 + * + * @param dictCodes 需要删除的字典数据ID + */ + @Override + public void deleteDictDataByIds (Long[] dictCodes) { + for (Long dictCode : dictCodes) { + SysDictData data = selectDictDataById(dictCode); + dictDataMapper.deleteDictDataById(dictCode); + List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); + DictUtils.setDictCache(data.getDictType(), dictDatas); + } + } + + /** + * 新增保存字典数据信息 + * + * @param data 字典数据信息 + * + * @return 结果 + */ + @Override + public int insertDictData (SysDictData data) { + int row = dictDataMapper.insertDictData(data); + if (row > 0) { + List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); + DictUtils.setDictCache(data.getDictType(), dictDatas); + } + return row; + } + + /** + * 修改保存字典数据信息 + * + * @param data 字典数据信息 + * + * @return 结果 + */ + @Override + public int updateDictData (SysDictData data) { + int row = dictDataMapper.updateDictData(data); + if (row > 0) { + List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); + DictUtils.setDictCache(data.getDictType(), dictDatas); + } + return row; + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysDictTypeServiceImpl.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysDictTypeServiceImpl.java new file mode 100644 index 0000000..4117411 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysDictTypeServiceImpl.java @@ -0,0 +1,210 @@ +package com.muyu.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.constant.UserConstants; +import com.muyu.common.core.exception.ServiceException; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.security.utils.DictUtils; +import com.muyu.common.system.domain.SysDictData; +import com.muyu.common.system.domain.SysDictType; +import com.muyu.system.mapper.SysDictDataMapper; +import com.muyu.system.mapper.SysDictTypeMapper; +import com.muyu.system.service.SysDictTypeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.PostConstruct; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 字典 业务层处理 + * + * @author muyu + */ +@Service +public class SysDictTypeServiceImpl extends ServiceImpl implements SysDictTypeService { + @Autowired + private SysDictTypeMapper dictTypeMapper; + + @Autowired + private SysDictDataMapper dictDataMapper; + + /** + * 项目启动时,初始化字典到缓存 + */ + @PostConstruct + public void init () { + loadingDictCache(); + } + + /** + * 根据条件分页查询字典类型 + * + * @param dictType 字典类型信息 + * + * @return 字典类型集合信息 + */ + @Override + public List selectDictTypeList (SysDictType dictType) { + return dictTypeMapper.selectDictTypeList(dictType); + } + + /** + * 根据所有字典类型 + * + * @return 字典类型集合信息 + */ + @Override + public List selectDictTypeAll () { + return dictTypeMapper.selectDictTypeAll(); + } + + /** + * 根据字典类型查询字典数据 + * + * @param dictType 字典类型 + * + * @return 字典数据集合信息 + */ + @Override + public List selectDictDataByType (String dictType) { + List dictDatas = DictUtils.getDictCache(dictType); + if (StringUtils.isNotEmpty(dictDatas)) { + return dictDatas; + } + dictDatas = dictDataMapper.selectDictDataByType(dictType); + if (StringUtils.isNotEmpty(dictDatas)) { + DictUtils.setDictCache(dictType, dictDatas); + return dictDatas; + } + return null; + } + + /** + * 根据字典类型ID查询信息 + * + * @param dictId 字典类型ID + * + * @return 字典类型 + */ + @Override + public SysDictType selectDictTypeById (Long dictId) { + return dictTypeMapper.selectDictTypeById(dictId); + } + + /** + * 根据字典类型查询信息 + * + * @param dictType 字典类型 + * + * @return 字典类型 + */ + @Override + public SysDictType selectDictTypeByType (String dictType) { + return dictTypeMapper.selectDictTypeByType(dictType); + } + + /** + * 批量删除字典类型信息 + * + * @param dictIds 需要删除的字典ID + */ + @Override + public void deleteDictTypeByIds (Long[] dictIds) { + for (Long dictId : dictIds) { + SysDictType dictType = selectDictTypeById(dictId); + if (dictDataMapper.countDictDataByType(dictType.getDictType()) > 0) { + throw new ServiceException(String.format("%1$s已分配,不能删除", dictType.getDictName())); + } + dictTypeMapper.deleteDictTypeById(dictId); + DictUtils.removeDictCache(dictType.getDictType()); + } + } + + /** + * 加载字典缓存数据 + */ + @Override + public void loadingDictCache () { + SysDictData dictData = new SysDictData(); + dictData.setStatus("0"); + Map> dictDataMap = dictDataMapper.selectDictDataList(dictData).stream().collect(Collectors.groupingBy(SysDictData::getDictType)); + for (Map.Entry> entry : dictDataMap.entrySet()) { + DictUtils.setDictCache(entry.getKey(), entry.getValue().stream().sorted(Comparator.comparing(SysDictData::getDictSort)).collect(Collectors.toList())); + } + } + + /** + * 清空字典缓存数据 + */ + @Override + public void clearDictCache () { + DictUtils.clearDictCache(); + } + + /** + * 重置字典缓存数据 + */ + @Override + public void resetDictCache () { + clearDictCache(); + loadingDictCache(); + } + + /** + * 新增保存字典类型信息 + * + * @param dict 字典类型信息 + * + * @return 结果 + */ + @Override + public int insertDictType (SysDictType dict) { + int row = dictTypeMapper.insertDictType(dict); + if (row > 0) { + DictUtils.setDictCache(dict.getDictType(), null); + } + return row; + } + + /** + * 修改保存字典类型信息 + * + * @param dict 字典类型信息 + * + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int updateDictType (SysDictType dict) { + SysDictType oldDict = dictTypeMapper.selectDictTypeById(dict.getDictId()); + dictDataMapper.updateDictDataType(oldDict.getDictType(), dict.getDictType()); + int row = dictTypeMapper.updateDictType(dict); + if (row > 0) { + List dictDatas = dictDataMapper.selectDictDataByType(dict.getDictType()); + DictUtils.setDictCache(dict.getDictType(), dictDatas); + } + return row; + } + + /** + * 校验字典类型称是否唯一 + * + * @param dict 字典类型 + * + * @return 结果 + */ + @Override + public boolean checkDictTypeUnique (SysDictType dict) { + Long dictId = StringUtils.isNull(dict.getDictId()) ? -1L : dict.getDictId(); + SysDictType dictType = dictTypeMapper.checkDictTypeUnique(dict.getDictType()); + if (StringUtils.isNotNull(dictType) && dictType.getDictId().longValue() != dictId.longValue()) { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysLogininforServiceImpl.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysLogininforServiceImpl.java new file mode 100644 index 0000000..1a7c7a0 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysLogininforServiceImpl.java @@ -0,0 +1,64 @@ +package com.muyu.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.system.domain.SysLogininfor; +import com.muyu.system.mapper.SysLogininforMapper; +import com.muyu.system.service.SysLogininforService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 系统访问日志情况信息 服务层处理 + * + * @author muyu + */ +@Service +public class SysLogininforServiceImpl extends ServiceImpl implements SysLogininforService { + + @Autowired + private SysLogininforMapper logininforMapper; + + /** + * 新增系统登录日志 + * + * @param logininfor 访问日志对象 + */ + @Override + public int insertLogininfor (SysLogininfor logininfor) { + return logininforMapper.insertLogininfor(logininfor); + } + + /** + * 查询系统登录日志集合 + * + * @param logininfor 访问日志对象 + * + * @return 登录记录集合 + */ + @Override + public List selectLogininforList (SysLogininfor logininfor) { + return logininforMapper.selectLogininforList(logininfor); + } + + /** + * 批量删除系统登录日志 + * + * @param infoIds 需要删除的登录日志ID + * + * @return 结果 + */ + @Override + public int deleteLogininforByIds (Long[] infoIds) { + return logininforMapper.deleteLogininforByIds(infoIds); + } + + /** + * 清空系统登录日志 + */ + @Override + public void cleanLogininfor () { + logininforMapper.cleanLogininfor(); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java new file mode 100644 index 0000000..d23ecdb --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java @@ -0,0 +1,501 @@ +package com.muyu.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.constant.Constants; +import com.muyu.common.core.constant.UserConstants; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.SysRole; +import com.muyu.common.system.domain.SysUser; +import com.muyu.system.domain.SysMenu; +import com.muyu.system.domain.vo.MetaVo; +import com.muyu.system.domain.vo.RouterVo; +import com.muyu.system.domain.vo.TreeSelect; +import com.muyu.system.mapper.SysMenuMapper; +import com.muyu.system.mapper.SysRoleMapper; +import com.muyu.system.mapper.SysRoleMenuMapper; +import com.muyu.system.service.SysMenuService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 菜单 业务层处理 + * + * @author muyu + */ +@Service +public class SysMenuServiceImpl extends ServiceImpl implements SysMenuService { + public static final String PREMISSION_STRING = "perms[\"{0}\"]"; + + @Autowired + private SysMenuMapper menuMapper; + + @Autowired + private SysRoleMapper roleMapper; + + @Autowired + private SysRoleMenuMapper roleMenuMapper; + + /** + * 根据用户查询系统菜单列表 + * + * @param userId 用户ID + * + * @return 菜单列表 + */ + @Override + public List selectMenuList (Long userId) { + return selectMenuList(new SysMenu(), userId); + } + + /** + * 查询系统菜单列表 + * + * @param menu 菜单信息 + * + * @return 菜单列表 + */ + @Override + public List selectMenuList (SysMenu menu, Long userId) { + List menuList = null; + // 管理员显示所有菜单信息 + if (SysUser.isAdmin(userId)) { + menuList = menuMapper.selectMenuList(menu); + } else { + menu.getParams().put("userId", userId); + menuList = menuMapper.selectMenuListByUserId(menu); + } + return menuList; + } + + /** + * 根据用户ID查询权限 + * + * @param userId 用户ID + * + * @return 权限列表 + */ + @Override + public Set selectMenuPermsByUserId (Long userId) { + List perms = menuMapper.selectMenuPermsByUserId(userId); + Set permsSet = new HashSet<>(); + for (String perm : perms) { + if (StringUtils.isNotEmpty(perm)) { + permsSet.addAll(Arrays.asList(perm.trim().split(","))); + } + } + return permsSet; + } + + /** + * 根据角色ID查询权限 + * + * @param roleId 角色ID + * + * @return 权限列表 + */ + @Override + public Set selectMenuPermsByRoleId (Long roleId) { + List perms = menuMapper.selectMenuPermsByRoleId(roleId); + Set permsSet = new HashSet<>(); + for (String perm : perms) { + if (StringUtils.isNotEmpty(perm)) { + permsSet.addAll(Arrays.asList(perm.trim().split(","))); + } + } + return permsSet; + } + + /** + * 根据用户ID查询菜单 + * + * @param userId 用户名称 + * + * @return 菜单列表 + */ + @Override + public List selectMenuTreeByUserId (Long userId) { + List menus = null; + if (SecurityUtils.isAdmin(userId)) { + menus = menuMapper.selectMenuTreeAll(); + } else { + menus = menuMapper.selectMenuTreeByUserId(userId); + } + return getChildPerms(menus, 0); + } + + /** + * 根据角色ID查询菜单树信息 + * + * @param roleId 角色ID + * + * @return 选中菜单列表 + */ + @Override + public List selectMenuListByRoleId (Long roleId) { + SysRole role = roleMapper.selectRoleById(roleId); + return menuMapper.selectMenuListByRoleId(roleId, role.isMenuCheckStrictly()); + } + + /** + * 构建前端路由所需要的菜单 + * + * @param menus 菜单列表 + * + * @return 路由列表 + */ + @Override + public List buildMenus (List menus) { + List routers = new LinkedList(); + for (SysMenu menu : menus) { + RouterVo router = new RouterVo(); + router.setHidden("1".equals(menu.getVisible())); + router.setName(getRouteName(menu)); + router.setPath(getRouterPath(menu)); + router.setComponent(getComponent(menu)); + router.setQuery(menu.getQuery()); + router.setMeta( + MetaVo.builder() + .title(menu.getMenuName()) + .icon(menu.getIcon()) + .noCache(StringUtils.equals("1", menu.getIsCache())) + .link(StringUtils.ishttp(menu.getPath())? menu.getPath():null) + .build() + ); + List cMenus = menu.getChildren(); + if (StringUtils.isNotEmpty(cMenus) && UserConstants.TYPE_DIR.equals(menu.getMenuType())) { + router.setAlwaysShow(true); + router.setRedirect("noRedirect"); + router.setChildren(buildMenus(cMenus)); + } else if (isMenuFrame(menu)) { + router.setMeta(null); + List childrenList = new ArrayList(); + RouterVo children = new RouterVo(); + children.setPath(menu.getPath()); + children.setComponent(menu.getComponent()); + children.setName(StringUtils.capitalize(menu.getPath())); + children.setMeta( + MetaVo.builder() + .title(menu.getMenuName()) + .icon(menu.getIcon()) + .noCache(StringUtils.equals("1", menu.getIsCache())) + .link(StringUtils.ishttp(menu.getPath())? menu.getPath():null) + .build() + ); + children.setQuery(menu.getQuery()); + childrenList.add(children); + router.setChildren(childrenList); + } else if (menu.getParentId().intValue() == 0 && isInnerLink(menu)) { + router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon())); + router.setPath("/"); + List childrenList = new ArrayList(); + RouterVo children = new RouterVo(); + String routerPath = innerLinkReplaceEach(menu.getPath()); + children.setPath(routerPath); + children.setComponent(UserConstants.INNER_LINK); + children.setName(StringUtils.capitalize(routerPath)); + children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), menu.getPath())); + childrenList.add(children); + router.setChildren(childrenList); + } + routers.add(router); + } + return routers; + } + + /** + * 构建前端所需要树结构 + * + * @param menus 菜单列表 + * + * @return 树结构列表 + */ + @Override + public List buildMenuTree (List menus) { + List returnList = new ArrayList(); + List tempList = menus.stream().map(SysMenu::getMenuId).collect(Collectors.toList()); + for (Iterator iterator = menus.iterator() ; iterator.hasNext() ; ) { + SysMenu menu = (SysMenu) iterator.next(); + // 如果是顶级节点, 遍历该父节点的所有子节点 + if (!tempList.contains(menu.getParentId())) { + recursionFn(menus, menu); + returnList.add(menu); + } + } + if (returnList.isEmpty()) { + returnList = menus; + } + return returnList; + } + + /** + * 构建前端所需要下拉树结构 + * + * @param menus 菜单列表 + * + * @return 下拉树结构列表 + */ + @Override + public List buildMenuTreeSelect (List menus) { + List menuTrees = buildMenuTree(menus); + return menuTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); + } + + /** + * 根据菜单ID查询信息 + * + * @param menuId 菜单ID + * + * @return 菜单信息 + */ + @Override + public SysMenu selectMenuById (Long menuId) { + return menuMapper.selectMenuById(menuId); + } + + /** + * 是否存在菜单子节点 + * + * @param menuId 菜单ID + * + * @return 结果 + */ + @Override + public boolean hasChildByMenuId (Long menuId) { + int result = menuMapper.hasChildByMenuId(menuId); + return result > 0; + } + + /** + * 查询菜单使用数量 + * + * @param menuId 菜单ID + * + * @return 结果 + */ + @Override + public boolean checkMenuExistRole (Long menuId) { + int result = roleMenuMapper.checkMenuExistRole(menuId); + return result > 0; + } + + /** + * 新增保存菜单信息 + * + * @param menu 菜单信息 + * + * @return 结果 + */ + @Override + public int insertMenu (SysMenu menu) { + return menuMapper.insertMenu(menu); + } + + /** + * 修改保存菜单信息 + * + * @param menu 菜单信息 + * + * @return 结果 + */ + @Override + public int updateMenu (SysMenu menu) { + return menuMapper.updateMenu(menu); + } + + /** + * 删除菜单管理信息 + * + * @param menuId 菜单ID + * + * @return 结果 + */ + @Override + public int deleteMenuById (Long menuId) { + return menuMapper.deleteMenuById(menuId); + } + + /** + * 校验菜单名称是否唯一 + * + * @param menu 菜单信息 + * + * @return 结果 + */ + @Override + public boolean checkMenuNameUnique (SysMenu menu) { + Long menuId = StringUtils.isNull(menu.getMenuId()) ? -1L : menu.getMenuId(); + SysMenu info = menuMapper.checkMenuNameUnique(menu.getMenuName(), menu.getParentId()); + if (StringUtils.isNotNull(info) && info.getMenuId().longValue() != menuId.longValue()) { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 获取路由名称 + * + * @param menu 菜单信息 + * + * @return 路由名称 + */ + public String getRouteName (SysMenu menu) { + String routerName = StringUtils.capitalize(menu.getPath()); + // 非外链并且是一级目录(类型为目录) + if (isMenuFrame(menu)) { + routerName = StringUtils.EMPTY; + } + return routerName; + } + + /** + * 获取路由地址 + * + * @param menu 菜单信息 + * + * @return 路由地址 + */ + public String getRouterPath (SysMenu menu) { + String routerPath = menu.getPath(); + // 内链打开外网方式 + if (menu.getParentId().intValue() != 0 && isInnerLink(menu)) { + routerPath = innerLinkReplaceEach(routerPath); + } + // 非外链并且是一级目录(类型为目录) + if (0 == menu.getParentId().intValue() && UserConstants.TYPE_DIR.equals(menu.getMenuType()) + && UserConstants.NO_FRAME.equals(menu.getIsFrame())) { + routerPath = "/" + menu.getPath(); + } + // 非外链并且是一级目录(类型为菜单) + else if (isMenuFrame(menu)) { + routerPath = "/"; + } + return routerPath; + } + + /** + * 获取组件信息 + * + * @param menu 菜单信息 + * + * @return 组件信息 + */ + public String getComponent (SysMenu menu) { + String component = UserConstants.LAYOUT; + if (StringUtils.isNotEmpty(menu.getComponent()) && !isMenuFrame(menu)) { + component = menu.getComponent(); + } else if (StringUtils.isEmpty(menu.getComponent()) && menu.getParentId().intValue() != 0 && isInnerLink(menu)) { + component = UserConstants.INNER_LINK; + } else if (StringUtils.isEmpty(menu.getComponent()) && isParentView(menu)) { + component = UserConstants.PARENT_VIEW; + } + return component; + } + + /** + * 是否为菜单内部跳转 + * + * @param menu 菜单信息 + * + * @return 结果 + */ + public boolean isMenuFrame (SysMenu menu) { + return menu.getParentId().intValue() == 0 && UserConstants.TYPE_MENU.equals(menu.getMenuType()) + && menu.getIsFrame().equals(UserConstants.NO_FRAME); + } + + /** + * 是否为内链组件 + * + * @param menu 菜单信息 + * + * @return 结果 + */ + public boolean isInnerLink (SysMenu menu) { + return menu.getIsFrame().equals(UserConstants.NO_FRAME) && StringUtils.ishttp(menu.getPath()); + } + + /** + * 是否为parent_view组件 + * + * @param menu 菜单信息 + * + * @return 结果 + */ + public boolean isParentView (SysMenu menu) { + return menu.getParentId().intValue() != 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType()); + } + + /** + * 根据父节点的ID获取所有子节点 + * + * @param list 分类表 + * @param parentId 传入的父节点ID + * + * @return String + */ + public List getChildPerms (List list, int parentId) { + List returnList = new ArrayList(); + for (Iterator iterator = list.iterator() ; iterator.hasNext() ; ) { + SysMenu t = (SysMenu) iterator.next(); + // 一、根据传入的某个父节点ID,遍历该父节点的所有子节点 + if (t.getParentId() == parentId) { + recursionFn(list, t); + returnList.add(t); + } + } + return returnList; + } + + /** + * 递归列表 + * + * @param list 分类表 + * @param t 子节点 + */ + private void recursionFn (List list, SysMenu t) { + // 得到子节点列表 + List childList = getChildList(list, t); + t.setChildren(childList); + for (SysMenu tChild : childList) { + if (hasChild(list, tChild)) { + recursionFn(list, tChild); + } + } + } + + /** + * 得到子节点列表 + */ + private List getChildList (List list, SysMenu t) { + List tlist = new ArrayList(); + Iterator it = list.iterator(); + while (it.hasNext()) { + SysMenu n = (SysMenu) it.next(); + if (n.getParentId().longValue() == t.getMenuId().longValue()) { + tlist.add(n); + } + } + return tlist; + } + + /** + * 判断是否有子节点 + */ + private boolean hasChild (List list, SysMenu t) { + return getChildList(list, t).size() > 0; + } + + /** + * 内链域名特殊字符替换 + * + * @return 替换后的内链域名 + */ + public String innerLinkReplaceEach (String path) { + return StringUtils.replaceEach(path, new String[]{Constants.HTTP, Constants.HTTPS, Constants.WWW, ".", ":"}, + new String[]{"", "", "", "/", "/"}); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysNoticeServiceImpl.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysNoticeServiceImpl.java new file mode 100644 index 0000000..8c0c8d5 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysNoticeServiceImpl.java @@ -0,0 +1,93 @@ +package com.muyu.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.system.domain.SysNotice; +import com.muyu.system.mapper.SysNoticeMapper; +import com.muyu.system.service.SysNoticeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 公告 服务层实现 + * + * @author muyu + */ +@Service +public class SysNoticeServiceImpl extends ServiceImpl implements SysNoticeService { + @Autowired + private SysNoticeMapper noticeMapper; + + /** + * 查询公告信息 + * + * @param noticeId 公告ID + * + * @return 公告信息 + */ + @Override + public SysNotice selectNoticeById (Long noticeId) { + return noticeMapper.selectNoticeById(noticeId); + } + + /** + * 查询公告列表 + * + * @param notice 公告信息 + * + * @return 公告集合 + */ + @Override + public List selectNoticeList (SysNotice notice) { + return noticeMapper.selectNoticeList(notice); + } + + /** + * 新增公告 + * + * @param notice 公告信息 + * + * @return 结果 + */ + @Override + public int insertNotice (SysNotice notice) { + return noticeMapper.insertNotice(notice); + } + + /** + * 修改公告 + * + * @param notice 公告信息 + * + * @return 结果 + */ + @Override + public int updateNotice (SysNotice notice) { + return noticeMapper.updateNotice(notice); + } + + /** + * 删除公告对象 + * + * @param noticeId 公告ID + * + * @return 结果 + */ + @Override + public int deleteNoticeById (Long noticeId) { + return noticeMapper.deleteNoticeById(noticeId); + } + + /** + * 批量删除公告信息 + * + * @param noticeIds 需要删除的公告ID + * + * @return 结果 + */ + @Override + public int deleteNoticeByIds (Long[] noticeIds) { + return noticeMapper.deleteNoticeByIds(noticeIds); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysOperLogServiceImpl.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysOperLogServiceImpl.java new file mode 100644 index 0000000..24e7d39 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysOperLogServiceImpl.java @@ -0,0 +1,77 @@ +package com.muyu.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.system.domain.SysOperLog; +import com.muyu.system.mapper.SysOperLogMapper; +import com.muyu.system.service.SysOperLogService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 操作日志 服务层处理 + * + * @author muyu + */ +@Service +public class SysOperLogServiceImpl extends ServiceImpl implements SysOperLogService { + @Autowired + private SysOperLogMapper operLogMapper; + + /** + * 新增操作日志 + * + * @param operLog 操作日志对象 + * + * @return 结果 + */ + @Override + public int insertOperlog (SysOperLog operLog) { + return operLogMapper.insertOperlog(operLog); + } + + /** + * 查询系统操作日志集合 + * + * @param operLog 操作日志对象 + * + * @return 操作日志集合 + */ + @Override + public List selectOperLogList (SysOperLog operLog) { + return operLogMapper.selectOperLogList(operLog); + } + + /** + * 批量删除系统操作日志 + * + * @param operIds 需要删除的操作日志ID + * + * @return 结果 + */ + @Override + public int deleteOperLogByIds (Long[] operIds) { + return operLogMapper.deleteOperLogByIds(operIds); + } + + /** + * 查询操作日志详细 + * + * @param operId 操作ID + * + * @return 操作日志对象 + */ + @Override + public SysOperLog selectOperLogById (Long operId) { + return operLogMapper.selectOperLogById(operId); + } + + /** + * 清空操作日志 + */ + @Override + public void cleanOperLog () { + operLogMapper.cleanOperLog(); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysPermissionServiceImpl.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysPermissionServiceImpl.java new file mode 100644 index 0000000..9811d01 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysPermissionServiceImpl.java @@ -0,0 +1,77 @@ +package com.muyu.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.system.domain.SysRole; +import com.muyu.common.system.domain.SysUser; +import com.muyu.system.service.SysMenuService; +import com.muyu.system.service.SysPermissionService; +import com.muyu.system.service.SysRoleService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + * 用户权限处理 + * + * @author muyu + */ +@Service +public class SysPermissionServiceImpl implements SysPermissionService { + @Autowired + private SysRoleService roleService; + + @Autowired + private SysMenuService menuService; + + /** + * 获取角色数据权限 + * + * @param user 用户Id + * + * @return 角色权限信息 + */ + @Override + public Set getRolePermission (SysUser user) { + Set roles = new HashSet(); + // 管理员拥有所有权限 + if (user.isAdmin()) { + roles.add("admin"); + } else { + roles.addAll(roleService.selectRolePermissionByUserId(user.getUserId())); + } + return roles; + } + + /** + * 获取菜单数据权限 + * + * @param userId 用户Id + * + * @return 菜单权限信息 + */ + @Override + public Set getMenuPermission (SysUser user) { + Set perms = new HashSet(); + // 管理员拥有所有权限 + if (user.isAdmin()) { + perms.add("*:*:*"); + } else { + List roles = user.getRoles(); + if (!CollectionUtils.isEmpty(roles)) { + // 多角色设置permissions属性,以便数据权限匹配权限 + for (SysRole role : roles) { + Set rolePerms = menuService.selectMenuPermsByRoleId(role.getRoleId()); + role.setPermissions(rolePerms); + perms.addAll(rolePerms); + } + } else { + perms.addAll(menuService.selectMenuPermsByUserId(user.getUserId())); + } + } + return perms; + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysPostServiceImpl.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysPostServiceImpl.java new file mode 100644 index 0000000..457ac5a --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysPostServiceImpl.java @@ -0,0 +1,174 @@ +package com.muyu.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.constant.UserConstants; +import com.muyu.common.core.exception.ServiceException; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.system.domain.SysPost; +import com.muyu.system.mapper.SysPostMapper; +import com.muyu.system.mapper.SysUserPostMapper; +import com.muyu.system.service.SysPostService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 岗位信息 服务层处理 + * + * @author muyu + */ +@Service +public class SysPostServiceImpl extends ServiceImpl implements SysPostService { + @Autowired + private SysPostMapper postMapper; + + @Autowired + private SysUserPostMapper userPostMapper; + + /** + * 查询岗位信息集合 + * + * @param post 岗位信息 + * + * @return 岗位信息集合 + */ + @Override + public List selectPostList (SysPost post) { + return postMapper.selectPostList(post); + } + + /** + * 查询所有岗位 + * + * @return 岗位列表 + */ + @Override + public List selectPostAll () { + return postMapper.selectPostAll(); + } + + /** + * 通过岗位ID查询岗位信息 + * + * @param postId 岗位ID + * + * @return 角色对象信息 + */ + @Override + public SysPost selectPostById (Long postId) { + return postMapper.selectPostById(postId); + } + + /** + * 根据用户ID获取岗位选择框列表 + * + * @param userId 用户ID + * + * @return 选中岗位ID列表 + */ + @Override + public List selectPostListByUserId (Long userId) { + return postMapper.selectPostListByUserId(userId); + } + + /** + * 校验岗位名称是否唯一 + * + * @param post 岗位信息 + * + * @return 结果 + */ + @Override + public boolean checkPostNameUnique (SysPost post) { + Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId(); + SysPost info = postMapper.checkPostNameUnique(post.getPostName()); + if (StringUtils.isNotNull(info) && info.getPostId().longValue() != postId.longValue()) { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 校验岗位编码是否唯一 + * + * @param post 岗位信息 + * + * @return 结果 + */ + @Override + public boolean checkPostCodeUnique (SysPost post) { + Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId(); + SysPost info = postMapper.checkPostCodeUnique(post.getPostCode()); + if (StringUtils.isNotNull(info) && info.getPostId().longValue() != postId.longValue()) { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 通过岗位ID查询岗位使用数量 + * + * @param postId 岗位ID + * + * @return 结果 + */ + @Override + public int countUserPostById (Long postId) { + return userPostMapper.countUserPostById(postId); + } + + /** + * 删除岗位信息 + * + * @param postId 岗位ID + * + * @return 结果 + */ + @Override + public int deletePostById (Long postId) { + return postMapper.deletePostById(postId); + } + + /** + * 批量删除岗位信息 + * + * @param postIds 需要删除的岗位ID + * + * @return 结果 + */ + @Override + public int deletePostByIds (Long[] postIds) { + for (Long postId : postIds) { + SysPost post = selectPostById(postId); + if (countUserPostById(postId) > 0) { + throw new ServiceException(String.format("%1$s已分配,不能删除", post.getPostName())); + } + } + return postMapper.deletePostByIds(postIds); + } + + /** + * 新增保存岗位信息 + * + * @param post 岗位信息 + * + * @return 结果 + */ + @Override + public int insertPost (SysPost post) { + return postMapper.insertPost(post); + } + + /** + * 修改保存岗位信息 + * + * @param post 岗位信息 + * + * @return 结果 + */ + @Override + public int updatePost (SysPost post) { + return postMapper.updatePost(post); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysRoleServiceImpl.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysRoleServiceImpl.java new file mode 100644 index 0000000..fa832da --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysRoleServiceImpl.java @@ -0,0 +1,399 @@ +package com.muyu.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.constant.UserConstants; +import com.muyu.common.core.exception.ServiceException; +import com.muyu.common.core.utils.SpringUtils; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.datascope.annotation.DataScope; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.SysRole; +import com.muyu.common.system.domain.SysUser; +import com.muyu.system.domain.SysRoleDept; +import com.muyu.system.domain.SysRoleMenu; +import com.muyu.system.domain.SysUserRole; +import com.muyu.system.mapper.SysRoleDeptMapper; +import com.muyu.system.mapper.SysRoleMapper; +import com.muyu.system.mapper.SysRoleMenuMapper; +import com.muyu.system.mapper.SysUserRoleMapper; +import com.muyu.system.service.SysRoleService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +/** + * 角色 业务层处理 + * + * @author muyu + */ +@Service +public class SysRoleServiceImpl extends ServiceImpl implements SysRoleService { + @Autowired + private SysRoleMapper roleMapper; + + @Autowired + private SysRoleMenuMapper roleMenuMapper; + + @Autowired + private SysUserRoleMapper userRoleMapper; + + @Autowired + private SysRoleDeptMapper roleDeptMapper; + + /** + * 根据条件分页查询角色数据 + * + * @param role 角色信息 + * + * @return 角色数据集合信息 + */ + @Override + @DataScope(deptAlias = "d") + public List selectRoleList (SysRole role) { + return roleMapper.selectRoleList(role); + } + + /** + * 根据用户ID查询角色 + * + * @param userId 用户ID + * + * @return 角色列表 + */ + @Override + public List selectRolesByUserId (Long userId) { + List userRoles = roleMapper.selectRolePermissionByUserId(userId); + List roles = selectRoleAll(); + for (SysRole role : roles) { + for (SysRole userRole : userRoles) { + if (role.getRoleId().longValue() == userRole.getRoleId().longValue()) { + role.setFlag(true); + break; + } + } + } + return roles; + } + + /** + * 根据用户ID查询权限 + * + * @param userId 用户ID + * + * @return 权限列表 + */ + @Override + public Set selectRolePermissionByUserId (Long userId) { + List perms = roleMapper.selectRolePermissionByUserId(userId); + Set permsSet = new HashSet<>(); + for (SysRole perm : perms) { + if (StringUtils.isNotNull(perm)) { + permsSet.addAll(Arrays.asList(perm.getRoleKey().trim().split(","))); + } + } + return permsSet; + } + + /** + * 查询所有角色 + * + * @return 角色列表 + */ + @Override + public List selectRoleAll () { + return SpringUtils.getAopProxy(this).selectRoleList(new SysRole()); + } + + /** + * 根据用户ID获取角色选择框列表 + * + * @param userId 用户ID + * + * @return 选中角色ID列表 + */ + @Override + public List selectRoleListByUserId (Long userId) { + return roleMapper.selectRoleListByUserId(userId); + } + + /** + * 通过角色ID查询角色 + * + * @param roleId 角色ID + * + * @return 角色对象信息 + */ + @Override + public SysRole selectRoleById (Long roleId) { + return roleMapper.selectRoleById(roleId); + } + + /** + * 校验角色名称是否唯一 + * + * @param role 角色信息 + * + * @return 结果 + */ + @Override + public boolean checkRoleNameUnique (SysRole role) { + Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId(); + SysRole info = roleMapper.checkRoleNameUnique(role.getRoleName()); + if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 校验角色权限是否唯一 + * + * @param role 角色信息 + * + * @return 结果 + */ + @Override + public boolean checkRoleKeyUnique (SysRole role) { + Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId(); + SysRole info = roleMapper.checkRoleKeyUnique(role.getRoleKey()); + if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 校验角色是否允许操作 + * + * @param role 角色信息 + */ + @Override + public void checkRoleAllowed (SysRole role) { + if (StringUtils.isNotNull(role.getRoleId()) && role.isAdmin()) { + throw new ServiceException("不允许操作超级管理员角色"); + } + } + + /** + * 校验角色是否有数据权限 + * + * @param roleId 角色id + */ + @Override + public void checkRoleDataScope (Long roleId) { + if (!SysUser.isAdmin(SecurityUtils.getUserId())) { + SysRole role = new SysRole(); + role.setRoleId(roleId); + List roles = SpringUtils.getAopProxy(this).selectRoleList(role); + if (StringUtils.isEmpty(roles)) { + throw new ServiceException("没有权限访问角色数据!"); + } + } + } + + /** + * 通过角色ID查询角色使用数量 + * + * @param roleId 角色ID + * + * @return 结果 + */ + @Override + public int countUserRoleByRoleId (Long roleId) { + return userRoleMapper.countUserRoleByRoleId(roleId); + } + + /** + * 新增保存角色信息 + * + * @param role 角色信息 + * + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int insertRole (SysRole role) { + // 新增角色信息 + roleMapper.insertRole(role); + return insertRoleMenu(role); + } + + /** + * 修改保存角色信息 + * + * @param role 角色信息 + * + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int updateRole (SysRole role) { + // 修改角色信息 + roleMapper.updateRole(role); + // 删除角色与菜单关联 + roleMenuMapper.deleteRoleMenuByRoleId(role.getRoleId()); + return insertRoleMenu(role); + } + + /** + * 修改角色状态 + * + * @param role 角色信息 + * + * @return 结果 + */ + @Override + public int updateRoleStatus (SysRole role) { + return roleMapper.updateRole(role); + } + + /** + * 修改数据权限信息 + * + * @param role 角色信息 + * + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int authDataScope (SysRole role) { + // 修改角色信息 + roleMapper.updateRole(role); + // 删除角色与部门关联 + roleDeptMapper.deleteRoleDeptByRoleId(role.getRoleId()); + // 新增角色和部门信息(数据权限) + return insertRoleDept(role); + } + + /** + * 新增角色菜单信息 + * + * @param role 角色对象 + */ + public int insertRoleMenu (SysRole role) { + int rows = 1; + // 新增用户与角色管理 + List list = new ArrayList(); + for (Long menuId : role.getMenuIds()) { + SysRoleMenu rm = new SysRoleMenu(); + rm.setRoleId(role.getRoleId()); + rm.setMenuId(menuId); + list.add(rm); + } + if (list.size() > 0) { + rows = roleMenuMapper.batchRoleMenu(list); + } + return rows; + } + + /** + * 新增角色部门信息(数据权限) + * + * @param role 角色对象 + */ + public int insertRoleDept (SysRole role) { + int rows = 1; + // 新增角色与部门(数据权限)管理 + List list = new ArrayList(); + for (Long deptId : role.getDeptIds()) { + SysRoleDept rd = new SysRoleDept(); + rd.setRoleId(role.getRoleId()); + rd.setDeptId(deptId); + list.add(rd); + } + if (list.size() > 0) { + rows = roleDeptMapper.batchRoleDept(list); + } + return rows; + } + + /** + * 通过角色ID删除角色 + * + * @param roleId 角色ID + * + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int deleteRoleById (Long roleId) { + // 删除角色与菜单关联 + roleMenuMapper.deleteRoleMenuByRoleId(roleId); + // 删除角色与部门关联 + roleDeptMapper.deleteRoleDeptByRoleId(roleId); + return roleMapper.deleteRoleById(roleId); + } + + /** + * 批量删除角色信息 + * + * @param roleIds 需要删除的角色ID + * + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int deleteRoleByIds (Long[] roleIds) { + for (Long roleId : roleIds) { + checkRoleAllowed(new SysRole(roleId)); + checkRoleDataScope(roleId); + SysRole role = selectRoleById(roleId); + if (countUserRoleByRoleId(roleId) > 0) { + throw new ServiceException(String.format("%1$s已分配,不能删除", role.getRoleName())); + } + } + // 删除角色与菜单关联 + roleMenuMapper.deleteRoleMenu(roleIds); + // 删除角色与部门关联 + roleDeptMapper.deleteRoleDept(roleIds); + return roleMapper.deleteRoleByIds(roleIds); + } + + /** + * 取消授权用户角色 + * + * @param userRole 用户和角色关联信息 + * + * @return 结果 + */ + @Override + public int deleteAuthUser (SysUserRole userRole) { + return userRoleMapper.deleteUserRoleInfo(userRole); + } + + /** + * 批量取消授权用户角色 + * + * @param roleId 角色ID + * @param userIds 需要取消授权的用户数据ID + * + * @return 结果 + */ + @Override + public int deleteAuthUsers (Long roleId, Long[] userIds) { + return userRoleMapper.deleteUserRoleInfos(roleId, userIds); + } + + /** + * 批量选择授权用户角色 + * + * @param roleId 角色ID + * @param userIds 需要授权的用户数据ID + * + * @return 结果 + */ + @Override + public int insertAuthUsers (Long roleId, Long[] userIds) { + // 新增用户与角色管理 + List list = new ArrayList(); + for (Long userId : userIds) { + SysUserRole ur = new SysUserRole(); + ur.setUserId(userId); + ur.setRoleId(roleId); + list.add(ur); + } + return userRoleMapper.batchUserRole(list); + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysUserOnlineServiceImpl.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysUserOnlineServiceImpl.java new file mode 100644 index 0000000..8ede754 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysUserOnlineServiceImpl.java @@ -0,0 +1,85 @@ +package com.muyu.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.system.domain.LoginUser; +import com.muyu.system.domain.SysUserOnline; +import com.muyu.system.service.SysUserOnlineService; +import org.springframework.stereotype.Service; + +/** + * 在线用户 服务层处理 + * + * @author muyu + */ +@Service +public class SysUserOnlineServiceImpl implements SysUserOnlineService { + /** + * 通过登录地址查询信息 + * + * @param ipaddr 登录地址 + * @param user 用户信息 + * + * @return 在线用户信息 + */ + @Override + public SysUserOnline selectOnlineByIpaddr (String ipaddr, LoginUser user) { + if (StringUtils.equals(ipaddr, user.getIpaddr())) { + return loginUserToUserOnline(user); + } + return null; + } + + /** + * 通过用户名称查询信息 + * + * @param userName 用户名称 + * @param user 用户信息 + * + * @return 在线用户信息 + */ + @Override + public SysUserOnline selectOnlineByUserName (String userName, LoginUser user) { + if (StringUtils.equals(userName, user.getUsername())) { + return loginUserToUserOnline(user); + } + return null; + } + + /** + * 通过登录地址/用户名称查询信息 + * + * @param ipaddr 登录地址 + * @param userName 用户名称 + * @param user 用户信息 + * + * @return 在线用户信息 + */ + @Override + public SysUserOnline selectOnlineByInfo (String ipaddr, String userName, LoginUser user) { + if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername())) { + return loginUserToUserOnline(user); + } + return null; + } + + /** + * 设置在线用户信息 + * + * @param user 用户信息 + * + * @return 在线用户 + */ + @Override + public SysUserOnline loginUserToUserOnline (LoginUser user) { + if (StringUtils.isNull(user)) { + return null; + } + SysUserOnline sysUserOnline = new SysUserOnline(); + sysUserOnline.setTokenId(user.getToken()); + sysUserOnline.setUserName(user.getUsername()); + sysUserOnline.setIpaddr(user.getIpaddr()); + sysUserOnline.setLoginTime(user.getLoginTime()); + return sysUserOnline; + } +} diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java new file mode 100644 index 0000000..9201baf --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java @@ -0,0 +1,512 @@ +package com.muyu.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.constant.UserConstants; +import com.muyu.common.core.exception.ServiceException; +import com.muyu.common.core.utils.SpringUtils; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.utils.bean.BeanValidators; +import com.muyu.common.datascope.annotation.DataScope; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.SysRole; +import com.muyu.common.system.domain.SysUser; +import com.muyu.system.domain.SysPost; +import com.muyu.system.domain.SysUserPost; +import com.muyu.system.domain.SysUserRole; +import com.muyu.system.mapper.*; +import com.muyu.system.service.SysUserService; +import com.muyu.system.service.SysConfigService; +import jakarta.validation.Validator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 用户 业务层处理 + * + * @author muyu + */ +@Service +public class SysUserServiceImpl extends ServiceImpl implements SysUserService { + private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class); + @Autowired + protected Validator validator; + @Autowired + private SysUserMapper userMapper; + @Autowired + private SysRoleMapper roleMapper; + @Autowired + private SysPostMapper postMapper; + @Autowired + private SysUserRoleMapper userRoleMapper; + @Autowired + private SysUserPostMapper userPostMapper; + @Autowired + private SysConfigService configService; + + /** + * 根据条件分页查询用户列表 + * + * @param user 用户信息 + * + * @return 用户信息集合信息 + */ + @Override + @DataScope(deptAlias = "d", userAlias = "u") + public List selectUserList (SysUser user) { + return userMapper.selectUserList(user); + } + + /** + * 根据条件分页查询已分配用户角色列表 + * + * @param user 用户信息 + * + * @return 用户信息集合信息 + */ + @Override + @DataScope(deptAlias = "d", userAlias = "u") + public List selectAllocatedList (SysUser user) { + return userMapper.selectAllocatedList(user); + } + + /** + * 根据条件分页查询未分配用户角色列表 + * + * @param user 用户信息 + * + * @return 用户信息集合信息 + */ + @Override + @DataScope(deptAlias = "d", userAlias = "u") + public List selectUnallocatedList (SysUser user) { + return userMapper.selectUnallocatedList(user); + } + + /** + * 通过用户名查询用户 + * + * @param userName 用户名 + * + * @return 用户对象信息 + */ + @Override + public SysUser selectUserByUserName (String userName) { + return userMapper.selectUserByUserName(userName); + } + + /** + * 通过用户ID查询用户 + * + * @param userId 用户ID + * + * @return 用户对象信息 + */ + @Override + public SysUser selectUserById (Long userId) { + return userMapper.selectUserById(userId); + } + + /** + * 查询用户所属角色组 + * + * @param userName 用户名 + * + * @return 结果 + */ + @Override + public String selectUserRoleGroup (String userName) { + List list = roleMapper.selectRolesByUserName(userName); + if (CollectionUtils.isEmpty(list)) { + return StringUtils.EMPTY; + } + return list.stream().map(SysRole::getRoleName).collect(Collectors.joining(",")); + } + + /** + * 查询用户所属岗位组 + * + * @param userName 用户名 + * + * @return 结果 + */ + @Override + public String selectUserPostGroup (String userName) { + List list = postMapper.selectPostsByUserName(userName); + if (CollectionUtils.isEmpty(list)) { + return StringUtils.EMPTY; + } + return list.stream().map(SysPost::getPostName).collect(Collectors.joining(",")); + } + + /** + * 校验用户名称是否唯一 + * + * @param user 用户信息 + * + * @return 结果 + */ + @Override + public boolean checkUserNameUnique (SysUser user) { + Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); + SysUser info = userMapper.checkUserNameUnique(user.getUserName()); + if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 校验手机号码是否唯一 + * + * @param user 用户信息 + * + * @return + */ + @Override + public boolean checkPhoneUnique (SysUser user) { + Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); + SysUser info = userMapper.checkPhoneUnique(user.getPhonenumber()); + if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 校验email是否唯一 + * + * @param user 用户信息 + * + * @return + */ + @Override + public boolean checkEmailUnique (SysUser user) { + Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); + SysUser info = userMapper.checkEmailUnique(user.getEmail()); + if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 校验用户是否允许操作 + * + * @param user 用户信息 + */ + @Override + public void checkUserAllowed (SysUser user) { + if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) { + throw new ServiceException("不允许操作超级管理员用户"); + } + } + + /** + * 校验用户是否有数据权限 + * + * @param userId 用户id + */ + @Override + public void checkUserDataScope (Long userId) { + if (!SysUser.isAdmin(SecurityUtils.getUserId())) { + SysUser user = new SysUser(); + user.setUserId(userId); + List users = SpringUtils.getAopProxy(this).selectUserList(user); + if (StringUtils.isEmpty(users)) { + throw new ServiceException("没有权限访问用户数据!"); + } + } + } + + /** + * 新增保存用户信息 + * + * @param user 用户信息 + * + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int insertUser (SysUser user) { + // 新增用户信息 + int rows = userMapper.insertUser(user); + // 新增用户岗位关联 + insertUserPost(user); + // 新增用户与角色管理 + insertUserRole(user); + return rows; + } + + /** + * 注册用户信息 + * + * @param user 用户信息 + * + * @return 结果 + */ + @Override + public boolean registerUser (SysUser user) { + return userMapper.insertUser(user) > 0; + } + + /** + * 修改保存用户信息 + * + * @param user 用户信息 + * + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int updateUser (SysUser user) { + Long userId = user.getUserId(); + // 删除用户与角色关联 + userRoleMapper.deleteUserRoleByUserId(userId); + // 新增用户与角色管理 + insertUserRole(user); + // 删除用户与岗位关联 + userPostMapper.deleteUserPostByUserId(userId); + // 新增用户与岗位管理 + insertUserPost(user); + return userMapper.updateUser(user); + } + + /** + * 用户授权角色 + * + * @param userId 用户ID + * @param roleIds 角色组 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void insertUserAuth (Long userId, Long[] roleIds) { + userRoleMapper.deleteUserRoleByUserId(userId); + insertUserRole(userId, roleIds); + } + + /** + * 修改用户状态 + * + * @param user 用户信息 + * + * @return 结果 + */ + @Override + public int updateUserStatus (SysUser user) { + return userMapper.updateUser(user); + } + + /** + * 修改用户基本信息 + * + * @param user 用户信息 + * + * @return 结果 + */ + @Override + public int updateUserProfile (SysUser user) { + return userMapper.updateUser(user); + } + + /** + * 修改用户头像 + * + * @param userName 用户名 + * @param avatar 头像地址 + * + * @return 结果 + */ + @Override + public boolean updateUserAvatar (String userName, String avatar) { + return userMapper.updateUserAvatar(userName, avatar) > 0; + } + + /** + * 重置用户密码 + * + * @param user 用户信息 + * + * @return 结果 + */ + @Override + public int resetPwd (SysUser user) { + return userMapper.updateUser(user); + } + + /** + * 重置用户密码 + * + * @param userName 用户名 + * @param password 密码 + * + * @return 结果 + */ + @Override + public int resetUserPwd (String userName, String password) { + return userMapper.resetUserPwd(userName, password); + } + + /** + * 新增用户角色信息 + * + * @param user 用户对象 + */ + public void insertUserRole (SysUser user) { + this.insertUserRole(user.getUserId(), user.getRoleIds()); + } + + /** + * 新增用户岗位信息 + * + * @param user 用户对象 + */ + public void insertUserPost (SysUser user) { + Long[] posts = user.getPostIds(); + if (StringUtils.isNotEmpty(posts)) { + // 新增用户与岗位管理 + List list = new ArrayList(); + for (Long postId : posts) { + SysUserPost up = new SysUserPost(); + up.setUserId(user.getUserId()); + up.setPostId(postId); + list.add(up); + } + userPostMapper.batchUserPost(list); + } + } + + /** + * 新增用户角色信息 + * + * @param userId 用户ID + * @param roleIds 角色组 + */ + public void insertUserRole (Long userId, Long[] roleIds) { + if (StringUtils.isNotEmpty(roleIds)) { + // 新增用户与角色管理 + List list = new ArrayList(); + for (Long roleId : roleIds) { + SysUserRole ur = new SysUserRole(); + ur.setUserId(userId); + ur.setRoleId(roleId); + list.add(ur); + } + userRoleMapper.batchUserRole(list); + } + } + + /** + * 通过用户ID删除用户 + * + * @param userId 用户ID + * + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int deleteUserById (Long userId) { + // 删除用户与角色关联 + userRoleMapper.deleteUserRoleByUserId(userId); + // 删除用户与岗位表 + userPostMapper.deleteUserPostByUserId(userId); + return userMapper.deleteUserById(userId); + } + + /** + * 批量删除用户信息 + * + * @param userIds 需要删除的用户ID + * + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int deleteUserByIds (Long[] userIds) { + for (Long userId : userIds) { + checkUserAllowed(new SysUser(userId)); + checkUserDataScope(userId); + } + // 删除用户与角色关联 + userRoleMapper.deleteUserRole(userIds); + // 删除用户与岗位关联 + userPostMapper.deleteUserPost(userIds); + return userMapper.deleteUserByIds(userIds); + } + + /** + * 导入用户数据 + * + * @param userList 用户数据列表 + * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 + * @param operName 操作用户 + * + * @return 结果 + */ + @Override + public String importUser (List userList, Boolean isUpdateSupport, String operName) { + if (StringUtils.isNull(userList) || userList.size() == 0) { + throw new ServiceException("导入用户数据不能为空!"); + } + int successNum = 0; + int failureNum = 0; + StringBuilder successMsg = new StringBuilder(); + StringBuilder failureMsg = new StringBuilder(); + String password = configService.selectConfigByKey("sys.user.initPassword"); + for (SysUser user : userList) { + try { + // 验证是否存在这个用户 + SysUser u = userMapper.selectUserByUserName(user.getUserName()); + if (StringUtils.isNull(u)) { + BeanValidators.validateWithException(validator, user); + user.setPassword(SecurityUtils.encryptPassword(password)); + user.setCreateBy(operName); + userMapper.insertUser(user); + successNum++; + successMsg.append("
" + successNum + "、账号 " + user.getUserName() + " 导入成功"); + } else if (isUpdateSupport) { + BeanValidators.validateWithException(validator, user); + checkUserAllowed(u); + checkUserDataScope(u.getUserId()); + user.setUserId(u.getUserId()); + user.setUpdateBy(operName); + userMapper.updateUser(user); + successNum++; + successMsg.append("
" + successNum + "、账号 " + user.getUserName() + " 更新成功"); + } else { + failureNum++; + failureMsg.append("
" + failureNum + "、账号 " + user.getUserName() + " 已存在"); + } + } catch (Exception e) { + failureNum++; + String msg = "
" + failureNum + "、账号 " + user.getUserName() + " 导入失败:"; + failureMsg.append(msg + e.getMessage()); + log.error(msg, e); + } + } + if (failureNum > 0) { + failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); + throw new ServiceException(failureMsg.toString()); + } else { + successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); + } + return successMsg.toString(); + } + + /** + * 查询数据库名称 + * @return + */ + @Override + public List selectCompanyList() { + return userMapper.selectCompanyList(); + } + +} diff --git a/cloud-modules/cloud-modules-system/src/main/resources/banner.txt b/cloud-modules/cloud-modules-system/src/main/resources/banner.txt new file mode 100644 index 0000000..0dd5eee --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/resources/banner.txt @@ -0,0 +1,2 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} diff --git a/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..b5ea3d8 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml @@ -0,0 +1,60 @@ +# Tomcat +server: + port: 9701 + +# nacos线上地址 +nacos: + addr: 47.101.49.53:8848 + user-name: nacos + password: nacos + namespace: seven +# SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all +# Spring +spring: + amqp: + deserialization: + trust: + all: true + main: + allow-bean-definition-overriding: true + application: + # 应用名称 + name: cloud-system + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + config: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + # 系统共享配置 + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # 系统环境Config共享配置 + - application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # xxl-job 配置文件 + - application-xxl-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # rabbit 配置文件 + - application-rabbit-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} +logging: + level: + com.muyu.system.mapper: DEBUG diff --git a/cloud-modules/cloud-modules-system/src/main/resources/logback/dev.xml b/cloud-modules/cloud-modules-system/src/main/resources/logback/dev.xml new file mode 100644 index 0000000..d1b5629 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/resources/logback/dev.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-system/src/main/resources/logback/prod.xml b/cloud-modules/cloud-modules-system/src/main/resources/logback/prod.xml new file mode 100644 index 0000000..76a0d8f --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/resources/logback/prod.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + ${log.sky.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-system/src/main/resources/logback/test.xml b/cloud-modules/cloud-modules-system/src/main/resources/logback/test.xml new file mode 100644 index 0000000..2cd69e4 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/resources/logback/test.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + ${log.sky.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysConfigMapper.xml b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysConfigMapper.xml new file mode 100644 index 0000000..2c35243 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysConfigMapper.xml @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + select config_id, + config_name, + config_key, + config_value, + config_type, + create_by, + create_time, + update_by, + update_time, + remark + from sys_config + + + + + + + and config_id = #{configId} + + + and config_key = #{configKey} + + + + + + + + + + + + + + insert into sys_config ( + config_name, + config_key, + config_value, + config_type, + create_by, + remark, + create_time + )values( + #{configName}, + #{configKey}, + #{configValue}, + #{configType}, + #{createBy}, + #{remark}, + sysdate() + ) + + + + update sys_config + + config_name = #{configName}, + config_key = #{configKey}, + config_value = #{configValue}, + config_type = #{configType}, + update_by = #{updateBy}, + remark = #{remark}, + update_time = sysdate() + + where config_id = #{configId} + + + + delete + from sys_config + where config_id = #{configId} + + + + delete from sys_config where config_id in + + #{configId} + + + + diff --git a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysDeptMapper.xml b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysDeptMapper.xml new file mode 100644 index 0000000..a571d8b --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + + select d.dept_id, + d.parent_id, + d.ancestors, + d.dept_name, + d.order_num, + d.leader, + d.phone, + d.email, + d.status, + d.del_flag, + d.create_by, + d.create_time + from sys_dept d + + + + + + + + + + + + + + + + + + + + insert into sys_dept( + dept_id, + parent_id, + dept_name, + ancestors, + order_num, + leader, + phone, + email, + status, + create_by, + create_time + )values( + #{deptId}, + #{parentId}, + #{deptName}, + #{ancestors}, + #{orderNum}, + #{leader}, + #{phone}, + #{email}, + #{status}, + #{createBy}, + sysdate() + ) + + + + update sys_dept + + parent_id = #{parentId}, + dept_name = #{deptName}, + ancestors = #{ancestors}, + order_num = #{orderNum}, + leader = #{leader}, + phone = #{phone}, + email = #{email}, + status = #{status}, + update_by = #{updateBy}, + update_time = sysdate() + + where dept_id = #{deptId} + + + + update sys_dept set ancestors = + + when #{item.deptId} then #{item.ancestors} + + where dept_id in + + #{item.deptId} + + + + + update sys_dept set status = '0' where dept_id in + + #{deptId} + + + + + update sys_dept + set del_flag = '2' + where dept_id = #{deptId} + + + diff --git a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysDictDataMapper.xml b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysDictDataMapper.xml new file mode 100644 index 0000000..5128c99 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysDictDataMapper.xml @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + select dict_code, + dict_sort, + dict_label, + dict_value, + dict_type, + css_class, + list_class, + is_default, + status, + create_by, + create_time, + remark + from sys_dict_data + + + + + + + + + + + + + + delete + from sys_dict_data + where dict_code = #{dictCode} + + + + delete from sys_dict_data where dict_code in + + #{dictCode} + + + + + update sys_dict_data + + dict_sort = #{dictSort}, + dict_label = #{dictLabel}, + dict_value = #{dictValue}, + dict_type = #{dictType}, + css_class = #{cssClass}, + list_class = #{listClass}, + is_default = #{isDefault}, + status = #{status}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = sysdate() + + where dict_code = #{dictCode} + + + + update sys_dict_data + set dict_type = #{newDictType} + where dict_type = #{oldDictType} + + + + insert into sys_dict_data( + dict_sort, + dict_label, + dict_value, + dict_type, + css_class, + list_class, + is_default, + status, + remark, + create_by, + create_time + )values( + #{dictSort}, + #{dictLabel}, + #{dictValue}, + #{dictType}, + #{cssClass}, + #{listClass}, + #{isDefault}, + #{status}, + #{remark}, + #{createBy}, + sysdate() + ) + + + diff --git a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysDictTypeMapper.xml b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysDictTypeMapper.xml new file mode 100644 index 0000000..7c0ebd1 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysDictTypeMapper.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + select dict_id, dict_name, dict_type, status, create_by, create_time, remark + from sys_dict_type + + + + + + + + + + + + + + delete + from sys_dict_type + where dict_id = #{dictId} + + + + delete from sys_dict_type where dict_id in + + #{dictId} + + + + + update sys_dict_type + + dict_name = #{dictName}, + dict_type = #{dictType}, + status = #{status}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = sysdate() + + where dict_id = #{dictId} + + + + insert into sys_dict_type( + dict_name, + dict_type, + status, + remark, + create_by, + create_time + )values( + #{dictName}, + #{dictType}, + #{status}, + #{remark}, + #{createBy}, + sysdate() + ) + + + diff --git a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysLogininforMapper.xml b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysLogininforMapper.xml new file mode 100644 index 0000000..114599c --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysLogininforMapper.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + insert into sys_logininfor (user_name, status, ipaddr, msg, access_time) + values (#{userName}, #{status}, #{ipaddr}, #{msg}, sysdate()) + + + + + + delete from sys_logininfor where info_id in + + #{infoId} + + + + + truncate table sys_logininfor + + + diff --git a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysMenuMapper.xml b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysMenuMapper.xml new file mode 100644 index 0000000..1dac5c4 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysMenuMapper.xml @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select menu_id, + menu_name, + parent_id, + order_num, + path, + component, + `query`, + is_frame, + is_cache, + menu_type, + visible, + status, + ifnull(perms, '') as perms, + icon, + create_time + from sys_menu + + + + + + + + + + + + + + + + + + + + + + + + + + update sys_menu + + menu_name = #{menuName}, + parent_id = #{parentId}, + order_num = #{orderNum}, + path = #{path}, + component = #{component}, + `query` = #{query}, + is_frame = #{isFrame}, + is_cache = #{isCache}, + menu_type = #{menuType}, + visible = #{visible}, + status = #{status}, + perms = #{perms}, + icon = #{icon}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = sysdate() + + where menu_id = #{menuId} + + + + insert into sys_menu( + menu_id, + parent_id, + menu_name, + order_num, + path, + component, + `query`, + is_frame, + is_cache, + menu_type, + visible, + status, + perms, + icon, + remark, + create_by, + create_time + )values( + #{menuId}, + #{parentId}, + #{menuName}, + #{orderNum}, + #{path}, + #{component}, + #{query}, + #{isFrame}, + #{isCache}, + #{menuType}, + #{visible}, + #{status}, + #{perms}, + #{icon}, + #{remark}, + #{createBy}, + sysdate() + ) + + + + delete + from sys_menu + where menu_id = #{menuId} + + + diff --git a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysNoticeMapper.xml b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysNoticeMapper.xml new file mode 100644 index 0000000..0687403 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysNoticeMapper.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + select notice_id, + notice_title, + notice_type, + cast(notice_content as char) as notice_content, + status, + create_by, + create_time, + update_by, + update_time, + remark + from sys_notice + + + + + + + + insert into sys_notice ( + notice_title, + notice_type, + notice_content, + status, + remark, + create_by, + create_time + )values( + #{noticeTitle}, + #{noticeType}, + #{noticeContent}, + #{status}, + #{remark}, + #{createBy}, + sysdate() + ) + + + + update sys_notice + + notice_title = #{noticeTitle}, + notice_type = #{noticeType}, + notice_content = #{noticeContent}, + status = #{status}, + update_by = #{updateBy}, + update_time = sysdate() + + where notice_id = #{noticeId} + + + + delete + from sys_notice + where notice_id = #{noticeId} + + + + delete from sys_notice where notice_id in + + #{noticeId} + + + + diff --git a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysOperLogMapper.xml b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysOperLogMapper.xml new file mode 100644 index 0000000..1834ea1 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysOperLogMapper.xml @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + select oper_id, + title, + business_type, + method, + request_method, + operator_type, + oper_name, + dept_name, + oper_url, + oper_ip, + oper_param, + json_result, + status, + error_msg, + oper_time, + cost_time + from sys_oper_log + + + + insert into sys_oper_log(title, business_type, method, request_method, operator_type, oper_name, dept_name, + oper_url, oper_ip, oper_param, json_result, status, error_msg, cost_time, oper_time) + values (#{title}, #{businessType}, #{method}, #{requestMethod}, #{operatorType}, #{operName}, #{deptName}, + #{operUrl}, #{operIp}, #{operParam}, #{jsonResult}, #{status}, #{errorMsg}, #{costTime}, sysdate()) + + + + + + delete from sys_oper_log where oper_id in + + #{operId} + + + + + + + truncate table sys_oper_log + + + diff --git a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysPostMapper.xml b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysPostMapper.xml new file mode 100644 index 0000000..63142c3 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysPostMapper.xml @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + select post_id, + post_code, + post_name, + post_sort, + status, + create_by, + create_time, + remark + from sys_post + + + + + + + + + + + + + + + + + + update sys_post + + post_code = #{postCode}, + post_name = #{postName}, + post_sort = #{postSort}, + status = #{status}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = sysdate() + + where post_id = #{postId} + + + + insert into sys_post( + post_id, + post_code, + post_name, + post_sort, + status, + remark, + create_by, + create_time + )values( + #{postId}, + #{postCode}, + #{postName}, + #{postSort}, + #{status}, + #{remark}, + #{createBy}, + sysdate() + ) + + + + delete + from sys_post + where post_id = #{postId} + + + + delete from sys_post where post_id in + + #{postId} + + + + diff --git a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml new file mode 100644 index 0000000..1a9ab92 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + delete + from sys_role_dept + where role_id = #{roleId} + + + + + + delete from sys_role_dept where role_id in + + #{roleId} + + + + + insert into sys_role_dept(role_id, dept_id) values + + (#{item.roleId},#{item.deptId}) + + + + diff --git a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysRoleMapper.xml b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysRoleMapper.xml new file mode 100644 index 0000000..f6b56b3 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysRoleMapper.xml @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + select distinct r.role_id, + r.role_name, + r.role_key, + r.role_sort, + r.data_scope, + r.menu_check_strictly, + r.dept_check_strictly, + r.status, + r.del_flag, + r.create_time, + r.remark + from sys_role r + left join sys_user_role ur on ur.role_id = r.role_id + left join sys_user u on u.user_id = ur.user_id + left join sys_dept d on u.dept_id = d.dept_id + + + + + + + + + + + + + + + + + + + + insert into sys_role( + role_id, + role_name, + role_key, + role_sort, + data_scope, + menu_check_strictly, + dept_check_strictly, + status, + remark, + create_by, + create_time + )values( + #{roleId}, + #{roleName}, + #{roleKey}, + #{roleSort}, + #{dataScope}, + #{menuCheckStrictly}, + #{deptCheckStrictly}, + #{status}, + #{remark}, + #{createBy}, + sysdate() + ) + + + + update sys_role + + role_name = #{roleName}, + role_key = #{roleKey}, + role_sort = #{roleSort}, + data_scope = #{dataScope}, + menu_check_strictly = #{menuCheckStrictly}, + dept_check_strictly = #{deptCheckStrictly}, + status = #{status}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = sysdate() + + where role_id = #{roleId} + + + + update sys_role + set del_flag = '2' + where role_id = #{roleId} + + + + update sys_role set del_flag = '2' where role_id in + + #{roleId} + + + + diff --git a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml new file mode 100644 index 0000000..22d2609 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + delete + from sys_role_menu + where role_id = #{roleId} + + + + delete from sys_role_menu where role_id in + + #{roleId} + + + + + insert into sys_role_menu(role_id, menu_id) values + + (#{item.roleId},#{item.menuId}) + + + + diff --git a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserMapper.xml b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserMapper.xml new file mode 100644 index 0000000..f4f75bb --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -0,0 +1,276 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select u.user_id, + u.dept_id, + u.user_name, + u.nick_name, + u.email, + u.avatar, + u.phonenumber, + u.password, + u.sex, + u.status, + u.del_flag, + u.login_ip, + u.login_date, + u.create_by, + u.create_time, + u.remark, + u.database_name, + d.dept_id, + d.parent_id, + d.ancestors, + d.dept_name, + d.order_num, + d.leader, + d.status as dept_status, + r.role_id, + r.role_name, + r.role_key, + r.role_sort, + r.data_scope, + r.status as role_status + from sys_user u + left join sys_dept d on u.dept_id = d.dept_id + left join sys_user_role ur on u.user_id = ur.user_id + left join sys_role r on r.role_id = ur.role_id + + + + + + + + + + + + + + + + + + + + + insert into sys_user( + user_id, + dept_id, + user_name, + nick_name, + email, + avatar, + phonenumber, + sex, + password, + status, + create_by, + remark, + create_time + )values( + #{userId}, + #{deptId}, + #{userName}, + #{nickName}, + #{email}, + #{avatar}, + #{phonenumber}, + #{sex}, + #{password}, + #{status}, + #{createBy}, + #{remark}, + sysdate() + ) + + + + update sys_user + + dept_id = #{deptId}, + user_name = #{userName}, + nick_name = #{nickName}, + email = #{email}, + phonenumber = #{phonenumber}, + sex = #{sex}, + avatar = #{avatar}, + password = #{password}, + status = #{status}, + login_ip = #{loginIp}, + login_date = #{loginDate}, + update_by = #{updateBy}, + remark = #{remark}, + update_time = sysdate() + + where user_id = #{userId} + + + + update sys_user + set status = #{status} + where user_id = #{userId} + + + + update sys_user + set avatar = #{avatar} + where user_name = #{userName} + + + + update sys_user + set password = #{password} + where user_name = #{userName} + + + + update sys_user + set del_flag = '2' + where user_id = #{userId} + + + + update sys_user set del_flag = '2' where user_id in + + #{userId} + + + + diff --git a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserPostMapper.xml b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserPostMapper.xml new file mode 100644 index 0000000..30e4f06 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserPostMapper.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + delete + from sys_user_post + where user_id = #{userId} + + + + + + delete from sys_user_post where user_id in + + #{userId} + + + + + insert into sys_user_post(user_id, post_id) values + + (#{item.userId},#{item.postId}) + + + + diff --git a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserRoleMapper.xml b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserRoleMapper.xml new file mode 100644 index 0000000..b93bc72 --- /dev/null +++ b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserRoleMapper.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + delete + from sys_user_role + where user_id = #{userId} + + + + + + delete from sys_user_role where user_id in + + #{userId} + + + + + insert into sys_user_role(user_id, role_id) values + + (#{item.userId},#{item.roleId}) + + + + + delete + from sys_user_role + where user_id = #{userId} + and role_id = #{roleId} + + + + delete from sys_user_role where role_id=#{roleId} and user_id in + + #{userId} + + + diff --git a/cloud-modules/cloud-modules-vehicle-gateway/pom.xml b/cloud-modules/cloud-modules-vehicle-gateway/pom.xml new file mode 100644 index 0000000..7ead0b2 --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/pom.xml @@ -0,0 +1,136 @@ + + + 4.0.0 + + com.muyu + cloud-modules + 3.6.3 + + + cloud-modules-vehicle-gateway + + + 17 + 17 + UTF-8 + 1.2.5 + + + + cloud-modules-vehicle-gateway车辆网关负载中心 + + + + + + + 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.boot + spring-boot-starter-actuator + + + + + com.mysql + mysql-connector-j + + + + + com.muyu + cloud-common-datasource + + + + + com.muyu + cloud-common-datascope + + + + + com.muyu + cloud-common-log + + + + + com.muyu + cloud-common-api-doc + + + + + com.muyu + cloud-common-xxl + + + + com.muyu + cloud-common-rabbit + + + + org.eclipse.paho + org.eclipse.paho.client.mqttv3 + ${mqtt.version} + + + + com.aliyun + ecs20140526 + 5.1.8 + + + com.aliyun + tea-openapi + 0.3.2 + + + com.aliyun + tea-console + 0.0.1 + + + com.aliyun + tea-util + 0.2.21 + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/VehicleGatewayApplication.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/VehicleGatewayApplication.java new file mode 100644 index 0000000..2221cdf --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/VehicleGatewayApplication.java @@ -0,0 +1,18 @@ +package com.muyu.cloud.vehicle.gateway; + +import com.muyu.common.security.annotation.EnableCustomConfig; +import com.muyu.common.security.annotation.EnableMyFeignClients; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * 车辆网关负载中心 + */ +@EnableCustomConfig +@EnableMyFeignClients +@SpringBootApplication +public class VehicleGatewayApplication { + public static void main(String[] args) { + SpringApplication.run(VehicleGatewayApplication.class, args); + } +} diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/test/MqttPublishSample.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/test/MqttPublishSample.java new file mode 100644 index 0000000..a152392 --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/test/MqttPublishSample.java @@ -0,0 +1,50 @@ +package com.muyu.cloud.vehicle.gateway.test; + +import org.eclipse.paho.client.mqttv3.*; + +/** + * 连接fluxMQ + */ +public class MqttPublishSample { + + public static void main(String[] args) { + + String topic = "vehicle"; + String content = "Message from MqttPublishSample"; + int qos = 2; + String broker = "tcp://127.0.0.1:1883"; + String clientId = "JavaSample"; + + try { + MqttClient sampleClient = new MqttClient(broker, clientId); + MqttConnectOptions connOpts = new MqttConnectOptions(); + connOpts.setCleanSession(true); + System.out.println("Connecting to broker: "+broker); + sampleClient.connect(connOpts); + sampleClient.subscribe(topic,0); + sampleClient.setCallback(new MqttCallback() { + @Override + public void connectionLost(Throwable throwable) { + + } + + @Override + public void messageArrived(String s, MqttMessage mqttMessage) throws Exception { + System.out.println(new String(mqttMessage.getPayload())); + } + + @Override + public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { + + } + }); + } catch(MqttException me) { + System.out.println("reason "+me.getReasonCode()); + System.out.println("msg "+me.getMessage()); + System.out.println("loc "+me.getLocalizedMessage()); + System.out.println("cause "+me.getCause()); + System.out.println("excep "+me); + me.printStackTrace(); + } + } +} diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/test/example/DelInstance.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/test/example/DelInstance.java new file mode 100644 index 0000000..1d445d5 --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/test/example/DelInstance.java @@ -0,0 +1,108 @@ +// This file is auto-generated, don't edit it. Thanks. +package com.muyu.cloud.vehicle.gateway.test.example; + +import com.aliyun.ecs20140526.models.DescribeInstancesRequest; +import com.aliyun.ecs20140526.models.DescribeInstancesResponse; +import com.aliyun.ecs20140526.models.DescribeInstancesResponseBody; +import com.aliyun.tea.*; +import com.aliyun.teautil.models.RuntimeOptions; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.DisposableBean; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; + +/** + * 删除实例 + */ +@Log4j2 +@Component +public class DelInstance implements DisposableBean{ + + /** + * description : + *

使用AK&SK初始化账号Client

+ * @return Client + * + * @throws Exception + */ + public static com.aliyun.ecs20140526.Client createClient() throws Exception { + // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 + // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html。 + com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() + // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 + .setAccessKeyId("LTAI5t7Fnx2QLTYLSu9357wP") + // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 + .setAccessKeySecret("3LOnydNZ25ytsTGczuSygElx0HJ6nN"); + // Endpoint 请参考 https://api.aliyun.com/product/Ecs + config.endpoint = "ecs.cn-shanghai.aliyuncs.com"; + return new com.aliyun.ecs20140526.Client(config); + } + + + + public static void delInstance() throws Exception{ + //创建ECS客户端对象,用于后续调用ECS相关API + com.aliyun.ecs20140526.Client client = DelInstance.createClient(); + + DescribeInstancesRequest describeInstancesRequest = new DescribeInstancesRequest() + .setRegionId("cn-shanghai"); + + //创建运行时选择对象,用于配置运行时的选项参数 + RuntimeOptions runtimeOptions = new RuntimeOptions(); + + //获取实例列表 + DescribeInstancesResponse describeInstancesResponse = client.describeInstancesWithOptions(describeInstancesRequest, runtimeOptions); + + //提取实例ID集合 + ArrayList list = new ArrayList<>(); + DescribeInstancesResponseBody body = describeInstancesResponse.getBody(); + + for (DescribeInstancesResponseBody.DescribeInstancesResponseBodyInstancesInstance instance : body.getInstances().getInstance()) { + list.add(instance.getInstanceId()); + } + + System.out.println("Instance IDs"+list); + + // 创建删除实例请求对象,并设置请求参数 + com.aliyun.ecs20140526.models.DeleteInstancesRequest deleteInstancesRequest = new com.aliyun.ecs20140526.models.DeleteInstancesRequest() + // 设置地域ID,指定要删除的实例所属的地域ID。 + .setRegionId("cn-shanghai") + //设置DryRun为True,用于验证请求是否可以成功,但不实际执行删除操作 + .setDryRun(false) + // 设置Force为true,表示即使实例有正在运行的任务,也强制删除实例 + .setForce(true) + // 设置TerminateSubscription为true,表示删除按订阅付费的实例时终止订阅 + .setTerminateSubscription(true) + // 设置实例ID列表,使用参数名称 instanceId,参数类型为数组。 + .setInstanceId(list); + // 创建运行时选项对象,用于配置运行时的选项参数 + com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); + try{ + //复制代码运行请自行打印 API 的返回值 + client.deleteInstancesWithOptions(deleteInstancesRequest,runtime); + } catch (TeaException error) { + // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 + // 错误 message + System.out.println(error.getMessage()); + // 诊断地址 + System.out.println(error.getData().get("Recommend")); + com.aliyun.teautil.Common.assertAsString(error.message); + } catch (Exception _error){ + TeaException error = new TeaException(_error.getMessage(), _error); + // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 + // 错误 message + System.out.println(error.getMessage()); + //诊断地址 + System.out.println(error.getData().get("Recommend")); + com.aliyun.teautil.Common.assertAsString(error.message); + } + } + + + @Override + public void destroy() throws Exception { + log.info("===============>开始执行删除实例方法"); + delInstance(); + } +} diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/test/example/Sample.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/test/example/Sample.java new file mode 100644 index 0000000..30eb07c --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/test/example/Sample.java @@ -0,0 +1,85 @@ +package com.muyu.cloud.vehicle.gateway.test.example; + + +import com.aliyun.tea.*; +import lombok.extern.log4j.Log4j2; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; + +/** + * 批量创建ECS实例 + */ +@Log4j2 +@Component +public class Sample implements ApplicationRunner { + + /** + * description : + *

使用AK&SK初始化账号Client

+ * @return Client + * + * @throws Exception + */ + public static com.aliyun.ecs20140526.Client createClient() throws Exception { + // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 + com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() + // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 + .setAccessKeyId("LTAI5t7Fnx2QLTYLSu9357wP") + // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 + .setAccessKeySecret("3LOnydNZ25ytsTGczuSygElx0HJ6nN"); + // Endpoint 请参考 https://api.aliyun.com/product/Ecs + config.endpoint = "ecs-cn-hangzhou.aliyuncs.com"; + return new com.aliyun.ecs20140526.Client(config); + } + + public static void creatInstance() throws Exception { + // 将命令行参数转换为字符串列表 + java.util.List args = java.util.Arrays.asList(); + // 创建阿里云ECS客户端 + com.aliyun.ecs20140526.Client client = Sample.createClient(); + // 配置系统盘参数 + com.aliyun.ecs20140526.models.RunInstancesRequest.RunInstancesRequestSystemDisk systemDisk = new com.aliyun.ecs20140526.models.RunInstancesRequest.RunInstancesRequestSystemDisk() + .setSize("20")// 设置系统盘大小为40GB + .setCategory("cloud_essd");// 设置系统盘类型为cloud_essd + // 创建创建实例请求对象并设置参数 + com.aliyun.ecs20140526.models.RunInstancesRequest runInstancesRequest = new com.aliyun.ecs20140526.models.RunInstancesRequest() + .setRegionId("cn-shanghai") // 设置地域ID + .setImageId("m-uf66taa8r57hvow8cxlj")// 设置镜像ID + .setInstanceType("ecs.e-c1m1.large")// 设置实例类型 + .setSecurityGroupId("sg-uf6hyictocodexptlgiv")// 设置安全组ID + .setVSwitchId("vsw-uf6ags5luz17qd6ckn2tb")// 设置虚拟交换机ID + .setInstanceName("launch-advisor-20240928")// 设置实例名称 + .setInstanceChargeType("PostPaid")// 设置实例付费类型为后付费按量付费 + .setSystemDisk(systemDisk)// 设置系统盘配置 + .setHostName("root")// 设置主机名 + .setPassword("@ywt021900")// 设置实例密码 + .setAmount(2);// 设置创建实例的数量 + com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); + try { + // 复制代码运行请自行打印 API 的返回值 + client.runInstancesWithOptions(runInstancesRequest, runtime); + } catch (TeaException error) { + // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 + // 错误 message + System.out.println(error.getMessage()); + // 诊断地址 + System.out.println(error.getData().get("Recommend")); + com.aliyun.teautil.Common.assertAsString(error.message); + } catch (Exception _error) { + TeaException error = new TeaException(_error.getMessage(), _error); + // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 + // 错误 message + System.out.println(error.getMessage()); + // 诊断地址 + System.out.println(error.getData().get("Recommend")); + com.aliyun.teautil.Common.assertAsString(error.message); + } + } + + @Override + public void run(ApplicationArguments args) throws Exception { + log.info("===============>开始批量创建实例"); + creatInstance(); + } +} diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/test/example/StartInstance.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/test/example/StartInstance.java new file mode 100644 index 0000000..97db508 --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/test/example/StartInstance.java @@ -0,0 +1,56 @@ +// This file is auto-generated, don't edit it. Thanks. +package com.muyu.cloud.vehicle.gateway.test.example; + +import com.aliyun.tea.*; + +/** + * 启动一台实例 + */ +public class StartInstance { + + /** + * description : + *

使用AK&SK初始化账号Client

+ * @return Client + * + * @throws Exception + */ + public static com.aliyun.ecs20140526.Client createClient() throws Exception { + // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 + // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html。 + com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() + // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 + .setAccessKeyId("LTAI5t7Fnx2QLTYLSu9357wP") + // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 + .setAccessKeySecret("3LOnydNZ25ytsTGczuSygElx0HJ6nN"); + // Endpoint 请参考 https://api.aliyun.com/product/Ecs + config.endpoint = "ecs.cn-shanghai.aliyuncs.com"; + return new com.aliyun.ecs20140526.Client(config); + } + + public static void main(String[] args_) throws Exception { + java.util.List args = java.util.Arrays.asList(args_); + com.aliyun.ecs20140526.Client client = StartInstance.createClient(); + com.aliyun.ecs20140526.models.StartInstanceRequest startInstanceRequest = new com.aliyun.ecs20140526.models.StartInstanceRequest(); + com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); + try { + // 复制代码运行请自行打印 API 的返回值 + client.startInstanceWithOptions(startInstanceRequest, runtime); + } catch (TeaException error) { + // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 + // 错误 message + System.out.println(error.getMessage()); + // 诊断地址 + System.out.println(error.getData().get("Recommend")); + com.aliyun.teautil.Common.assertAsString(error.message); + } catch (Exception _error) { + TeaException error = new TeaException(_error.getMessage(), _error); + // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 + // 错误 message + System.out.println(error.getMessage()); + // 诊断地址 + System.out.println(error.getData().get("Recommend")); + com.aliyun.teautil.Common.assertAsString(error.message); + } + } +} diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/banner.txt b/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/banner.txt new file mode 100644 index 0000000..0dd5eee --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/banner.txt @@ -0,0 +1,2 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..73addd9 --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/bootstrap.yml @@ -0,0 +1,60 @@ +# Tomcat +server: + port: 9710 + +# nacos线上地址 +nacos: + addr: 47.101.49.53:8848 + user-name: nacos + password: nacos + namespace: warn +# SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all +# Spring +spring: + amqp: + deserialization: + trust: + all: true + main: + allow-bean-definition-overriding: true + application: + # 应用名称 + name: cloud-vehicle-gateway + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + config: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + # 系统共享配置 + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # 系统环境Config共享配置 + - application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # xxl-job 配置文件 + - application-xxl-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # rabbit 配置文件 + - application-rabbit-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} +logging: + level: + com.muyu.system.mapper: DEBUG diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/logback/dev.xml b/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/logback/dev.xml new file mode 100644 index 0000000..99dd7b7 --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/logback/dev.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/logback/prod.xml b/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/logback/prod.xml new file mode 100644 index 0000000..f9cfee4 --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/logback/prod.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + ${log.sky.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/logback/test.xml b/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/logback/test.xml new file mode 100644 index 0000000..f9cfee4 --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/logback/test.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + ${log.sky.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/pom.xml b/cloud-modules/pom.xml new file mode 100644 index 0000000..cf8af6a --- /dev/null +++ b/cloud-modules/pom.xml @@ -0,0 +1,48 @@ + + + + com.muyu + cloud-server + 3.6.3 + + + + io.swagger.core.v3 + swagger-annotations-jakarta + 2.2.8 + compile + + + com.muyu + cloud-common-core + + + com.muyu + cloud-common-security + + + org.apache.groovy + groovy + + + 4.0.0 + + + cloud-modules-system + cloud-modules-gen + cloud-modules-file + cloud-modules-enterprise + cloud-modules-vehicle-gateway + cloud-modules-processing + cloud-modules-protocol-parsing + + + cloud-modules + pom + + + cloud-modules业务模块 + + + diff --git a/cloud-visual/cloud-visual-monitor/pom.xml b/cloud-visual/cloud-visual-monitor/pom.xml new file mode 100644 index 0000000..c6b9e03 --- /dev/null +++ b/cloud-visual/cloud-visual-monitor/pom.xml @@ -0,0 +1,75 @@ + + + com.muyu + cloud-visual + 3.6.3 + + 4.0.0 + + cloud-visual-monitor + + + cloud-visual-monitor监控中心 + + + + + + + de.codecentric + spring-boot-admin-starter-server + ${spring-boot-admin.version} + + + + + 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.boot + spring-boot-starter-web + + + + + org.springframework.boot + spring-boot-starter-security + + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + + diff --git a/cloud-visual/cloud-visual-monitor/src/main/java/com/muyu/modules/monitor/CloudMonitorApplication.java b/cloud-visual/cloud-visual-monitor/src/main/java/com/muyu/modules/monitor/CloudMonitorApplication.java new file mode 100644 index 0000000..e230689 --- /dev/null +++ b/cloud-visual/cloud-visual-monitor/src/main/java/com/muyu/modules/monitor/CloudMonitorApplication.java @@ -0,0 +1,18 @@ +package com.muyu.modules.monitor; + +import de.codecentric.boot.admin.server.config.EnableAdminServer; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * 监控中心 + * + * @author muyu + */ +@EnableAdminServer +@SpringBootApplication +public class CloudMonitorApplication { + public static void main (String[] args) { + SpringApplication.run(CloudMonitorApplication.class, args); + } +} diff --git a/cloud-visual/cloud-visual-monitor/src/main/java/com/muyu/modules/monitor/config/WebSecurityConfigurer.java b/cloud-visual/cloud-visual-monitor/src/main/java/com/muyu/modules/monitor/config/WebSecurityConfigurer.java new file mode 100644 index 0000000..d1bc9f4 --- /dev/null +++ b/cloud-visual/cloud-visual-monitor/src/main/java/com/muyu/modules/monitor/config/WebSecurityConfigurer.java @@ -0,0 +1,37 @@ +package com.muyu.modules.monitor.config; + +import de.codecentric.boot.admin.server.config.AdminServerProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.web.SecurityFilterChain; +import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; + +/** + * 监控权限配置 + * + * @author muyu + */ +@EnableWebSecurity +public class WebSecurityConfigurer { + private final String adminContextPath; + + public WebSecurityConfigurer (AdminServerProperties adminServerProperties) { + this.adminContextPath = adminServerProperties.getContextPath(); + } + + @Bean + public SecurityFilterChain filterChain (HttpSecurity httpSecurity) throws Exception { + SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); + successHandler.setTargetUrlParameter("redirectTo"); + successHandler.setDefaultTargetUrl(adminContextPath + "/"); + + return httpSecurity + .authorizeHttpRequests((authorize) -> authorize .anyRequest().authenticated()) + .securityMatcher(adminContextPath + "/assets/**" + , adminContextPath + "/login" + , adminContextPath + "/actuator/**" + , adminContextPath + "/instances/**" + ).build(); + } +} diff --git a/cloud-visual/cloud-visual-monitor/src/main/resources/banner.txt b/cloud-visual/cloud-visual-monitor/src/main/resources/banner.txt new file mode 100644 index 0000000..0dd5eee --- /dev/null +++ b/cloud-visual/cloud-visual-monitor/src/main/resources/banner.txt @@ -0,0 +1,2 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} diff --git a/cloud-visual/cloud-visual-monitor/src/main/resources/bootstrap.yml b/cloud-visual/cloud-visual-monitor/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..8ce1850 --- /dev/null +++ b/cloud-visual/cloud-visual-monitor/src/main/resources/bootstrap.yml @@ -0,0 +1,47 @@ +# Tomcat +server: + port: 9100 + +# nacos线上地址 +nacos: + addr: 47.101.49.53:8848 + user-name: nacos + password: nacos + namespace: seven + +# Spring +spring: + application: + # 应用名称 + name: cloud-monitor + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + config: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + # 系统共享配置 + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # 系统环境Config共享配置 + - application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} diff --git a/cloud-visual/cloud-visual-monitor/src/main/resources/logback/dev.xml b/cloud-visual/cloud-visual-monitor/src/main/resources/logback/dev.xml new file mode 100644 index 0000000..44e127d --- /dev/null +++ b/cloud-visual/cloud-visual-monitor/src/main/resources/logback/dev.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + diff --git a/cloud-visual/cloud-visual-monitor/src/main/resources/logback/prod.xml b/cloud-visual/cloud-visual-monitor/src/main/resources/logback/prod.xml new file mode 100644 index 0000000..44e127d --- /dev/null +++ b/cloud-visual/cloud-visual-monitor/src/main/resources/logback/prod.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + diff --git a/cloud-visual/cloud-visual-monitor/src/main/resources/logback/test.xml b/cloud-visual/cloud-visual-monitor/src/main/resources/logback/test.xml new file mode 100644 index 0000000..44e127d --- /dev/null +++ b/cloud-visual/cloud-visual-monitor/src/main/resources/logback/test.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + diff --git a/cloud-visual/pom.xml b/cloud-visual/pom.xml new file mode 100644 index 0000000..7fc513e --- /dev/null +++ b/cloud-visual/pom.xml @@ -0,0 +1,22 @@ + + + + com.muyu + cloud-server + 3.6.3 + + 4.0.0 + + + cloud-visual-monitor + + + cloud-visual + pom + + + cloud-visual图形化管理模块 + + + diff --git a/init-file/cloud-seata.sql b/init-file/cloud-seata.sql new file mode 100644 index 0000000..30fb7fa --- /dev/null +++ b/init-file/cloud-seata.sql @@ -0,0 +1,118 @@ +/* + Navicat Premium Data Transfer + + Source Server : MySQL80-local + Source Server Type : MySQL + Source Server Version : 80401 (8.4.1) + Source Host : 10.100.1.2:3306 + Source Schema : cloud-seata + + Target Server Type : MySQL + Target Server Version : 80401 (8.4.1) + File Encoding : 65001 + + Date: 17/07/2024 09:02:12 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for branch_table +-- ---------------------------- +DROP TABLE IF EXISTS `branch_table`; +CREATE TABLE `branch_table` ( + `branch_id` bigint NOT NULL, + `xid` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `transaction_id` bigint DEFAULT NULL, + `resource_group_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `resource_id` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `branch_type` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `status` tinyint DEFAULT NULL, + `client_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `application_data` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `gmt_create` datetime(6) DEFAULT NULL, + `gmt_modified` datetime(6) DEFAULT NULL, + PRIMARY KEY (`branch_id`) USING BTREE, + KEY `idx_xid` (`xid`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC; + +-- ---------------------------- +-- Records of branch_table +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for global_table +-- ---------------------------- +DROP TABLE IF EXISTS `global_table`; +CREATE TABLE `global_table` ( + `xid` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `transaction_id` bigint DEFAULT NULL, + `status` tinyint NOT NULL, + `application_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `transaction_service_group` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `transaction_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `timeout` int DEFAULT NULL, + `begin_time` bigint DEFAULT NULL, + `application_data` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `gmt_create` datetime DEFAULT NULL, + `gmt_modified` datetime DEFAULT NULL, + PRIMARY KEY (`xid`) USING BTREE, + KEY `idx_gmt_modified_status` (`gmt_modified`,`status`) USING BTREE, + KEY `idx_transaction_id` (`transaction_id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC; + +-- ---------------------------- +-- Records of global_table +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for lock_table +-- ---------------------------- +DROP TABLE IF EXISTS `lock_table`; +CREATE TABLE `lock_table` ( + `row_key` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `xid` varchar(96) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `transaction_id` bigint DEFAULT NULL, + `branch_id` bigint NOT NULL, + `resource_id` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `table_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `pk` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `gmt_create` datetime DEFAULT NULL, + `gmt_modified` datetime DEFAULT NULL, + PRIMARY KEY (`row_key`) USING BTREE, + KEY `idx_branch_id` (`branch_id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC; + +-- ---------------------------- +-- Records of lock_table +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for undo_log +-- ---------------------------- +DROP TABLE IF EXISTS `undo_log`; +CREATE TABLE `undo_log` ( + `branch_id` bigint NOT NULL COMMENT 'branch transaction id', + `xid` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'global transaction id', + `context` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'undo_log context,such as serialization', + `rollback_info` longblob NOT NULL COMMENT 'rollback info', + `log_status` int NOT NULL COMMENT '0:normal status,1:defense status', + `log_created` datetime(6) NOT NULL COMMENT 'create datetime', + `log_modified` datetime(6) NOT NULL COMMENT 'modify datetime', + UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='AT transaction mode undo table'; + +-- ---------------------------- +-- Records of undo_log +-- ---------------------------- +BEGIN; +COMMIT; + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/init-file/cloud-system.sql b/init-file/cloud-system.sql new file mode 100644 index 0000000..3322763 --- /dev/null +++ b/init-file/cloud-system.sql @@ -0,0 +1,682 @@ +/* + Navicat Premium Data Transfer + + Source Server : MySQL80-local + Source Server Type : MySQL + Source Server Version : 80401 (8.4.1) + Source Host : 10.100.1.2:3306 + Source Schema : cloud-system + + Target Server Type : MySQL + Target Server Version : 80401 (8.4.1) + File Encoding : 65001 + + Date: 17/07/2024 09:01:52 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for gen_table +-- ---------------------------- +DROP TABLE IF EXISTS `gen_table`; +CREATE TABLE `gen_table` ( + `table_id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号', + `table_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '表名称', + `table_comment` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '表描述', + `sub_table_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '关联子表的表名', + `sub_table_fk_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '子表关联的外键名', + `class_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '实体类名称', + `tpl_category` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT 'crud' COMMENT '使用的模板(crud单表操作 tree树表操作)', + `package_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '生成包路径', + `module_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '生成模块名', + `business_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '生成业务名', + `function_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '生成功能名', + `function_author` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '生成功能作者', + `gen_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '0' COMMENT '生成代码方式(0zip压缩包 1自定义路径)', + `gen_path` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '/' COMMENT '生成路径(不填默认项目路径)', + `options` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '其它生成选项', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`table_id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='代码生成业务表'; + +-- ---------------------------- +-- Records of gen_table +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for gen_table_column +-- ---------------------------- +DROP TABLE IF EXISTS `gen_table_column`; +CREATE TABLE `gen_table_column` ( + `column_id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号', + `table_id` bigint DEFAULT NULL COMMENT '归属表编号', + `column_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '列名称', + `column_comment` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '列描述', + `column_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '列类型', + `java_type` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 'JAVA类型', + `java_field` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 'JAVA字段名', + `is_pk` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '是否主键(1是)', + `is_increment` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '是否自增(1是)', + `is_required` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '是否必填(1是)', + `is_insert` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '是否为插入字段(1是)', + `is_edit` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '是否编辑字段(1是)', + `is_list` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '是否列表字段(1是)', + `is_query` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '是否查询字段(1是)', + `query_type` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT 'EQ' COMMENT '查询方式(等于、不等于、大于、小于、范围)', + `html_type` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '显示类型(文本框、文本域、下拉框、复选框、单选框、日期控件)', + `dict_type` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '字典类型', + `sort` int DEFAULT NULL COMMENT '排序', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`column_id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='代码生成业务表字段'; + +-- ---------------------------- +-- Records of gen_table_column +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for sys_config +-- ---------------------------- +DROP TABLE IF EXISTS `sys_config`; +CREATE TABLE `sys_config` ( + `config_id` int NOT NULL AUTO_INCREMENT COMMENT '参数主键', + `config_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '参数名称', + `config_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '参数键名', + `config_value` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '参数键值', + `config_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT 'N' COMMENT '系统内置(Y是 N否)', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`config_id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='参数配置表'; + +-- ---------------------------- +-- Records of sys_config +-- ---------------------------- +BEGIN; +INSERT INTO `sys_config` (`config_id`, `config_name`, `config_key`, `config_value`, `config_type`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1, '主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', 'Y', 'admin', '2024-05-23 15:08:18', '', NULL, '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow'); +INSERT INTO `sys_config` (`config_id`, `config_name`, `config_key`, `config_value`, `config_type`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2, '用户管理-账号初始密码', 'sys.user.initPassword', '123456', 'Y', 'admin', '2024-05-23 15:08:18', '', NULL, '初始化密码 123456'); +INSERT INTO `sys_config` (`config_id`, `config_name`, `config_key`, `config_value`, `config_type`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (3, '主框架页-侧边栏主题', 'sys.index.sideTheme', 'theme-dark', 'Y', 'admin', '2024-05-23 15:08:18', '', NULL, '深色主题theme-dark,浅色主题theme-light'); +INSERT INTO `sys_config` (`config_id`, `config_name`, `config_key`, `config_value`, `config_type`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (4, '账号自助-是否开启用户注册功能', 'sys.account.registerUser', 'false', 'Y', 'admin', '2024-05-23 15:08:18', '', NULL, '是否开启注册用户功能(true开启,false关闭)'); +INSERT INTO `sys_config` (`config_id`, `config_name`, `config_key`, `config_value`, `config_type`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (5, '用户登录-黑名单列表', 'sys.login.blackIPList', '', 'Y', 'admin', '2024-05-23 15:08:18', '', NULL, '设置登录IP黑名单限制,多个匹配项以;分隔,支持匹配(*通配、网段)'); +COMMIT; + +-- ---------------------------- +-- Table structure for sys_dept +-- ---------------------------- +DROP TABLE IF EXISTS `sys_dept`; +CREATE TABLE `sys_dept` ( + `dept_id` bigint NOT NULL AUTO_INCREMENT COMMENT '部门id', + `parent_id` bigint DEFAULT '0' COMMENT '父部门id', + `ancestors` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '祖级列表', + `dept_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '部门名称', + `order_num` int DEFAULT '0' COMMENT '显示顺序', + `leader` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '负责人', + `phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '联系电话', + `email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '邮箱', + `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '0' COMMENT '部门状态(0正常 1停用)', + `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`dept_id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=200 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='部门表'; + +-- ---------------------------- +-- Records of sys_dept +-- ---------------------------- +BEGIN; +INSERT INTO `sys_dept` (`dept_id`, `parent_id`, `ancestors`, `dept_name`, `order_num`, `leader`, `phone`, `email`, `status`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (100, 0, '0', '若依科技', 0, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-05-23 15:08:18', '', NULL); +INSERT INTO `sys_dept` (`dept_id`, `parent_id`, `ancestors`, `dept_name`, `order_num`, `leader`, `phone`, `email`, `status`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (101, 100, '0,100', '深圳总公司', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-05-23 15:08:18', '', NULL); +INSERT INTO `sys_dept` (`dept_id`, `parent_id`, `ancestors`, `dept_name`, `order_num`, `leader`, `phone`, `email`, `status`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (102, 100, '0,100', '长沙分公司', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-05-23 15:08:18', '', NULL); +INSERT INTO `sys_dept` (`dept_id`, `parent_id`, `ancestors`, `dept_name`, `order_num`, `leader`, `phone`, `email`, `status`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (103, 101, '0,100,101', '研发部门', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-05-23 15:08:18', '', NULL); +INSERT INTO `sys_dept` (`dept_id`, `parent_id`, `ancestors`, `dept_name`, `order_num`, `leader`, `phone`, `email`, `status`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (104, 101, '0,100,101', '市场部门', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-05-23 15:08:18', '', NULL); +INSERT INTO `sys_dept` (`dept_id`, `parent_id`, `ancestors`, `dept_name`, `order_num`, `leader`, `phone`, `email`, `status`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (105, 101, '0,100,101', '测试部门', 3, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-05-23 15:08:18', '', NULL); +INSERT INTO `sys_dept` (`dept_id`, `parent_id`, `ancestors`, `dept_name`, `order_num`, `leader`, `phone`, `email`, `status`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (106, 101, '0,100,101', '财务部门', 4, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-05-23 15:08:18', '', NULL); +INSERT INTO `sys_dept` (`dept_id`, `parent_id`, `ancestors`, `dept_name`, `order_num`, `leader`, `phone`, `email`, `status`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (107, 101, '0,100,101', '运维部门', 5, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-05-23 15:08:18', '', NULL); +INSERT INTO `sys_dept` (`dept_id`, `parent_id`, `ancestors`, `dept_name`, `order_num`, `leader`, `phone`, `email`, `status`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (108, 102, '0,100,102', '市场部门', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-05-23 15:08:18', '', NULL); +INSERT INTO `sys_dept` (`dept_id`, `parent_id`, `ancestors`, `dept_name`, `order_num`, `leader`, `phone`, `email`, `status`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (109, 102, '0,100,102', '财务部门', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-05-23 15:08:18', '', NULL); +COMMIT; + +-- ---------------------------- +-- Table structure for sys_dict_data +-- ---------------------------- +DROP TABLE IF EXISTS `sys_dict_data`; +CREATE TABLE `sys_dict_data` ( + `dict_code` bigint NOT NULL AUTO_INCREMENT COMMENT '字典编码', + `dict_sort` int DEFAULT '0' COMMENT '字典排序', + `dict_label` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '字典标签', + `dict_value` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '字典键值', + `dict_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '字典类型', + `css_class` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '样式属性(其他样式扩展)', + `list_class` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '表格回显样式', + `is_default` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT 'N' COMMENT '是否默认(Y是 N否)', + `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '0' COMMENT '状态(0正常 1停用)', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`dict_code`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='字典数据表'; + +-- ---------------------------- +-- Records of sys_dict_data +-- ---------------------------- +BEGIN; +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1, 1, '男', '0', 'sys_user_sex', '', '', 'Y', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '性别男'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2, 2, '女', '1', 'sys_user_sex', '', '', 'N', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '性别女'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (3, 3, '未知', '2', 'sys_user_sex', '', '', 'N', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '性别未知'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (4, 1, '显示', '0', 'sys_show_hide', '', 'primary', 'Y', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '显示菜单'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (5, 2, '隐藏', '1', 'sys_show_hide', '', 'danger', 'N', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '隐藏菜单'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (6, 1, '正常', '0', 'sys_normal_disable', '', 'primary', 'Y', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '正常状态'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (7, 2, '停用', '1', 'sys_normal_disable', '', 'danger', 'N', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '停用状态'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (8, 1, '正常', '0', 'sys_job_status', '', 'primary', 'Y', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '正常状态'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (9, 2, '暂停', '1', 'sys_job_status', '', 'danger', 'N', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '停用状态'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (10, 1, '默认', 'DEFAULT', 'sys_job_group', '', '', 'Y', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '默认分组'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (11, 2, '系统', 'SYSTEM', 'sys_job_group', '', '', 'N', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '系统分组'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (12, 1, '是', 'Y', 'sys_yes_no', '', 'primary', 'Y', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '系统默认是'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (13, 2, '否', 'N', 'sys_yes_no', '', 'danger', 'N', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '系统默认否'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (14, 1, '通知', '1', 'sys_notice_type', '', 'warning', 'Y', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '通知'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (15, 2, '公告', '2', 'sys_notice_type', '', 'success', 'N', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '公告'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (16, 1, '正常', '0', 'sys_notice_status', '', 'primary', 'Y', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '正常状态'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (17, 2, '关闭', '1', 'sys_notice_status', '', 'danger', 'N', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '关闭状态'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (18, 99, '其他', '0', 'sys_oper_type', '', 'info', 'N', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '其他操作'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (19, 1, '新增', '1', 'sys_oper_type', '', 'info', 'N', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '新增操作'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (20, 2, '修改', '2', 'sys_oper_type', '', 'info', 'N', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '修改操作'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (21, 3, '删除', '3', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '删除操作'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (22, 4, '授权', '4', 'sys_oper_type', '', 'primary', 'N', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '授权操作'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (23, 5, '导出', '5', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '导出操作'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (24, 6, '导入', '6', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '导入操作'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (25, 7, '强退', '7', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '强退操作'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (26, 8, '生成代码', '8', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '生成操作'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (27, 9, '清空数据', '9', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '清空操作'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (28, 1, '成功', '0', 'sys_common_status', '', 'primary', 'N', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '正常状态'); +INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (29, 2, '失败', '1', 'sys_common_status', '', 'danger', 'N', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '停用状态'); +COMMIT; + +-- ---------------------------- +-- Table structure for sys_dict_type +-- ---------------------------- +DROP TABLE IF EXISTS `sys_dict_type`; +CREATE TABLE `sys_dict_type` ( + `dict_id` bigint NOT NULL AUTO_INCREMENT COMMENT '字典主键', + `dict_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '字典名称', + `dict_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '字典类型', + `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '0' COMMENT '状态(0正常 1停用)', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`dict_id`) USING BTREE, + UNIQUE KEY `dict_type` (`dict_type`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='字典类型表'; + +-- ---------------------------- +-- Records of sys_dict_type +-- ---------------------------- +BEGIN; +INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1, '用户性别', 'sys_user_sex', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '用户性别列表'); +INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2, '菜单状态', 'sys_show_hide', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '菜单状态列表'); +INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (3, '系统开关', 'sys_normal_disable', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '系统开关列表'); +INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (4, '任务状态', 'sys_job_status', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '任务状态列表'); +INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (5, '任务分组', 'sys_job_group', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '任务分组列表'); +INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (6, '系统是否', 'sys_yes_no', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '系统是否列表'); +INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (7, '通知类型', 'sys_notice_type', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '通知类型列表'); +INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (8, '通知状态', 'sys_notice_status', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '通知状态列表'); +INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (9, '操作类型', 'sys_oper_type', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '操作类型列表'); +INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (10, '系统状态', 'sys_common_status', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '登录状态列表'); +COMMIT; + +-- ---------------------------- +-- Table structure for sys_logininfor +-- ---------------------------- +DROP TABLE IF EXISTS `sys_logininfor`; +CREATE TABLE `sys_logininfor` ( + `info_id` bigint NOT NULL AUTO_INCREMENT COMMENT '访问ID', + `user_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '用户账号', + `ipaddr` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '登录IP地址', + `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '0' COMMENT '登录状态(0成功 1失败)', + `msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '提示信息', + `access_time` datetime DEFAULT NULL COMMENT '访问时间', + PRIMARY KEY (`info_id`) USING BTREE, + KEY `idx_sys_logininfor_s` (`status`) USING BTREE, + KEY `idx_sys_logininfor_lt` (`access_time`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=102 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='系统访问记录'; + +-- ---------------------------- +-- Records of sys_logininfor +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for sys_menu +-- ---------------------------- +DROP TABLE IF EXISTS `sys_menu`; +CREATE TABLE `sys_menu` ( + `menu_id` bigint NOT NULL AUTO_INCREMENT COMMENT '菜单ID', + `menu_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '菜单名称', + `parent_id` bigint DEFAULT '0' COMMENT '父菜单ID', + `order_num` int DEFAULT '0' COMMENT '显示顺序', + `path` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '路由地址', + `component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '组件路径', + `query` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '路由参数', + `is_frame` int DEFAULT '1' COMMENT '是否为外链(0是 1否)', + `is_cache` int DEFAULT '0' COMMENT '是否缓存(0缓存 1不缓存)', + `menu_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '菜单类型(M目录 C菜单 F按钮)', + `visible` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '0' COMMENT '菜单状态(0显示 1隐藏)', + `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '0' COMMENT '菜单状态(0正常 1停用)', + `perms` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '权限标识', + `icon` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '#' COMMENT '菜单图标', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '备注', + PRIMARY KEY (`menu_id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=2000 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='菜单权限表'; + +-- ---------------------------- +-- Records of sys_menu +-- ---------------------------- +BEGIN; +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1, '系统管理', 0, 1, 'system', NULL, '', 1, 0, 'M', '0', '0', '', 'system', 'admin', '2024-05-23 15:08:18', '', NULL, '系统管理目录'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2, '系统监控', 0, 2, 'monitor', NULL, '', 1, 0, 'M', '0', '0', '', 'monitor', 'admin', '2024-05-23 15:08:18', '', NULL, '系统监控目录'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (3, '系统工具', 0, 3, 'tool', NULL, '', 1, 0, 'M', '0', '0', '', 'tool', 'admin', '2024-05-23 15:08:18', '', NULL, '系统工具目录'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (4, '若依官网', 0, 4, 'http://muyu.vip', NULL, '', 0, 0, 'M', '0', '0', '', 'guide', 'admin', '2024-05-23 15:08:18', '', NULL, '若依官网地址'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (100, '用户管理', 1, 1, 'user', 'system/user/index', '', 1, 0, 'C', '0', '0', 'system:user:list', 'user', 'admin', '2024-05-23 15:08:18', '', NULL, '用户管理菜单'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (101, '角色管理', 1, 2, 'role', 'system/role/index', '', 1, 0, 'C', '0', '0', 'system:role:list', 'peoples', 'admin', '2024-05-23 15:08:18', '', NULL, '角色管理菜单'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (102, '菜单管理', 1, 3, 'menu', 'system/menu/index', '', 1, 0, 'C', '0', '0', 'system:menu:list', 'tree-table', 'admin', '2024-05-23 15:08:18', '', NULL, '菜单管理菜单'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (103, '部门管理', 1, 4, 'dept', 'system/dept/index', '', 1, 0, 'C', '0', '0', 'system:dept:list', 'tree', 'admin', '2024-05-23 15:08:18', '', NULL, '部门管理菜单'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (104, '岗位管理', 1, 5, 'post', 'system/post/index', '', 1, 0, 'C', '0', '0', 'system:post:list', 'post', 'admin', '2024-05-23 15:08:18', '', NULL, '岗位管理菜单'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (105, '字典管理', 1, 6, 'dict', 'system/dict/index', '', 1, 0, 'C', '0', '0', 'system:dict:list', 'dict', 'admin', '2024-05-23 15:08:18', '', NULL, '字典管理菜单'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (106, '参数设置', 1, 7, 'config', 'system/config/index', '', 1, 0, 'C', '0', '0', 'system:config:list', 'edit', 'admin', '2024-05-23 15:08:18', '', NULL, '参数设置菜单'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (107, '通知公告', 1, 8, 'notice', 'system/notice/index', '', 1, 0, 'C', '0', '0', 'system:notice:list', 'message', 'admin', '2024-05-23 15:08:18', '', NULL, '通知公告菜单'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (108, '日志管理', 1, 9, 'log', '', '', 1, 0, 'M', '0', '0', '', 'log', 'admin', '2024-05-23 15:08:18', '', NULL, '日志管理菜单'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (109, '在线用户', 2, 1, 'online', 'monitor/online/index', '', 1, 0, 'C', '0', '0', 'monitor:online:list', 'online', 'admin', '2024-05-23 15:08:18', '', NULL, '在线用户菜单'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (110, '定时任务', 2, 2, 'http://admin.xxl.muyu.icu/toLogin', 'monitor/job/index', '', 0, 0, 'M', '0', '0', 'monitor:job:list', 'job', 'admin', '2024-05-23 15:08:18', 'admin', '2024-07-15 12:50:44', '定时任务菜单'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (111, 'Sentinel控制台', 2, 3, 'http://localhost:8718', '', '', 0, 0, 'C', '0', '0', 'monitor:sentinel:list', 'sentinel', 'admin', '2024-05-23 15:08:18', '', NULL, '流量控制菜单'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (112, 'Nacos控制台', 2, 4, 'http://localhost:8848/nacos', '', '', 0, 0, 'C', '0', '0', 'monitor:nacos:list', 'nacos', 'admin', '2024-05-23 15:08:18', '', NULL, '服务治理菜单'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (113, 'Admin控制台', 2, 5, 'http://localhost:9100/login', '', '', 0, 0, 'C', '0', '0', 'monitor:server:list', 'server', 'admin', '2024-05-23 15:08:18', '', NULL, '服务监控菜单'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (114, '表单构建', 3, 1, 'build', 'tool/build/index', '', 1, 0, 'C', '0', '0', 'tool:build:list', 'build', 'admin', '2024-05-23 15:08:18', '', NULL, '表单构建菜单'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (115, '代码生成', 3, 2, 'gen', 'tool/gen/index', '', 1, 0, 'C', '0', '0', 'tool:gen:list', 'code', 'admin', '2024-05-23 15:08:18', '', NULL, '代码生成菜单'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (116, '系统接口', 3, 3, 'http://localhost:8080/doc.html', '', '', 0, 0, 'C', '0', '0', 'tool:swagger:list', 'swagger', 'admin', '2024-05-23 15:08:18', '', NULL, '系统接口菜单'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (500, '操作日志', 108, 1, 'operlog', 'system/operlog/index', '', 1, 0, 'C', '0', '0', 'system:operlog:list', 'form', 'admin', '2024-05-23 15:08:18', '', NULL, '操作日志菜单'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (501, '登录日志', 108, 2, 'logininfor', 'system/logininfor/index', '', 1, 0, 'C', '0', '0', 'system:logininfor:list', 'logininfor', 'admin', '2024-05-23 15:08:18', '', NULL, '登录日志菜单'); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1000, '用户查询', 100, 1, '', '', '', 1, 0, 'F', '0', '0', 'system:user:query', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1001, '用户新增', 100, 2, '', '', '', 1, 0, 'F', '0', '0', 'system:user:add', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1002, '用户修改', 100, 3, '', '', '', 1, 0, 'F', '0', '0', 'system:user:edit', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1003, '用户删除', 100, 4, '', '', '', 1, 0, 'F', '0', '0', 'system:user:remove', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1004, '用户导出', 100, 5, '', '', '', 1, 0, 'F', '0', '0', 'system:user:export', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1005, '用户导入', 100, 6, '', '', '', 1, 0, 'F', '0', '0', 'system:user:import', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1006, '重置密码', 100, 7, '', '', '', 1, 0, 'F', '0', '0', 'system:user:resetPwd', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1007, '角色查询', 101, 1, '', '', '', 1, 0, 'F', '0', '0', 'system:role:query', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1008, '角色新增', 101, 2, '', '', '', 1, 0, 'F', '0', '0', 'system:role:add', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1009, '角色修改', 101, 3, '', '', '', 1, 0, 'F', '0', '0', 'system:role:edit', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1010, '角色删除', 101, 4, '', '', '', 1, 0, 'F', '0', '0', 'system:role:remove', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1011, '角色导出', 101, 5, '', '', '', 1, 0, 'F', '0', '0', 'system:role:export', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1012, '菜单查询', 102, 1, '', '', '', 1, 0, 'F', '0', '0', 'system:menu:query', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1013, '菜单新增', 102, 2, '', '', '', 1, 0, 'F', '0', '0', 'system:menu:add', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1014, '菜单修改', 102, 3, '', '', '', 1, 0, 'F', '0', '0', 'system:menu:edit', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1015, '菜单删除', 102, 4, '', '', '', 1, 0, 'F', '0', '0', 'system:menu:remove', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1016, '部门查询', 103, 1, '', '', '', 1, 0, 'F', '0', '0', 'system:dept:query', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1017, '部门新增', 103, 2, '', '', '', 1, 0, 'F', '0', '0', 'system:dept:add', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1018, '部门修改', 103, 3, '', '', '', 1, 0, 'F', '0', '0', 'system:dept:edit', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1019, '部门删除', 103, 4, '', '', '', 1, 0, 'F', '0', '0', 'system:dept:remove', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1020, '岗位查询', 104, 1, '', '', '', 1, 0, 'F', '0', '0', 'system:post:query', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1021, '岗位新增', 104, 2, '', '', '', 1, 0, 'F', '0', '0', 'system:post:add', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1022, '岗位修改', 104, 3, '', '', '', 1, 0, 'F', '0', '0', 'system:post:edit', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1023, '岗位删除', 104, 4, '', '', '', 1, 0, 'F', '0', '0', 'system:post:remove', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1024, '岗位导出', 104, 5, '', '', '', 1, 0, 'F', '0', '0', 'system:post:export', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1025, '字典查询', 105, 1, '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:query', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1026, '字典新增', 105, 2, '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:add', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1027, '字典修改', 105, 3, '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:edit', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1028, '字典删除', 105, 4, '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:remove', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1029, '字典导出', 105, 5, '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:export', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1030, '参数查询', 106, 1, '#', '', '', 1, 0, 'F', '0', '0', 'system:config:query', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1031, '参数新增', 106, 2, '#', '', '', 1, 0, 'F', '0', '0', 'system:config:add', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1032, '参数修改', 106, 3, '#', '', '', 1, 0, 'F', '0', '0', 'system:config:edit', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1033, '参数删除', 106, 4, '#', '', '', 1, 0, 'F', '0', '0', 'system:config:remove', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1034, '参数导出', 106, 5, '#', '', '', 1, 0, 'F', '0', '0', 'system:config:export', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1035, '公告查询', 107, 1, '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:query', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1036, '公告新增', 107, 2, '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:add', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1037, '公告修改', 107, 3, '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:edit', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1038, '公告删除', 107, 4, '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:remove', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1039, '操作查询', 500, 1, '#', '', '', 1, 0, 'F', '0', '0', 'system:operlog:query', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1040, '操作删除', 500, 2, '#', '', '', 1, 0, 'F', '0', '0', 'system:operlog:remove', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1041, '日志导出', 500, 3, '#', '', '', 1, 0, 'F', '0', '0', 'system:operlog:export', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1042, '登录查询', 501, 1, '#', '', '', 1, 0, 'F', '0', '0', 'system:logininfor:query', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1043, '登录删除', 501, 2, '#', '', '', 1, 0, 'F', '0', '0', 'system:logininfor:remove', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1044, '日志导出', 501, 3, '#', '', '', 1, 0, 'F', '0', '0', 'system:logininfor:export', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1045, '账户解锁', 501, 4, '#', '', '', 1, 0, 'F', '0', '0', 'system:logininfor:unlock', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1046, '在线查询', 109, 1, '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:query', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1047, '批量强退', 109, 2, '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:batchLogout', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1048, '单条强退', 109, 3, '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:forceLogout', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1055, '生成查询', 115, 1, '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:query', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1056, '生成修改', 115, 2, '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:edit', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1057, '生成删除', 115, 3, '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:remove', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1058, '导入代码', 115, 2, '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:import', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1059, '预览代码', 115, 4, '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:preview', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1060, '生成代码', 115, 5, '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:code', '#', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +COMMIT; + +-- ---------------------------- +-- Table structure for sys_notice +-- ---------------------------- +DROP TABLE IF EXISTS `sys_notice`; +CREATE TABLE `sys_notice` ( + `notice_id` int NOT NULL AUTO_INCREMENT COMMENT '公告ID', + `notice_title` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '公告标题', + `notice_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '公告类型(1通知 2公告)', + `notice_content` longblob COMMENT '公告内容', + `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '0' COMMENT '公告状态(0正常 1关闭)', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`notice_id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='通知公告表'; + +-- ---------------------------- +-- Records of sys_notice +-- ---------------------------- +BEGIN; +INSERT INTO `sys_notice` (`notice_id`, `notice_title`, `notice_type`, `notice_content`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1, '温馨提醒:2018-07-01 若依新版本发布啦', '2', 0xE696B0E78988E69CACE58685E5AEB9, '0', 'admin', '2024-05-23 15:08:18', '', NULL, '管理员'); +INSERT INTO `sys_notice` (`notice_id`, `notice_title`, `notice_type`, `notice_content`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2, '维护通知:2018-07-01 若依系统凌晨维护', '1', 0xE7BBB4E68AA4E58685E5AEB9, '0', 'admin', '2024-05-23 15:08:18', '', NULL, '管理员'); +COMMIT; + +-- ---------------------------- +-- Table structure for sys_oper_log +-- ---------------------------- +DROP TABLE IF EXISTS `sys_oper_log`; +CREATE TABLE `sys_oper_log` ( + `oper_id` bigint NOT NULL AUTO_INCREMENT COMMENT '日志主键', + `title` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '模块标题', + `business_type` int DEFAULT '0' COMMENT '业务类型(0其它 1新增 2修改 3删除)', + `method` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '方法名称', + `request_method` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '请求方式', + `operator_type` int DEFAULT '0' COMMENT '操作类别(0其它 1后台用户 2手机端用户)', + `oper_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '操作人员', + `dept_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '部门名称', + `oper_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '请求URL', + `oper_ip` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '主机地址', + `oper_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '操作地点', + `oper_param` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '请求参数', + `json_result` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '返回参数', + `status` int DEFAULT '0' COMMENT '操作状态(0正常 1异常)', + `error_msg` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '错误消息', + `oper_time` datetime DEFAULT NULL COMMENT '操作时间', + `cost_time` bigint DEFAULT '0' COMMENT '消耗时间', + PRIMARY KEY (`oper_id`) USING BTREE, + KEY `idx_sys_oper_log_bt` (`business_type`) USING BTREE, + KEY `idx_sys_oper_log_s` (`status`) USING BTREE, + KEY `idx_sys_oper_log_ot` (`oper_time`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=108 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='操作日志记录'; + +-- ---------------------------- +-- Records of sys_oper_log +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for sys_post +-- ---------------------------- +DROP TABLE IF EXISTS `sys_post`; +CREATE TABLE `sys_post` ( + `post_id` bigint NOT NULL AUTO_INCREMENT COMMENT '岗位ID', + `post_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '岗位编码', + `post_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '岗位名称', + `post_sort` int NOT NULL COMMENT '显示顺序', + `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '状态(0正常 1停用)', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`post_id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='岗位信息表'; + +-- ---------------------------- +-- Records of sys_post +-- ---------------------------- +BEGIN; +INSERT INTO `sys_post` (`post_id`, `post_code`, `post_name`, `post_sort`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1, 'ceo', '董事长', 1, '0', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_post` (`post_id`, `post_code`, `post_name`, `post_sort`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2, 'se', '项目经理', 2, '0', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_post` (`post_id`, `post_code`, `post_name`, `post_sort`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (3, 'hr', '人力资源', 3, '0', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +INSERT INTO `sys_post` (`post_id`, `post_code`, `post_name`, `post_sort`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (4, 'user', '普通员工', 4, '0', 'admin', '2024-05-23 15:08:18', '', NULL, ''); +COMMIT; + +-- ---------------------------- +-- Table structure for sys_role +-- ---------------------------- +DROP TABLE IF EXISTS `sys_role`; +CREATE TABLE `sys_role` ( + `role_id` bigint NOT NULL AUTO_INCREMENT COMMENT '角色ID', + `role_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '角色名称', + `role_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '角色权限字符串', + `role_sort` int NOT NULL COMMENT '显示顺序', + `data_scope` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '1' COMMENT '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)', + `menu_check_strictly` tinyint(1) DEFAULT '1' COMMENT '菜单树选择项是否关联显示', + `dept_check_strictly` tinyint(1) DEFAULT '1' COMMENT '部门树选择项是否关联显示', + `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '角色状态(0正常 1停用)', + `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`role_id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='角色信息表'; + +-- ---------------------------- +-- Records of sys_role +-- ---------------------------- +BEGIN; +INSERT INTO `sys_role` (`role_id`, `role_name`, `role_key`, `role_sort`, `data_scope`, `menu_check_strictly`, `dept_check_strictly`, `status`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1, '超级管理员', 'admin', 1, '1', 1, 1, '0', '0', 'admin', '2024-05-23 15:08:18', '', NULL, '超级管理员'); +INSERT INTO `sys_role` (`role_id`, `role_name`, `role_key`, `role_sort`, `data_scope`, `menu_check_strictly`, `dept_check_strictly`, `status`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2, '普通角色', 'common', 2, '2', 1, 1, '0', '0', 'admin', '2024-05-23 15:08:18', 'admin', '2024-07-15 12:42:34', '普通角色'); +COMMIT; + +-- ---------------------------- +-- Table structure for sys_role_dept +-- ---------------------------- +DROP TABLE IF EXISTS `sys_role_dept`; +CREATE TABLE `sys_role_dept` ( + `role_id` bigint NOT NULL COMMENT '角色ID', + `dept_id` bigint NOT NULL COMMENT '部门ID', + PRIMARY KEY (`role_id`,`dept_id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='角色和部门关联表'; + +-- ---------------------------- +-- Records of sys_role_dept +-- ---------------------------- +BEGIN; +INSERT INTO `sys_role_dept` (`role_id`, `dept_id`) VALUES (2, 100); +INSERT INTO `sys_role_dept` (`role_id`, `dept_id`) VALUES (2, 101); +INSERT INTO `sys_role_dept` (`role_id`, `dept_id`) VALUES (2, 105); +COMMIT; + +-- ---------------------------- +-- Table structure for sys_role_menu +-- ---------------------------- +DROP TABLE IF EXISTS `sys_role_menu`; +CREATE TABLE `sys_role_menu` ( + `role_id` bigint NOT NULL COMMENT '角色ID', + `menu_id` bigint NOT NULL COMMENT '菜单ID', + PRIMARY KEY (`role_id`,`menu_id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='角色和菜单关联表'; + +-- ---------------------------- +-- Records of sys_role_menu +-- ---------------------------- +BEGIN; +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 2); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 3); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 4); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 100); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 101); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 102); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 103); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 104); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 105); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 106); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 107); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 108); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 109); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 111); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 112); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 113); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 114); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 115); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 116); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 500); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 501); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1000); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1001); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1002); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1003); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1004); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1005); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1006); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1007); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1008); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1009); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1010); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1011); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1012); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1013); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1014); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1015); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1016); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1017); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1018); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1019); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1020); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1021); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1022); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1023); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1024); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1025); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1026); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1027); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1028); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1029); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1030); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1031); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1032); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1033); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1034); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1035); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1036); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1037); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1038); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1039); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1040); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1041); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1042); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1043); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1044); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1045); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1046); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1047); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1048); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1055); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1056); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1057); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1058); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1059); +INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 1060); +COMMIT; + +-- ---------------------------- +-- Table structure for sys_user +-- ---------------------------- +DROP TABLE IF EXISTS `sys_user`; +CREATE TABLE `sys_user` ( + `user_id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID', + `dept_id` bigint DEFAULT NULL COMMENT '部门ID', + `user_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户账号', + `nick_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户昵称', + `user_type` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '00' COMMENT '用户类型(00系统用户)', + `email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '用户邮箱', + `phonenumber` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '手机号码', + `sex` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '0' COMMENT '用户性别(0男 1女 2未知)', + `avatar` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '头像地址', + `password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '密码', + `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '0' COMMENT '帐号状态(0正常 1停用)', + `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)', + `login_ip` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '最后登录IP', + `login_date` datetime DEFAULT NULL COMMENT '最后登录时间', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`user_id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='用户信息表'; + +-- ---------------------------- +-- Records of sys_user +-- ---------------------------- +BEGIN; +INSERT INTO `sys_user` (`user_id`, `dept_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1, 103, 'admin', '若依', '00', 'ry@163.com', '15888888888', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', '2024-05-23 15:08:18', 'admin', '2024-05-23 15:08:18', '', NULL, '管理员'); +INSERT INTO `sys_user` (`user_id`, `dept_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2, 105, 'ry', '若依', '00', 'ry@qq.com', '15666666666', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', '2024-05-23 15:08:18', 'admin', '2024-05-23 15:08:18', '', NULL, '测试员'); +COMMIT; + +-- ---------------------------- +-- Table structure for sys_user_post +-- ---------------------------- +DROP TABLE IF EXISTS `sys_user_post`; +CREATE TABLE `sys_user_post` ( + `user_id` bigint NOT NULL COMMENT '用户ID', + `post_id` bigint NOT NULL COMMENT '岗位ID', + PRIMARY KEY (`user_id`,`post_id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='用户与岗位关联表'; + +-- ---------------------------- +-- Records of sys_user_post +-- ---------------------------- +BEGIN; +INSERT INTO `sys_user_post` (`user_id`, `post_id`) VALUES (1, 1); +INSERT INTO `sys_user_post` (`user_id`, `post_id`) VALUES (2, 2); +COMMIT; + +-- ---------------------------- +-- Table structure for sys_user_role +-- ---------------------------- +DROP TABLE IF EXISTS `sys_user_role`; +CREATE TABLE `sys_user_role` ( + `user_id` bigint NOT NULL COMMENT '用户ID', + `role_id` bigint NOT NULL COMMENT '角色ID', + PRIMARY KEY (`user_id`,`role_id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='用户和角色关联表'; + +-- ---------------------------- +-- Records of sys_user_role +-- ---------------------------- +BEGIN; +INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (1, 1); +INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (2, 2); +COMMIT; + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/init-file/nacos_config.zip b/init-file/nacos_config.zip new file mode 100644 index 0000000000000000000000000000000000000000..a3e3c5b9282f2172bad73f29f79dc9eb14d55135 GIT binary patch literal 7550 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 z z-p%HGI`h%z_D90VSM5g;asJ_ut4P&>LY$HA06UC2;qtiXC{U+%ELM`!fNX83c4mj| z^TkHsS9h7fXA-qo{2AJj#8|iI!EpemY;+59ynHe2y1RY5&TUc_>ACsAn@8ON%nw}W zOPwO8f_Fu1H&=8^`f3c?jUd>uIr%d9w}{LGB2aeeK+422%sQ}pl*EKSxa{9Y(3%Lp z-CoL*_OJz%P(RJ&|Hu>X=3ajRz-|X7iOjRQ7`<5&^_-eH(7(0JS)n=k%z3p#KeqJ6 z1-Vwmvln@>B#9G4rED~hs8;v;mttXFZtAl}2{qsL4vIv?om1HOJO){kfbKk=QJ7^) z`*Z}MEi^JBZ2}d`C#%?le1!c`^rEdJ`=@i+{Gu0zS+lFF-o8R0UlpubMy02x`mJCB)_A-*HMcQhxMT=k$FE z;M+p1iAR526M_HHIjwAVejcwT*LfbG>%S!)As_m z*v=-pO5zjOa5k&lB+tDugTG2`@H}+M|3Dx!Lx37mKVgK{+w)DG)nyAS`CX`SHI_Y+ zjOFtq@?^2$VR-p%^4xsbbs0KtE_}O0+$mqg{rqp@%kYnT>1^rXV&h;5<@{xtjaptp ztlG9%=qM0bc-Lv6Y#$t=jRR>cOe}1QC}g|?5msP(v9Guf@gFV1!02sXm5pEp8iw`; z3Z*utGCo5`2ac($j}a+4LsSRYxL6?^VC71*_mnwP&vn!jvcDyyJ=aZ2HAZ_8+WQej z%W=UK=4j~%w&l_$qolxl$Xr~!Z0cG$^3}yb+mA?lg@Pd5*|X6M`8v##VJf5RHNEGL zDZ~DcF#k6?ds7F*o^I-5>I`#rGXI%98bfx7mHo|1C3#7)iQj>|m+opV{C03ccR_Bl zQBgB@U+>0%Fn_vzLSR@V#`qUanGtm~$+*C;jBCc`_dNEDcRn~&D+hW{9sADtY;PW0 zeG1115YLFK7%4sV`%oAXPcIYDQ|n7x!2H^=H%1;?vvxu+5L2D=YhBvB=DGqKEFhgW z>9{0UKlFXb_>2ba{-};rZEn%9H6e*Wi5Mn7GZwO>ieL_0jn;xC*^p_9g>)Pc#K;q5Oh+TtD4>xPC_>J)c@pRA;pIOF#*v&|)zTf5|J+E)Y9WcL{~n zQ(98OafZ`?_5>Jh#M`4paWw{#*aXu8Bk~hv-o#miIiljUZcH@5J+0UMx*I2}LSG=W zbRdQF@kMDH9Z0(79{SU4e+D~n@}%`+MF@? z26=(}WWjRE(sKT$@oWAk^T3v(smKQf)=D{<>V4{6Vz`%oCFra*>q7-Za^nAS9CG|4 zL2qi59v+Bt{6+rq)l`O2=m2I`bfOiKkeT0?S|rLA<|$y8R+ly9_!H^l^+q$6myVi< z;T@SgvBShe#mDYucy6tbiDdO|-*~ifyH)R$dl8@D8}Ca#To13~^$h22U%2M@h4=aW zZ7Srq%_!^ECSO4E#U>WzO0f^G7-55wtI`@oepLl@wc?jvLU3vK{ZMOq6>i}#G!N}^ z4stZ^%hPxO0r;zaLoZ5IsikOP6USHa_rSZsuPp^PB*kG5*Otd6Xo{%z39ST%*P7h; z_@EwggI;mThCB5ee6Cb=)0$UdwSdR9gwg9xqdfBFXMWL#KzA!GmC28opSN~dY6n>` zq{^PBJRroW2#N1|GRodU)D`S*Y3a5NF3iiCIE-;sVQ3K3u?T2;v8FU(B=Yp^8-FoC zyCwt#c10q&#mcdU7Nq-*v-=9Gr==gB#XvNKQf6wMc2yW@t0rn^Bmf3qh>04-7a!sr zUn((uq^nA%Zi$c!MCK)m^)!2YW_JfW)(wT18PrQcdhyDMQCRB(Jg{pe$BL>cqxUX8 z-^yUzP#ak)3nMgoN6Yr?+~{gQ+t?=&Fz+V#&>z0d2WE;H61WKQ`Di1mcm$#=mK2pY zIf%!v$h6anD@iyytvWteu!ZGh7t(-O-qw_s9@d4ju25wi9wmJjyNan>1r@moqJP{P z8BFQ#a|=`T+uWxY&oC992~wYSaL}XgqMCkbltV2ui}G4*Un<7O&snpbw&;v{_7b2H zS(NoH<8;`6Y9YU^FI_IZVAGVhr#a9LPR4~Sgu}Js#cQu1X5W75pXrj@(qld63bJ|L z$ysVZYEV!4V4B-p)Jwl}4pUI(;hU5w+;;lgCj=*x6bbm@d|9v~XmRDdHs*K#9B|!0 z)9PtXG(`1zvcCbXa_1+R%CCM6c*%E2MB>(X$+h;p`o}Sk=&L95w?}K$%%yK}RpT-R z&WOmiN9JVapL|hrdlsQ?k%oUNJvyKpMzZo|2YCsv@rtD2@p+**@Xg*-*dm07!kC~j zo)XO4()411`&&hf<2!+vqL|wKth)y=BtS})Yy$n(gSj!aXWDzm=)o8v$O^>YGdRw6 zvAPO=$S>yX==wv*Xy?dwVqC>L#aCVqIlVi&-LFK2_r=bX_ijz{7b+a+*Yuf zQOFgVj|F0v`;7jlDS8W0y#?^u?L34SJ2S<-%bGMf>0fEk)NViM zPc^b*=nGjc{V<)L7xa(>`jNYb`-zWrTrOIu&kO7)4wx9uyqOP!zmF-W9>cYXbf15K zvNW4) z_&p+xS>sQu;;$z&t!^-gn5tia#Z3`I%fb{d_%1t$&7V(>3?N{~bW*hrIuUb?U ze}%iLwqL&j_-SwiclmF)UpwOOs5f=UYo-3D=_0!Euc*IJoxdsM?|?UzMBq;}#90C& zIsOgsrkMFV+D$d@SNG@zW&Hn)WRTBIi@8%kJtyTQAB%FVD z@P=~nJJ?NP|0`G`qIUi*+8cY|?_f8XE%2vXh_hjWe+Rp{8T^iRlR#dx;h%Q*_U~x_ z&W(RZygBi&iRVv4CHfulk2Lgm;G50pnlSvd0>JOUH|y@7^x=2po7H~Z%zl~~`ERXF WRS_MLPe@3&u0M$8@aWF<)&BswN@a@x literal 0 HcmV?d00001 diff --git a/init-file/xxl-init.sql b/init-file/xxl-init.sql new file mode 100644 index 0000000..f7e9974 --- /dev/null +++ b/init-file/xxl-init.sql @@ -0,0 +1,122 @@ +# +# XXL-JOB v2.4.2-SNAPSHOT +# Copyright (c) 2015-present, xuxueli. + +CREATE database if NOT EXISTS `xxl_job` default character set utf8mb4; +use `xxl_job`; + +SET NAMES utf8mb4; + +CREATE TABLE `xxl_job_info` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `job_group` int(11) NOT NULL COMMENT '执行器主键ID', + `job_desc` varchar(255) NOT NULL, + `add_time` datetime DEFAULT NULL, + `update_time` datetime DEFAULT NULL, + `author` varchar(64) DEFAULT NULL COMMENT '作者', + `alarm_email` varchar(255) DEFAULT NULL COMMENT '报警邮件', + `schedule_type` varchar(50) NOT NULL DEFAULT 'NONE' COMMENT '调度类型', + `schedule_conf` varchar(128) DEFAULT NULL COMMENT '调度配置,值含义取决于调度类型', + `misfire_strategy` varchar(50) NOT NULL DEFAULT 'DO_NOTHING' COMMENT '调度过期策略', + `executor_route_strategy` varchar(50) DEFAULT NULL COMMENT '执行器路由策略', + `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler', + `executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数', + `executor_block_strategy` varchar(50) DEFAULT NULL COMMENT '阻塞处理策略', + `executor_timeout` int(11) NOT NULL DEFAULT '0' COMMENT '任务执行超时时间,单位秒', + `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失败重试次数', + `glue_type` varchar(50) NOT NULL COMMENT 'GLUE类型', + `glue_source` mediumtext COMMENT 'GLUE源代码', + `glue_remark` varchar(128) DEFAULT NULL COMMENT 'GLUE备注', + `glue_updatetime` datetime DEFAULT NULL COMMENT 'GLUE更新时间', + `child_jobid` varchar(255) DEFAULT NULL COMMENT '子任务ID,多个逗号分隔', + `trigger_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '调度状态:0-停止,1-运行', + `trigger_last_time` bigint(13) NOT NULL DEFAULT '0' COMMENT '上次调度时间', + `trigger_next_time` bigint(13) NOT NULL DEFAULT '0' COMMENT '下次调度时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE `xxl_job_log` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `job_group` int(11) NOT NULL COMMENT '执行器主键ID', + `job_id` int(11) NOT NULL COMMENT '任务,主键ID', + `executor_address` varchar(255) DEFAULT NULL COMMENT '执行器地址,本次执行的地址', + `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler', + `executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数', + `executor_sharding_param` varchar(20) DEFAULT NULL COMMENT '执行器任务分片参数,格式如 1/2', + `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失败重试次数', + `trigger_time` datetime DEFAULT NULL COMMENT '调度-时间', + `trigger_code` int(11) NOT NULL COMMENT '调度-结果', + `trigger_msg` text COMMENT '调度-日志', + `handle_time` datetime DEFAULT NULL COMMENT '执行-时间', + `handle_code` int(11) NOT NULL COMMENT '执行-状态', + `handle_msg` text COMMENT '执行-日志', + `alarm_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败', + PRIMARY KEY (`id`), + KEY `I_trigger_time` (`trigger_time`), + KEY `I_handle_code` (`handle_code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE `xxl_job_log_report` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `trigger_day` datetime DEFAULT NULL COMMENT '调度-时间', + `running_count` int(11) NOT NULL DEFAULT '0' COMMENT '运行中-日志数量', + `suc_count` int(11) NOT NULL DEFAULT '0' COMMENT '执行成功-日志数量', + `fail_count` int(11) NOT NULL DEFAULT '0' COMMENT '执行失败-日志数量', + `update_time` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `i_trigger_day` (`trigger_day`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE `xxl_job_logglue` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `job_id` int(11) NOT NULL COMMENT '任务,主键ID', + `glue_type` varchar(50) DEFAULT NULL COMMENT 'GLUE类型', + `glue_source` mediumtext COMMENT 'GLUE源代码', + `glue_remark` varchar(128) NOT NULL COMMENT 'GLUE备注', + `add_time` datetime DEFAULT NULL, + `update_time` datetime DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE `xxl_job_registry` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `registry_group` varchar(50) NOT NULL, + `registry_key` varchar(255) NOT NULL, + `registry_value` varchar(255) NOT NULL, + `update_time` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `i_g_k_v` (`registry_group`,`registry_key`,`registry_value`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE `xxl_job_group` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `app_name` varchar(64) NOT NULL COMMENT '执行器AppName', + `title` varchar(12) NOT NULL COMMENT '执行器名称', + `address_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '执行器地址类型:0=自动注册、1=手动录入', + `address_list` text COMMENT '执行器地址列表,多地址逗号分隔', + `update_time` datetime DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE `xxl_job_user` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `username` varchar(50) NOT NULL COMMENT '账号', + `password` varchar(50) NOT NULL COMMENT '密码', + `role` tinyint(4) NOT NULL COMMENT '角色:0-普通用户、1-管理员', + `permission` varchar(255) DEFAULT NULL COMMENT '权限:执行器ID列表,多个逗号分割', + PRIMARY KEY (`id`), + UNIQUE KEY `i_username` (`username`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE `xxl_job_lock` ( + `lock_name` varchar(50) NOT NULL COMMENT '锁名称', + PRIMARY KEY (`lock_name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +INSERT INTO `xxl_job_group`(`id`, `app_name`, `title`, `address_type`, `address_list`, `update_time`) VALUES (1, 'xxl-job-executor-sample', '示例执行器', 0, NULL, '2018-11-03 22:21:31' ); +INSERT INTO `xxl_job_info`(`id`, `job_group`, `job_desc`, `add_time`, `update_time`, `author`, `alarm_email`, `schedule_type`, `schedule_conf`, `misfire_strategy`, `executor_route_strategy`, `executor_handler`, `executor_param`, `executor_block_strategy`, `executor_timeout`, `executor_fail_retry_count`, `glue_type`, `glue_source`, `glue_remark`, `glue_updatetime`, `child_jobid`) VALUES (1, 1, '测试任务1', '2018-11-03 22:21:31', '2018-11-03 22:21:31', 'XXL', '', 'CRON', '0 0 0 * * ? *', 'DO_NOTHING', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2018-11-03 22:21:31', ''); +INSERT INTO `xxl_job_user`(`id`, `username`, `password`, `role`, `permission`) VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL); +INSERT INTO `xxl_job_lock` ( `lock_name`) VALUES ( 'schedule_lock'); + +commit; + diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..a07dac0 --- /dev/null +++ b/pom.xml @@ -0,0 +1,357 @@ + + + 4.0.0 + + com.muyu + cloud-server + 3.6.3 + + muyu + http://www.muyu.vip + 若依微服务系统 + + + 3.6.3 + UTF-8 + UTF-8 + 17 + 3.2.6 + 2023.0.2 + 2023.0.1.0 + 3.2.3 + 3.0.0 + 1.6.2 + 1.27.2 + 2.3.3 + 1.4.7 + 1.2.23 + 4.3.0 + 2.13.0 + 2.3 + 2.0.41 + 0.12.5 + 8.5.10 + 4.1.2 + 2.14.3 + 9.2.0 + 9.2.0 + 6.1.0-M2 + 1.3.2 + 5.8.27 + 4.1.0 + 2.4.1 + + + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${spring-cloud-alibaba.version} + pom + import + + + + + org.apache.skywalking + apm-toolkit-trace + ${skywalking-toolkit.version} + + + + + org.apache.skywalking + apm-toolkit-logback-1.x + ${apm-logback.version} + + + + + com.github.xiaoymin + knife4j-openapi3-jakarta-spring-boot-starter + ${knife4j-openapi3.version} + + + + + jakarta.servlet + jakarta.servlet-api + ${jakarta.servlet.version} + + + + + javax.annotation + javax.annotation-api + ${javax.annotation.version} + + + + cn.hutool + hutool-all + ${hutool.version} + + + + + io.swagger + swagger-models + ${swagger.core.version} + + + io.swagger + swagger-annotations + ${swagger.core.version} + + + + + pro.fessional + kaptcha + ${kaptcha.version} + + + + + com.github.pagehelper + pagehelper-spring-boot-starter + ${pagehelper.boot.version} + + + + + commons-io + commons-io + ${commons.io.version} + + + + + org.apache.poi + poi-ooxml + ${poi.version} + + + + + org.apache.velocity + velocity-engine-core + ${velocity.version} + + + + + com.alibaba.fastjson2 + fastjson2 + ${fastjson.version} + + + + + io.jsonwebtoken + jjwt + ${jjwt.version} + + + + + com.alibaba + transmittable-thread-local + ${transmittable-thread-local.version} + + + + + com.muyu + cloud-common-core + ${muyu.version} + + + + + com.muyu + cloud-common-api-doc + ${muyu.version} + + + + + com.muyu + cloud-common-security + ${muyu.version} + + + + + com.muyu + cloud-common-datascope + ${muyu.version} + + + + + com.muyu + cloud-common-datasource + ${muyu.version} + + + + + com.muyu + cloud-common-seata + ${muyu.version} + + + + + com.muyu + cloud-common-log + ${muyu.version} + + + + + com.muyu + cloud-common-redis + ${muyu.version} + + + + + com.muyu + cloud-common-system + ${muyu.version} + + + + + com.xuxueli + xxl-job-core + ${xxl-job-core.version} + + + + + com.muyu + cloud-common-xxl + ${muyu.version} + + + + + com.muyu + cloud-common-rabbit + ${muyu.version} + + + + com.muyu + cloud-common-kafka + ${muyu.version} + + + + + com.muyu + cloud-modules-enterprise-common + ${muyu.version} + + + + + + cloud-auth + cloud-gateway + cloud-visual + cloud-modules + cloud-common + + pom + + + + + org.springframework.cloud + spring-cloud-starter-bootstrap + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${java.version} + ${java.version} + ${project.build.sourceEncoding} + + + + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + + + repackage + + + + + + + + + + + public + aliyun nexus + https://maven.aliyun.com/repository/public + + true + + + + + + + public + aliyun nexus + https://maven.aliyun.com/repository/public + + true + + + false + + + + + diff --git a/skywalking/agent/LICENSE b/skywalking/agent/LICENSE new file mode 100644 index 0000000..a5c6f78 --- /dev/null +++ b/skywalking/agent/LICENSE @@ -0,0 +1,233 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= +Apache SkyWalking Subcomponents: + +The Apache SkyWalking project contains subcomponents with separate copyright +notices and license terms. Your use of the source code for the these +subcomponents is subject to the terms and conditions of the following +licenses. + +======================================================================== +Apache 2.0 licenses +======================================================================== + +The following components are provided under the Apache License. See project link for details. +The text of each license is the standard Apache 2.0 license. + + raphw (byte-buddy) 1.14.9: http://bytebuddy.net/ , Apache 2.0 + Google: grpc-java 1.53.0: https://github.com/grpc/grpc-java, Apache 2.0 + Google: gson 2.8.9: https://github.com/google/gson , Apache 2.0 + Google: proto-google-common-protos 2.0.1: https://github.com/googleapis/googleapis , Apache 2.0 + Google: jsr305 3.0.2: http://central.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.0/jsr305-3.0.0.pom , Apache 2.0 + Google: guava 32.0.1: https://github.com/google/guava , Apache 2.0 + netty 4.1.100: https://github.com/netty/netty/blob/4.1/LICENSE.txt, Apache 2.0 + +======================================================================== +BSD licenses +======================================================================== + +The following components are provided under a BSD license. See project link for details. +The text of each license is also included at licenses/LICENSE-[project].txt. + + asm 9.2:https://gitlab.ow2.org , BSD-3-Clause diff --git a/skywalking/agent/NOTICE b/skywalking/agent/NOTICE new file mode 100644 index 0000000..f95d82a --- /dev/null +++ b/skywalking/agent/NOTICE @@ -0,0 +1,299 @@ +Apache SkyWalking +Copyright 2017-2024 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +======================================================================== + +grpc-java NOTICE + +======================================================================== +Copyright 2014, gRPC Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +----------------------------------------------------------------------- + +This product contains a modified portion of 'OkHttp', an open source +HTTP & SPDY client for Android and Java applications, which can be obtained +at: + + * LICENSE: + * okhttp/third_party/okhttp/LICENSE (Apache License 2.0) + * HOMEPAGE: + * https://github.com/square/okhttp + * LOCATION_IN_GRPC: + * okhttp/third_party/okhttp + +This product contains a modified portion of 'Netty', an open source +networking library, which can be obtained at: + + * LICENSE: + * netty/third_party/netty/LICENSE.txt (Apache License 2.0) + * HOMEPAGE: + * https://netty.io + * LOCATION_IN_GRPC: + * netty/third_party/netty + +======================================================================== + +grpc NOTICE + +======================================================================== + +Copyright 2014 gRPC authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + +======================================================================== + +netty NOTICE + +======================================================================== + + + The Netty Project + ================= + +Please visit the Netty web site for more information: + + * http://netty.io/ + +Copyright 2014 The Netty Project + +The Netty Project licenses this file to you under the Apache License, +version 2.0 (the "License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at: + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +License for the specific language governing permissions and limitations +under the License. + +Also, please refer to each LICENSE..txt file, which is located in +the 'license' directory of the distribution file, for the license terms of the +components that this product depends on. + +------------------------------------------------------------------------------- +This product contains the extensions to Java Collections Framework which has +been derived from the works by JSR-166 EG, Doug Lea, and Jason T. Greene: + + * LICENSE: + * license/LICENSE.jsr166y.txt (Public Domain) + * HOMEPAGE: + * http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/ + * http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbosscache/experimental/jsr166/ + +This product contains a modified version of Robert Harder's Public Domain +Base64 Encoder and Decoder, which can be obtained at: + + * LICENSE: + * license/LICENSE.base64.txt (Public Domain) + * HOMEPAGE: + * http://iharder.sourceforge.net/current/java/base64/ + +This product contains a modified portion of 'Webbit', an event based +WebSocket and HTTP server, which can be obtained at: + + * LICENSE: + * license/LICENSE.webbit.txt (BSD License) + * HOMEPAGE: + * https://github.com/joewalnes/webbit + +This product contains a modified portion of 'SLF4J', a simple logging +facade for Java, which can be obtained at: + + * LICENSE: + * license/LICENSE.slf4j.txt (MIT License) + * HOMEPAGE: + * http://www.slf4j.org/ + +This product contains a modified portion of 'Apache Harmony', an open source +Java SE, which can be obtained at: + + * NOTICE: + * license/NOTICE.harmony.txt + * LICENSE: + * license/LICENSE.harmony.txt (Apache License 2.0) + * HOMEPAGE: + * http://archive.apache.org/dist/harmony/ + +This product contains a modified portion of 'jbzip2', a Java bzip2 compression +and decompression library written by Matthew J. Francis. It can be obtained at: + + * LICENSE: + * license/LICENSE.jbzip2.txt (MIT License) + * HOMEPAGE: + * https://code.google.com/p/jbzip2/ + +This product contains a modified portion of 'libdivsufsort', a C API library to construct +the suffix array and the Burrows-Wheeler transformed string for any input string of +a constant-size alphabet written by Yuta Mori. It can be obtained at: + + * LICENSE: + * license/LICENSE.libdivsufsort.txt (MIT License) + * HOMEPAGE: + * https://github.com/y-256/libdivsufsort + +This product contains a modified portion of Nitsan Wakart's 'JCTools', Java Concurrency Tools for the JVM, + which can be obtained at: + + * LICENSE: + * license/LICENSE.jctools.txt (ASL2 License) + * HOMEPAGE: + * https://github.com/JCTools/JCTools + +This product optionally depends on 'JZlib', a re-implementation of zlib in +pure Java, which can be obtained at: + + * LICENSE: + * license/LICENSE.jzlib.txt (BSD style License) + * HOMEPAGE: + * http://www.jcraft.com/jzlib/ + +This product optionally depends on 'Compress-LZF', a Java library for encoding and +decoding data in LZF format, written by Tatu Saloranta. It can be obtained at: + + * LICENSE: + * license/LICENSE.compress-lzf.txt (Apache License 2.0) + * HOMEPAGE: + * https://github.com/ning/compress + +This product optionally depends on 'lz4', a LZ4 Java compression +and decompression library written by Adrien Grand. It can be obtained at: + + * LICENSE: + * license/LICENSE.lz4.txt (Apache License 2.0) + * HOMEPAGE: + * https://github.com/jpountz/lz4-java + +This product optionally depends on 'lzma-java', a LZMA Java compression +and decompression library, which can be obtained at: + + * LICENSE: + * license/LICENSE.lzma-java.txt (Apache License 2.0) + * HOMEPAGE: + * https://github.com/jponge/lzma-java + +This product contains a modified portion of 'jfastlz', a Java port of FastLZ compression +and decompression library written by William Kinney. It can be obtained at: + + * LICENSE: + * license/LICENSE.jfastlz.txt (MIT License) + * HOMEPAGE: + * https://code.google.com/p/jfastlz/ + +This product contains a modified portion of and optionally depends on 'Protocol Buffers', Google's data +interchange format, which can be obtained at: + + * LICENSE: + * license/LICENSE.protobuf.txt (New BSD License) + * HOMEPAGE: + * https://github.com/google/protobuf + +This product optionally depends on 'Bouncy Castle Crypto APIs' to generate +a temporary self-signed X.509 certificate when the JVM does not provide the +equivalent functionality. It can be obtained at: + + * LICENSE: + * license/LICENSE.bouncycastle.txt (MIT License) + * HOMEPAGE: + * http://www.bouncycastle.org/ + +This product optionally depends on 'Snappy', a compression library produced +by Google Inc, which can be obtained at: + + * LICENSE: + * license/LICENSE.snappy.txt (New BSD License) + * HOMEPAGE: + * https://github.com/google/snappy + +This product optionally depends on 'JBoss Marshalling', an alternative Java +serialization API, which can be obtained at: + + * LICENSE: + * license/LICENSE.jboss-marshalling.txt (GNU LGPL 2.1) + * HOMEPAGE: + * http://www.jboss.org/jbossmarshalling + +This product optionally depends on 'Caliper', Google's micro- +benchmarking framework, which can be obtained at: + + * LICENSE: + * license/LICENSE.caliper.txt (Apache License 2.0) + * HOMEPAGE: + * https://github.com/google/caliper + +This product optionally depends on 'Apache Commons Logging', a logging +framework, which can be obtained at: + + * LICENSE: + * license/LICENSE.commons-logging.txt (Apache License 2.0) + * HOMEPAGE: + * http://commons.apache.org/logging/ + +This product optionally depends on 'Apache Log4J', a logging framework, which +can be obtained at: + + * LICENSE: + * license/LICENSE.log4j.txt (Apache License 2.0) + * HOMEPAGE: + * http://logging.apache.org/log4j/ + +This product optionally depends on 'Aalto XML', an ultra-high performance +non-blocking XML processor, which can be obtained at: + + * LICENSE: + * license/LICENSE.aalto-xml.txt (Apache License 2.0) + * HOMEPAGE: + * http://wiki.fasterxml.com/AaltoHome + +This product contains a modified version of 'HPACK', a Java implementation of +the HTTP/2 HPACK algorithm written by Twitter. It can be obtained at: + + * LICENSE: + * license/LICENSE.hpack.txt (Apache License 2.0) + * HOMEPAGE: + * https://github.com/twitter/hpack + +This product contains a modified portion of 'Apache Commons Lang', a Java library +provides utilities for the java.lang API, which can be obtained at: + + * LICENSE: + * license/LICENSE.commons-lang.txt (Apache License 2.0) + * HOMEPAGE: + * https://commons.apache.org/proper/commons-lang/ + + +This product contains the Maven wrapper scripts from 'Maven Wrapper', that provides an easy way to ensure a user has everything necessary to run the Maven build. + + * LICENSE: + * license/LICENSE.mvn-wrapper.txt (Apache License 2.0) + * HOMEPAGE: + * https://github.com/takari/maven-wrapper + diff --git a/skywalking/agent/activations/apm-toolkit-kafka-activation-9.2.0.jar b/skywalking/agent/activations/apm-toolkit-kafka-activation-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..4e5913d2268f63478c7f41ee9e56b14199e7b7ef GIT binary patch literal 12086 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 literal 0 HcmV?d00001 diff --git a/skywalking/agent/activations/apm-toolkit-log4j-1.x-activation-9.2.0.jar b/skywalking/agent/activations/apm-toolkit-log4j-1.x-activation-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..b7ba6bf4f5e529dc2a7a22ce49c75f28cc95a889 GIT binary patch literal 33392 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
  • 09xbLcPk~e=yu{4O*)Z|Ziw>uySwzzuNT?0dct4?g$y!1Pj3_jM5qXea1zYU zN0j7>wC933PD5asF-s2elV_P7<1r|bGv2MdYbd&X)~|q8p9aS_O5ZjdYs3+#I!W(X zKu)2eh+2Vt5%gYB`RSOi68o({+QBT#(onZZ70I9}$@h|C); zqK2UzaYR`GjadUu!FDYn@#{N10RPUDt=~3=X-urU@M&XA|84z>&i_vv`%CSL%9#_Q zD)KulJXnlS;X__ilA1;@<=niBDUu?BxZeTkbVXu|O1(@FQi?%}-UN1Dmqd16Bd^(7 zA>4HE>1mc;oSX^$*I)XR8J$PxYt9ev+tuA4E}*)&(m{@6R^=T-jZt!$8^*FNwdLtm zMdcD>g#2Y%@xO4B+YHNs7M!x5aU88>JWoTZ?lrm$8tpr?=r#K$aj;c-&{svQF*3D3n=DWTTsH)iy0YfjX=;Ws%dl0z_R zaWE#I!*1p{SIFmkz>KNorw z`YA$((b2zNF9H`pSc5V_^RLo#c^O|Mq$%1Y)le#{sz5mgtrhAwE_$(d6qgIzb@bS@ zshOglJ_}T~rqUf?!UPG8T)-`CJJb+Za>x#`40}6m^SU2rGjCMrNIcXeP!Ei_6&gGq z*2!|)79{NIIg4Hs^gHC%rIqi0c@gLG@a)L<--pSR*n~sr1r18|{5TM>Z~Wzxv$uH! z!IS%zXLV{9T1Ato9=@kYtPi1=L_o~hCiut(xPkPIm>=u0cn!-c$o*vehIZ~Klr~wz zxCh$MSrQlRz1uU;IncOj8w#-Qeq4DPx@ahUM|zgirW;-qOjTcOPcpBh$>wM{)=4K{ z#0EAk&j{fK0oD9uocNq9{xIgqo0Bxah~g(ibQI_ooA`C;B!#a~eO5X1=)mEjUE{aO zuj!zt;!Oxc*j-V(%vL{ca3_TkdZdHeNt)B+<_|`aNHPjcM+)Yy?x{6N3n!$D%O%BK zNnQ@`EyqZQ3r$Gc`)tX@$^6!!jbW>6+Zu_Ocl)f-t-27*$#Z}NWLu<(GvA}ZT(vM^ znzo}Bw5c=u2)ok7I>`8x`J;A*?l?0R0NMBT#eA%&>Pj$ptg)@PgKP@`46SBGHG821 z6Mn@i5hLEi2%b*d+lpF6Z0?co>Oq%3WuY&ogIkS$wYoEH5Oggk(Q0aDwyLnzJkks@ zY5Vdk6P)MS`5uAc&N(7P%@d@80=Iw;4-WdE<+iO(1-Q z$*m`A9|+_fMdz_s?XhRGyZc4!#q|dVmyxIc;@R-8#U+n30IWvn2=&ce<@?>%r1UP9 zd+b}@opbwjiFL@XAI;r+-{5nTTe@*ykwP6QOQ&r-!Gk@DgFL3D(WZ|BYK7zuuZKCu zCJFowfCG%UnefvfI`~dh*X`uL3$_}PZ?z@gBV*omNug7O5Q@lVIL+CxlSMJz$+%Qq z!~F&*O;MW){E6Ax$kVEiYE4 zWJ4_`H7TZiEln*sp-8{TG{>|rK{rZAb1hXnK_{^!2_kuhVyv1(c4%OHSZGgznrKi& zLYfSKLX5h9nzVleJRs>{|8q{d&H?70vSm~uJdEk~)`I3f;tsmyGY0{OpeZ(NHTj&p z#pm&_a}v_eU;k%~@sA1;pF0`cRdSgZU{_z zzKaPUQl_k{jR;?4SBTCqFGCi$v%r1nzbU%s(mRX-5h^9Ge;<)6DW&Jpq>&{&|JZe8 z+$9hl&XAM^LxUKRXf);rt8*3Ohb2IPE{wJ@{!qPz38+9KgSZdtWDMd>9AB)Gd|1l8 z_7ho%ax(~(=u%+!i5OPtHh~tTNm3@&BFo> z@T1|L$&&unN1fs!Iu$`=Re&fL1o9@+fao)0EKjX42oX!~`3hxDcYB5trXnSPy9nuQ zYJ4~jn5tG&3%>-36fp9A=UG!DtTd3B!?KqJ8~ z|Jr^e|NW~er)Otx_?ObSN~Nhksq#fM4b(KqAk;Z>@DiGo=856DVp9Ioa;t+@P%Z@h zP635uRvR)1ud*Gkd*^|qX)br$*#;3e7fl2pQV}y2hePhS6CGFX)<)fLuXmt5j7b=a zmPc|2FjaVvjq1GKV-sz9tyxIQt1K7_UoQlkY4FO6)$gSiu&cs7D#r_vqm&P26xsOc zgMKvTb3760u>{O1S?j(*?{#w;o}^^kX_Q-BTyW7@9E4-Nv?|DJZY?}W8q(-cGD4$i zMVQ&`s>Q;}Ya1R{o}V8zY`_aJdmE_*Y3ZX&Zw3{W>5(6+!tV~yPwjZ+!Rmu4*AsBq7uU2oOSZo|Sh2`_6` z5+ULgk_gWl5pAsS#=bX4FS0skj^!Zr(6MjIc*XB|Z+%hstodtIg6S9qEZ|7pUOS+c zmGu6m!qY1_lli@8IfO<{KG5-PCR}FqI;t&Ch+UT9Gz77aD#WzRbq9njtN&^q4{ zpq%id3CxQ?oV+Oz7C7VV7SB~xrc|UA%&be0QHS1&+AU)cBgnE4rWbJT%vL7bI;~Pc zxXE41Gk0qin>Z=Y2y{@rZsyfR*Tec?toT0iTqmCOH6j6jW%Tetfj0>5TeqSzIXB^7 z-Xt~{i7kj}L0{LI8h1fYzi41ya5q+_!Zl%F&i}>k`?Xr_uFAn`wMc0}8*kx}<3ZsMc#)k)hfkSk zxeUIwdM$eVN#e`WG46E98JteTxlUkKpQ@RNL>^7;)ebymjf*ZI7}j=K=YSrRQU7@vV$M$R0-dzW3)gr&u zsuBI9R*makn(p^nwI@KWnm+4Ibr#F8!QHntuE(^@e^#r8soWCr=Cs&2f%wV&TD5yX zty-VmNEcA6#(khx%?qein+IyuN_F;Y)!cJ|S~cr0wQ9s*t(sLYQ@akdR*ev-Rjc}1 zs|NqQRt@t@ty;O`vW+9NyWDKR_=UiU^T z`g%QNPH57(dGHg6MunHh5Ir!VT@4sqN;O=k-y+_G?2(Wmi)??^o?RASxouuuvlW%Y zM*@_pt#{$0a_pC?xj_2UH;e3BPXMKAdu-^tszp5-5vw{nf<;_pL*9Xm!v(BzuW+EH zYPB_Z?R8vAryWK`^$Uy#W6oCQ(~BThzudCYI&Y5cglm8CJ<)J&*7C@$B@VRe!b!YO z0b=PLg{Bj;LuURBHKTeTa5tk1ue5w#7&wC*@Af(mQMy-=Ah@cz(+-I=9h;4$Cb(h8 zQsU9zL>eSF^toi(b`0j?JLbyy1aFUqtmfX~s)uETCT~}gTzotPK5iuI_FcpbmTDI0 zVhw7b9mmEzbN;Q>!|0TUqOF8O3V<_91mZLF4iD*)39;xKogZ@#0_p?0rg14WNC1XYW6(f2BO)iy+S zyZMUGQqB#LB@uY1>%E|gLASy<3azkR1iJ}nU2FX+?6R+F%r z^LXr@rZH`PvTRI^qW+rT9i-$f%_c?{5qcIT2Lu(xmC4D|_3fWjrTtU(Oq{*DwFC2G zgP#@=8WXpZ3JXMO+()VKu9HAL`6-iBG-mT`EDP#7+T`X*`7}hl;zTk&53Z{cOGSbq z6h0641gTW2hSS2kC1-jRXdrjdtodt6?`w{{wXuUhbdvcf6|btbcX49TQsT8^Ha6zMf?78B_SrOC{5^oZpkden-%f*ewbeM8< zShxuBcSZuOku}en#BAh264lV~T&jXxI!c^RM)F+HuW{-xs@tZ{Klr4)2~7KqUi<3vJ4@9(8+@p?5s)Xn%Z9_QHjUarg%qMhFhl zE|GFEe6QFEI+J2ZP%mD6)=%&2o2=xd*ngXyKlS|UJ99M^Iq9yACUen*jin)~EgVb5 zg2($WyBaLtYDXP}*Rhtz;og0*cC$rTocsobt3ER-bxvtMGGWUc1u_o;!+9)t&)}Us zL=IHLu?q6;%wdaEeZQE;Ta<+8y(m+(Q7Nql-^@S zY+tzCoaW`^(UY``0FJM&Xcwy{FuuY6Z^u_w-^tqU<~Pf*e})l=I1_KI5f_amX06$c zwUM!ggIAB^MY+nI@137t4dK(=&2h#-+k)T8G&Ocul$kKsTT0|vPiRc!vwq)I0GCaV zt?is5@iIok?b6QV+xt8sBQIL~rMr~zrAP}NI@k$5e7NdahE%d4S6-hs)4=hvBVH2G zM{h4)wPmj<06Q`|OCH6t?RdD|Na-w(P_DL_NvKblI7tqY&C7B(FN>8c&Ux4~O!cud z*rR$4^Ii{hIqj(W_1hjX_}eQrNS&Ha>GYL__&l!$PuvE-YnN@-?rwW6LC!&GOz? z)&0>|8A7hnY!~w?*l@j~yRaV&AgI3>rUi^?<&k452&~yZaqNK1cM~Q9>ucAnj|Ou% z99sd8!hb98V1R|RO#rQt6>=yTvIR^eh#`FRPosr#A7eR6d{Nt>C`AIWW)d4|!Ez_>$=1ppP{U7)1{JUHs^Fsrjak>a z3Gd1WpC_NWV%tgi3hinNa?e@v=>+i&yuftkEF@bRG&1E*Bs!L7lP_evBtk{6lM9E- zO0u$sz0xceOIC~-2=$@GAxF%Ql94>F_u*m5=FB@9jbdEM4wY*@OEMX1C{hJ6l(^3b z4^tQ7s^q5gpir2di{gW*voNOX-w<%!Bz~FVBwp@wLJkc;xV5Bg;RqKq*0>L8qbl@v z`QXJ3vbXYX zy-ZC&Z>EU#5&5{yo!~Q%GTUdk+x&Jq!IfxY^v=VTRwGGcu9 z%^MImhf8qhZwKo|v@@bmw`J!FYvWhG%Z?U(0ePV@i&aDu#L9agmmNObpF>jDP8I`V zkeyv199UE@rSa^M8Pgg!dwFZxG?KSxlFTw8r5vY5+lzR8<&Zo1o+EghtS;|s>?M{= z)h%=_ab3Fev(hbBYBcfdi&7-r{5Kw9Et2+ONDmETEepsPS>KaXoS_%;$g{93 zXJXJ?dAdIQrl!7%tmKs%{>Y203t$Z0nXLu^TqVZQcktGf7BWQHq9B#?c!h z)$2~Vxbe~{ut%XTyn4HvxtHi-KY>`qH)=a^3ma%6>*M~je<%qAZw}i>zj*OUBXc{_%h|LQ<9y?KMK3;|RF*ZNTo8tOA z^7_}U0vCpkl{ni^oD(b$d&}!xEl>5t80*2OxF#$E&JL$D_XbaPgsW?4;GQeJCw~7l zcU$&!ZZsKM_42@W7j9G5+V(U@S)pepYe>U%yNK`fI!6hfYK&i%R^i*Zp@RFz<33gJ zb)(9XsL#H3xR|hxbU(ynH2NF^wE(GKPgE$Ue9tL#zG3;Z#NG+!cdc(;Hy0}9?Gj<< zUcT)<>P$VN=+^DZ%l%#^W&4u~zozE|73S>|s~%xK&%JgoX%r5wgvfg5IhoVen4qV> zPgK7!VC10aJSO*2TBX`2-j|P6UZr%=yWRt|P2xPX(R9E$o*4tyHXXiBX9R51FS%); zjsLCl!!HL?_c{NKHR#E%&W@I2!$t6%VB6i5t#3d zoKx;f6nAU1*ZF42;e<4Cw&yPE6R1kKS&T2FZL=prlKBv;MdFdL5Y9G#Ohi|fdR;%G z-oz{@r?-Z`B#=b)L2qN8(=g>us$+gbKq+%>KjW5&r}HHRy?GYA-8ITw&X|!KNTz7~ zyL-0q(a6!+aR^;=7xLjuki9g>6{c4|hl3U8VpLI<3pIDA$~a^UM{KBelrstMLt;RiE^%M0*ENQc!k3}P*K zq*Q0PJfABNmtO3oWlW;T6XEMLD9v%}CL>7w=*}1Jk>|u~5q>fE(LNx9ZJ~egScLU;ks<9gY z?`rnQ6OrV9GL^o}n{;^rd7vcTZAn5{?D8UB&XZoi+`uh1ywbkoOi%Xw(RyL7eAsj>JDr>25#9kEsXuI}_aaEe|;mqUW zXvwD1PRPS_&aOP0$gW`}!_Ja6S606srCj7eFW2=}rHrT$=EjYr{porjDUR8OcvWT!fhT~R7;xgfQrX{nq%pQ1q7V>@?C zpWrOj``7$oO-VTX!&Q>AdA8IEL{veNLB)|Y!QII_qX6cjP6Gwo`1J=KpFBS#hGU5P z=%2lMtQvQH!RfB8jG8*%IFlab}z}iOlK}!ee$hTXC`Gqx7h;x?rB@v`vzPP0Hn^95BPJ?f0MGAQT7ZZq^j#)#2- z7IX({V*9&sL|AzrrBQfM>9arZ)+BEAO;@4ZWG79MF<6pnFQ9hDdWK^NI-Zu+dGwVyVe)+Xh8STdIV%%t}tk2Rl-xdX~Q1i2#_7%fTwey+a zlZi4`N>#fq1(Cz*^A9}xsGzzufMbbZN<*WYjJ`sAC4H?TkioBRfd`LkSKTQ|y`Blj zVT_Z>&+r|6sdhxj`nG}u$H_iPAMEC9M9TqzgeMLBTVvn%>RNqt)#xaI+!R%|t6#r< z#mmGj+oxtKuR3vdlV&N#m51eYy1r>52U8d`ezdQ0Cp$57msQ8|)in~%x5W{7=QH?C z8QO6!QFh7DC2-FNg67%O}Fb zB24bf^{BREc&ktS&PI}D>5wPuk;TWVolh_%SBan2>hrG<&Qs!Fn6#bA-Xe{NC3oZ1HzaCVBZyU) zsR}cT6b~3>e?rc1;(h3*Pk*&{j}lo!dk~JdcEibzF?8Hv9Mwwz(8KurzWPTC!VaPsnKAu?0q=HMX9aP?_D)`Z*61N_+) zE;%L%-8!LU{@rnb_}HfPMqJZbcVd`M4ST%4q>YhW`{*Qp|M7c!*7N$l3i0dIjzI*I z?u*thPBO`_pc>gb&Q(GfYxNu**+2G(=6IrU9*=TOfi#e7Z=slsJ~lZ+?QzMJDp`V3 z^=j^HH-qqb6>;6JaNwvTYoKRhMqLnz=srOZ`{_{&Bz6*xMt6{Os(qwn+!z;^Ad}4F z!OrtbsC>CQJOOf+MPo);c(S*rUBoWqZ6h-`ijba+#&OB9930Y;*x9$fYQ@Ra5Ww=b z9T{Md|1XE_>u@PlUjkx*37u~wxh0RYC{m`wp^bKX();`1VlQJUI?uD>(_P@JI_BS% zBAoIHafALTuatJw=0{5N?KR0B*Od0>AM*94VfwKWEi3Z^( zrl*E1!enqv1n|7YvfjKc3FceR&=Y~9d_?|HvlA|)9$ggHO1y&8Cehr8MZrmwsTZNp+RRHex~j%m&vRwiPCjri z|2?IdALNCtVSgQB^2@=?W2ajs(`C|^7XsOp28SaGP4c9x#f@XzuKVMJEaETEWf6{a zJWW7+5rN4*!NZ^*&!+8fsvk6skpy5hz1mtDRc#_`<}{%}QU`|V`GDfy{?%S$P-{0e zFhCmn0|bwN3wQ9VT)?0A3H&P8LHZt{0l(3uAan3l*zZh%-{gXl0Py(zRhTby!Eyit zLa^}H;P*bj(P(~GJ>J2U*GtOk$2RKAUrmd z5)Zxzg@s@_iU$ae4W;Ry@&Ez)j^aZJWdb}g;rz;h?kIjt2l#pX5o5F!f|5ujc*FfA3D+G(01cE_9sgnVw zO~0M23yZFO@U90|1F%JuQ!3Eh-ou$o|5fV~O}?*XFkK#2m_75}J_CN6&emsj|^IyTtZYVVYf#Y8r>=?vbZL5WxS4;uQT*?k~Q49XvPO8Qd~M`RYlb|~0D*d(U?#rs`@an(O);J@x2 zKb}vpX*UPw(-RW_Ik;pI zH2+@O&kZxUa$v8y!9*JuXj2oy+0L|K4FLROUSZ3GAi1V~;A z0`m72z<<9?{+~8R`MBaAjb#L6B}7G(lxbx|lj6EzkOQfFUx&WrBunK zOcC^2AIRwY@`KnbA+fUxq?n*s+2OMLIL(7gH-Lo$eCyjmkb~-vlGOa+S}}rI?;lDh zB_ZX)4S{$xt;nAZ(@7)7XY0Pf>yS^Og;I^_xuDYQ84~ST)YvjGH4ppeGOc5jDlnL1 z%Z|?_5$d*X`Hq@xWeABDu6MR3z6SDqUA+BixsSRm+(Epzw9D)-cDKb@785;MSn)$Z ziY;FIU|eA!xpIIQPS3JGlMeJGK)Bcyq%ZPE9v>LnwqIK(g(_0LfP@AHWh-4=vnU?$ zE=8W#t0c0jspYghfa-f+^~n%@8dqBRi+motHA&bPxV(tD_)_G<>%w=<@2;FEF(z#0sXOS-V^$uU6%aZff@#C@J zi;Qbt9mM7B@xnTHvpE~=Yld3Y-SeyVG^>+QV-?ogNV{hM%z4$huVzI5kz`xDh7Qen z3R_vdyPFdkZ+R7rgPV_+o73$kjjzt6lG^C)>*`hL=La~b2TR&Yo8h%UKVysaU+`?&FC@Wi6ZPbVhP0R5E_mo~_uyi*6&(@=$0; zn*=-TCy{gSg|BUyPE>#_98l|)dL%SgEzhB4LM4716XHsVn{XtfP>3(5NwFjnP@4Xj z8ya*2T_Cyw6*zWq;JD=$(1aDx_*jZ9T{9bvMrz$P({&YxZC~EM|2j4pbad}+b~mFw zoQi2+Ltq##o!aacW1=$=6?51U)VorwRcipc*SJ8U%;9=-BLpXwgpwWHZ$o(tr`8vt z;%Zho;9gmX+8w7-4SSWHy6k?gtNOCoY;uQ{2bHgFJ{i2S?b;$HQD51e-d;oUwd3LL z_MFaw3uMor7eZir1H78^324PQ2?j}EN7O|>STTr-Y?_HDVbqUxTUxtI^CcxqXHPfu zeUkKZ3zkAMs)x7xrz6C=Ie64h?OLZeVBGzfWS^RMzs$~8Ye7*!9?s#3Y1*k&l!xrz zSjnKh2W!<8PTMm}XrSVhx7J_|qr?X1G6k7CmpQmy^w7*Jj}Pp5ovvEuNukB#5avj_(8$2V~}7MFufG1ta^^b#N*Vzi(ScNz-qC zaBbwrd^ZC{ezGYwooWwBOjF>0*27>3Tz&ZRLsR2ZEVuaTkPPw_UvB~M6beXnB5$H` zUx>f0KDax354ILG-n_9Y2dui*kf4AT-4-zXcRZ8j-tlUL@3=jg=vxU99ctCr#9x$* z?ox)K)kcmWs<(oW%n{hQqJdVn+u&Xf+rKmj$a@pxa#rOjm)n1i^bNxspj`R764G3~ ze(0DI@QK~Z9}6hWVlIeO%@8HX!aExh42_l58yInI%!Ad#Kz%ncNSyFk>eo-^M3ic2 zI~R!7%%>NW7!cXHgd4iPACGOf^y%&A;%!w}s`ZM4FUsw8C=}-CoT6prmhiCe)HRd90*FR%XCo$Dr~ZZx9yYHmCBO3WpQ<7GN=1r+tT~Rtlj5J{ZQ=2+$`xQrLZek!F2vf2f~2s@q5@V zSV(aUt4kF3=db>jK)#QDpA;f-e=#6Ja4X!E$Lf=2!pd~0s0})Ck=2x0)X?JpHaSI(YpIw0fPRLwq(4KUhxqBuKTcRx zZZsM_7{np;xQwQF;)`8r=DJ}_C1kxVZ8FOf-<=?QEVL0Pr^%$2s(>xYn>4{b_I-qM zHBn>3Ky!*QJ-4WZ=#JbACO4f3@xARV2wuH{7A>&;kMG`Fpkl=jI9&=d`u$mU^$D4b z9Qz2-s4r7UN?;7q{e^KDazDkoNKrwoKi5X6ks&pccf|tiVGGID~lt?`%Jae7yVoHaAS{2$uDJ~8QdWx_h zgAY4~VEn)dw&Wot6+6!?R$xR007;{a$xWJ`z%&kDVt*+iD|I_-K1UL$dedq5GC5Z} zH}-mUdJ7wW?m*yWwDiam>uC18vzR2%l_t&cgZhyQ8C6pbiZ>DUHkIOFR-=}PTq5(@ z)R4Ovk?}&{0J1;j7Ynk}T94VOWH&e?771>H(qrNpox~z^A0(>}@@%5Opz*PBj)Zcv znacw&#I;21t_Ke;Ka>txW_NtE4C;k)$B+J!B$Ex##l+EjaI^nhtL@ZT9@`XnaD@1*q(x%rx ztcOZ_{IpKouEKuigU+>wbbLXEZs-6J+cC@ag&xFKDQK~@2C>N!mIgvQdk^G_VTgjo z0bu9@YKMhqC=b$7A%0!5zx|?@Th+>BQ8=OuYnZOihU%KypmG9(zT6*D8Hmdio#!-Y zHpB47I?ZZkG-O!Ri7S~fSIVy|Dbe8Op8C2o)0`^#<#XeBp@&33!g8quYIHfa*|2Z{ zLo}&T+OHBE7hvR2Z>h29PN)rCmLL3V==hw)xzU-0cm{cjM$b}6wJ`DQ>+CqSL)NKD zQ9rVAbVv$gxbQwZrXJZ`9bWs*qi9(&BL0IeHko@8^uTU|uQcUSjf^2^_tiIBU zI`1my6|aX@f4)yB;J{l5XiRuIn1bU06mG7>!GL>oOKH6x7J#*bEgB}AYUZ~I{c$83nKI>fRy6CB0O!arJ3#epgM+y|*nXOx9OAuA?HHDr}?No*{0SQY9 zkJdwl8*F-TJDGa!WHn*s5nej3Scs{oBOHq|yUX zhYfh|brf%bUHWsn9U{{CqP9oFo#-4Y!D9Ke%KII8kol{Y{1A$Lxz5NxjPWz?WyR+>*P4Hm#%GafR zZvg^Lci?mj9_McJbxU@|x2d&VL(i#xcew}L4vqgEk9E%Zn4gVl1y!~ejN44cj%C`3 z(;jXrBu4&)q;G7mfZN6yo*fa7t*hQO_+&hhvtbza=q)>`@W-Rbu?5rUkNXr3Z+Oyv zk@NbM0|4zrin<5b%n;^YJk-bwzT0J9c%!u=5N;DI#kgQ#uGQMWzyexr&3 zt?g~mlyVNyNX$pTfWA|S{i4D{66!@jh?;`;EVe~%=JuiHV)3}4OK>!cfg7wqVt=P5 z%e1m<*;2$ESY8Zkq*B>CEPL=f-YYzcTj}Y=Ts$*^Q7x;0n*nRoH$g-@kC5u1pD9(E z8{DaM9i7vk1dM_%^A?TB`YMc>F&3GSGsng3>YQa=Pl9?ogO zT#jc8IlrSLK=EJZ;dO8gjkvn9MKo{0`|rnG5+$a4ssh;qqp`x%6+c+;k-?G6PB^ac zClVU%Hbj`4;(v8$(p)XR8G&An1((60%?xm4ZW4vfHmFEl^L|Rvlb3gLrsWc@gvs$`)%Z@0{M|6)!C}O9#lsbs|vGUIaXh@9y4{ z6WtI)f@*iXJaA9CuRgLSerFI>&Sxibc{LT9VdTJE4B<}}g1nz-cYMNYdbad=MN%## z(d(J~wuSeW#e|X&H7mPr-y;?D5>SNk@Gjm7a!FcSk(6GH5SVEW*9VJJu^f$H&kyyT z+Ii6K?$JVG>-g+O`x^cIk5av^ZVO=Z83;(1`p-&r(2r8x&e4qSub3n-e{W-8Z(w9@ z@|T*T{r9F$RvvB!)>am_f9(da{%J1;_BMa%eu)0GCucjmkDGJ;OFh#3AN6QpXLCXGLQ z%AC4fT)Cx(s{g5Onkw!3ZP~~5+xodj_Q%`n>y8?bk$cxgm%}J$m7|f&L4DL|=*kkk z4Ts_s&tT4HxqX0{t>c8V^{V5@6<lMSTLTBV2L zMbvzuc9AXH@|iJ)J4qj6cr+oW!BQdH@b`QO7>7Q4X(3Q7p*}4pD_A``oYK4+*vnjX zl94x*-s>Abb?($q)7Orh9;L;QcJU^|xm@{!j^>lska+?YI2o-r)zLRQeww-zkqTRn z#cp7siR_A(^keQF5vk$>)9>P6Flr!btl8_XlZ)h@Ux^wm;;%NCg?^UH3?GDv`k(ht zMKEE-y9aI7E}WX8nqexMZ0@o)sJ*P3HrVJgL~$soqb$uFcDuR_UXqTxUzl?3!S8XeB`Kw_z zn*a)M#O^VhXF0~XU+*zxlln?6B1|^tbXvPAI18j1SMlgHNO-$Ku?8HnROd9aChVVq zNVW+K@|V7I_PeC%!j4vTQpyWc3QTc4UqK6iebt&z)T&e)f>!Cv_OS%-g?bYt?$kle zPqr>2MixrQPc^Ti1MRZ`4K&z|wS>!pnD~+#e)rSpV5`i)#?;*z6vo~Q?F=2HA61vB z-=0#!UsBb6_@}Kzo3jqXi+lbsKuvJFQeT+1`J8%nenwV8{4Bb=0@zK4BRd7IcNmOw zLF!ggp{ZNkt`>{Ln%;qX-@(WzPA$le#u?S*=0~PR14j}>`os3nqfBQ-~}jNkyL31_QA?xNNR2j$zK&~`$3g0 z=(

    V(1t7RlDH4rQP$HLo$NpC1+9#c=DM;wfe{ey;cXfe>7v)Bx*7-6Kh0&k641a zaS1R7n2L4YKgd#pXdLLqz2iA_a9QW7+j6qkkyr%>-ALR`+vdx?m~ue)UBzZcgf zLc)dPmlaCbYMucO4Y5~;{EwFdfyjxBjcQhQ;wQR-QpxWv2 z$iG_|%(0qV+~?a;s=$YW8BQg!11m;5f#rjMP;D9Ev@eac#kbe@Ib6vZ+M;c^1=pY{aaeGZ4 z&wrj{n16ixTO9pe==>M8@>^&8hdTH#T>hJG|Hg(NH04gGWaXjuH+l21raPOsJO5*8 z7x)MNe_{CBs$Q?MEQ>6F@m5Has2Z&JX#!faezzJVY%MVsp$`;{fxS@!{mH}P^EWR{=6QZgYc>-}cz9^dr&df^@)XzwyO=j@RcUB=){9Pb3z z8|5rJPf#YvYJyn6$-uIRrf!?!%+vMZ=lRtg&ia0Rdr+f8S4~mf%EFDMl%AB|A$uWn z2AC1~$=8OBN`jN9r%GlQGz$Qm**9A25@t3Yy{p3I8r*(d&K@=sB`;n*l>oGn#AC&C zchzc7W6#q#H8dXBq)tM!;Bt&LJ!iz410#&a0^St2u4T0}*hIj)!eZtyl6bNqCA##{AJ7?no;SWBV*ZWYTec9rl=M zY7$;y;&f@bX-Ghn<8Ef}dvmRU2cJ7H=CgfDPR67F+BPhYBy)a$wU+L&x0B@(*)K~q zCXQ_17R`Hwk!?IY`bcNVrlsZ#*k0uUC2tICBICZ`NO;0&=E(di(V{Bw+u5)u%ewtY zpY4;50oXT!$x!HCe`M>}RX6J9on--Ln`LIB(QFdTuU6RR#2xo0C|_68W*PKn-g zma_%l%pF+{L$DMA37dHrEPl*f(dZERB3Oa&KRf~9PzgcKBCAgsi8CpBh=oFBF=;jKXXqTc;Py*u8{BQ{3v#GG7leDX6tgTAl zUy$De!^3$oz3HDUUt|XC8mw~UBcX0`yv8#*QqH+*&5HQ^{9Z+cnV3fp>bDD&foG8bKX9R@M>#&`LacZs=;L7WtciZOQCLXp5P>JqbzL)5vPL;RRG6 z%rZrjOkBHe7w9`#kzItm%?NuE<}adAPK7q59-_BD9!#-W6r5mKNuVQn`&4B)>&>Aiq_P;B92W%7-G{kuO?R!;sH6oROuV!yRYluL+XD*} zFJ(jtdy&M%B3mXZXS_oL7g!TJlCO)N?_w0B&uZ*Jb-YbgM$;UvKa!^Cer9~gDWay3KTrGRPgzn zn#0F7T1D6JO((oDzev-J7;^PTAfXQDY#PIHBx61IQB>qHPMD3Ua5$g znB_qdXZg5^?{eu@N!XVyZa|k-0`CkI91EocU_{?{B`iqW=d`y_J zo@9w@qtvZ1qgh3J2b~k97@`&wm~V#d0O0KaP!Mu90fs~@uwM4MYFSOvcxq&c?9lSLv{pGps@JF7kDyrxnoc`kDbfhxc=^e zb4q$Jf0G(krx%JmAV5G!(0{ggnEqR!Ebw~?5wN#6u{Abvl(2Pjc69lT>OboA|K#aE z0R2`7=80IK+|?SWY9rtZblJ@>4rv$|nCj21ZDWHRl0?{lRrzP;SOLilTN8@QhzW1+(tod1of*Rsn5WwNl>$-3o3w)cPlVECPeJNTX$eoMnnOWqi3lo>02~XMuhPS4q-8b4AkmC??DNx)Z7Ye z7{!^|IJg>$5rG?hXgqqY=C%8EO!6B{dLPn51%hjK)0w$Ckjrs!+wX=cgLDBuWb?~o z;d)!IWq5+9FN-B+;%xq4Y8{>w#hLz9QBHH7GA&3BHj>J%VmKZ#3qXVb})8cHVh-qdL9`W9^pEA?HfLq4`p##4&3Xx$f z8s!UtBkD7HXJqan{m2}(@D^tb*U_@ms-J))?cFIiKDP3}hZJJm}q?Kmgs#}d1 z-u?8WVXaSDbK|PS!mrui%}#@w!Ac!{d+ii?vRf5QM@Q~n{4b1*0B@)T`MOua2tz=5 z&d6T;>p;KBI{jw-m(Tlii?l;5=?ENbL+`0Ua{I7H(bshge|}vorvCk z37M!O#=Jdb*%;kWCJx2&`D@<##l{SStY5i|{nA<{w_t`vJYMbxSxbMA_2nOAU0WwB z%uI^RnZugI%e|S#x%-$nX_}h=izj9>9Cu26`c*=rXPpFv{#VK~+;6r{*0Ua8{a|ag zKV|EG58(a>cmDqa?r#kG0XXPgRmu$={<7p{cmmz(Fb01K)V};+a?*jrvwUi6vy4@X z5d0nN&rkYo+z%ix3Inyvf^fm4sjdlGJWTsP-Ok9KpC=~teoN!cpkve~awsP;N5Aup zJo`Iq)J&9SSDhtuT4@`#;0B$3+(v}9>((~L!TaWm&xyk+JQQ`>DIz6x87dujBcCwW z#K#7@FpyeviJFKZJ%~H0WN?KN3EdiO6$n6WTe5dZinOay8>*n0OCeNS*u=%S?4x_i$-`Dj(yD$$LMlt0anUetsSG2AdY<8?DRAK)&_ zjmf*PhRHD1BogXGG}PQ81*O^6*IZWMeR0TvL4;)zp6T{QNZB&)H32kqSpd8vD#XX) zXF!xw>sv|+{0)eC*7$Fmog_6q$NWwY`XGgvSRNQ68S1DM6482XJu7&P9hZoINh{%U z()t}$Xo>ebAU9$@)%{9%W2!<&_qaWO^ue=xOLwo|ZElh`V ze9}j4GI7U7Iel#{r3n36P0?6_nxZ4c_+>#`iCwFwR%9(Mqq}Fa)0FD5RQsn?mFsj; zEsW$rjo6KWQ-=BFdl&U#Mz#(#gfK%SYZbUp!T1ohg7-E@qx7Y_ZD@7{<&1+*PZc!N zjd4=^S`D$c-V;Va^Bj13s(!dI{m=n^Zq%9p?9`!8Zn8L$;QB+~j+%Dn1At1;9K9Pv zGqemxyPt(19~cx6D*ORXOwFoo@L@1@m>W3R=Y+gS`n-I7pTnauKIG&v942N#YNRkf@mOL7rsemYgt>}5Agbwm6NfR zai)o%|Je8)sM7WX(`fSq?T!NY}6bEE5OgM z;O%HGd1zmJOfIbnYCkw}d76q`&ugqjne&Fe3!}6%hOo3QL93F?qt`;!rr)NZz-$=c z%0sInLoRidN$kzX4_~KJVs+N=E#|EvL|1OtOG^TT0g$Ha{1bNy3HJOc3QB1zN=8k+%Qg|S8D0R?yNRe&X_@@ygDI$Xq zqp8*K3X>4y9tGnR1xoa1D+CI_ruU&oL*nRrZjCn)<)%tdETXOb&J7tb7aUI*BA}00 zYw?Leh&rnz-yYFOqR%0mu+pkQ?h)l#ONVmNSmh`aJDo;yl26igtbmjRKFN8{gbr4p}{rIZ6r|EIl8{b7mrS^cImXRX*~x7c#^O3fWHCO5MLyr z?_*^R;W1kd42qx%sCq0E>)gjzle-TbXf~CD%_3;TY(WD_mE%mEN;KBvb(iC*TV*&q z&0N3dLrY4~l?UE11UWfR2sq+MWJ2@`7Q-d@ZU*y8wyM*kiLa5t6eUe@(!XP-@P%mM z#Y&5aYImz>%6KB@n0(z~(LQ&M#x;D|#?RUpm)$U3=2&l#g~c&+WO4;EN?`w)$hHlE z0nKZd!bM2dLV!-5#g%F!#A|&m5gFy%?Oo)SJL;A7c5S}^^ceWnF}j7>6Og-0_8UR_ zO?Y3bKZx!I;?EFd@ozzp;zz_K=wfPW;wWurCgS=bD*uPP{2Pqgm92hPi#$S7jq_Is z>%|0Le+8aF68a(-^(hJ^D8|i`9zZZr_qrOiO1T!Hz9soioByFL-P~YiS@|!zNx5q8 z&oZ4R+L@gEUS6JXyQm8>VHcR1f1!zf;K=GesJfAw>|(arQHK!)9Z-`ls8QK#vjDrc zD6^Ki$))|!8r`i1d6E0$2Vr}z)n3N50@$FMZl0_jp)`mQeGL2;Y0Y7Y@SSDX-Z~sx z4oOeIifZLxff8~wp~pB{2R=Q-e7rJ?+v}LoTV05;Is3chJpX z5z7}0aOeU_Uy>BP%C-sA{ZSJ@jv+zdav)K1k{GvB91)LVK0YOpoQ@sE^k>w=e9@1W zF-#w^kGIvYxsIstW$D6SbLjLmGwF7(o;~pzLr4{w!m#5YyqvyxAo;+)K5I)oj%<~I z0TSsb%Fk!^NEwD=-7PtiJqHj*jms=xHw~d3v<<_`(sz~C`k8(~m!5}FsEos{f}{5E zk&o0!6-5UtGcCFensdBWH!!@*O2_HFJ1N5T!Wt#Y57r-y9G*Ju8j++a*HZEE|@vVVaI)Mo` z6sY=s`N@NQEOKvcc%tcrLi;Lqz4D+(w_;(|L{})4kaseDUUEaZ-TFy!frr%P#Ag1SmKft zDB*^=@W;O@ZQVX(W77K$#B2W4#^(z$%yVnC;tG9)<$SmMwejZtY%Zq8bwBS%@C|TV zChqGOBy<&nB$Cf-)@`Wc*voTq&}!LY(OW%=t~%t)PR-j%H}?Zpy5F|Wn;==WBh0)h z618Jd4=L@|;1cy_st9{NaQ9(}dyq@FHvpK!+YE%wke=zXm|J zthv8DhW_#BgS(fBW=&{I@*g_d+%%qV>y6gd{*AaHl@1bzF zh|EUJ-Ta#2`N5*sQTVfytPq~&^*$ebd`5*-z%%I9l~!EkPPf5Ib2+9^Cn2Fy3|GQ> z1F4tZg6c@f>NNl4(l_xmKHV9WD|WsM6`X4I5M~X7N-crjKFVMS9?v~Hmn3(ohA~sX ziW#|=iB!9uG81dH+kL=`;uhnMdb1pQ9ql+;dkT=lC-zSCsA;0}r0_-K#xnmhry^^% z?O2j86OOS9vc@b*BJ!TY;RBD25i*=t z4BBQ{);Y*6jOb9maYzG#C3e{jW6c35>VNK-s#S!Qt#Y9Gcl5GTP=~jY?KE z3feCq4_E8mY{P{NXaPle2mId1+j53_2Hb>?raxFF__eYvYPhLI_M5R#r%=7t15Yf4 zXcbOOA4Wf|pmxsp$Tjh4N1WY&|7x6_j_}hFGL& zG;t-kdP}JSC^S{XcSK?05LW0T1VHq51Y3qwP4!|_E4C!>SNv{F{2i!rrsxjW7t-+u zM4X9Lon!!k=>TIwX#4$&(;3gc+uLgU#GCIEmA{9#?8Cf+Rf{=v9<7UA2R-UKjlm`PC5sExI{0lycMdHPIKL{u)LhEdZu+?hSfhyGe~{;?SgnvOW5Pbzi8aFfYI!>amC zktIY;u$!i*8i_fiqRyTrMbRCuifYkDkanS>E<*`gOP?_u_6(^8k17(^Z?Zw8mswTD z;zxjVWvlhe(c}+@&ND3cOJ;chd+qfC0g@M_JNA>-OBx~$zt3j}Ra7%!Thrp*edZLEc zZK<#Jze3p*+!nJ?&Bu~(iY{w~F~ODVbC+FB^fq_PGA@MlxUkowx(g&uwD+Vb-kX!N zN|igf0M!k_R+MjrSda_z(ptV#mdg3q4z|v=+oh49Y9k%=t_vbenq=GZ4vX+9W9c+6 z$)katPqenBA+#4Uw{?8DXB7;-CvF#6A=%ViG!31Wnn;ZdU3N?z;E#x9roQEu4^UOk z+2Q-$heDA!^bGz)F(t9X*QnWiyLRLoD_fV8l>#vE@7-Lq*W65bW3SOS_o+`{X;m@y z*N|0so8yFQ>KKMocH(qjYQj$@Cx$+65OjTyw7%HP!02UOGrmoTJmfWvm4_zo{hGcT z11veH1uLguXB16HeuUdLx`c9zw`RsZ%HU3tVU`BWhv@DbN+WHE;R@~VV!2AYQ&T!gC>n=nZc(J__`%0 z^IrK0*H4~(H$=RKlAjy{vw(0j1BDoHzHZ9Hh8nV?^b+zuIzZqY1v23WkY66v`b)lm z{9b!v8?yxuKGq&IxIYuwy8oic{+~N%{w!X-(GU5ESAl=Wt3rtF6oiCf67^wF;;?-Y zhiB>yf3uO?wgl-S2Vn5KLK)wdX+QE+g+o%V*O+y`%(Dr-bw42WJ|%!#rP_8b#ZR8$ z*Vo>dp2bEL0t@@omcHK>Qe(&;77|)pgv*-l288!0av`-=S*4|voRr;eAER1i5QFhi zF3pE`Qg0STZ`}xI{*`D@B%i-bK=hFx-Jgg zdEbvzITu6f!#-l{we8RofL^vRcAyD|9Kg(d^vCayLNRO_Mu7R6k9(kWqaF7ZCx-;~ zp4ghDSG2=kV5l=&XL96orPv54DF!X_QjF181O9M89mdh4SN@nPQL^vLRC_8f?GxJ>nE6W1w6l}YTooCE; zg|CNHULT|86>i$Afkdq>eSNVUcd1BaAs%+|s};1FmU}}nry~_R27sy|zDg^q^hQv^ zai)?YM+K)uvV*TdC)NB+xtH-19ZJ$TPB26=M$ysYQ2Hmx&hQ)-lQtm;= z2;i(iaah6Gb6*f6(c;Z8869ZC*lm*^qZ7HN5EmP?&g+=5=WQ9d!g(O6jD&z%zpK5J;M)k@QuaA9K!N`q(yqH)o zb^@0KlEnTL$(eyUvDRPuhf6jzxsf?ozQEd60Jk$E0sR1R^l6@l&TE}_>#^1~`j3*$VY+4>W>ydSR z%+*%1CSQvRz!(MYD5?CG_A$8+JyKOd}GFX`SeDjdR0}esYb9ij+=Nb3) z&y|yxhsRqke~+Jx$~sj8{n7Nt@z2X%_`&Tq903L0NyqWIP4r1~NF$E8wypIWS?gOB z937)n+4Lp`z4lqjH;Ffnp=2!dfTiJIxum%LG7AabgSPY3p<3{tQXR#b@ls@U*b8?6 zG~S&X50sP11*NUnz8&q2NS-t!GNW-=hOpaY2~&;2QuJ+yGNlQ%SV*u!A&MmLBSTfn zYuNqT%|GcCVYeK$C3{6iGBRwHPWkDVgLbbCLogZa=St6mp zQK1b->E-XJOQgbl1i@>r70N~=3;zV@2Klw?ZF1O8BxE>qizP_HAiXX}J*X&$X_#is z5{0NOO&Bc&>!8x;UF!3Lt-t7N^jv-}uAYZXg5(B%vQd9QcJ8k^Y1h-li=xIYhMn~Q zimTCg_)>#JgFvJs^QX$pwKpl*qCh3xDlg!2gGd9KnKDuH#?@04W@-BTJVYc}1b|uE z3BF3i(o%Wj;DqCagowt2(|f%6(40NBU5 zAOJ)3w+p~cQ1N+RLJofhLIR(&P>+BPO&TGD!~pCX>kfy&VrMyp8flLw z@&$=FNRNK?Fzeuo)%;s%(bF)xc$|vR!wc|lw4^Z}G3S3ECE`zA0Ly<7Eq~kW@kg=o zVW^pzIDYJ`GPN-KAEw%WWVY=pf6r`bP$&&c+&ec4%wbwU!a5QW-~<&b41u4%%gwAB zVE!6sZJm*PmEk=IntJ%d44BZZ69pDkvZyiJ&*a$Wx<6g8`_}ov{yN};pS5Y1de)M; zS5Di})+(pt^82ICk&T+FqmH2SyvKOfqq6&P*K{_#w1atUt|1U@9xADVQ1$F68Y_j6 zoi!CRewA{6gD@gL3#;77Cb+rXi>{Nw(*W#4JfqVR+An|pV&{dcW>Hxe7eKQ-@Y#Jw z*j$S@&UD$W=P9PljMrk9p^yHxsH>cu2(b4~CxAx`tEOWCAH`|xu2Irq`H~VpJ0Rc1 z02m9J!d*;Wid#};+|k5ZJHcE$VV8|*3?>ZnukvJ+Jd)^1#&@a9+HuR=yabB7X78rI z0?9V`WnEUyEq3iG?gBnnf%T}RsF`L0-sp$|Uq&||-!rUWY@bf375*TRNkb6o1lvsR z0jMAj%jcFGmYe)u$duR+WYDh2)Ay=(pVB5>|LQu3EXvx4y?cA4Y)8UI(TudMy|cF`$%$6 z`Rli%%=^Qyzr2UOMl3O^v{Y}p72{b^j$5lNXX7LJ=KiEtT}X#M2&YdZteni<+){EB`V|7@ztgZbg^neExLV9~nWTGi9 zVY*GmLlJeSK9T9o=_I+P%QLcZbs`yur}_IKqUkiUGg3+m;YOuIYl}U%uoK=etSOBZ zNg2C>!nBj+b!w((>T~2JLGOej=G>ad_%os`NehYGb@s2R7$2vGenatQnT-7U1Bze& zR2^9TTcG&AHMsv1i&Azo{0MKX5*e&02eno6= zloOwm#=g&j;2?y7@cHA1q}Iy>6_W#pXkK}my6$D{S9bb7zkqcS*)k20-!&gVHc~YE zuKE%8ECkfVv$81&M{f482*{-pC~`-7Khrk2+XZy)3f?D;eoN?nJu6dVtQ32bl%uRI ztqX6p$wjIi@kWd^s3GwT3=P~^z@j-!C%S^A^TqeSfC^|;p!Og;c?#GHU}SVP85Cw{ zlnr*=MYc$fD^l~b=7|t5`^at%`9$}A#bT`ZkP9Lj!KQdy+(l|JS*w`o&c913SR#{e z0`(4@Pw_0qjUCcXV)LKV|8B6H0(bm1O0B!Xj# z@%(9m-ZDL)awR`*HIGxsN-YX!4Nh4<86$np=aRjaBY-hFnmBYD_OW!g$i5~RSe60B z`U&>UH&`*P=q6^e+|(%1CD@>Xvo`d-)0V-5!s1xO3hS6bTOWh8jdlyEHw?+Xz4pOgGg96|o#)2=mloI!V- zvzlZURWn-lYn&2ZS*xcqukSm)uuQO_!0q!14mj>tx+llRI}PTO$;5JuiN|qNJu-+8 zxrifht@JpR5R$y74cLt1U$&0}s)7#(gzY}Nah|m{N_v5z9Q3F!uJ9Dl+QAhs-N(6J?D6A1DH4WY!HP`hExVEV7TxcM_(F z6OHaDSUkqJH@qX3?Ifdx2%X6 zOxsmtoR;Vj+OMfxhe)yra}y3rvhZ+#D~e{Ft7oL6dvsw?wH!$>xBb?WsuQF=X?FER zuR472TVd6zlQ}3Oz}VqzV-Q%li>j1UD!0K63ba)0$?5}-$#vR6ICDQ$*gJwP@mG|P zFN|O|TjA;`?*qC*1j-dSMu8OjCV3W(FAbpz%DLNO?_i0aWLtQW#9^{nA;?RR>7Wn8 zJ-`&FL~xA}#=mbA#!4bM%wSX8!8;dC{%W@lqq*jto+IzieumHA`8Xn>zn!#A7>4@N2MkWL3J$Qh{`=>4~Lr?J7uwqwqLAkD(4)R?hOCwfX$GHuxIt?Bn})# zdU6jeE{q9*$4t3mlW4R_8`OsMlQzfHx+hFpfGJ#ou5a!5f{RNa!ewJ^-zJD3I`suA zlsSZme)1K1S!7KeRovT=3QvXs&51Ej)QbU^p{e**Na6wJQesS_^NaYok%Bdiy`n70 znJozo-*?rwFm!1`KzZq}cb>HRqP^9)_Xv6^tiYY^#ZVIT^^!MkDvp zE|GA$*kaOd7i{t6a`bL6Ffz(IWhF60;OxTdfo#&w`t^^)fs1NxF4`Y|Phapqt7&Zh zMQZrx```bWGpuIw+Zpz?MXy1aP6oEfFs!d@fK&gKZb$<)J&m$NJ}Ieq5V5poZQIjh z%4W-o;`{aO(;z0_5PBEq_N?6agIeY#1bg0g^P)3@Mkza5sKGC*E8RrWp-=5tB6W-HnZ)Fl*Fl{PaGWe%$>s?Aovl1-OL9{F0zD@f~D zXj*GJ4t!!8Xw=G^naiOEQOC>eQ%(c{iP5x_m8Zq}u&blqNmis}5N_9_f^I70uyT5E z0V%<|mMy1{6^8SYfC5Y|Da#(stz_D|NEMfY4UP&~PS-KZyVY^~M?HVsICf0IZGcG= zGOVPxJz*fcGhhlpFO<=0tc)3%_D)38p9p zXF*O+g>(+yvovVRWn~=+#@6Nc!SAHor(+6G|BJV;0IPD@-dE}F?nYX=rMtVkyE~-2 zr8@;Aq)WQHq>)ZRLK+1Ao8vuK^xoq=_n!0n&*R>1eV%XD`X<)Qnt9i|*0}`8_0EasT{ix$X))^M;3=pu)g{N-5Gk`r7KXrGMP$CZ zwwd#omW4b8g+t&{?~pMXUB+Lcq1VFdoWLb)T8YYHuQJP@O3FS{pu+-N{E*Tm9z@zX z1C~>hUk(U6J58q;X}}l-Qz6jx%l|xVaj{+)o*LipQ3cUa76Nx zW5418#kE?WV6L{*nCqBo^s0~G25blxy9B5NqPkT$7P?9!*j+-bGTvwK(-zRdC|+By zyq>UJEFz*N^n(kDc+K4bO^`4_bua;-tqO{Q@WlF3t(Gv$b*wt5YHtuz64!;wDsH{q zzYOxl4Z-$$a%af_C6P{OCJzgpH-!T`3oe%)GTY1&`QJX}M!j3P6BV%wl%I*MOA7 zv5F^I&-&qxqKP5;%0}}vtgG8}xv{r8fBy;;c3A`t0$I_peg%K3R3iTAw-cj~6YUqB zfbb|tKm^nupBVigT)6%0|I+_{7yb|bxAc@ytn`($VCg*JzDYM3c;G8iMR=q!Fv;-A zkD^WW>6S(Xig$4U1SKQ)Hv}bGkr?s#Yf^Wok!1T8`(>}2yG_bhAd7}BD4&?oxK^Er zS<0Q4gI8+G2}KhZ=!kplR@J=mOYkUg{Xg%h&aV1_dJhK7Dbi?%?1+_<#gjS8W4yi5 zEV8hWwcKb&AK=i#cfkjDt*Rl?OchR8-Cgz!V$RY~sH|kBd~Q+bx*U*fG3F&5`_Io`g+5(Xg)>(c?azF`2@mxdsS0pR+Y22K+Q z%Ua4zkeRSfHi)XXy;FUQw{o57E~Ygiqk}bpp0Zw`_SsyrZUKinK)H=1P}YsXRl|ri zM?l#Pnxp1y)!2B@%vTfJ)Xx1akGm7f6k^#5X6J`@#lx#P0H@dR!RdXKPK+XIv%p8&50&s%zBVI?DJv%Vk6Wl)#V^#vbr=d!=SJv zs0=&<;&Yf1ejQNd#EDh=45DQ;D_c9Of0 zMYngWB``7E5{<0Ax{BtcS#Nymp|Nu&`(Z{_IpH%2fkCB=`G^|@PM^`lYWX{c)r+tz zC0~W_9bVY%F=pl%P*!>K8C>v|AT)z{bYpm;3I&I`#f|WApvy z>7U28@&I?&D>9*A`U_!8t}nS*SQ1j8^cpLDJ}i!yp!!}G-YI4zb2O=h-EY9iNZ7k4 z-mlk5pVQWMrp^x;&^9F+U(7W(-(Kx4z&)u-GP+!;SEQ-+myKIoSiB-Hk(@lIb}YjV zLhcU89x9M2(6=8fx<1?owH`UL)LLA0MS4abS-Mf1lmA?k%Vw^{yr>Q#17-KIIzJGc|C+J- z6lNS5I^OEdOYTwtwkw+Qb!9pIT>Qk1gjb7-0s6oVbUg{VhHS%z0ZmC9?!-9UPIP`* z-Odh}gF{XZn8WE-cuOgsBpH>;K~@>y?&`WSp!xs6A$ke%};}p*yRbVl5%tehXGrW%*U~qQw;Qe6uWX2|{OwzEIMFuFJ z9jtG8Y{B_uVi&L+#G-JD5&xJ`hmxT#6S*4WdWopF30vU1fet3Y?pPA-F^j>;4Qj?u zD7&>(Avu#-o$glGV)Vuf6EMa2T;bV4Wo+>6bZe|&fna%OE1bLi{BAFIfr3r}_^rFw z_-ulxQk1zh&R?KtykWguMd&dwZ9$Yxr*l{Viv_V^^ei@}ktjB+={bDXM(lLvndepDg4FZa|ub9Ba z>o=FRmt0`z4Pfew|MKLP=P&vMfbiJ=uR(eb@`UAN_yNbn-y?f|W>iph^+2A&xxcFv zC2dkI<7vYO*YhU^P7sd2*oO!EkuHbm-~bdcmQs<#N++{Ddl3 z9YS5Pw3EcSKSQb;W&Yy=(T($suO9KrgktKEBkwT8Ici$y|W<3CT0bX?KT1?U$he@kJMWPmjQ=G zB!xE{c|Va0`po0}y^Y_*LWw!>}|9SnmGh8aXM#fKab^hXLQ`q!1dF>R{w6=#R76Od)p6?e|o7Si~cr@9ey%bf2%In`o0z7dP9i3ta_2y}R%= zf2cnn-}x(_)$4cabGZzM^%~usXS!j2{sI19R!ct^MCs`)=k`9OA}qmvfdwHxE6C}U zX*;Co_*^xl09Zj2fx=3zQ9;sLsoDy!in0DReXC+imNcz?6*akqtsa{aYjk87#ID;L zT7lUNgVgZ?nx&<=f@%f{hIV)@Y7xm|Vz#&Q9&Wh}Z>woCu$b~cj`oimS}8Y{9(<@y zrc>BWh5LWb6sUvh_&v1}TW7Co#ol7%{J;a|H zm;(-ke;@a02M|Q$3v8u)V-@sxf})lYje?5#THPkU(sOzx!NdZ$&NYpJI5r1J4MB-{ zpLAFYV6@oS`C9Qyrfk#wbzpbJHc0+SX*>p2gMKgXhG_)YBN}XcGB^Z5@byjdfTlWe z-O5GY7(+!_45TgSNLFY824CRpGtE$L4Qld_LYQoEn%zTwTvArXG~+U!`&7_Ve*CL4 z#`=@UsGP=yMH-+RXX?9!Zc%N6su4#=s?-)#uIQ=(D)oy5#t@NN6G-O4)5y@vn_%Yx z`(ND0_SytAoc=DNGHtOc^@hs>r=605G!{iW_z+{ z(+tE`?-QpTlrs}@3t^AgE$)Eq7pS}xoLX4{!Gbg*E=9Sjv{m+&6ujfLZ$~>Jn=J<{ zs}0stXEjxm&r}G9q>FQf)jY7#NMWuL*P$cJ64`7^reDeaStz>1Y@*na)PVB`&~sjo zKA+?IpeXIJ=W3`2B;iP4`X0=EPpA8ZZFtDW)q2xOC*W`dSXH zD6CD&${i02=VleO51f>hE0%5MPT^taY;n2UGdjZd;$?!53(Q;rCL3Vm<+0pm`aTp^R zgXzNg^CfIc?-Y2PGi6E(F{Vu@WZ-LC@bnj%cq>7$TPL|OhT-y|U0jzTKy#Nxn;9*y zb*&cral7OW1o zSu5Y_Xtm8{>2R1!g%(eQWP4w-&j(P@m49AcQ(MU!pxpa(1>ZYd&h z*eX11L`Q^S$w!1Kgh?BSW!MFW0 zBcK`MM%Mdys=)I*#bT##O;5GLM#v;k@)Ne8`qZo)#}@MKdX11n9G<$<4QG2;IjipM zq{VGv+9qs~d@Ubld>I0Xba)eF7cFBwwr)lr8h!3081@l++=Fjj{lZYA#yCunc%{ZN4s)NRF>%e6!R((I`S(Qj{fa7rFp?VX~O^kFWB`)weh!< zn<=Chp;FwNz6R<6alUy*@~`S|`^aaNbiewAGlHSS)L$B6uu6a$Xez%~!aB@*S8w1F z-Z|GC1dAcK7(%SWn=GW!K1;OcVb67MZbQ&MjK>* zub7r{2T^`uk6B~n^L>#)Z=@;`i<~_WRwD<9k2>V0FI$~gA;l4t(b+*QTrq^ZI-_%j zutP<4!yf(d3xuZ!)v1GNv&!J_#^+)A(iBP83c*v%+b`^Vip+}a$N%D=Upqq5&#*Cp z-%LNVMY5j@{9Ir;M|wm>nF4#JZ~d~Ye-5qvZf(6j0KOdu;XR8loPdqYkjHFVgY*zI zddo8Q-Q}y*KyK_7w2PyiH{iXtuWb-H0G^BeBp5W;2|hFQ<&dQIM3g>TFVUq2@aSs; zDxD?i)vg467v}9S1kTJ<+;%90_kB&9hFwl(A2X$bmRtui+>MvPW{ni_dYTrlyN&Q` zZK;QA$rYwIPz6fi_*Ut1)9OInH_mM^R}@vhTej+usICmM>e2I}=|nvrEX78s&5D$K z8xmnoMx!s@n)c$LP5188y0L$6hLOc+#q-ua#P?mJiE|>_hD2WJxgDwCbnoyD`SP(H z#yP!E`SlqI)JB2_#`vce*DQ3>O6y}c7Y9wsbMVVZab{%TqCR(XH)70;Kh=Pl6oEUM<>w?L?12`sZYR>^Z1x!zw9Xdv)y&CJoLeA4knD;NMRCD1-bRe9O^3P0 z|FkV^av{3GEhwnoWqxeiNC?v_@=_0@*l^?nQOVv_|A)a=Kj>pu<~1VOfw$nt4C$5! zDE4=s$E(&}te1pOCJk)EEcRHrbM&k}FvCX$5)KlmJF=&&R4ulE zg>prY3h7}0lMmlkNb78MN*lChz`rZCr#V4#E<&>@snMr_gl;7C8qtmm0!a()y3mUp z{Q4E|;c$l{I}9fe03>du{MEVY-vej>_=}8YfUn*+FROt+}pA7NZD&3`#aCWGYt>g9k-fqJ{m zI5#}rd0Mjlh{wrr!+unzb}NudFQ(szicvv+7pDHyn{;WyMYz{B0*fY+Se*gJzO{5d zN}L~BZm0L&H}}BRn>fAh6`$tOtD=sd8!I+lOE7lOP!Q_Luo$C<>7mm?vux+*Ju0Vk z+)ZW##o*SG;JF0uhefAet|bz|f30uATNa(H{j}sD}Og#fQaKjYaJoW+ctq^miRW6T6|vU)-V9 z@4X1P`s~A6Xeot~@2`pjESMA$O{Hf!~9aRezm0uji55ov#Nz{yE#HHIv5jbH@r)3ut@To)Ti#CyN+C~{}$KDb?hKGVS z)htqH4XjICrhl!05ICyeYFH(HLgy-l^ui$ZO_R^6B3|62v^Ii=8NV_~r+}zC;UbbP zK1KFojjwJAGI_&fC@F%$lQh$z-Fp_El&#baiqEX3LT)Cz@VS{y zR#Fq906wT#FNtNF8G8ONm_2SmM4=)vBcA-{w+L3)tJ4SvIC@UTuA5M(U^dU{Ujv^% z`8*)l0+md(OfP5{GDTFP^UnRF0E-u_=}?@pPory0PNu{0MC)&-nN zngD(Q>nBR@x{jE^u{5gvt7u&vW?jj?@=Ifg z$L-uPT-9{ z?|b7LUAG4|F^)O`O)DKmjp^T(j{o}oW-pAit+Xiydu6^~v^B6Oa?r*n0DmFCGF9{*^NiThbtBC{E^(t?bMox<=#7g`>ZSR6p9Xq6zVi5RTlr77ZJX-->$dmZ zpV+4un~=I*Un0@=TgbC{!6SIhBoinriUne|1QTM&uFE-O>}dFHo@~{ROVdbR0F(Bs zk(#D+%AF1=ZM|Go+hnlvAf^t0ES3MrQXituLx=$!=o$+VGtH)EtsnRmIzcj}BGQBR zxD!IG%zQ8V^g`)~{8$zL^HbdOOR7`4iGYbi_}!QItaJNagM@Ry{n3Ynq5)cJTaDqI zW#L9%zrj-d#<7G805fOfmxr4_FcwKCJdvh3*sa9q3v?{bLHoG5w zoEsl+q*{TD-;%?2Yib_@LM|Gr?}KZuy6W=Y#EAeMM_R^v@-+}CBWEnhCq^d$d_6S( zG_fzBD48#*FTO8{fX;uG}*zz0cig^_Je(cS^TL$oz{L^Vh{H$R3PkLvgDWf(WMiXciCTJ zEqO$MC?mKmG~TFS5Q+~C6t76+&7wJf4B%w5mfZ-@RcK2?j}G&~q|>L=thuF*D1z;H zSGMaadg(bBmYWvti>J)Jxn&{6LV`59cu^-HTrcbeY68d);YL8B-(Y3X1DL(>^J0uh%?i%?O#78+QK#mXf7I)D(; zp*2uTqim-r>woQ7dbU|$q(J?Je4pDIYF^pwls(HaqT^t84D#lEj+~K7^^DyHvA}A? ztj-bo1>e@q@~&J7o}#X?_<}C$C)~jT=KMsO9rObb+T5cIm)`ealm7H2(bHmiEZOCq zsg_3sltr3S+@NKjxvZ8FTJxRn>#ZbKc1N4cygsJ%ImQ$iLkbgr2{ld<)U{tKhCGZr z(^kXNOl=*SOA%ln_>#@lO!B^YG^(iOZ6TUz!G55Xt&rc#hwUz((If`IR6OzhrOnd) z8!lvix*+*}iTOKfw?^?Bze_EMm^mPPZW*E4Y;ceo--`}D7PLJ}Fc?1sUb5CX)z0Q4 zfJ_DD4hioR0HJTkTZy6{(S$R@k1qU7Qui@A-PLF-d2Z>q5W1vJ`9RH?w>Gj!TNxX7 z?c>6$*s~O43IG-+L`JlNS}eYWvb9Kch@}S4rKHWE?8~*`9=ZNfWOJq>s$CT62zv$y zy1=0p6YvA@XPUH!;__th#xCx*DzY(R_LFDC9d00C80x&RmDWDJ8mF%81L+hgy(GE`-&-SA^iQ{DJa7Q4Q(OGDQTlLdf ze`8?M;-09~s4F4TLP^2qY}xOl$bUDDY)`v4U@`3+zp988gS2D3!{uYVGwxoSnOacs z-aq}`VuCY3^<8`^8V2_U2l|_L=|ZS8vBA1Y1Q~D}yo(~)P%IdYzH%5#&NM!Y(DCd% zljtyFU2L6hEjFSbTCMbW3c+(P)^PbbvTuQV&>Q0m#lm!7YMb3ATbM=ZY%i$w?`BO> zyS>tYyf}{5Efice+ry-XMvU10lHDW;fidhKuEdvDgel7(p~MgKDGP!5gUJwPP_|1! zws+UQpilPb`3%+rrxI#&D4x_b?C@l)xoDt8KT|*zHK+P(oCXvs=vxx?{+Tl~Rks+@ z22BqesXL$a+^qh}`s$DxQOaQ*Kncmj5Y2#QuIujhL zjE4}qRT@ADT{W42TIRSL8j%5-j$|CNiF+l0?`&uCxm06OgpJw~)CR)rQ1mJK6?twE zI7tT1ODKewV6u6R&*EYL*kjBvyv*b9^b-w&>bWCgA2I?!2wi%vCUXw4%XM@+kMy?? zx_qBl@M*xtfZ>;bfxm~f;#XVh-{AtE%^nC~CiCVnb0dy#-eRhouSKO(fV3kcm<8~u zQH=ATboDzeS~Mj?G{u=LiFrR4^L&CQ_P$EBixj;uC7{`P3qSyKn3m4*8*7CQ3QFJ% z`}jJ4nLkbksz#6Q@#2li7_yB9XRpW^R z7R9py&9D)O{y;q|_iRB&rX&{*#I7v+SHGd)zZlHy1dC6h4#atIA=_Fcf3^@$sa*A&t%k!Ghag~dE=LLn)%egFusX6lW zl)(>Sk7aeE(6H3cO3XHf-mjs2V^+BrY*-~MCHI{ipJG|u(J4-ixxn)v++GT z1q9@8QYCM5%25Ced?zYA$@5N{hqAG9n(l-aq2%zTGTe26x-C){qfX_Mv9g%`EDlk? z-k7tZy7JF4NYwh#4Tr`Abuy`vn$h}bCc@*4H;fOxI{Kp+liCsII_O01kgpa_w_^JU z=O&Y++u?+Mro%^<*e~oJEUe(pL-rw$^Jqf!E&o1T+3oCetXLSD@)G=43 zIc$2w^IQ#BBgvIk&j1P)6JD?K` zh72-Vkm0%x%KK0U;1hR(hRP|tkf5C`(zUcyyP%5-85@Auo;jL2X+^u;=>T&vEr(kk zq!?N6DS7I;$#eY9p~)9Z(?{rm36?XkO6cKV_oYD5UZnMauA@_w-w$fNZr^J%)RyZALV z8Trrwoq@EaFF*>5qnyh>t=+Od5Z2AVhragku&c#o+gDfCq z-FczRWOgf%8izi5&^a-Jn=2w2!63#M{baN!eANpMXG;9E$T;vb>)Q{7>Z2{%=yJuC zZxbD)8P|H!JnYb9wfxsh+?2%00_hA#cPRr00lQPDrlRcaMmI}Ws{rOm=L`I&#~ro0 zE=OtCF}eaDf*tLUaL!gGKWI8_gUlZhcbk6Yl#P6%n0{HS`Etx<_uA;Pr955opyz19 zU_;|T5!QN|J^6%sNbz-R?B=^o2qS{q}r2{Gn#a@$i{l zVg-fTPQwK|!LctQN6O3Hl67PDU-h{@Ne8)`hvQx2co=8D87vk&XR#30g9JL|&NYw5 zt#&H_!-~M044oV@!A;}n=p#S?QptaT^un}7;DqcHCLrxOCha<8_|Xww^*Z73$w^O# zb)Q$zZf4BQC-j-9o!q49GCd#XA7(zJzXnNs}P^t#k$1CFd@{4c+H7T zB7jSMNRZjbFr%^~_?pK+cDTm}FQds}L;^UTI=O(tim$u_{{4%N{Yn-Ldm3b03OYyR ztu#Ny8QjC}_4zGr=00HeN(eZx{bLZU$zR;P{<%QVZ;Na5H&IM6;o z?%a{INy{y>pB5zySm-1L$PpcsiUMw(CeVK|E@HEd<_`0a5*u3|=&UP!v5t93r^G@R_V45_bZj_j#fp z3SM192bX2-JLWsy^l1_&f-mH6CJrOB?L1DL2<~CSW3+GWWq^9XCG_~XM)PRj)Op8E zR;(n=q%u5Z*1--E`Q*(gI2-AVsMAL5V_^IQR-84isSKl){D0WYY9k0zK$B>vn8pA9r6gI%=9IyB9F^PDC=O-ko>CWV~DxwSU~~VnPsq%E3S#8e ztnaz>wqDv#9%u(Dn&<7)_CvIX`DKXDSTO)t z4h%c)SpEPD69&dfUvkp2N*}ZX6B>x%P7PELCBL;cMZIrrt=v8uk4kU0VnW}qHoKVZ zTXpptKG868*x4HJI?jO49~%_yzi3bZCucw71;4w)zi-mbtq}p6bfDLQd2o9-ils^c zYR=W?eic0;wI(l+EAU0lbCRuuXPxFqnt*EW#a@~+UO(^=H$i!VKNo^Y-5*-w08m!B zZ!caQpA0%bfm(q!|3)U$xN&!W;I3<}F12E6v)O1sP9tGh6HuuUv|vT;f>!I|o^j~E zRW%hWYhylVB+s5YF?e7--G*)^9E8TSOa8z-EZL-3^&2;1fd$3P`a}^_@9V{P0f*Z- z+91=R3XaZ`qmI*J1ZJWwRRD6v0Xj!wG*9trkj}mA+x;Of7~8;OkBV4zCcFFr_1tLc zL<~|WUNbAG0eL0de02jAGF-QyAg?w*PMGFF{+BD+@_Jkw*>&4z>0|q=F)ztAo{0vI zYuK`>GupWmXWX+bkBdSt5M&#Gli1zfnleWMHA~CK$__>_7Bt>Vw)Ug^VMEf$DV1Is3j+(+`GH(su zVpI^}J#G>OqhzwXS~cy}^*u2jdK&n9Ofel8259RE{@3PjURsf6ucA6ys_3s47Qa&` zPE1<08dw3f{l>%qqpsxZLzD7M)2&-cpWjVWx^llZ_(qH-ysRsNlgVFSLI<^j{o_e&%3_uQENYY6xsc>)RQ z_6q{Yz4v5hYdtTTSse*r>Uc~)BNLLZDh2VRkVY6UPJ}S*(!GC|FjI-BYEH}+@e*cq z=!hp1aR3_cRe1+Ap3knTs4R_Ck?}meSM<5b#Xegrm-~p>{q;qE=94X10+G#yf*tU; zB*QvQ7b5iwk#F4RjS7*y{R`gl84LSIevwd~yG~xFceYAtDgbxOFf2RqU-)Pwf30X( zzAr-io~$#$OyRxEb;7>?!00P*wA!vnI?eX2*0qYij|Xail?B^g4e)vz$AD~okiZ@k|2YVeLhif9Lcv{b6AmW>KjI3e=Xr*nF2L4z(_ zVb7LUEH~MhOzY;n@?$#VU360D%D~t=CY4yPDA?Wy)Sb<8q_uT><=%3|v+5gHCUv>{ zgVAzm)7Oh7L83FjY^P_C%}3UJ5=pFp>b|QUmzc5fe1?}L(pPw$z$~odeYHC@wIEfz zIZ!2^TE|m=5NqvxhHE1#oe{h5Z@2NXHnpcK%|x1=3?ZE5FC!0@$7nmQir4#ZK00Y$i;ixto28xh^Dx7} zD7U)|S8yRXdE#Cg@2urfegTl}WHWw2jSeg=oya|c|feo#~+q9 zZmMInwyx5~sjoRXIKd%BsiL>neI4meUu^05jQCPtb`-jGbd@vQ0guD8S21?YP z1J0jiHono>6Xb{8N4Mq*Pa9x&zX<)S#h3@M82_mYv7hd)08#M9 z)cV$zmj59?riSZ}w^mYrgS?0Psz>{r0WQc+I%uBNk8kK4YIop(=?%!!*-zn%b16tG z43U{g>dO1CTb$jeUX)33C@8@Yi?WJ7T(OyEW@ zg;BAmiR4nI=vNJ05Sbx1+*yS*z5sh@*7WVK@DJA57V!DL$NBkkPWW$nO~AF> zl#;mp0yBKeo^lo@UMxnO!lcG0`ZQT2_u?WVLy7#NDENjP__!xfuW}f1&+42ZVo?Rc zDo@xI&>+G-TDN-g-AP9>;BRQ#4HK?F>g9lpQ{u0u303<+z zpbRQnoBms+3sJ7d zTnx(W_2PrNEMtrcFG~X}nKyyV=2kohy$UTwzOFr&#}(FGj;m0eKa?aS2r9D$VINbh zppj|@{Q%KBKldYFwgyX?ExapIZfwVuDZYM5qs~}+%Hbc#qc*L{e~h&EE}IKuC3@Z zhYDO83D~aUtCE8ppzYDEaWboXv;g&n8MgpQABow zoY%Y5+_8@Ox!OtB#r$4#dn0buiZa^5)Wy8M<&y0lmm9UPm=&Qw zEMW?{0dTw4n!6`EnG9n*#Lmk8UEzJYyVEjIBgb0V)4fLh4oL&t8jBQt^W}!m3|=(j z{PmhM;x7eZ)vT!_w=9zJ7BA+#pGsocT=d0AA}=hM)vFmeM+t88zW)f-YPQq}^d-5h z$dAD0Gk*K0elG4=uqrpFWh$P!n0(@AkK5%QL`J z&g(hGASAF=Ha|JPOuGQii1J=cpn6Wsg%da)AI&U1js(pyFHMQ%mu41W?O%qqVS3rnAm;Ctmn*YS=q50G5!Sr9L{tp2U{^GBI6+a76|6heDd`m|Cjp&S6<~OPs z;(z=nv4pkpH{Y~WUh;un$#WskF&0#Az&IO3&F%^8WyjMH$me+qp|5MBQ}Athv8w79 z=9~JKUR|o9fDyxfed2|@R*K^j{e&Q<^I+(GI*YYa@7?w16SOB6w&E)d!*Mb#@y9Wc zVR3MWhHg0#!j)sHgKYstl88~=%!4Jzy6B3+p5{wCc{hyd^w}IhP5i0A@XsiFzobLU zi+*a~Q0b=Ok<>XuJK)MBI?}n^W;VzP&vhy52&thd`9N{a@8c#Vqq9wma(6~p!kn~V z4{QR-d3SI3Gyx=`IOW;s7I)bbV-R0ee3|vruhBxyx1G(rr)C#A)iYr^WE{`dNU-Ln zg_?winmmmcdq6ZSvLnT@{WvB9+QQhvS6P;k$R=kaC*_(V6w|Erp3W4`*Oj9z;LNKO z=qH=Ai7IZe_>9P4)w~=grN|^G<>wgIuX*b^hKrv2#fu`0uj067`~z!xQ3VZSoO_Q7 zS$b_j8)?m_uiC&VS}9AAD4cd{#SwdKl^r{&cT_zsCZ39xr zn-Dqxl#`o)9oF}4z|TWT&-Fk)u1bnVzkK?Yyo*g&w~V^A>EdAb;Op(l70AjnFld(AzIqpgUA`}N zXXg~BVi<2W-d84wbk_{izsYAFEwz0;IxlB14B*xP_yv#ga zbVV;njpFngW5V!of!0cux62PNF2iUfdvgL01pL%()@Vl&N|9b-Z5T{juC9+;^jghA zK6^VyhH%_&>y<7#CDGw0&Y12@M9%p}k;EN+?|1TU6s zvb@iIj?!ach5U6X^}w2tFLqob>_pCN*FWiJ=9sS|Ep)8>cEIL@&m;f`=!9Ls=Z`x< z;(zUge~BUg#{_&%ZeY`$91A7&wVvtmko;DK3 z*+hCe(KEQs*{Z8XFF&TaP~i7=`?H4BR;5$6j{28EEG$~Qt9Xb7yKX4ur}`%9+o>9( z_QmPiT4<^Rpcw2I$Wi_5fg!i*Cu#3A%yz)(r;DZ96d73H6HP%Ppx5t16|?C5IiCgc zldM{#sK#u8w8JNVOkc3USxYt;lX$yfXWk@ai<5y;gc68KOD|Byqd-5dLSZKkN+lTd ze3Jen7WDXz)^v07hcQHcI`-;30$(Cs#w^n3U zm3BoO3Nwm7FEBA(Gs%t=iiyZY2N#>)fCrYfiWUqSc?q&Yp3?Q?tL;~Wo)B}=q6P>e z=Q{c?bBMl2Bh|){KPX>olR+l%`gfJbTuc@kz;gZ)2o#da@hdvK%+hIdtxl?h? zRB5M1bpFUp9cb{GyhbA~>f%O5m<70E%82OBMFzOG3+6Lky?T0(&QFe4VtsMXN1-WfLYeq|gA zLjkAB^Fc%@!clP&Sw7lQ1)$q(f0GbX;pd@!T*P?M>N{7{#cyCvDNJFpNmC0Z-%_;D zo@1m}z_BW|L)d*pIqeFhe2rVAgYQ)A+kS!D%Q=@6)ut-&lr}a!39VlX@b^bw7am&{ zF1QuO?8u4m-a>b{<`OM8Hcx{a2sVMVJ5F}je&kS3f#s(31a8m5dAV3-w`AVRPRDj2 zFh3Ft;9SQxKWjMPs2H4u-S>*aEwCb|SY55UoF^FDglOEWb{oalIC07Np6t2?n0;sH z$ub*_F{ZDDLKYcY@Sj5+Mql}VX!0AE!|fOhL-ez_2C?^^9OG$E5r1FSAOPk0l!hl? znAH!0^OR+s4Ck53krkdVFSmpYh~!4ZC*Fsw*EuG{Pk6)*ulmKk_ORS&CQUvdExr8_;m@qxF%S=kzp3GD(gCQX+dt& zoW=F-Z;jK&G^25Y$5KMk5KP()S=NiflcfnadBb%GA{7e2a*{)-Xn*;17G7B)Ohi|F&?qElnGI` zFrlJe$>!K|J_ZFLtcY3bSzqPKY+`zV z<$bu~_+#rU{dacTKe|h%Nebu%eA@7y2&)J*HjHx!uEZX`5d%gg!qk>#F@~vW%8aeJAKNq|)V-83>Sd;eRypY*W) zF=9Xmss7eMPoE(_L4E=b4*ul#T?*j8e=87A06xPH<)0@)cLNW7`{ScRjO8l8fNB{5 z&m;fv7#HAQ|9n)ES4vb!P+oyXQt0Ozs;k!mEdfYwEvhF^;D4yW4^ZzvYmfk>qnDBw z{Q2pJ2Yy%mN5yFnzIiskdIIVPd3yhN;vf0rfAt{h4-cmQ_~0Yt_^;}~{GpEZKdj>+ zdHt{IA^f2pYQ#U|(EX}D>L2R!{!{fmg026m>K8v$z4+f&{ouU)s(O|ms^>!bGcEB* z^M~pIA4aoZ3Ss|2NZ$W0#EJfwayWmG0}Gg3|JhIfw=V;b$;OB=Qr>uW~sC+Nt zfLZoe+U;Mq{Q!sF32>)wX!re^`FGUy&ssfb@w;u}`>qn;S3S;O)9M?H=4W}2b8qYX zAddp~?~wOX7Pp^Rd4AUBabn_!5V!B;jNtFk<~KI^?;Jt@HW~5HIz7(9`lC)pfMB4% zGETnr$WJZwr*wLp*V5p7BLRNFJpVg%`c*r9+d}=^N{=%GKIGHv*mkn1}u>OH?Q;WJNq#`{{s~J zd&z(K*EIQNJAUhIz`^i;%8v1K3q7VTf4GbMUg-G$4!!>4Z2hC(AZF9!G}F8bHr?T^>>KRM4HGgtmN_lp46+J9wWJ{k^xw7mU;DE8;(dQ1uU zqfW$fe@&-9Zm#cE;NMT1hhF=A6U6iIkAD_z#lNQ0zw-tjQ%>moQ_{na(Z503PjPqu z!Y%Q0e>{%=|8Z(Q1uS5HeT)FC#h)X+_*t>X;nhD5lxN0&yJ9~r?tf%19y;mwf%2mR zzzHz7|2zly7N`C53q5}LA*}m*asStc0S*6eg1moKCBR-iDr0}P%Aa5|{~F@`Smpz2 zvVq*ePs35hQz}>{b}ZWHyVF5 z8Xkv4{kYjvwEJu7d^4{mK?{|=4*W&Qt?3(;d>`H#MDnd|?F zUVo~!9;3e%ei%-$o`2^^{to^6c|bqL(mtTfzn6P}27kr){&GP7`@!=VfA`}`z~J-O zl=(KC|8Ih;8%FS|JF~B!GMqZ9lOoQGj*V8R0J@aLZ;0q{zY5sgxwLyvr+yC d7XVprr&7@oFw0rlKz3LI;d|hCaNl$g4*>LGcNYKv literal 0 HcmV?d00001 diff --git a/skywalking/agent/activations/apm-toolkit-logback-1.x-activation-9.2.0.jar b/skywalking/agent/activations/apm-toolkit-logback-1.x-activation-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..ac90705b6772291f1b938d40dc7339e9e23a974e GIT binary patch literal 51489 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 literal 0 HcmV?d00001 diff --git a/skywalking/agent/activations/apm-toolkit-meter-activation-9.2.0.jar b/skywalking/agent/activations/apm-toolkit-meter-activation-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..aefab9f941c1f03afb3b3bda625de906d6fc2091 GIT binary patch literal 28085 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

    W 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

    tlUQ!~E(Kv@pba@WjmNcA1#CzjrSZ41uELe8 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 literal 0 HcmV?d00001 diff --git a/skywalking/agent/optional-plugins/apm-spring-webflux-5.x-plugin-9.2.0.jar b/skywalking/agent/optional-plugins/apm-spring-webflux-5.x-plugin-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..733277bfe18967ca12f3d4a165a2d50837a3382a GIT binary patch literal 17874 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 L0Kix7@4x*&<oaS=6x6d02n|< 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 Gr~d;2p`=X! literal 0 HcmV?d00001 diff --git a/skywalking/agent/optional-plugins/apm-trace-ignore-plugin-9.2.0.jar b/skywalking/agent/optional-plugins/apm-trace-ignore-plugin-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..b20b690577f6ae580001b67b160b4437a54ea192 GIT binary patch literal 17834 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 literal 0 HcmV?d00001 diff --git a/skywalking/agent/optional-reporter-plugins/kafka-reporter-plugin-9.2.0.jar b/skywalking/agent/optional-reporter-plugins/kafka-reporter-plugin-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..60949ebd98eb48de844a0f06cee4be94e4f99eea GIT binary patch literal 3566533 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ⅅ`Bf5nQeKAc=Csj@Am*yhc37A2Y61O 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�Ysv-GTP#!8s*02bXq7zIwaN8) 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

    uzDJkD-lIr`RX>%Vx3h17TKgzpT-e(&ac`YrR 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�%3IYOt+$9 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

    U{@7Uv-JIwZ?m@e#1xjH!3c(5+SJ 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

    Eb2pIh^gnX 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≠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

    Erc)>zM0Y;I{ZfB&*jHR&kl#N<1iSwP`sbbyMxV zZZ@(gEOWL0xxnQ@$Bfzgu#VF(o@!~?=Q_S6Ug=e_?t!?{%TdsB;*#G{-`fVaxQp(V zxF<4`>?u6-#|Cas55aA=aIv*LA;(hR!~~TEfF=#ZDga2khQRjeVJ;jXe8t)Wu;9vL zf=M>poL3jHsB(a*D|mrQDrb}{Zl2Lp1%Z;NQ^d@Labouc%$VTIz0%{e#$yJ_nKDM9 zA7)Rk%of_ED9IaYy`@k2t#zz}EWEvqUydMI(&IRQ%%)7TqcKDFic#w)D|C}siAo}{ zPUOb86N)>NGaPAbbrTP{{3KEl4aOrT#cPAXn9?0Yy%ko4apAjx0{qEb(Wy) zSpLm37B#EB>v~V{xbf8}OuK)yjc3bZsi2q>Sb}Eq?hq^4t~{RL}&K5lvpC{ANBd6*MXpSA4=FniPPh`OSZJ3Saot-G2%ENi2di zD~cs3GXpR!>>d)qLM2>lCLUs%%q#uW0nD;LM#i#1QEWFwN5M@(+_%l4ekV$qKw ztJujzFEEOJJ+Z!pTJyrX{Q?zVar zRD8e`@1O)3ZKTMw%*b@7_Z^mo5l2-g9*b1s#ySM3KG8Elo1uOZ8onm;tf7#egj8hB zm)}zMq^{skbbX7+K9ggKc(9S;ttliO4c|)+QhP}ecs`BK zxv0oBR-Bx@ z74~<_y$o%-!FJbG!SwLr`{C7rkCiwWBDG6XEf=(wK-7UAr)MqWTh>g)_JMjo5a+L& z9F39jU4KF^(ke)-l8it$(qgFEG@QsNbSdYYT1k+sq-B&`7ymA%aNp6d;iYID4>}9| zrU?yBoymKSPwJt8KtSmFG{+CN>M@Vmi8(_wZr`}=$yjKTsfz(QSZ*bU#8jRW=OLdi z#$vVUc#R?SmA#O)yMMTFD{~9AEeU8KaMq1C=-P)sILTBmX_5jaIc-<`zD)hU`i3k~*m+}}PY99}O4i


    HiqJ^oPCShdqe}Lv6xQj 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�&&1ejxI{_sEdm8@03>LRbq%q$4hhqWKcSgYegX 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⩔-`>0{C7y**YAe9PvXa!U()@&8KFe|3SA-Fwsoj1cYn(0FRU!3>q z?db~boFbxh+5sw&AtrsOSbd0vT2{Emy>D8)Z{*3}`7)LIiImm;M%kNxb z+$FmV(3}yh&A8;0VOsOD6}VtX&P)(osapqXk8lDZ1zsW@5UY9x$P$qvnn*|UZLhD z);f8ZYb$hT1S)Dc{KZX4NNa%#zfekb2PAd@YQ_#6@ugss1&*O6iW1OS5n6Y;I5oR& z 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%0AJ7PX?$9R69!qPt6 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

    ?{lZ;K0!I3E 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

  • tYo-Upw2ZewjiprEK|s3eZ?S*ZdtlHXuC$KYD^kRq_{(1c5+MnbRY%OO75Qe=8*OD_(jVpKM1647DELw zX9EI(17BbnZj{lzHXnN3LiNG&p~GR1IRBIM$oQB)jD9h&lptvFbhVocoqV@{V;;0v z$*5YOYTkp^E?2hbS82-tPbDtT8oG9Wg^boGXTdlqe8t4Yg0|iFV2?&K&=--I-mAf+ znhzvxgUpPVhdvefM92(IbV0lq-C1Z~gpNi&2J=mKH6^G~y1u(UADs4Xvj&Zs)~A$^ z(n)|%Nq`kgTiX#8voY0d!)&Y%^t2f*r7dB1)VaQm3=z;?>_Tvz;c6y$snXiprnKG; zowd^3+a`_nMnrfvm@NVGTy%NJBws{+Mbi`TOg>QX5+E(mkfh3_XxX!@@!mR@A z$?DGXtou*W9QoKMud`);VC%AAIDH{ZW4u(UTNVjY&>V4AzH-;*Ln-&L4bsra)d)Cfh@S5 zXezA2+QZG1&DvrGQm={09HE&jyS3*e-pDL)^X<1!UqpWS#DyEL+O9XYHvqxP3aFmD zW~0L=B0o{+xb_?4DbuzmJCHAe+I8{Ki^Ba!vXjl)J-k5$3g;WoO9%~$BvW?6xF7ep zs*>A46^eR6OQ9&&mzcdb=rI%^hoX=W&mze8HmP9CF(C@jy|dZ^i0X!|py zhHiiqZ3>3ENTJo(a&KO!%!sYS(ZA?7&Gpb-&u=p>-G!5olOx8EA>EqO zLpk(HXzEIClDBzbTq9&p{#>v!If5Apf*P;KvQUV(Pv)-yoqM}KPf&fZSlIOWef(jq z8P@+^JEwjg1l}@nCyEi9S1O2ql<&a(m_MUx%!(Ei2I0%!S5q-3UmuR+p9zyY9JP7J zSo%m5$~Te8qKHlNGjg+A`p{SOcTspc=lmJJKuRew3N^04r3$iVG|-z%2WOa_$X6x7 zP(EN(iDSzO=V-9gF?Wm-`PpY5mSuB!s>XXjhlIzWL=W{6L+Lr3@Q zB_DPjI@?*92W&TN{A{i5lYKjP5Pnej}T4bG7ELnJu}li*uG`0?5I^| z%S1?esj7>ZVZv%}1M`1a5TR@4z2e35sMjjN3gcNdi|A3K%qG1R^xPfmsE6*EW0VDg z?lQf!yjXepc7z^AWHNHK&;%dMuYV@`h>*|xoQ&iV7Zr6V6#}c-hvOK??r%kr@;W3* zxe{8z_?n6@Gr!p53+flp!u>0%d&oCRJgR#r)$Y{2$rPf(%?~$q7~d3ngtw35m?n4) z6~>%8vX99!3X&)(oyfW5?O-}+GhV!7+MXJ^Y9V^DE?9w;E@<+8Zt%$Rw5gP-IwFD= zdYcz;^zP_CaG+Z17Z*^k-bgOVBSG1u6)A`_;+7Sb(rrp0meo=)^yR1ahhBJiT~Dk~ z8V1$uO{B%VtH@z{j9K&*we=3KvP6nU#k+jw%gz?Q^ZR)!!g^@zZTIn@%e-E~}^@dFOb+I9(8 zt@LkTLp`FwA%X0ZBGKVP2jVlN z0^?ccbF6);XMY=z^^HS`9wt6OPrifj;%TZ6hhCZ`<f!+B0>@otl~lFN!zsZWmm`bZH1^0nXs9J8MalU zP^XYL>trRhQxs_Hzfs^t{{({I?9T=wRE-F(4?Z8D z)Yp4;5sP}2&QFtPWUO6heCe~yRg!8j{ZYq+1v>@%@boxRtdW&?sd001v_8%aLx+F$ z047-B($-ESwqCOuC39DW!4c&5k}u#APGcZiC~u2!?HyiStYvj&s#B7|KnR5wMr-?*hYze^QYVnHa{M8IU#o+bi!Ixm* z_edc_Q7b+RhkXz#$HHj`Vw2ReFDWURhP>_rt|c4{)(3i08o zn%xU^;fW?-Y$V~S7;hz=BfTo@)%gs%Gua8;1i2@&8kAdi=t{^*nsUz_Mz;TQ|CFwI zcEpiPmvQUCFBOfi<6HF68=@}?(qkH6eyn^=CJ{(c*Zu`S2>Rmc;}WO6owO+h^6X@)p3&HdNzz7o@iPM@pT!%VbS9POXcX zAyY{h*#W}nAtRrB*Vw@IH}!|N@W5jRY)leiGJfF)eYtVs=J>I;p*J{pMbhX_$*_@> z^&#XxZ@UYO=&Y&g?DfSbiG)e;hY)J!c3~R{6iAuU_8uPjBEY)K41|e9F_CJCc1b%k zs{jj~J{-Km0tvTF(RdV)3nK*Dq}35##sopa(B+lK*Uj?cKU`u+q#E2!b|GDf&Whbt z6#F=s&9p>wa9jE&dz1%hiVfPr+UUi38`m-+$2lwyGU-OBW%ABiwW6Mp9NR+Zo^9n! zc2%3QsRI=IOANFHSSl6fN*6Oty~sCBd4+gNq}j)SKM&<2vJYlJ%%aX4w8<}Bar4T& z2k+x}k*|sztD=$V{nVn`cAIY|qSTOTrqBZGyN3y|ScUkA^z}y2-V_(+Dcnnwfl)!t?MlVT zK`T}eF8{PgC^N2>gey75b|da|#C4VU!37(wX^*|^E(xzgoLK3;@G=a^W0+q1Wv zf$qtuy-;orP@nGh$78i(5mFj&9?G?jdBL}_s?)04QO zRwJB`JPY~00W%tgPn^V%K22&pb|LXbUl+Zhi{qRR*I(0^o7Zqpq5n2SfXWTTgc!<# zw|RL4BlW>SY4&Kqs8UM`K=*DGll;d@Q%mn=ADcR;tNDn_`A~+DnY8Ir+WCFu0B?@+ z{lshz)~u*sFh?rz1r-eyPQM-q5>UoxbLk3USk-_1EoQEdE1g`>P#-GfYU7cOL5{8q zORkF~)A?L4jNpGUKA07{qBu~ie_f{WiKg?hk@oWYIC`bh>1rTwPKHp}WebCOHZm{x zD~rk-evCJwY~=1;US8!EhOT?Acofl`Mxn{5qa7kSKVn2bFkEj^*-mx}ZDO0j5>G-a z))Gej<~aOqS(3|Nc^INdQ^!Q{2d>!FXhlGK!38net0*~m8sxS?cNJZCBp67WFYI}g zsxqW+&(PaWpr^)lDb*Y34Whohy3Q1_J66Iw39g`arGTb|tJ>!yS7)%9Msmm(F4^k3O;|eVe&iE zFCR58X!0Rb@vu!wHLn!t;Zw7Uwm?9{>>{u|2JK-B+JVjak#~E%o)0b^7f@(~2Uke> zs63aX2_}kx3AFM)v0-plA5DSp-=!ysEr454-R*p_7{}xS&jJ4r^=5%5pr6QIo;_$5 zYHVSF@RNMdeh~2*o#DLm?b?>M1%Ce`h+Bb7$`dLSsb;#IY6h#X^>N%Y#FzH8bMd58 z&c27-y5|)2MCuPg-ntL+aILSwG_!Pe3W=BC@^ZzOmya zU}$?VtP{g=Xw|M{EzsoP;x_UF5p}mu<-li);`spoPKM_`-R3mU>^p=t$d|GEXHuMa7tb}Xc*l*PYmOfB2uOFd}=-V zY*@9lqi%%^N!iLs3vPcExVlrhByCq2t%vESexXQk3o8g0k8;RSkuV2I@C0t(HK=p0 zNNRuM2C5?uPy3750MeG}m1Z~v^A#|e0M92@tui1Ja5vlV6+`GUdpnB)x-lvbUHHp) zcvpXrl!L%`v~~?W5U^Vh zH4I<@d?KX#dKT)s|y6&Q-Z%`c8ypn@Ue3ohQTr7<(VtPpxzd0@_)KFe-JSMg}kD03;5L@I~qj_U!djH1zdzC)MW*3UaQH^oqZ8yvvR=81MoO!$Wg*G4!J zFZ^iPpRZBcXSg#M@M}E4Zku{US2(j;m>SlV7}iyQ6TKe;`L7+^(^IW`98C^%qFst^G)oehV*-BY9&HO-5MR^ zG~FTQEYT$w^__j7vi|t>67*O>l$Z_#tB%Ul>(Oh~ASH>mf%3}goW>_q?PbdM407Y6 zz$Um`l0aP(ZrUZN2Hi|Z0>j}KNfK-2sE1@GRM*OqcDafX5J~21wbG-mXc)RmfIV6h zvKY!naf)MO6@XF?lNiLL8wI(%gcI(|Uw!o{20H^SSXj<3DR-DHjVF#Fov!?Dl~6)e z$%gWiT>5cz^Mlg8z4ry;G^-^OlduQrEi{~cHqo|2;;n`RrU9d<+aWPGV^YR}1O`8Q z#%*(5Y1ajs81*5wc^|4%w!sT@X5v5P0I-=s4ii4fB zmFK?v!JHEY$V1+1;aKkG(Zs)ZLmraIq1nb&XxvqOTssm_H$z>B)HXjed#KQzev1PV zoig1Bmr1Zs)I%KeRABHCP!7|S{Rjn2feLwb1KVaAcQnXu|KtSsEgBirl*w-DDFC11 zXY*tzoCe}VrWW~^rf@!c!L4QfuY@_z=w3X;BHfl6iB2221hlHEVa7sKW0Hz`eih)V z_Q+mIrgCYh<~jlAe8Ki+<#DsKA%$P+OdCI$&)xi8R#aBkv};EmW3|K-^}xrMP>l@A z-URi)-IovtMer|=Qka@=F>s0amnSrshiW+{RI!!EoNy|kt7L-qzaQ|5p}0$-_@pP@43+X3;p$J{W%+>1B|;m{+;gK&U2Evd zgju0*82~a_?i|a*uLcv%h*!wS*pX-4y&M=O`a`~Hla@QC&BT;;h6kpcMeP$!-4iZH zEF4851XipQFKl^CFP^Kd*?`7~B0Qbx!{!%Kcx|ZDz-tY?480#x6m- zJV6eQ(1bx0pvD21@`G{O3I4`pQ_^8&DwRu`)tUrPD!a{w)YjHj;i$QmmfnvB z$)}Vx369_|OTt=QM)76~0gz-i2shAbO`+|38`Yav zfEEuhOa2n^>^pU)6b8f zMP|fRYYZt0XUV`It8cD5;MRnU&DCyCBdHGEZ~tEX@XJ!b%ni)s9|$JIq^EWRNR!# z_RYV12)zbcLD#i^_N(9D2VBi@%c!m_c@P)bFf&adTO;YO=3;93^K0bTZ3R;0i) zcKRZobr(#Ehwu#6t>ST6W94-5ol@}BYL#n3xgorh zk>9+Cfr)+}i!ksjXf@k28LQP70S}6(8HxJ-SUWqw)_%T${~@+pAB2q_Qsdq(0cz-p zLd)hspvyj29m#_HVm~Og@j+xqCTckn27Xf$|Da!xWTS6$;2si$^}&3tB-BT=!JQ&f#1sbn)gzj1)!;dv=n4&yx=&xN zjKzTItvj$@Z^wsMzzIzwmIKfiud@0MeJvacgNFvvvV;p8E?;#!cUY=@qkSqj#V2y% zXyh_ThH%?-%xX`efwsGrf`dp31ASCkR3g=%r(FxAWz4EalLp%^p4RI!?#1`rl1Kt} zn*4!OEpzRqBd5yN89X+B7hRM-3YfB#VJMw$HC;!IG zJa^{@ee1+;yD!q?OV>0(*pl>m#|IkQXlRj>f_k9!C$zmLL72>Z>R%7J0Oh0x#1sqZ zz?x3gnR5~fgHp(w;kD9Dt6P@SduQ|-3G=bVK@7+_G9;=xy2+m)7(FJjFwYFyJcY(N z#eI}X0O4eJx&qM?NGf&srKhmhr0)Hs^-kNT>Ic9QAKed_y7<~Ykp!jz8d^0Lq$&$L z=rK#gN-`W<$T988oZDd1N6a*AEH$>Ae&*8)!^3Sym6Zl3om7?aKtX<74ziXb5Ae9H z3p2BY@n{uW+Nk5C^+t(ylY1Ulpq$g(Zw+Zu;|2ro=&}J5n)Veu2a_jh(wXwAOheJH zWSIG)C~Hk3@`lK?lE9BROK8(Ak&umjFi}k>s1Zdf{VvN_{k!_%r6?PgD0=76O7_&Flcz`X^uEu!s?LbRdTQ>!K24!*uZdYw8n!4G! zWEXM$!Acmpip!A4CPq~{0;gcC)xRr$!H$H)AEH1)q?}Oq7aYQJ1V7}trFiWe1?XJK zt`SknB`Xl%OGzN9Bu_q%nN)wGU*@FX-Z(cqc(fBAIsi`gFjVbyG5dAGIwL6xMWlB% zDrFT5t%1@{qubg35QTN}{V@vrAhJHYXt7?Ut+KO_qC6uruVaViVI*1&*_um7mn8lX zkyh_g?M;rEaMA`Kjh%PDd%`e^g(mMhm~P_>xuOCd&K$a?x~%AIALy7(ujfK)x$NR< z-EeF(#fgeN!L5$ix}69rQ^aZ`=7UN4h3m^Q3p3KaH}f_XkwhquT8v-0-WM5^GeG0H z3y6&ds5qwpc*_kC`p!M?jT2MoGdE-txmkQ7XOMk|KDV6Ie)7)!q;uLGx#=4AZOT6N zhWblA=Ht|vrC&BQ)h8e)i62W%nX?de*jIuU@BIeDrK=G<@~4z90+~Zsk-YIQu|65E zUJO%h;9NV_`Y3Cr?{WB*{0G5{wBrNBRUPT)<@k@+Oz)uSu7qs)J!odnt04{bM2#N? z>xX6)*2PB}G>34`G0Ww-3QshB;&aS6lieW5q1h33n?a`|^;mA?(w6DuTgi!6_h+cX zBg~#zCEB4JpL&^jY8P`4@=Sqp&rs>k)M;R{DUY{7ztL|aCi0B;eFSj1J?g_et?^dajjWk|f3CCDd`=U`P z<3sHlbuE*c))npz^tjbrW^*syvy#?FT9f*P^o z4xC31+ebZs{`p)7c}JJp=icb>SbD?w4l%n;c%uHsoZg4t1MRT*h3{hX59USVAMzfG z-ed45;2e@pFzclP9p4A(?w{fj4*ggcIYrc*xfnML7{ z33$+Y(5y{LgR1XIjS(Na8leJ%-J-xfj#udb!#_!A$!eOc`{~>YVpe48Z7ErzP)*5E z<(To@Y&PPzdDf#JF8_W0bc_QpemUfWhvKv-$W-}6B&#^SaEW>d7O$^c9DkK9vg+$F zZIEwD*U7wHdMv{%>41MZ*z{IRzU?x;GxJi;@+|ge{+4UT^UD^Q-j3VEEVyS8?I}*U z!u0_McS-IG62HeV6jCI&8m1nF-f;Et_(S)`k((by$-W+0;gXcMD7%xN^#wCBI@d7& zMk>d&BhqqDoo)Apl@-%AZ}Wv_J9>-2?ic4A!@tLL821)b;Y#IL`S2TVxt+M@T>jNV58 zWub>X^?KL`(pK1e1mL$cUbhSNamQUN`Vl9z@++!vo+VcFqv`;C^3O83Cka9Ydkpdf z!}vzK>W6tcFxnHQuUPtIsf;Jz#2Z;;(k-(L#*@yrH{e3Wbtb};bitP)qH;H>zQ&b7 zJ39@Teg1UZD395Q=PBaCFT)J&JcEOhLGv)}s9_O1CV3)~Z6zlZlo2Jy48J+;)10MT zznL8wHEr3xl^v@+4a8$L+aF~{2#dZf#tn6{C7f=v-$9i5ECPMoQ`MM=L;7Ajakwn`16{<$LV5e2do^;ui)v9F_ z_Zn=`cZ4oftr6xAXBZc6C|8bn4w_-F<}`{zq*W74S=KSfRCZjwrl2og*yA*4`V)#%3Pf9+bUgMV8fJvV6>X_&$^VA$>em@W8+}@*iH(yCAp5_`g zxf&J-an9>#Rd*V>D%Bh%PbJ~c_{2umBQ&Rk@EWmFlPNT^MXVL0L}k22Q8O1%*9J=0 z2KZE9xBWajJ@6E`ergPG5M-{EeD)x0X z?A#7noY~p3PK#!`1+0yDs;h<5hqa7=ei=$vM02_h$x}$*^^SF!?#}|*T9#-jBR8A7 zY3Ok0IhnWhHh1;7>wD~`5(9s}W!&C6Kkp4l)lHjU|9+m7?K9E~_IIN=PxERR`GHZ- zOf?S=R}A4yZ-m|FOA#)W@J?z4@l_Q3n@YQ~UMqxCsO_YH!Kk-mtdygJcsQrt_j(&2 zjy28a!8}tOe~1!&Mk-3+QIQse9~ZfA25XDcurt_ zW+g5i_l`2b<2c^U_{`0+b-a%z+U`AFKC;;yoVF82dZU&$NCp+HoFwx011g~O`r;rv z)$X}WBdxG1e=C6B&X;Q5Q8i9{$C+>cc9t<8bB_6R#6jDp;npUTcPSdDpp*wz`X|LM zY5zlz7V};|UGTRCmdOu&acOgra7AlYa54HbGz|()_llbF+C-R|seLA-KPPJ9Yjc^J zm)fr42534UGy$8uP<$cD>mtTau4b5=14^=G#u-`_y#nBO%)O3xcsl9j`A{vNEzyE| zA06;?h_qpJ9=G7V%jEi~wLDFr!cUxfA3efPtVAX~FL3l!YWL=APe*sxT_#-OC1QIW zg@zr8wFLe`P;W8WglLQD6f8XOft6lu=Cs^oTkwveb_=;}A!$C1uVjlMawHQ4V}0{F z8J9Z}W!=E=k}RptT%CEcJ+eomRWrElsT2XbW9stcxEbd)WR=ZDkr?PmSzoWLSx zg~qv{UB{0AV8lUIN0B#(@lB?QM#+t^n0&+jN7$+OB9*cp833S#<$qc&di}p!EeboC z{#z~n7ohnc;pTsv{{HjBf1uz0FZj)fHl%^d$_n4F>Z7!aSa&tlyjUj1Fw6F5T(*2=>KW*7dI?jddE6VP^#sW}%_qIEHrJFm%Qq$trK z)hkicND22N*+WVeF+ia|^nFqayA{6iRY#8p}hwuFApaj>hcP_Ftp-B>OV zOMyG)#`6fJy%F8%SYBxhj(+;ex;H}h!a;R%Z9}MvtS1brI3Q+V1Ky@2`{O3?9$5_| zfTlTkr9?7DHuK;(?>*>9v$J+uYG#RaDuR55m$QWpEOm|Sz=dWnbj~E-8I4hbw zHO!rz%pV=HYt})`sH)&oEhv}10R2t4*z*2b)1bX|y9Nd%Mm9uc*mxSFcU1((Iwj=v zkHdv8cbsEno)C#L&m&qs0Yg&%jP0=m1z=dnjw500)W4?uA+FKfhYo2e(pdD?YK3D$ zvZ{$m&vaV}3!E_v%aXE;J$n`BIHtxp<=`3W5@KHO!`v?{};(?Wr8C*=Kn`sd%lbiW`F_zS?$w6d#m3XQ39 zTL>25KT2b7ATvxH|EN)a$1xFS{LmVXBXjuB8J5tn-AOY@YNsV9E7X-?X`y%CCJ!?? zj8-blGvFo9Rlk~V04>PikFg=mHPPmRl%2wr*d>x}XV9zGx5X{8976)8sr zJz)8Q1;hzK_aVjtDY5&2tdT2fIi$=Sy$ zy$>)j(8+J9kWBZyAhq)#>Gf9g8p^GwKYC?*pSxS}yd!JMb_s}@P0NXey8Iraw;ZPY z1g5SpoLxGCW)Z=1TtgpHX)#GnWKP1xZvJBKR1xWgiI>R7$rB(sy>kYE-&erupRHqg zc0}c&#W-)$qz-j$Y2FK7I!jZ?X{)WBvdm;vnph*X>x`{ULuGHb?6!>T3#7~>pJy#) zK0a}s5s@nTyu5N+^6Hcv?!+8tKNd?oOdB3+Yh)%j>+Gh9uzn*%&X_gnX_ zEE`tJj&!=;n{$Kg2FBqU@EJA%7NeDCsE>Y5ynHN+>{ z(kiYQxiU$l(BCL?=kUWWMTRJbydY2{%y52bJ_#c!D;G8F1?C%bG017W3c5hh^PaDC z`64Xu9h#TENgqI|GY2n4~SOZ{wx#VbSa66=Qsr^6DchYtDYq_peI z&N1KqPdGmhwzl4JX`9JA^Ap?B5#Fp3ubk2t;%&fX--m@NL1)%o|Z+e@$SrvjVxa|X&_k5=t4PAOb$-V%Sv zbsxgN^xjN9_Dl6sh!4bXg3w&!>f6!>`x1s^S#jjOhU17b`V%2Hgcy%nXSkyNqX)Tf zNX&BjfKD|w_PMnnf!l4<19+sZ5=2e2%0gC%f=my@6Ke|-;vL^x10-E5*^#bgV06We zKcH!LX|V6pYI?q7V~pkgKzS#OTfZ*h6JyLxfnIngE!*1p0g7Bm(-q5;(=C*LP>OmdAg87zxSl zDoMBlMVv!Jm^e{WP=r|bkH8zqE){!R;pNiWOcCH|d>v=|;9pVk1smdZ$fJ7=%`Eu* z{-u@XVWILQXhC={DpYiaQgB*VD9+p{5qV@16tF_543Ig<3HT*dC7RjQokyd8pI)ldJdxuLNvBCBUYa9Dc@GMpFyBV@}Kq^S&;cPCtkFvtifa$tEQFV$~OoG|qK zBquqh&zs?Qy|>~Ev%JFS$j36)r6hEX0SU@2HOLo~N-^zikD?>b1Bdv>s?pBj<$yeL zDVaQd1f^(x7b<fz%&mag_NoT@Sc^ zIW1@4B;x2nN(B|aJkggBp*?MROHeqeTyW<_{jee*nSM@}<805X?VoVhs%oRWI=MXe z;vB&y&~sR?_@jt$9HO(ub^$->8XkWsda&YyT%U54%PtT1OF_O%ls9yQlw@ywz$n*? zTXm%OSNAN!w{5taJ3bthOoylNQ7+rxaM2nJW(Tw#jcf-w|J9wNbMR(`U+gAC3%cl; zVTb+YKwL-KBp_}etGj!LbGZMZ#D2Owc%RjQ+2@6F+HQ zIgp?;Q0s$#BEzejka;Mv@;tll7f#=CsiaH#TSuR8-f`6Aq}eo0macJbdDgEX)GuA3 zW7!>=K+6}>pO>zX*KL+{lAnSsICgFPu8K7q--}Y>>DANnL9>}G?}KPfXyfc(Q>P!G zA0n=0*-rWyPW_BYKAXfW_blFDLo7h?#%c7#&7N7M?e5Da24KKfCfGPF4mM-8bzSmn z=OvT`W?9F&ztv5FGwCL1kB=9yra=>8{Q6AWe>Xvs!0hbNc_X|j9I3;k94Wh)(i>&@ z*RdAinxl+VsbVOBiSJ%J{FmvS_f`%{2*N-ic}mi{pTL*Z!ILDA3z- zi~(mDOg!c9u7-*OpJl2Z6LkWgTFqWQU$^p${VMySLMvSM^c_;P0!-GR8yv6Pn6cm} zpjW-JNO)I!cY;OwnEdS95>2{mPQ|0ATyge4Mj{}jh3E#Bh@5=Y!kmneR4 zZg}Av_nayR$u-vbgaZ*9Ux15ByTi{8B`FXJ#OKB)50~KCvx) ze{YplDaeW{*3775Q%w0%IkhiJs$yHB%(Ad7gRyh&p$s}<&r}+)r+w3f_4}*9|3hl} z(83a2SF~Tw@B9u%b%5P4D?LTS=^&RG+h}_xq&cD}mw?xc+1IkI&gHG=$?X>xk(+Ic z%Q-G^t1SGlRAJoqsA@wDc1{2Ak1{s}fNUNcL9`fn&6bS$6~;w(#s{iRN!}p;s;oUR z`o<}v>|95}hfUFA6_`$Y2Hi$NlHW`3rbW7oNQ5pB7AHaJxlS{2AAvcwZmk51ZQ`HK zunqgtN&Efy)H#k=w#@k8AJosHxc3UjQ;MTc=qY`OsY*7di=-G=Yst!*8>@4=7)WGP zLrZK~6oez2QtQ$U+mToq@mX3IiBw-@~ZJEDr^D!ybI9si^+g~(Ydh_gXY(mC4 z@q7~`yxVFvbIm~_8Si>m^|_Q8vD}~wL-%15U%P+OlT&PyGxX#A@oT1BOiFD^w6D%| z+D748Um=;Uu|U&+-@^cR+Xgpm1$-h_I=NQc@X%_sb%fSku(jZFf$Sfxt$@A6`#1cH z#OX&ixS!6n6uxM+D7!OH7IG}s-(|D}uvvHwD6OI_G)rSsEu+HH$D28};3z>e{6k*} zdy$*j=P7!_9^Un+PGVe8R9J%yZ@M$k?$E4GKF?kJ{>&aEr2<(6j85@7Pt$83wI{8bFdPZrCdA39)fq~3|0TPye*uA!=Z?pVOBwPEFZP)PpLRKAg@ zf~M-O`=s(J3e9MLUfVvCOQlj@a%%8o>9tWqU~?m85=4A9daNim6e&8qND)P zXy1D6-4ydMb53zlD{t}>CvsvmtbJBg5i8@JS`@^mt7U`k2}eKPEZ!lcxSpy53in9Z z;}xbE8wi-^I*)FfoMx$?79LGsH2&6!jCp`-v%#GmOu-82){*50U#*L1OUTA~&JWTJ zwNbbly{h*iR*hNX`!G-2V2yn|(8z8ff5*g1FsA&cN#g~2oIJb_aK@KKit%LKBC&A^ zaZ<1;MetFDO0|;Zfr@>lif_64LrLPfs7ZxO_fPdP6v406xEJ-=Zb|4oS&Hy$mEqcp z!$yhNys{NZPnp=#m=(;oc#LV*(qeQi*js-gR`a zP=Q6ZE%d3~F{2bhwtWvO#m0oD7w4d~KQ0p~hM4fF03myA5V_mk5#7ErJgRsGd9VV# zSnSzeV#N#1XRQWIPLZ%tsxS8-1y|#hkxwX=ShuEOz{{CIN_#bc%EvDYRop|H*_TB60m#5WRYjJz!zsp?Y&HZD9W_2sHEhY z-M3O$2JvOu)Z^4CNqMsuoeTH^hlwK$?2(5LQS5v4xd!cnDg>GkGgJu)Jn)!KHY)z@<_Lw z?jU>BR5PSZ5n$2FJVDSlXem5zyzh|9St6VQrcvkLXrTr`%gYH_FB<@|xTN%;f-|3U>eP57(#T#f zW*3NSVhyfM1wIkuG2raN$Klz%00zT=IbvFB4-Cy08SsZu8se@XZK{oz9G>+n@}$Of}$B8xn-=NBMn#)ur-u^v{Zi~5DaJ; z+l8xXENIP^C8)^(KwU@zJy3#LP=q=#gt~%>3$4t8+MH+=DLnz0(1iy>(7d@Yhjw7IP8 zaI%=)L=o1g?ahyxxIVRRLY=*5)X$<|bqQWVM%O;UX1x+TGG=fmXEx^0`n@icmB}pU zj`vA#)WFpEWba|PHNhym1>d>3#ou0Bf$lhD8!LbgU8E)HseZ^)LX~ksb!ZcMCs@>`52gS zZL#YV7;O##*GAorp1I2fz5zRCgk7S&(&ZH5`UP(TgZz>+mk&`C^Ip5nb=V?SI!s=ShRRO|`IJhS*z{LAE*xt}^d zz;Rwao3(ufyjR4lm&dLY@*1UmN6#;u@v47DgqP8IO3r{5{TCDJQt%!R!N4E@>yI0Ikui3!)&6wXPvy%8*ODsRR6TxmufKGT>a5`eZJ7iOf znt0b37GD#`SVp$C|8?(MpuY;266dYgKu1>P3w4xcDBKYYXmi+LL%AhpQk%6zZH0L7 z2xYXwKIoO}zQ%YZ_B<-gSm#1E{5xONA_iif+<|`!=3G>Tj|gnPDOXbEd~JaRn1e#s znJl|)>vv+KY$TSzhzOp8d@e0pNO!3?jd;Q~N}us_w=E`3*EYsY#S*j9RYTc9M@ZB!?~{lIFSaN7vB`CG@T_KPuj1id#}^pT*E5<9kWs#QpC8TYE3 zr@1|rX!UKG_tL~5-J&~_XutW%p1qPScpGgn)0gH(b){pG5KgisLfLen)W?)wxB7fE z*%q&EyGUsoDGc#p$^FSd8ezrg_R>u3ZF14q62kY039n3xthQ#lcYC}&cTzq%^HMfT zI`3%UZhad;)va6ar00X_D@t&shMfy4!iO210uRI+QKV;{pJiW+8 zpBuCXqB`6Vp#1$BhTbc+CK zA#v@(YRC)?d42(PCVX&~A!oqIBSC7qR>=}?xQ@As)--TN=(m>mU@`TI@eZmq-B>$j{W^*!j zX=CX}E|rLwM9;jCy?KS1Ch#K@&p!n;qfqaexvIq^-?mmPV7B9EkDj1xq@&b%{fjft zgWjAgDR((=D|87o-x;6%W%HyB1!RbyG1;>D)e3( zQycB}qYc(asGIeE9rG1iEy=mZstVU+t-;-wHh@1o?z23LZ+j%a@tzd(rOEBzn(#{* z{D~cr{Oc=_+}BE>UXreRxZx=e=3mqW(^RE_MzyFb*K`@~7VV<OOK^PKe$U5Eg~_5&$i&yMs~h?TkfBqFR7{Q{Y=$5&P}i?5}(Ggt^|^nK3|X zF7+eG1;5y7*fDciFuK6g}{i79?-ykcP&t%xWW7Mu+7X+5A$psCtJi4VZ9AQ z8ec{$+0ysuS$W1<8jErS&HnIqmUCi-g+0^d{OojgMNUtN>U}+~OFr~Q_< z!Ry{Lkht_Ttr+$w>_I^nj}g$A91U7rW6p%j;yDQ|mh|XBy(LNXe)2k^H5XMrD;q9s z0o=2oL^WzW8*LcEKqi5YhCK4DM&cLOz0&({pAvjVzR&y%Na-3y4$a ztnplw{niY27sv(is)UIk2zY%M!HLF=r&LzVV+B%&@7mmv9ZESZSp(EUR^VFfE((Xr z1;M=IpG8dV2J&l)*VkYNgs{|nc=|Gkqm(raPO4yx)(4xu{tHY>_|ru>r!AU0JV9S? zwFx}T{bC$SJuM>RqjnRoK?zdigyal7*U@o*c5uh&XBev9+-<9` zWu|)YiBCF8z~AB=7YchF3SAj|;z%mTml^)5Ni6T3||IYc%rd6xztDJ(w z>55CY$TGyKT)Q+ftkV~1*{BWN4kLxFtq65cM{qsagJS2yS`Nak5MdtgHi01TaoAlO zlf~v4iB%UZ;vvp5fUrK|`h-V(c1Xm!VR59?jF@6t@`Gb{E!Hu1@H?%5`TQ)jHN@iH zTM=~iH%a(_lIpv6ff64EjMJE-{SkPri$CBK`At~|d-=99ou%j!UsO0W^&%x(10<(g z0Dk)U{)}4Cxc0=KN-~wv4fp6O+8ZXZRBt`Fw-5(>-OBl1JB_jKig;3`xTxEN-C2U3 z{6F!v=Ac}#m2^f9KAqFOX@7=02CC4p{VE3K6T9L4hZDQ~JEf}lZ2lx}8nqZz)n{HV z<1?p?bg;Ky4`Qla%9q#6*JHxRI%Hl^-o)?^wdOmgc zdy(pLS&AMShsyd91Yw*98hU+j2(_V}6%NWWD%`Jlwje%Kvy zDUFRmT%b_uLFsL_GZ3l@=k@D@-*fQM%{Mf7V7Dz;Ka_)Tq@qe{F28W9nWR&Xx|G1} zC2{Qtd`C--JW{=O#+owEWCc{-F7fb^YdUguh>M{UijMPLIE2v~}p--6Q-!{&s`t5BDL+En0cG{oY7o4fgFz zci&C{wb7Wl{k^{>!5k5R&_AwzW9cQEe?{VKL~T?I9YVxAf8(l{c;n#^Qg1%8$m|iB zztX3bJcX&8VBkthmbFTy)VR>hneaoyq^k zZ%k$NxxA9s*kLO)Q#2OxfQ(-n>#PA;$;7W$#UFzQt<}7f`pba~+6DB+m{PI|dc)rQ zr7R{#mjbnC4rF8uFvslMc^Xj)z^kDAM6Kn47T9xZ!OF~B8Kx>oKyvzFqVOh)c`O~d z@z0IyRmO4no5{Bo4%s+O<7wuv>SMeB^=*yBR?nRKz}J$}DX+w;iH`b@$*APU99T|7 z@cQ(uze$Eb@A!rKF1C$`WT>bd3)LXAXZmei3jG~^F|n2P2eVe*f`*p%E(kfB}x@2#aGW{|K@xXAIY`0 z)EcByQ+dVl#GVuSJX1qsy=Ch$<-@ok3tLx}NKlb-HLMr!jYAOaktChVec_Z#k(kik0^|&bx(cXR_H?7(aRR1lA zk=lH0##b_xU^z)H%gudq+-!zsRoR`EvL$suzKBW%_=!Cl>)9RCig1|KsyjQ=kqI?M z-BDZ4-}+1kcXd7%_UXmR;t5`3(FgA`Q+rirzY_jYupuEA(H&B~2vDKOx;`NG(SjJu zQk^)4+9U0SRN{IH!b)H9C<~2b_rvIj-S83UD39zxpY%ar`RJ1O!CO*zN55j+I?h14 z$pgfenMUZQaY`rwI%z-OH)q@z_;`a|vA{R#MJK8TZ$b^ib+jxeM|ebCpd{M7*?#G< z^J_wON3w>B;kBIY_U!cxbHaOnj07bjB!X2n0NnAJ)CRvj7#H|-0dI#hBrRdRbI9A0 zAtd+l>|4WmN)!ie8Pl#{05M?p<261+^O1Q?N&h>O8s6xd6lZD)BfscbL>QM}ZtRl& z0F{qxcQh;e63bj zEbN7+vjyED$qlp=Wn3a6`zea-Si57NX*K+Lj!*(54ADJ?;05`SX~V()n};|(7brw* zzI7t?B+g(;H2Wz4%vRpeGU}Fy27lH-mwHZy@b8Vi=CS`3AFFIp6h{dgyl%hs#&?TT zia%5zZ?o*`IJyl?$=U6JoMn9J>NY;bN?hyX;L2r(H zt--RgyFcivT7r9SrztnH;CAkS9BNJM$6QL(LRPvVXr8RKX|QLBe<>PRA;gx!@AAnn z&3h;~RMb%bT%Ao&!RhvU1DxLsbT>V}EO$%qdSJq!-{w*Hd~B58nxg=)_(WJt@peV{ z>E8%RYxDJqXZMMZYAz|d>X|YvUJC!}dao&4(R$)FMkHI2m1r$cu`E4kb zuMwv|#D9Y{lo)%cU6L%%z7B^F<+h6_(Uni#{u6%dQ}k!|8z_AWx8=jt1bdT%c)m!+ zSi*#`i{6`_n=kOOE=-d7BQ$7}FgwHPArNM_@A)AZ5~AMJ1^2cFi|QaQ*7NM>tMpab zLVnx-n1^z$-1R|)3g?*D`qWw!S7#toKAW3|O!`UT*_HDMfcc>9syY7H?7+@dDj-@F z-wFTb4!ElzJuIopfW|QWDpJ|T{~e%jGmO}hOWz2XY0S}?4}j}{{xl_ro4|I^xe*g` zBP4xQXulfScEZPt|GX#kB&Hk3c>wXb4b|t~eBkf_$MCIr^2VQQ?}c9Q-b^ZY-PJ}V z=qr;OZ*nfQRNuksy6b!6H_`~8=#_U4>Aw{3;0c8CL~(tt~i zFh-(7==A}+EPL(Vn~~p#idm*MjLl^gYCjBnSnO(fH4wa3?Fp7Ks^XDc$W(bqjD^JI zu60l@Xv#SgEi*t^R+rtRzesW8k793Y|2#!=&nPhGs59T+Zw>R?Hw=q?4;JfsbC7xV z?3aq&Dl1>;Ao&8`@GNl7Ev@L-sLd|BraXIaTOQ{wb5@So#EL{SLP0prO=kB%Sjf8M zxSSh5Hxif|Qbr%(0ekbm5#ABq_h6r)K`ihb)@q;da5Q3V3hzk`?|}nsVA(y|7N!2u zKS(Ucx#Op*1aFppg4p$zTV4%EJsr7N`=i2KHW%@M)evhw8&!pe2CI4;w}>e_5BBkX zt}e!(;|KVmdM}OIrwTe75xO??M)0>C$g)|!NcIzGVyAMiE=m^aty+iknu5GYJzpvH z7w13hrhy2k&xf!800U(I(6U<5Ghdr0hE#KP; zHnC%ppEK`0>ZfR|8R{W89jVaNi(L>Mk7_ihX{IV2)CH)>fnk-@S9L*vGq z=+R_FHjDNfVSNi~(ENez1b;{f)u?^~b!f%>iBRY^v97c`DHFr58TSyUG1v|JsU0pg z1sy7bWv>;UP`U}N_kPb{2U`s*`QT$XCj53&^zBZHAHJzEPY zjTidY5Nx2cE`g@pA+klM+~4Y9rg|I-H1;ALH^P)qJoo#d;7B@!n_p(*CVzts6UU}) zBG!c%ab&&)En8E!CE?dNT{D|wQo^6x$Z2f7xQ!R|toy@QIke9mXlF3~3NHaDMzz5^ zGtwt@Px_|Yw@~?L`~g}a^4c4C=c5rRxKLNl&BrCP@I7GX$HC2)1p4;%UBDPJrP7+d zhI4f-%jxi_j4?5QcFZ?GI3uIRryDM%Sw0}*%EYRPA!%-J;juaR+0%~dUZ1~|sD3M%j&0OHP?XkXq29vPpYs;X)lUv;yQFDPL0Yvoz%6WM z&XPL3eGb6mb8s7;>F7_AdACW!@vpx7X-|G&$3T+~>3e%0;#)P&6@j>2}|6cln9ERWdLh^kV!9KP;9vU)sm=;!yw9h(@h zd)CWW>DKzv$?-X2F^sei7r<3m3wrx8d+qP}n>e#lkV%xTzbhKhSD?a_JKWf)Gr}ovZc{%6R zxR^D*XT0Niy~0%0EPHkg)h!3KsEdCd}_f3pwjK05Y?`$hdsD=W%RI{ zS>QIOOOQhST3;{oEI?==yj5kMIiyup(dPhWD+0NTT__3~ zX;pKN!!;SED-TvY%VNB{TWrk7kZCT~N@fcSQBaf)JG1G{Jxl?#z!Xo-JFo7k9=pbU zDUqU2hh&T!k)@qd=%$0_K9Wf|T*4`rd6v@-Mh@Bh`Lyp;DQH~`V^V1L+iC>S-Eu!6 z@~YIZPJeJoD|{i@7DnSTC{wT1XoXc3q~Ny)cu_ved$}LM5^+~930ys96k$L$NGZ?KictEB-ny!9wkVR z>2y1cImNLqOfK+?9;3>7X%g}n)fv85f)14tOXQzosXEc%M;c`L(y1)1MtZyTYls(E zrIJcCN^_q`ETyY0O|Aj?y49=a0Q!AbGv<&wht(C1+;+7&{$ao5qcm06=*xwK2+aXd zV_p5`gMC}u$}F~kt8bHI?*a*}ZLMq?s8nyv)v~IB#ceE#w;=B=DUtlTE2#ud+l$w_ zS)OhB~)CG3vNb~1&q)V_DPlB+p)TIGle!M6urW_YRofPnwq-9>X}o)`bl zMM2_EKg09=1&?$`tEGY;jPp}G4m}OFNG?A)(MGjmWw=7MdG3*sT^o1~Ly#XBvcVmo8rt|A zdofx_Vqw7_G;%~_Gi!-GR5Ku`!}O#irenVQ+C(?Wdgxgj?g`z+?G9fZiyu%)pg3bfd`Fpc&=mJsL^Laf)bK zw74atGs=-o%?M#-A6sQ#OX$K2+m(TPoFY2Q5zUUM)fcxLt@ZYpeoIdCs?TpLLNL}B z&3$rI(vymJv|de)=V$HU2a$26&mS^kk_WT0@8N-3WC`(`_?r&4yn$c`erIw3)4z;Q z-1%B50JUYtf0_UI7VTlZX_|D!{kf!Hb!{p!u=~KntHhV972RRsrfokE#JsgZjgg4# zfN(4jg9U<3ab*}>_l4ET8;16QKi<7Rc=|>^fPra?zkd~OnIS$GEN(ga(H7{mB_xSI zoYsV9HsFeTEYa_XiqqyzRic>`E!(iU@+=6D?{^oIoaqo(4qPe{>Piz(V4X)Eq^pTwgvquU)^*duLf?K8mu z^J^TY#hO3nMtbjdMxlBKQt!7}yY{+F#N1dil0U9CrR<-KR5E)rs` z$6v}70_l;(zv#y9k0o*p>6h4 zVK;yBLi>MHZb4Tt)D$0D8aD^O7)IsU5>oyK>NQ`bpMnDLNxPL8jE5 zmZFWD`ck3(+jvSR;lASud|91U{Q#GCSvpU`vS#g{el88rJVXrnPvsjpQ{Ai;p4#IB zXoqkEX;cGOSGiu{tWH%;fNWPU({)k30hc)AnNT$gsXy0v`|%wV4M%b2OEU}4`XeaVSV)P64_>Xc|<2N5Kjqt47? zCO0BTd!Bp!)!`^z@A&K+vxYuofw|Z5dKc+8-V51P1cBO46s4|P3PxaZk+GFAdF`jZVCNFBmAaM9&v_Dk>FWR) zw~94@l$(VU!5bR`$?RF0l}TQ$WxLp;MT(LvRSw(uPeAF68T0g#!xY#h7Oistl8I6V z3l=N%P#`h)C-%=UXh-8D%r*Lq*Jzgb1W(+?j0&Hg3!7YXlCw)?z6#lI$viY>bo3`` zWtOrn)XLQrDpBE#*}rz1yPTY@Mf=NlU(m_49e&M_<$>KvE}Jta4VVv7G{!SD0v>T| z#+#>iG55rdlzv5#m9D^cULvaUHs>#+gSf23_b7~tnAKYlW2EeeS=8y9xKlcm&0Q;8 z%C^raM<-LF5GXA+!Lctg1fl9oAEE63Zre5IN#HF|ZxI_qbLcKj@UqT5dzQCm;TqJ^2d8I~^$c0@E6cpKSLmfbr0ZA_<>ZToNwU=&aByE!id zI2y&wMQmgn+m9lY?ezL>d5R+{myQB@U=@X_4Z4GDa%6MVh*gDA*!b)dOVtPC8#O|z z=QGK%ovPmweS)ItQ_Qp{sBzZC90R3Zi=4C=*_1v_$K+BN|7DbR)(Ma6gQ$+jY95BD zzvPEjk~Gl7>60cGkt(?%>Vq7ItR!qm#B1VHC5NO`F8!R0LVJ z#7%J#+fHMNC#+uZ4#Z{e2`^;O{1sk6v2Z(0NPCc|#dkbUNJEg+uNhhzi+>Ox`wVoFh;n6;U?Jx zpf$aq*Hbe$vtQki{b<03GKG#SjQ98{iT4cqk{s(H7j{AmVrGWg(oDacFu9umUQG#n z`wu+w_3a9(NBZ_HhvC12M~44%@aP{ka&j^HcVGFx7!dz|e&mz9-29cN$*f5pLQ2{| z%19_NCWQDM4G~tjPXaj}+(H93X)4WxGy{qS1#Dl-ai>*l-sa}ozzt|eT?R)THk-qr1$cI#%u5Mn^}Ww0Dn^Aj{T9}G0$_h^EKD8|4jE_>(^^c+PA5s zU*K6ndq+z8owfDDlrc7&%cs_V(IKg&v;jL796^30YnY70B_C@oFPSYbQaHl4wgm>3 zSx6C}%$NljSbfe715lxL%q5-}X~!1EV>@9`eHzFOB&F?(+R?FxT*P!1q+9pIQele_ zURW@qU~Q@Coj<|a4^d_yM9gDGg95(3kr-={-`q5@%HPe433u&8q#4h@8wvveEAykd ziAm0x*S$2UJUo6lEEtJpC&6TUKbsGIK-!AsXQMZP9D!XTv%uFBr2!MG^!KW+ZC}4R zcPtLWhYty&H-WMe6U=}Co{WQIL)08OloxdmFpO1Pz;t9p=)gxflVf0NS*$LfU^`^q9ZGb?ig6}~wGoMUDLtU2X) zE(=K(I~2s`3KJhaY?mE&OSRNC6a$rBE_U3>G+s>SOfrj0SH{=#)JJWc1`lQ@X=h!Y z1P?g1utx}m$~!lHbJdd0ZztQ!Vk5bv#Gofl1t@4>M1yArFCCJki#Erg*{Kv#!&NFw z2Pn$0(KU_6uxS9wF`&qw3U)VQ|CM~0C12aHZpiu^Vb8*b1(Ef~uBeqvEf)6;8yl9F zEn?h?L_74YVz({bc!P>Dlj`N-l^Id>rn}bTBei^Dy;(sY4Y9u~cOX0Kn9#CR%+N$w zed8C<^L9`mukz)3%a$S8#kG0I*9v`$p5zr0B_0tIOKcNx9@i>R8$icsD%t7vicCtP zPOK(9CJ>aE+@W2v7HVB|u(sWo=GS<#1aG$va_M!&L|*4wUjW| z0k{6D?>Lxw2@by^G@Owy+`CrDa+mkS_{l3TPE5Gd6*=4Rp-VAfYr@g$ZBIzr>tWI= zAg)UpWFdwYUd!V)kE-Gv9Kp1G1BRRV*XG&lwz+u*11Wa|1e`FN1CiMfW79<%8>{Pe zO1xofjX01T&Mhh(4G{th*Z=e?Nz8Bb>rP(gF&;gLHnJmuY6c$xZRi})gf_!1%b{6o zg_f;wBXqx|_V0+hX)~nx;Z|(j_x>Nz(T#6m{J9?1o(tHZ?xn)@#ZY(c$0z z%+CbLPNGg?IOG|<5HG4Vo*ZmgOZo3Mx?hWN;zEl{wMPmX>>!Bul4|In$6(uD`dmhY z@opf-%@!eV+OxiJYZVD2&tN=iK%_@JIZ)#(m9H~q>J~Z0g6)cH(q;qQYhVGKF#Bnc3H;a$QMc}_8Rrxfo_2|>yLVw$iyTY&%;E&M}dC4)k}Uc z|B7U+_DzNsEkodl9h%k_=jL}ze}S{`6_CeS{o+$&Ilc{t1#_W1t1k?-k7-#S=Nt=N z$^umiaTdOI%1M7oJh|VpA(@=xpph6`JrKo?YZE-VX6B-SzL0K(B@~u}m%J90$2n=s z@nXalLNV6uk+dPqvy0#AZkA)x97)j__R#k2_1#q8+`uza{2%ZJD??~wpdY{cGxrRq zE8N&NBU31&UeoD~3ebq!LoU3@wQB9VV}d7Z6ezeKNe(59TdZilp!ZZB_{zs~9W=w( zFPaUs(bL(zM@=jf?CM)~to!}j{yS7O)5Bb`zU-`hfD<2rOEwN}pN#YZ#VtMH1n?c0 zif(oH;$Z|#i4>{>aR|!oPT73QwWhR{Z~6V?gkfC;m5a6#HRpQw2qR!#$oQ3%KaKki z;q}{ZtegLoZ&WB~ERTLV)6jB5ykqz!g?$a#YpRF$xbOM5<)Z5sZ>)_6-Fr7D?(8A3 za!L&Bjxgb)e?@&M`}ix>a2RcZB8W?OXM?7TGC1kqLnT=d&vik`GdC|E!CtQ#dA}); zLKbh-ky3RAyO6YXxOQ8ny2P}z2{Xf>RWLBPB1)5T?GBx*80o5IvboA?EZ-TC(TBZ! zd|#`KYnilu%}w$Duo?`T@s^ZEzT=EH2ZbZ>;q#xOspbh5-fkv zFUvA?m~=!?tA#VQ8+Zs-e5J9Nm{m;0g9+ZsoP+olx$zoGBEp1nR}g2TF3fSF{mkb~ zs7Sj`kBr7Nflc6;g_|x^smS>3CN24|ELR;)#>FahPC3}^Ch*gWsz$ELg^gmN+D8+b z0H@L^l;o*syd-(s5*YA%Gx)PDdD|ndAsL@?ehq;OaQ0SOwdDr&8Q?E|6*#RVPrn`y zm+MHt_}ccKbxfNn77m-&mUNU5TpDZ_X=~RoCv3f?sjiHfqxEgrdzdzT{$cj0#*Dm+ zuBL(Ltmk-x6xwfBK_XSKj11aJF2%n|CaB)8`aMambmvlz?;AlOTG%SQpllKDxLIZz zO%L7)IS;%%RmOvsz;l!I+UO6=IzGc^mJW=zhTteQF<8*JVP#OqylS@Czf2ziTf_d_ z+_ihm!Ej9Vis-8Z$5h8nTZmMmmDQ@6N-ZjDtb-2)2qI=|jdYp{lLof=VFP^-mPEc! zfJYPaq!R_LJE7G|F^F-Itc?wgYhh%oqP&LBx<*^5wEi-P*VcwtYzn2sl;74IKUNXf zEYpKJHK|lPHQ_U2cnErN0}o&%QHFyrqY5`c&rzCD^w%!iE|%WhLA|!JidI`qQ_r4z zgHAoOvO}s)XMGC^mXZGSM+epKDwt99RZM8Hldd`nH~yQsbi9LmZ)`VDi;l8jg^3iu z?U>Wj9=@$#*Jl-MrrR5B9p^HxtBn^!dT>mqVoAs3fpkN1KnVE`RCdB%D48IYwXz6z3}CFK{G}nUmY!q z*4-mW(C~)r4-|IUCG!`7Px8G#q}MY3G6(Zw#V~j5z@8rTar!%Xi#h$sMV}83SSuf9 zz*Kv0r$FvSj0!{Q&Dd{McpujCDIn{K<;e$8Sl((L^M#j$J{>ERhHndb!XNscZIM?3 zDw*@4!yYt#eWub2FgFs70))mwI z9;LQpQ-lIEVKXi{K4u|#WK4M*+hHj5Jv)iVUf@`wd>YdtcMPXO)T1^msRsgo9tO*+ zC$;<`T^Wwe^*rAlWz<3j*Hqjgvl{8I#Dx7gqV2#@#SInx5H@TSHl>k5EU#`QL&L+7 z@bTo@I2cZmY&ZkASTE=4rz8noM;(;L^Qw*kaXC`2Qp&H$Z(!oFBwvczw)_kZT04?l zGi55gr4?}lg#)$5=CLdkfM01`l=jE?;VyXo!ow-LJf;W>uJL*^ZS^eO=$b{gj#}c` zPgdDa=re5M%;6E95aM!N;Ss(iky05WDs7P@;WGW6ZCbPW!p4Asgp>%}$C3#>DKPqy zH+Pbxg;8ZK{KITPC^8W5pc8_X10TvMx!Bt@Y@4>_=H*%_j|1El=_5UFptr-fXUBqP zAWpIeD#F4__zgS$h&PCtzmEh2gP%moOGLFsVSH0;0;FNa*DtA-m;CJ({zDrV*2Fdda4{}C}y*(7|aThZ&DZufjJ~+Ctkc_}77q7u*UvAhyXqIh zMn1Whysr^Ii8EeVa&Igz8&UU|9n)K+O=cquPV&^9a@u+*meqhF+9<*>5H$G#1SO=Y z-tfiMgwEiOf}3;nbhrizL(S4nI9iOOWQ%Iby8`n%6ykv%kY&#pkI`h*=bG@ep1y{i zSX8iESRn44Ytpr0F>fG=og?q=5es35Yv1%J5wAR~5(%0YxJO2%@KWFo^N<%NyBuEZ z>S@QKaO~jH16aciG1Hf6;WG{Fj(R=jPT_WuM(Aq9fjy#6?_jYf%q57P`<729>{@vQ z!D14@a+wFV&;6D)_y*BWgi2t9<5qdbi=ek}w*2K7lwPFwu7nGcV7{Tj3fG_HeHRPg zW^EG)71wEFF?E|@l94_Y&Gj-^lf4uzfQgemKAVX}qld~69NDdj1&VnouE6{S9U*n8 z>1rgqHsS271f)NjarErO5L9$1CqLGZTT|jpjy^va;|3?E!;$fUA{<1QL&I!o-^ zsG{=^>FAgq&O4cngQClGIR2FJ$2a~s6J?WsVdIRQR#_$w;u#7X9gd}+Q0^HEYs6@$ z?_yt_k0QqKbC*HmkxWpje82-9@qlz0RFm2aEyIU(-6a+(;ejO`!HG7hk^9Os%ICY3Ujh*((_QGX?MaN^U%@`klgb5hhb7Q zT@#o5vz}hJ_mNyX@S0q6jwg-P;XAuzu=Lg#A>$DfwE2X_RGLgSgXX_hj+zAAswABm zyxM2tA5VHF4q^;5?t5fppnn>S_$$8566hCOw|_+eRtOWPf0?Zdk_-x^|Cw;X8cQTn zcp>bhp^%j-3TY|wc(DU>(_XY&8{$i;B9jLB+{h+*qN^H>8@kGfrH9*hz(*V-*-Ybf zJL=rx{;q^di4urSwlmQkmKBOZd?+p*PNCX1Sd7KDf6aNDl-Yoi34Otc{2jhm{FFM z{zMh06R8G~XT)4q^>!Z0=!k0cM15;hpBWjf8hty^S=kTu5JLyX(+*cU@oyK~UPodO zG^qKL9)d*F8qRgd=mE*NfJ6u-I@5+sdFx^|`b0P-k}NK()W?O1GHsJ0c%YKWdrBCU z&m(SdCB|ZvBE7P&R5rIL#aj@pQFVt;W1X67Q^ja+*9qF%(}3lUz6*E@HQG$=pzc&{ z(OCVp`s^?_FwL4g<<5uRd(G=6b7~v2u~nn!cXs=hk3PP)zFw7Lzt8o_eT64&J1_jt zH0k!L{1juv#FXL;sNMiFIHfq$^+=|D;aJwWRlliJa@s^Q+9dQA`ZR;2rb5Aux)?Ik zR-4vD{)|U++|4Xl_n%*m1oXdCAp8X8+hD6&8Sr^bm7>~V=y`AqQLgB>u#3`$#kcw4 z?fql#_`TXo<DprEtwnhQzji2%=4XrEQGIZ$_Lpz(gG?-CeA}aAHV~V!d3< z*uY}2TT8C2k;DG^9%ucN--#e=&W6hm%3Uj^h(xW&RGRF5O2<*EMa3Op)3jYxzwPob z%b77dCBaw2w3EW5+-REfvWuq{!jbR??x^$5&^(1AQ`I~cVTfayHy`iR{rBW@%#tc) zVkJ_twFcz#u4%iJJrJ4H*2QqqF?TZ>MSZI~In$gS#a89t`R}_5^9!n)x*H zJ`YuBJ@K%svI{es5{cjs=AJxW-)cf{%_@T30-*E;LG*~ty`E@~glLv$8*{ae)nRdE zokX*buUn?%L8Ni0G`$)It(I_wT_ORIn}C!QpQBM-on(b6Z+%_FkC4lvI(j9a2)g@E z-BdnN!#7Dw3EHanYh<^8fn31`){!eSkCVk?b1HsXG2MlzF+d~1k@(7dF!ETcZ8)ih z^6^|U2g1aYO@u|HvhwyaFJ7dRgd0Ci8h)~LUdkl=gz4-AnpE!j7hNsAr1CZorMmef znL@&#WD0Q7PUh=4`!iZpd&^`P_^8p{F z`wA}&Rz(ztyK95hyT_3JOwGNJ+ln_$EP8N!uq9!JtQY29iL5fDJy107K3@3YM1rJ?# zzcrHm?+-KD_4g#Mu;l*ooa=`=j;>y4oI{*7n* z>#&u;AG(iNk$TROl$)j*pKhr{oxHR4*=qhuLT6@(deAElAL0B~K}257%=UbRyQ6s` z9w`dzb|O7j#wy3l^rIzLLP#GV{wPO>#1W3`6au$L_wViLVN>Pk~ zU1_$T7p9`H0mF$^3ds#gU=|WlH?yo`dfJ;w6fiExtAbG zjXrotAxx@M=y0hxr^le!1&)(=LalWgX-N>)y0!QGy$&`XsO&rggcUuGDt41I+7|^> z+iZ&=NHK20@f;!kgrfI$pfzhx2nTW|oJGzJClnoi^@i~_(?gQeVnuvyoy#)(Y(0x0 z%|Kax*g4w5TD{Y!PJl0w`O(RPEH;&WlMhQF**H^Vo@8YOmTz^3uHl^QV)`#0mS!)1 zDoKG3$$6Hw!qMuX5HSu>-Y0|reMpH==D`Rd>eTed%aSjl@!=9$gY`1Hd|rC==K>#} zSWvqeF#d1cX{3u=OlJfCD!jW9RFSGs1yQb25SxcWR7sM;kFb@hy}Je?Jb9+$WqX)Y zKIAO9Y$63Dj(wQ@Qwx=aJJ&H6U{d?SY9*PkWT`kEcDn?^8;IP!y$_tbyUH=0nokJA zYU*DsZiIOW1*nv38WAF<%r&8vHo44FuQjpsJ78j2jAR=yqzmlVv`Chg#g_?H&-B9M z7=F|{#Mk1h80Asc4Pimx@j^*J6+Sk&GU$##RlPWfF4P?Vk@})Su0hnAC78ql3k!7x z4(LcWM1{OCg2>@*ysW?xO-j$SFQRhK`3U0(9h_vSuqbn2ZA zg;DKE41%J?WH9+>k;}G-B2`M%)G~mtcUg<+b^@{oCi#ek%cm;mslxgi3Y)JmD)CDj z)|}NtW6%?8D2GW#=&G-4ypsAb(IWOv(G88^~jk z4vDp7Tp0+Rv-MLV`Y{k*3l;pn7eTe4;HTa_T~f|S9yH>@2iH#XzG2bUW)q*etkD4~zJZq$2WAjI~|Xdc+5>5!MUvRB^bEPQjHM;b?p{S#~aJM|=D;R%0> z=CCb}e~TKfr$#tGJ=Cmfl0RlvLVRnsB>)*lhc`Aqrbr;oSr3mnNZ?O+@h$=k>Q7}7 zAy-MYP%F6;ucQ^_EHX^%y6tfgHcjPwJPp2gdgBx6CT(Es*7tozK8ZmE1rw_(lsDcr zn$D3AkLWZP2=|x`OleA8RyI`-24wSgX9bGM_>YnKfDGu)&@Z9VW zL0(Z?pp}=&S*y)KKZ}Rj)mvAeCrSoH4hW2_$ehnZ5dG!&wyA&z5CDlz^9a zwdKNbMcGe@S89ljkGnk&uGfK3#JW%`#pfc{& zDzz&#G~pL+zZ^-3S{Aqu^aN(QHB>T>x>1HzaU!+Sgxc+7R7_p=cfbO-lv)zU{r~J8 z(oH{p4^)UPa?L(h9=OA6VM-?r`EBZ)cBTEd$tH9?sPTSgZ7nTP>}YYdCJVGWh(>RS zvc{z6I^Dg+cI~82h-=qHcW2oY);zrÞ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

    fh#>z6f_BV#Ud9bcTYpUvck{4 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 z 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%0D?7{D#s{<=p=^>>zI8MWv24D93UKp%a@uD~P}p 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 h78c?Wtkt(~*LP4jN=SJ! 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 z zFKJY3U+qCf{JqdSpo`D}Sa&|tOFIrnU>CLz_Q@bSU=Y#DBBHPg$8QBZt1tW=u}y(Y zygN4$czia?%G{grz=_#I?V?JYHi}ow{bCjSmEDO0=n{-@JL9F?kjdSkne1C-?qQ!L zS~!LJqI--%^AY{s5%SW{3KZq}B!hwD^FcXb&u<6O~86^rU6Ti;-$ekOurjPC+aCQM3Ky&Jm|c z*=L7M6&XGrDZ~wI2ku8>YHr1LBLJqTN6ur^6xs!8PwdAX{Es`7?=KkNy|E|u*T|AI z6lu5m+@BdT_kAprG}wvS9Z}=)M52>4t+%;C{SBsFXP%(dNQR=8sOfIy5b~ zCngdL8eSr1tObOy^mi-!N5bw|6n*BIM7;&6zmgZ+*sx4G%+U7?HQ(^EOkQ5czXdjZ zO7M{e^e^qZby5WkPuxHhK9l*=IYed^hc(>LnRZF_o#lx9fa(6O?UU>NiQZlzu&cCL z4vCzSGRXXEE**{)o=@@&*J_t+J&9?0ap@9f-RoC#MuX#z@M6_#X^+hLHMr$Ev! zg=_F2#5xX(3McBAQ}`YA73MOBP!$Lo`>m_1GU*v!Ad2hM{^fcTc$mT_7cd%+*GnJ( z(=?MVOF^(*wNbxh48AmPat9?*JXSeLgslO`qr^D*Fuqa+ur?i3VZ%0U5!>g*4Y$-j z>QN2in*aCwASGe{PguvavT*(5$Vloz`limce5D(?@iEWYJ!$EkD;=e#Wnb5ZZ+gsLdRJ3=_fh{ChW*)le|5&_ zy7GO+C%ru5Q&>F=bC<7NECmEm!Eq!%zcgN{X(QLM4;#PIZ=sycX*m9+!nBY!rQ#w` za?PD{!9I{A7e-BjZ~n>nA8Dy(7pbQ9OIm7Y{O^2EN&j=cr~f;h@xR%h{_pAkMIQUF z;Ku(67MoJjQ9u`h>@dkPYQitLSUtY=IB?GK&XdPv zG{kkJCajbv%rD6~T!lvym z;KRbr6d4KM;Hq_iOrv@g7R=ZQm0^;wNqc7|+a2@$s7RQoH!j8#7l(Zj|SK6}*Hltst ztTX+c&FkBMX(_gO%%~ ztB%>~`czbEsSj>Pmr#E2m@eK7v$BvRx&L@g%ku@^FamXGxtKTC8l#V9xrO(`?$>OZ=7?|2b(<0Zo<;8-}XML0Og9l7(T!cg|c2$ zx}9fPK7&7pm6+PmRnJP`Va|T+3@Tf)mpH_rIn+_&1(g2pcvUs;;Qv|h>XOiEOkcFI zng5nH7Vtl};HB(MoX!4&1vIi1vUN3c{?eAstt|dGl;Hmw{|`#=zvlj5r=#jZ#%I9e zq-o+<$S>h|4a0aMFCj4Gly5ltC~!hjNI$Ky60=MVSx_w~L_setG~I3<)vF69z&Z5} z8cU{zZf%384Yf7tW`S0lQ}8@?%SNp>(6eNFn$Ap zXSUzmH=IG$^`0(TW%QsK<1}&(hjS<~j_^WYadXwIePdyadlRuO<@gKS8lLqk9*xbP z=9b|Cvubw|Wb2j*nnHM|j)hnXk%UOexmdi7UfyK7CBMWm?YYS*IMK3XV3;`s+tu0*OzTf3+b z-2Sl&N7u%UHojy_ExagEDo-v9dQBW=nyWs_bbrg3Nl=!cb05MMn7|YG%Fi>RQFif} zS6UrxYg$blx#8BAc=FMcr5%x$UK?+4fYDM3BKMEH$~jVlx)I7moi(ni)W1RG^8)*Q{Prw9Ak)&>;94sAhL3WYI)dpkoIuw#seh>gVI?!nTNfK9RwB`kseJ|}SIg$;eq2pow%`$m25WE61 z%ij1t*;ntc$(0NLMKp`?-$|(X{QN5i5)t=XPsz+@y35ShJ8fOQ4nh6ibOZ#bwA##m zLCuJd%htEh;+lEjztau=s6I-vIt{VHfjD$q#2~_t`k5YW2%({i(~E{zU9R#o{iKOG zby(CGzez;SM@NTF-j}aYhu#&9=AbOq(M4wbgH#Uszere%qNqPL8Totq>|J^rGk?H| z){C9*NEYHh?zjq0&k$sHaG~Yo!dZty1I6J>f*VRhSDWyHutS6E>ns(MCffLZvvaB3 z>eHrcYCbRgJiY66LnFbmfkC+1bm1$F1=&#Gf_ativCRT!7CSCq1Sa#`Iffh-1UKer)lv$$kC5w zaLV%(6%^ZBQTkncQDRN!)xz9Cg0JfFdT^$1N!$7BN7588r%)`$#zw`RZgBwL5${~I zc11Gps!PAls15vTNBqUVabvzXXA4c(PH{yVGw-mRSn**E%bp#aUE(Qw}5XY)2_Y5ofFxEG2K{WxHjTJ7;du0C>HxTozE zMvXyHxG(JE3GpLynNQf!bIGm$Tj7Q8uR13#8=fw^n15R(NOJX_tr8B{Xe?p_+S)wE zOi(>hknc|j1O;4htP@$Qnn>{LmoHn zqXO4Y9G3{kohvOAz*=4)_~QlG-|G77%HqO#@FrkzK2bgf4Cnt$EqaeAAA8Cx^5VJW zAPO4(Be7=I!!M|DN}&CXc~wC8cbA+*$H7%Cyd@;7*>Cc^zo*EA1z)HTkR^pU)J56+ zf%I9?{)wxS?9y2k=a$Dfe~p7EZ+h}ecKkZ9SN#`!sePg7(Czyh znuED9;^v8mnlX~xZZM()D$q3(Zd*^U>a5QPXbjwl^SJun*i~ICYuyACM}Ls(wk

    sg8+y~@}=+qp9({D{+EC-n7u`dN)+ZHs3J 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 z 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Ξ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 z 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
  • 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ⅈIrJyB6Mbz+% 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 z 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

    *EEe4|k!OJF-^^oA6|9)A= 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%0D{oV^rHt~gFXV(t`+!&^*l$%%dWhe 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%0AD$Ryxk(Df6Goui^ZM)^G~3(8 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 Xd=Jca2DbKq|22Yb4%k;TVt4)@T<3Jr literal 0 HcmV?d00001 diff --git a/skywalking/agent/activations/apm-toolkit-trace-activation-9.2.0.jar b/skywalking/agent/activations/apm-toolkit-trace-activation-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..fb7b76458e76f77730d02adbb64f7d14e170b132 GIT binary patch literal 113805 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 bDDD5@8u=kfP9XTguR?VK;d&^fkO=<=a~w;k literal 0 HcmV?d00001 diff --git a/skywalking/agent/activations/apm-toolkit-webflux-activation-9.2.0.jar b/skywalking/agent/activations/apm-toolkit-webflux-activation-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..cf447c5da363b515552691093ebaa78b4ed1d1c2 GIT binary patch literal 27347 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͕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%0D(6ZBqkWhn&OHZHVUnO!a==A3PP(8 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 literal 0 HcmV?d00001 diff --git a/skywalking/agent/config/agent.config b/skywalking/agent/config/agent.config new file mode 100644 index 0000000..61db0af --- /dev/null +++ b/skywalking/agent/config/agent.config @@ -0,0 +1,306 @@ +# UI中的服务名称 +# ${service name} = [${group name }::]${logic name} +# 组名仅是可选的。 +agent.service_name=${SW_AGENT_NAME:Your_ApplicationName} +agent.service_name#length=${SW_AGENT_NAME_MAX_LENGTH:50} + +# 代理命名空间 +agent.namespace=${SW_AGENT_NAMESPACE:} + +# 代理集群 +agent.cluster=${SW_AGENT_CLUSTER:} + +# 每3秒采样的轨迹数 +# 负或零表示关闭,默认情况下 +agent.sample_n_per_3_secs=${SW_AGENT_SAMPLE:-1} + +# 身份验证活动基于后端设置,请参阅application.yml了解更多细节。 +agent.authentication=${SW_AGENT_AUTHENTICATION:} + +# 单个跨度中TraceSegmentRef的最大数量,以保持内存成本可估算。 +agent.trace_segment_ref_limit_per_span=${SW_TRACE_SEGMENT_LIMIT:500} + +# 单个段中跨度的最大数量。 +# 通过这个配置项,SkyWalking保持你的应用内存成本估计。 +agent.span_limit_per_segment=${SW_AGENT_SPAN_LIMIT:300} + +#如果第一个span的操作名包含在此集合中,则应忽略此段。多个值应该用‘,’隔开。 +agent.ignore_suffix=${SW_AGENT_IGNORE_SUFFIX:.jpg,.jpeg,.js,.css,.png,.bmp,.gif,.ico,.mp3,.mp4,.html,.svg} + +# 如果为true,则SkyWalking代理将所有检测的类文件保存在 “/debugging” 文件夹中。 +# SkyWalking团队可能会要求这些文件以解决兼容问题。 +agent.is_open_debugging_class=${SW_AGENT_OPEN_DEBUG:false} + +# 实例名是实例的标识,在服务中唯一。如果空着,空中行走代理将 +# 生成32位uuid。默认情况下,SkyWalking使用UUID @ hostname作为实例名称。最大长度为50(UTF-8字符) +agent.instance_name=${SW_AGENT_INSTANCE_NAME:} +agent.instance_name#length=${SW_AGENT_INSTANCE_NAME_MAX_LENGTH:50} + +# json格式的服务实例属性。例如agent.instance_properties_json = {"org": "apache-skywalking"} +agent.instance_properties_json=${SW_INSTANCE_PROPERTIES_JSON:} + +# 代理的深度如何,记录时都会导致异常。 +agent.cause_exception_depth=${SW_AGENT_CAUSE_EXCEPTION_DEPTH:5} + +# 强制grpc的重连接周期,基于grpc_channel_check_interval。 +agent.force_reconnection_period=${SW_AGENT_FORCE_RECONNECTION_PERIOD:1} + +# operationName最大长度 +# 注意,在目前的实践中,我们不建议长度超过190。 +agent.operation_name_threshold=${SW_AGENT_OPERATION_NAME_THRESHOLD:150} + +# 如果此值为true,即使后端不可用,也要继续跟踪。 +agent.keep_tracing=${SW_AGENT_KEEP_TRACING:false} + +# 代理默认使用gRPC纯文本。 +# 如果为true,即使没有检测到CA文件,SkyWalking代理也使用TLS。 +agent.force_tls=${SW_AGENT_FORCE_TLS:false} + +# gRPC SSL可信ca文件。 +agent.ssl_trusted_ca_path=${SW_AGENT_SSL_TRUSTED_CA_PATH:/ca/ca.crt} + +# 当存在ssl_key_path和ssl_cert_chain_path时,启用mTLS。 +agent.ssl_key_path=${SW_AGENT_SSL_KEY_PATH:} + +agent.ssl_cert_chain_path=${SW_AGENT_SSL_CERT_CHAIN_PATH:} + +# 启用代理内核服务和检测。 +agent.enable=${SW_AGENT_ENABLE:true} + +# 限制ipv4列表大小的长度。 +osinfo.ipv4_list_size=${SW_AGENT_OSINFO_IPV4_LIST_SIZE:10} + +# grpc信道状态检查间隔。 +collector.grpc_channel_check_interval=${SW_AGENT_COLLECTOR_GRPC_CHANNEL_CHECK_INTERVAL:30} +# 代理心跳报告期。第二小队。 +collector.heartbeat_period=${SW_AGENT_COLLECTOR_HEARTBEAT_PERIOD:10} +# agent将实例属性发送到后端 +# collector.heartbeat_period * collector.properties_report_period_factor秒 +collector.properties_report_period_factor=${SW_AGENT_COLLECTOR_PROPERTIES_REPORT_PERIOD_FACTOR:5} +# 后端服务地址。 +collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.138.130:11800} +# grpc客户端向上游发送数据的超时时间。单位是秒。 +collector.grpc_upstream_timeout=${SW_AGENT_COLLECTOR_GRPC_UPSTREAM_TIMEOUT:30} +# 嗅探器获取配置文件任务列表间隔。 +collector.get_profile_task_interval=${SW_AGENT_COLLECTOR_GET_PROFILE_TASK_INTERVAL:20} +# 嗅探器获取代理动态配置间隔。 +collector.get_agent_dynamic_config_interval=${SW_AGENT_COLLECTOR_GET_AGENT_DYNAMIC_CONFIG_INTERVAL:20} +# 如果为true,skywalking代理将启用定期解析DNS以更新接收方服务地址。 +collector.is_resolve_dns_periodically=${SW_AGENT_COLLECTOR_IS_RESOLVE_DNS_PERIODICALLY:false} + +# Logging level +logging.level=${SW_LOGGING_LEVEL:INFO} +# Logging file_name +logging.file_name=${SW_LOGGING_FILE_NAME:skywalking-api.log} +# Log output. Default is FILE. Use CONSOLE means output to stdout. +logging.output=${SW_LOGGING_OUTPUT:FILE} +# Log files directory. Default is blank string, meaning use "{theSkywalkingAgentJarDir}/logs " to output logs. +# {theSkywalkingAgentJarDir} is the directory where the skywalking agent jar file is located +logging.dir=${SW_LOGGING_DIR:} +# Logger resolver: PATTERN or JSON. The default is PATTERN, which uses logging.pattern to print traditional text logs. +# JSON resolver prints logs in JSON format. +logging.resolver=${SW_LOGGING_RESOLVER:PATTERN} +# Logging format. There are all conversion specifiers: +# * %level means log level. +# * %timestamp means now of time with format yyyy-MM-dd HH:mm:ss:SSS. +# * %thread means name of current thread. +# * %msg means some message which user logged. +# * %class means SimpleName of TargetClass. +# * %throwable means a throwable which user called. +# * %agent_name means agent.service_name. Only apply to the PatternLogger. +logging.pattern=${SW_LOGGING_PATTERN:%level %timestamp %thread %class : %msg %throwable} +# Logging max_file_size, default: 300 * 1024 * 1024 = 314572800 +logging.max_file_size=${SW_LOGGING_MAX_FILE_SIZE:314572800} +# The max history log files. When rollover happened, if log files exceed this number, +# then the oldest file will be delete. Negative or zero means off, by default. +logging.max_history_files=${SW_LOGGING_MAX_HISTORY_FILES:-1} + +# Listed exceptions would not be treated as an error. Because in some codes, the exception is being used as a way of controlling business flow. +# Besides, the annotation named IgnoredException in the trace toolkit is another way to configure ignored exceptions. +statuscheck.ignored_exceptions=${SW_STATUSCHECK_IGNORED_EXCEPTIONS:} +# The max recursive depth when checking the exception traced by the agent. Typically, we don't recommend setting this more than 10, which could cause a performance issue. Negative value and 0 would be ignored, which means all exceptions would make the span tagged in error status. +statuscheck.max_recursive_depth=${SW_STATUSCHECK_MAX_RECURSIVE_DEPTH:1} + +# Max element count in the correlation context +correlation.element_max_number=${SW_CORRELATION_ELEMENT_MAX_NUMBER:3} + +# Max value length of each element. +correlation.value_max_length=${SW_CORRELATION_VALUE_MAX_LENGTH:128} +# Tag the span by the key/value in the correlation context, when the keys listed here exist. +correlation.auto_tag_keys=${SW_CORRELATION_AUTO_TAG_KEYS:} +# The buffer size of collected JVM info. +jvm.buffer_size=${SW_JVM_BUFFER_SIZE:600} +# The period in seconds of JVM metrics collection. Unit is second. +jvm.metrics_collect_period=${SW_JVM_METRICS_COLLECT_PERIOD:1} +# The buffer channel size. +buffer.channel_size=${SW_BUFFER_CHANNEL_SIZE:5} +# The buffer size. +buffer.buffer_size=${SW_BUFFER_BUFFER_SIZE:300} +# If true, skywalking agent will enable profile when user create a new profile task. Otherwise disable profile. +profile.active=${SW_AGENT_PROFILE_ACTIVE:true} +# Parallel monitor endpoint thread count +profile.max_parallel=${SW_AGENT_PROFILE_MAX_PARALLEL:5} +# Max monitoring sub-tasks count of one single endpoint access +profile.max_accept_sub_parallel=${SW_AGENT_PROFILE_MAX_ACCEPT_SUB_PARALLEL:5} +# Max monitor segment time(minutes), if current segment monitor time out of limit, then stop it. +profile.duration=${SW_AGENT_PROFILE_DURATION:10} +# Max dump thread stack depth +profile.dump_max_stack_depth=${SW_AGENT_PROFILE_DUMP_MAX_STACK_DEPTH:500} +# Snapshot transport to backend buffer size +profile.snapshot_transport_buffer_size=${SW_AGENT_PROFILE_SNAPSHOT_TRANSPORT_BUFFER_SIZE:4500} +# If true, the agent collects and reports metrics to the backend. +meter.active=${SW_METER_ACTIVE:true} +# Report meters interval. The unit is second +meter.report_interval=${SW_METER_REPORT_INTERVAL:20} +# Max size of the meter pool +meter.max_meter_size=${SW_METER_MAX_METER_SIZE:500} +# The max size of message to send to server.Default is 10 MB +log.max_message_size=${SW_GRPC_LOG_MAX_MESSAGE_SIZE:10485760} + +# Mount the specific folders of the plugins. Plugins in mounted folders would work. +plugin.mount=${SW_MOUNT_FOLDERS:plugins,activations} +# Peer maximum description limit. +plugin.peer_max_length=${SW_PLUGIN_PEER_MAX_LENGTH:200} +# Exclude some plugins define in plugins dir.Plugin names is defined in [Agent plugin list](Plugin-list.md) +plugin.exclude_plugins=${SW_EXCLUDE_PLUGINS:} +# If true, trace all the parameters in MongoDB access, default is false. Only trace the operation, not include parameters. +plugin.mongodb.trace_param=${SW_PLUGIN_MONGODB_TRACE_PARAM:false} +# If set to positive number, the `WriteRequest.params` would be truncated to this length, otherwise it would be completely saved, which may cause performance problem. +plugin.mongodb.filter_length_limit=${SW_PLUGIN_MONGODB_FILTER_LENGTH_LIMIT:256} +# If true, trace all the DSL(Domain Specific Language) in ElasticSearch access, default is false. +plugin.elasticsearch.trace_dsl=${SW_PLUGIN_ELASTICSEARCH_TRACE_DSL:false} +# If true, the fully qualified method name will be used as the endpoint name instead of the request URL, default is false. +plugin.springmvc.use_qualified_name_as_endpoint_name=${SW_PLUGIN_SPRINGMVC_USE_QUALIFIED_NAME_AS_ENDPOINT_NAME:false} +# If true, the fully qualified method name will be used as the operation name instead of the given operation name, default is false. +plugin.toolkit.use_qualified_name_as_operation_name=${SW_PLUGIN_TOOLKIT_USE_QUALIFIED_NAME_AS_OPERATION_NAME:false} +# If set to true, the parameters of the sql (typically `java.sql.PreparedStatement`) would be collected. +plugin.jdbc.trace_sql_parameters=${SW_JDBC_TRACE_SQL_PARAMETERS:false} +# If set to positive number, the `db.sql.parameters` would be truncated to this length, otherwise it would be completely saved, which may cause performance problem. +plugin.jdbc.sql_parameters_max_length=${SW_PLUGIN_JDBC_SQL_PARAMETERS_MAX_LENGTH:512} +# If set to positive number, the `db.statement` would be truncated to this length, otherwise it would be completely saved, which may cause performance problem. +plugin.jdbc.sql_body_max_length=${SW_PLUGIN_JDBC_SQL_BODY_MAX_LENGTH:2048} +# If true, trace all the query parameters(include deleteByIds and deleteByQuery) in Solr query request, default is false. +plugin.solrj.trace_statement=${SW_PLUGIN_SOLRJ_TRACE_STATEMENT:false} +# If true, trace all the operation parameters in Solr request, default is false. +plugin.solrj.trace_ops_params=${SW_PLUGIN_SOLRJ_TRACE_OPS_PARAMS:false} +# If true, trace all middleware/business handlers that are part of the Light4J handler chain for a request. +plugin.light4j.trace_handler_chain=${SW_PLUGIN_LIGHT4J_TRACE_HANDLER_CHAIN:false} +# If true, the transaction definition name will be simplified. +plugin.springtransaction.simplify_transaction_definition_name=${SW_PLUGIN_SPRINGTRANSACTION_SIMPLIFY_TRANSACTION_DEFINITION_NAME:false} +# Threading classes (`java.lang.Runnable` and `java.util.concurrent.Callable`) and their subclasses, including anonymous inner classes whose name match any one of the `THREADING_CLASS_PREFIXES` (splitted by `,`) will be instrumented, make sure to only specify as narrow prefixes as what you're expecting to instrument, (`java.` and `javax.` will be ignored due to safety issues) +plugin.jdkthreading.threading_class_prefixes=${SW_PLUGIN_JDKTHREADING_THREADING_CLASS_PREFIXES:} +# This config item controls that whether the Tomcat plugin should collect the parameters of the request. Also, activate implicitly in the profiled trace. +plugin.tomcat.collect_http_params=${SW_PLUGIN_TOMCAT_COLLECT_HTTP_PARAMS:false} +# This config item controls that whether the SpringMVC plugin should collect the parameters of the request, when your Spring application is based on Tomcat, consider only setting either `plugin.tomcat.collect_http_params` or `plugin.springmvc.collect_http_params`. Also, activate implicitly in the profiled trace. +plugin.springmvc.collect_http_params=${SW_PLUGIN_SPRINGMVC_COLLECT_HTTP_PARAMS:false} +# This config item controls that whether the HttpClient plugin should collect the parameters of the request +plugin.httpclient.collect_http_params=${SW_PLUGIN_HTTPCLIENT_COLLECT_HTTP_PARAMS:false} +# When `COLLECT_HTTP_PARAMS` is enabled, how many characters to keep and send to the OAP backend, use negative values to keep and send the complete parameters, NB. this config item is added for the sake of performance. +plugin.http.http_params_length_threshold=${SW_PLUGIN_HTTP_HTTP_PARAMS_LENGTH_THRESHOLD:1024} +# When `include_http_headers` declares header names, this threshold controls the length limitation of all header values. use negative values to keep and send the complete headers. Note. this config item is added for the sake of performance. +plugin.http.http_headers_length_threshold=${SW_PLUGIN_HTTP_HTTP_HEADERS_LENGTH_THRESHOLD:2048} +# Set the header names, which should be collected by the plugin. Header name must follow `jakarta.servlet.http` definition. Multiple names should be split by comma. +plugin.http.include_http_headers=${SW_PLUGIN_HTTP_INCLUDE_HTTP_HEADERS:} +# This config item controls that whether the Feign plugin should collect the http body of the request. +plugin.feign.collect_request_body=${SW_PLUGIN_FEIGN_COLLECT_REQUEST_BODY:false} +# When `COLLECT_REQUEST_BODY` is enabled, how many characters to keep and send to the OAP backend, use negative values to keep and send the complete body. +plugin.feign.filter_length_limit=${SW_PLUGIN_FEIGN_FILTER_LENGTH_LIMIT:1024} +# When `COLLECT_REQUEST_BODY` is enabled and content-type start with SUPPORTED_CONTENT_TYPES_PREFIX, collect the body of the request , multiple paths should be separated by `,` +plugin.feign.supported_content_types_prefix=${SW_PLUGIN_FEIGN_SUPPORTED_CONTENT_TYPES_PREFIX:application/json,text/} +# If true, trace all the influxql(query and write) in InfluxDB access, default is true. +plugin.influxdb.trace_influxql=${SW_PLUGIN_INFLUXDB_TRACE_INFLUXQL:true} +# Apache Dubbo consumer collect `arguments` in RPC call, use `Object#toString` to collect `arguments`. +plugin.dubbo.collect_consumer_arguments=${SW_PLUGIN_DUBBO_COLLECT_CONSUMER_ARGUMENTS:false} +# When `plugin.dubbo.collect_consumer_arguments` is `true`, Arguments of length from the front will to the OAP backend +plugin.dubbo.consumer_arguments_length_threshold=${SW_PLUGIN_DUBBO_CONSUMER_ARGUMENTS_LENGTH_THRESHOLD:256} +# Apache Dubbo provider collect `arguments` in RPC call, use `Object#toString` to collect `arguments`. +plugin.dubbo.collect_provider_arguments=${SW_PLUGIN_DUBBO_COLLECT_PROVIDER_ARGUMENTS:false} +# When `plugin.dubbo.collect_provider_arguments` is `true`, Arguments of length from the front will to the OAP backend +plugin.dubbo.provider_arguments_length_threshold=${SW_PLUGIN_DUBBO_PROVIDER_ARGUMENTS_LENGTH_THRESHOLD:256} +# A list of host/port pairs to use for establishing the initial connection to the Kafka cluster. +plugin.kafka.bootstrap_servers=${SW_KAFKA_BOOTSTRAP_SERVERS:localhost:9092} +# Timeout period of reading topics from the Kafka server, the unit is second. +plugin.kafka.get_topic_timeout=${SW_GET_TOPIC_TIMEOUT:10} +# Kafka producer configuration. Read [producer configure](http://kafka.apache.org/24/documentation.html#producerconfigs) +# to get more details. Check document for more details and examples. +plugin.kafka.producer_config=${SW_PLUGIN_KAFKA_PRODUCER_CONFIG:} +# Configure Kafka Producer configuration in JSON format. Notice it will be overridden by plugin.kafka.producer_config[key], if the key duplication. +plugin.kafka.producer_config_json=${SW_PLUGIN_KAFKA_PRODUCER_CONFIG_JSON:} +# Specify which Kafka topic name for Meter System data to report to. +plugin.kafka.topic_meter=${SW_PLUGIN_KAFKA_TOPIC_METER:skywalking-meters} +# Specify which Kafka topic name for JVM metrics data to report to. +plugin.kafka.topic_metrics=${SW_PLUGIN_KAFKA_TOPIC_METRICS:skywalking-metrics} +# Specify which Kafka topic name for traces data to report to. +plugin.kafka.topic_segment=${SW_PLUGIN_KAFKA_TOPIC_SEGMENT:skywalking-segments} +# Specify which Kafka topic name for Thread Profiling snapshot to report to. +plugin.kafka.topic_profiling=${SW_PLUGIN_KAFKA_TOPIC_PROFILINGS:skywalking-profilings} +# Specify which Kafka topic name for the register or heartbeat data of Service Instance to report to. +plugin.kafka.topic_management=${SW_PLUGIN_KAFKA_TOPIC_MANAGEMENT:skywalking-managements} +# Specify which Kafka topic name for the logging data to report to. +plugin.kafka.topic_logging=${SW_PLUGIN_KAFKA_TOPIC_LOGGING:skywalking-logs} +# isolate multi OAP server when using same Kafka cluster (final topic name will append namespace before Kafka topics with `-` ). +plugin.kafka.namespace=${SW_KAFKA_NAMESPACE:} +# Specify which class to decode encoded configuration of kafka.You can set encoded information in `plugin.kafka.producer_config_json` or `plugin.kafka.producer_config` if you need. +plugin.kafka.decode_class=${SW_KAFKA_DECODE_CLASS:} +# Match spring beans with regular expression for the class name. Multiple expressions could be separated by a comma. This only works when `Spring annotation plugin` has been activated. +plugin.springannotation.classname_match_regex=${SW_SPRINGANNOTATION_CLASSNAME_MATCH_REGEX:} +# Whether or not to transmit logged data as formatted or un-formatted. +plugin.toolkit.log.transmit_formatted=${SW_PLUGIN_TOOLKIT_LOG_TRANSMIT_FORMATTED:true} +# If set to true, the parameters of Redis commands would be collected by Lettuce agent. +plugin.lettuce.trace_redis_parameters=${SW_PLUGIN_LETTUCE_TRACE_REDIS_PARAMETERS:false} +# If set to positive number and `plugin.lettuce.trace_redis_parameters` is set to `true`, Redis command parameters would be collected and truncated to this length. +plugin.lettuce.redis_parameter_max_length=${SW_PLUGIN_LETTUCE_REDIS_PARAMETER_MAX_LENGTH:128} +# Specify which command should be converted to write operation +plugin.lettuce.operation_mapping_write=${SW_PLUGIN_LETTUCE_OPERATION_MAPPING_WRITE:getset,set,setbit,setex,setnx,setrange,strlen,mset,msetnx,psetex,incr,incrby,incrbyfloat,decr,decrby,append,hmset,hset,hsetnx,hincrby,hincrbyfloat,hdel,rpoplpush,rpush,rpushx,lpush,lpushx,lrem,ltrim,lset,brpoplpush,linsert,sadd,sdiff,sdiffstore,sinterstore,sismember,srem,sunion,sunionstore,sinter,zadd,zincrby,zinterstore,zrange,zrangebylex,zrangebyscore,zrank,zrem,zremrangebylex,zremrangebyrank,zremrangebyscore,zrevrange,zrevrangebyscore,zrevrank,zunionstore,xadd,xdel,del,xtrim} +# Specify which command should be converted to read operation +plugin.lettuce.operation_mapping_read=${SW_PLUGIN_LETTUCE_OPERATION_MAPPING_READ:getrange,getbit,mget,hvals,hkeys,hlen,hexists,hget,hgetall,hmget,blpop,brpop,lindex,llen,lpop,lrange,rpop,scard,srandmember,spop,sscan,smove,zlexcount,zscore,zscan,zcard,zcount,xget,get,xread,xlen,xrange,xrevrange} +# If set to true, the parameters of the cypher would be collected. +plugin.neo4j.trace_cypher_parameters=${SW_PLUGIN_NEO4J_TRACE_CYPHER_PARAMETERS:false} +# If set to positive number, the `db.cypher.parameters` would be truncated to this length, otherwise it would be completely saved, which may cause performance problem. +plugin.neo4j.cypher_parameters_max_length=${SW_PLUGIN_NEO4J_CYPHER_PARAMETERS_MAX_LENGTH:512} +# If set to positive number, the `db.statement` would be truncated to this length, otherwise it would be completely saved, which may cause performance problem. +plugin.neo4j.cypher_body_max_length=${SW_PLUGIN_NEO4J_CYPHER_BODY_MAX_LENGTH:2048} +# If set to a positive number and activate `trace sampler CPU policy plugin`, the trace would not be collected when agent process CPU usage percent is greater than `plugin.cpupolicy.sample_cpu_usage_percent_limit`. +plugin.cpupolicy.sample_cpu_usage_percent_limit=${SW_SAMPLE_CPU_USAGE_PERCENT_LIMIT:-1} +# This config item controls that whether the Micronaut http client plugin should collect the parameters of the request. Also, activate implicitly in the profiled trace. +plugin.micronauthttpclient.collect_http_params=${SW_PLUGIN_MICRONAUTHTTPCLIENT_COLLECT_HTTP_PARAMS:false} +# This config item controls that whether the Micronaut http server plugin should collect the parameters of the request. Also, activate implicitly in the profiled trace. +plugin.micronauthttpserver.collect_http_params=${SW_PLUGIN_MICRONAUTHTTPSERVER_COLLECT_HTTP_PARAMS:false} +# Specify which command should be converted to write operation +plugin.memcached.operation_mapping_write=${SW_PLUGIN_MEMCACHED_OPERATION_MAPPING_WRITE:set,add,replace,append,prepend,cas,delete,touch,incr,decr} +# Specify which command should be converted to read operation +plugin.memcached.operation_mapping_read=${SW_PLUGIN_MEMCACHED_OPERATION_MAPPING_READ:get,gets,getAndTouch,getKeys,getKeysWithExpiryCheck,getKeysNoDuplicateCheck} +# Specify which command should be converted to write operation +plugin.ehcache.operation_mapping_write=${SW_PLUGIN_EHCACHE_OPERATION_MAPPING_WRITE:tryRemoveImmediately,remove,removeAndReturnElement,removeAll,removeQuiet,removeWithWriter,put,putAll,replace,removeQuiet,removeWithWriter,removeElement,removeAll,putWithWriter,putQuiet,putIfAbsent,putIfAbsent} +# Specify which command should be converted to read operation +plugin.ehcache.operation_mapping_read=${SW_PLUGIN_EHCACHE_OPERATION_MAPPING_READ:get,getAll,getQuiet,getKeys,getKeysWithExpiryCheck,getKeysNoDuplicateCheck,releaseRead,tryRead,getWithLoader,getAll,loadAll,getAllWithLoader} +# Specify which command should be converted to write operation +plugin.guavacache.operation_mapping_write=${SW_PLUGIN_GUAVACACHE_OPERATION_MAPPING_WRITE:put,putAll,invalidate,invalidateAll,invalidateAll,cleanUp} +# Specify which command should be converted to read operation +plugin.guavacache.operation_mapping_read=${SW_PLUGIN_GUAVACACHE_OPERATION_MAPPING_READ:getIfPresent,get,getAllPresent,size} +# If set to true, the parameters of Redis commands would be collected by Jedis agent. +plugin.jedis.trace_redis_parameters=${SW_PLUGIN_JEDIS_TRACE_REDIS_PARAMETERS:false} +# If set to positive number and plugin.jedis.trace_redis_parameters is set to true, Redis command parameters would be collected and truncated to this length. +plugin.jedis.redis_parameter_max_length=${SW_PLUGIN_JEDIS_REDIS_PARAMETER_MAX_LENGTH:128} +# Specify which command should be converted to write operation +plugin.jedis.operation_mapping_write=${SW_PLUGIN_JEDIS_OPERATION_MAPPING_WRITE:getset,set,setbit,setex,setnx,setrange,strlen,mset,msetnx,psetex,incr,incrby,incrbyfloat,decr,decrby,append,hmset,hset,hsetnx,hincrby,hincrbyfloat,hdel,rpoplpush,rpush,rpushx,lpush,lpushx,lrem,ltrim,lset,brpoplpush,linsert,sadd,sdiff,sdiffstore,sinterstore,sismember,srem,sunion,sunionstore,sinter,zadd,zincrby,zinterstore,zrange,zrangebylex,zrangebyscore,zrank,zrem,zremrangebylex,zremrangebyrank,zremrangebyscore,zrevrange,zrevrangebyscore,zrevrank,zunionstore,xadd,xdel,del,xtrim} +# Specify which command should be converted to read operation +plugin.jedis.operation_mapping_read=${SW_PLUGIN_JEDIS_OPERATION_MAPPING_READ:getrange,getbit,mget,hvals,hkeys,hlen,hexists,hget,hgetall,hmget,blpop,brpop,lindex,llen,lpop,lrange,rpop,scard,srandmember,spop,sscan,smove,zlexcount,zscore,zscan,zcard,zcount,xget,get,xread,xlen,xrange,xrevrange} +# If set to true, the parameters of Redis commands would be collected by Redisson agent. +plugin.redisson.trace_redis_parameters=${SW_PLUGIN_REDISSON_TRACE_REDIS_PARAMETERS:false} +# If set to positive number and plugin.redisson.trace_redis_parameters is set to true, Redis command parameters would be collected and truncated to this length. +plugin.redisson.redis_parameter_max_length=${SW_PLUGIN_REDISSON_REDIS_PARAMETER_MAX_LENGTH:128} +# Specify which command should be converted to write operation +plugin.redisson.operation_mapping_write=${SW_PLUGIN_REDISSON_OPERATION_MAPPING_WRITE:getset,set,setbit,setex,setnx,setrange,strlen,mset,msetnx,psetex,incr,incrby,incrbyfloat,decr,decrby,append,hmset,hset,hsetnx,hincrby,hincrbyfloat,hdel,rpoplpush,rpush,rpushx,lpush,lpushx,lrem,ltrim,lset,brpoplpush,linsert,sadd,sdiff,sdiffstore,sinterstore,sismember,srem,sunion,sunionstore,sinter,zadd,zincrby,zinterstore,zrange,zrangebylex,zrangebyscore,zrank,zrem,zremrangebylex,zremrangebyrank,zremrangebyscore,zrevrange,zrevrangebyscore,zrevrank,zunionstore,xadd,xdel,del,xtrim} +# Specify which command should be converted to read operation +plugin.redisson.operation_mapping_read=${SW_PLUGIN_REDISSON_OPERATION_MAPPING_READ:getrange,getbit,mget,hvals,hkeys,hlen,hexists,hget,hgetall,hmget,blpop,brpop,lindex,llen,lpop,lrange,rpop,scard,srandmember,spop,sscan,smove,zlexcount,zscore,zscan,zcard,zcount,xget,get,xread,xlen,xrange,xrevrange} +# This config item controls that whether the Netty-http plugin should collect the http body of the request. +plugin.nettyhttp.collect_request_body=${SW_PLUGIN_NETTYHTTP_COLLECT_REQUEST_BODY:false} +# When `HTTP_COLLECT_REQUEST_BODY` is enabled, how many characters to keep and send to the OAP backend, use negative values to keep and send the complete body. +plugin.nettyhttp.filter_length_limit=${SW_PLUGIN_NETTYHTTP_FILTER_LENGTH_LIMIT:1024} +# When `HTTP_COLLECT_REQUEST_BODY` is enabled and content-type start with HTTP_SUPPORTED_CONTENT_TYPES_PREFIX, collect the body of the request , multiple paths should be separated by `,` +plugin.nettyhttp.supported_content_types_prefix=${SW_PLUGIN_NETTYHTTP_SUPPORTED_CONTENT_TYPES_PREFIX:application/json,text/} +# If set to true, the keys of messages would be collected by the plugin for RocketMQ Java client. +plugin.rocketmqclient.collect_message_keys=${SW_PLUGIN_ROCKETMQCLIENT_COLLECT_MESSAGE_KEYS:false} +# If set to true, the tags of messages would be collected by the plugin for RocketMQ Java client. +plugin.rocketmqclient.collect_message_tags=${SW_PLUGIN_ROCKETMQCLIENT_COLLECT_MESSAGE_TAGS:false} diff --git a/skywalking/agent/expired-plugins/apm-impala-jdbc-2.6.x-plugin-9.2.0.jar b/skywalking/agent/expired-plugins/apm-impala-jdbc-2.6.x-plugin-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..0ec6c0b94c3266c867f68805f335fbde2ea06b9e GIT binary patch literal 30786 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 F{s+~!BR2p5 literal 0 HcmV?d00001 diff --git a/skywalking/agent/licenses/LICENSE-asm.txt b/skywalking/agent/licenses/LICENSE-asm.txt new file mode 100644 index 0000000..afb064f --- /dev/null +++ b/skywalking/agent/licenses/LICENSE-asm.txt @@ -0,0 +1,26 @@ +Copyright (c) 2012 France Télécom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. diff --git a/skywalking/agent/optional-plugins/apm-customize-enhance-plugin-9.2.0.jar b/skywalking/agent/optional-plugins/apm-customize-enhance-plugin-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..95fea1f5305410523b963ffa8071c843e8726db3 GIT binary patch literal 33367 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%0DSj@_fZ9VUe3To*OOtw!8{8H5%uu0z5uPCB+O|Yt zb{!Vgk+D4hyk!}+=G7j_WDn%WR>YhK?M`M97Ypui?{C>e$>Ke(&tAWg-tyP2IfE{J z9J~XqLuGLr!lHUQDF9%{XFXM(q_^ZMaq{THT+D(ZGTOcIE37}XCEyamx1F|k({9a= zvijmlhzhL3DTZTPmMaW(dMHtrj> z9k5Vh7624M2!|MnC3NVwbU47D;6$rS;%F%;0%FZKh*nE4f8o2Ik_w$axur8zuGKqCKD+A(N(P^p9mB$_V>N3BUDkF!g6`+Yr?R4UzI_ zK>ET=MHU;+4hD?6K7s=S^9lWx#R*W6#Dl>V3H?!|N0Izh7K>S{pu8&!&3I(Q3Xmgf zg|~3xIHC*R*0kHjG>tm)=Nzjvj51@DEm;GyLfeFMX;(gJ&Dx>93SQnXDt68ow3N@Qs{rcasdYiefNK( z($=oXA}Bru^b%=ww!t8@VL1Wj5NNUJq~D~a6k*L3({~KOmTg?N&+_E?++GlT zuITNe_KWZ(ryO~n=H55>FWuT|(`FW^Y>Nijo_2_A<3Da5S^FD##TpMv};_D7A!U^S4F2FyQGg zNGmkc(f0Pyf(UaDjNIDV&2_#s%)$+zTI!5C$G23KuCN8^#Av1V=f$X)u1Ph^_GGT_ zG^goT(H4cnB7D#aWe+Zu^uc|}=2@ebgp_f)#51%HTJd(mwG-e3qZXIVUW;adU;v0s zE3h8^0vzw1jDUoLGC1fK0Med_;i0{VvJfmx zy)HzXv-gw-MCK@#22A4Fp!=W{V&tF_I<}EvM3HKo#%8nIa{<{e(1fC$K#PIQk{AQr zfFbQ_Lk^TzrQ&FaZIZ^r4_d(s6arE=p{NgRsAi8_1D~yhyh-_|cZIzy#+8tZM-@r- zFMI%|v3eM*Yss`b$OGC|8Vu4sW1*zyK4k!y4 zHYXhakW7mj$5G5Wa=vlbmk3YXSeBq^KC6s1C0kGV3jlSzlJ6nh zSJR}0o`+^jIm8|!CSLukUKts2p|S!{`>fnh?CS3G<9D&^X_OX_PlxQ-vfR@ATvIK4 zT%LQ_ljm?2l>|<=2+bQU`ar%#(B|wa+b115wK0{J{Z+ZzkV{y?nIDWoReK*Mt2Stz z(@;34nIr(nn79}oKh9Vv$WGxjlI`UcV|MP1paqklq8N)TiZihMq|Z^Mx@gig_Y-oJ zb#L@@J!y%`xZQ%XhsbRXU21-2g5~TUg*E8V<(Nf+)EGYeWd7v0^qt#1SKF?#MJ+b1 z)c2+Z?jl8Je0uqj=Kxn%_1dP1jz*k^fSI2M%mt)Hj!u)TsbRRhUNM4d0^fh z>1Rtf4dOX7gJvgqKK?@d&s3})mi~w#_Cca)nW6NYGUq-xq_p)9woGXG_Al(c_#K^> zZyl(BOx>gi6~JmJK-kCs4M~lg!87~%Dy!)Y4D!c`($f>zf?AA*$R6pLi-BtM z`PJ$=%qZJx=@PGzH^_FfaMVhvI-b(OjcHcySL(U4&}Z;xl+`#B2C1JJ3>f*WG8$CL z+j(G;yGl;G+#%rA3_$?xk|UDSPtQ;(6vpf9e7JPwK7Ju%Fqr8Pn&0>1~#B-f!ys~wVPTN=dW&0LsH{gV-+NPdNa`_SKe z`2XaP#r~H5{?j2VIXQe3g8!WYJ0h!~_}DCyShuvH!sZc#!RECYDaiZlF~U*S<-x>F zUgh*IpUTvnny{a()g>TAy?4nyL8aUGW9|x3a%>-{`6g^Pr#UUhBvLlKR(YPKr#qfG zX7cW@r1`#i-;(={xb??4tb~mpuN1+qrs-C=GF;>zKyR|KcNm)(g%J{+9J?^O-e@DTD#nhYR=sCj5IpLxa9Bq4 z5O6TZiWgMPP^aJJg7a*!-bd`Yl+hzaAp-V1wx)O%Z@KZQ4d;_F=NojeC=BjnK-O5s zq>W1eJF4f5Jii!2>#|!bMKL%HgcP!vEh38`+%eq@mK-wX)h?Svv(1?Zr?{D!3|&Zh z;nvjk@zOWTZidx}+#Jaq?`)qO_cj)5oGrfs#>PNr?}HYqj2zs;HV2PM{)n&YWFaR? z-_IPX(GOItq=UYd5rN=Zr12&JCuXM{9Lk8ZO7jXG#VAZAxaTIrfD`80pZoQELl|Y? zl1`}7DOCfG{D%YLIWtLPZ`7vzom_sV&9H>cOmxCt2;dp;;goBly2=GJmI3$d(zoRw zPMLg5i8)h495s=NGm=>$T`*nW=~}NLCOnFJJxq_IzQwTg;&ASVtI{9wwM)dnltK*~ z0}i%*+Av|f-mNiDUV$}09=vXv3~>}^SXngb|Du(5b`b>VX7<8=$7fjBIPFz?z({(! z{6fbZ1PJHPCG_~2yIXW-S?+`PyUml5+eV$Tak{AZyxYz$(8pv^bDs{C!&%q9m~POj zDtDkV3zx9Re|(LcpkloOFw@EcWrpM7vsBn1Lnp*fuXHn~-c)s6Th(LYMm+2(LvJkZ zDDY7G9t#BYD<7{~a37_X<92ZfB|Ptqy~z!@=8T^als2RrH8tEC0>e5)1NsxlIp>tY z-Kk2uSCuQ2rB|s|hj?g=nVU8HmI1`J-(%H4gG4GIkCU1fLRu;0Bh|Yr2214Tn}E;B zVFsWxvzV4f#Wj~=dqPwj4-dfHClWldOK4pMg5Ob_A?(i2XbflL7(M}USRm{2DQ?rn z)a5`-XHE`?z@M#x4eRs)HCTCksr4FS-h0IsL^Ig|#b+iN=%p34gQhf_S&OTQLcM&U zwpLYOC&|f5C!@>^Ir?@z-WYdfss|{IShL2w=BBC?^Rtv(ecDP(sB_`)i!``u&7#&o zNIfOTrqzf7gX55n0QKr-tERd)=Rye;As6&>MbCo<%Tc*259*|R?XF+-kLNZ$HBN=CqSU_72qGX7JGci1-#HO=-skIO8Z=GNYT{HgSiJk5s?q1K*yrgW)i+g== z2o9%_?^wwXc>My6^3#3EFbUoF5CD8${yku?BN$x2BJRa$wgXWCx}OKSC$fL_l4~cc zZnnN&G^W{dzfv#TiwqE-(r<%^g8@5PTbe)`QIjAO74)RXXv< z6CXck5Vg)6bwC}G&l9w=*fezhB1&Tz>V>s=53-}V(WJRyC-do@gmsuuhzNe`?q$L& z+c-|zSWVXHqQQ(6i_Yp1pWz-P{IU}R?H~@$NfLmAgh-(TZ#js39E0$vFfsEC>dl&A zpevkiBeib_^ZCOUdy{KC(!{w!%&GFN$0~PVbwvm3bXypzm`In)q|7+ zKQiCC-&}PH>*ug4b8~0~g+{eIl|=vS_VM@?ghlir%S8Xt7NdU1@_)VGBrGB?A}cH+ zD$uj1wm-fKTnhTghhAHmms*siB_@-fWH;6Xo6&34R1!H%9S-`SSLL$)XA)b{k7Z0{+zy_>3FuA<*WM!vq6N%tmV2=GLF4c1hcB? zR?}M!F{7H=vR0LJu~qx$I<_Zz3xTR>C=iZc5D49D=gBIeE$j zdMY?Ps?xH>=B1G{_LqPj9OdVDf^)A7hskrTT+@9LcSvOW>_H`fQ)7Wk zf^?i`g46+A?3iKVQBV-6BwzTla z3Ht0#X_=!od7MMYjW9AdpLgE6|94dWu?yvCq6mbKt|SzBQbirqsHwk9!kn) z$b$17+Q!M~;47?dsfn*JrN^{6MLE!RR&xXVAb9E&cIho0TFNZO!(`k-`*>-fL|;0@ zBDW!)RlB5l94V_l$d}ty6aI@QeRFjeTa}WCOtm4?ze0&iIhtXqphtf?XZANG_B|F? z8Dlj?{1$0PC)N+PqK@U_zo*xVDbqQR{}g62w^wsG{j_jOrUEyM>&1SWb6;M~(1%^F zm3adFRzB7ejJwv_PPQ#lC}9o@JPQClWJcKc% zLx3JGp&w=hQjx7t)$oyHjiR3Gvk&>;S)Rvo*Ddn(pbcO_b3->yCc(%8g56h;<;x@O zmq+Y)egiXzM^g$?B42$6%zM>~3y9&>WcB|FBpbMUF|dx}!JK*BIEwo4lo-jmIP)=u z^Mv?UxtaOroLnD)Bugw#N7U5r)AV|4>A4wo7Mc5JWsOHKF~vs;1hSZO*fgi6bWu?q-nM8b#vR>1=!(nU-UnSF zJ}_~stG3la`v+Yq)gNU|YN?|Bpevb4A9STI2K66wWi`|GJB|UzZ_GJNh|o>FGnXgX z5{8r!wA$iBr|KAL*dMJ$_&qpxBQA&x4Y0U(53 zl0P695L*+Yu7e7I+B$t3obu$r>tk%2n551Cs`kL-lcfpgaecs6ThuQQ(G{xq8X;}k~Fv8yA3pN*%&yS1t=xKO> zLJdc&T^}#!U2SyI8MH6yM51JhkAk`Q)3%?QVkfkUjj+fXLD#{V{Aau$z&}X14dXWS zxT33@AmkaQPv|>BvgJj?Hp=*>7e8Mg1TaSbvQQ55uD%{;&bxkTLX7Q9XE;hzb(nUc z^hgWi&h@|)xXOB_=&y8-nrIm?3c2j@GF+^{g!920K)0SwhZ$Oh9Q_Ki_mjLWMs}EP zu94hzGlHd-`9CjPiE{nXVoIS@sc!sN1eQF;><=v#TIi{UCd15GVK;Mnar5G)I!0rn z8f59&9b2bX-cvzhN&XPxFrq;P!d=_Knm)lJ(M#1QAIA9cHHsA@3~#ZBHXH&PJ66eG z-G78QQ_?4rMFruFrcLSxX4VNupqw6C80HEw*AR72w5{c~%-5xq$0ra36;ofC{d0-J zf;ud`Vkuu}k$^MUr6(KcBjXq>qcw}Q%|r4MZt0MtoSJwDt)ixJLq1cOcdD}n9HKj& zw%QK`CYDz`kw+9|0k}l;R9V&|nl`Bv-W_7P?gbmjXh$>u;oAb<2YaKFyb0xM`(`z) zEKr(bW-F}klS%9&Y)Q^Z^S^A^i!D6PHi*s9c?}}_%ylgHYTAe&*x47+Tsd4UWkj!K zGZvE>Xa$IWhOdn~;ZM;6b#7v{^4 zg1yJ=pWyZQ)r-eI0Cx<|8*<>i?$*ZF_s=*IZJkggIvcsD5nAy7F!SA}+Q}+st={+S z*vqMBb4QL|n@|}2{{Y<1m=ZN=rPLUtD;CbE3()flpvm1B{tloY8Z7k>4Sojx(cr=C zJ@Px;rO0g$Pg$`$@SzXm=LuX?pcs@ zLrrUFUW_9fa=g0B#qorj*8&~hxfiS0NP$&`m%7063Pi+IztAn9<`)k~Jl6R!9j|JK zYTHA&!f)Gg;d}zo)^7B_2}g|%(cNx;tXTr|5bPAGnrYgac&3?-vy3&k zmbu}$E6{QcFutA*IW&YYi}wV;y6dHs<8*KJzeZS^LIm#SskB3~pT7P&Z7XCgHJn+1 zOHWd+ieM72A>|QPk1NOAW*z!94D8jIr4tH?0xC0OfcN0{vb`MIP>Pq*aEI8y$Y-%N!AA+UiMz2Wei&JYEy z^UeUb1HR1nzMQ!6cL$ACZ?yZZn@GbXff@R{KD=Bj6<%PW76?(}s@$Aq-E`@X% z{Bd8B=g)s0oESurg}aYb(d?tW;IAK?zYQPtUG)F*RS792Y%#<)Uamj9_iLM55h#zJtcWo52jVl%M}g4{+^#ZfaO zZh$=gQHzW}b}SE*OK~}-wnC=K08nnI+0{VMjo4C{*23LAiE)~y@bf2c09m?$nS)eI zPmDNj3a>-SXgKKQhS<;rQ45%Q_eK=*GGUcS7s2O}N?gy>-%>Ah3f7Mbja{y2KQqx} z=j;rMjUKl(u zyG1q&+|?PhG>QV-Qs78jB|~7V_Y-x&K7RA<3o-mQ znsEs6N+(Z`>(u)vN9;BGlWuFTSs;Rah>MS0L9l(2{=)^UKVqW!Pv+gGbT+bxXv}fr z!mUFux;KV*3eKd72w4(jPGBrM_;~oI6PzSO<^MK3LahBk$68 z8hqdPkCy7?=qt2=dMc#2fb^3(waaAqeA<=OF|NsTk^r;_jdke?Nf)PZ3d#&4kmfk+ z@(Xt%w^MpSlB1FC%BSxK_USi;50bz))?k}&3DI&n&z}5{YVKad@nJR+5gcbL3kX8b zs_vO zf7kqT=JT2B`kp!WeeU~Q%lAqye}hf&Jffe6Jn2tA5?r)aD_6>9v|s_s+Jc~zMa)*o zy)-<8qu0Hyt02gRb-R3yRPPaa}5l?h) zc$XZxZ+c6{WqUIEX^$8MuHxdCH&u{=_fo55rJ;3j&6`Lz=sEg{q_am~B`-pf4vO3i zot_DxGoj5-EVF6n*E`p=`79`d$-Bd`<f)B#AbT!t)AHiBDGVEkCx5b7@CXi5*Dp$zdgU1!>Iq^T-*%BWl6i`YU- zA$dkBNeYvlDVd@ECA}zEtW8GhF~b;0#=?+fW}#zn)#rZ~pNjizwk%?afz7*~K%}s* z=RYrk!oIfMzgyujPUH;Z$YX1Xk!6lB7JCVYQc z%oaUi=zq36k^CLCC%l$K6OB3SF31u3w3tF&ZEzyjtrB1-DY<$}fI^VdEY8Vp4F zH#1tCO6Bg4KTyz=kbR}~D(bNelazu`cJxyxVN@E2kj!nvzP_G{Z+rpT@UL_|73K#Y z#22tRn$@A;l7P~?h!p#jiyAR`2(5e4hN^e0R_NTRlJ9DVILLCJK7X}XM}`CDtv?O) zC3~UBYELgS*PU4;A~9o~`{CuW2#B;y&YB}lbNaEiGY$a`A=iu_7ar$fXz`J_=v1Gz znk^$Ztd!4H;|D{iyi#LB%6rl`UACpjGwTDz>(1!yho;VV(X{(jbZjj4W~3e{T<|T7 zTx8_r%~4Oh#IxqqT;jawuK$Fau2u`9QB4DSZJ;`~0YYdd(V{u#=<{iMnUs?uj{R&+ zJjZ+Au}ND?BkeJ9D{t9?9q2B9=I1x9e4FC>un`<4hV&| zm#ni%55 z0P zTZzHz?~ckyIPzTzK94YP5wt9OGpmwNVd!0ZYvYXv>G`z4uv^{Y=SrA9Px`~E3e{$2 z66IHzi&^~B8>_&%-!gX-Y8IxLsW4nyTu;TzDmq-3*-u+3n59h8e0c`eLEb z18@qVnW%b=uOE>cK3zsr=?p4%Pq69!?iaRdY`;&lkU#MFn^O~ z1515t`$5I}anPV|`0SCIa$nIio^r=-NQpWjtATOGuOy*GKvsK4wR)AX6&9~%peNEr zGOVx!oImZRxzZj#u3wuGcI)Lj^F)iQlWYKOnM3=!dsp!a-BZKku{p94I$Nh&l}^63 z3932rT{z0WPce`!lr^HMLGE~aMLe6SyJ}MfteMt~a@ac_&9(B<35r&5ovx)4rv;pC z9pQT$mD3>CGA6k--xvvS-P#`~CphNXAFB+VGaI7qQ`BtDMzXx1==d({(g&0q7Mr^b z3t{A_ob}5O>7WT5mYw$(%AgBWd!--W-}ls_Lzu+MUXP(}3seXV}{tiih96sxO^by2tI zb~}a}|35yz1*Nv1;A!VhGi$K4Z<*aFG6vc<)!woYKg3~N$GRBJki;)2*MjMX1d7m% zjkpA|HU}eE)jk`kv$_n7MEugNK!KFgQh6ufSgF% zl;fz^Ap&)DmYKr-%0{z|&SS?e3=efH{lk=3kE(B(0hbKa1ZVvDy6 zuUFeOF51)Q4&}t2f+4a7C>2?x>%^|r0k(Ef!Q&Uv8|usFmZJR$9z)H+IN=i~ZSi z{e!|je_f^Rneqk*ce`Fe+_Mua_GzG*uWsrCPdJG@>CX91-Wr@ysbutcE>{|K=hi4)SsV-u;gx zdonCjg=HE9IIgFLp9>P@_dYS0B4OCvXL&m;h-a`=`edGyDA?!#_kP)kvC+`H4TTH= zEoE;m9ckM{p@}%t(*blvZcIg`6S{(^Y%X2-QqNxcxI8hJ=PyKsVmMAi5wucJFnjY-xFTn>*av2j>ME-h&b1oeTFUEFuDHS2+PI{CsRZvwVKe{RS5j_iF-~)U!uqQ!xynVE`RS6@9nha=mi4pu|0wMo_6~- zfR-2bm}U=#`2F17MW#kx%u)>D{ZoF{8%awh`Un=qhbQ0BoIlBOR2y-n+*I2lP4Ps} z1UMT!=RQojQN=*XKp8=zMlDr)FP?-{Qza<(|5E!zd3-Pu zIZ{OVRmtA@bACTBEGGvI{xm3wSq(&9ga&-R=+7ZKX(eOsdClxowzo8Ej>(iM$5Z1r zBV?DKkn4W6c;4#NeK+T)?mt>k2_Bz?LG=x|=0~Al@6Ctv@&JQGo(ZR-tS&-_F6e(9 z7PNji6rXGsrJrv&*Cr>%%=05K62;coO^xuR4;Yl{b)8+8f6}WE#0&RnZ5BGeYNGMz zy3+Z{8qgxCd-Xy=1akcF0Oc|HS1(Lk3uZ=#X%m`sq(|U)(hIa>pYn-OjFxPA9y6Uj zI!QMtmM~zJBjV{>$+Tt7+IdLhwMZT3x7EDwO5@9u74@yx>;&7E>JzKKG*nl145{%w zxOAdztnRPc; z-B57tN$~>3PWNx{?PjIK+PGi;n)=R(OECWQf_Bru^-IBv{&d1N<5T(=aw}H1#Zv;C6GW~(`x0^X!pA@`A{)xH22{pua32E!N%p_h$ z_GWjNo+-qbgal1>JRo-D!0`u5ga0o$%>T%W5~JY&e%*gK(kEW#cnI#^pLu}Yl!fq` z*pVpje<=U=B*JbcaXSz%m;Th`@A49aP&m3LA)5?G_r%Nm{|dED{v<@ib(1FKfbCrD z5&?qs`pH=%Rwkq;XyE6H9XSc^<-Yh0X^a?-up0No4mb+z4*T=)%q|QFVo1VDGhCz{ zFEEL{K<--fOAJa_Cx*)l;e}g{;F=JYv=N&itZdN7>tja)SQCG~RR33b88I$lK5ysK z$ys?XxVu$R5MvT1*l?LbynIwASg!v)Z%7PGn4sBtojS3*0sqP($mS87AdEilyubEg z_y33wRHBg$$x0=HiYh$P`w#GSHR&VsfSds!0>9i6P*OOZ zc;@Jcxd39;qr|WD8qN#32*)jI0m=iU;-8G;M5*S(sp%Iy$ei;eV=j!Er-pz?DRv(G zm#b(Gqzh`fcb|xwOv5BcB+%IAxA_#y%SsezL83{&sk2YgX*8_xy=Bp^;URp!#`S3Q zh45@nOmECeMn|fg!}id}pWYhmJ1IxDaP9`3ywH!G}ltD>{?%czAokJC&E>jTTml=JT$e(j)`G*C7|8)+f z#07HG#wZFQM_*|<{a`B&B60Cn9Q+uL#wue%LL7ZnrukoJ`h*pHGo$R(%^l3 zy5df1^UF1Iy;qUWXBI!2ui3rGI8E<+d*0L`Ogo%`ccUv-k zCryQFh?6GNAm*g+6o)X@BsEeEopeH}K&-1Wa4LpZxtdin4An)`LFUmkXH{#%IQPWQ zD72GQ4*kkssyrmn4stgezL;?Cu7}IPdxeS`G^J zU>$FZ?I?WaNB&c5x+7(92KF1P<~l@F7fp}BMSMj*Yh%K4@yk#|!w(Qd#|hEI;!qmC z7;EaZ{hgpX{AJj-FyJ_)=Fs?M(C;u6nmeb~8VpstswZp9_FIX5WX&Dw4>-8>G`X2l z?N3D2v%=F46;G^pi89g}i-_892+`IB}`;_4{ar7hJML&(vApBV$poJ#Cn&vF>ADhJLSYVq0fKn_1F5%TK* zc;x~gE3RB>FF70Y>?2O2p%odgg{8)A)zT1bEi4p>`~34&B8Ta>=~_u&%)_WN85-CYgeuOPDrF^ zc%3u^t@`BvqH-eu(F~rIGZJWNvlZrXzm2G#U(SmVhod4#sniZG+&cufpJM6bQczRn z>b^sgA26GxFD6im`Ah(bssVC?;zlKUR z0g3|zYvJrRJS?-TlA3@-am+K63$F@~31y7swg@c)dWsOgiFGZO-I9Zo(zf|P;@RZX zU{s)65mV8CUf{mEAXm4%R>kl{IBaY~!Znh>C+QKOgi&P`nt>=P4w3xpy; z^d}|9)gSA@*^B-t(T3dp=TMWxY^MV-rC^i-S=SMPd{L{uqgoa??>9q*R~ojNcn#=d zw&QTd;vKtDUB=%rLM%(XS^fcfs@2Ib1DC8f?f~#3@bizv`Ybu|U7hh1SQ|p0^DZl7 z8!V_Wip4pC3+|(@1(5fh53qbV&Kx}g1eg4EX|x_mIzYOU2fF1;yKUt%6AoKOY53f> zG9^|~*UF=n3tJ@t)KD3geNDiTvy6uHyt*der|}6g91GpdTeK6z1-&V9T?F7~-xwhk z+2KgEKv4S+hb7d7V??&a>8l1&<&bqYG>Odjyw?J-(a?q*9LD3CD*QIY&r*21ST|ux zl>`m-{Y^*CTG z*mvP0Q647{6~XAG`toDY$rQ~*-scC35N;>ay89{HJ9i=rp9ZPL(7@M2w*$J+%HB>^ z%9f%-x2J@0CddZw)H+kbLCr_XL)ytf*f4hGn5yA6y)h@WVgVVH$Hvd``@vd8AiHQn zvo4FL9;1QJAO>BgLVoRFjky=v*bZ^zfpl;b)VdWH32&}BjW)CC4Z2jk9s;SseigBd z|D1uXr0|~Ygs8oM0rPsv$n#>2MBe-;r_yIPJF*Yn|C-+wopg!2*~&Ap5q**jN%Mvp zL$E4+f7H0XMj4by4Z+QEwp-B^2ovWW%_5skGRWsnfaFZo*@QM8l?t@GVoVGa^aOrh z8ZTB9-sqkqpy)O!87s#$n*WP(FeJ4S1{XR? z%-5%j<10YysXd;j;ldqvw1erx)_ekgXNnYi71bRj5{iZ_6i+Q3T_Wh^kTUsR zWi?pb?W1|*dJ!^``(~yssGSH2y1pG$bj$R!H}n9Oa$d8A6{vNFkQ5N=$q#?dDEbHh zb}+hLaLtg=6vbXjGQ`|D+w&Zq?6PJ$v-|-?Nd07GCRFFd8l@u`^!e_fa(_&^$Sj9` zlPS6v=5a<7g8}`#c1+QjnPP5jQIR?q*Tl!IsitHJBDjXpe0OobxW!^|l*m#n(;=Ze z`bZMPl(`~oXAqGFF#i-&Dyi8wK%--U% zTCWPHCC}RyUtVBjaF7jnR7PBF41rNUa#t6^z~CD+3n|@h=3py(8&nJ!nYQ@%ohj`< zAUW>PcRmP?gGUJF=CaHbuZkSoMpb5Uo2+fNUNAf@ddOhvFPz+zvoKW)e?c{jGSsp~q{Z7+6%+oJOQz-5_nI^<(zTtboQ0pl{2wq>4l zB<}sXlgDN41j~ki%i3Az5_mKk&rv@FIC#!X$gjE+J~U?>uDVHL_ktzq z6F#k5+6$%`OHy+O8~{+V$n=bH?Ns$!`hV| zW4nK7%yjd~KNMv25~~egK=g~XJubp2b$23YyWiTL%cGY!orla92v}qPVN7YPhfts< zm3jxxjP=cfGYLKq_RcHl)7hFuQ!z5UdanfEH^HXOZuq-F;DP-qSbGth7Q?PPYJG-f z{hFJbB1xs}BHxDAM)nO4Sv_SSHHOwmq|Nz_W25C z5Xd(0%pm}64C8EBi%Oyt$}GsYwedRv$^jKQ&q;K%?9|n5_1XMkeW$>120a&8p7`!o zb%sfK=c0wM8;G1J=9h9MuaL}vEZiqpWY^;3vzb^Xc*7bNeph{#h))6tw(dcd0V7Ej z8f#q1wCx>}!2E^*=Q;C+q`hTEOz88BNa>@ZwzW>uE?9`{4IQZ2_~kz^{g}GQ_9dlA zmp>B;$;N%A0z68gdy;4~@)&kIw#Qi?n59X~jF+E5>-Ep1Of=O}jVXHk)sSs;ZjmSR1%#2d$0m zddxQOYSvqG4WJN@vkKa+ij#HQ+%G&U#9gaTXf$MxmdI1)0$DTQ)%^lkJb^_bF&uXq zCHW2@&~J!11D?Tc$x(!Mj*@gu5pK;G)=QT0-ymfdpWau?c+k+4OWl09ZRbnO;lDkl z0dqc_&gaNNgNNcf&%tfy9Q@+q!W!1J0qeUPbxshU>Y)N;2ZG81OIvtr&PxhICNt)+ z#21fmxLqG+X7cW%eWS*5;pG?TR9a81q4ViGq+fV{H!ixQ!1M@1GEr z@`-i3$3Jc0K4&l@$3;xbtlD);20Z!|px^!w>i|6`sVPfHErj<^H-qT~V3#dM!rSpd zWl=c|*k0e6i*FpBTxxws`vLr#s@K+T1Y5%a0qIcvnyUY?R`TX0Rkw98rTsf4lDEI{ z=-cTVni>BsR@C3KI$FBB>RVZw+x)!&VE$Jr`gYcTYdrXWD#^~u+0@+TZwVy%D*{a& zZU3HB>c1@2$k@c(=I^bE+}{;0`Z9bG2U}~2mrrpUM<)koYhxQHeJ68U8zOodLo0np z$2yfon<+kc?lk1s;7Lic8_l=ClOQg`I112^WVyN2pYz1F%?)YGH9c|4ShKw0ZMix@ zH!eCM&g4VXIj!HI#C%kc)HyvF$xLBqthpG|UG)KK42A&I#9Uadtc?~|ZeB&Wa;e?q z%|jiFj9+@0d)gCOtG1r!Rel=x5)odfdSAjYTZ{o+)O1a#o;u=34=6uxSb}BKr<(p2 znBzFe(E8Yba)RK0EF@utd6|d$1px+!d=Y(p62VcRLc~UE8JRmujPe6FfDp&4I-C(8 z+k#>U>mDpGyBBHG2cX=p`c|hM+BEqAO#+0-<$XBh&D`a; zz`7Z>G<$2-vW*G6@f#_XaM3st@2;<{JTLg%#U~S4Fby&{q_l?g!`HKR4hdG`J1(w@ zC-e)GN?JxhgM1K@pwS16in9)hV7&*p z4&hTe4_a^vab_p%PR#Vao%wMjl9%t5rd$vvP3p6I9H@_I6^aoC!Z_z+*(!>`aZwpQ&G_s6Nazywmhxtl?+3&)7|%pfsaI~X2wGq^I3if>OPnti z4$Vj&)+^#ttVvJd7n}%&)^)n&X!lnN)T{a;-S6o`vfJ7^{^736XyQ6)K!JchK>eA! zru@scYG`Zy_go>z-xDop`(pX}HcpQJH26G)VVXDm$lOWp^(N@2u1A$}SXNRb2 zVk5mO78?8H9>sYr{hKwt{%W^C?}%+!_3?=e8NmelrbKX@IH^&5$Ycl)`r8*Kvb#ajwr__KNEB^%$XBkidc!6=F$&ZX zMtakAy?s5C5=Q8nPYLenJGq8SqREl0$@2Lz0-*Jf3m-X5H$Y`2WbA6XFB^|75Z|- zQ@bcczp+r?h~m9uiCl3QC*Ez6GQSYw=<@&RIHk>^U%d#%<`F<|Ar-hm$ zbI>%+B|u@feQ!Z7#P3KaxtX$kqP@G@!JN8saz@201BD`J(UG%$w|8YmkynOo_hW-{( z{<4Q&Bf8&K`5$4^ZvoD045DQFrxA#zED}HRb3T|RG=WmCBj9M1r9~0IJIMO(vdhi=4B|E?+|=bQGh(WqM4Zgn2>bU8$9Bij+z#&_w@_;& zxQwj;!m%CalTv6-omH=~C+DIOalLO(!K4Ytec9F8=Q0%f9eD2a>G^fV1~|+h*-YOU zl=4Ec(R(^ESJ&#tp!D18Nw6~n6W70<@HC1-)+31+3}+~52t^hi(p5(wm1EOWURvz+ z&rr`CMwdG5nXt833ME1Xt-G6E4C9a4tspg9i_!N;xNjYgv~Owd3j((R!dh}#KGVcg z#uEx#QDz@6Hp9P#4NJe(u!aG8_j()lEo*9 z9y^3Q5Slf_uX#w|iD%prv`6GK z#mU&i>98lfw0kx0jf+$xUxNOQ zs#)QuKpK=XHYAQE-Hn(nW?ib(p!IP8%$XKpVQ8WIWDOp7pEDuBouTP~)5VWYEdSyzD6%_4f-3O8Ft3-2!uXJek8pHKt$Ady>x-4TIZ@6$m^wzO$jy2k(O&fpBB% zfr9Rc=kfxyFLAmNINC%fk=2d%8t6E#!3IP+HnvO`jO{+n<`jV!*kOth1@JKwrNEoF zi5z026LSVA^RuwyP{I22Y@Zn1VU?aXW_A@=54KNdLCu3;4j37H_jO_2$KW-BcpnMp&QugI0C(@7 z-et~_p_csR$Z-AB;N$<$NE!Z>CRo21DZF=mS-p}_;cYpjMqSnldAp`ih(D@3Juvfx z>|)E6TH~VSNj;`_^y*{QyKvffkHF7ln@8H&A_7QK=96tr8S|zlnJM#26|217AdR8s z!3FwT^Q~PO%K8I`Sf@=LGzs%iN5QL?xz%lKO7)a062wQOL=}OKwX;g4IVO1VI~u{o zT$vDtd%ByajmM4xYQ+^$qPsE1ZdEmKuSr5+%$yTx0%{B)CP%o{W+0^~6=WM`v%R(A z6&Fzn*EK!h7(K>VKtK6d#@ihkU4$!}GZ>k%wLH8%Wi`&Lq>XF?sOQV*Ubz|MHuSa_ z!lHy(OMA9(+kP{aOD8i<$PtEaaxUuRw+k&rc5`nCj7(<)_9#I>khELylZSHuw&k=P z&fL7TaB(0ze!_GdvRj^JRt~MFeD`lwN`D%_rXvJPita!H72HJQP8p?$2s*7)=Fw1S zs8$^AVpnyjfnMx{$OmkS(F}#NOW$27d(PJguuQnS2CFP3^e=N^jw|!d(`SovK-jhO z+nIy{9eyh~hL(uGLXZdsM-_Ko@?xbZc14Dsw(o{rh^Ata;;oEx@KMRfh~l|KFe1&` zX*Q&vDF0!lZ3>HqFIGC-sL+dEu8`y)yyUaT1lrRt98iUFW- zW1AC|Edi`<&ZokOw*XaIYhr%#8zBZOcdx>!9u{KgXVKr~xYnDXlf z*c;sov5RI}m62{cvrKTeDvW92>4kmu#LSImjF`u&7DJBn*Bl{3j0Mo<5xn3wMB^pKjTgeY_8NcGb3A=w5Gd!UtZ| z>;_jn&L}3^)c)uK4IAs>W89~G>VSt@Txn*upea5Aj5o#jLxEz4pc-R(Ax8ielzAi9 zET%^oG{?LztZJ+DFIGxDxH6puHV>ZKEo5K_WIN6(jk%=kfoWau^q?DZ#1ev`ak^%6 zxR)?HA$7gUOUk$?Gm5Za^m%AgzgrG&UM5D#qRP?=yT}6ng4Jk*@-*`kbErYtV-ODd)}K5+ zjZ0vvj%&V8RTCqYkV}9i{IKYmOQb1Nqwh`c*8Fht(9X%=(NZGeCY0BNoU~G+cL4lR zYDeqk@z~;|<9ww*ZjW^J6OdPcWoGtxazKn;J!DO)@nzDN2=f$yHLK(B%rh9*n5Nz2(k006J;3 zr<52xXt*RYsOH&H9%8)YjFqT_`R;#SakOO}K`v~gI8NPZe zFDTJ&A;O7;F*Cfpjdouv)b*bgZZLn#s3^EKQJhZs0z+6O;yt3BfoyF&5 z&h%K-rN)^_UWvCJr0;n%r9Nv6$tGiDS(04leH+U$h$8Dpy0g5ae`HQxINW8RbxD0! zeSEo~tF?0HbWicPyXhnYn$8mAqBTW^a=wW#_FCJ7n`&@3I#!Os5$034hJr{vF zq1t0E$oex)c~Hcb4&Sa~-k0IEHfuZ1*jW>vX+TBd<9E~9Z>VqGJc6349m3S4xI=-q z32H{e8=`+j89p#kSthHnZU4HHBuN~sw8Gn9;NVZ~4x3F&PbII$4xoJZfml)yw&#nt zS`+umL|uQho>*~T-L`=WcQ`}-JdApS^)m86IX!?8fOA4sxLtRJ5)4es7mhFdoiy0k zO%{V-U+QJdS|NlV!vOLXHjPf)cPmS9@|oj7Np+w#B2-I+B3LZjfWG2fM$LjiPVSk7 zXdj6D!3qypignB$WP}5;0~#6I=b)*gwcf)kAK*l~p)-c%k`HiG2PW8v`J3pyOoE?h z(ERH=&!{rkr%;$13ubyU70wErkO(t~N$|gBW#ZJ0GjS98(p&^Xt`UzY=-Zy+(1Mxp z>NYe>KG+s+m8PyketkPnMEAkdekn*w8P^D}p%t1n&A*tz@>}4lf>lHs$_cvHBC@eA z9bk7K|Kr#GdOM9ow;`L!mU7JY*g^F~JOA%*(G>S`I3Nfb{nbT{>u9e=qvc8TzU2iMnfg0R|D)0H|7D~3HN|x@ zb}%%ybFy{#r=@&V)m6n3M*aaq-U2^cKMoGocVAEk1zmz7k0l{J6`v0-7b{R_!8tD# z8}!v?^dx^AEo!w(cAcH45RUq?YqLhT&+!ow_tYqETi4&s*U?RHhr#h?W%YEW$(6+C z`TK?|kfNHg7>AAUuCt9&&`BA$_U>$|`EWw2P6H;&)GTGD;h`fFa=IsziM4KHaN$E_ zi9db1?zU{Bjs3k@RU-vJS2%Fp-nFKcz)F`DTeX%ud6C3fU$w~^lH1a=9eF26*I7d6 zi!-K+dD5v)@I+)K2{8ea9=NTm&IBkmX;x%QLF2Hj3dBi z`*6vm@!cvv^J$9_Z3-LqeEqxC?Os~t%iJ}|8gZB&H};R{I{J+>%gNM_&I8((>U8NE z%T;-IPMQ}sVb$h}Od|V*U$@cF&>0|n4^3>Vv{+!`G_$oqZZZ4s&na|F8{LKKDOR$O zj-Ys%#?E^9NpE@0-${b6bT5LsAthnldyx)O_4K(J__Q;(29#81ZMJC0RhAf}AFLv} z^i{AN@|LV~O9`FRkYMD)s^0Wgk&NY(3a=`j^9V8}sV7q|y;lHN> zhRJg@0Fi8fzC?l-R_15`YoyAyh&YQW)*P23WWg3$tj z%sHIhe}T6$|3Ke(j|pe&dK)~7PfR{L0f%!_tBA<(;o?Gfr=0xTTZb%H{z#koAdxb% zrP(iMHq6Cqvm#7V^a)NrE2VQwwvDytH$}q@RR=u)~u|`hmvEV5^zo^JB22X5(Z)Lg-+fsTfxPPuZ85D1!r%a$9{Cf0TXV$;)bF zujLDZytLcWeN#m8B?2l1iA|P$N%8=8f7-m3K|~G|ReQKkNcHr9NhC^9N|6wqgH`JDTvVQJ`sf;dZrSCSR?61T-vNJW@gC4jGNa(tY)OaaLI&VK1HJsh9fWe-9S~ z|CZA?zye-@Z>Vs|YwgSFUVf#meT@_nEjV?x79* zSgWw>hdcOydf#>K_(Q_<5h`-`gk;!~4wkM5;u`xTlY7^Fv}t!KE$K(=Em9|&3cAgL zjPRy&xoXf(Igj?{PO<(_LaGWY7D~?~MY*+k&1JIv(E@j@`Y=)?%|YfdnI2$QM#5nkVIX@$N5a(K#V5upsdKT%RzP1$B&U|6G^G=Y6x`8YPs(qa5D`hxX|fVv`w>4@jHYOh-xg2+Z^*W-43o63aw2!B2(WnZequne>&hEIQ5ol% zutr6Fya|h6DhR)j5UaiI&coetDexXp=-(<&<6z3dQxo%)Z-kkWBu+vfwe6!&!tsni zlg?hl?lDiHD@&-t1<>Vk_-8L7n=DT;_@!^6w&g15>amq@`g;ee3P#~RD^xerp3j;A5j z`tm$9lP+mrX-62P-T{?obObrfkHgpmdqb@e18z28TE($$qpeU{g+1p`boMgW3j(gs zd?tBfp<4r7AI@0H=`P(|8Ws^;&TPQ zr3&5}JcNp;Wu%!b6fs#;3!4WXGYVpio+S#en`=j_dyQ#jV5boD__cjc^ksVvF;e5n zpO*yfyCT)QAHUMqQxE3R$%iZxJi3G8>b;&Lx+&3&I-GYNlI-*6I^4YdnA(G&6z2DI zv>8}!#3FmT?=0S3NnX*Bz6S_2E%SjKD2(q%Lck79>6NcNLQFJ1!Ie9aN&_Db=zX4u z!kcbzBP-}}t%WNRJAc19?lLw_k;KZ-JuQdofGZg1UctwAxhAc7RHjf2+ooh z!dpox>g6<63e+1+*tXk;-WkovB*WIGHnx;N&ch2`S&mz6nA8R=WS@RIu$Sg*bICXY ze@91dt}fA~m(&k)B8;JvnBBdHjCdM5kK!(Zp(&!UOSCIhnyK%AQGyMhN3;dv$(b-|XOY5$p9Yr%+y;pGSz!!dP^h5U<#5CyIv;3aC>6 zMn0`*j8IWZv^V4@&y-8{5!SmhRz=k1&ToRt9YKu+{xk5dOuaZT_M(DI6Y#F_=(|uu zsQr5^;Z-E7kSNBi<PL_ut&y`>Ab@o(&u+&M5Kero#EEgV^vBO)f zjHIR9pk5Y2&qhjK1V8$b+X(x0j3~9EC7K&@XhTln{hxMj|5qjWpGWEMusZ)rx-DP(WZZ&&WpzRRWIPDSdBRI5%=G6dRmhr? zi4vAbTc8;AJub$sAC7F8Uz6^MHMlcTj8mK8k_hx#mi>_xPRFqn$K92?^Y4eQKyc^2 z_@vr`o19vkXM zr1xJA(f-qkMt)9a?Ph~_b536C2L=O4%97I zBE1%2YTQI5QDyZZGrnrvqi)fWWCnmxEAj@pFGe@+{Z8g3!STVwumL$@bm6C`R3;@& z34IZLUU{u@U$@XdYg(U?#R39kr3WrQF$yW{YhdTFp$YQ#qu)OT@5|Riw@IKG>vh9> ziv-(b5V=EKe2JyWoUM^Bb)5YoWOX=N3RR&-f(Vd$u9TdNafa3*dp=2D;LuL+o+%0W#_ zv<)67wh4pR=>jm{?VPMD?7@C?Zfp7aLquYwD6M?_DKV98GC2Z2h;#Z>|IU7(!oGyO zkesoa#(!7%V5!*t+g4g)AvkD{ou5tibS-Pp;&m@YwRlpq5x5A~DO)$p7%i7ncGLoP z$Qt5HeKNSk=xUv6{+#d{e!fTa2;rka7bSm=1a5?h$oI}8)AS$6HWOyy4e5=(_Nk{6 zK6IB-lWsA1oc@HKjTh%pU5rdReRVEpoAs>o9Ul%YV{GMS_W-OE8Eiu|>FkqsNK@A7 zqS*v^{A>;12yz4yXp;}$h&%bU=3d>|eFHj~!X~WnKf8JRYAgg1{Zmyh#v=KTR2vus z8R+*nL0`W52ff||{XPA=H2!)oR8I2utiRrFe7y(ylek|V|IPZ#tIDB9`tJu$h49Z(+n;f~!ZLr7-ftYgb=3ci@fDQ$lhS_A z`18!7{WBS_kj$U7{$FLhw)6i?4*pLeFHe++f1$$oXX0Mrm_NzuuZa5x%HYprzJf7- z(&S&3`5SWKkD`AE{Q4>P<%t&QFZ}vHf+GHlv;P+`^N-qJ75;0>y@Jbr(&Edu_-obO ze?ZOtDEL<-(kry=C$XUYEx~^Pn*CAFtK5J6fLHj-Pr}Fe#p3?i3HvkVS5(ta()*vx z|GAC!XChxQO+TsbuZsLnow+}%`4tZ&`cuct6Yh&C{@c;~ZyJC<@lC%fef4g?VtIZ) z*Z03F{U`9~SLRpe_AAEVHH`U5HCTUjL;O|n&mVRF+B*HcZnby+XS#pGH2kXjwK@B1 z1BmbEkA8W2BKZGYsh3vmui9Rh=-1B8Ys&GHYF>QdzxTzjEv8>Zye`zQb?ny`&rdQV z{lA*5f5x7F)ck85>9tP&lQJm&s^&kbn*UMVuZi1haq1@}(f%EEKV9x0N>#rqd|jMh zWBlJQP6E?^$qs)N@wzy_Mn1pa$%`z1bIt literal 0 HcmV?d00001 diff --git a/skywalking/agent/optional-plugins/apm-guava-cache-plugin-9.2.0.jar b/skywalking/agent/optional-plugins/apm-guava-cache-plugin-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..f99308c74a0699193561ad5c18285e747f67187c GIT binary patch literal 19012 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%0AXbbh8YW2hV#De#Dy?xZcUbyx)9l3u zhyn(*j)2C5r;RBv;{C?iiP$gT8r@7vr;{bX!qy566IP}*)}uYC?HPje7Gpb5a11O= zFgKTVy6Bt8p>;$>Cf5mMyo22v6wk@^OJ*}*6|fcgPQX?w{Ymebg_v85{`^%o9oUgr zfV!!SoplK=v$T_mIy8Lmk3QOP43ODHDZp$MQ?3S~ak^eDVqYbbeNYGVc(1h;E`c0- zvN~)-llj6nhJx+sY|B6+`7}#5uxh9wXTBk9zugmY4M%zqGsyO=*76 zc-l@=EAd48s8d$vb!5^8=-K_fK$3jik4l-9Od3CpZ2%bN5mSfhYI&EEzd~;yUS;uj;-6X;Aro957*&v zuGSvcWtKb}np@R%>}$6cJHf2c-ag~8PCM+sWn)@GmFWWIHkP(#nXu=yfgSgckb5BQ z{<@vVZRr5Vj)=$BUhCv{FcQmIHvqHulpdE~c`Lkc$~07YoxtG^N7f^JT)VUzKs%bC z<_bENVMV~B2If9JR)Or`C&PtZ>z6_ekx7V;>0q{KqN|hFM7?h5%z(MoJ1}az@#qr_ zG;)F6N+=*YXlaXwcudn758URxy6g1d?n&<^GYAf6=re>RjeQ>s(5O;p$Cb9Wv3DZz z){Ue666$!SdeK;nf}qYl&I=^KxXFcZ#~;kEHwk+;Y{P8Gd0VZ=ptM(WV?!jNghS*L z<}LQJtFci-vMda3dMh%###$wI7hp3>{=z<42Ck=1w#D7M^;iUsj-ZfP1-6_mGm;dy z1Ej_*BA0Dxgci{D)vt#g*i_)&zP3Rik1hy1hTVEiC3wu*(KAn%u>AnmekXRm=%bh? z%UaYDC6FfmUM&shM5uezZ+MR)n`9?1Z>mn__v_jPhSC_gLG#3SHmlN%%Gwvrgk6B- zM6m|Tl-z^T`!ew!;ZU554o{||nGp=CS^1sySi>>|5UpMPD}09&$~9KG6Y1K%OaSs5 z_@3s>8<2OGzGudmXF^UL5w)&ykaogG;;8?EmPJ_hjOESTLGfKuihMbnL`XI!n;Pap z3gZKrHWRNwr+r(D<(^53#PnF%36yT{bkcZZ4Gp0@!R&a*n>11LNz0@R9AGj*)$p&B z@baOPji=kI10tMbfHaX7SOX8dp}n72MYP$y%2id>R7YFEM8D8kS+7NH@qNpLHq`(K zayu!f+blm?v(6plT_NrG_J~eP@nDWJX)2I84OZ1FfX(YyC=$hat5KY92LuH|!sYt} zX8i_LX!{^R#~AU(gmJBSnGggytLXTyO2&g$9qa+ zLWv2RlKE!SDe3#*{TbutS?mk&DOq)CTyg<|PpS!QHw;ecVmN}$TgXgmhd%48TT}7% z{i6%5bM$Ax*HpcxW<9_X9suAS^(VQy;m_YA=LQz?2jmVe70!oQScW8r9QYW24SlK(FPjUDxz^!}Dun*Uv_!QY+~ z=D#cay`hn*)!&lpvmo4}NkSNuui=*)B9xKeY=Aj8!rEMo;TdVoz3Y2=whDhD ziaC0KW=1e0wm_CPlw{v#KT`iq=Kg&48Xv%F1F?&0)LN~j=TKP>bU)>|v6(imlDRY< zn>Duzi}2fOJgzJIdYV$Fo0*h-Zxza|l2Ybl#hch|4YwltI4}bYbtZ3G@`j$f&8(wCszN9(z} zBDms=5P9do3}nwothvCwN!1lgy25yOP3))_vVcu`SZg?Ll&Dw9zC!x#BOl|ST~O6< z(@``XP?fPwcvb?Y4>K)248;lxT$e`WLLlyotzv|NrHv}5 z7PJ|QZ!rvH#N5M}G~2VR(Kk-azHWY)H7xNq)V%_KY#33_y8;I*lmLc_e!O_h?ZO5H zEv-UD9QEWpwazg1Ph_Bf4Wf;Kbv5kop%yq2pd`H{xw>QTol|^smc? zN0RTHdnB3YVN}Jh=sJzGZ!9J2$go59$39=GSR3-R^3jWe)X`}MI22&P z52{)N=%zOT`;eQGi^UOKbH0_v*oy?)IfF%F27oy(-pDm=__urnI?yqPA=YCS`Z2eK z%QgditLs4K%q!Vn$ZU5nolJ;oYpED3$?g2d@I=T>V~H24Ho0(7u@sGX1u;5yy$`Hk zPyg>d8cVRiFJ*7YzdHS2+{2GTx22ww;om##NdJ@l#h1|j>KADL;o;8xzY2Xh>uG*D zNojsL@@W3SX)W>pQJ0OiC9RE}wT+>jgQ=lC?jRRjCp`ja`^x7Ep+i)B$Tz}JLc$${ z?@|p7NatpHSqBe+r7OWGymGa1Q;;92m0;xBKSEQ9CnC)9T^lIfNL- zklvkaVMl(Gp~Omkrb$SkBuwsY3P8CJA8}yjdYxa5M$0FY7wauwe*U}=|GW8>kyUyr z#d{3%LkSQf0E|7R>c`jKU}dNr672##Lc?$t5`^#Gy62T5~I5oy80=t zl3h+K1cmII@@$}CmR|y&5Xz=aVH`7tkV`87)FpDxka@EAC~4uPb6w$Iw%ErH;)$<4 z`v(?i(9Mi+zPIdFp0r;EP@OQc`+&91v^1V#W{zySA2ojz1OvWR( zBZh5BPfzFP=w1xm`Ysy{q`s;RjkGY<_V>i~Yq%2#7RG) zFEE$Vgl3JFoVl}6KyTUWa8hz5gBa{Cjd`<@H~6my&_9x_J0hPU5n|+Tge)&9+;*}E z_c&__lCKS-oOkLtQ(HSZn~xKglO$tQJr`1yL+h)Vy&V$I#VCvS)2Ww;&|{f>_ADbL zrl=tdQwiAmn4_6Z6iXWW#^0D?4ZFuu2L*U&fpu`{Gr(+OrN5OKuZEEh*x;u-uAY-U zkf@klU9rPXCg%J7iJ@==zCEd(xjw~AkQfE=k0EQ?WrUb_stb`F-_g3qh7d--JF<=B zN40YV_*q4)SrRK4ix#%huD^>zn}%ef-n`r2e<2MI8UUv(Xb_wR991b8#pK6|c|>wbkE0KLD-#u82q*Vkn}e+VmFD9wDT4_6zrp6?{26QAp{`%|oELF063FQzx)ssJ8fr|puwKwPJu;o_}cLeQ(K8Z!2|n1B=CXhgwf1vQ*f;7{i}ZZgv}M9{%!!@N zFay=Q&5FPqXqFdQjVe0euDp{qDnYShW(?+73(`#|j87`aw?*4g z2-@IwB$z|t?bGjPdEv=Pf-f+3GFi~Qx5TwB&op!qoj>-u(PWx zU8m&9uyJannQ_%EZ0H?Z4ksSO@YP>Hb5=>FEPIx~T~0jbZrh>imlHWk@RPM?OLx`0 z^H{A$7Ja8NQDrK%ZUlwg&_kcdQI+CsnIZ!*J5Yz`Na;_wYkHB%77VwfC&pHi*&u&K zo#6>ic_gpxSI{84FhDpS_yN8Uv&}`;pGQK_+%WT65-WS{gy6zNciq)F?URa~w3TWj zxyy20{1%a@2>XnFgJOLPFo|J9mazt%Kg@)1Uu8?nSC4Pmp71IHF3H;T8_*`pFlrlE^`|&%<#Xc4dc%^5(3P9@+&d3Fq&{|Q z52$KfV2Xbv_+B0TbQ8%;K3%bUgi;99%OL%n%dkllm*yg)LQE%Y)*SVzh3WmdpYynQ zp&CQh6UeKZOEc4_|MJoy_Xqte=ZyN|1pkdP5E7OXmJt$`5fm3zEDe{310qBaeCFuU z0%-h%j*&GK9)$@+9i0AdrW@Jhd100e*85@9j&Q8D(g~B19}+b=Q+{lK6|32y=<89C zL5H`BP?U+e3R*V@9e0+JsxD3Sp!wPC>CRC_mI$2(kTSBGO*h9AaXC3xY@S4K$jBeg*I<*-KZ(^Rj zo(g2HWn@a`NKi};Dji16j$NHpKR7?#XYf4(c}csxZHMb@6Syv5(v`TlnOEH7aq_Uj zr2O!1!r3D)V~kwM)=xBo$Ic_)!ZxOt26oNhMjnSuaJ!G$30Mb6AoC+P!(qF~+1FRg@nmG&%o1Cj@QYVhr3$EZB&fU9asBFbMIVcJst$zS z*FEiaE?S$E*Xo92$pVovLEoiBRMC`I--MxFKR#u-Z06`_u35|6syV5-cnRh0&l{>d zYVJqfDY3n#4U_;|T$(H*Z24V(Zwh7hqX196s6hbJ`3c@k+>q4WRwO4p6-YdjUyO`D zgF2oHq?XA+&AS55`h;!)E7+}u$yglDO+DO=oeqp?14UYWt=^ojPvvKrTxObwW<_fMH9CglKT>8$py$F~ zYXg!rD0;cJ(^7}SQQ4{>HmI(+7famh}c=+^=t1(R#<1Wvad}C4F}QWflsT zl$r3B+{Ws9{w9k4eA|QFBcw%!GT@uN;C8nutMHu9A&^o>JFZF%@#O~VB~rk?GPK*L zjCT(;CX-`%&3NXg(B9Q#ZE#eWM^!fO-^}s*&^7Ma$uYZU_!D`ebzr4--~wbq49R)b zd$q#{jkE);*E6{wo;JepM%<*qw0XI_@l81Wz~D%oRmxW@r%iO()6zU@MaB(FBjfpX+~(D`vg(l4f4w ziW#WCI$U1Q!yhNgZ|NNE%L!tr*kQFu57W9s6|^}4RLFSHpa)JTtzqEL)O{3!hnnIP zG#5=a;COzWgYp5ERR?A~BI1~55ZWahDXt5u1?;1c*eB}SxcvqA2_g%}a?0=GR1M;1 zhcqXMG$#JlpeE31MskI5^$xo{=nK$<{k=p^1ue(`9QyA^orIfK-b!1Vl=o{dxIDal z>PN7nH~HX`ob+B<9)ntwpvRwfaFsVStOm6(06e8SZ+n*?9;%cpdd*b$B+8on%~2;8 zoMDFXas+D`P6R*o8u~d%b4Cw&gC4;3a9_mvVtHj_jIrE;;PHts_DQSIhC0>Io|L3Q zT$ZcDl`{~uJ1)mXhh)IeF0g|KEbw<@Xe;>9@ek*QwO9fC{RJu}izQ?qipfWqhuEA; z*z359(b6^&J+I$$EOue$>hb4sR}8Db>Dk)y*&deYR;1RL#jp0ZK3Atj)Q~w^++nr5 zii4h$1TtrIU6aV3liIiB_G}zAdL_L7B3nhYyjii><(9DgS-5HFrpBM-gFn8h(-)A< zTo;%&Z0w6_F(?jw(nPZ+ffz3v!OnS1>caeJkHY)}Sb>~xV?{PRFbm;YbNL3YsMR%7 zQ4!bukJb{yM#Cp$$AgilY$Glqi)kai7P7+waWaW@)?&dBXo%F5CE{5w5P6OT51$g1 zY(+e7VAsd^UcG7Ok|*W;i(9gJSwTNi-36E51O5bm_NKpyEGAwV-SpOj zfj!mrd?h6-nyooM;KNjaq%B^{r+mOniuVJ;j(A$-+iN-X4KLR=k!731l!G=xk>Os9J*{;`=>}c`@Q8DcX z^JhVP8@_vrKBRng1vJwlLecm=q`+h7u$OoqmTgSJ1Khk*-*7H`7__D@vBeT<0d*9qQCJZNGH7@Yj{~8sl^cqyIVLJS9oVK@D%fz7gwCNS zw)wO=PQ4{I!zgETQwVs}DQQx3KV4^fBV98Z3zlH|+kluMDKe_3@3$_Yct^|1 zj6#*2qPotYR%p?WtCZ`s#!TU=dtlxB(T-&R1~|<8xbo7#hz8S&)tm(J>dXk%RC?3G zI(^Dr`S*ls4N(P1ze_{ZGe9|Zg{71ehUE1Xx^|W7(41G-6gV@&Ob(F9Yj}2a0`V~E zjre-v!8VIBr1yUria5;}pW@-maIIr{AY7C#_t-j@`8=6$`VpVbp3*|C-@nqzuwd|n zX~Q?6>SW3@2lIi_z<7`ryRlH<>p5m2p-u>dtRsBD`G()bn~dk-nJqC`)Z6dO&Diky>dLi`?8?OK zqdQOj+F}d`Z!G3riJrv7k!!FalJkyltV@aE8OhYZ)kuSJ!qYFXT5xbW3C5T0xeE64 z7X2e8SM2Xbk3YgjaVrNyI|D--2Wz`ugT=3E>WV0;C{Jap%%4h$LO4lmLx;RpF>=%a zSm-m6z!`if7=qsga0yDvUgtK0lN8Tid$5Ggqbs@waj!;G7N122Dm{r8oxw*BHZBXo zvv+|27Q1BL54Y~5pQml5+b8oqwYtH!%RF?C>1zx?$e!PL1?$nGJI|$06p}#@T-wY*w>Zn zFc`B8vB(H+0+^5fp+RZsl8Y_Q&kg3-1{~EiQDbkM)SIzoyUQZ>a`OsCESqg-ytob9 z=0*L|#?yL}@dCCuw3mV7Ifm~YvNA*TE|nrtOZ4TUJ2|=)ee{GIjDS{X`-t9$Q3@2m z>9bhrsX0DcNs3I~gKkY*@|Q%dX~l+0<-+V!oN%Y1f%RnbrqXfgXsZyIE_*HJ4Tr%P zhJUv#nxoDt=|BtUHN9o9iq05ek1Du6S_QL2TEYs*vz4?F?H*>IZJt=tW!FGhgZ*wx zEkkH_R86`jR{4HFWeQY2^e%g=3t^(m!ZmNWZF;P|zOWFN8Z4tLkQzVqqF(u|n5 zOJN_-)@YZw3ZLA(Ro+e;%!U=NI*htRLoHhc*s-CJ!`EFhGA|P-@xuA!A`Z4Tl;eCD zqlP9Sb?X}Te`Av8BdMpmn`A^vz5WF#!I$!u_W(W{797JT9lGfQe0^cVH>Pz0njK03 zOip)MVJ;122RE%i%mrh$C$7oP^>8CBhps@st*ZuN7|DsHD*F_ewZdZA-th}DV~sQ0 zw1;nDIs6XZPl5vr8C4MlS}Os)nv8R~*RAtsE+X}6E$E*(X8za@or#1b_0M54gR<(@_g zq|s}xHP>z^V0VRAp!XTmo4CvXbPDF^6@72+7R$+4zr2}WX#&U1ziPqGuht)FQhi*5 zV~7zx{AeOXC}l`qzE{{svIi5Z{Z%E}UDPscJ08dvSzC{HgfJ#{uIMbFFn@ukTP=z2 zJtD$TS|~>Na;|qMRElvi8>jNNG0WGwIxbb_QO*D*eHWjLh|$`F?KQ0w9W*H6+F_^R zni}z*p)>4Ev~s!7s`sHq)ZIEPt7!D_;)|H3eww3n!{+ce8}(cX;BP)HM4ki;o4C-D zCDotQT`Y5LaxF_S;=rTN@PZeubluyT+0l0^FWEx zBCMcV8IGO-PZ&>LrjbxguYem}FOr+5%om~yBfHuwBuZMON`Rg3g>Ip0U>vFL{2u|G z4S{(Q3_v9|^;AR!hD=x#*#b1NfxhTVACs1pYVid~+xfpUfY9l!10&7-q`!m8Ox<32 z_pP$-X~9)#HsRm~R(hwx0)>Xq-!qJmGvG?TTR>uqFu{!=*AGa@A1J|=I#;X5R2SxZ zq#dRpl0_l(RS-B4w2DF(`$p$iU66<<@n|<3Sp*Alp5V{lb8|=5F&P;FkVn@!+{!;E z-Mh8`fa=`IL_WwOesK_>@wr%%O4STv`@}gV=UpiLsQ_sLT|_bkY#(W@55!>THg>K!B$8l*4;u@ki6Y6j|0%&bp)bxhR$XwdN>qC z$Xt#W@^Vg#eqJYb=Y~v64lMItnoaDv@DP>@Kc3HBmYyIHy`|tSU6#0wl3a>g3BVR^ zm@-CDXC?HnA78_-GQ%glL%EA;k0=8HMc2Ai>KAVe8TSzi?y}D7{7`$d zd?tFyHZ1<~hKun^r?2M`Ff?b`TTlx2i;5Y03n-N)?aJzeUT8u#}9EvWu=N} z`ldxnno%le!Xdd%S{yhWE;{Hr!@T=b;D}&M#!S&E$LmQF68M&#E6=#(BT^0O9cR7) zHzyG9d@)l^i-+t5?oUjRvI7a;g75pua7=@)>9_cNCB{QHlntTBF%D)%PBO>DzT5@M z;+s)fRtZ(x`Y3S{sqC6fTT8rFTT2=7i5f~-7oX-SldC)7d8l$!Y6@o;?<0Y`@mQyq z!CcT>JJ}A6=eyDaI}f$yrn&8d-kaf>v3tD<&D5M9tz*D$;nzqN6+OlBRH0bxbkpNqREziY$);=Aj6wo&>C3JWwH@wlBU?3H{kug6d-yo zd6#eiEmgItK7g;dgF#Rh*HR2iz$_JR3MP-2w^y;oP`9o+RViV-pzzeZ6mU`CL~W?| z)duY{E=_#=j6Jsh`ofG^nG$6QjddyA);oHb^mDpUdUJgg1IWaN?y={Xfp&JmrPJ0( z$%qha4*b?rzp5l>vNGK&c;v)vT8a+m^+Y4FT5`ixEWzP#k9nW)g}zXA31P8CH-x9a z7#xDOYSURzCsknG8e_PH$HEBX)Qh7|6L9DAs(sXL3+4D~F-e`a2WPmnqCrV2p}b&Q*QuxkCZqD)NZrf;04rkO^8XrM|* zHQeP5OS$?9ch(tg`Lqx$Q_wi}ln#s(pZEg)!~ofV*wwIS_eo$sw`}t~KvXAabcD&J zNIwQrLlENGM8a|qOofcC>lJcY?+IS;)G(%1TB?4X|I&Cr=22Rt^(==c^z~`x0H4IT zmu;1l+?2S~ct$TX9`Zt%ni+;{_CflD8=5JPiwvW1GQT=$R-bt$e(>?@%I*THCe?m9 zS@8d|Ga&iTS2n+e#b4!0HLtl6S(z=S9F75VuvfCJ5GkA_h`a$(E3s&sj|uzDSY8WjM5f9Nt}IiAfAm^gDxt(Lq_BEl6_nClD*7%-)?h(K9}f}#{g2*s?*e@Q4AICm>pp5vU{8lq-nA5JDD}9W!anh zUF&kZ7?jc?KaqXjIOHMsJ96wz3|62JRNp$(w%C8;G z&fOhhh1px-VksycKHtMc6;=D3h7~3@%NAWGy?_j}=E40^*jjrRtO9O@wY5FMJ)*A@ z1^8jR)`JPC)Ved@`_1-N`{?nPIH9b_j1s;N!^&36)@QIXP;&39qK$&S<-RZ~E*yE*0u2~cvlR-9w^cN>h1=$)f zL&#H|_3cSn*JuOM*i37DN*&O(*ZkKpWn`VupJ(shKz8#qIHMi)vIgX1Bar#$-egMQ z7coOQKT;ddd4vfYA(>QBTJ^!9O3w{cT;6rtHXU&blCpJV-o3Fc*%t%f5}tHiUnf?V zUGLWvKPc;_jU=dbDWs}M$Xe^&qBO~3eVf!V=5g+cz0(#=eodUW?pedA1a>4=cQiAG zmpI9g4+{Pn1qZ_Qnhk$^4D|#r)-uFQdI+}e^Hr)%gYg_%Tn6CUjpYq}S1OM4(mI)- z#rj0zH4M{AdW`#0ZYFn74rTZ%VSq9zE_+WkPirbAmu!r$g|S=*u@Y5P4`=|NXmN7x zK*YvEFq{+Yc6XR17$rHMre;&hX8ydXi_elRj#dxD#ccdIwDH`Rpb48EX%9wP|Lz z1(@kP@yu0u2^HeyHHcZd5-R4Wjh_5$IIFyQ%~%tUmC&@r>o!LJDu zO1obSq07{ai4~@?O}1vIDEoUn1WoAy`e~(lUyNeOKx&}%8+*jAEKOz`d1V+2Sdq_r z6Wv*-GnYFd-O}VR%lheLkHq$e{-*4+@hdH-*&1tZPBII*YlgR&a)GJ^`0Q2qN)dfJ zlRL9P0OIFwO#O5iN2Sf-{Wj|P5{gko4Boy#C>U8$V}>9t_Q#!#R!+RAons`ziop77VXtGc{Ii_qQ-k6nYhQRcU$#VAA zB(2hBucC9I;dXU5vkszd{;OxYUAp!1lI$IK>bFVU!+T;TpruXN0k$6mH&v;*>;Q*~ zRpAVznFS*Bx@q+de36s`Dz=cYj8^588iVcwD#(kJj=%c3sJ0_O_ux%FGX8@zv%I=RR5!iXXTRi3K(cpUhBp2E zsyR$AInywkm1qSP7CK~Ds9&$Jzy?v4E#faZQ#N6gd_cidBaMTRIb_*!kSDM;5~(eZ zuyyd;<{;-BCb~62sI}YTF;hZL8llhryEO=DXxWn|h`e~dGF1GtZ;#BWb?@3F;?8Xe z4eMi=2jn^YWcOzj%}^$t^eWaw5qU2$h2z5{R@rf%vNG!uc9~_`yCd2_KzH0Pm3qY+ z19pE&nYxS1>sww@CbwTwCO{w*fZyNwfAOck(CeN5-_yU_>#zR-Ku+@atUupnf4%Yl zgLqy({+sou`~QEG@H52z_0Ibb@_30{|1IIS8}NVRetr61rvKh>3dCRA?0?1a3c~+E zTEB7p)|me*##adb4@&qwpanjy>t zLk&Ob@c$LQ@h=em9}Rg`{I3Q6ibVZEWavL_k6)X0f5rTYGyXw_|H=H{JAHp8@)c$L zgPQ(Vk$=)W{G+Cy(Ydb};~zwZ@gHyg-;MthO}|GR|55MH_}br(I2h(ndVfU%|B?A; z^xyB-P0I`O{{ifW9}W2#KJ|M;G;#l?A%9%CzblLV2lVidhWreQdPOJvpd5mq zhVy6a)*nUu41IV-PyHa3m&5P>U{HT8DgDumpL^)Pf0OE$&GqBd{|R;RvxwJb`_DbT z*Jk?S}s4{`Dg9_eR=#`mUu0z{h$q&f2{V;ifn&;=byv7 l*UHBaYGwb&%Kuv(L{1X)C5i+9zx literal 0 HcmV?d00001 diff --git a/skywalking/agent/optional-plugins/apm-jackson-2.x-plugin-9.2.0.jar b/skywalking/agent/optional-plugins/apm-jackson-2.x-plugin-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..9643e73dd14a99727f09c85aa4c590363f0835fb GIT binary patch literal 21118 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 Gzy2Shh@x}= literal 0 HcmV?d00001 diff --git a/skywalking/agent/optional-plugins/apm-kotlin-coroutine-plugin-9.2.0.jar b/skywalking/agent/optional-plugins/apm-kotlin-coroutine-plugin-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..a9ab20b22851107348d6c9665fb58e0b64c90933 GIT binary patch literal 14409 zcmcI~1yo(xvMuiJ?he7--Q8V+ySr7&9UZOo$SE6?Y8R0x)jzmYB=(t)d}Y zT~j-ptBD;3!M)RDeWE!wODS2CL1*LkLR2?ai48s3WjLXQDQWr{X5kNDLBZYxPl+S$ zueg&e2ji2LKHb~7nkLqh0=SL`<8}Siy?82mL}*@p=(*qBN}O{n#YvN`of#?2k76eh zrfD0}YDBhVY-)KvJ#I8^swJkV(26&`Q73PTu$+Vd+zlL7#qATX#cJsUw7$jen7eij zD2#)4574J3Erfpa4j4S@!3Sh&zc2dSj=ddLxe-z-WG>ujLl*arw1S`>tYUzc zApGHiC$ZH(*U0r&RVJTB;$W_N`!xM1trz;Fv0a32I34N8xsda-F8A36U%c~or?vf? zeZhMfmz)~#lZ*Y?W$s2ZHkgN0werim2kl8#N5lGZtfiq=4}a*R@*^M3_q}_PEv*_l zZ;le#ifi3m9m#o1%AxIDy**tWFIM09=!`3=4PQJgp1y;>hK0Pgpe<7_<>K*kuzBpV zWI7{Hfvk^{A=V`2V(5?nH`XFIQVW}OLM=zCt$gcLgrIscqih(ahpvmlt7Xon-imqR zNtj+>C#4cLB2c0-DA)#cGxK3S{aQ8&i`UF;G~TedX;q!hP!5G!#<#+w89QjsbqGox z5^ZmlV1xbO!}L@BLraHw}Zj*+OcxE@^z!H6XxW&5{VP#(i* z^hKz-8dY|<7iJ?iN2ygqA7m#^I`3-AN#+`jFR^kUbG6OJgBI3Zn#3e(%Q{n9t4PD! zt}ic+=*+o*w+y<$1=d%`?9V}YjArg!CxdUoQb<5`_i_W=L#&yGLj`QrI>Z6x?!_brY}_RII#ZzqNeQt#jVGpQt5RAL zym@XZgZ31pRg*ty$1I_Nic`{Dg*k{49hA)!Xy#OG?|PiWbWzcN>`+6YB?x53bgg3rQI^SW|j5UvIe5=dc!!%H#5 zFWVODsS-`G!d+aOfhRN3-bq?KRo74uQ*jjE5jqCI)UTWzd~^a@_O@f^P#$jErkLtY zuieg>p)d306ePvLs?=nX9R%^4Jii}Z3~zxdcJC`SH2|Zz#TN%;kWcx#^MEE$fGgs8 zdTR4nnC7?SWUU1tOUtuyI8KEUdS{-tV@O)CtIY5#w@}=O~xh!GG`x#p|P52ww

    TaOE86PN4xG(kX3v)b5 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 NEd&5S58cae{|5_PYPSFY literal 0 HcmV?d00001 diff --git a/skywalking/agent/optional-plugins/apm-mybatis-3.x-plugin-9.2.0.jar b/skywalking/agent/optional-plugins/apm-mybatis-3.x-plugin-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..ae5843553e078a9d83b3957fe0643a56bdb63b66 GIT binary patch literal 16871 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 literal 0 HcmV?d00001 diff --git a/skywalking/agent/optional-plugins/apm-netty-http-4.1.x-plugin-9.2.0.jar b/skywalking/agent/optional-plugins/apm-netty-http-4.1.x-plugin-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..cff0ce037e8e03619cae422b1c17329dda7eb5e8 GIT binary patch literal 57102 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

    I1iE}jP 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≺(b?^jbVBXj;#WKNT$ban@p+Q;JO)E+Yd>#Dv( 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

    Xjz>;&GlDOb#ushbcoT{@Kwj`QmPd0leD-P; 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 B(bE6` literal 0 HcmV?d00001 diff --git a/skywalking/agent/optional-plugins/apm-resttemplate-6.x-plugin-9.2.0.jar b/skywalking/agent/optional-plugins/apm-resttemplate-6.x-plugin-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..ae5d24b95a872fe1183781435518a0338db4b6c8 GIT binary patch literal 47227 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 literal 0 HcmV?d00001 diff --git a/skywalking/agent/optional-plugins/apm-sentinel-1.x-plugin-9.2.0.jar b/skywalking/agent/optional-plugins/apm-sentinel-1.x-plugin-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..d131c0f266230e047238ba33058c6c5edd882c20 GIT binary patch literal 24347 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 U0A~>#9BAN!2uLV1%)y`j11WRUVE_OC literal 0 HcmV?d00001 diff --git a/skywalking/agent/optional-plugins/apm-shenyu-2.4.x-plugin-9.2.0.jar b/skywalking/agent/optional-plugins/apm-shenyu-2.4.x-plugin-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..88105116ddd7fafa6a3214c141a96de6fa9d05bd GIT binary patch literal 45020 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 YQIH0I9J~PnB7FQ8@K{PM{7u9E2ej3vqW}N^ literal 0 HcmV?d00001 diff --git a/skywalking/agent/optional-plugins/apm-spring-cloud-gateway-2.0.x-plugin-9.2.0.jar b/skywalking/agent/optional-plugins/apm-spring-cloud-gateway-2.0.x-plugin-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..2929e10abc5d42b7428f5b76fde037f5c10b3451 GIT binary patch literal 39386 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

    1z@B_VC(ywP>`)fBR8E8 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 RzySP_2Oe^odffi^{{iR_ilP7j literal 0 HcmV?d00001 diff --git a/skywalking/agent/optional-plugins/apm-spring-cloud-gateway-2.1.x-plugin-9.2.0.jar b/skywalking/agent/optional-plugins/apm-spring-cloud-gateway-2.1.x-plugin-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..f09d37bdfeff34d0df8763ac57da62f720908326 GIT binary patch literal 44848 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ºnGp;d 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 literal 0 HcmV?d00001 diff --git a/skywalking/agent/optional-plugins/apm-spring-cloud-gateway-4.x-plugin-9.2.0.jar b/skywalking/agent/optional-plugins/apm-spring-cloud-gateway-4.x-plugin-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..ddd167c8a786499ac9595562d7f1ca50f9ca9e4a GIT binary patch literal 41244 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 W_TbnC1Vs1nbM~;ucoF>g?f(G{DmiHY literal 0 HcmV?d00001 diff --git a/skywalking/agent/optional-plugins/apm-spring-tx-plugin-9.2.0.jar b/skywalking/agent/optional-plugins/apm-spring-tx-plugin-9.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..5f1b322e51b452c1eeb819fd51e3a5ebd3cfa869 GIT binary patch literal 18956 zcmch91yr3$5-t)n7k77ecXxNU;Ot&C`*f`Du{J$$R!cf5PxB^q(%Yth)4u$>^( zBdJyiY3!w%%;3i?Vi@Flo`i6?+FGXC4Hk8sH_`_LoVnEDeJixcS3)N}H3_PcZaitTq_tf<_50hOA2C1tdDzsBd$u z2Pe_aifHP23Lk@;w%N9sO0{F0mQ2&~thHk~A;q(`Eoa1u7D`URvFdiAuaJ)P?s6k* zPh)(`6AEY(u>0V-XYXL8%R^{sY45qdFYSjHs7Ufk5=ds2Tn21cAV3J&GaF@BfiiFd zhP*S45_%u?UIV&r1YUo3vg8I)g5kT~G7-Ood3lV?xFSnnz(7ER&(HEdKSubUAEUH{ zkch03$cmcu^*^Io5V)^=5FnkhyS^4QYG`NfrJ_@Tvh?{IG`$ zp5!*a0wdR3Rhc3diGzjO?eCe#8NIJhn?8xq4QC=AJAdGOugiV5$(P`~=(N6nvoClr zo_l3L3j1BORu2y+@_nS*|}5_5H^&BO2YapkeMW_a(OWNVv-4$W~g zTWP(Ut0Nh2S>j)imB6cB%qkm(>Y?c(^J>xtWbv%Dk3M!Q?e_8%;1QZC+ESGn7N7lJTkXXu%3xa2W5w??T{-#y4qoOa&TRT3{W8DC=NLltP7jR!7oxHOAN)K_$-wbhV>wO?Oe z9MhR|fqv8Ph7j2J3SPx|3$$#M_!?1QQ`GrQpke?O*(4KB{ICz}hO~Bv=6!Oe&NtnV zr*TraW=w@76n9TI;5~%88CVqHHmyT!Fz#LqGT^2y;_2BcEhq}e-5FdlONjqi<4HWFMmKuyf7p5yCSAXDE;GKkTM*Rr=AJBRYH+cu??G`)5^ zXNEq^ms3#W2WwK3DRz)VG=;uLT?_^wRlE1qni{|{+~O+(GDzR~x(h)jkU^^wcoU3z zf_!b>fV;7GVQE3*&Kjw50MxYx1O>F{)~7s@HBSRXoOMp0y6z+eh+-P$~>q;Y-J?jITAD4G^3*}+M9%e+77WO8aC zI?(L{^N0R7fx8+)++7OVmBSMeuyG#~FOdYZWe&*YX}8WBhz>&Jh4Etb$3zMJXRN?3 zlL*IVZVs4(qOYB~T?RVF6tk9n-$frz6d6DaSt0iz$%~4J!%A-76%ae^eMDG)-)Suc zdil*EGLTJ*4?M4Od%aS;)NbkH>9wCm=*2+qO#j}338_>qb|Q+hL@b6lexUDY&-yzw zAdWyKkna5%pd_d@i19h)w~^ZUOe<2~TLX|b`jb064p6bk9Aif8+%&YnvYFvqAe0DW zvXvdbJgo)iF8QOx81nR;LQRseANRwQfl&$OTt)`+M}P4h)waO#+6Wa{{kX-!gXtJp2ST6gCg