From 9d0ec847f56bd973ff14e00eccfad7ed1c7fe97b Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Mon, 19 Feb 2024 17:16:13 +0800 Subject: [PATCH 01/74] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=A7=84=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api-stat/.gitignore | 31 - api-stat/api-stat-common/.gitignore | 31 - api-stat/api-stat-common/pom.xml | 76 -- .../com/damai/constant/ApiStatConstant.java | 30 - .../java/com/damai/enums/MethodLevel.java | 10 - .../java/com/damai/enums/PlatformType.java | 15 - .../java/com/damai/structure/MethodData.java | 54 -- .../com/damai/structure/MethodDetailData.java | 71 -- .../structure/MethodHierarchyTransfer.java | 47 -- .../com/damai/structure/MethodNoticeData.java | 21 - api-stat/api-stat-example/.gitignore | 31 - .../api-stat-example-cloud/.gitignore | 31 - .../.gitignore | 31 - .../mvnw | 310 -------- .../mvnw.cmd | 182 ----- .../pom.xml | 116 --- .../java/com/damai/ConsumerApplication.java | 20 - .../damai/controller/ConsumerController.java | 36 - .../com/damai/service/ConsumerService.java | 27 - .../src/main/resources/bootstrap.yml | 26 - .../src/main/resources/log4j2.xml | 73 -- .../.gitignore | 31 - .../pom.xml | 49 -- .../java/com/damai/client/ProviderClient.java | 22 - .../damai/client/ProviderClientFallback.java | 22 - .../src/main/java/com/damai/dto/InfoDto.java | 17 - .../src/main/java/com/damai/vo/InfoVo.java | 19 - .../.gitignore | 31 - .../mvnw | 310 -------- .../mvnw.cmd | 182 ----- .../pom.xml | 116 --- .../java/com/damai/ProviderApplication.java | 20 - .../damai/controller/ProviderController.java | 37 - .../main/java/com/damai/dao/ProviderDato.java | 23 - .../java/com/damai/entity/Department.java | 26 - .../com/damai/service/ProviderService.java | 26 - .../src/main/resources/bootstrap.yml | 26 - .../src/main/resources/log4j2.xml | 73 -- .../api-stat-example-cloud/pom.xml | 23 - .../.gitignore | 31 - .../api-stat-example-single-service/pom.xml | 36 - .../com/damai/ExampleSingleApplication.java | 15 - .../controller/ExampleSingleController.java | 28 - .../java/com/damai/dao/ExampleSingleDao.java | 23 - .../damai/service/ExampleSingleService.java | 25 - .../src/main/java/com/damai/util/Time.java | 22 - .../src/main/java/com/damai/vo/UserVo.java | 17 - .../src/main/resources/application.yml | 15 - api-stat/api-stat-example/pom.xml | 22 - api-stat/api-stat-reported/.gitignore | 31 - .../.gitignore | 31 - .../api-stat-reported-cloud-service/pom.xml | 31 - .../impl/ApiStatCloudServiceCommon.java | 43 -- .../damai/config/ApiStatCloudAutoConfig.java | 25 - .../main/resources/META-INF/spring.factories | 2 - .../.gitignore | 31 - .../api-stat-reported-single-service/pom.xml | 66 -- .../java/com/damai/ApiStatThreadPool.java | 25 - .../java/com/damai/MethodDataStackHolder.java | 46 -- .../java/com/damai/common/ApiStatCommon.java | 104 --- .../impl/ApiStatSingleServiceCommon.java | 35 - .../com/damai/config/ApiStatAutoConfig.java | 98 --- .../com/damai/config/ApiStatProperties.java | 27 - .../java/com/damai/event/ApiStatEvent.java | 21 - .../com/damai/event/ApiStatEventHandler.java | 27 - .../com/damai/event/ApiStatEventPush.java | 19 - .../damai/handler/ApiStatRunTimeHandler.java | 58 -- .../MethodHierarchyTransferHandler.java | 21 - .../com/damai/operate/MethodDataOperate.java | 49 -- .../MethodHierarchyTransferOperate.java | 25 - .../com/damai/operate/MethodQueueOperate.java | 44 -- .../main/java/com/damai/save/DataSave.java | 8 - .../com/damai/save/impl/RedisDataSave.java | 128 ---- .../main/resources/META-INF/spring.factories | 2 - .../main/resources/lua/redis_data_save.lua | 48 -- api-stat/api-stat-reported/pom.xml | 22 - api-stat/api-stat-system/.gitignore | 31 - api-stat/api-stat-system/pom.xml | 73 -- .../com/damai/ApiStatSystemApplication.java | 15 - .../controller/ApiStatSystemController.java | 58 -- .../java/com/damai/dto/MethodChainDto.java | 22 - .../src/main/java/com/damai/dto/PageDto.java | 20 - .../main/java/com/damai/info/PageInfo.java | 19 - .../java/com/damai/notice/ApiStatNotice.java | 77 -- .../main/java/com/damai/notice/Platform.java | 29 - .../config/ApiStatNoticeAutoConfig.java | 37 - .../config/ApiStatNoticeProperties.java | 34 - .../config/PlatformAddressProperties.java | 29 - .../damai/notice/config/PlatformRegistry.java | 55 -- .../damai/notice/impl/DingDingPlatform.java | 48 -- .../com/damai/notice/impl/EmailPlatform.java | 37 - .../com/damai/notice/impl/FeiShuPlatform.java | 44 -- .../com/damai/notice/impl/WeComPlatform.java | 48 -- .../damai/service/ApiStatSystemService.java | 92 --- .../main/java/com/damai/task/NoticeTask.java | 26 - .../main/java/com/damai/util/PageUtil.java | 28 - .../java/com/damai/util/RecordTotalRun.java | 6 - .../src/main/java/com/damai/vo/PageVo.java | 17 - .../main/resources/META-INF/spring.factories | 2 - .../src/main/resources/application.yml | 33 - .../src/main/resources/log4j2.xml | 73 -- api-stat/pom.xml | 24 - .../damai/config/DaMaiCommonAutoConfig.java | 2 +- .../damai/config/DateJsonDeserializer.java | 27 +- .../java/com/damai/config/JacksonCustom.java | 6 +- .../damai/config/JsonCustomSerializer.java | 5 +- .../com/damai/enums/AlipayTradeStatus.java | 3 + .../java/com/damai/enums/ApiRuleType.java | 57 ++ .../main/java/com/damai/enums/BaseCode.java | 1 + .../main/java/com/damai/jwt/TokenUtil.java | 23 +- .../threadlocal/BaseParameterHolder.java | 22 +- .../src/main/java/com/damai/util/Aes.java | 202 ++--- .../src/main/java/com/damai/util/Base64.java | 215 ++---- .../main/java/com/damai/util/DateUtils.java | 9 +- .../main/java/com/damai/util/RsaSignTool.java | 10 +- .../damai/util/{RSATool.java => RsaTool.java} | 16 +- .../com/damai/conf/BusinessEsAutoConfig.java | 3 +- .../java/com/damai/util/BusinessEsHandle.java | 27 +- .../java/com/baidu/fsg/uid/UidGenerator.java | 14 +- .../fsg/uid/buffer/BufferPaddingExecutor.java | 6 +- .../RedisDisposableWorkerIdAssigner.java | 6 +- .../fsg/uid/impl/CachedUidGenerator.java | 6 +- .../fsg/uid/impl/DefaultUidGenerator.java | 12 +- ...{DateUtils.java => AbstractDateUtils.java} | 10 +- ...kerUtils.java => AbstractDockerUtils.java} | 6 +- ...{EnumUtils.java => AbstractEnumUtils.java} | 4 +- .../{NetUtils.java => AbstractNetUtils.java} | 4 +- .../com/baidu/fsg/uid/utils/ValuedEnum.java | 6 +- .../damai/toolkit/SnowflakeIdGenerator.java | 17 +- .../main/java/com/damai/redis/CacheUtil.java | 10 +- .../main/java/com/damai/redis/RedisCache.java | 614 +++++++-------- .../java/com/damai/redis/RedisCacheImpl.java | 696 +++++++++--------- .../java/com/damai/redis/RedisKeyWrap.java | 6 +- .../lockinfo/AbstractLockInfoHandle.java | 4 + .../com/damai/lockinfo/LockInfoHandle.java | 14 +- .../config/ServiceLockAutoConfiguration.java | 6 +- .../damai/core/DistributedLockConstants.java | 3 +- .../com/damai/servicelock/ServiceLocker.java | 58 +- .../servicelock/info/LockTimeOutHandler.java | 6 +- .../servicelock/info/LockTimeOutStrategy.java | 4 +- ...ilterUtil.java => BloomFilterHandler.java} | 4 +- .../main/java/com/damai/util/TaskCall.java | 4 + .../src/main/java/com/damai/util/TaskRun.java | 5 +- .../damai/config/DelayQueueAutoConfig.java | 2 +- .../java/com/damai/core/ConsumerTask.java | 9 +- .../com/damai/core/DelayConsumerQueue.java | 17 +- .../damai/event/DelayQueueInitHandler.java | 6 +- .../java/com/damai/client/BaseDataClient.java | 24 +- .../main/java/com/damai/client/JobClient.java | 5 + .../java/com/damai/client/OrderClient.java | 4 +- .../main/java/com/damai/client/PayClient.java | 24 +- .../java/com/damai/client/UserClient.java | 12 +- .../com/damai/monitor/DingTalkMessage.java | 6 +- .../java/com/damai/monitor/MonitorServer.java | 2 +- .../com/damai/controller/AreaController.java | 2 +- .../controller/ChannelDataController.java | 2 +- .../damai/controller/TokenDataController.java | 2 +- .../com/damai/service/ChannelDataService.java | 2 +- .../com/damai/service/TokenDataService.java | 2 +- .../src/main/resources/log4j2.xml | 4 +- .../damai/controller/AllRuleController.java | 4 +- .../damai/controller/ApiDataController.java | 2 +- .../damai/controller/DepthRuleController.java | 2 +- .../com/damai/controller/RuleController.java | 2 +- .../java/com/damai/kafka/ConsumerConfig.java | 2 +- .../java/com/damai/mapper/ApiDataMapper.java | 7 +- .../com/damai/mapper/DepthRuleMapper.java | 4 + .../java/com/damai/mapper/RuleMapper.java | 4 + .../com/damai/service/DepthRuleService.java | 2 +- .../java/com/damai/service/RuleService.java | 2 +- .../src/main/resources/log4j2.xml | 4 +- .../damai/conf/swagger/SwaggerProvider.java | 2 +- .../com/damai/constant/GatewayConstant.java | 2 + .../damai/filter/RequestValidationFilter.java | 17 +- .../filter/ResponseValidationFilter.java | 7 +- .../FineGritHystrixGatewayFilterFactory.java | 9 +- .../java/com/damai/kafka/ProducerConfig.java | 2 +- .../com/damai/property/GatewayProperty.java | 4 +- .../com/damai/service/ApiRestrictData.java | 22 + .../com/damai/service/ApiRestrictService.java | 191 ++--- .../service/lua/ApiRestrictCacheOperate.java | 45 ++ .../src/main/resources/log4j2.xml | 4 +- .../src/main/resources/lua/apiLimit.lua | 9 +- .../damai/controller/JobInfoController.java | 2 +- .../controller/JobRunRecordController.java | 6 +- .../com/damai/mapper/JobRunRecordMapper.java | 5 + .../java/com/damai/run/ServiceJobRun.java | 23 +- .../com/damai/service/JobInfoService.java | 2 +- .../java/com/damai/MybatisPlusGenerator.java | 13 +- .../com/damai/controller/OrderController.java | 2 +- .../damai/mapper/OrderTicketUserMapper.java | 5 + .../java/com/damai/service/OrderService.java | 44 +- .../com/damai/controller/PayController.java | 2 +- .../com/damai/pay/PayStrategyHandler.java | 30 +- .../pay/alipay/AlipayStrategyHandler.java | 6 +- .../java/com/damai/service/PayService.java | 2 +- .../src/main/resources/log4j2.xml | 4 +- .../controller/ProgramCategoryController.java | 2 +- .../damai/controller/ProgramController.java | 2 +- .../controller/ProgramOrderController.java | 2 +- .../controller/ProgramShowTimeController.java | 2 +- .../com/damai/controller/SeatController.java | 2 +- .../controller/TicketCategoryController.java | 2 +- .../main/java/com/damai/entity/Program.java | 4 +- .../java/com/damai/mapper/ProgramMapper.java | 6 + .../damai/mapper/TicketCategoryMapper.java | 18 +- .../damai/service/ProgramCategoryService.java | 2 +- .../damai/service/ProgramOrderService.java | 3 +- .../com/damai/service/ProgramService.java | 20 +- .../damai/service/ProgramShowTimeService.java | 2 +- .../java/com/damai/service/SeatService.java | 2 +- .../damai/service/TicketCategoryService.java | 2 +- .../DelayOperateProgramDataConsumer.java | 2 +- .../init/ProgramElasticsearchInitData.java | 28 +- .../lua/ProgramCacheCreateOrderOperate.java | 6 +- .../pagestrategy/SelectPageHandle.java | 12 +- .../pagestrategy/impl/SelectPageEsHandle.java | 4 +- .../src/main/resources/log4j2.xml | 4 +- .../controller/TicketUserController.java | 2 +- .../controller/UserCaptchaController.java | 2 +- .../com/damai/controller/UserController.java | 2 +- .../com/damai/service/TicketUserService.java | 2 +- .../java/com/damai/service/UserService.java | 30 +- .../damai/service/tool/RequestCounter.java | 17 +- .../damai/composite/AbstractComposite.java | 4 + .../damai/composite/CompositeContainer.java | 2 +- .../main/java/com/damai/init/InitData.java | 4 +- .../damai/swagger/SwaggerConfiguration.java | 9 +- .../damai/balance/CustomAwarePredicate.java | 16 +- .../com/damai/balance/CustomEnabledRule.java | 5 + .../balance/ExtraRibbonAutoConfiguration.java | 7 +- .../damai/balance/ExtraRibbonProperties.java | 7 +- .../EurekaAutoConfigurationBean.java | 28 +- .../NacosAutoConfigurationBean.java | 44 +- ...erCenterAutoConfigurationImportFilter.java | 8 +- .../cloud/nacos/ribbon/NacosServerList.java | 7 +- .../naming/cache/ServiceInfoHolder.java | 9 +- .../damai/controller/RefreshController.java | 6 +- .../damai/refresh/conf/NacosLifecycle.java | 10 +- .../com/damai/refresh/conf/RefreshConfig.java | 7 +- .../refresh/custom/NacosAndRibbonCustom.java | 6 +- .../com/damai/refresh/custom/NacosCustom.java | 11 +- .../damai/refresh/custom/RibbonCustom.java | 6 +- .../java/com/damai/BusinessThreadPool.java | 3 +- .../java/com/damai/base/BaseThreadPool.java | 2 +- .../AbstractNameThreadFactory.java | 2 +- .../BusinessNameThreadFactory.java | 2 +- pom.xml | 1 - 248 files changed, 1761 insertions(+), 6000 deletions(-) delete mode 100644 api-stat/.gitignore delete mode 100644 api-stat/api-stat-common/.gitignore delete mode 100644 api-stat/api-stat-common/pom.xml delete mode 100644 api-stat/api-stat-common/src/main/java/com/damai/constant/ApiStatConstant.java delete mode 100644 api-stat/api-stat-common/src/main/java/com/damai/enums/MethodLevel.java delete mode 100644 api-stat/api-stat-common/src/main/java/com/damai/enums/PlatformType.java delete mode 100644 api-stat/api-stat-common/src/main/java/com/damai/structure/MethodData.java delete mode 100644 api-stat/api-stat-common/src/main/java/com/damai/structure/MethodDetailData.java delete mode 100644 api-stat/api-stat-common/src/main/java/com/damai/structure/MethodHierarchyTransfer.java delete mode 100644 api-stat/api-stat-common/src/main/java/com/damai/structure/MethodNoticeData.java delete mode 100644 api-stat/api-stat-example/.gitignore delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/.gitignore delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/.gitignore delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/mvnw delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/mvnw.cmd delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/pom.xml delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/src/main/java/com/damai/ConsumerApplication.java delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/src/main/java/com/damai/controller/ConsumerController.java delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/src/main/java/com/damai/service/ConsumerService.java delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/src/main/resources/bootstrap.yml delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/src/main/resources/log4j2.xml delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/.gitignore delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/pom.xml delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/src/main/java/com/damai/client/ProviderClient.java delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/src/main/java/com/damai/client/ProviderClientFallback.java delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/src/main/java/com/damai/dto/InfoDto.java delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/src/main/java/com/damai/vo/InfoVo.java delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/.gitignore delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/mvnw delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/mvnw.cmd delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/pom.xml delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/java/com/damai/ProviderApplication.java delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/java/com/damai/controller/ProviderController.java delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/java/com/damai/dao/ProviderDato.java delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/java/com/damai/entity/Department.java delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/java/com/damai/service/ProviderService.java delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/resources/bootstrap.yml delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/resources/log4j2.xml delete mode 100644 api-stat/api-stat-example/api-stat-example-cloud/pom.xml delete mode 100644 api-stat/api-stat-example/api-stat-example-single-service/.gitignore delete mode 100644 api-stat/api-stat-example/api-stat-example-single-service/pom.xml delete mode 100644 api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/ExampleSingleApplication.java delete mode 100644 api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/controller/ExampleSingleController.java delete mode 100644 api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/dao/ExampleSingleDao.java delete mode 100644 api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/service/ExampleSingleService.java delete mode 100644 api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/util/Time.java delete mode 100644 api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/vo/UserVo.java delete mode 100644 api-stat/api-stat-example/api-stat-example-single-service/src/main/resources/application.yml delete mode 100644 api-stat/api-stat-example/pom.xml delete mode 100644 api-stat/api-stat-reported/.gitignore delete mode 100644 api-stat/api-stat-reported/api-stat-reported-cloud-service/.gitignore delete mode 100644 api-stat/api-stat-reported/api-stat-reported-cloud-service/pom.xml delete mode 100644 api-stat/api-stat-reported/api-stat-reported-cloud-service/src/main/java/com/damai/common/impl/ApiStatCloudServiceCommon.java delete mode 100644 api-stat/api-stat-reported/api-stat-reported-cloud-service/src/main/java/com/damai/config/ApiStatCloudAutoConfig.java delete mode 100644 api-stat/api-stat-reported/api-stat-reported-cloud-service/src/main/resources/META-INF/spring.factories delete mode 100644 api-stat/api-stat-reported/api-stat-reported-single-service/.gitignore delete mode 100644 api-stat/api-stat-reported/api-stat-reported-single-service/pom.xml delete mode 100644 api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/ApiStatThreadPool.java delete mode 100644 api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/MethodDataStackHolder.java delete mode 100644 api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/common/ApiStatCommon.java delete mode 100644 api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/common/impl/ApiStatSingleServiceCommon.java delete mode 100644 api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/config/ApiStatAutoConfig.java delete mode 100644 api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/config/ApiStatProperties.java delete mode 100644 api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/event/ApiStatEvent.java delete mode 100644 api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/event/ApiStatEventHandler.java delete mode 100644 api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/event/ApiStatEventPush.java delete mode 100644 api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/handler/ApiStatRunTimeHandler.java delete mode 100644 api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/handler/MethodHierarchyTransferHandler.java delete mode 100644 api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/operate/MethodDataOperate.java delete mode 100644 api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/operate/MethodHierarchyTransferOperate.java delete mode 100644 api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/operate/MethodQueueOperate.java delete mode 100644 api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/save/DataSave.java delete mode 100644 api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/save/impl/RedisDataSave.java delete mode 100644 api-stat/api-stat-reported/api-stat-reported-single-service/src/main/resources/META-INF/spring.factories delete mode 100644 api-stat/api-stat-reported/api-stat-reported-single-service/src/main/resources/lua/redis_data_save.lua delete mode 100644 api-stat/api-stat-reported/pom.xml delete mode 100644 api-stat/api-stat-system/.gitignore delete mode 100644 api-stat/api-stat-system/pom.xml delete mode 100644 api-stat/api-stat-system/src/main/java/com/damai/ApiStatSystemApplication.java delete mode 100644 api-stat/api-stat-system/src/main/java/com/damai/controller/ApiStatSystemController.java delete mode 100644 api-stat/api-stat-system/src/main/java/com/damai/dto/MethodChainDto.java delete mode 100644 api-stat/api-stat-system/src/main/java/com/damai/dto/PageDto.java delete mode 100644 api-stat/api-stat-system/src/main/java/com/damai/info/PageInfo.java delete mode 100644 api-stat/api-stat-system/src/main/java/com/damai/notice/ApiStatNotice.java delete mode 100644 api-stat/api-stat-system/src/main/java/com/damai/notice/Platform.java delete mode 100644 api-stat/api-stat-system/src/main/java/com/damai/notice/config/ApiStatNoticeAutoConfig.java delete mode 100644 api-stat/api-stat-system/src/main/java/com/damai/notice/config/ApiStatNoticeProperties.java delete mode 100644 api-stat/api-stat-system/src/main/java/com/damai/notice/config/PlatformAddressProperties.java delete mode 100644 api-stat/api-stat-system/src/main/java/com/damai/notice/config/PlatformRegistry.java delete mode 100644 api-stat/api-stat-system/src/main/java/com/damai/notice/impl/DingDingPlatform.java delete mode 100644 api-stat/api-stat-system/src/main/java/com/damai/notice/impl/EmailPlatform.java delete mode 100644 api-stat/api-stat-system/src/main/java/com/damai/notice/impl/FeiShuPlatform.java delete mode 100644 api-stat/api-stat-system/src/main/java/com/damai/notice/impl/WeComPlatform.java delete mode 100644 api-stat/api-stat-system/src/main/java/com/damai/service/ApiStatSystemService.java delete mode 100644 api-stat/api-stat-system/src/main/java/com/damai/task/NoticeTask.java delete mode 100644 api-stat/api-stat-system/src/main/java/com/damai/util/PageUtil.java delete mode 100644 api-stat/api-stat-system/src/main/java/com/damai/util/RecordTotalRun.java delete mode 100644 api-stat/api-stat-system/src/main/java/com/damai/vo/PageVo.java delete mode 100644 api-stat/api-stat-system/src/main/resources/META-INF/spring.factories delete mode 100644 api-stat/api-stat-system/src/main/resources/application.yml delete mode 100644 api-stat/api-stat-system/src/main/resources/log4j2.xml delete mode 100644 api-stat/pom.xml create mode 100644 damai-common/src/main/java/com/damai/enums/ApiRuleType.java rename damai-common/src/main/java/com/damai/util/{RSATool.java => RsaTool.java} (94%) rename damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/{DateUtils.java => AbstractDateUtils.java} (92%) rename damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/{DockerUtils.java => AbstractDockerUtils.java} (96%) rename damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/{EnumUtils.java => AbstractEnumUtils.java} (91%) rename damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/{NetUtils.java => AbstractNetUtils.java} (97%) rename damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/util/{RBloomFilterUtil.java => BloomFilterHandler.java} (92%) create mode 100644 damai-server/damai-gateway-service/src/main/java/com/damai/service/ApiRestrictData.java create mode 100644 damai-server/damai-gateway-service/src/main/java/com/damai/service/lua/ApiRestrictCacheOperate.java diff --git a/api-stat/.gitignore b/api-stat/.gitignore deleted file mode 100644 index a2a3040a..00000000 --- a/api-stat/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -HELP.md -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/** -!**/src/test/** - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ - -### VS Code ### -.vscode/ diff --git a/api-stat/api-stat-common/.gitignore b/api-stat/api-stat-common/.gitignore deleted file mode 100644 index a2a3040a..00000000 --- a/api-stat/api-stat-common/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -HELP.md -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/** -!**/src/test/** - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ - -### VS Code ### -.vscode/ diff --git a/api-stat/api-stat-common/pom.xml b/api-stat/api-stat-common/pom.xml deleted file mode 100644 index 095fe655..00000000 --- a/api-stat/api-stat-common/pom.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - 4.0.0 - - - com.example - api-stat - ${revision} - - - - api-stat-common - - api-stat-common - api统计common - - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-aop - - - org.aspectj - aspectjweaver - - - org.springframework.boot - spring-boot-starter-data-redis - - - com.alibaba - fastjson - ${fastjson.version} - - - org.springframework.boot - spring-boot-starter-mail - - - net.bytebuddy - byte-buddy-agent - - - com.github.oshi - oshi-core - ${oshi-core.version} - - - com.example - damai-redis-framework - ${revision} - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - ${jdk.version} - ${jdk.version} - ${project.build.sourceEncoding} - - - - - - diff --git a/api-stat/api-stat-common/src/main/java/com/damai/constant/ApiStatConstant.java b/api-stat/api-stat-common/src/main/java/com/damai/constant/ApiStatConstant.java deleted file mode 100644 index 87214d57..00000000 --- a/api-stat/api-stat-common/src/main/java/com/damai/constant/ApiStatConstant.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.damai.constant; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-09-28 - **/ -public class ApiStatConstant { - - public final static String METHOD_DATA_SPLIT = ":"; - - public final static String CONTROLLER = "controller"; - - public final static String SERVICE = "service"; - - public final static String DAO = "dao"; - - public final static String MAPPER = "mapper"; - - public final static String FEIGN = "com.sun.proxy.$Proxy"; - - public final static String SPRING_APPLICATION_NAME = "spring.application.name"; - - public final static String API_SPLIT = "/"; - - public final static String REDIS_DATA_SAVE_LUA_PATH = "lua/redis_data_save.lua"; - - public final static String PLATFORM_NOTICE= "platform_notice"; -} diff --git a/api-stat/api-stat-common/src/main/java/com/damai/enums/MethodLevel.java b/api-stat/api-stat-common/src/main/java/com/damai/enums/MethodLevel.java deleted file mode 100644 index c971ee5e..00000000 --- a/api-stat/api-stat-common/src/main/java/com/damai/enums/MethodLevel.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.damai.enums; - - -public enum MethodLevel { - CONTROLLER, - SERVICE, - DAO, - FEIGN, - OTHER_TYPE; -} diff --git a/api-stat/api-stat-common/src/main/java/com/damai/enums/PlatformType.java b/api-stat/api-stat-common/src/main/java/com/damai/enums/PlatformType.java deleted file mode 100644 index 431e73ca..00000000 --- a/api-stat/api-stat-common/src/main/java/com/damai/enums/PlatformType.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.damai.enums; - -/** - * @program: cook-frame - * @description: - * @author: lk - * @create: 2023-10-07 - **/ -public enum PlatformType { - - DingDing, - WeCom, - FeiShu, - Email -} diff --git a/api-stat/api-stat-common/src/main/java/com/damai/structure/MethodData.java b/api-stat/api-stat-common/src/main/java/com/damai/structure/MethodData.java deleted file mode 100644 index 857cf4a8..00000000 --- a/api-stat/api-stat-common/src/main/java/com/damai/structure/MethodData.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.damai.structure; - - -import com.damai.enums.MethodLevel; -import lombok.Data; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.Objects; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-09-28 - **/ -@Data -public class MethodData { - - private String id; - - private String className; - - private String methodName; - - private Integer argumentCount; - - private MethodLevel methodLevel; - - private BigDecimal executeTime; - - private String api; - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (!(o instanceof MethodData)) { - return false; - } - MethodData that = (MethodData) o; - return getId().equals(that.getId()) && getClassName().equals(that.getClassName()) && getMethodName().equals(that.getMethodName()) && Objects.equals(getArgumentCount(), that.getArgumentCount()) && getMethodLevel() == that.getMethodLevel() && Objects.equals(getExecuteTime(), that.getExecuteTime()) && Objects.equals(getApi(), that.getApi()); - } - - @Override - public int hashCode() { - return Objects.hash(getId(), getClassName(), getMethodName(), getArgumentCount(), getMethodLevel(), getExecuteTime(), getApi()); - } - - public BigDecimal getExecuteTime() { - return executeTime != null ? executeTime.setScale(2, RoundingMode.HALF_UP) : null; - } -} diff --git a/api-stat/api-stat-common/src/main/java/com/damai/structure/MethodDetailData.java b/api-stat/api-stat-common/src/main/java/com/damai/structure/MethodDetailData.java deleted file mode 100644 index 4f914947..00000000 --- a/api-stat/api-stat-common/src/main/java/com/damai/structure/MethodDetailData.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.damai.structure; - -import com.damai.enums.MethodLevel; -import lombok.Data; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - -@Data -public class MethodDetailData { - - private String id; - - private String className; - - private String methodName; - - private Integer argumentCount; - - private MethodLevel methodLevel; - - private BigDecimal executeTime; - - private String api; - - private BigDecimal avgExecuteTime = new BigDecimal("0"); - - private BigDecimal maxExecuteTime = new BigDecimal("0"); - - private BigDecimal minExecuteTime = new BigDecimal("0"); - - private Long exceptionCount = 0L; - - private List childrenMethodList = new ArrayList<>(); - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (!(o instanceof MethodDetailData)) { - return false; - } - MethodDetailData that = (MethodDetailData) o; - return getId().equals(that.getId()) && getClassName().equals(that.getClassName()) && getMethodName().equals(that.getMethodName()) && Objects.equals(getArgumentCount(), that.getArgumentCount()) && getMethodLevel() == that.getMethodLevel() && Objects.equals(getExecuteTime(), that.getExecuteTime()) && Objects.equals(getApi(), that.getApi()) && Objects.equals(getAvgExecuteTime(), that.getAvgExecuteTime()) && Objects.equals(getMaxExecuteTime(), that.getMaxExecuteTime()) && Objects.equals(getMinExecuteTime(), that.getMinExecuteTime()) && Objects.equals(getExceptionCount(), that.getExceptionCount()) && Objects.equals(getChildrenMethodList(), that.getChildrenMethodList()); - } - - @Override - public int hashCode() { - return Objects.hash(getId(), getClassName(), getMethodName(), getArgumentCount(), getMethodLevel(), getExecuteTime(), getApi(), getAvgExecuteTime(), getMaxExecuteTime(), getMinExecuteTime(), getExceptionCount(), getChildrenMethodList()); - } - - public BigDecimal getExecuteTime() { - return executeTime != null ? executeTime.setScale(2, RoundingMode.HALF_UP) : null; - } - - public BigDecimal getAvgExecuteTime() { - return avgExecuteTime != null ? avgExecuteTime.setScale(2, RoundingMode.HALF_UP) : null; - } - - public BigDecimal getMaxExecuteTime() { - return maxExecuteTime != null ? maxExecuteTime.setScale(2, RoundingMode.HALF_UP) : null; - } - - public BigDecimal getMinExecuteTime() { - return minExecuteTime != null ? minExecuteTime.setScale(2, RoundingMode.HALF_UP) : null; - } -} diff --git a/api-stat/api-stat-common/src/main/java/com/damai/structure/MethodHierarchyTransfer.java b/api-stat/api-stat-common/src/main/java/com/damai/structure/MethodHierarchyTransfer.java deleted file mode 100644 index 06e8e937..00000000 --- a/api-stat/api-stat-common/src/main/java/com/damai/structure/MethodHierarchyTransfer.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.damai.structure; - -import lombok.Data; - -import java.lang.reflect.Parameter; -import java.util.Arrays; -import java.util.Objects; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-09-28 - **/ -@Data -public class MethodHierarchyTransfer { - - private MethodData currentMethodData; - - private MethodData parentMethodData; - - private boolean exceptionFlag; - - Parameter[] names; - - Object[] values; - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (!(o instanceof MethodHierarchyTransfer)) { - return false; - } - MethodHierarchyTransfer that = (MethodHierarchyTransfer) o; - return isExceptionFlag() == that.isExceptionFlag() && getCurrentMethodData().equals(that.getCurrentMethodData()) && getParentMethodData().equals(that.getParentMethodData()) && Arrays.equals(getNames(), that.getNames()) && Arrays.equals(getValues(), that.getValues()); - } - - @Override - public int hashCode() { - int result = Objects.hash(getCurrentMethodData(), getParentMethodData(), isExceptionFlag()); - result = 31 * result + Arrays.hashCode(getNames()); - result = 31 * result + Arrays.hashCode(getValues()); - return result; - } -} diff --git a/api-stat/api-stat-common/src/main/java/com/damai/structure/MethodNoticeData.java b/api-stat/api-stat-common/src/main/java/com/damai/structure/MethodNoticeData.java deleted file mode 100644 index b33b28c5..00000000 --- a/api-stat/api-stat-common/src/main/java/com/damai/structure/MethodNoticeData.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.damai.structure; - -import lombok.Data; - -import java.math.BigDecimal; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-10-08 - **/ -@Data -public class MethodNoticeData { - - private Integer argumentCount; - - private String api; - - private BigDecimal avgExecuteTime = new BigDecimal("0"); -} diff --git a/api-stat/api-stat-example/.gitignore b/api-stat/api-stat-example/.gitignore deleted file mode 100644 index a2a3040a..00000000 --- a/api-stat/api-stat-example/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -HELP.md -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/** -!**/src/test/** - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ - -### VS Code ### -.vscode/ diff --git a/api-stat/api-stat-example/api-stat-example-cloud/.gitignore b/api-stat/api-stat-example/api-stat-example-cloud/.gitignore deleted file mode 100644 index a2a3040a..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -HELP.md -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/** -!**/src/test/** - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ - -### VS Code ### -.vscode/ diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/.gitignore b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/.gitignore deleted file mode 100644 index a2a3040a..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -HELP.md -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/** -!**/src/test/** - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ - -### VS Code ### -.vscode/ diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/mvnw b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/mvnw deleted file mode 100644 index ea8c8287..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/mvnw +++ /dev/null @@ -1,310 +0,0 @@ -#!/bin/sh -# ---------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF 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 -# -# https://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. -# ---------------------------------------------------------------------------- - -# ---------------------------------------------------------------------------- -# Maven Start Up Batch script -# -# Required ENV vars: -# ------------------ -# JAVA_HOME - location of a JDK home dir -# -# Optional ENV vars -# ----------------- -# M2_HOME - location of maven2's installed home dir -# MAVEN_OPTS - parameters passed to the Java VM when running Maven -# e.g. to debug Maven itself, use -# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -# MAVEN_SKIP_RC - flag to disable loading of mavenrc files -# ---------------------------------------------------------------------------- - -if [ -z "$MAVEN_SKIP_RC" ] ; then - - if [ -f /etc/mavenrc ] ; then - . /etc/mavenrc - fi - - if [ -f "$HOME/.mavenrc" ] ; then - . "$HOME/.mavenrc" - fi - -fi - -# OS specific support. $var _must_ be set to either true or false. -cygwin=false; -darwin=false; -mingw=false -case "`uname`" in - CYGWIN*) cygwin=true ;; - MINGW*) mingw=true;; - Darwin*) darwin=true - # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home - # See https://developer.apple.com/library/mac/qa/qa1170/_index.html - if [ -z "$JAVA_HOME" ]; then - if [ -x "/usr/libexec/java_home" ]; then - export JAVA_HOME="`/usr/libexec/java_home`" - else - export JAVA_HOME="/Library/Java/Home" - fi - fi - ;; -esac - -if [ -z "$JAVA_HOME" ] ; then - if [ -r /etc/gentoo-release ] ; then - JAVA_HOME=`java-mybatisplus --jre-home` - fi -fi - -if [ -z "$M2_HOME" ] ; then - ## resolve links - $0 may be a link to maven's home - PRG="$0" - - # need this for relative symlinks - while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG="`dirname "$PRG"`/$link" - fi - done - - saveddir=`pwd` - - M2_HOME=`dirname "$PRG"`/.. - - # make it fully qualified - M2_HOME=`cd "$M2_HOME" && pwd` - - cd "$saveddir" - # echo Using m2 at $M2_HOME -fi - -# For Cygwin, ensure paths are in UNIX format before anything is touched -if $cygwin ; then - [ -n "$M2_HOME" ] && - M2_HOME=`cygpath --unix "$M2_HOME"` - [ -n "$JAVA_HOME" ] && - JAVA_HOME=`cygpath --unix "$JAVA_HOME"` - [ -n "$CLASSPATH" ] && - CLASSPATH=`cygpath --path --unix "$CLASSPATH"` -fi - -# For Mingw, ensure paths are in UNIX format before anything is touched -if $mingw ; then - [ -n "$M2_HOME" ] && - M2_HOME="`(cd "$M2_HOME"; pwd)`" - [ -n "$JAVA_HOME" ] && - JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" -fi - -if [ -z "$JAVA_HOME" ]; then - javaExecutable="`which javac`" - if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then - # readlink(1) is not available as standard on Solaris 10. - readLink=`which readlink` - if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then - if $darwin ; then - javaHome="`dirname \"$javaExecutable\"`" - javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" - else - javaExecutable="`readlink -f \"$javaExecutable\"`" - fi - javaHome="`dirname \"$javaExecutable\"`" - javaHome=`expr "$javaHome" : '\(.*\)/bin'` - JAVA_HOME="$javaHome" - export JAVA_HOME - fi - fi -fi - -if [ -z "$JAVACMD" ] ; then - if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - else - JAVACMD="`which java`" - fi -fi - -if [ ! -x "$JAVACMD" ] ; then - echo "Error: JAVA_HOME is not defined correctly." >&2 - echo " We cannot execute $JAVACMD" >&2 - exit 1 -fi - -if [ -z "$JAVA_HOME" ] ; then - echo "Warning: JAVA_HOME environment variable is not set." -fi - -CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher - -# traverses directory structure from process work directory to filesystem root -# first directory with .mvn subdirectory is considered project base directory -find_maven_basedir() { - - if [ -z "$1" ] - then - echo "Path not specified to find_maven_basedir" - return 1 - fi - - basedir="$1" - wdir="$1" - while [ "$wdir" != '/' ] ; do - if [ -d "$wdir"/.mvn ] ; then - basedir=$wdir - break - fi - # workaround for JBEAP-8937 (on Solaris 10/Sparc) - if [ -d "${wdir}" ]; then - wdir=`cd "$wdir/.."; pwd` - fi - # end of workaround - done - echo "${basedir}" -} - -# concatenates all lines of a file -concat_lines() { - if [ -f "$1" ]; then - echo "$(tr -s '\n' ' ' < "$1")" - fi -} - -BASE_DIR=`find_maven_basedir "$(pwd)"` -if [ -z "$BASE_DIR" ]; then - exit 1; -fi - -########################################################################################## -# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central -# This allows using the maven wrapper in projects that prohibit checking in binary data. -########################################################################################## -if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then - if [ "$MVNW_VERBOSE" = true ]; then - echo "Found .mvn/wrapper/maven-wrapper.jar" - fi -else - if [ "$MVNW_VERBOSE" = true ]; then - echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." - fi - if [ -n "$MVNW_REPOURL" ]; then - jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" - else - jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" - fi - while IFS="=" read key value; do - case "$key" in (wrapperUrl) jarUrl="$value"; break ;; - esac - done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" - if [ "$MVNW_VERBOSE" = true ]; then - echo "Downloading from: $jarUrl" - fi - wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" - if $cygwin; then - wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` - fi - - if command -v wget > /dev/null; then - if [ "$MVNW_VERBOSE" = true ]; then - echo "Found wget ... using wget" - fi - if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then - wget "$jarUrl" -O "$wrapperJarPath" - else - wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" - fi - elif command -v curl > /dev/null; then - if [ "$MVNW_VERBOSE" = true ]; then - echo "Found curl ... using curl" - fi - if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then - curl -o "$wrapperJarPath" "$jarUrl" -f - else - curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f - fi - - else - if [ "$MVNW_VERBOSE" = true ]; then - echo "Falling back to using Java to download" - fi - javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" - # For Cygwin, switch paths to Windows format before running javac - if $cygwin; then - javaClass=`cygpath --path --windows "$javaClass"` - fi - if [ -e "$javaClass" ]; then - if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then - if [ "$MVNW_VERBOSE" = true ]; then - echo " - Compiling MavenWrapperDownloader.java ..." - fi - # Compiling the Java class - ("$JAVA_HOME/bin/javac" "$javaClass") - fi - if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then - # Running the downloader - if [ "$MVNW_VERBOSE" = true ]; then - echo " - Running MavenWrapperDownloader.java ..." - fi - ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") - fi - fi - fi -fi -########################################################################################## -# End of extension -########################################################################################## - -export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} -if [ "$MVNW_VERBOSE" = true ]; then - echo $MAVEN_PROJECTBASEDIR -fi -MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" - -# For Cygwin, switch paths to Windows format before running java -if $cygwin; then - [ -n "$M2_HOME" ] && - M2_HOME=`cygpath --path --windows "$M2_HOME"` - [ -n "$JAVA_HOME" ] && - JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` - [ -n "$CLASSPATH" ] && - CLASSPATH=`cygpath --path --windows "$CLASSPATH"` - [ -n "$MAVEN_PROJECTBASEDIR" ] && - MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` -fi - -# Provide a "standardized" way to retrieve the CLI args that will -# work with both Windows and non-Windows executions. -MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" -export MAVEN_CMD_LINE_ARGS - -WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain - -exec "$JAVACMD" \ - $MAVEN_OPTS \ - -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ - "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ - ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/mvnw.cmd b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/mvnw.cmd deleted file mode 100644 index c8d43372..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/mvnw.cmd +++ /dev/null @@ -1,182 +0,0 @@ -@REM ---------------------------------------------------------------------------- -@REM Licensed to the Apache Software Foundation (ASF) under one -@REM or more contributor license agreements. See the NOTICE file -@REM distributed with this work for additional information -@REM regarding copyright ownership. The ASF licenses this file -@REM to you under the Apache License, Version 2.0 (the -@REM "License"); you may not use this file except in compliance -@REM with the License. You may obtain a copy of the License at -@REM -@REM https://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, -@REM software distributed under the License is distributed on an -@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@REM KIND, either express or implied. See the License for the -@REM specific language governing permissions and limitations -@REM under the License. -@REM ---------------------------------------------------------------------------- - -@REM ---------------------------------------------------------------------------- -@REM Maven Start Up Batch script -@REM -@REM Required ENV vars: -@REM JAVA_HOME - location of a JDK home dir -@REM -@REM Optional ENV vars -@REM M2_HOME - location of maven2's installed home dir -@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands -@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending -@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven -@REM e.g. to debug Maven itself, use -@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files -@REM ---------------------------------------------------------------------------- - -@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' -@echo off -@REM set title of command window -title %0 -@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' -@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% - -@REM set %HOME% to equivalent of $HOME -if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") - -@REM Execute a user defined script before this one -if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre -@REM check for pre script, once with legacy .bat ending and once with .cmd ending -if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" -if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" -:skipRcPre - -@setlocal - -set ERROR_CODE=0 - -@REM To isolate internal variables from possible post scripts, we use another setlocal -@setlocal - -@REM ==== START VALIDATION ==== -if not "%JAVA_HOME%" == "" goto OkJHome - -echo. -echo Error: JAVA_HOME not found in your environment. >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. -goto error - -:OkJHome -if exist "%JAVA_HOME%\bin\java.exe" goto init - -echo. -echo Error: JAVA_HOME is set to an invalid directory. >&2 -echo JAVA_HOME = "%JAVA_HOME%" >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. -goto error - -@REM ==== END VALIDATION ==== - -:init - -@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". -@REM Fallback to current working directory if not found. - -set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% -IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir - -set EXEC_DIR=%CD% -set WDIR=%EXEC_DIR% -:findBaseDir -IF EXIST "%WDIR%"\.mvn goto baseDirFound -cd .. -IF "%WDIR%"=="%CD%" goto baseDirNotFound -set WDIR=%CD% -goto findBaseDir - -:baseDirFound -set MAVEN_PROJECTBASEDIR=%WDIR% -cd "%EXEC_DIR%" -goto endDetectBaseDir - -:baseDirNotFound -set MAVEN_PROJECTBASEDIR=%EXEC_DIR% -cd "%EXEC_DIR%" - -:endDetectBaseDir - -IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig - -@setlocal EnableExtensions EnableDelayedExpansion -for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a -@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% - -:endReadAdditionalConfig - -SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" -set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" -set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain - -set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" - -FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( - IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B -) - -@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central -@REM This allows using the maven wrapper in projects that prohibit checking in binary data. -if exist %WRAPPER_JAR% ( - if "%MVNW_VERBOSE%" == "true" ( - echo Found %WRAPPER_JAR% - ) -) else ( - if not "%MVNW_REPOURL%" == "" ( - SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" - ) - if "%MVNW_VERBOSE%" == "true" ( - echo Couldn't find %WRAPPER_JAR%, downloading it ... - echo Downloading from: %DOWNLOAD_URL% - ) - - powershell -Command "&{"^ - "$webclient = new-object System.Net.WebClient;"^ - "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ - "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ - "}"^ - "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ - "}" - if "%MVNW_VERBOSE%" == "true" ( - echo Finished downloading %WRAPPER_JAR% - ) -) -@REM End of extension - -@REM Provide a "standardized" way to retrieve the CLI args that will -@REM work with both Windows and non-Windows executions. -set MAVEN_CMD_LINE_ARGS=%* - -%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* -if ERRORLEVEL 1 goto error -goto end - -:error -set ERROR_CODE=1 - -:end -@endlocal & set ERROR_CODE=%ERROR_CODE% - -if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost -@REM check for post script, once with legacy .bat ending and once with .cmd ending -if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" -if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" -:skipRcPost - -@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' -if "%MAVEN_BATCH_PAUSE%" == "on" pause - -if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% - -exit /B %ERROR_CODE% diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/pom.xml b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/pom.xml deleted file mode 100644 index b5a24481..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/pom.xml +++ /dev/null @@ -1,116 +0,0 @@ - - - 4.0.0 - - - com.example - api-stat-example-cloud - ${revision} - - - - api-stat-example-cloud-consumer-service - - api-stat-example-cloud-consumer-service - 消费者服务 - - - 1.8 - UTF-8 - UTF-8 - - - - - org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot - spring-boot-starter-logging - - - - - org.springframework.boot - spring-boot-starter-validation - - - com.example - damai-service-common - ${revision} - - - com.example - api-stat-example-cloud-feign-client - ${revision} - - - com.example - api-stat-reported-cloud-service - ${revision} - - - org.springframework.cloud - spring-cloud-starter-openfeign - - - io.github.openfeign - feign-okhttp - - - org.springframework.cloud - spring-cloud-starter-netflix-hystrix - - - com.example - damai-service-hystrix - ${revision} - - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-discovery - - - - com.alibaba.nacos - nacos-common - ${nacos.version} - - - - org.springframework.boot - spring-boot-starter-actuator - - - com.github.ulisesbocchio - jasypt-spring-boot-starter - ${jasypt.version} - - - - - - - org.springframework.boot - spring-boot-maven-plugin - ${spring-boot.version} - - com.damai.ProviderApplication - - - - repackage - - repackage - - - - - - - - diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/src/main/java/com/damai/ConsumerApplication.java b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/src/main/java/com/damai/ConsumerApplication.java deleted file mode 100644 index 96634c01..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/src/main/java/com/damai/ConsumerApplication.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.damai; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.client.discovery.EnableDiscoveryClient; -import org.springframework.cloud.netflix.hystrix.EnableHystrix; -import org.springframework.cloud.openfeign.EnableFeignClients; - - -@EnableDiscoveryClient -@EnableFeignClients -@EnableHystrix -@SpringBootApplication -public class ConsumerApplication { - - public static void main(String[] args) { - SpringApplication.run(ConsumerApplication.class, args); - } - -} diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/src/main/java/com/damai/controller/ConsumerController.java b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/src/main/java/com/damai/controller/ConsumerController.java deleted file mode 100644 index e5fc271e..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/src/main/java/com/damai/controller/ConsumerController.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.damai.controller; - -import com.damai.common.ApiResponse; -import com.damai.dto.InfoDto; -import com.damai.service.ConsumerService; -import com.damai.vo.InfoVo; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.validation.Valid; - -/** - * @program: cook-frame - * @description: - * @author: 星哥 - * @create: 2023-04-17 - **/ -@RestController -@RequestMapping("/consumer") -@Api(tags = "consumer", description = "消费者") -public class ConsumerController { - - @Autowired - private ConsumerService consumerService; - - @ApiOperation(value = "查询信息") - @PostMapping(value = "/getInfo") - public ApiResponse getInfo(@Valid @RequestBody InfoDto infoDto) { - return consumerService.getInfo(infoDto); - } -} diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/src/main/java/com/damai/service/ConsumerService.java b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/src/main/java/com/damai/service/ConsumerService.java deleted file mode 100644 index 0903f690..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/src/main/java/com/damai/service/ConsumerService.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.damai.service; - -import com.damai.client.ProviderClient; -import com.damai.common.ApiResponse; -import com.damai.dto.InfoDto; -import com.damai.vo.InfoVo; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -/** - * @program: cook-frame - * @description: - * @author: 星哥 - * @create: 2023-04-17 - **/ -@Service -@Slf4j -public class ConsumerService { - - @Autowired - private ProviderClient providerClient; - - public ApiResponse getInfo(final InfoDto infoDto) { - return providerClient.getInfo(infoDto); - } -} diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/src/main/resources/bootstrap.yml b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/src/main/resources/bootstrap.yml deleted file mode 100644 index ca1df50e..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/src/main/resources/bootstrap.yml +++ /dev/null @@ -1,26 +0,0 @@ -#服务端口 -server: - port: 5083 -# 应用名称 -spring: - application: - name: consumer-service - main: - allow-bean-definition-overriding: true - redis: - database: 0 - host: www.cookframe.com - port: 6379 - password: ENC(+XH73TopLBEg6H9u0f5FE9csF+oN15Gz) - timeout: 3000 - cloud: - nacos: - discovery: - server-addr: www.cookframe.com:8848 -api-stat: - pointcut: execution(* com.example..*.*(..)) - enable: true -jasypt: - encryptor: - password: bgtjkjl!%^sdc - algorithm: PBEWithMD5AndDES \ No newline at end of file diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/src/main/resources/log4j2.xml b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/src/main/resources/log4j2.xml deleted file mode 100644 index 74caa213..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-consumer-service/src/main/resources/log4j2.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - . - consumer-service - local - log - [consumer-service] %d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n - UTF-8 - com.damai - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/.gitignore b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/.gitignore deleted file mode 100644 index a2a3040a..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -HELP.md -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/** -!**/src/test/** - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ - -### VS Code ### -.vscode/ diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/pom.xml b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/pom.xml deleted file mode 100644 index 8174fdf0..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/pom.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - 4.0.0 - - - com.example - api-stat-example-cloud - ${revision} - - - - api-stat-example-cloud-feign-client - - api-stat-example-cloud-feign-client - rpc - - - 1.8 - UTF-8 - UTF-8 - - - - - com.example - damai-common - ${revision} - - - com.example - damai-service-common - ${revision} - true - - - org.springframework.boot - spring-boot-starter-validation - - - org.springframework.cloud - spring-cloud-starter-openfeign - - - io.github.openfeign - feign-okhttp - - - diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/src/main/java/com/damai/client/ProviderClient.java b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/src/main/java/com/damai/client/ProviderClient.java deleted file mode 100644 index 5e38c761..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/src/main/java/com/damai/client/ProviderClient.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.damai.client; - -import com.damai.common.ApiResponse; -import com.damai.dto.InfoDto; -import com.damai.vo.InfoVo; -import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.stereotype.Component; -import org.springframework.web.bind.annotation.PostMapping; - -/** - * @program: cook-frame - * @description: - * @author: 星哥 - * @create: 2023-04-17 - **/ -@Component -@FeignClient(value = "provider-service",fallback = ProviderClientFallback.class) -public interface ProviderClient { - - @PostMapping("/provider/getInfo") - ApiResponse getInfo(InfoDto infoDto); -} diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/src/main/java/com/damai/client/ProviderClientFallback.java b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/src/main/java/com/damai/client/ProviderClientFallback.java deleted file mode 100644 index 22ce520d..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/src/main/java/com/damai/client/ProviderClientFallback.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.damai.client; - -import com.damai.common.ApiResponse; -import com.damai.dto.InfoDto; -import com.damai.enums.BaseCode; -import com.damai.vo.InfoVo; -import org.springframework.stereotype.Component; - -/** - * @program: cook-frame - * @description: - * @author: 星哥 - * @create: 2023-04-17 - **/ -@Component -public class ProviderClientFallback implements ProviderClient { - - @Override - public ApiResponse getInfo(final InfoDto dto) { - return ApiResponse.error(BaseCode.SYSTEM_ERROR); - } -} diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/src/main/java/com/damai/dto/InfoDto.java b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/src/main/java/com/damai/dto/InfoDto.java deleted file mode 100644 index 3d6cf2ce..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/src/main/java/com/damai/dto/InfoDto.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.damai.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; - -@Data -@ApiModel(value="InfoDto", description ="信息数据查询") -public class InfoDto { - - @ApiModelProperty(name ="code", dataType ="String", value ="code码", required =true) - @NotBlank - private String code; - -} \ No newline at end of file diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/src/main/java/com/damai/vo/InfoVo.java b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/src/main/java/com/damai/vo/InfoVo.java deleted file mode 100644 index 39c78bfc..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-feign-client/src/main/java/com/damai/vo/InfoVo.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.damai.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@ApiModel(value="InfoVo", description ="信息数据") -@Data -public class InfoVo { - - @ApiModelProperty(name ="id", dataType ="String", value ="id", required =true) - private String id; - - @ApiModelProperty(name ="name", dataType ="String", value ="名称", required =true) - private String name; - - @ApiModelProperty(name ="code", dataType ="String", value ="code码", required =true) - private String code; -} \ No newline at end of file diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/.gitignore b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/.gitignore deleted file mode 100644 index a2a3040a..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -HELP.md -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/** -!**/src/test/** - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ - -### VS Code ### -.vscode/ diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/mvnw b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/mvnw deleted file mode 100644 index ea8c8287..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/mvnw +++ /dev/null @@ -1,310 +0,0 @@ -#!/bin/sh -# ---------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF 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 -# -# https://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. -# ---------------------------------------------------------------------------- - -# ---------------------------------------------------------------------------- -# Maven Start Up Batch script -# -# Required ENV vars: -# ------------------ -# JAVA_HOME - location of a JDK home dir -# -# Optional ENV vars -# ----------------- -# M2_HOME - location of maven2's installed home dir -# MAVEN_OPTS - parameters passed to the Java VM when running Maven -# e.g. to debug Maven itself, use -# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -# MAVEN_SKIP_RC - flag to disable loading of mavenrc files -# ---------------------------------------------------------------------------- - -if [ -z "$MAVEN_SKIP_RC" ] ; then - - if [ -f /etc/mavenrc ] ; then - . /etc/mavenrc - fi - - if [ -f "$HOME/.mavenrc" ] ; then - . "$HOME/.mavenrc" - fi - -fi - -# OS specific support. $var _must_ be set to either true or false. -cygwin=false; -darwin=false; -mingw=false -case "`uname`" in - CYGWIN*) cygwin=true ;; - MINGW*) mingw=true;; - Darwin*) darwin=true - # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home - # See https://developer.apple.com/library/mac/qa/qa1170/_index.html - if [ -z "$JAVA_HOME" ]; then - if [ -x "/usr/libexec/java_home" ]; then - export JAVA_HOME="`/usr/libexec/java_home`" - else - export JAVA_HOME="/Library/Java/Home" - fi - fi - ;; -esac - -if [ -z "$JAVA_HOME" ] ; then - if [ -r /etc/gentoo-release ] ; then - JAVA_HOME=`java-mybatisplus --jre-home` - fi -fi - -if [ -z "$M2_HOME" ] ; then - ## resolve links - $0 may be a link to maven's home - PRG="$0" - - # need this for relative symlinks - while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG="`dirname "$PRG"`/$link" - fi - done - - saveddir=`pwd` - - M2_HOME=`dirname "$PRG"`/.. - - # make it fully qualified - M2_HOME=`cd "$M2_HOME" && pwd` - - cd "$saveddir" - # echo Using m2 at $M2_HOME -fi - -# For Cygwin, ensure paths are in UNIX format before anything is touched -if $cygwin ; then - [ -n "$M2_HOME" ] && - M2_HOME=`cygpath --unix "$M2_HOME"` - [ -n "$JAVA_HOME" ] && - JAVA_HOME=`cygpath --unix "$JAVA_HOME"` - [ -n "$CLASSPATH" ] && - CLASSPATH=`cygpath --path --unix "$CLASSPATH"` -fi - -# For Mingw, ensure paths are in UNIX format before anything is touched -if $mingw ; then - [ -n "$M2_HOME" ] && - M2_HOME="`(cd "$M2_HOME"; pwd)`" - [ -n "$JAVA_HOME" ] && - JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" -fi - -if [ -z "$JAVA_HOME" ]; then - javaExecutable="`which javac`" - if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then - # readlink(1) is not available as standard on Solaris 10. - readLink=`which readlink` - if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then - if $darwin ; then - javaHome="`dirname \"$javaExecutable\"`" - javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" - else - javaExecutable="`readlink -f \"$javaExecutable\"`" - fi - javaHome="`dirname \"$javaExecutable\"`" - javaHome=`expr "$javaHome" : '\(.*\)/bin'` - JAVA_HOME="$javaHome" - export JAVA_HOME - fi - fi -fi - -if [ -z "$JAVACMD" ] ; then - if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - else - JAVACMD="`which java`" - fi -fi - -if [ ! -x "$JAVACMD" ] ; then - echo "Error: JAVA_HOME is not defined correctly." >&2 - echo " We cannot execute $JAVACMD" >&2 - exit 1 -fi - -if [ -z "$JAVA_HOME" ] ; then - echo "Warning: JAVA_HOME environment variable is not set." -fi - -CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher - -# traverses directory structure from process work directory to filesystem root -# first directory with .mvn subdirectory is considered project base directory -find_maven_basedir() { - - if [ -z "$1" ] - then - echo "Path not specified to find_maven_basedir" - return 1 - fi - - basedir="$1" - wdir="$1" - while [ "$wdir" != '/' ] ; do - if [ -d "$wdir"/.mvn ] ; then - basedir=$wdir - break - fi - # workaround for JBEAP-8937 (on Solaris 10/Sparc) - if [ -d "${wdir}" ]; then - wdir=`cd "$wdir/.."; pwd` - fi - # end of workaround - done - echo "${basedir}" -} - -# concatenates all lines of a file -concat_lines() { - if [ -f "$1" ]; then - echo "$(tr -s '\n' ' ' < "$1")" - fi -} - -BASE_DIR=`find_maven_basedir "$(pwd)"` -if [ -z "$BASE_DIR" ]; then - exit 1; -fi - -########################################################################################## -# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central -# This allows using the maven wrapper in projects that prohibit checking in binary data. -########################################################################################## -if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then - if [ "$MVNW_VERBOSE" = true ]; then - echo "Found .mvn/wrapper/maven-wrapper.jar" - fi -else - if [ "$MVNW_VERBOSE" = true ]; then - echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." - fi - if [ -n "$MVNW_REPOURL" ]; then - jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" - else - jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" - fi - while IFS="=" read key value; do - case "$key" in (wrapperUrl) jarUrl="$value"; break ;; - esac - done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" - if [ "$MVNW_VERBOSE" = true ]; then - echo "Downloading from: $jarUrl" - fi - wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" - if $cygwin; then - wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` - fi - - if command -v wget > /dev/null; then - if [ "$MVNW_VERBOSE" = true ]; then - echo "Found wget ... using wget" - fi - if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then - wget "$jarUrl" -O "$wrapperJarPath" - else - wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" - fi - elif command -v curl > /dev/null; then - if [ "$MVNW_VERBOSE" = true ]; then - echo "Found curl ... using curl" - fi - if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then - curl -o "$wrapperJarPath" "$jarUrl" -f - else - curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f - fi - - else - if [ "$MVNW_VERBOSE" = true ]; then - echo "Falling back to using Java to download" - fi - javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" - # For Cygwin, switch paths to Windows format before running javac - if $cygwin; then - javaClass=`cygpath --path --windows "$javaClass"` - fi - if [ -e "$javaClass" ]; then - if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then - if [ "$MVNW_VERBOSE" = true ]; then - echo " - Compiling MavenWrapperDownloader.java ..." - fi - # Compiling the Java class - ("$JAVA_HOME/bin/javac" "$javaClass") - fi - if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then - # Running the downloader - if [ "$MVNW_VERBOSE" = true ]; then - echo " - Running MavenWrapperDownloader.java ..." - fi - ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") - fi - fi - fi -fi -########################################################################################## -# End of extension -########################################################################################## - -export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} -if [ "$MVNW_VERBOSE" = true ]; then - echo $MAVEN_PROJECTBASEDIR -fi -MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" - -# For Cygwin, switch paths to Windows format before running java -if $cygwin; then - [ -n "$M2_HOME" ] && - M2_HOME=`cygpath --path --windows "$M2_HOME"` - [ -n "$JAVA_HOME" ] && - JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` - [ -n "$CLASSPATH" ] && - CLASSPATH=`cygpath --path --windows "$CLASSPATH"` - [ -n "$MAVEN_PROJECTBASEDIR" ] && - MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` -fi - -# Provide a "standardized" way to retrieve the CLI args that will -# work with both Windows and non-Windows executions. -MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" -export MAVEN_CMD_LINE_ARGS - -WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain - -exec "$JAVACMD" \ - $MAVEN_OPTS \ - -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ - "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ - ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/mvnw.cmd b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/mvnw.cmd deleted file mode 100644 index c8d43372..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/mvnw.cmd +++ /dev/null @@ -1,182 +0,0 @@ -@REM ---------------------------------------------------------------------------- -@REM Licensed to the Apache Software Foundation (ASF) under one -@REM or more contributor license agreements. See the NOTICE file -@REM distributed with this work for additional information -@REM regarding copyright ownership. The ASF licenses this file -@REM to you under the Apache License, Version 2.0 (the -@REM "License"); you may not use this file except in compliance -@REM with the License. You may obtain a copy of the License at -@REM -@REM https://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, -@REM software distributed under the License is distributed on an -@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@REM KIND, either express or implied. See the License for the -@REM specific language governing permissions and limitations -@REM under the License. -@REM ---------------------------------------------------------------------------- - -@REM ---------------------------------------------------------------------------- -@REM Maven Start Up Batch script -@REM -@REM Required ENV vars: -@REM JAVA_HOME - location of a JDK home dir -@REM -@REM Optional ENV vars -@REM M2_HOME - location of maven2's installed home dir -@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands -@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending -@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven -@REM e.g. to debug Maven itself, use -@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files -@REM ---------------------------------------------------------------------------- - -@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' -@echo off -@REM set title of command window -title %0 -@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' -@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% - -@REM set %HOME% to equivalent of $HOME -if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") - -@REM Execute a user defined script before this one -if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre -@REM check for pre script, once with legacy .bat ending and once with .cmd ending -if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" -if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" -:skipRcPre - -@setlocal - -set ERROR_CODE=0 - -@REM To isolate internal variables from possible post scripts, we use another setlocal -@setlocal - -@REM ==== START VALIDATION ==== -if not "%JAVA_HOME%" == "" goto OkJHome - -echo. -echo Error: JAVA_HOME not found in your environment. >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. -goto error - -:OkJHome -if exist "%JAVA_HOME%\bin\java.exe" goto init - -echo. -echo Error: JAVA_HOME is set to an invalid directory. >&2 -echo JAVA_HOME = "%JAVA_HOME%" >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. -goto error - -@REM ==== END VALIDATION ==== - -:init - -@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". -@REM Fallback to current working directory if not found. - -set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% -IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir - -set EXEC_DIR=%CD% -set WDIR=%EXEC_DIR% -:findBaseDir -IF EXIST "%WDIR%"\.mvn goto baseDirFound -cd .. -IF "%WDIR%"=="%CD%" goto baseDirNotFound -set WDIR=%CD% -goto findBaseDir - -:baseDirFound -set MAVEN_PROJECTBASEDIR=%WDIR% -cd "%EXEC_DIR%" -goto endDetectBaseDir - -:baseDirNotFound -set MAVEN_PROJECTBASEDIR=%EXEC_DIR% -cd "%EXEC_DIR%" - -:endDetectBaseDir - -IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig - -@setlocal EnableExtensions EnableDelayedExpansion -for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a -@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% - -:endReadAdditionalConfig - -SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" -set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" -set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain - -set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" - -FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( - IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B -) - -@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central -@REM This allows using the maven wrapper in projects that prohibit checking in binary data. -if exist %WRAPPER_JAR% ( - if "%MVNW_VERBOSE%" == "true" ( - echo Found %WRAPPER_JAR% - ) -) else ( - if not "%MVNW_REPOURL%" == "" ( - SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" - ) - if "%MVNW_VERBOSE%" == "true" ( - echo Couldn't find %WRAPPER_JAR%, downloading it ... - echo Downloading from: %DOWNLOAD_URL% - ) - - powershell -Command "&{"^ - "$webclient = new-object System.Net.WebClient;"^ - "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ - "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ - "}"^ - "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ - "}" - if "%MVNW_VERBOSE%" == "true" ( - echo Finished downloading %WRAPPER_JAR% - ) -) -@REM End of extension - -@REM Provide a "standardized" way to retrieve the CLI args that will -@REM work with both Windows and non-Windows executions. -set MAVEN_CMD_LINE_ARGS=%* - -%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* -if ERRORLEVEL 1 goto error -goto end - -:error -set ERROR_CODE=1 - -:end -@endlocal & set ERROR_CODE=%ERROR_CODE% - -if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost -@REM check for post script, once with legacy .bat ending and once with .cmd ending -if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" -if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" -:skipRcPost - -@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' -if "%MAVEN_BATCH_PAUSE%" == "on" pause - -if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% - -exit /B %ERROR_CODE% diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/pom.xml b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/pom.xml deleted file mode 100644 index cc8f77d4..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/pom.xml +++ /dev/null @@ -1,116 +0,0 @@ - - - 4.0.0 - - - com.example - api-stat-example-cloud - ${revision} - - - - api-stat-example-cloud-provider-service - - api-stat-example-cloud-provider-service - 提供者服务 - - - 1.8 - UTF-8 - UTF-8 - - - - - org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot - spring-boot-starter-logging - - - - - org.springframework.boot - spring-boot-starter-validation - - - com.example - damai-service-common - ${revision} - - - com.example - api-stat-example-cloud-feign-client - ${revision} - - - com.example - api-stat-reported-cloud-service - ${revision} - - - org.springframework.cloud - spring-cloud-starter-openfeign - - - io.github.openfeign - feign-okhttp - - - org.springframework.cloud - spring-cloud-starter-netflix-hystrix - - - com.example - damai-service-hystrix - ${revision} - - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-discovery - - - - com.alibaba.nacos - nacos-common - ${nacos.version} - - - - org.springframework.boot - spring-boot-starter-actuator - - - com.github.ulisesbocchio - jasypt-spring-boot-starter - ${jasypt.version} - - - - - - - org.springframework.boot - spring-boot-maven-plugin - ${spring-boot.version} - - com.damai.ProviderApplication - - - - repackage - - repackage - - - - - - - - diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/java/com/damai/ProviderApplication.java b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/java/com/damai/ProviderApplication.java deleted file mode 100644 index cd5f2e77..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/java/com/damai/ProviderApplication.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.damai; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.client.discovery.EnableDiscoveryClient; -import org.springframework.cloud.netflix.hystrix.EnableHystrix; -import org.springframework.cloud.openfeign.EnableFeignClients; - - -@EnableDiscoveryClient -@EnableFeignClients -@EnableHystrix -@SpringBootApplication -public class ProviderApplication { - - public static void main(String[] args) { - SpringApplication.run(ProviderApplication.class, args); - } - -} diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/java/com/damai/controller/ProviderController.java b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/java/com/damai/controller/ProviderController.java deleted file mode 100644 index 11bb16a6..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/java/com/damai/controller/ProviderController.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.damai.controller; - - -import com.damai.common.ApiResponse; -import com.damai.dto.InfoDto; -import com.damai.service.ProviderService; -import com.damai.vo.InfoVo; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.validation.Valid; - -/** - * @program: cook-frame - * @description: - * @author: 星哥 - * @create: 2023-04-17 - **/ -@RestController -@RequestMapping("/provider") -@Api(tags = "provider", description = "提供者") -public class ProviderController { - - @Autowired - private ProviderService providerService; - - @ApiOperation(value = "查询信息") - @PostMapping(value = "/getInfo") - public ApiResponse getInfo(@Valid @RequestBody InfoDto infoDto) { - return ApiResponse.ok(providerService.getInfo(infoDto)); - } -} diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/java/com/damai/dao/ProviderDato.java b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/java/com/damai/dao/ProviderDato.java deleted file mode 100644 index 30bc80d3..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/java/com/damai/dao/ProviderDato.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.damai.dao; - -import com.damai.dto.InfoDto; -import com.damai.vo.InfoVo; -import org.springframework.stereotype.Repository; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-10-12 - **/ -@Repository -public class ProviderDato { - - public InfoVo getInfo(InfoDto infoDto){ - InfoVo infoVo = new InfoVo(); - infoVo.setId(infoDto.getCode() + "111"); - infoVo.setCode(infoDto.getCode()); - infoVo.setName("测试"); - return infoVo; - } -} diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/java/com/damai/entity/Department.java b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/java/com/damai/entity/Department.java deleted file mode 100644 index 6a195727..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/java/com/damai/entity/Department.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.damai.entity; - -import lombok.Data; - -import java.util.Date; - -/** - * @program: cook-frame - * @description: - * @author: 星哥 - * @create: 2023-06-05 - **/ - -@Data -public class Department { - - private String id; - - private String name; - - private String typeCode; - - private Date createTime; - - private Integer status; -} diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/java/com/damai/service/ProviderService.java b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/java/com/damai/service/ProviderService.java deleted file mode 100644 index 23b07c10..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/java/com/damai/service/ProviderService.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.damai.service; - -import com.damai.dao.ProviderDato; -import com.damai.dto.InfoDto; -import com.damai.vo.InfoVo; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -/** - * @program: cook-frame - * @description: - * @author: 星哥 - * @create: 2023-04-17 - **/ -@Service -@Slf4j -public class ProviderService { - - @Autowired - private ProviderDato providerDato; - - public InfoVo getInfo(InfoDto infoDto){ - return providerDato.getInfo(infoDto); - } -} diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/resources/bootstrap.yml b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/resources/bootstrap.yml deleted file mode 100644 index 8fcc1e38..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/resources/bootstrap.yml +++ /dev/null @@ -1,26 +0,0 @@ -#服务端口 -server: - port: 5082 -# 应用名称 -spring: - application: - name: provider-service - main: - allow-bean-definition-overriding: true - redis: - database: 0 - host: www.cookframe.com - port: 6379 - password: ENC(+XH73TopLBEg6H9u0f5FE9csF+oN15Gz) - timeout: 3000 - cloud: - nacos: - discovery: - server-addr: www.cookframe.com:8848 -api-stat: - pointcut: execution(* com.example..*.*(..)) - enable: true -jasypt: - encryptor: - password: bgtjkjl!%^sdc - algorithm: PBEWithMD5AndDES \ No newline at end of file diff --git a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/resources/log4j2.xml b/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/resources/log4j2.xml deleted file mode 100644 index e82a118d..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/api-stat-example-cloud-provider-service/src/main/resources/log4j2.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - . - provider-service - local - log - [provider-service] %d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n - UTF-8 - com.damai - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/api-stat/api-stat-example/api-stat-example-cloud/pom.xml b/api-stat/api-stat-example/api-stat-example-cloud/pom.xml deleted file mode 100644 index 827ce405..00000000 --- a/api-stat/api-stat-example/api-stat-example-cloud/pom.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - 4.0.0 - - - com.example - api-stat-example - ${revision} - - - api-stat-example-cloud - api-stat-example-cloud - api-stat-example-cloud - pom - - - api-stat-example-cloud-feign-client - api-stat-example-cloud-consumer-service - api-stat-example-cloud-provider-service - - - diff --git a/api-stat/api-stat-example/api-stat-example-single-service/.gitignore b/api-stat/api-stat-example/api-stat-example-single-service/.gitignore deleted file mode 100644 index a2a3040a..00000000 --- a/api-stat/api-stat-example/api-stat-example-single-service/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -HELP.md -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/** -!**/src/test/** - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ - -### VS Code ### -.vscode/ diff --git a/api-stat/api-stat-example/api-stat-example-single-service/pom.xml b/api-stat/api-stat-example/api-stat-example-single-service/pom.xml deleted file mode 100644 index d6c49a08..00000000 --- a/api-stat/api-stat-example/api-stat-example-single-service/pom.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - 4.0.0 - - - com.example - api-stat-example - ${revision} - - - - api-stat-example-single-service - - api-stat-example-single-service - api单体服务示例 - - - 1.8 - UTF-8 - UTF-8 - 6.2.2 - - - - - org.springframework.boot - spring-boot-starter-web - - - com.example - api-stat-reported-single-service - ${revision} - - - diff --git a/api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/ExampleSingleApplication.java b/api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/ExampleSingleApplication.java deleted file mode 100644 index 85f8e2ee..00000000 --- a/api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/ExampleSingleApplication.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.damai; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - - - -@SpringBootApplication -public class ExampleSingleApplication { - - public static void main(String[] args) { - SpringApplication.run(ExampleSingleApplication.class, args); - } - -} diff --git a/api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/controller/ExampleSingleController.java b/api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/controller/ExampleSingleController.java deleted file mode 100644 index da28b33d..00000000 --- a/api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/controller/ExampleSingleController.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.damai.controller; - -import com.damai.service.ExampleSingleService; -import com.damai.util.Time; -import com.damai.vo.UserVo; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-10-08 - **/ -@RestController -@RequestMapping(value = "/exampleSingle") -public class ExampleSingleController { - - @Autowired - private ExampleSingleService exampleSingleService; - - @RequestMapping(value = "/getUser") - public UserVo getUser(String userId){ - Time.simulationTime(); - return exampleSingleService.getUser(userId); - } -} diff --git a/api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/dao/ExampleSingleDao.java b/api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/dao/ExampleSingleDao.java deleted file mode 100644 index f90dfe4b..00000000 --- a/api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/dao/ExampleSingleDao.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.damai.dao; - -import com.damai.util.Time; -import com.damai.vo.UserVo; -import org.springframework.stereotype.Repository; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-10-08 - **/ -@Repository -public class ExampleSingleDao { - - public UserVo getUser(String userId){ - Time.simulationTime(); - UserVo userVo = new UserVo(); - userVo.setUserId(userId); - userVo.setName("张三"); - return userVo; - } -} diff --git a/api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/service/ExampleSingleService.java b/api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/service/ExampleSingleService.java deleted file mode 100644 index d2bee9af..00000000 --- a/api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/service/ExampleSingleService.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.damai.service; - -import com.damai.dao.ExampleSingleDao; -import com.damai.util.Time; -import com.damai.vo.UserVo; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-10-08 - **/ -@Service -public class ExampleSingleService { - - @Autowired - private ExampleSingleDao exampleSingleDao; - - public UserVo getUser(String userId){ - Time.simulationTime(); - return exampleSingleDao.getUser(userId); - } -} diff --git a/api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/util/Time.java b/api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/util/Time.java deleted file mode 100644 index 4a234fca..00000000 --- a/api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/util/Time.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.damai.util; - -import java.util.Random; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-10-08 - **/ -public class Time { - - public static void simulationTime() { - Random random = new Random(); - int sleepTime = random.nextInt(2000); - try { - Thread.sleep(sleepTime); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - } - } -} diff --git a/api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/vo/UserVo.java b/api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/vo/UserVo.java deleted file mode 100644 index 8a721f7b..00000000 --- a/api-stat/api-stat-example/api-stat-example-single-service/src/main/java/com/damai/vo/UserVo.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.damai.vo; - -import lombok.Data; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-10-08 - **/ -@Data -public class UserVo { - - private String userId; - - private String name; -} diff --git a/api-stat/api-stat-example/api-stat-example-single-service/src/main/resources/application.yml b/api-stat/api-stat-example/api-stat-example-single-service/src/main/resources/application.yml deleted file mode 100644 index 357f9b7d..00000000 --- a/api-stat/api-stat-example/api-stat-example-single-service/src/main/resources/application.yml +++ /dev/null @@ -1,15 +0,0 @@ -#服务端口 -server: - port: 6660 -# 应用名称 -spring: - application: - name: example-sing-service - redis: - host: www.cookframe.com - port: 6379 - password: qaz123 - database: 0 -api-stat: - pointcut: execution(* com.example..*.*(..)) - enable: true \ No newline at end of file diff --git a/api-stat/api-stat-example/pom.xml b/api-stat/api-stat-example/pom.xml deleted file mode 100644 index 24e1de23..00000000 --- a/api-stat/api-stat-example/pom.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - 4.0.0 - - - com.example - api-stat - ${revision} - - - api-stat-example - api-stat-example - api-stat-example - pom - - - api-stat-example-single-service - api-stat-example-cloud - - - diff --git a/api-stat/api-stat-reported/.gitignore b/api-stat/api-stat-reported/.gitignore deleted file mode 100644 index a2a3040a..00000000 --- a/api-stat/api-stat-reported/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -HELP.md -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/** -!**/src/test/** - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ - -### VS Code ### -.vscode/ diff --git a/api-stat/api-stat-reported/api-stat-reported-cloud-service/.gitignore b/api-stat/api-stat-reported/api-stat-reported-cloud-service/.gitignore deleted file mode 100644 index a2a3040a..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-cloud-service/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -HELP.md -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/** -!**/src/test/** - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ - -### VS Code ### -.vscode/ diff --git a/api-stat/api-stat-reported/api-stat-reported-cloud-service/pom.xml b/api-stat/api-stat-reported/api-stat-reported-cloud-service/pom.xml deleted file mode 100644 index 8c8e1136..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-cloud-service/pom.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - 4.0.0 - - - com.example - api-stat-reported - ${revision} - - - - api-stat-reported-cloud-service - - api-stat-reported-cloud-service - api微服务统计 - - - - - com.example - api-stat-reported-single-service - ${revision} - - - org.springframework.cloud - spring-cloud-starter-openfeign - - - - diff --git a/api-stat/api-stat-reported/api-stat-reported-cloud-service/src/main/java/com/damai/common/impl/ApiStatCloudServiceCommon.java b/api-stat/api-stat-reported/api-stat-reported-cloud-service/src/main/java/com/damai/common/impl/ApiStatCloudServiceCommon.java deleted file mode 100644 index cae4c9a8..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-cloud-service/src/main/java/com/damai/common/impl/ApiStatCloudServiceCommon.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.damai.common.impl; - -import com.damai.common.ApiStatCommon; -import com.damai.enums.MethodLevel; -import org.aopalliance.intercept.MethodInvocation; -import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.stereotype.Controller; -import org.springframework.stereotype.Repository; -import org.springframework.stereotype.Service; -import org.springframework.web.bind.annotation.RestController; - -import static com.damai.constant.ApiStatConstant.*; -import static com.damai.constant.ApiStatConstant.MAPPER; - -public class ApiStatCloudServiceCommon extends ApiStatCommon { - @Override - public MethodLevel getMethodLevel(MethodInvocation pjp) { - Class targetClass = pjp.getThis().getClass(); - if (targetClass.getAnnotation(Controller.class) != null || targetClass.getAnnotation(RestController.class) != null) { - return MethodLevel.CONTROLLER; - } else if (targetClass.getAnnotation(Service.class) != null) { - return MethodLevel.SERVICE; - } else if (targetClass.getAnnotation(Repository.class) != null) { - return MethodLevel.DAO; - } else if (targetClass.getAnnotation(FeignClient.class) != null) { - return MethodLevel.FEIGN; - } else if (targetClass.getName().contains(FEIGN)) { - return MethodLevel.FEIGN; - } - String className = pjp.getMethod().getDeclaringClass().getName().toLowerCase(); - if (className.contains(CONTROLLER)) { - return MethodLevel.CONTROLLER; - } else if (className.contains(SERVICE)) { - return MethodLevel.SERVICE; - } else if (className.contains(DAO) || className.contains(MAPPER)) { - return MethodLevel.DAO; - } else if (className.contains(FEIGN)) { - return MethodLevel.FEIGN; - } else { - return MethodLevel.OTHER_TYPE; - } - } -} diff --git a/api-stat/api-stat-reported/api-stat-reported-cloud-service/src/main/java/com/damai/config/ApiStatCloudAutoConfig.java b/api-stat/api-stat-reported/api-stat-reported-cloud-service/src/main/java/com/damai/config/ApiStatCloudAutoConfig.java deleted file mode 100644 index a575d12c..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-cloud-service/src/main/java/com/damai/config/ApiStatCloudAutoConfig.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.damai.config; - -import com.damai.common.ApiStatCommon; -import com.damai.common.impl.ApiStatCloudServiceCommon; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; -import org.springframework.boot.autoconfigure.AutoConfigureBefore; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; - -@Slf4j -@Data -@EnableConfigurationProperties(ApiStatProperties.class) -@ConditionalOnProperty(value = "api-stat.enable",havingValue = "true") -@AutoConfigureBefore(ApiStatAutoConfig.class) -public class ApiStatCloudAutoConfig { - - @Bean - @ConditionalOnMissingBean - public ApiStatCommon ApiStatSingleServiceCommon(){ - return new ApiStatCloudServiceCommon(); - } -} diff --git a/api-stat/api-stat-reported/api-stat-reported-cloud-service/src/main/resources/META-INF/spring.factories b/api-stat/api-stat-reported/api-stat-reported-cloud-service/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 4a4618f4..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-cloud-service/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - com.damai.config.ApiStatCloudAutoConfig \ No newline at end of file diff --git a/api-stat/api-stat-reported/api-stat-reported-single-service/.gitignore b/api-stat/api-stat-reported/api-stat-reported-single-service/.gitignore deleted file mode 100644 index a2a3040a..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-single-service/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -HELP.md -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/** -!**/src/test/** - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ - -### VS Code ### -.vscode/ diff --git a/api-stat/api-stat-reported/api-stat-reported-single-service/pom.xml b/api-stat/api-stat-reported/api-stat-reported-single-service/pom.xml deleted file mode 100644 index 47f520a0..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-single-service/pom.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - 4.0.0 - - - com.example - api-stat-reported - ${revision} - - - - api-stat-reported-single-service - - api-stat-reported-single-service - api单体服务统计 - - - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-aop - - - org.aspectj - aspectjweaver - - - org.springframework.boot - spring-boot-starter-data-redis - - - com.alibaba - fastjson - ${fastjson.version} - - - org.springframework.boot - spring-boot-starter-mail - - - net.bytebuddy - byte-buddy-agent - - - com.github.oshi - oshi-core - ${oshi-core.version} - - - com.example - damai-redis-framework - ${revision} - - - com.example - api-stat-common - ${revision} - - - - diff --git a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/ApiStatThreadPool.java b/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/ApiStatThreadPool.java deleted file mode 100644 index 7867a4ef..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/ApiStatThreadPool.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.damai; - -import java.util.concurrent.*; - -public class ApiStatThreadPool { - - private ThreadPoolExecutor threadPoolExecutor = null; - - public ApiStatThreadPool(){ - threadPoolExecutor = new ThreadPoolExecutor( - Runtime.getRuntime().availableProcessors() + 1, - Runtime.getRuntime().availableProcessors() * 2, - 60, - TimeUnit.SECONDS, - new ArrayBlockingQueue<>(1000)); - } - - public void execute(Runnable runnable){ - threadPoolExecutor.execute(runnable); - } - - public Future submit(Callable task){ - return threadPoolExecutor.submit(task); - } -} diff --git a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/MethodDataStackHolder.java b/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/MethodDataStackHolder.java deleted file mode 100644 index 37a30c1f..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/MethodDataStackHolder.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.damai; - -import com.damai.structure.MethodData; - -import java.util.Stack; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-09-28 - **/ -public class MethodDataStackHolder { - - private final ThreadLocal> threadLocal; - - public MethodDataStackHolder(){ - threadLocal = new ThreadLocal<>(); - } - - public void putMethodData(MethodData methodData) { - Stack stack = null; - if (threadLocal.get() == null) { - stack = new Stack<>(); - }else { - stack = threadLocal.get(); - } - stack.add(methodData); - threadLocal.set(stack); - } - - public Stack getMethodData() { - return threadLocal.get(); - } - - public void remove() { - Stack stack = threadLocal.get(); - if (stack==null) { - return; - } - stack.pop(); - if (stack.isEmpty()) { - threadLocal.remove(); - } - } -} diff --git a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/common/ApiStatCommon.java b/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/common/ApiStatCommon.java deleted file mode 100644 index 3f134daa..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/common/ApiStatCommon.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.damai.common; - - -import com.damai.enums.MethodLevel; -import org.aopalliance.intercept.MethodInvocation; -import org.springframework.context.EnvironmentAware; -import org.springframework.core.env.Environment; -import org.springframework.web.bind.annotation.DeleteMapping; -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.RequestMapping; - -import java.lang.reflect.Method; - -import static com.damai.constant.ApiStatConstant.API_SPLIT; -import static com.damai.constant.ApiStatConstant.SPRING_APPLICATION_NAME; - -public abstract class ApiStatCommon implements EnvironmentAware { - - protected Environment environment; - - public String getApplicationName(){ - return environment.getProperty(SPRING_APPLICATION_NAME); - } - - public String getApi(MethodInvocation methodInvocation) { - Class targetClass = methodInvocation.getThis().getClass(); - String[] controllerClassApi = getControllerClassApi(targetClass); - StringBuilder api = new StringBuilder(getApplicationName()); - if (controllerClassApi != null && controllerClassApi.length > 0) { - if (!controllerClassApi[0].startsWith(API_SPLIT)) { - api.append(API_SPLIT); - } - api.append(controllerClassApi[0]); - } - String[] controllerMethodApi = getControllerMethodApi(methodInvocation.getMethod()); - if (controllerMethodApi == null || controllerMethodApi.length == 0) { - return null; - } - if (!controllerMethodApi[0].startsWith(API_SPLIT)) { - api.append(API_SPLIT); - } - api.append(controllerMethodApi[0]); - return api.toString(); - } - - public String[] getControllerClassApi(Class controllerClass) { - RequestMapping requestMapping = controllerClass.getAnnotation(RequestMapping.class); - if (requestMapping != null) { - return requestMapping.value(); - } - PostMapping postMapping = controllerClass.getAnnotation(PostMapping.class); - if (postMapping != null) { - return postMapping.value(); - } - GetMapping getMapping = controllerClass.getAnnotation(GetMapping.class); - if (getMapping != null) { - return getMapping.value(); - } - PutMapping putMapping = controllerClass.getAnnotation(PutMapping.class); - if (putMapping != null) { - return putMapping.value(); - } - DeleteMapping deleteMapping = controllerClass.getAnnotation(DeleteMapping.class); - if (deleteMapping != null) { - return deleteMapping.value(); - } - return null; - } - - public String[] getControllerMethodApi(Method method) { - RequestMapping requestMapping = method.getAnnotation(RequestMapping.class); - if (requestMapping != null) { - return requestMapping.value(); - } - PostMapping postMapping = method.getAnnotation(PostMapping.class); - if (postMapping != null) { - return postMapping.value(); - } - GetMapping getMapping = method.getAnnotation(GetMapping.class); - if (getMapping != null) { - return getMapping.value(); - } - PutMapping putMapping = method.getAnnotation(PutMapping.class); - if (putMapping != null) { - return putMapping.value(); - } - DeleteMapping deleteMapping = method.getAnnotation(DeleteMapping.class); - if (deleteMapping != null) { - return deleteMapping.value(); - } - return null; - } - - public abstract MethodLevel getMethodLevel(MethodInvocation pjp); - - @Override - public void setEnvironment(Environment environment) { - this.environment = environment; - } - -} - diff --git a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/common/impl/ApiStatSingleServiceCommon.java b/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/common/impl/ApiStatSingleServiceCommon.java deleted file mode 100644 index bfa92351..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/common/impl/ApiStatSingleServiceCommon.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.damai.common.impl; - -import com.damai.common.ApiStatCommon; -import com.damai.enums.MethodLevel; -import org.aopalliance.intercept.MethodInvocation; -import org.springframework.stereotype.Controller; -import org.springframework.stereotype.Repository; -import org.springframework.stereotype.Service; -import org.springframework.web.bind.annotation.RestController; - -import static com.damai.constant.ApiStatConstant.*; - -public class ApiStatSingleServiceCommon extends ApiStatCommon { - @Override - public MethodLevel getMethodLevel(MethodInvocation pjp) { - Class targetClass = pjp.getThis().getClass(); - if (targetClass.getAnnotation(Controller.class) != null || targetClass.getAnnotation(RestController.class) != null) { - return MethodLevel.CONTROLLER; - } else if (targetClass.getAnnotation(Service.class) != null) { - return MethodLevel.SERVICE; - } else if (targetClass.getAnnotation(Repository.class) != null) { - return MethodLevel.DAO; - } - String className = pjp.getMethod().getDeclaringClass().getName().toLowerCase(); - if (className.contains(CONTROLLER)) { - return MethodLevel.CONTROLLER; - } else if (className.contains(SERVICE)) { - return MethodLevel.SERVICE; - } else if (className.contains(DAO) || className.contains(MAPPER)) { - return MethodLevel.DAO; - } else { - return MethodLevel.OTHER_TYPE; - } - } -} diff --git a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/config/ApiStatAutoConfig.java b/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/config/ApiStatAutoConfig.java deleted file mode 100644 index e7a1bd32..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/config/ApiStatAutoConfig.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.damai.config; - -import com.damai.ApiStatThreadPool; -import com.damai.common.ApiStatCommon; -import com.damai.common.impl.ApiStatSingleServiceCommon; -import com.damai.event.ApiStatEventHandler; -import com.damai.event.ApiStatEventPush; -import com.damai.handler.ApiStatRunTimeHandler; -import com.damai.redis.RedisCache; -import com.damai.MethodDataStackHolder; -import com.damai.handler.MethodHierarchyTransferHandler; -import com.damai.operate.MethodDataOperate; -import com.damai.operate.MethodHierarchyTransferOperate; -import com.damai.operate.MethodQueueOperate; -import com.damai.save.DataSave; -import com.damai.save.impl.RedisDataSave; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; -import org.springframework.aop.aspectj.AspectJExpressionPointcutAdvisor; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-09-27 - **/ -@Slf4j -@Data -@EnableConfigurationProperties(ApiStatProperties.class) -@ConditionalOnProperty(value = "api-stat.enable",havingValue = "true") -public class ApiStatAutoConfig { - - @Bean - public ApiStatThreadPool apiStatThreadPool(){ - return new ApiStatThreadPool(); - } - - @Bean - @ConditionalOnMissingBean - public ApiStatCommon ApiStatSingleServiceCommon(){ - return new ApiStatSingleServiceCommon(); - } - - @Bean - public MethodDataStackHolder methodDataStackHolder(){ - return new MethodDataStackHolder(); - } - @Bean - public MethodDataOperate methodDataOperate(MethodDataStackHolder methodDataStackHolder,ApiStatCommon apiStatCommon){ - return new MethodDataOperate(methodDataStackHolder,apiStatCommon); - } - - @Bean - public MethodHierarchyTransferOperate methodHierarchyTransferOperate(){ - return new MethodHierarchyTransferOperate(); - } - - @Bean - public MethodQueueOperate methodQueueOperate(MethodHierarchyTransferHandler methodHierarchyTransferHandler,ApiStatProperties apiStatProperties){ - return new MethodQueueOperate(methodHierarchyTransferHandler,apiStatProperties); - } - - @Bean - public DataSave dataSave(RedisCache redisCache,ApiStatProperties apiStatProperties,ApiStatCommon apiStatCommon){ - return new RedisDataSave(redisCache,apiStatProperties,apiStatCommon); - } - - @Bean - public MethodHierarchyTransferHandler methodHierarchyTransferHandler(DataSave dataSave){ - return new MethodHierarchyTransferHandler(dataSave); - } - - @Bean - public AspectJExpressionPointcutAdvisor apiStatAdvisor(ApiStatProperties apiStatProperties, MethodDataOperate methodDataOperate, - MethodDataStackHolder methodDataStackHolder, - MethodHierarchyTransferOperate methodHierarchyTransferOperate, - MethodQueueOperate methodQueueOperate) { - AspectJExpressionPointcutAdvisor advisor = new AspectJExpressionPointcutAdvisor(); - advisor.setExpression(apiStatProperties.getPointcut()); - advisor.setAdvice(new ApiStatRunTimeHandler(methodDataOperate,methodDataStackHolder, - methodHierarchyTransferOperate,methodQueueOperate)); - return advisor; - } - - @Bean - public ApiStatEventPush apiStatEventPush(){ - return new ApiStatEventPush(); - } - - @Bean - public ApiStatEventHandler apiStatEventHandler(MethodQueueOperate methodQueueOperate){ - return new ApiStatEventHandler(methodQueueOperate); - } -} diff --git a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/config/ApiStatProperties.java b/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/config/ApiStatProperties.java deleted file mode 100644 index 7d6659ac..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/config/ApiStatProperties.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.damai.config; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; - -import java.util.Map; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-09-27 - **/ -@Data -@ConfigurationProperties(prefix = ApiStatProperties.prefix) -public class ApiStatProperties { - - public static final String prefix = "api-stat"; - - private boolean enable; - - private String pointcut; - - private Integer queueSize = 5000; - - private Map noReported; -} diff --git a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/event/ApiStatEvent.java b/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/event/ApiStatEvent.java deleted file mode 100644 index ed6d8286..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/event/ApiStatEvent.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.damai.event; - -import org.springframework.context.ApplicationEvent; - -/** - * @program: - * @description: - * @author: - * @create: 2023-10-03 - **/ -public class ApiStatEvent extends ApplicationEvent { - /** - * Create a new {@code ApplicationEvent}. - * - * @param source the object on which the event initially occurred or with - * which the event is associated (never {@code null}) - */ - public ApiStatEvent(final Object source) { - super(source); - } -} \ No newline at end of file diff --git a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/event/ApiStatEventHandler.java b/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/event/ApiStatEventHandler.java deleted file mode 100644 index 8b01cf10..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/event/ApiStatEventHandler.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.damai.event; - -import com.damai.operate.MethodQueueOperate; -import lombok.AllArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.ApplicationListener; - -@AllArgsConstructor -@Slf4j -public class ApiStatEventHandler implements ApplicationListener { - - private final MethodQueueOperate methodQueueOperate; - - - @Override - public void onApplicationEvent(ApiStatEvent event) { - new Thread(() -> { - try { - log.info("take method queue..."); - methodQueueOperate.takeTask(); - }catch (Exception e) { - log.error("take method queue error",e); - } - }).start(); - } - -} diff --git a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/event/ApiStatEventPush.java b/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/event/ApiStatEventPush.java deleted file mode 100644 index 73f172f0..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/event/ApiStatEventPush.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.damai.event; - -import org.springframework.boot.context.event.ApplicationStartedEvent; -import org.springframework.context.ApplicationListener; - -/** - * @program: - * @description: - * @author: 星哥 - * @create: 2023-04-24 - **/ - -public class ApiStatEventPush implements ApplicationListener { - - @Override - public void onApplicationEvent(final ApplicationStartedEvent event) { - event.getApplicationContext().publishEvent(new ApiStatEvent(this)); - } -} diff --git a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/handler/ApiStatRunTimeHandler.java b/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/handler/ApiStatRunTimeHandler.java deleted file mode 100644 index 286a6710..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/handler/ApiStatRunTimeHandler.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.damai.handler; - -import com.damai.MethodDataStackHolder; -import com.damai.operate.MethodDataOperate; -import com.damai.operate.MethodHierarchyTransferOperate; -import com.damai.operate.MethodQueueOperate; -import com.damai.structure.MethodData; -import com.damai.structure.MethodHierarchyTransfer; - -import lombok.AllArgsConstructor; -import org.aopalliance.intercept.MethodInterceptor; -import org.aopalliance.intercept.MethodInvocation; - -import java.math.BigDecimal; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-09-27 - **/ -@AllArgsConstructor -public class ApiStatRunTimeHandler implements MethodInterceptor { - - private final MethodDataOperate methodDataOperate; - - private final MethodDataStackHolder methodDataStackHolder; - - private final MethodHierarchyTransferOperate methodHierarchyTransferOperate; - - private final MethodQueueOperate methodQueueOperate; - - @Override - public Object invoke(final MethodInvocation methodInvocation) throws Throwable { - Object obj; - long start = System.currentTimeMillis(); - MethodData parentMethodData = methodDataOperate.getParentMethodData(); - MethodHierarchyTransfer methodHierarchyTransfer; - boolean exceptionFlag = false; - MethodData currentMethodData; - currentMethodData = methodDataOperate.getCurrentMethodData(methodInvocation); - try { - methodDataStackHolder.putMethodData(currentMethodData); - obj = methodInvocation.proceed(); - } catch (Throwable t) { - exceptionFlag = true; - throw t; - } finally { - long end = System.currentTimeMillis(); - currentMethodData.setExecuteTime(new BigDecimal(end - start)); - methodHierarchyTransfer = methodHierarchyTransferOperate.getMethodHierarchyTransfer(methodInvocation,parentMethodData, - currentMethodData,exceptionFlag); - methodQueueOperate.add(methodHierarchyTransfer); - methodDataStackHolder.remove(); - } - return obj; - } -} diff --git a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/handler/MethodHierarchyTransferHandler.java b/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/handler/MethodHierarchyTransferHandler.java deleted file mode 100644 index 53840e0a..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/handler/MethodHierarchyTransferHandler.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.damai.handler; - -import com.damai.save.DataSave; -import com.damai.structure.MethodHierarchyTransfer; -import lombok.AllArgsConstructor; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-09-28 - **/ -@AllArgsConstructor -public class MethodHierarchyTransferHandler{ - - private final DataSave dataSave; - - public void consumer(MethodHierarchyTransfer methodHierarchyTransfer){ - dataSave.save(methodHierarchyTransfer); - } -} diff --git a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/operate/MethodDataOperate.java b/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/operate/MethodDataOperate.java deleted file mode 100644 index c649b679..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/operate/MethodDataOperate.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.damai.operate; - -import com.damai.enums.MethodLevel; -import com.damai.MethodDataStackHolder; -import com.damai.structure.MethodData; -import com.damai.common.ApiStatCommon; -import lombok.AllArgsConstructor; -import org.aopalliance.intercept.MethodInvocation; - -import java.util.Stack; - -import static com.damai.constant.ApiStatConstant.METHOD_DATA_SPLIT; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-09-28 - **/ -@AllArgsConstructor -public class MethodDataOperate { - - private final MethodDataStackHolder methodDataStackHolder; - - private final ApiStatCommon apiStatCommon; - - - public MethodData getParentMethodData() { - Stack stack = methodDataStackHolder.getMethodData(); - if (stack == null) { - return null; - } - return stack.peek(); - } - - public MethodData getCurrentMethodData(MethodInvocation methodInvocation) { - String className = methodInvocation.getMethod().getDeclaringClass().getName(); - String methodName = methodInvocation.getMethod().getName(); - MethodData methodData = new MethodData(); - methodData.setId(apiStatCommon.getApplicationName() + METHOD_DATA_SPLIT + className + METHOD_DATA_SPLIT + methodName); - methodData.setClassName(className); - methodData.setMethodName(methodName); - methodData.setMethodLevel(apiStatCommon.getMethodLevel(methodInvocation)); - if (methodData.getMethodLevel()== MethodLevel.CONTROLLER) { - methodData.setApi(apiStatCommon.getApi(methodInvocation)); - } - return methodData; - } -} diff --git a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/operate/MethodHierarchyTransferOperate.java b/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/operate/MethodHierarchyTransferOperate.java deleted file mode 100644 index 2cf238e8..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/operate/MethodHierarchyTransferOperate.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.damai.operate; - -import com.damai.structure.MethodData; -import com.damai.structure.MethodHierarchyTransfer; -import org.aopalliance.intercept.MethodInvocation; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-09-28 - **/ -public class MethodHierarchyTransferOperate { - - public MethodHierarchyTransfer getMethodHierarchyTransfer(MethodInvocation methodInvocation, MethodData parentMethodData, - MethodData currentMethodData, boolean exceptionFlag) { - MethodHierarchyTransfer methodHierarchyTransfer = new MethodHierarchyTransfer(); - methodHierarchyTransfer.setCurrentMethodData(currentMethodData); - methodHierarchyTransfer.setParentMethodData(parentMethodData); - methodHierarchyTransfer.setNames(methodInvocation.getMethod().getParameters()); - methodHierarchyTransfer.setValues(methodInvocation.getArguments()); - methodHierarchyTransfer.setExceptionFlag(exceptionFlag); - return methodHierarchyTransfer; - } -} diff --git a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/operate/MethodQueueOperate.java b/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/operate/MethodQueueOperate.java deleted file mode 100644 index 1e916d63..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/operate/MethodQueueOperate.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.damai.operate; - - -import com.alibaba.fastjson.JSON; -import com.damai.config.ApiStatProperties; -import com.damai.handler.MethodHierarchyTransferHandler; -import com.damai.structure.MethodHierarchyTransfer; -import lombok.extern.slf4j.Slf4j; - -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.BlockingQueue; - -@Slf4j -public class MethodQueueOperate { - - private final BlockingQueue blockingQueue; - - private final MethodHierarchyTransferHandler methodHierarchyTransferHandler; - - - public MethodQueueOperate(MethodHierarchyTransferHandler methodHierarchyTransferHandler,ApiStatProperties apiStatProperties){ - this.blockingQueue = new ArrayBlockingQueue<>(apiStatProperties.getQueueSize()); - this.methodHierarchyTransferHandler = methodHierarchyTransferHandler; - } - - public void add(MethodHierarchyTransfer methodHierarchyTransfer) { - boolean result = blockingQueue.offer(methodHierarchyTransfer); - if (!result) { - log.warn("blockingQueue offer fail methodHierarchyTransfer : {}", JSON.toJSONString(methodHierarchyTransfer)); - } - } - - - public void takeTask() { - for(;;) { - try { - MethodHierarchyTransfer methodHierarchyTransfer = blockingQueue.take(); - methodHierarchyTransferHandler.consumer(methodHierarchyTransfer); - } catch (Exception e) { - log.error("consumer task error",e); - } - } - } -} diff --git a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/save/DataSave.java b/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/save/DataSave.java deleted file mode 100644 index 8139ff15..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/save/DataSave.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.damai.save; - -import com.damai.structure.MethodHierarchyTransfer; - -public interface DataSave { - - void save(MethodHierarchyTransfer methodHierarchyTransfer); -} diff --git a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/save/impl/RedisDataSave.java b/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/save/impl/RedisDataSave.java deleted file mode 100644 index 9097dac7..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/java/com/damai/save/impl/RedisDataSave.java +++ /dev/null @@ -1,128 +0,0 @@ -package com.damai.save.impl; - - -import com.alibaba.fastjson.JSON; -import com.damai.common.ApiStatCommon; -import com.damai.config.ApiStatProperties; -import com.damai.core.RedisKeyEnum; -import com.damai.core.StringUtil; -import com.damai.enums.MethodLevel; -import com.damai.redis.RedisCache; -import com.damai.redis.RedisKeyWrap; -import com.damai.save.DataSave; -import com.damai.structure.MethodData; -import com.damai.structure.MethodDetailData; -import com.damai.structure.MethodHierarchyTransfer; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; -import org.springframework.core.io.ClassPathResource; -import org.springframework.data.redis.core.script.DefaultRedisScript; -import org.springframework.scripting.support.ResourceScriptSource; -import org.springframework.util.AntPathMatcher; -import org.springframework.util.PathMatcher; - -import javax.annotation.PostConstruct; -import java.math.BigDecimal; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static com.damai.constant.ApiStatConstant.REDIS_DATA_SAVE_LUA_PATH; - -@Slf4j -public class RedisDataSave implements DataSave { - - private final RedisCache redisCache; - - private final ApiStatProperties apiStatProperties; - - private final ApiStatCommon apiStatCommon; - - private final PathMatcher matcher = new AntPathMatcher(); - - private DefaultRedisScript redisScript; - - public RedisDataSave(RedisCache redisCache,ApiStatProperties apiStatProperties,ApiStatCommon apiStatCommon){ - this.redisCache = redisCache; - this.apiStatProperties = apiStatProperties; - this.apiStatCommon = apiStatCommon; - } - - @PostConstruct - public void init(){ - try { - redisScript = new DefaultRedisScript(); - redisScript.setScriptSource(new ResourceScriptSource(new ClassPathResource(REDIS_DATA_SAVE_LUA_PATH))); - redisScript.setResultType(String.class); - } catch (Exception e) { - log.error("redisScript init lua error",e); - } - } - - @Override - public void save(MethodHierarchyTransfer methodHierarchyTransfer) { - MethodData currentMethodData = methodHierarchyTransfer.getCurrentMethodData(); - MethodData parentMethodData = methodHierarchyTransfer.getParentMethodData(); - BigDecimal executeTime = addMethodDetail(currentMethodData,methodHierarchyTransfer.isExceptionFlag()); - if (currentMethodData.getMethodLevel() == MethodLevel.CONTROLLER) { - addControllerSortedSet(currentMethodData,apiStatProperties,executeTime); - } - - addChildren(parentMethodData,currentMethodData); - } - - public BigDecimal addMethodDetail(MethodData methodData,boolean exceptionFlag){ - if (methodData == null) { - return null; - } - String oldMethodDetailIdRelKey = RedisKeyWrap.createRedisKey(RedisKeyEnum.API_STAT_METHOD_DETAIL, methodData.getId()).getRelKey(); - List keys = Stream.of(oldMethodDetailIdRelKey).collect(Collectors.toList()); - String[] parameters = new String[]{JSON.toJSONString(methodData),exceptionFlag ? "1" : "0"}; - String avgExecuteTime = (String)redisCache.getInstance().execute(redisScript, keys, parameters); - return new BigDecimal(avgExecuteTime); - } - - public boolean checkNoReported(MethodData methodData,ApiStatProperties apiStatProperties){ - - Map noReported = apiStatProperties.getNoReported(); - String[] apis = null; - if (!Objects.isNull(noReported)) { - apis = noReported.get(apiStatCommon.getApplicationName()); - } - if (!Objects.isNull(apis)) { - for (String api : apis) { - if (StringUtil.isNotEmpty(methodData.getApi()) && matcher.match(api,methodData.getApi())) { - return true; - } - } - } - return false; - } - - public void addControllerSortedSet(MethodData methodData,ApiStatProperties apiStatProperties,BigDecimal executeTime){ - if (methodData == null) { - return; - } - if (checkNoReported(methodData,apiStatProperties)) { - return; - } - MethodDetailData methodDetailData = new MethodDetailData(); - BeanUtils.copyProperties(methodData,methodDetailData); - methodDetailData.setExecuteTime(null); - methodDetailData.setExceptionCount(0L); - redisCache.addForZSet(RedisKeyWrap.createRedisKey(RedisKeyEnum.API_STAT_CONTROLLER_SORTED_SET),methodDetailData,executeTime.doubleValue()); - } - - public void addChildren(MethodData parentMethodData,MethodData currentMethodData){ - if (parentMethodData == null || currentMethodData == null) { - return; - } - if (parentMethodData.getMethodLevel() == MethodLevel.CONTROLLER) { - redisCache.addForSet(RedisKeyWrap.createRedisKey(RedisKeyEnum.API_STAT_CONTROLLER_CHILDREN_SET,parentMethodData.getId()),currentMethodData.getId()); - } else if (parentMethodData.getMethodLevel() == MethodLevel.SERVICE) { - redisCache.addForSet(RedisKeyWrap.createRedisKey(RedisKeyEnum.API_STAT_SERVICE_CHILDREN_SET,parentMethodData.getId()),currentMethodData.getId()); - } - } -} diff --git a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/resources/META-INF/spring.factories b/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 501ea7db..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - com.damai.config.ApiStatAutoConfig \ No newline at end of file diff --git a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/resources/lua/redis_data_save.lua b/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/resources/lua/redis_data_save.lua deleted file mode 100644 index 184ab56c..00000000 --- a/api-stat/api-stat-reported/api-stat-reported-single-service/src/main/resources/lua/redis_data_save.lua +++ /dev/null @@ -1,48 +0,0 @@ -local oldMethodDetailIdRelKey = KEYS[1] -local methodDataStr = ARGV[1] -local methodData = cjson.decode(methodDataStr) -local exceptionFlag = tonumber(ARGV[2]) -local oldMethodDetailDataStr = '' -local newAvgExecuteTime = '' - - -if (redis.call('exists', oldMethodDetailIdRelKey) == 0) then - local oldMethodDetailData = { - id = methodData.id, - className = methodData.className, - methodName = methodData.methodName, - argumentCount = methodData.argumentCount, - methodLevel = methodData.methodLevel, - executeTime = methodData.executeTime, - api = methodData.api, - avgExecuteTime = methodData.executeTime, - maxExecuteTime = methodData.executeTime, - minExecuteTime = methodData.executeTime - } - oldMethodDetailDataStr = cjson.encode(oldMethodDetailData) - newAvgExecuteTime = oldMethodDetailData.avgExecuteTime -else - oldMethodDetailDataStr = redis.call('get',oldMethodDetailIdRelKey) - local oldMethodDetailData = cjson.decode(oldMethodDetailDataStr) - local avg1 = tonumber(methodData.executeTime) - local avg2 = tonumber(oldMethodDetailData.avgExecuteTime) - newAvgExecuteTime = (avg1 + avg2) / 2 - oldMethodDetailData.avgExecuteTime = newAvgExecuteTime - - local newMaxExecuteTime = oldMethodDetailData.maxExecuteTime - if (methodData.executeTime > newMaxExecuteTime) then - newMaxExecuteTime = methodData.executeTime - end - local newMinExecuteTime = oldMethodDetailData.minExecuteTime - if (methodData.executeTime < newMinExecuteTime) then - newMinExecuteTime = methodData.executeTime - end - oldMethodDetailData.maxExecuteTime = newMaxExecuteTime - oldMethodDetailData.minExecuteTime = newMinExecuteTime - if (exceptionFlag == 1) then - oldMethodDetailData.exceptionCount = oldMethodDetailData.exceptionCount + 1 - end - oldMethodDetailDataStr = cjson.encode(oldMethodDetailData) -end -redis.call('set',oldMethodDetailIdRelKey,oldMethodDetailDataStr) -return tostring(newAvgExecuteTime) \ No newline at end of file diff --git a/api-stat/api-stat-reported/pom.xml b/api-stat/api-stat-reported/pom.xml deleted file mode 100644 index f0a2d12b..00000000 --- a/api-stat/api-stat-reported/pom.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - 4.0.0 - - - com.example - api-stat - ${revision} - - - api-stat-reported - api-stat-reported - api-stat-reported - pom - - - api-stat-reported-single-service - api-stat-reported-cloud-service - - - diff --git a/api-stat/api-stat-system/.gitignore b/api-stat/api-stat-system/.gitignore deleted file mode 100644 index a2a3040a..00000000 --- a/api-stat/api-stat-system/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -HELP.md -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/** -!**/src/test/** - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ - -### VS Code ### -.vscode/ diff --git a/api-stat/api-stat-system/pom.xml b/api-stat/api-stat-system/pom.xml deleted file mode 100644 index 7af91805..00000000 --- a/api-stat/api-stat-system/pom.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - 4.0.0 - - - com.example - api-stat - ${revision} - - - - api-stat-system - - api-stat-system - api统计后台管理 - - - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-aop - - - com.alibaba - fastjson - ${fastjson.version} - - - org.springframework.boot - spring-boot-starter-mail - - - net.bytebuddy - byte-buddy-agent - - - com.github.oshi - oshi-core - ${oshi-core.version} - - - org.springframework.boot - spring-boot-starter-validation - - - com.example - damai-service-common - ${revision} - - - com.example - damai-redis-framework - ${revision} - - - com.example - api-stat-common - ${revision} - - - com.example - damai-service-lock-framework - ${revision} - - - - - diff --git a/api-stat/api-stat-system/src/main/java/com/damai/ApiStatSystemApplication.java b/api-stat/api-stat-system/src/main/java/com/damai/ApiStatSystemApplication.java deleted file mode 100644 index 70cead7c..00000000 --- a/api-stat/api-stat-system/src/main/java/com/damai/ApiStatSystemApplication.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.damai; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.scheduling.annotation.EnableScheduling; - -@EnableScheduling -@SpringBootApplication -public class ApiStatSystemApplication { - - public static void main(String[] args) { - SpringApplication.run(ApiStatSystemApplication.class, args); - } - -} diff --git a/api-stat/api-stat-system/src/main/java/com/damai/controller/ApiStatSystemController.java b/api-stat/api-stat-system/src/main/java/com/damai/controller/ApiStatSystemController.java deleted file mode 100644 index 98d095ae..00000000 --- a/api-stat/api-stat-system/src/main/java/com/damai/controller/ApiStatSystemController.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.damai.controller; - - -import com.damai.common.ApiResponse; -import com.damai.dto.MethodChainDto; -import com.damai.dto.PageDto; -import com.damai.notice.ApiStatNotice; -import com.damai.service.ApiStatSystemService; -import com.damai.structure.MethodDetailData; -import com.damai.vo.PageVo; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.validation.Valid; -import java.util.List; - -import static com.damai.constant.ApiStatConstant.PLATFORM_NOTICE; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-09-27 - **/ -@RestController -public class ApiStatSystemController { - - @Autowired - private ApiStatSystemService apiStatSystemService; - - @Autowired - private ApiStatNotice apiStatNotice; - - @PostMapping(value = "/getControllerMethods") - public ApiResponse> getControllerMethods(){ - return ApiResponse.ok(apiStatSystemService.getControllerMethods()); - } - - @PostMapping(value = "/getControllerMethodsPage") - public ApiResponse> getControllerMethodsPage(@Valid @RequestBody PageDto pageDto){ - return ApiResponse.ok(apiStatSystemService.getControllerMethodsPage(pageDto)); - } - - @PostMapping(value = "/getMethodChainList") - public ApiResponse getMethodChainList(@Valid @RequestBody MethodChainDto methodChainDto){ - return ApiResponse.ok(apiStatSystemService.getMethodChainList(methodChainDto)); - } - - @RequestMapping(value = "/notice") - public ApiResponse notice(){ - apiStatNotice.notice(PLATFORM_NOTICE); - return ApiResponse.ok(); - } - -} diff --git a/api-stat/api-stat-system/src/main/java/com/damai/dto/MethodChainDto.java b/api-stat/api-stat-system/src/main/java/com/damai/dto/MethodChainDto.java deleted file mode 100644 index 74ce2b55..00000000 --- a/api-stat/api-stat-system/src/main/java/com/damai/dto/MethodChainDto.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.damai.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-10-07 - **/ -@Data -@ApiModel(value="MethodChainDto", description ="MethodChainDto") -public class MethodChainDto { - - @ApiModelProperty(name ="methodDetailDataId", dataType ="String", value ="MethodDetailDataId", required =true) - @NotBlank - private String methodDetailDataId; -} diff --git a/api-stat/api-stat-system/src/main/java/com/damai/dto/PageDto.java b/api-stat/api-stat-system/src/main/java/com/damai/dto/PageDto.java deleted file mode 100644 index 67a4268f..00000000 --- a/api-stat/api-stat-system/src/main/java/com/damai/dto/PageDto.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.damai.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -@Data -@ApiModel(value="PageDto", description ="PageDto") -public class PageDto { - - @ApiModelProperty(name ="pageNo", dataType ="Long", value ="当前页码", required =true) - @NotNull - private Long pageNo; - - @ApiModelProperty(name ="pageSize", dataType ="Long", value ="页数大小", required =true) - @NotNull - private Long pageSize; -} diff --git a/api-stat/api-stat-system/src/main/java/com/damai/info/PageInfo.java b/api-stat/api-stat-system/src/main/java/com/damai/info/PageInfo.java deleted file mode 100644 index 4dc5480e..00000000 --- a/api-stat/api-stat-system/src/main/java/com/damai/info/PageInfo.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.damai.info; - -import lombok.Data; - -@Data -public class PageInfo { - - private Long pageNo; - - private Long pageSize; - - private Long totalRecord; - - private Long pageTotal; - - private Long start; - - private Long end; -} diff --git a/api-stat/api-stat-system/src/main/java/com/damai/notice/ApiStatNotice.java b/api-stat/api-stat-system/src/main/java/com/damai/notice/ApiStatNotice.java deleted file mode 100644 index 135016ee..00000000 --- a/api-stat/api-stat-system/src/main/java/com/damai/notice/ApiStatNotice.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.damai.notice; - -import cn.hutool.core.collection.CollectionUtil; -import com.damai.core.RedisKeyEnum; -import com.damai.notice.config.ApiStatNoticeProperties; -import com.damai.redis.RedisCache; -import com.damai.redis.RedisKeyWrap; -import com.damai.servicelock.annotion.ServiceLock; -import com.damai.structure.MethodDetailData; -import com.damai.structure.MethodNoticeData; -import lombok.AllArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.data.redis.core.ZSetOperations.TypedTuple; - -import java.math.BigDecimal; -import java.util.List; -import java.util.Set; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - -import static com.damai.core.DistributedLockConstants.API_STAT_LOCK; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-10-07 - **/ -@Slf4j -@AllArgsConstructor -public class ApiStatNotice { - - private final ApiStatNoticeProperties apiStatNoticeProperties; - - private final RedisCache redisCache; - - private final List platformList; - - @ServiceLock(name = API_STAT_LOCK,keys = {"#platformNotice"},waitTime = 0L) - public void notice(String platformNotice){ - log.info("schedule task {}",platformNotice); - try { - Boolean exist = redisCache.hasKey(RedisKeyWrap.createRedisKey(RedisKeyEnum.PLATFORM_NOTICE_FLAG)); - if (exist) { - return; - } - redisCache.set(RedisKeyWrap.createRedisKey(RedisKeyEnum.PLATFORM_NOTICE_FLAG),platformNotice,23L, TimeUnit.HOURS); - if (CollectionUtil.isEmpty(platformList)) { - log.warn("platform empty"); - return; - } - List methodDetailDataList = getMethodDetailDataListStr(); - if (CollectionUtil.isEmpty(methodDetailDataList)) { - log.warn("method detail data empty"); - return; - } - for (final Platform platform : platformList) { - platform.sendMessage(methodDetailDataList); - } - }catch (Exception e) { - log.error("schedule task {} error",platformNotice,e); - } - } - public List getMethodDetailDataListStr(){ - Set> set = redisCache.rangeByScoreWithScoreForZSet(RedisKeyWrap.createRedisKey(RedisKeyEnum.API_STAT_CONTROLLER_SORTED_SET), - apiStatNoticeProperties.getMin(), apiStatNoticeProperties.getMax(), apiStatNoticeProperties.getStart(), apiStatNoticeProperties.getEnd(), MethodDetailData.class); - return set.stream().map(typedTuple -> { - Double score = typedTuple.getScore(); - MethodDetailData value = typedTuple.getValue(); - MethodNoticeData methodNoticeData = new MethodNoticeData(); - methodNoticeData.setApi(value.getApi()); - methodNoticeData.setArgumentCount(value.getArgumentCount()); - methodNoticeData.setAvgExecuteTime(new BigDecimal(String.valueOf(score))); - return methodNoticeData; - }).collect(Collectors.toList()); - } -} diff --git a/api-stat/api-stat-system/src/main/java/com/damai/notice/Platform.java b/api-stat/api-stat-system/src/main/java/com/damai/notice/Platform.java deleted file mode 100644 index b98d8d1d..00000000 --- a/api-stat/api-stat-system/src/main/java/com/damai/notice/Platform.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.damai.notice; - -import com.alibaba.fastjson.JSON; -import com.damai.notice.config.ApiStatNoticeProperties; -import com.damai.structure.MethodNoticeData; -import lombok.AllArgsConstructor; - -import java.util.List; - -/** - * @program: cook-frame - * @description: - * @author: lk - * @create: 2023-10-07 - **/ -@AllArgsConstructor -public abstract class Platform { - - protected final ApiStatNoticeProperties apiStatNoticeProperties; - - private final String REL_MESSAGE_TEMPLATE = "获得执行时间耗时在%s和%s之间,从第%s开始获取%s的记录为:%s"; - - public void sendMessage(List methodNoticeDataList) { - String relMessage = String.format(REL_MESSAGE_TEMPLATE, apiStatNoticeProperties.getMin(), apiStatNoticeProperties.getMax(), - apiStatNoticeProperties.getStart(), apiStatNoticeProperties.getEnd(), JSON.toJSONString(methodNoticeDataList)); - sendRelMessage(relMessage); - } - public abstract void sendRelMessage(String content); -} diff --git a/api-stat/api-stat-system/src/main/java/com/damai/notice/config/ApiStatNoticeAutoConfig.java b/api-stat/api-stat-system/src/main/java/com/damai/notice/config/ApiStatNoticeAutoConfig.java deleted file mode 100644 index f5c3568c..00000000 --- a/api-stat/api-stat-system/src/main/java/com/damai/notice/config/ApiStatNoticeAutoConfig.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.damai.notice.config; - -import com.damai.notice.ApiStatNotice; -import com.damai.notice.Platform; -import com.damai.redis.RedisCache; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; - -import java.util.List; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-10-07 - **/ -@Slf4j -@Data -@EnableConfigurationProperties(ApiStatNoticeProperties.class) -@ConditionalOnProperty(value = "api.enable",havingValue = "true") -public class ApiStatNoticeAutoConfig { - - @Bean - public List platformList(ApiStatNoticeProperties apiStatNoticeProperties){ - PlatformRegistry platformRegistry = new PlatformRegistry(apiStatNoticeProperties); - return platformRegistry.createPlatforms(); - } - - @Bean - public ApiStatNotice apiStatNotice(ApiStatNoticeProperties apiStatNoticeProperties, RedisCache redisCache, List platformList){ - return new ApiStatNotice(apiStatNoticeProperties,redisCache,platformList); - } - -} diff --git a/api-stat/api-stat-system/src/main/java/com/damai/notice/config/ApiStatNoticeProperties.java b/api-stat/api-stat-system/src/main/java/com/damai/notice/config/ApiStatNoticeProperties.java deleted file mode 100644 index 5a876511..00000000 --- a/api-stat/api-stat-system/src/main/java/com/damai/notice/config/ApiStatNoticeProperties.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.damai.notice.config; - -import com.damai.enums.PlatformType; -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; - -import java.util.List; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-10-07 - **/ -@Data -@ConfigurationProperties(prefix = ApiStatNoticeProperties.prefix) -public class ApiStatNoticeProperties { - - public static final String prefix = "api"; - - private Integer start = 0; - - private Integer end = 10; - - private Double min = 0.00; - - private Double max = 999999.00; - - private boolean enable; - - private List platformTypes; - - private PlatformAddressProperties platformAddress; -} diff --git a/api-stat/api-stat-system/src/main/java/com/damai/notice/config/PlatformAddressProperties.java b/api-stat/api-stat-system/src/main/java/com/damai/notice/config/PlatformAddressProperties.java deleted file mode 100644 index d2f71c14..00000000 --- a/api-stat/api-stat-system/src/main/java/com/damai/notice/config/PlatformAddressProperties.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.damai.notice.config; - -import lombok.Data; - -import java.util.List; - -@Data -public class PlatformAddressProperties { - - /** - * 钉钉 - */ - public String dingDingWebhook; - - /** - * 企业微信 - */ - public String weComWebhook; - - /** - * 飞书 - */ - public String feiShuWebhook; - - /** - * 邮件 - */ - private List emails; -} diff --git a/api-stat/api-stat-system/src/main/java/com/damai/notice/config/PlatformRegistry.java b/api-stat/api-stat-system/src/main/java/com/damai/notice/config/PlatformRegistry.java deleted file mode 100644 index 61d997cb..00000000 --- a/api-stat/api-stat-system/src/main/java/com/damai/notice/config/PlatformRegistry.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.damai.notice.config; - -import com.damai.enums.PlatformType; -import com.damai.exception.DaMaiFrameException; -import com.damai.notice.Platform; -import com.damai.notice.impl.DingDingPlatform; -import com.damai.notice.impl.EmailPlatform; -import com.damai.notice.impl.FeiShuPlatform; -import com.damai.notice.impl.WeComPlatform; -import lombok.AllArgsConstructor; -import org.springframework.util.CollectionUtils; - -import java.util.ArrayList; -import java.util.List; - -import static com.damai.enums.BaseCode.MESSAGE_PLATFORM_NOT_EXIST; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-10-07 - **/ -@AllArgsConstructor -public class PlatformRegistry { - - private final ApiStatNoticeProperties apiStatNoticeProperties; - - public List createPlatforms(){ - List platformTypes = apiStatNoticeProperties.getPlatformTypes(); - if (CollectionUtils.isEmpty(platformTypes)) { - return null; - } - List list = new ArrayList<>(); - for (final PlatformType platformType : platformTypes) { - list.add(createPlatform(platformType,apiStatNoticeProperties)); - } - return list; - } - - public Platform createPlatform(PlatformType platformType,ApiStatNoticeProperties apiStatNoticeProperties){ - switch (platformType) { - case DingDing: - return new DingDingPlatform(apiStatNoticeProperties); - case WeCom: - return new WeComPlatform(apiStatNoticeProperties); - case FeiShu: - return new FeiShuPlatform(apiStatNoticeProperties); - case Email: - return new EmailPlatform(apiStatNoticeProperties); - default: - throw new DaMaiFrameException(MESSAGE_PLATFORM_NOT_EXIST); - } - } -} diff --git a/api-stat/api-stat-system/src/main/java/com/damai/notice/impl/DingDingPlatform.java b/api-stat/api-stat-system/src/main/java/com/damai/notice/impl/DingDingPlatform.java deleted file mode 100644 index 0296902a..00000000 --- a/api-stat/api-stat-system/src/main/java/com/damai/notice/impl/DingDingPlatform.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.damai.notice.impl; - -import cn.hutool.http.HttpUtil; -import com.alibaba.fastjson.JSONObject; -import com.damai.core.StringUtil; -import com.damai.notice.config.ApiStatNoticeProperties; -import com.damai.notice.Platform; -import com.damai.notice.config.PlatformAddressProperties; -import lombok.extern.slf4j.Slf4j; - -import java.util.Optional; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-10-07 - **/ -@Slf4j -public class DingDingPlatform extends Platform { - - public DingDingPlatform(final ApiStatNoticeProperties apiStatNoticeProperties) { - super(apiStatNoticeProperties); - } - - /** - * ... - * */ - @Override - public void sendRelMessage(final String content) { - String dingDingWebhook = Optional.ofNullable(apiStatNoticeProperties.getPlatformAddress()).map(PlatformAddressProperties::getDingDingWebhook).orElse(null); - if (StringUtil.isEmpty(dingDingWebhook)) { - return; - } - log.info("dingTalk send message : {}",content); - JSONObject message = new JSONObject(); - message.put("msgtype","text"); - JSONObject text = new JSONObject(); - text.put("content",content); - message.put("text",text); - - JSONObject at = new JSONObject(); - at.put("isAtAll",true); - message.put("at",at); - String result = HttpUtil.post(dingDingWebhook,message.toJSONString()); - log.info("dingTalk send message result : {}",result); - } -} diff --git a/api-stat/api-stat-system/src/main/java/com/damai/notice/impl/EmailPlatform.java b/api-stat/api-stat-system/src/main/java/com/damai/notice/impl/EmailPlatform.java deleted file mode 100644 index 6dd3f0cb..00000000 --- a/api-stat/api-stat-system/src/main/java/com/damai/notice/impl/EmailPlatform.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.damai.notice.impl; - -import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.extra.mail.MailUtil; -import com.damai.notice.Platform; -import com.damai.notice.config.ApiStatNoticeProperties; -import com.damai.notice.config.PlatformAddressProperties; -import lombok.extern.slf4j.Slf4j; - -import java.util.List; -import java.util.Optional; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-10-07 - **/ -@Slf4j -public class EmailPlatform extends Platform { - - private final String SUBJECT = "API耗时通知"; - - public EmailPlatform(final ApiStatNoticeProperties apiStatNoticeProperties) { - super(apiStatNoticeProperties); - } - - @Override - public void sendRelMessage(final String content) { - List emails = Optional.ofNullable(apiStatNoticeProperties.getPlatformAddress()).map(PlatformAddressProperties::getEmails).orElse(null); - if (CollectionUtil.isEmpty(emails) || emails.size() == 0) { - return; - } - log.info("email send message : {}",content); - MailUtil.send(emails, SUBJECT, content, false); - } -} diff --git a/api-stat/api-stat-system/src/main/java/com/damai/notice/impl/FeiShuPlatform.java b/api-stat/api-stat-system/src/main/java/com/damai/notice/impl/FeiShuPlatform.java deleted file mode 100644 index d9b49b03..00000000 --- a/api-stat/api-stat-system/src/main/java/com/damai/notice/impl/FeiShuPlatform.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.damai.notice.impl; - -import cn.hutool.http.HttpUtil; -import com.alibaba.fastjson.JSONObject; -import com.damai.core.StringUtil; -import com.damai.notice.config.ApiStatNoticeProperties; -import com.damai.notice.Platform; -import com.damai.notice.config.PlatformAddressProperties; -import lombok.extern.slf4j.Slf4j; - -import java.util.Optional; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-10-07 - **/ -@Slf4j -public class FeiShuPlatform extends Platform { - - public FeiShuPlatform(final ApiStatNoticeProperties apiStatNoticeProperties) { - super(apiStatNoticeProperties); - } - - /** - * ... - * */ - @Override - public void sendRelMessage(final String content) { - String feiShuWebhook = Optional.ofNullable(apiStatNoticeProperties.getPlatformAddress()).map(PlatformAddressProperties::getFeiShuWebhook).orElse(null); - if (StringUtil.isEmpty(feiShuWebhook)) { - return; - } - log.info("feiShu send message : {}",content); - JSONObject message = new JSONObject(); - message.put("msg_type","text"); - JSONObject contentJson = new JSONObject(); - contentJson.put("text",content+"所有人"); - message.put("content",contentJson); - String result = HttpUtil.post(feiShuWebhook,message.toJSONString()); - log.info("feiShu send message : {}",result); - } -} diff --git a/api-stat/api-stat-system/src/main/java/com/damai/notice/impl/WeComPlatform.java b/api-stat/api-stat-system/src/main/java/com/damai/notice/impl/WeComPlatform.java deleted file mode 100644 index d934fc5d..00000000 --- a/api-stat/api-stat-system/src/main/java/com/damai/notice/impl/WeComPlatform.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.damai.notice.impl; - -import cn.hutool.http.HttpUtil; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.damai.core.StringUtil; -import com.damai.notice.config.ApiStatNoticeProperties; -import com.damai.notice.Platform; -import com.damai.notice.config.PlatformAddressProperties; -import lombok.extern.slf4j.Slf4j; - -import java.util.Optional; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-10-07 - **/ -@Slf4j -public class WeComPlatform extends Platform { - - public WeComPlatform(final ApiStatNoticeProperties apiStatNoticeProperties) { - super(apiStatNoticeProperties); - } - - /** - * ... - * */ - @Override - public void sendRelMessage(final String content) { - String weComWebhook = Optional.ofNullable(apiStatNoticeProperties.getPlatformAddress()).map(PlatformAddressProperties::getWeComWebhook).orElse(null); - if (StringUtil.isEmpty(weComWebhook)) { - return; - } - log.info("weCom send message : {}",content); - JSONObject message = new JSONObject(); - message.put("msgtype","text"); - JSONObject text = new JSONObject(); - text.put("content",content); - JSONArray mentionedList = new JSONArray(); - mentionedList.add("@all"); - text.put("mentioned_list",mentionedList); - message.put("text",text); - String result = HttpUtil.post(weComWebhook,message.toJSONString()); - log.info("weCom send message result : {}",result); - } -} diff --git a/api-stat/api-stat-system/src/main/java/com/damai/service/ApiStatSystemService.java b/api-stat/api-stat-system/src/main/java/com/damai/service/ApiStatSystemService.java deleted file mode 100644 index 4605029b..00000000 --- a/api-stat/api-stat-system/src/main/java/com/damai/service/ApiStatSystemService.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.damai.service; - -import com.damai.core.RedisKeyEnum; -import com.damai.dto.MethodChainDto; -import com.damai.dto.PageDto; -import com.damai.redis.RedisCache; -import com.damai.redis.RedisKeyWrap; -import com.damai.structure.MethodDetailData; -import com.damai.vo.PageVo; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.ZSetOperations; -import org.springframework.stereotype.Service; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -@Service -public class ApiStatSystemService { - - @Autowired - private RedisCache redisCache; - - public List getControllerMethods() { - Set> typedTuples = redisCache.reverseRangeWithScoreForZSet(RedisKeyWrap.createRedisKey(RedisKeyEnum.API_STAT_CONTROLLER_SORTED_SET), 0, -1, MethodDetailData.class); - List list = typedTuples.stream().map(typedTuple -> { - Double score = typedTuple.getScore(); - MethodDetailData methodDetailData = typedTuple.getValue(); - methodDetailData.setExecuteTime(new BigDecimal(String.valueOf(score))); - methodDetailData.setAvgExecuteTime(new BigDecimal(String.valueOf(score))); - return methodDetailData; - }).collect(Collectors.toList()); - return list; - } - - public PageVo getControllerMethodsPage(PageDto pageDto){ -// PageInfo pageInfo = PageUtil.getPageInfo(pageDto, () -> redisCache.sizeForZSet(RedisKeyWrap.createRedisKey(RedisKeyEnum.API_STAT_CONTROLLER_SORTED_SET))); -// Long pageNo = pageInfo.getPageNo(); -// Long pageSize = pageInfo.getPageSize(); -// Long pageTotal = pageInfo.getPageTotal(); -// -// // 计算起始索引和结束索引 -// long start = pageInfo.getStart(); -// long end = pageInfo.getEnd(); -// Set> typedTuples = redisCache.reverseRangeWithScoreForZSet(RedisKeyWrap.createRedisKey(RedisKeyEnum.API_STAT_CONTROLLER_SORTED_SET), start, end, MethodDetailData.class); -// List list = typedTuples.stream().map(typedTuple -> { -// Double score = typedTuple.getScore(); -// MethodDetailData methodDetailData = typedTuple.getValue(); -// methodDetailData.setExecuteTime(new BigDecimal(String.valueOf(score))); -// methodDetailData.setAvgExecuteTime(new BigDecimal(String.valueOf(score))); -// return methodDetailData; -// }).collect(Collectors.toList()); -// PageVo pageVo = new PageVo<>(); -// pageVo.setPageTotal(pageTotal); -// pageVo.setPageNo(pageNo); -// pageVo.setPageSize(pageSize); -// pageVo.setData(list); -// return pageVo; - return null; - } - - public MethodDetailData getMethodChainList(MethodChainDto methodChainDto) { - String methodDetailDataId = methodChainDto.getMethodDetailDataId(); - MethodDetailData controllerMethodDetailData = redisCache.get(RedisKeyWrap.createRedisKey(RedisKeyEnum.API_STAT_METHOD_DETAIL, methodDetailDataId), MethodDetailData.class); - if (controllerMethodDetailData == null) { - return null; - } - Set serviceMethodNameSet = redisCache.membersForSet(RedisKeyWrap.createRedisKey(RedisKeyEnum.API_STAT_CONTROLLER_CHILDREN_SET, methodDetailDataId), String.class); - - List serviceList = new ArrayList<>(); - for (String serviceMethodName : serviceMethodNameSet) { - MethodDetailData serviceMethodDetailData = redisCache.get(RedisKeyWrap.createRedisKey(RedisKeyEnum.API_STAT_METHOD_DETAIL, serviceMethodName), MethodDetailData.class); - if (serviceMethodDetailData == null) { - continue; - } - Set daoMethodNameSet = redisCache.membersForSet(RedisKeyWrap.createRedisKey(RedisKeyEnum.API_STAT_SERVICE_CHILDREN_SET, serviceMethodName), String.class); - - List daoList = new ArrayList<>(); - for (String daoMethodName : daoMethodNameSet) { - MethodDetailData daoMethodDetailData = redisCache.get(RedisKeyWrap.createRedisKey(RedisKeyEnum.API_STAT_METHOD_DETAIL, daoMethodName), MethodDetailData.class); - daoList.add(daoMethodDetailData); - } - serviceMethodDetailData.setChildrenMethodList(daoList); - - serviceList.add(serviceMethodDetailData); - } - controllerMethodDetailData.setChildrenMethodList(serviceList); - return controllerMethodDetailData; - } -} diff --git a/api-stat/api-stat-system/src/main/java/com/damai/task/NoticeTask.java b/api-stat/api-stat-system/src/main/java/com/damai/task/NoticeTask.java deleted file mode 100644 index 103a1aa8..00000000 --- a/api-stat/api-stat-system/src/main/java/com/damai/task/NoticeTask.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.damai.task; - -import com.damai.notice.ApiStatNotice; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; - -import static com.damai.constant.ApiStatConstant.PLATFORM_NOTICE; - -/** - * @program: cook-frame - * @description: - * @author: k - * @create: 2023-10-12 - **/ -@Component -public class NoticeTask { - - @Autowired - private ApiStatNotice apiStatNotice; - - @Scheduled(cron ="0 0 9 * * ? ") - public void scheduleNotice() { - apiStatNotice.notice(PLATFORM_NOTICE); - } -} diff --git a/api-stat/api-stat-system/src/main/java/com/damai/util/PageUtil.java b/api-stat/api-stat-system/src/main/java/com/damai/util/PageUtil.java deleted file mode 100644 index 774e1482..00000000 --- a/api-stat/api-stat-system/src/main/java/com/damai/util/PageUtil.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.damai.util; - -import com.damai.dto.PageDto; -import com.damai.info.PageInfo; - -public class PageUtil { - - public static PageInfo getPageInfo(PageDto pageDto, RecordTotalRun recordTotalRun) { - Long pageNo = pageDto.getPageNo(); - Long pageSize = pageDto.getPageSize(); - Long totalRecord = recordTotalRun.totalRecord(); - - Long pageTotal = totalRecord/pageSize + 1; - - // 计算起始索引和结束索引 - long start = (pageNo - 1) * pageSize; - long end = start + pageSize - 1; - - PageInfo pageInfo = new PageInfo(); - pageInfo.setPageNo(pageNo); - pageInfo.setPageSize(pageSize); - pageInfo.setTotalRecord(totalRecord); - pageInfo.setPageTotal(pageTotal); - pageInfo.setStart(start); - pageInfo.setEnd(end); - return pageInfo; - } -} diff --git a/api-stat/api-stat-system/src/main/java/com/damai/util/RecordTotalRun.java b/api-stat/api-stat-system/src/main/java/com/damai/util/RecordTotalRun.java deleted file mode 100644 index 0c664718..00000000 --- a/api-stat/api-stat-system/src/main/java/com/damai/util/RecordTotalRun.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.damai.util; - -public interface RecordTotalRun { - - Long totalRecord(); -} diff --git a/api-stat/api-stat-system/src/main/java/com/damai/vo/PageVo.java b/api-stat/api-stat-system/src/main/java/com/damai/vo/PageVo.java deleted file mode 100644 index 42873c9d..00000000 --- a/api-stat/api-stat-system/src/main/java/com/damai/vo/PageVo.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.damai.vo; - -import lombok.Data; - -import java.util.List; - -@Data -public class PageVo { - - private Long PageTotal; - - private Long pageNo; - - private Long pageSize; - - private List data; -} diff --git a/api-stat/api-stat-system/src/main/resources/META-INF/spring.factories b/api-stat/api-stat-system/src/main/resources/META-INF/spring.factories deleted file mode 100644 index bcbefcaa..00000000 --- a/api-stat/api-stat-system/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - com.damai.notice.config.ApiStatNoticeAutoConfig \ No newline at end of file diff --git a/api-stat/api-stat-system/src/main/resources/application.yml b/api-stat/api-stat-system/src/main/resources/application.yml deleted file mode 100644 index 6696c389..00000000 --- a/api-stat/api-stat-system/src/main/resources/application.yml +++ /dev/null @@ -1,33 +0,0 @@ -#服务端口 -server: - port: 6666 -# 应用名称 -spring: - application: - name: service-case - redis: - host: www.cookframe.com - port: 6379 - password: qaz123 - database: 0 - -logging: - level: - example: - mapper : debug - tracer: trace -redisson: - timeout: 3000 - address: www.cookframe.com - port: 6379 - password: qaz123 - database: 5 - connectionPoolSize: 64 - connectionMinimumIdleSize: 10 - -api: - enable: true - platformTypes: - - DingDing - platformAddress: - dingDingWebhook: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx \ No newline at end of file diff --git a/api-stat/api-stat-system/src/main/resources/log4j2.xml b/api-stat/api-stat-system/src/main/resources/log4j2.xml deleted file mode 100644 index e052fcdd..00000000 --- a/api-stat/api-stat-system/src/main/resources/log4j2.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - . - api-stat-system - local - api-stat-system - [api-stat-system] %d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n - UTF-8 - com.damai - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/api-stat/pom.xml b/api-stat/pom.xml deleted file mode 100644 index 65ba6ec3..00000000 --- a/api-stat/pom.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - 4.0.0 - - - com.example - damai - ${revision} - - - api-stat - api-stat - api-stat - pom - - - api-stat-system - api-stat-common - api-stat-reported - api-stat-example - - - diff --git a/damai-common/src/main/java/com/damai/config/DaMaiCommonAutoConfig.java b/damai-common/src/main/java/com/damai/config/DaMaiCommonAutoConfig.java index 7e8af97e..4b9a6cff 100644 --- a/damai-common/src/main/java/com/damai/config/DaMaiCommonAutoConfig.java +++ b/damai-common/src/main/java/com/damai/config/DaMaiCommonAutoConfig.java @@ -15,7 +15,7 @@ import org.springframework.context.annotation.Bean; public class DaMaiCommonAutoConfig { @Bean - public Jackson2ObjectMapperBuilderCustomizer JacksonCustom(){ + public Jackson2ObjectMapperBuilderCustomizer jacksonCustom(){ return new JacksonCustom(); } diff --git a/damai-common/src/main/java/com/damai/config/DateJsonDeserializer.java b/damai-common/src/main/java/com/damai/config/DateJsonDeserializer.java index 1b2ca029..4181018d 100644 --- a/damai-common/src/main/java/com/damai/config/DateJsonDeserializer.java +++ b/damai-common/src/main/java/com/damai/config/DateJsonDeserializer.java @@ -19,13 +19,15 @@ import java.util.regex.Pattern; * @author: 阿宽不是程序员 **/ public class DateJsonDeserializer extends JsonDeserializer { - private static final List formarts = new ArrayList<>(4); + + private static final Pattern P = Pattern.compile("^[0-9]*"); + private static final List FORMAT = new ArrayList<>(4); static { - formarts.add("yyyy-MM"); - formarts.add("yyyy-MM-dd"); - formarts.add("yyyy-MM-dd HH:mm"); - formarts.add("yyyy-MM-dd HH:mm:ss"); - formarts.add("yyyy/MM/dd HH:mm:ss"); + FORMAT.add("yyyy-MM"); + FORMAT.add("yyyy-MM-dd"); + FORMAT.add("yyyy-MM-dd HH:mm"); + FORMAT.add("yyyy-MM-dd HH:mm:ss"); + FORMAT.add("yyyy/MM/dd HH:mm:ss"); } @Override @@ -42,15 +44,15 @@ public class DateJsonDeserializer extends JsonDeserializer { convertDate = DateUtils.parse(Long.valueOf(str)); }else { if (str.matches("^\\d{4}-\\d{1,2}$")) { - return DateUtils.parse(str, formarts.get(0)); + return DateUtils.parse(str, FORMAT.get(0)); } else if (str.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")) { - return DateUtils.parse(str, formarts.get(1)); + return DateUtils.parse(str, FORMAT.get(1)); } else if (str.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")) { - return DateUtils.parse(str, formarts.get(2)); + return DateUtils.parse(str, FORMAT.get(2)); } else if (str.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")) { - return DateUtils.parse(str, formarts.get(3)); + return DateUtils.parse(str, FORMAT.get(3)); } else if (str.matches("^\\d{4}/\\d{1,2}/\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")) { - return DateUtils.parse(str, formarts.get(4)); + return DateUtils.parse(str, FORMAT.get(4)); }else { throw new IllegalArgumentException("Invalid boolean value '" + str + "'"); } @@ -67,8 +69,7 @@ public class DateJsonDeserializer extends JsonDeserializer { * @return */ public static boolean isNum(String number) { - Pattern p = Pattern.compile("^[0-9]*"); - Matcher m = p.matcher(number); + Matcher m = P.matcher(number); return m.matches(); } } diff --git a/damai-common/src/main/java/com/damai/config/JacksonCustom.java b/damai-common/src/main/java/com/damai/config/JacksonCustom.java index a1541d15..b5ae0acd 100644 --- a/damai-common/src/main/java/com/damai/config/JacksonCustom.java +++ b/damai-common/src/main/java/com/damai/config/JacksonCustom.java @@ -4,6 +4,8 @@ package com.damai.config; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser.Feature; +import com.fasterxml.jackson.core.json.JsonReadFeature; +import com.fasterxml.jackson.core.json.JsonWriteFeature; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; @@ -89,10 +91,10 @@ public class JacksonCustom implements Jackson2ObjectMapperBuilderCustomizer, Ord //允许有未知的属性 builder.featuresToDisable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); //允许包含不带引号的控制字符 - builder.featuresToEnable(Feature.ALLOW_UNQUOTED_CONTROL_CHARS); + builder.featuresToEnable(JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS); //数字转换为字符串 - builder.featuresToEnable(JsonGenerator.Feature.WRITE_NUMBERS_AS_STRINGS); + builder.featuresToEnable(JsonWriteFeature.WRITE_NUMBERS_AS_STRINGS ); } @Override diff --git a/damai-common/src/main/java/com/damai/config/JsonCustomSerializer.java b/damai-common/src/main/java/com/damai/config/JsonCustomSerializer.java index 55ef4b62..c8f7f329 100644 --- a/damai-common/src/main/java/com/damai/config/JsonCustomSerializer.java +++ b/damai-common/src/main/java/com/damai/config/JsonCustomSerializer.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateTime; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.BeanDescription; +import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.SerializationConfig; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.ser.BeanPropertyWriter; @@ -33,8 +34,8 @@ public class JsonCustomSerializer extends BeanSerializerModifier { } public com.fasterxml.jackson.databind.JsonSerializer judgeType(BeanPropertyWriter writer) { - Class clazz = writer.getPropertyType(); - + JavaType javaType = writer.getType(); + Class clazz = javaType.getRawClass(); if (String.class.isAssignableFrom(clazz)) { return new com.fasterxml.jackson.databind.JsonSerializer() { diff --git a/damai-common/src/main/java/com/damai/enums/AlipayTradeStatus.java b/damai-common/src/main/java/com/damai/enums/AlipayTradeStatus.java index 808c1d80..9938546d 100644 --- a/damai-common/src/main/java/com/damai/enums/AlipayTradeStatus.java +++ b/damai-common/src/main/java/com/damai/enums/AlipayTradeStatus.java @@ -6,6 +6,9 @@ package com.damai.enums; * @author: 阿宽不是程序员 **/ public enum AlipayTradeStatus { + /** + * 支付宝相关信息 + * */ WAIT_BUYER_PAY(1,"wait_buyer_pay","交易创建,等待买家付款"), TRADE_CLOSED(2,"trade_closed","未付款交易超时关闭,或支付完成后全额退款"), diff --git a/damai-common/src/main/java/com/damai/enums/ApiRuleType.java b/damai-common/src/main/java/com/damai/enums/ApiRuleType.java new file mode 100644 index 00000000..70b5d856 --- /dev/null +++ b/damai-common/src/main/java/com/damai/enums/ApiRuleType.java @@ -0,0 +1,57 @@ +package com.damai.enums; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 规则枚举 + * @author: 阿宽不是程序员 + **/ +public enum ApiRuleType { + NO_RULE(0,"没有规则"), + RULE(1,"普通规则"), + + DEPTH_RULE(2,"深度规则"), + ; + + private Integer code; + + private String msg; + + ApiRuleType(Integer code, String msg) { + this.code = code; + this.msg = msg; + } + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMsg() { + return this.msg == null ? "" : this.msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public static String getMsg(Integer code) { + for (ApiRuleType re : ApiRuleType.values()) { + if (re.code.intValue() == code.intValue()) { + return re.msg; + } + } + return ""; + } + + public static ApiRuleType getRc(Integer code) { + for (ApiRuleType re : ApiRuleType.values()) { + if (re.code.intValue() == code.intValue()) { + return re; + } + } + return null; + } +} diff --git a/damai-common/src/main/java/com/damai/enums/BaseCode.java b/damai-common/src/main/java/com/damai/enums/BaseCode.java index cfb95702..3058f25f 100644 --- a/damai-common/src/main/java/com/damai/enums/BaseCode.java +++ b/damai-common/src/main/java/com/damai/enums/BaseCode.java @@ -10,6 +10,7 @@ public enum BaseCode { SUCCESS(0, "OK"), SYSTEM_ERROR(-1,"系统异常"), + UID_WORK_ID_ERROR(500,"uid_work_id设置失败"), RSA_SIGN_ERROR(10000,"res签名验证失败"), RSA_DECRYPT_ERROR(10001,"res解密失败"), diff --git a/damai-common/src/main/java/com/damai/jwt/TokenUtil.java b/damai-common/src/main/java/com/damai/jwt/TokenUtil.java index 3b3a32fc..73d37a10 100644 --- a/damai-common/src/main/java/com/damai/jwt/TokenUtil.java +++ b/damai-common/src/main/java/com/damai/jwt/TokenUtil.java @@ -1,5 +1,6 @@ package com.damai.jwt; +import com.alibaba.fastjson.JSONObject; import com.damai.enums.BaseCode; import com.damai.exception.DaMaiFrameException; import io.jsonwebtoken.ExpiredJwtException; @@ -22,7 +23,7 @@ public class TokenUtil { * 指定签名的时候使用的签名算法,也就是header那部分。 * */ - private static final SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256; + private static final SignatureAlgorithm SIGNATURE_ALGORITHM = SignatureAlgorithm.HS256; /** * 用户登录成功后生成Jwt * 使用Hs256算法 私匙使用用户密码 @@ -48,7 +49,7 @@ public class TokenUtil { //代表这个JWT的主体,即它的所有人,这个是一个json格式的字符串。 .setSubject(info) //设置签名使用的签名算法和签名使用的秘钥 - .signWith(signatureAlgorithm, tokenSecret); + .signWith(SIGNATURE_ALGORITHM, tokenSecret); if (ttlMillis >= 0) { //设置过期时间 builder.setExpiration(new Date(nowMillis + ttlMillis)); @@ -82,18 +83,18 @@ public class TokenUtil { public static void main(String[] args) { - String token_secret = "CSYZWECHAT"; + String tokenSecret = "CSYZWECHAT"; -// JSONObject jSONObject = new JSONObject(); -// jSONObject.put("001key", "001value"); -// jSONObject.put("002key", "001value"); -// + JSONObject jsonObject = new JSONObject(); + jsonObject.put("001key", "001value"); + jsonObject.put("002key", "001value"); -// String token = TokenUtil.createToken("1", jSONObject.toJSONString(), 10000, token_secret); -// System.out.println("token:" + token); + String token1 = TokenUtil.createToken("1", jsonObject.toJSONString(), 10000, tokenSecret); + System.out.println("token:" + token1); - String token = "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIxIiwiaWF0IjoxNjg4NTQyODM3LCJzdWIiOiJ7XCIwMDJrZXlcIjpcIjAwMXZhbHVlXCIsXCIwMDFrZXlcIjpcIjAwMXZhbHVlXCJ9IiwiZXhwIjoxNjg4NTQyODQ3fQ.vIKcAilTn_CR3VYssNE7rBpfuCSCH_RrkmsadLWf664"; - String subject = TokenUtil.parseToken(token, token_secret); + + String token2 = "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIxIiwiaWF0IjoxNjg4NTQyODM3LCJzdWIiOiJ7XCIwMDJrZXlcIjpcIjAwMXZhbHVlXCIsXCIwMDFrZXlcIjpcIjAwMXZhbHVlXCJ9IiwiZXhwIjoxNjg4NTQyODQ3fQ.vIKcAilTn_CR3VYssNE7rBpfuCSCH_RrkmsadLWf664"; + String subject = TokenUtil.parseToken(token2, tokenSecret); System.out.println("解析token后的值:" + subject); } } \ No newline at end of file diff --git a/damai-common/src/main/java/com/damai/threadlocal/BaseParameterHolder.java b/damai-common/src/main/java/com/damai/threadlocal/BaseParameterHolder.java index 9b9fa9e8..37a2d336 100644 --- a/damai-common/src/main/java/com/damai/threadlocal/BaseParameterHolder.java +++ b/damai-common/src/main/java/com/damai/threadlocal/BaseParameterHolder.java @@ -11,46 +11,46 @@ import java.util.Optional; **/ public class BaseParameterHolder { - private static final ThreadLocal> threadLocalMap = new ThreadLocal<>(); + private static final ThreadLocal> THREAD_LOCAL_MAP = new ThreadLocal<>(); public static void setParameter(String name, String value) { - Map map = threadLocalMap.get(); + Map map = THREAD_LOCAL_MAP.get(); if (map == null) { - map = new HashMap<>(); + map = new HashMap<>(64); } map.put(name, value); - threadLocalMap.set(map); + THREAD_LOCAL_MAP.set(map); } public static String getParameter(String name) { - return Optional.ofNullable(threadLocalMap.get()).map(map -> map.get(name)).orElse(null); + return Optional.ofNullable(THREAD_LOCAL_MAP.get()).map(map -> map.get(name)).orElse(null); } public static void removeParameter(String name) { - Map map = threadLocalMap.get(); + Map map = THREAD_LOCAL_MAP.get(); if (map != null) { map.remove(name); } } public static ThreadLocal> getThreadLocal() { - return threadLocalMap; + return THREAD_LOCAL_MAP; } public static Map getParameterMap() { - Map map = threadLocalMap.get(); + Map map = THREAD_LOCAL_MAP.get(); if (map == null) { - map = new HashMap<>(); + map = new HashMap<>(64); } return map; } public static void setParameterMap(Map map) { - threadLocalMap.set(map); + THREAD_LOCAL_MAP.set(map); } public static void removeParameterMap(){ - threadLocalMap.remove(); + THREAD_LOCAL_MAP.remove(); } } diff --git a/damai-common/src/main/java/com/damai/util/Aes.java b/damai-common/src/main/java/com/damai/util/Aes.java index 227dc7f5..442d541c 100644 --- a/damai-common/src/main/java/com/damai/util/Aes.java +++ b/damai-common/src/main/java/com/damai/util/Aes.java @@ -10,6 +10,7 @@ import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; +import java.nio.charset.StandardCharsets; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; @@ -36,7 +37,7 @@ public class Aes { */ public static String encrypt(String key, String initVector, String data) { try { - byte[] bt = encrypt(key.getBytes(ENCODE_UTF_8), initVector.getBytes(ENCODE_UTF_8), data.getBytes(ENCODE_UTF_8)); + byte[] bt = encrypt(key.getBytes(StandardCharsets.UTF_8), initVector.getBytes(StandardCharsets.UTF_8), data.getBytes(StandardCharsets.UTF_8)); String strs = Base64.encode(bt); return strs; }catch (Exception e) { @@ -45,114 +46,115 @@ public class Aes { } - /** - * 根据键值进行解密 - * @param key - * @param initVector - * @param data - * @return - * @throws Exception - */ - public static String decrypt(String key, String initVector, String data){ - try { - if (data == null) { - return null; - } - byte[] buf = Base64.decode(data); - byte[] bt = decrypt(key.getBytes(ENCODE_UTF_8), initVector.getBytes(ENCODE_UTF_8), buf); - return new String(bt, ENCODE_UTF_8); - }catch (Exception e) { - throw new DaMaiFrameException(BaseCode.AES_ERROR); + /** + * 根据键值进行解密 + * @param key + * @param initVector + * @param data + * @return + * @throws Exception + */ + public static String decrypt(String key, String initVector, String data){ + try { + if (data == null) { + return null; } - + byte[] buf = cn.hutool.core.codec.Base64.decode(data); + byte[] bt = decrypt(key.getBytes(StandardCharsets.UTF_8), initVector.getBytes(StandardCharsets.UTF_8), buf); + return new String(bt, StandardCharsets.UTF_8); + }catch (Exception e) { + throw new DaMaiFrameException(BaseCode.AES_ERROR); } + } + + + /** + * 加密 + * @param key + * @param initVector + * @param data + * @return + * @throws Exception + */ + public static byte[] encrypt(byte[] key, byte[] initVector, byte[] data) throws Exception { + // 注意,为了能与 iOS 统一 + // 这里的 key 不可以使用 KeyGenerator、SecureRandom、SecretKey 生成 + IvParameterSpec iv = new IvParameterSpec(initVector); + SecretKeySpec secretkeySpec = new SecretKeySpec(key, AES); - /** - * 加密 - * @param key - * @param initVector - * @param data - * @return - * @throws Exception - */ - public static byte[] encrypt(byte[] key, byte[] initVector, byte[] data) throws Exception { - // 注意,为了能与 iOS 统一 - // 这里的 key 不可以使用 KeyGenerator、SecureRandom、SecretKey 生成 - IvParameterSpec iv = new IvParameterSpec(initVector); - SecretKeySpec skeySpec = new SecretKeySpec(key, AES); - - // 指定加密的算法、工作模式和填充方式 - Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING"); - cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv); - - return cipher.doFinal(data); - } + // 指定加密的算法、工作模式和填充方式 + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING"); + cipher.init(Cipher.ENCRYPT_MODE, secretkeySpec, iv); - /** - * 解密 - * @param key - * @param initVector - * @param data - * @return - * @throws Exception - */ - public static byte[] decrypt(byte[] key, byte[] initVector, byte[] data) throws Exception { - // 注意,为了能与 iOS 统一 - // 这里的 key 不可以使用 KeyGenerator、SecureRandom、SecretKey 生成 - IvParameterSpec iv = new IvParameterSpec(initVector); - SecretKeySpec skeySpec = new SecretKeySpec(key, AES); - - // 指定加密的算法、工作模式和填充方式 - Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING"); - cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv); - - return cipher.doFinal(data); - } + return cipher.doFinal(data); + } + + /** + * 解密 + * @param key + * @param initVector + * @param data + * @return + * @throws Exception + */ + public static byte[] decrypt(byte[] key, byte[] initVector, byte[] data) throws Exception { + // 注意,为了能与 iOS 统一 + // 这里的 key 不可以使用 KeyGenerator、SecureRandom、SecretKey 生成 + IvParameterSpec iv = new IvParameterSpec(initVector); + SecretKeySpec secretkeySpec = new SecretKeySpec(key, AES); - /** - * [使用指定的字符串生成秘钥 - */ - public static String getAesByKey(String key) { - if(StringUtil.isEmpty(key)) { - return key; - } - String resultString = ""; - try { - KeyGenerator kg = KeyGenerator.getInstance("AES"); - kg.init(128, new SecureRandom(key.getBytes())); - SecretKey sk = kg.generateKey(); - byte[] b = sk.getEncoded(); - resultString = byteToHexString(b); - if(StringUtil.isNotEmpty(resultString) && resultString.length() > 16) { - resultString = resultString.substring(16); - } - } catch (NoSuchAlgorithmException e) { - log.error("没有此算法",e); + // 指定加密的算法、工作模式和填充方式 + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING"); + cipher.init(Cipher.DECRYPT_MODE, secretkeySpec, iv); + + return cipher.doFinal(data); + } + + /** + * [使用指定的字符串生成秘钥 + */ + public static String getAesByKey(String key) { + if(StringUtil.isEmpty(key)) { + return key; + } + String resultString = null; + try { + int sixteen = 16; + KeyGenerator kg = KeyGenerator.getInstance("AES"); + kg.init(128, new SecureRandom(key.getBytes())); + SecretKey sk = kg.generateKey(); + byte[] b = sk.getEncoded(); + resultString = byteToHexString(b); + if(StringUtil.isNotEmpty(resultString) && resultString.length() > sixteen) { + resultString = resultString.substring(sixteen); } - return resultString; + } catch (NoSuchAlgorithmException e) { + log.error("没有此算法",e); } - - /** - * byte数组转化为16进制字符串 - * @param bytes - * @return - */ - public static String byteToHexString(byte[] bytes) { - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < bytes.length; i++) { - String strHex=Integer.toHexString(bytes[i]); - if(strHex.length() > 3) { - sb.append(strHex.substring(6)); + return resultString; + } + + /** + * byte数组转化为16进制字符串 + * @param bytes + * @return + */ + public static String byteToHexString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + for (byte aByte : bytes) { + String strHex = Integer.toHexString(aByte); + if (strHex.length() > 3) { + sb.append(strHex.substring(6)); + } else { + if (strHex.length() < 2) { + sb.append("0").append(strHex); } else { - if(strHex.length() < 2) { - sb.append("0" + strHex); - } else { - sb.append(strHex); - } + sb.append(strHex); } - } - return sb.toString(); + } + } + return sb.toString(); } - } \ No newline at end of file +} \ No newline at end of file diff --git a/damai-common/src/main/java/com/damai/util/Base64.java b/damai-common/src/main/java/com/damai/util/Base64.java index b8b4fa88..996cc7e7 100644 --- a/damai-common/src/main/java/com/damai/util/Base64.java +++ b/damai-common/src/main/java/com/damai/util/Base64.java @@ -1,5 +1,7 @@ package com.damai.util; +import java.util.Arrays; + /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 * @description: base64 @@ -7,48 +9,70 @@ package com.damai.util; **/ public final class Base64 { - private static final int BASELENGTH = 128; - private static final int LOOKUPLENGTH = 64; - private static final int TWENTYFOURBITGROUP = 24; - private static final int EIGHTBIT = 8; - private static final int SIXTEENBIT = 16; - private static final int FOURBYTE = 4; + private static final int BASE_LENGTH = 128; + private static final int LOOKUP_LENGTH = 64; + private static final int TWENTY_FOUR_BIT_GROUP = 24; + private static final int EIGHT_BIT = 8; + private static final int SIXTEEN_BIT = 16; + private static final int FOUR_BYTE = 4; private static final int SIGN = -128; - private static char PAD = '='; - private static byte[] base64Alphabet = new byte[BASELENGTH]; - private static char[] lookUpBase64Alphabet = new char[LOOKUPLENGTH]; + private static final char PAD = '='; + private static final byte[] BASE64_ALPHABET = new byte[BASE_LENGTH]; + private static final char[] LOOKUP_BASE64_ALPHABET = new char[LOOKUP_LENGTH]; + + private static final char A_UPPER_CASE = 'A'; + private static final char A_LOWER_CASE = 'a'; + private static final char Z_UPPER_CASE = 'Z'; + + private static final char Z_LOWER_CASE = 'z'; + + private static final char ZERO = '0'; + + private static final char NINE = '9'; + + private static final int TWENTY_FIVE = 25; + + private static final int TWENTY_SIX = 26; + + private static final int FIFTY_ONE = 51; + + private static final int FIFTY_TWO = 52; + + private static final int SIXTY_ONE = 61; + + private static final byte LOW_FOUR_BITS_MASK = 0xf; + + private static final byte LOW_TWO_BITS_MASK = 0x3; static { - for (int i = 0; i < BASELENGTH; ++i) { - base64Alphabet[i] = -1; - } - for (int i = 'Z'; i >= 'A'; i--) { - base64Alphabet[i] = (byte) (i - 'A'); + Arrays.fill(BASE64_ALPHABET, (byte) -1); + for (int i = Z_UPPER_CASE; i >= A_UPPER_CASE; i--) { + BASE64_ALPHABET[i] = (byte) (i - A_UPPER_CASE); } - for (int i = 'z'; i >= 'a'; i--) { - base64Alphabet[i] = (byte) (i - 'a' + 26); + for (int i = Z_LOWER_CASE; i >= A_LOWER_CASE; i--) { + BASE64_ALPHABET[i] = (byte) (i - A_LOWER_CASE + 26); } - for (int i = '9'; i >= '0'; i--) { - base64Alphabet[i] = (byte) (i - '0' + 52); + for (int i = NINE; i >= ZERO; i--) { + BASE64_ALPHABET[i] = (byte) (i - ZERO + 52); } - base64Alphabet['+'] = 62; - base64Alphabet['/'] = 63; + BASE64_ALPHABET['+'] = 62; + BASE64_ALPHABET['/'] = 63; - for (int i = 0; i <= 25; i++) { - lookUpBase64Alphabet[i] = (char) ('A' + i); + for (int i = 0; i <= TWENTY_FIVE; i++) { + LOOKUP_BASE64_ALPHABET[i] = (char) (A_UPPER_CASE + i); } - for (int i = 26, j = 0; i <= 51; i++, j++) { - lookUpBase64Alphabet[i] = (char) ('a' + j); + for (int i = TWENTY_SIX, j = 0; i <= FIFTY_ONE; i++, j++) { + LOOKUP_BASE64_ALPHABET[i] = (char) (A_LOWER_CASE + j); } - for (int i = 52, j = 0; i <= 61; i++, j++) { - lookUpBase64Alphabet[i] = (char) ('0' + j); + for (int i = FIFTY_TWO, j = 0; i <= SIXTY_ONE; i++, j++) { + LOOKUP_BASE64_ALPHABET[i] = (char) (ZERO + j); } - lookUpBase64Alphabet[62] = (char) '+'; - lookUpBase64Alphabet[63] = (char) '/'; + LOOKUP_BASE64_ALPHABET[62] = '+'; + LOOKUP_BASE64_ALPHABET[63] = '/'; } @@ -61,7 +85,7 @@ public final class Base64 { } private static boolean isData(char octect) { - return (octect < BASELENGTH && base64Alphabet[octect] != -1); + return (octect < BASE_LENGTH && BASE64_ALPHABET[octect] != -1); } /** @@ -77,18 +101,16 @@ public final class Base64 { return null; } - int lengthDataBits = binaryData.length * EIGHTBIT; + int lengthDataBits = binaryData.length * EIGHT_BIT; if (lengthDataBits == 0) { return ""; } - int fewerThan24bits = lengthDataBits % TWENTYFOURBITGROUP; - int numberTriplets = lengthDataBits / TWENTYFOURBITGROUP; + int fewerThan24bits = lengthDataBits % TWENTY_FOUR_BIT_GROUP; + int numberTriplets = lengthDataBits / TWENTY_FOUR_BIT_GROUP; int numberQuartet = fewerThan24bits != 0 ? numberTriplets + 1 : numberTriplets; - char encodedData[] = null; - - encodedData = new char[numberQuartet * 4]; + char[] encodedData = new char[numberQuartet * 4]; byte k = 0, l = 0, b1 = 0, b2 = 0, b3 = 0; @@ -110,24 +132,24 @@ public final class Base64 { 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]; + encodedData[encodedIndex++] = LOOKUP_BASE64_ALPHABET[val1]; + encodedData[encodedIndex++] = LOOKUP_BASE64_ALPHABET[val2 | (k << 4)]; + encodedData[encodedIndex++] = LOOKUP_BASE64_ALPHABET[(l << 2) | val3]; + encodedData[encodedIndex++] = LOOKUP_BASE64_ALPHABET[b3 & 0x3f]; } // form integral number of 6-bit groups - if (fewerThan24bits == EIGHTBIT) { + if (fewerThan24bits == EIGHT_BIT) { 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++] = LOOKUP_BASE64_ALPHABET[val1]; + encodedData[encodedIndex++] = LOOKUP_BASE64_ALPHABET[k << 4]; encodedData[encodedIndex++] = PAD; encodedData[encodedIndex++] = PAD; - } else if (fewerThan24bits == SIXTEENBIT) { + } else if (fewerThan24bits == SIXTEEN_BIT) { b1 = binaryData[dataIndex]; b2 = binaryData[dataIndex + 1]; l = (byte) (b2 & 0x0f); @@ -138,116 +160,15 @@ public final class Base64 { 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++] = LOOKUP_BASE64_ALPHABET[val1]; + encodedData[encodedIndex++] = LOOKUP_BASE64_ALPHABET[val2 | (k << 4)]; + encodedData[encodedIndex++] = LOOKUP_BASE64_ALPHABET[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. * diff --git a/damai-common/src/main/java/com/damai/util/DateUtils.java b/damai-common/src/main/java/com/damai/util/DateUtils.java index 1c5d3aef..828acd3f 100644 --- a/damai-common/src/main/java/com/damai/util/DateUtils.java +++ b/damai-common/src/main/java/com/damai/util/DateUtils.java @@ -450,15 +450,16 @@ public class DateUtils { * @return -1(时间为空),其他数字(今年的第几周) */ public static int getWeekOfYearIgnoreLastYear(Date date) { + int seven = 7; if (Objects.isNull(date)) { return -1; } Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int days = calendar.get(Calendar.DAY_OF_YEAR); - int weeks = days / 7; + int weeks = days / seven; // 如果是 7 的倍数,则表示恰好是多少周 - if (days % 7 == 0) { + if (days % seven == 0) { return weeks; } // 如果有余数,则需要再加 1 @@ -849,7 +850,9 @@ public class DateUtils { * @return */ public static String getFormatedDateString(float timeZoneOffset, String pattern) { - if (timeZoneOffset > 13 || timeZoneOffset < -12) { + int thirteen = 13; + int minusTwelve = -12; + if (timeZoneOffset > thirteen || timeZoneOffset < minusTwelve) { timeZoneOffset = 0; } diff --git a/damai-common/src/main/java/com/damai/util/RsaSignTool.java b/damai-common/src/main/java/com/damai/util/RsaSignTool.java index da673e88..22695466 100644 --- a/damai-common/src/main/java/com/damai/util/RsaSignTool.java +++ b/damai-common/src/main/java/com/damai/util/RsaSignTool.java @@ -184,7 +184,7 @@ public class RsaSignTool { } public static void parameterTransferV1() { - Map map = new HashMap<>(); + Map map = new HashMap<>(8); //基础参数 map.put("code", "1234"); //业务参数 @@ -199,20 +199,20 @@ public class RsaSignTool { } public static void parameterTransferV2() { - Map map = new HashMap<>(); + Map map = new HashMap<>(8); //基础参数 map.put("code","1234"); //参数加密后再签名 - Map businessMap = new HashMap<>(); + Map businessMap = new HashMap<>(8); businessMap.put("id","1111"); businessMap.put("sleepTime",10); //将业务参数进行加密 - String encrypt = RSATool.encrypt(JSON.toJSONString(businessMap), dataPublicKey); + String encrypt = RsaTool.encrypt(JSON.toJSONString(businessMap), dataPublicKey); System.out.println("参数加密后:" + encrypt); - String decrypt = RSATool.decrypt(encrypt, dataPrivateKey); + String decrypt = RsaTool.decrypt(encrypt, dataPrivateKey); System.out.println("参数解密后:" + decrypt); //将未加密的业务参数和基础参数进行拼接 diff --git a/damai-common/src/main/java/com/damai/util/RSATool.java b/damai-common/src/main/java/com/damai/util/RsaTool.java similarity index 94% rename from damai-common/src/main/java/com/damai/util/RSATool.java rename to damai-common/src/main/java/com/damai/util/RsaTool.java index c016aa91..2f06db5a 100644 --- a/damai-common/src/main/java/com/damai/util/RSATool.java +++ b/damai-common/src/main/java/com/damai/util/RsaTool.java @@ -25,7 +25,7 @@ import java.util.Map; * @author: 阿宽不是程序员 **/ @Slf4j -public class RSATool { +public class RsaTool { private final static Integer KEY_SIZE = 2048; @@ -48,7 +48,7 @@ public class RSATool { * 生成公私钥 */ public Map getKey() { - Map pubPriKey = new HashMap<>(); + Map pubPriKey = new HashMap<>(8); KeyPair keyPair = KeyUtil.generateKeyPair(KEY_ALGORITHM, KEY_SIZE); String publicKeyStr = java.util.Base64.getEncoder().encodeToString(keyPair.getPublic().getEncoded()); String privateKeyStr = java.util.Base64.getEncoder().encodeToString(keyPair.getPrivate().getEncoded()); @@ -147,8 +147,8 @@ public class RSATool { */ public static String decrypt(String data, String privateKeyStr) { try { - PrivateKey privateKey2 = RSATool.getPrivateKey(privateKeyStr); - String decryptstr = RSATool.decrypt(data, privateKey2); + PrivateKey privateKey2 = RsaTool.getPrivateKey(privateKeyStr); + String decryptstr = RsaTool.decrypt(data, privateKey2); return decryptstr; }catch (Exception e) { log.error("decrypt error",e); @@ -165,7 +165,7 @@ public class RSATool { */ public static String encrypt(String data, String publicKey) { try { - PublicKey publicKeyTmp = RSATool.getPublicKey(publicKey); + PublicKey publicKeyTmp = RsaTool.getPublicKey(publicKey); return encrypt(data,publicKeyTmp); }catch (Exception e) { log.error("encrypt error",e); @@ -191,12 +191,12 @@ public class RSATool { public static void main(String[] args) throws Exception { String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAirLDI4SPxLXAjk+CMJWrdREnQjJJQgEd7RAw+ZCPZKBFfkoPa5YjcYQzqtc4RPOszBZhPmGr732WLA0O2U0WFnPG6vva9x7pYQot4u5IoncRl7kBb89d1XdR5DZxKovQyDM91CkLikq8h0sBVTkfX2Jz34LmYd8TPQ4BSHUDE5h+f42WkUYG9PCaXvPg+yv4+1AwJeXI/wW181h1JQ5cmogFXIHEFOxS/wwtnoijwmRv/3nKhdyYZbpC2V7F2xq9jWuTBL01Oj3sRhbykHDW2aK2oJ53U5vqlaC6XsheCabMqeqjDPCa8rUjp10pWy7LneYxVigVuONOmlvt56ja7QIDAQAB"; String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCKssMjhI/EtcCOT4Iwlat1ESdCMklCAR3tEDD5kI9koEV+Sg9rliNxhDOq1zhE86zMFmE+YavvfZYsDQ7ZTRYWc8bq+9r3HulhCi3i7kiidxGXuQFvz13Vd1HkNnEqi9DIMz3UKQuKSryHSwFVOR9fYnPfguZh3xM9DgFIdQMTmH5/jZaRRgb08Jpe8+D7K/j7UDAl5cj/BbXzWHUlDlyaiAVcgcQU7FL/DC2eiKPCZG//ecqF3JhlukLZXsXbGr2Na5MEvTU6PexGFvKQcNbZoragnndTm+qVoLpeyF4Jpsyp6qMM8JrytSOnXSlbLsud5jFWKBW4406aW+3nqNrtAgMBAAECggEAbCHOTSSOSZhBlTGbmHE3iT9kUhGOV60zPZ0/8XGouZTSWRE4UHJvE5M0DN9Z+TfY4gwYqF/RghdxOsq7ZuLYc4yz6oOMRNmOrZ8YAzIu4qrdxmHwItGSoFg0Oi3PsJHspgh9DakqXBjEPt5VHbI5KU5CdGFDZ85Y22LN0UWYrm8wOj6P4qJU/bXIOYYl4LfQRIdF6z/0a/ooi0JvQWfgiVMjymTaeF/aRNxqt2Mm09hWEfKUzYX96LINrCJ0DG/Rz+xyShW3rajOHxdY61gyIPybQcXehtacGW+DE/4M6KrWZYUoH/X3KUaXjq0Ed+Sj2cSmv30idcdyDsRmSK7VaQKBgQDOTVoMVhrzDAZf1DywMwSyObQJ4tFr1MwNLXD1wqRJta07448IuRGOdXoq4hoEw1gBAcHyWlIT/8hY7fiBvMi0YETL2gN+PWLhJL24dxR92ACsKP1j3cYM6b0HmfyrbTUuzk+dWcI835ADzWq+b093+EUI/7VZUAALowk2o/DtQwKBgQCsHEgxK7cW6nRLevssnnBIWQ5IlJlUsp/tqyn+IKwuUyJzJWRXvxag4UdMUcMOB/syw9XFyqBgEc+cY1jgoMVsacFyeAkUjfaxGro83H/Inx2Ge25zH/OxZkmL7kkz+bApKhmtHva8mCGu4ZHh0B6PFoffZV6idiAokgVmir/8DwKBgQCrDv5cfkUIRG9ApFXR7+uz8B61l8n39FFhl80zKjpZF/hVUUF3hSTmj8hFqIbUbjkZVKDBWFz4Uj2IZ4GH6cYtsik5MkN1OGc1seZR/wMRuboNBkvcs7YVXPYtSGR2rC3N6qmfGh7xpJngXUJmNxuYqVZsuMJhFPGEtKHeGZ+aywKBgHEPsyz59rCLHBJpm47YFhKwzf1IAOHu5biPdGqItBNKcZsKuTwbP5Y350pve59ABvh2RXxFe80gZi3p5XzKoGZzoqy7xdtG1wPI9wb8IsV8IT0y4H+oQcIL28ycoGIQaHTiPzPG33dMyPPFIrwgp7J/ropGYUCAMOf15K5T/4JpAoGAHwLE5jaJxK5VKKe9x4uPWcPLMgJY3s9J2dn1ZrZTOKqE0d9GCbSEhZNtGOrAzAmWdy3GC0rmP0Fs2DIyTJg9iPsn/ISt0PYvIzSJ6CQeAuEtsjdEdKiVa/um10XeD4dT4vAyMHJpg9WV2NR/vjiuk2YIM1CXo/r/7Gp6aiHY+Bc="; - Map businessBodyMap = new HashMap<>(); + Map businessBodyMap = new HashMap<>(8); businessBodyMap.put("id","1"); businessBodyMap.put("sleepTime","10"); - String encrypt = RSATool.encrypt(JSON.toJSONString(businessBodyMap), publicKey); + String encrypt = RsaTool.encrypt(JSON.toJSONString(businessBodyMap), publicKey); System.out.println("加密后:" + encrypt); - String decrypt = RSATool.decrypt(encrypt, privateKey); + String decrypt = RsaTool.decrypt(encrypt, privateKey); System.out.println("解密后:" + decrypt); } diff --git a/damai-elasticsearch-framework/src/main/java/com/damai/conf/BusinessEsAutoConfig.java b/damai-elasticsearch-framework/src/main/java/com/damai/conf/BusinessEsAutoConfig.java index 2961efa7..d92c0b67 100644 --- a/damai-elasticsearch-framework/src/main/java/com/damai/conf/BusinessEsAutoConfig.java +++ b/damai-elasticsearch-framework/src/main/java/com/damai/conf/BusinessEsAutoConfig.java @@ -34,13 +34,14 @@ public class BusinessEsAutoConfig { @Bean public RestClient businessEsRestClient(BusinessEsProperties businessEsProperties) { + String defaultValue = "default"; HttpHost[] hosts = Arrays.stream(businessEsProperties.getIp()).map(this::makeHttpHost).filter(Objects::nonNull) .toArray(HttpHost[]::new); RestClientBuilder builder = RestClient.builder(hosts); String userName = businessEsProperties.getUserName(); String passWord = businessEsProperties.getPassWord(); - if (StringUtil.isNotEmpty(userName) && !"default".equals(userName) && StringUtil.isNotEmpty(passWord) && !"default".equals(passWord)) { + if (StringUtil.isNotEmpty(userName) && !defaultValue.equals(userName) && StringUtil.isNotEmpty(passWord) && !defaultValue.equals(passWord)) { //开始设置用户名和密码 CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, passWord)); diff --git a/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java b/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java index c11c3c4f..eb53a66c 100644 --- a/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java +++ b/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java @@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.damai.core.SpringUtil; import com.damai.core.StringUtil; import com.damai.dto.EsDataQueryDto; import com.damai.dto.EsDocumentMappingDto; @@ -86,8 +85,8 @@ public class BusinessEsHandle { String paramName = esDocumentMappingDto.getParamName(); String paramType = esDocumentMappingDto.getParamType(); if ("text".equals(paramType)) { - Map> map1 = new HashMap<>(); - Map map2 = new HashMap<>(); + Map> map1 = new HashMap<>(8); + Map map2 = new HashMap<>(8); map2.put("type","keyword"); map2.put("ignore_above",256); map1.put("keyword",map2); @@ -105,7 +104,7 @@ public class BusinessEsHandle { indexRequest.source(builder); String source = indexRequest.source().utf8ToString(); HttpEntity entity = new NStringEntity(source, ContentType.APPLICATION_JSON); - Request request = new Request("PUT","/"+ SpringUtil.getPrefixDistinctionName() + "-" + indexName); + Request request = new Request("PUT","/"+ indexName); request.setEntity(entity); request.addParameters(Collections.emptyMap()); Response performRequest = restClient.performRequest(request); @@ -125,9 +124,9 @@ public class BusinessEsHandle { try { String path = ""; if (esTypeSwitch) { - path = "/" + SpringUtil.getPrefixDistinctionName() + "-" + indexName + "/" + indexType + "/_mapping?include_type_name"; + path = "/" + indexName + "/" + indexType + "/_mapping?include_type_name"; }else { - path = "/" + SpringUtil.getPrefixDistinctionName() + "-" + indexName + "/_mapping"; + path = "/" + indexName + "/_mapping"; } Request request = new Request("GET", path); request.addParameters(Collections.emptyMap()); @@ -135,7 +134,7 @@ public class BusinessEsHandle { return "OK".equals(response.getStatusLine().getReasonPhrase()); }catch (Exception e) { if (e instanceof ResponseException && ((ResponseException)e).getResponse().getStatusLine().getStatusCode() == RestStatus.NOT_FOUND.getStatus()) { - log.warn("index not exist ! indexName:{}, indexType:{}", SpringUtil.getPrefixDistinctionName() + "-" + indexName,indexType); + log.warn("index not exist ! indexName:{}, indexType:{}", indexName,indexType); }else { log.error("checkIndex error",e); } @@ -153,7 +152,7 @@ public class BusinessEsHandle { return false; } try { - Request request = new Request("DELETE", "/" + SpringUtil.getPrefixDistinctionName() + "-" + indexName); + Request request = new Request("DELETE", "/" + indexName); request.addParameters(Collections.emptyMap()); Response response = restClient.performRequest(request); return "OK".equals(response.getStatusLine().getReasonPhrase()); @@ -208,9 +207,9 @@ public class BusinessEsHandle { HttpEntity entity = new NStringEntity(jsonString, ContentType.APPLICATION_JSON); String endpoint = ""; if (esTypeSwitch) { - endpoint = "/" + SpringUtil.getPrefixDistinctionName() + "-" + indexName + "/" + indexType; + endpoint = "/" + indexName + "/" + indexType; }else { - endpoint = "/" + SpringUtil.getPrefixDistinctionName() + "-" + indexName + "/_doc"; + endpoint = "/" + indexName + "/_doc"; } if (StringUtil.isNotEmpty(id)) { endpoint = endpoint + "/" + id; @@ -535,7 +534,7 @@ public class BusinessEsHandle { private void executeQuery(String indexName, String indexType,List list,PageInfo pageInfo,Class clazz, SearchSourceBuilder sourceBuilder) throws IOException { String string = sourceBuilder.toString(); HttpEntity entity = new NStringEntity(string, ContentType.APPLICATION_JSON); - StringBuilder endpointStringBuilder = new StringBuilder("/" + SpringUtil.getPrefixDistinctionName() + "-" + indexName); + StringBuilder endpointStringBuilder = new StringBuilder("/" + indexName); if (esTypeSwitch) { endpointStringBuilder.append("/").append(indexType).append("/_search"); }else { @@ -560,9 +559,9 @@ public class BusinessEsHandle { if (esTypeSwitch) { value = hits.getLong("total"); }else { - JSONObject totalJSONObject = hits.getJSONObject("total"); - if (totalJSONObject != null) { - value = totalJSONObject.getLong("value"); + JSONObject totalJsonObject = hits.getJSONObject("total"); + if (totalJsonObject != null) { + value = totalJsonObject.getLong("value"); } } if (Objects.nonNull(pageInfo)) { diff --git a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/UidGenerator.java b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/UidGenerator.java index a7435672..939d005c 100644 --- a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/UidGenerator.java +++ b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/UidGenerator.java @@ -30,10 +30,20 @@ public interface UidGenerator { * @return UID * @throws UidGenerateException */ - long getUID() throws UidGenerateException; + long getUid() throws UidGenerateException; + /** + * 获取id + * @return 结果 + * */ long getId(); + /** + * 获取订单编号 + * @param userId 用户id + * @param tableCount 分表数量 + * @return 结果 + * */ long getOrderNumber(long userId,long tableCount); /** @@ -43,6 +53,6 @@ public interface UidGenerator { * @param uid * @return Parsed info */ - String parseUID(long uid); + String parseUid(long uid); } diff --git a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/buffer/BufferPaddingExecutor.java b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/buffer/BufferPaddingExecutor.java index b29f8add..64c4ab27 100644 --- a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/buffer/BufferPaddingExecutor.java +++ b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/buffer/BufferPaddingExecutor.java @@ -42,7 +42,11 @@ public class BufferPaddingExecutor { /** Constants */ private static final String WORKER_NAME = "RingBuffer-Padding-Worker"; private static final String SCHEDULE_NAME = "RingBuffer-Padding-Schedule"; - private static final long DEFAULT_SCHEDULE_INTERVAL = 5 * 60L; // 5 minutes + + /** + * 5 minutes + * */ + private static final long DEFAULT_SCHEDULE_INTERVAL = 5 * 60L; /** Whether buffer padding is running */ private final AtomicBoolean running; diff --git a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/config/RedisDisposableWorkerIdAssigner.java b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/config/RedisDisposableWorkerIdAssigner.java index 75259f63..9640754b 100644 --- a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/config/RedisDisposableWorkerIdAssigner.java +++ b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/config/RedisDisposableWorkerIdAssigner.java @@ -1,8 +1,12 @@ package com.baidu.fsg.uid.config; import com.baidu.fsg.uid.worker.WorkerIdAssigner; +import com.damai.enums.BaseCode; +import com.damai.exception.DaMaiFrameException; import org.springframework.data.redis.core.RedisTemplate; +import java.util.Optional; + /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 * @description: redis配置生成work_id @@ -20,6 +24,6 @@ public class RedisDisposableWorkerIdAssigner implements WorkerIdAssigner { public long assignWorkerId() { String key = "uid_work_id"; Long increment = redisTemplate.opsForValue().increment(key); - return increment; + return Optional.ofNullable(increment).orElseThrow(() -> new DaMaiFrameException(BaseCode.UID_WORK_ID_ERROR)); } } diff --git a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/impl/CachedUidGenerator.java b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/impl/CachedUidGenerator.java index f960e6a1..1bdcb9ca 100644 --- a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/impl/CachedUidGenerator.java +++ b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/impl/CachedUidGenerator.java @@ -74,7 +74,7 @@ public class CachedUidGenerator extends DefaultUidGenerator implements Disposabl } @Override - public long getUID() { + public long getUid() { try { return ringBuffer.take(); } catch (Exception e) { @@ -94,8 +94,8 @@ public class CachedUidGenerator extends DefaultUidGenerator implements Disposabl } @Override - public String parseUID(long uid) { - return super.parseUID(uid); + public String parseUid(long uid) { + return super.parseUid(uid); } @Override diff --git a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/impl/DefaultUidGenerator.java b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/impl/DefaultUidGenerator.java index 1a2b2ae8..1a03506c 100644 --- a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/impl/DefaultUidGenerator.java +++ b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/impl/DefaultUidGenerator.java @@ -18,7 +18,7 @@ package com.baidu.fsg.uid.impl; import com.baidu.fsg.uid.BitsAllocator; import com.baidu.fsg.uid.UidGenerator; import com.baidu.fsg.uid.exception.UidGenerateException; -import com.baidu.fsg.uid.utils.DateUtils; +import com.baidu.fsg.uid.utils.AbstractDateUtils; import com.baidu.fsg.uid.worker.WorkerIdAssigner; import com.damai.toolkit.SnowflakeIdGenerator; import org.apache.commons.lang.StringUtils; @@ -39,7 +39,7 @@ import java.util.concurrent.TimeUnit; *
  • worker id: The next 22 bits, represents the worker's id which assigns based on database, max id is about 420W *
  • sequence: The next 13 bits, represents a sequence within the same second, max for 8192/s

    * - * The {@link DefaultUidGenerator#parseUID(long)} is a damai method to parse the bits + * The {@link DefaultUidGenerator#parseUid(long)} is a damai method to parse the bits * *
    {@code
      * +------+----------------------+----------------+-----------+
    @@ -101,7 +101,7 @@ public class DefaultUidGenerator implements UidGenerator, InitializingBean {
         }
     
         @Override
    -    public long getUID() throws UidGenerateException {
    +    public long getUid() throws UidGenerateException {
             try {
                 return nextId();
             } catch (Exception e) {
    @@ -121,7 +121,7 @@ public class DefaultUidGenerator implements UidGenerator, InitializingBean {
         }
     
         @Override
    -    public String parseUID(long uid) {
    +    public String parseUid(long uid) {
             long totalBits = BitsAllocator.TOTAL_BITS;
             long signBits = bitsAllocator.getSignBits();
             long timestampBits = bitsAllocator.getTimestampBits();
    @@ -134,7 +134,7 @@ public class DefaultUidGenerator implements UidGenerator, InitializingBean {
             long deltaSeconds = uid >>> (workerIdBits + sequenceBits);
     
             Date thatTime = new Date(TimeUnit.SECONDS.toMillis(epochSeconds + deltaSeconds));
    -        String thatTimeStr = DateUtils.formatByDateTimePattern(thatTime);
    +        String thatTimeStr = AbstractDateUtils.formatByDateTimePattern(thatTime);
     
             // format as string
             return String.format("{\"UID\":\"%d\",\"timestamp\":\"%s\",\"workerId\":\"%d\",\"sequence\":\"%d\"}",
    @@ -227,7 +227,7 @@ public class DefaultUidGenerator implements UidGenerator, InitializingBean {
         public void setEpochStr(String epochStr) {
             if (StringUtils.isNotBlank(epochStr)) {
                 this.epochStr = epochStr;
    -            this.epochSeconds = TimeUnit.MILLISECONDS.toSeconds(DateUtils.parseByDayPattern(epochStr).getTime());
    +            this.epochSeconds = TimeUnit.MILLISECONDS.toSeconds(AbstractDateUtils.parseByDayPattern(epochStr).getTime());
             }
         }
         
    diff --git a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/DateUtils.java b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractDateUtils.java
    similarity index 92%
    rename from damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/DateUtils.java
    rename to damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractDateUtils.java
    index e60b8cbb..4899e766 100644
    --- a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/DateUtils.java
    +++ b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractDateUtils.java
    @@ -15,18 +15,18 @@
      */
     package com.baidu.fsg.uid.utils;
     
    +import org.apache.commons.lang.time.DateFormatUtils;
    +
     import java.text.ParseException;
     import java.util.Calendar;
     import java.util.Date;
     
    -import org.apache.commons.lang.time.DateFormatUtils;
    -
     /**
    - * DateUtils provides date formatting, parsing
    + * AbstractDateUtils provides date formatting, parsing
      *
      * @author yutianbao
      */
    -public abstract class DateUtils extends org.apache.commons.lang.time.DateUtils {
    +public abstract class AbstractDateUtils extends org.apache.commons.lang.time.DateUtils {
         /**
          * Patterns
          */
    @@ -34,7 +34,7 @@ public abstract class DateUtils extends org.apache.commons.lang.time.DateUtils {
         public static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
         public static final String DATETIME_MS_PATTERN = "yyyy-MM-dd HH:mm:ss.SSS";
     
    -    public static final Date DEFAULT_DATE = DateUtils.parseByDayPattern("1970-01-01");
    +    public static final Date DEFAULT_DATE = AbstractDateUtils.parseByDayPattern("1970-01-01");
     
         /**
          * Parse date by 'yyyy-MM-dd' pattern
    diff --git a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/DockerUtils.java b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractDockerUtils.java
    similarity index 96%
    rename from damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/DockerUtils.java
    rename to damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractDockerUtils.java
    index 73e1c3b5..59643bed 100644
    --- a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/DockerUtils.java
    +++ b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractDockerUtils.java
    @@ -20,12 +20,12 @@ import org.slf4j.Logger;
     import org.slf4j.LoggerFactory;
     
     /**
    - * DockerUtils
    + * AbstractDockerUtils
      * 
      * @author yutianbao
      */
    -public abstract class DockerUtils {
    -    private static final Logger LOGGER = LoggerFactory.getLogger(DockerUtils.class);
    +public abstract class AbstractDockerUtils {
    +    private static final Logger LOGGER = LoggerFactory.getLogger(AbstractDockerUtils.class);
     
         /** Environment param keys */
         private static final String ENV_KEY_HOST = "JPAAS_HOST";
    diff --git a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/EnumUtils.java b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractEnumUtils.java
    similarity index 91%
    rename from damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/EnumUtils.java
    rename to damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractEnumUtils.java
    index 32615398..927064ec 100644
    --- a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/EnumUtils.java
    +++ b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractEnumUtils.java
    @@ -18,11 +18,11 @@ package com.baidu.fsg.uid.utils;
     import org.springframework.util.Assert;
     
     /**
    - * EnumUtils provides the operations for {@link ValuedEnum} such as Parse, value of...
    + * AbstractEnumUtils provides the operations for {@link ValuedEnum} such as Parse, value of...
      * 
      * @author yutianbao
      */
    -public abstract class EnumUtils {
    +public abstract class AbstractEnumUtils {
     
         /**
          * Parse the bounded value into ValuedEnum
    diff --git a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/NetUtils.java b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractNetUtils.java
    similarity index 97%
    rename from damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/NetUtils.java
    rename to damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractNetUtils.java
    index 4f0f17f4..bcad0fe6 100644
    --- a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/NetUtils.java
    +++ b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractNetUtils.java
    @@ -21,11 +21,11 @@ import java.net.SocketException;
     import java.util.Enumeration;
     
     /**
    - * NetUtils
    + * AbstractNetUtils
      * 
      * @author yutianbao
      */
    -public abstract class NetUtils {
    +public abstract class AbstractNetUtils {
     
         /**
          * Pre-loaded local address
    diff --git a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/ValuedEnum.java b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/ValuedEnum.java
    index 22a49646..d6049129 100644
    --- a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/ValuedEnum.java
    +++ b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/ValuedEnum.java
    @@ -18,10 +18,14 @@ package com.baidu.fsg.uid.utils;
     /**
      * {@code ValuedEnum} defines an enumeration which is bounded to a value, you
      * may implements this interface when you defines such kind of enumeration, that
    - * you can use {@link EnumUtils} to simplify parse and valueOf operation.
    + * you can use {@link AbstractEnumUtils} to simplify parse and valueOf operation.
      *  
      * @author yutianbao
      */
     public interface ValuedEnum {
    +    /**
    +     * 执行
    +     * @return 结果
    +     * */
         T value();
     }
    diff --git a/damai-id-generator-framework/src/main/java/com/damai/toolkit/SnowflakeIdGenerator.java b/damai-id-generator-framework/src/main/java/com/damai/toolkit/SnowflakeIdGenerator.java
    index 526e36d9..d7b6bbbc 100644
    --- a/damai-id-generator-framework/src/main/java/com/damai/toolkit/SnowflakeIdGenerator.java
    +++ b/damai-id-generator-framework/src/main/java/com/damai/toolkit/SnowflakeIdGenerator.java
    @@ -22,7 +22,7 @@ public class SnowflakeIdGenerator {
         /**
          * 时间起始标记点,作为基准,一般取系统的最近时间(一旦确定不能变动)
          */
    -    private static final long twepoch = 1288834974657L;
    +    private static final long BASIS_TIME = 1288834974657L;
         /**
          * 机器标识位数
          */
    @@ -145,11 +145,12 @@ public class SnowflakeIdGenerator {
         }
         
         public long getBase(){
    +        int five = 5;
             long timestamp = timeGen();
             //闰秒
             if (timestamp < lastTimestamp) {
                 long offset = lastTimestamp - timestamp;
    -            if (offset <= 5) {
    +            if (offset <= five) {
                     try {
                         wait(offset << 1);
                         timestamp = timeGen();
    @@ -190,7 +191,7 @@ public class SnowflakeIdGenerator {
             long timestamp = getBase();
     
             // 时间戳部分 | 数据中心部分 | 机器标识部分 | 序列号部分
    -        return ((timestamp - twepoch) << timestampLeftShift)
    +        return ((timestamp - BASIS_TIME) << timestampLeftShift)
                 | (datacenterId << datacenterIdShift)
                 | (workerId << workerIdShift)
                 | sequence;
    @@ -205,7 +206,7 @@ public class SnowflakeIdGenerator {
             long timestamp = getBase();
             long sequenceShift = log2N(tableCount);
             // 时间戳部分 | 数据中心部分 | 机器标识部分 | 序列号部分 | 用户id基因
    -        return ((timestamp - twepoch) << timestampLeftShift)
    +        return ((timestamp - BASIS_TIME) << timestampLeftShift)
                     | (datacenterId << datacenterIdShift)
                     | (workerId << workerIdShift)
                     | (sequence << (sequenceBits - sequenceShift))
    @@ -228,14 +229,14 @@ public class SnowflakeIdGenerator {
          * 反解id的时间戳部分
          */
         public static long parseIdTimestamp(long id) {
    -        return (id>>22)+twepoch;
    +        return (id>>22)+ BASIS_TIME;
         }
         
    -    /*
    +    /**
         * 求log2(N)
         * */
    -    public long log2N(long N) {
    -        return (long)(Math.log(N)/ Math.log(2));
    +    public long log2N(long count) {
    +        return (long)(Math.log(count)/ Math.log(2));
         }
         
         public long getMaxWorkerId() {
    diff --git a/damai-redis-framework/src/main/java/com/damai/redis/CacheUtil.java b/damai-redis-framework/src/main/java/com/damai/redis/CacheUtil.java
    index e6d517c3..3c472a1a 100644
    --- a/damai-redis-framework/src/main/java/com/damai/redis/CacheUtil.java
    +++ b/damai-redis-framework/src/main/java/com/damai/redis/CacheUtil.java
    @@ -55,10 +55,10 @@ public class CacheUtil {
         /**
          * 检查 redisKeyWrap 中的key是否为空或空的字符串
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap key包装
          */
    -    public static void checkNotBlank(RedisKeyWrap RedisKeyWrap) {
    -        if (StringUtil.isEmpty(RedisKeyWrap.getRelKey())) {
    +    public static void checkNotBlank(RedisKeyWrap redisKeyWrap) {
    +        if (StringUtil.isEmpty(redisKeyWrap.getRelKey())) {
                 throw new RuntimeException("请求参数缺失");
             }
         }
    @@ -79,9 +79,9 @@ public class CacheUtil {
         /**
          * 检查 list 是否为空或空的字符串
          *
    -     * @param list
    +     * @param list key集合
          */
    -    public static void checkNotEmpty(Collection list) {
    +    public static void checkNotEmpty(Collection list) {
             for (Object o : list) {
                 if (o == null) {
                     throw new RuntimeException("请求参数缺失");
    diff --git a/damai-redis-framework/src/main/java/com/damai/redis/RedisCache.java b/damai-redis-framework/src/main/java/com/damai/redis/RedisCache.java
    index 2f502f53..c365cf4b 100644
    --- a/damai-redis-framework/src/main/java/com/damai/redis/RedisCache.java
    +++ b/damai-redis-framework/src/main/java/com/damai/redis/RedisCache.java
    @@ -24,17 +24,17 @@ public interface RedisCache {
         /**
          * 获取字符串对象
          *
    -     * @param RedisKeyWrap   RedisKeyWrap
    +     * @param redisKeyWrap   RedisKeyWrap
          * @param clazz 类对象
          * @param    T
          * @return T 普通对象
          */
    -     T get(RedisKeyWrap RedisKeyWrap, Class clazz);
    +     T get(RedisKeyWrap redisKeyWrap, Class clazz);
         
         /**
          * 获取字符串对象(如果缓存中不存在,则执行给定的supplier接口)
          *
    -     * @param RedisKeyWrap   RedisKeyWrap
    +     * @param redisKeyWrap   RedisKeyWrap
          * @param clazz 类对象
          * @param    T
          * @param supplier 缓存为空时,执行的逻辑
    @@ -42,39 +42,39 @@ public interface RedisCache {
          * @param timeUnit 时间单位
          * @return T 普通对象
          */
    -     T get(RedisKeyWrap RedisKeyWrap, Class clazz, Supplier supplier, long ttl, TimeUnit timeUnit);
    +     T get(RedisKeyWrap redisKeyWrap, Class clazz, Supplier supplier, long ttl, TimeUnit timeUnit);
     
         /**
          * 返回 key 中字符串值的子字符
    -     * @param RedisKeyWrap
    -     * @param start
    -     * @param end
    -     * @return
    +     * @param redisKeyWrap 缓存key
    +     * @param start 开始
    +     * @param end 结束
    +     * @return 结果
          */
    -    String getRange(RedisKeyWrap RedisKeyWrap, long start, long end);
    +    String getRange(RedisKeyWrap redisKeyWrap, long start, long end);
     
         /**
          * 获取字符串对象, 并且字符串中是集合内容
          *
    -     * @param RedisKeyWrap
    -     * @param clazz
    -     * @param 
    +     * @param redisKeyWrap 缓存key
    +     * @param clazz 类型
    +     * @param  指定泛型
          * @return List
          */
    -     List getValueIsList(RedisKeyWrap RedisKeyWrap, Class clazz);
    +     List getValueIsList(RedisKeyWrap redisKeyWrap, Class clazz);
         
         /**
          * 获取字符串对象, 并且字符串中是集合内容(如果缓存中不存在,则执行给定的supplier接口)
          *
    -     * @param RedisKeyWrap
    -     * @param clazz
    -     * @param 
    +     * @param redisKeyWrap 缓存key
    +     * @param clazz 类型
    +     * @param  指定泛型
          * @param supplier 缓存为空时,执行的逻辑
          * @param ttl      过期时间
          * @param timeUnit 时间单位
          * @return List
          */
    -     List getValueIsList(RedisKeyWrap RedisKeyWrap, Class clazz, Supplier> supplier,long ttl, TimeUnit timeUnit);
    +     List getValueIsList(RedisKeyWrap redisKeyWrap, Class clazz, Supplier> supplier,long ttl, TimeUnit timeUnit);
     
     
         /**
    @@ -88,70 +88,69 @@ public interface RedisCache {
         /**
          * 判断key是否存在
          *
    -     * @param RedisKeyWrap RedisKeyWrap
    +     * @param redisKeyWrap redisKeyWrap
          * @return 是否存在 可能为空
          */
    -    Boolean hasKey(RedisKeyWrap RedisKeyWrap);
    +    Boolean hasKey(RedisKeyWrap redisKeyWrap);
     
         /**
          * 删除key
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap 缓存key
          * @return
          */
    -    void del(RedisKeyWrap RedisKeyWrap);
    +    void del(RedisKeyWrap redisKeyWrap);
     
     
         /**
          * 批量删除key
          *
    -     * @param keys
    -     * @return
    +     * @param keys key集合
          */
         void del(Collection keys);
     
         /**
          * 设置key过期时间
          *
    -     * @param RedisKeyWrap      RedisKeyWrap
    +     * @param redisKeyWrap      RedisKeyWrap
          * @param ttl      过期时间
          * @param timeUnit 时间单位
          * @return 是否成功
          */
    -    Boolean expire(RedisKeyWrap RedisKeyWrap, long ttl, TimeUnit timeUnit);
    +    Boolean expire(RedisKeyWrap redisKeyWrap, long ttl, TimeUnit timeUnit);
     
         /**
          * 获取key超时时间
          *
    -     * @param RedisKeyWrap RedisKeyWrap
    +     * @param redisKeyWrap redisKeyWrap
          * @return 超时时间
          */
    -    Long getExpire(RedisKeyWrap RedisKeyWrap);
    +    Long getExpire(RedisKeyWrap redisKeyWrap);
     
         /**
          * 查找匹配的key
          *
    -     * @param pattern
    -     * @return
    +     * @param pattern 缓存key
    +     * @return keys
          */
         Set keys(String pattern);
     
         /**
          * 将当前数据库的 key 移动到给定的数据库 db 当中
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap 缓存key
          * @param dbIndex
          * @return
          */
    -    Boolean move(RedisKeyWrap RedisKeyWrap, int dbIndex);
    +    Boolean move(RedisKeyWrap redisKeyWrap, int dbIndex);
     
         /**
          * 移除 key 的过期时间,key 将持久保持
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap 缓存key
          * @return
          */
    -    Boolean persist(RedisKeyWrap RedisKeyWrap);
    +    Boolean persist(RedisKeyWrap redisKeyWrap);
     
         /**
          * 从当前数据库中随机返回一个 key
    @@ -163,16 +162,16 @@ public interface RedisCache {
         /**
          * 修改 key 的名称
          *
    -     * @param oldKey
    -     * @param newKey
    +     * @param oldKey 缓存key
    +     * @param newKey 缓存key
          */
         void rename(RedisKeyWrap oldKey, RedisKeyWrap newKey);
     
         /**
    -     * 仅当 newkey 不存在时,将 oldKey 改名为 newkey
    +     * 仅当 newKey 不存在时,将 oldKey 改名为 newKey
          *
    -     * @param oldKey
    -     * @param newKey
    +     * @param oldKey 缓存key
    +     * @param newKey 缓存key
          * @return
          */
         Boolean renameIfAbsent(RedisKeyWrap oldKey, RedisKeyWrap newKey);
    @@ -180,66 +179,66 @@ public interface RedisCache {
         /**
          * 返回 key 所储存的值的类型
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap 缓存key
          * @return
          */
    -    DataType type(RedisKeyWrap RedisKeyWrap);
    +    DataType type(RedisKeyWrap redisKeyWrap);
     
         /**
          * 设置缓存
          *
    -     * @param RedisKeyWrap        缓存key
    +     * @param redisKeyWrap        缓存key
          * @param object     缓存对象
          */
    -    void set(RedisKeyWrap RedisKeyWrap, Object object);
    +    void set(RedisKeyWrap redisKeyWrap, Object object);
     
         /**
          * 设置缓存
          *
    -     * @param RedisKeyWrap        缓存key
    +     * @param redisKeyWrap        缓存key
          * @param object     缓存对象
          * @param ttl 过期时间
          */
    -    void set(RedisKeyWrap RedisKeyWrap, Object object, long ttl);
    +    void set(RedisKeyWrap redisKeyWrap, Object object, long ttl);
     
         /**
          * 设置缓存
          *
    -     * @param RedisKeyWrap      缓存key
    +     * @param redisKeyWrap      缓存key
          * @param object   缓存对象
          * @param ttl      过期时间
          * @param timeUnit 时间单位
          */
    -    void set(RedisKeyWrap RedisKeyWrap, Object object, long ttl, TimeUnit timeUnit);
    +    void set(RedisKeyWrap redisKeyWrap, Object object, long ttl, TimeUnit timeUnit);
     
         /**
          * 只有在 key 不存在时设置 key 的值
          *
    -     * @param RedisKeyWrap
    -     * @param object
    +     * @param redisKeyWrap  缓存key
    +     * @param object 对象
          * @return 之前已经存在返回false,不存在返回true
          */
    -    boolean setIfAbsent(RedisKeyWrap RedisKeyWrap, Object object);
    +    boolean setIfAbsent(RedisKeyWrap redisKeyWrap, Object object);
     
         /**
          * 获取字符串的长度
          *
    -     * @param RedisKeyWrap
    -     * @return
    +     * @param redisKeyWrap 缓存key
    +     * @return 长度
          */
    -    Long size(RedisKeyWrap RedisKeyWrap);
    +    Long size(RedisKeyWrap redisKeyWrap);
     
         /**
          * 批量添加
          *
    -     * @param map
    +     * @param map 对象
          */
         void multiSet(Map map);
     
         /**
          * 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在
          *
    -     * @param map
    +     * @param map 对象
          * @return 之前已经存在返回false,不存在返回true
          */
         boolean multiSetIfAbsent(Map map);
    @@ -247,355 +246,355 @@ public interface RedisCache {
         /**
          * 增加(自增长), 负数则为自减
          *
    -     * @param RedisKeyWrap
    -     * @param increment
    +     * @param redisKeyWrap 缓存key
    +     * @param increment 步长
          * @return
          */
    -    Long incrBy(RedisKeyWrap RedisKeyWrap, long increment);
    +    Long incrBy(RedisKeyWrap redisKeyWrap, long increment);
     
         /**
          * double类型增加(自增长), 负数则为自减
    -     * @param RedisKeyWrap
    -     * @param increment
    +     * @param redisKeyWrap 缓存key
    +     * @param increment 步长
          * @return
          */
    -    Double incrByDouble(RedisKeyWrap RedisKeyWrap, double increment);
    +    Double incrByDouble(RedisKeyWrap redisKeyWrap, double increment);
     
         /**
          * 追加到末尾
          *
    -     * @param RedisKeyWrap
    -     * @param value
    +     * @param redisKeyWrap 缓存key
    +     * @param value 值
          * @return
          */
    -    Integer append(RedisKeyWrap RedisKeyWrap, String value);
    +    Integer append(RedisKeyWrap redisKeyWrap, String value);
     
         /** -------------------hash相关操作------------------------- */
     
         /**
          * 放置一个键值对
          *
    -     * @param RedisKeyWrap     hash键
    +     * @param redisKeyWrap     hash键
          * @param hashKey hash key
          * @param value   hash value
          */
    -    void putHash(RedisKeyWrap RedisKeyWrap, String hashKey, Object value);
    +    void putHash(RedisKeyWrap redisKeyWrap, String hashKey, Object value);
     
         /**
          * 放置一个键值对 并设置过期时间
          *
    -     * @param RedisKeyWrap           hash键
    +     * @param redisKeyWrap           hash键
          * @param hashKey       hash key
          * @param value         hash value
          * @param ttl    过期时间
          */
    -    void putHash(RedisKeyWrap RedisKeyWrap, String hashKey, Object value, long ttl);
    +    void putHash(RedisKeyWrap redisKeyWrap, String hashKey, Object value, long ttl);
     
         /**
          * 放置一个键值对 并设置过期时间
          *
    -     * @param RedisKeyWrap       hash键
    +     * @param redisKeyWrap       hash键
          * @param hashKey   hash key
          * @param value     hash value
          * @param ttl       过期时间
          * @param timeUnit  时间单位
          */
    -    void putHash(RedisKeyWrap RedisKeyWrap, String hashKey, Object value, long ttl, TimeUnit timeUnit);
    +    void putHash(RedisKeyWrap redisKeyWrap, String hashKey, Object value, long ttl, TimeUnit timeUnit);
     
         /**
          * 放入map中所有键值对
          *
    -     * @param RedisKeyWrap key
    +     * @param redisKeyWrap key
          * @param map hash
          */
    -    void putHash(RedisKeyWrap RedisKeyWrap, Map map);
    +    void putHash(RedisKeyWrap redisKeyWrap, Map map);
     
         /**
          * 放入map中所有键值对 并设置过期时间
          *
    -     * @param RedisKeyWrap key
    +     * @param redisKeyWrap key
          * @param map hash
          * @param ttl 过期时间
          */
    -    void putHash(RedisKeyWrap RedisKeyWrap, Map map, long ttl);
    +    void putHash(RedisKeyWrap redisKeyWrap, Map map, long ttl);
     
         /**
          * 放入 Map 中所有键值对 并设置过期时间和时间单位
          *
    -     * @param RedisKeyWrap key
    +     * @param redisKeyWrap key
          * @param map hash
          * @param ttl 过期时间
          * @param timeUnit 时间单位
          */
    -    void putHash(RedisKeyWrap RedisKeyWrap, Map map, long ttl, TimeUnit timeUnit);
    +    void putHash(RedisKeyWrap redisKeyWrap, Map map, long ttl, TimeUnit timeUnit);
     
         /**
          * 仅当hashKey不存在时才设置
          *
    -     * @param RedisKeyWrap
    -     * @param hashKey
    -     * @param value
    +     * @param redisKeyWrap 缓存key
    +     * @param hashKey hash中key
    +     * @param value 对象
          * @return
          */
    -    Boolean putHashIfAbsent(RedisKeyWrap RedisKeyWrap, String hashKey, Object value);
    +    Boolean putHashIfAbsent(RedisKeyWrap redisKeyWrap, String hashKey, Object value);
     
         /**
          * 从 Hash 中获取普通对象
          *
    -     * @param RedisKeyWrap     key
    +     * @param redisKeyWrap     key
          * @param hashKey hash key
          * @param clazz   类对象
          * @param      T
          * @return 普通对象
          */
         @SuppressWarnings("all")
    -     T getForHash(RedisKeyWrap RedisKeyWrap, String hashKey, Class clazz);
    +     T getForHash(RedisKeyWrap redisKeyWrap, String hashKey, Class clazz);
     
         /**
          * Hash的value是字符串集合,进行提取
          *
    -     * @param RedisKeyWrap     key
    +     * @param redisKeyWrap     key
          * @param hashKey hash key
          * @param clazz   类对象
          * @param      T
          * @return 普通对象
          */
    -     List getValueIsListForHash(RedisKeyWrap RedisKeyWrap, String hashKey, Class clazz);
    +     List getValueIsListForHash(RedisKeyWrap redisKeyWrap, String hashKey, Class clazz);
     
         /**
          * 从 {@code key} 处获取给定 {@code hashKeys} 的值
          *
    -     * @param RedisKeyWrap      key
    +     * @param redisKeyWrap      key
          * @param hashKeys hashKeys
          * @param clazz    类对象
          * @param       T
          * @return
          */
    -     List multiGetForHash(RedisKeyWrap RedisKeyWrap, List hashKeys, Class clazz);
    +     List multiGetForHash(RedisKeyWrap redisKeyWrap, List hashKeys, Class clazz);
     
         /**
          * 谨慎使用!
          * 获取 Hash Key 下所有值
          *
    -     * @param RedisKeyWrap
    -     * @param clazz
    -     * @param 
    +     * @param redisKeyWrap 缓存key
    +     * @param clazz 类型
    +     * @param  泛型
          * @return
          */
    -     List getAllForHash(RedisKeyWrap RedisKeyWrap, Class clazz);
    +     List getAllForHash(RedisKeyWrap redisKeyWrap, Class clazz);
         
         /**
          * 谨慎使用!
          * 获取 Hash Key 下所有值,返回值为map
          *
    -     * @param RedisKeyWrap
    -     * @param clazz
    -     * @param 
    +     * @param redisKeyWrap 缓存key
    +     * @param clazz 类型
    +     * @param  泛型
          * @return
          */
    -     Map getAllMapForHash(RedisKeyWrap RedisKeyWrap, Class clazz);
    +     Map getAllMapForHash(RedisKeyWrap redisKeyWrap, Class clazz);
         /**
          * 判断hash中 key是否存在
          *
    -     * @param RedisKeyWrap
    -     * @param hashKey
    -     * @return
    +     * @param redisKeyWrap 缓存key
    +     * @param hashKey hash中key
    +     * @return 结果
          */
    -    Boolean hasKeyForHash(RedisKeyWrap RedisKeyWrap, String hashKey);
    +    Boolean hasKeyForHash(RedisKeyWrap redisKeyWrap, String hashKey);
     
         /**
          * 删除hash key
          *
    -     * @param RedisKeyWrap
    -     * @param hashKey
    -     * @return
    +     * @param redisKeyWrap 缓存key
    +     * @param hashKey hash中key
    +     * @return 结果
          */
    -    Long delForHash(RedisKeyWrap RedisKeyWrap, String hashKey);
    +    Long delForHash(RedisKeyWrap redisKeyWrap, String hashKey);
     
         /**
          * 批量删除hash key
          *
    -     * @param RedisKeyWrap
    -     * @param hashKeys
    -     * @return
    +     * @param redisKeyWrap 缓存key
    +     * @param hashKeys hash中key
    +     * @return 结果
          */
    -    Long delForHash(RedisKeyWrap RedisKeyWrap, Collection hashKeys);
    +    Long delForHash(RedisKeyWrap redisKeyWrap, Collection hashKeys);
     
         /**
          * 为哈希表 key 中的指定字段的整数值加上增量 increment
          *
    -     * @param RedisKeyWrap
    -     * @param hashKey
    -     * @param increment
    -     * @return
    +     * @param redisKeyWrap 缓存key
    +     * @param hashKey hash中key
    +     * @param increment 步长
    +     * @return 结果
          */
    -    Long incrByForHash(RedisKeyWrap RedisKeyWrap, String hashKey, long increment);
    +    Long incrByForHash(RedisKeyWrap redisKeyWrap, String hashKey, long increment);
     
         /**
          * 为哈希表 key 中的指定字段的整数值加上增量 increment(double类型)
          *
    -     * @param RedisKeyWrap
    -     * @param hashKey
    -     * @param delta
    -     * @return
    +     * @param redisKeyWrap 缓存key
    +     * @param hashKey hash中key
    +     * @param delta 步长
    +     * @return 结果
          */
    -    Double incrByDoubleForHash(RedisKeyWrap RedisKeyWrap, String hashKey, double delta);
    +    Double incrByDoubleForHash(RedisKeyWrap redisKeyWrap, String hashKey, double delta);
     
         /**
          * 获取所有哈希表中的hashKey
          *
    -     * @param RedisKeyWrap
    -     * @return
    +     * @param redisKeyWrap 缓存key
    +     * @return 结果
          */
    -    Set hashKeysForHash(RedisKeyWrap RedisKeyWrap);
    +    Set hashKeysForHash(RedisKeyWrap redisKeyWrap);
     
         /**
          * 获取哈希表中字段的数量
          *
    -     * @param RedisKeyWrap
    -     * @return
    +     * @param redisKeyWrap 缓存key
    +     * @return 结果
          */
    -    Long sizeForHash(RedisKeyWrap RedisKeyWrap);
    +    Long sizeForHash(RedisKeyWrap redisKeyWrap);
     
         /** ------------------------list相关操作---------------------------- */
     
         /**
          * 通过索引获取列表中的元素
          *
    -     * @param RedisKeyWrap
    -     * @param index
    -     * @param clazz
    -     * @return
    +     * @param redisKeyWrap 缓存key
    +     * @param index 索引
    +     * @param clazz 类型
    +     * @return 结果
          */
    -     T indexForList(RedisKeyWrap RedisKeyWrap, long index, Class clazz);
    +     T indexForList(RedisKeyWrap redisKeyWrap, long index, Class clazz);
     
         /**
          * List 从左边放入元素
          *
    -     * @param RedisKeyWrap   key
    +     * @param redisKeyWrap   key
          * @param value value
          * @return 改动行数
          */
    -    Long leftPushForList(RedisKeyWrap RedisKeyWrap, Object value);
    +    Long leftPushForList(RedisKeyWrap redisKeyWrap, Object value);
     
         /**
          * List 从左边放入元素
          *
    -     * @param RedisKeyWrap   key
    +     * @param redisKeyWrap   key
          * @param valueList valueList
          * @return 改动行数
          */
    -    Long leftPushAllForList(RedisKeyWrap RedisKeyWrap, List valueList);
    +    Long leftPushAllForList(RedisKeyWrap redisKeyWrap, List valueList);
     
         /**
          * List 从左边放入元素(当list存在的时候才加入)
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param value
          * @return
          */
    -    Long leftPushIfPresentForList(RedisKeyWrap RedisKeyWrap, Object value);
    +    Long leftPushIfPresentForList(RedisKeyWrap redisKeyWrap, Object value);
     
         /**
          * 如果pivot存在,在pivot左边添加
          *
    -     * @param RedisKeyWrap
    -     * @param pivot
    -     * @param value
    -     * @return
    +     * @param redisKeyWrap 缓存key
    +     * @param pivot pivot
    +     * @param value 对象
    +     * @return 结果
          */
    -    Long leftPushForList(RedisKeyWrap RedisKeyWrap, Object pivot, Object value);
    +    Long leftPushForList(RedisKeyWrap redisKeyWrap, Object pivot, Object value);
     
         /**
          * List 从右边放入元素
          *
    -     * @param RedisKeyWrap   key
    +     * @param redisKeyWrap   key
          * @param value value
          * @return 改动行数
          */
    -    Long rightPushForList(RedisKeyWrap RedisKeyWrap, Object value);
    +    Long rightPushForList(RedisKeyWrap redisKeyWrap, Object value);
     
         /**
          * List 从右边放入元素
          *
    -     * @param RedisKeyWrap   key
    +     * @param redisKeyWrap   key
          * @param valueList valueList
          * @return 改动行数
          */
    -    Long rightPushAllForList(RedisKeyWrap RedisKeyWrap, List valueList);
    +    Long rightPushAllForList(RedisKeyWrap redisKeyWrap, List valueList);
     
         /**
          * List 从右边放入元素(当list存在的时候才加入)
          *
    -     * @param RedisKeyWrap
    -     * @param value
    -     * @return
    +     * @param redisKeyWrap 缓存key
    +     * @param value 对象
    +     * @return 结果
          */
    -    Long rightPushIfPresentForList(RedisKeyWrap RedisKeyWrap, Object value);
    +    Long rightPushIfPresentForList(RedisKeyWrap redisKeyWrap, Object value);
     
         /**
          * 如果pivot存在,在pivot右边添加
          *
    -     * @param RedisKeyWrap
    -     * @param pivot
    -     * @param value
    -     * @return
    +     * @param redisKeyWrap 缓存key
    +     * @param pivot pivot
    +     * @param value 对象
    +     * @return 结果
          */
    -    Long rightPushForList(RedisKeyWrap RedisKeyWrap, Object pivot, Object value);
    +    Long rightPushForList(RedisKeyWrap redisKeyWrap, Object pivot, Object value);
     
         /**
          * 通过索引设置列表元素的值
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap 缓存key
          * @param index
          *            位置
    -     * @param value
    +     * @param value 对象
          */
    -    void setForList(RedisKeyWrap RedisKeyWrap, long index, Object value);
    +    void setForList(RedisKeyWrap redisKeyWrap, long index, Object value);
     
         /**
          * 移出并获取列表的第一个元素
          *
    -     * @param RedisKeyWrap
    -     * @param clazz
    +     * @param redisKeyWrap 缓存key
    +     * @param clazz 类型
          * @return 删除的元素
          */
    -     T leftPopForList(RedisKeyWrap RedisKeyWrap, Class clazz);
    +     T leftPopForList(RedisKeyWrap redisKeyWrap, Class clazz);
     
         /**
          * 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
          *
    -     * @param RedisKeyWrap
    -     * @param clazz
    +     * @param redisKeyWrap 缓存key
    +     * @param clazz 类型
          * @param timeout
          *            等待时间
          * @param unit
          *            时间单位
          * @return
          */
    -     T leftPopBlockForList(RedisKeyWrap RedisKeyWrap, Class clazz, long timeout, TimeUnit unit);
    +     T leftPopBlockForList(RedisKeyWrap redisKeyWrap, Class clazz, long timeout, TimeUnit unit);
     
         /**
          * 移除并获取列表最后一个元素
          *
    -     * @param RedisKeyWrap
    -     * @param clazz
    +     * @param redisKeyWrap 缓存key
    +     * @param clazz 类型
          * @return 删除的元素
          */
    -     T rightPopForList(RedisKeyWrap RedisKeyWrap, Class clazz);
    +     T rightPopForList(RedisKeyWrap redisKeyWrap, Class clazz);
     
         /**
          * 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
          *
    -     * @param RedisKeyWrap
    -     * @param clazz
    +     * @param redisKeyWrap 缓存key
    +     * @param clazz 类型
          * @param timeout
          *            等待时间
          * @param unit
          *            时间单位
          * @return
          */
    -     T rightPopBlockForList(RedisKeyWrap RedisKeyWrap, Class clazz, long timeout, TimeUnit unit);
    +     T rightPopBlockForList(RedisKeyWrap redisKeyWrap, Class clazz, long timeout, TimeUnit unit);
     
         /**
          * 移除列表的最后一个元素,并将该元素添加到另一个列表并返回
    @@ -610,65 +609,66 @@ public interface RedisCache {
         /**
          * 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
          *
    -     * @param sourceKey
    -     * @param destinationKey
    -     * @param timeout
    -     * @param unit
    -     * @return
    +     * @param sourceKey 缓存key
    +     * @param destinationKey 弹出key
    +     * @param clazz 类型
    +     * @param timeout 时间
    +     * @param unit 时间单位
    +     * @return 结果
          */
          T rightPopBlockAndLeftPushForList(RedisKeyWrap sourceKey, RedisKeyWrap destinationKey, Class clazz, long timeout, TimeUnit unit);
     
         /**
          * 获取 List 全部数据
          *
    -     * @param RedisKeyWrap
    -     * @param 
    +     * @param redisKeyWrap 缓存key
    +     * @param  泛型
          * @param clazz 类型
          * @return
          */
    -     List getAllForList(RedisKeyWrap RedisKeyWrap, Class clazz);
    +     List getAllForList(RedisKeyWrap redisKeyWrap, Class clazz);
     
         /**
          * 获取列表指定范围内的元素
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap 缓存key
          * @param start 开始位置, 0是开始位置
          * @param end 结束位置, -1返回所有
          * @param clazz 类型
    -     * @return
    +     * @return 结果
          */
    -     List rangeForList(RedisKeyWrap RedisKeyWrap, long start, long end, Class clazz);
    +     List rangeForList(RedisKeyWrap redisKeyWrap, long start, long end, Class clazz);
     
     
         /**
          * 删除集合中值等于value得元素
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap 缓存key
          * @param index
          *            index=0, 删除所有值等于value的元素; index>0, 从头部开始删除第一个值等于value的元素;
          *            index<0, 从尾部开始删除第一个值等于value的元素;
    -     * @param value
    -     * @return
    +     * @param value 对象
    +     * @return 结果
          */
    -    Long removeForList(RedisKeyWrap RedisKeyWrap, long index, Object value);
    +    Long removeForList(RedisKeyWrap redisKeyWrap, long index, Object value);
     
     
         /**
          * 裁剪list
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param start
          * @param end
          */
    -    void trimForList(RedisKeyWrap RedisKeyWrap, long start, long end);
    +    void trimForList(RedisKeyWrap redisKeyWrap, long start, long end);
     
         /**
          * 获取列表长度
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @return
          */
    -    Long lenForList(RedisKeyWrap RedisKeyWrap);
    +    Long lenForList(RedisKeyWrap redisKeyWrap);
     
     
         /** --------------------set相关操作-------------------------- */
    @@ -676,416 +676,416 @@ public interface RedisCache {
         /**
          * set添加元素
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param value
          * @return
          */
    -    Long addForSet(RedisKeyWrap RedisKeyWrap, Object value);
    +    Long addForSet(RedisKeyWrap redisKeyWrap, Object value);
     
         /**
          * set批量添加元素
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param values
          * @return
          */
    -    Long addForSet(RedisKeyWrap RedisKeyWrap, List values);
    +    Long addForSet(RedisKeyWrap redisKeyWrap, List values);
     
         /**
          * set移除元素
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param value
          * @return
          */
    -    Long removeForSet(RedisKeyWrap RedisKeyWrap, Object value);
    +    Long removeForSet(RedisKeyWrap redisKeyWrap, Object value);
     
         /**
          * set批量移除元素
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param values
          * @return
          */
    -    Long removeForSet(RedisKeyWrap RedisKeyWrap, List values);
    +    Long removeForSet(RedisKeyWrap redisKeyWrap, List values);
     
         /**
          * 移除并返回集合的一个随机元素
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param clazz
          * @return
          */
    -     T popForSet(RedisKeyWrap RedisKeyWrap, Class clazz);
    +     T popForSet(RedisKeyWrap redisKeyWrap, Class clazz);
     
         /**
          * 将元素value从一个集合移到另一个集合
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param value
          * @param destRedisKeyWrap
          * @return
          */
    -    boolean moveForSet(RedisKeyWrap RedisKeyWrap, Object value, RedisKeyWrap destRedisKeyWrap);
    +    boolean moveForSet(RedisKeyWrap redisKeyWrap, Object value, RedisKeyWrap destRedisKeyWrap);
     
         /**
          * 获取集合的大小
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @return
          */
    -    Long sizeForSet(RedisKeyWrap RedisKeyWrap);
    +    Long sizeForSet(RedisKeyWrap redisKeyWrap);
     
         /**
          * 判断集合是否包含value
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param value
          * @return
          */
    -    Boolean isMemberForSet(RedisKeyWrap RedisKeyWrap, Object value);
    +    Boolean isMemberForSet(RedisKeyWrap redisKeyWrap, Object value);
     
         /**
          * 获取两个集合的交集
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param otherRedisKeyWrap
          * @param clazz
          * @return
          */
    -     Set intersectForSet(RedisKeyWrap RedisKeyWrap, RedisKeyWrap otherRedisKeyWrap, Class clazz);
    +     Set intersectForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, Class clazz);
     
         /**
          * 获取key集合与多个集合的交集
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param otherRedisKeyWraps
          * @param clazz
          * @return
          */
    -     Set intersectForSet(RedisKeyWrap RedisKeyWrap, Collection otherRedisKeyWraps, Class clazz);
    +     Set intersectForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, Class clazz);
     
         /**
          * key集合与otherKey集合的交集存储到destKey集合中
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param otherRedisKeyWrap
          * @param destRedisKeyWrap
          * @return
          */
    -    Long intersectAndStoreForSet(RedisKeyWrap RedisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap);
    +    Long intersectAndStoreForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap);
     
         /**
          * key集合与多个集合的交集存储到destKey集合中
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param otherRedisKeyWraps
          * @param destRedisKeyWrap
          * @return
          */
    -    Long intersectAndStoreForSet(RedisKeyWrap RedisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap);
    +    Long intersectAndStoreForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap);
     
         /**
          * 获取两个集合的并集
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param otherRedisKeyWrap
          * @param clazz
          * @return
          */
    -     Set unionForSet(RedisKeyWrap RedisKeyWrap, RedisKeyWrap otherRedisKeyWrap, Class clazz);
    +     Set unionForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, Class clazz);
     
         /**
          * 获取key集合与多个集合的并集
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param otherRedisKeyWraps
          * @param clazz
          * @return
          */
    -     Set unionForSet(RedisKeyWrap RedisKeyWrap, Collection otherRedisKeyWraps, Class clazz);
    +     Set unionForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, Class clazz);
     
         /**
          * key集合与otherKey集合的并集存储到destKey中
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param otherRedisKeyWrap
          * @param destRedisKeyWrap
          * @return
          */
    -    Long unionAndStoreForSet(RedisKeyWrap RedisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap);
    +    Long unionAndStoreForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap);
     
         /**
          * key集合与多个集合的并集存储到destKey中
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param otherRedisKeyWraps
          * @param destRedisKeyWrap
          * @return
          */
    -    Long unionAndStoreForSet(RedisKeyWrap RedisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap);
    +    Long unionAndStoreForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap);
     
         /**
          * 获取两个集合的差集
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param otherRedisKeyWrap
          * @param clazz
          * @return
          */
    -     Set differenceForSet(RedisKeyWrap RedisKeyWrap, RedisKeyWrap otherRedisKeyWrap, Class clazz);
    +     Set differenceForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, Class clazz);
     
         /**
          * 获取key集合与多个集合的差集
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param otherRedisKeyWraps
          * @param clazz
          * @return
          */
    -     Set differenceForSet(RedisKeyWrap RedisKeyWrap, Collection otherRedisKeyWraps, Class clazz);
    +     Set differenceForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, Class clazz);
     
         /**
          * key集合与otherKey集合的差集存储到destKey中
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param otherRedisKeyWrap
          * @param destRedisKeyWrap
          * @return
          */
    -    Long differenceForSet(RedisKeyWrap RedisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap);
    +    Long differenceForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap);
     
         /**
          * key集合与多个集合的差集存储到destKey中
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param otherRedisKeyWraps
          * @param destRedisKeyWrap
          * @return
          */
    -    Long differenceForSet(RedisKeyWrap RedisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap);
    +    Long differenceForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap);
     
         /**
          * 获取集合所有元素
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param clazz
          * @return
          */
    -     Set membersForSet(RedisKeyWrap RedisKeyWrap, Class clazz);
    +     Set membersForSet(RedisKeyWrap redisKeyWrap, Class clazz);
     
         /**
          * 随机获取集合中的一个元素
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param clazz
          * @return
          */
    -     T randomMemberForSet(RedisKeyWrap RedisKeyWrap, Class clazz);
    +     T randomMemberForSet(RedisKeyWrap redisKeyWrap, Class clazz);
     
         /**
          * 随机获取集合中count个元素
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param count
          * @param clazz
          * @return
          */
    -     List randomMembersForSet(RedisKeyWrap RedisKeyWrap, long count, Class clazz);
    +     List randomMembersForSet(RedisKeyWrap redisKeyWrap, long count, Class clazz);
     
         /**
          * 随机获取集合中count个元素并且去除重复的
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param count
          * @param clazz
          * @return
          */
    -     Set distinctRandomMembersForSet(RedisKeyWrap RedisKeyWrap, long count, Class clazz);
    +     Set distinctRandomMembersForSet(RedisKeyWrap redisKeyWrap, long count, Class clazz);
     
         /**
          * 游标遍历
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param options
          * @return
          */
    -    Cursor scanForSet(RedisKeyWrap RedisKeyWrap, ScanOptions options);
    +    Cursor scanForSet(RedisKeyWrap redisKeyWrap, ScanOptions options);
     
     
     
    -    /**------------------zSet相关操作--------------------------------*/
    +    /**------------------SortedSet相关操作--------------------------------*/
     
         /**
          * 存储有序列表
          *
    -     * @param RedisKeyWrap key
    +     * @param redisKeyWrap key
          * @param value value
          * @param score 评分值
          * @return
          */
    -    void addForZSet(RedisKeyWrap RedisKeyWrap, Object value, Double score);
    +    void addForSortedSet(RedisKeyWrap redisKeyWrap, Object value, Double score);
     
         /**
          * 存储有序列表并设置超时时间(秒)
          *
    -     * @param RedisKeyWrap key
    +     * @param redisKeyWrap key
          * @param value value
          * @param score 评分值
          * @param ttl 超时时间
          * @return
          */
    -    void addForZSet(RedisKeyWrap RedisKeyWrap, Object value, Double score, long ttl);
    +    void addForSortedSet(RedisKeyWrap redisKeyWrap, Object value, Double score, long ttl);
     
         /**
          * 存储有序列表并设置超时时间
          *
    -     * @param RedisKeyWrap key
    +     * @param redisKeyWrap key
          * @param value value
          * @param score 评分值
          * @param ttl 超时时间
          * @param timeUnit 时间单位
          * @return
          */
    -    void addForZSet(RedisKeyWrap RedisKeyWrap, Object value, Double score, long ttl, TimeUnit timeUnit);
    +    void addForSortedSet(RedisKeyWrap redisKeyWrap, Object value, Double score, long ttl, TimeUnit timeUnit);
     
         /**
          * 存储有序列表
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param map map中的key如果是自定义对象类型需要重新equals和hashcode方法
          * @return
          */
    -    Long addForZSet(RedisKeyWrap RedisKeyWrap, Map map);
    +    Long addForSortedSet(RedisKeyWrap redisKeyWrap, Map map);
     
         /**
          * 存储有序列表并设置超时时间(秒)
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param map map中的key如果是自定义对象类型需要重新equals和hashcode方法
          * @param ttl
          * @return
          */
    -    Long addForZSet(RedisKeyWrap RedisKeyWrap, Map map, long ttl);
    +    Long addForSortedSet(RedisKeyWrap redisKeyWrap, Map map, long ttl);
     
         /**
          * 存储有序列表并设置超时时间 自定义单位
          *
    -     * @param RedisKeyWrap      key
    +     * @param redisKeyWrap      key
          * @param map      map中的key如果是自定义对象类型需要重新equals和hashcode方法
          * @param ttl      过期时间
          * @param timeUnit 过期时间单位
          * @return 影响的条目
          */
    -    Long addForZSet(RedisKeyWrap RedisKeyWrap, Map map, long ttl, TimeUnit timeUnit);
    +    Long addForSortedSet(RedisKeyWrap redisKeyWrap, Map map, long ttl, TimeUnit timeUnit);
     
         /**
          * 获取有序列表中范围条目,并转为指定类型
          *
    -     * @param RedisKeyWrap   key
    +     * @param redisKeyWrap   key
          * @param start 开始下标 从0开始
          * @param end   结束下标 包含此条
          * @param clazz 序列化类型
          * @param    泛型参数
          * @return 结果set集合
          */
    -     Set getRangeForZSet(RedisKeyWrap RedisKeyWrap, long start, long end, Class clazz);
    +     Set getRangeForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end, Class clazz);
     
         /**
          * 反转获取有序列表中范围条目,并转为指定类型
          *
    -     * @param RedisKeyWrap   key
    +     * @param redisKeyWrap   key
          * @param start 开始下标 从0开始
          * @param end   结束下标 包含此条
          * @param clazz 序列化类型
          * @param    泛型参数
          * @return 结果set集合
          */
    -     Set getReverseRangeForZSet(RedisKeyWrap RedisKeyWrap, long start, long end, Class clazz);
    +     Set getReverseRangeForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end, Class clazz);
     
         /**
          * 删除zSet条目
          *
    -     * @param RedisKeyWrap   key
    +     * @param redisKeyWrap   key
          * @param value 数据
          * @return 影响条目
          */
    -    Long delForZSet(RedisKeyWrap RedisKeyWrap, Object value);
    +    Long delForSortedSet(RedisKeyWrap redisKeyWrap, Object value);
     
         /**
          * 批量删除zSet条目
          *
    -     * @param RedisKeyWrap             key
    +     * @param redisKeyWrap             key
          * @param valueCollection 数据
          * @return 影响条目
          */
    -    Long delForZSet(RedisKeyWrap RedisKeyWrap, Collection valueCollection);
    +    Long delForSortedSet(RedisKeyWrap redisKeyWrap, Collection valueCollection);
     
         /**
          * 删除范围元素
          *
    -     * @param RedisKeyWrap   key
    +     * @param redisKeyWrap   key
          * @param start 开始range
          * @param end   结束range
          * @return 影响条目
          */
    -    Long delRangeForZSet(RedisKeyWrap RedisKeyWrap, long start, long end);
    +    Long delRangeForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end);
     
     
         /**
          * 增加元素的score值,并返回增加后的值
          *
    -     * @param RedisKeyWrap
    -     * @param value
    -     * @param delta
    -     * @return
    +     * @param redisKeyWrap key
    +     * @param value 对象
    +     * @param delta 值
    +     * @return 结果
          */
    -    Double incrementScoreForZSet(RedisKeyWrap RedisKeyWrap, Object value, double delta);
    +    Double incrementScoreForSortedSet(RedisKeyWrap redisKeyWrap, Object value, double delta);
     
     
     
         /**
          * 计算zSet总条数
          *
    -     * @param RedisKeyWrap key
    +     * @param redisKeyWrap key
          * @return 总条数  不存在则空
          */
    -    Long sizeForZSet(RedisKeyWrap RedisKeyWrap);
    +    Long sizeForSortedSet(RedisKeyWrap redisKeyWrap);
     
         /**
          * 返回元素在集合的排名,有序集合是按照元素的score值由小到大排列
          *
    -     * @param RedisKeyWrap   key
    +     * @param redisKeyWrap   key
          * @param value value
          * @return rank
          */
    -    Long rankForZSet(RedisKeyWrap RedisKeyWrap, Object value);
    +    Long rankForSortedSet(RedisKeyWrap redisKeyWrap, Object value);
     
         /**
          * 返回元素在集合的排名,按元素的score值由大到小排列
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param value
          * @return
          */
    -    Long reverseRankForZSet(RedisKeyWrap RedisKeyWrap, Object value);
    +    Long reverseRankForSortedSet(RedisKeyWrap redisKeyWrap, Object value);
     
     
         /**
          * 获取集合元素, 并且把score值也获取
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param start
          * @param end
          * @param clazz
          * @return
          */
    -     Set> rangeWithScoreForZSet(RedisKeyWrap RedisKeyWrap, long start, long end, Class clazz);
    +     Set> rangeWithScoreForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end, Class clazz);
     
     
         /**
          * 根据Score值查询集合元素
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param min
          *            最小值
          * @param max
    @@ -1093,12 +1093,12 @@ public interface RedisCache {
          * @param clazz
          * @return
          */
    -     Set rangeByScoreForZSet(RedisKeyWrap RedisKeyWrap, double min, double max, Class clazz);
    +     Set rangeByScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max, Class clazz);
     
         /**
          * 根据Score值查询集合元素(含有score值), 从小到大排序
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param min
          *            最小值
          * @param max
    @@ -1106,13 +1106,13 @@ public interface RedisCache {
          * @param clazz
          * @return
          */
    -     Set> rangeByScoreWithScoreForZSet(RedisKeyWrap RedisKeyWrap, double min, double max, Class clazz);
    +     Set> rangeByScoreWithScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max, Class clazz);
     
     
         /**
          * 根据Score值查询集合元素, 从小到大排序
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param min
          *            最小值
          * @param max
    @@ -1122,46 +1122,46 @@ public interface RedisCache {
          * @param clazz
          * @return
          */
    -     Set> rangeByScoreWithScoreForZSet(RedisKeyWrap RedisKeyWrap, double min, double max,
    -                                                                       long start, long end, Class clazz);
    +     Set> rangeByScoreWithScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max,
    +                                                                            long start, long end, Class clazz);
     
         /**
          * 获取集合的元素, 从大到小排序, 并返回score值
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param start
          * @param end
          * @param clazz
          * @return
          */
    -     Set> reverseRangeWithScoreForZSet(RedisKeyWrap RedisKeyWrap, long start, long end, Class clazz);
    +     Set> reverseRangeWithScoreForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end, Class clazz);
     
         /**
          * 根据Score值查询集合元素, 从大到小排序
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param min
          * @param max
          * @param clazz
          * @return
          */
    -     Set reverseRangeByScoreForZSet(RedisKeyWrap RedisKeyWrap, double min, double max, Class clazz);
    +     Set reverseRangeByScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max, Class clazz);
     
         /**
          * 根据Score值查询集合元素, 从大到小排序, 并返回score值
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param min
          * @param max
          * @param clazz
          * @return
          */
    -     Set> reverseRangeByScoreWithScoreForZSet(RedisKeyWrap RedisKeyWrap, double min, double max, Class clazz);
    +     Set> reverseRangeByScoreWithScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max, Class clazz);
     
         /**
          * 根据Score值查询集合元素, 从大到小排序
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param min
          * @param max
          * @param start
    @@ -1169,109 +1169,109 @@ public interface RedisCache {
          * @param clazz
          * @return
          */
    -     Set reverseRangeByScoreForZSet(RedisKeyWrap RedisKeyWrap, double min, double max, long start, long end, Class clazz);
    +     Set reverseRangeByScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max, long start, long end, Class clazz);
     
         /**
          * 根据score值获取集合元素数量
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param min
          * @param max
          * @return
          */
    -    Long countForZSet(RedisKeyWrap RedisKeyWrap, double min, double max);
    +    Long countForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max);
     
         /**
          * 获取集合大小
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @return
          */
    -    Long zCardForZSet(RedisKeyWrap RedisKeyWrap);
    +    Long zCardForSortedSet(RedisKeyWrap redisKeyWrap);
     
         /**
          * 获取集合中value元素的score值
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param value
          * @return
          */
    -    Double scoreByValueForZSet(RedisKeyWrap RedisKeyWrap, Object value);
    +    Double scoreByValueForSortedSet(RedisKeyWrap redisKeyWrap, Object value);
     
         /**
          * 移除指定索引位置的成员
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param start
          * @param end
          * @return
          */
    -    Long removeRangeForZSet(RedisKeyWrap RedisKeyWrap, long start, long end);
    +    Long removeRangeForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end);
     
         /**
          * 根据指定的score值的范围来移除成员
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param min
          * @param max
          * @return
          */
    -    Long removeRangeByScoreForZSet(RedisKeyWrap RedisKeyWrap, double min, double max);
    +    Long removeRangeByScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max);
     
         /**
          * 获取key和otherKey的并集并存储在destKey中
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param otherRedisKeyWrap
          * @param destRedisKeyWrap
          * @return
          */
    -    Long unionAndStoreForZSet(RedisKeyWrap RedisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap);
    +    Long unionAndStoreForSortedSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap);
     
         /**
          * 获取key和otherKeys的并集并存储在destKey中
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param otherRedisKeyWraps
          * @param destRedisKeyWrap
          * @return
          */
    -    Long unionAndStoreForZSet(RedisKeyWrap RedisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap);
    +    Long unionAndStoreForSortedSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap);
     
         /**
          * 获取key和otherKey的交集并存储在destKey中
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param otherRedisKeyWrap
          * @param destRedisKeyWrap
          * @return
          */
    -    Long intersectAndStoreForZSet(RedisKeyWrap RedisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap);
    +    Long intersectAndStoreForSortedSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap);
     
         /**
          * 获取key和otherKeys的交集并存储在destKey中
          *
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param otherRedisKeyWraps
          * @param destRedisKeyWrap
          * @return
          */
    -    Long intersectAndStoreForZSet(RedisKeyWrap RedisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap);
    +    Long intersectAndStoreForSortedSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap);
     
         /**
          * 游标遍历
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param options
          * @return
          */
    -    Cursor> scanForZSet(RedisKeyWrap RedisKeyWrap, ScanOptions options);
    +    Cursor> scanForSortedSet(RedisKeyWrap redisKeyWrap, ScanOptions options);
     
         /**
          * 不对外使用
    -     * @param RedisKeyWrap
    +     * @param redisKeyWrap
          * @param genericReturnType
          * @return
          */
    -     T getByType(RedisKeyWrap RedisKeyWrap, Type genericReturnType);
    +     T getByType(RedisKeyWrap redisKeyWrap, Type genericReturnType);
         /**
          * 获取实例
          *
    diff --git a/damai-redis-framework/src/main/java/com/damai/redis/RedisCacheImpl.java b/damai-redis-framework/src/main/java/com/damai/redis/RedisCacheImpl.java
    index a4a4e852..f0f89c6d 100644
    --- a/damai-redis-framework/src/main/java/com/damai/redis/RedisCacheImpl.java
    +++ b/damai-redis-framework/src/main/java/com/damai/redis/RedisCacheImpl.java
    @@ -35,9 +35,9 @@ public class RedisCacheImpl implements RedisCache {
         private StringRedisTemplate redisTemplate;
     
         @Override
    -    public  T get(RedisKeyWrap RedisKeyWrap, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  T get(RedisKeyWrap redisKeyWrap, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             // 如果取String类型 则直接取出返回
             String cachedValue = redisTemplate.opsForValue().get(key);
             if (String.class.isAssignableFrom(clazz)) {
    @@ -47,29 +47,29 @@ public class RedisCacheImpl implements RedisCache {
         }
         
         @Override
    -    public  T get(RedisKeyWrap RedisKeyWrap, Class clazz, Supplier supplier,long ttl, TimeUnit timeUnit) {
    -        T t = get(RedisKeyWrap, clazz);
    +    public  T get(RedisKeyWrap redisKeyWrap, Class clazz, Supplier supplier,long ttl, TimeUnit timeUnit) {
    +        T t = get(redisKeyWrap, clazz);
             if (CacheUtil.isEmpty(t)) {
                 t = supplier.get();
                 if (CacheUtil.isEmpty(t)) {
                     return null;
                 }
    -            set(RedisKeyWrap,t,ttl,timeUnit);
    +            set(redisKeyWrap,t,ttl,timeUnit);
             }
             return t;
         }
     
         @Override
    -    public String getRange(RedisKeyWrap RedisKeyWrap, long start, long end) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public String getRange(RedisKeyWrap redisKeyWrap, long start, long end) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.opsForValue().get(key, start, end);
         };
     
         @Override
    -    public  List getValueIsList(RedisKeyWrap RedisKeyWrap, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  List getValueIsList(RedisKeyWrap redisKeyWrap, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             String valueStr = redisTemplate.opsForValue().get(key);
             if (StringUtil.isEmpty(valueStr)) {
                 return new ArrayList<>();
    @@ -78,9 +78,9 @@ public class RedisCacheImpl implements RedisCache {
         }
         
         @Override
    -    public  List getValueIsList(RedisKeyWrap RedisKeyWrap, Class clazz, Supplier> supplier,long ttl, TimeUnit timeUnit) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  List getValueIsList(RedisKeyWrap redisKeyWrap, Class clazz, Supplier> supplier,long ttl, TimeUnit timeUnit) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             String valueStr = redisTemplate.opsForValue().get(key);
             List tList = null;
             if (CacheUtil.isEmpty(valueStr)) {
    @@ -88,7 +88,7 @@ public class RedisCacheImpl implements RedisCache {
                 if (CacheUtil.isEmpty(tList)) {
                     return null;
                 }
    -            set(RedisKeyWrap,tList,ttl,timeUnit);
    +            set(redisKeyWrap,tList,ttl,timeUnit);
             }
             return tList;
         }
    @@ -102,16 +102,16 @@ public class RedisCacheImpl implements RedisCache {
         }
     
         @Override
    -    public Boolean hasKey(RedisKeyWrap RedisKeyWrap) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Boolean hasKey(RedisKeyWrap redisKeyWrap) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.hasKey(key);
         }
     
         @Override
    -    public Long getExpire(RedisKeyWrap RedisKeyWrap) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Long getExpire(RedisKeyWrap redisKeyWrap) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.getExpire(key);
         }
     
    @@ -121,16 +121,16 @@ public class RedisCacheImpl implements RedisCache {
         }
     
         @Override
    -    public Boolean move(RedisKeyWrap RedisKeyWrap, int dbIndex) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Boolean move(RedisKeyWrap redisKeyWrap, int dbIndex) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.move(key, dbIndex);
         }
     
         @Override
    -    public Boolean persist(RedisKeyWrap RedisKeyWrap) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Boolean persist(RedisKeyWrap redisKeyWrap) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.persist(key);
         }
     
    @@ -154,45 +154,45 @@ public class RedisCacheImpl implements RedisCache {
         }
     
         @Override
    -    public DataType type(RedisKeyWrap RedisKeyWrap) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public DataType type(RedisKeyWrap redisKeyWrap) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.type(key);
         }
         
         @Override
    -    public void set(RedisKeyWrap RedisKeyWrap, Object object) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public void set(RedisKeyWrap redisKeyWrap, Object object) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             String json = object instanceof String ? (String) object : JSON.toJSONString(object);
             redisTemplate.opsForValue().set(key, json);
         }
     
         @Override
    -    public void set(RedisKeyWrap RedisKeyWrap, Object object, long ttl) {
    -        set(RedisKeyWrap, object, ttl, CacheUtil.DEFAULT_TIME_UNIT);
    +    public void set(RedisKeyWrap redisKeyWrap, Object object, long ttl) {
    +        set(redisKeyWrap, object, ttl, CacheUtil.DEFAULT_TIME_UNIT);
         }
     
         @Override
    -    public void set(RedisKeyWrap RedisKeyWrap, Object object, long ttl, TimeUnit timeUnit) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public void set(RedisKeyWrap redisKeyWrap, Object object, long ttl, TimeUnit timeUnit) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             String json = object instanceof String ? (String) object : JSON.toJSONString(object);
             redisTemplate.opsForValue().set(key, json, ttl, timeUnit);
         }
     
         @Override
    -    public boolean setIfAbsent(RedisKeyWrap RedisKeyWrap, Object object) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public boolean setIfAbsent(RedisKeyWrap redisKeyWrap, Object object) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             String json = object instanceof String ? (String) object : JSON.toJSONString(object);
             return redisTemplate.opsForValue().setIfAbsent(key, json);
         }
     
         @Override
    -    public Long size(RedisKeyWrap RedisKeyWrap) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Long size(RedisKeyWrap redisKeyWrap) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.opsForValue().size(key);
         }
     
    @@ -219,50 +219,50 @@ public class RedisCacheImpl implements RedisCache {
         }
     
         @Override
    -    public Long incrBy(RedisKeyWrap RedisKeyWrap, long increment) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Long incrBy(RedisKeyWrap redisKeyWrap, long increment) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.opsForValue().increment(key, increment);
         }
     
         @Override
    -    public Double incrByDouble(RedisKeyWrap RedisKeyWrap, double increment) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Double incrByDouble(RedisKeyWrap redisKeyWrap, double increment) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.opsForValue().increment(key, increment);
         }
     
         @Override
    -    public Integer append(RedisKeyWrap RedisKeyWrap, String value) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Integer append(RedisKeyWrap redisKeyWrap, String value) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.opsForValue().append(key, value);
         }
     
         @Override
    -    public void putHash(RedisKeyWrap RedisKeyWrap, String hashKey, Object value) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public void putHash(RedisKeyWrap redisKeyWrap, String hashKey, Object value) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
             redisTemplate.opsForHash().put(key, hashKey, jsonValue);
         }
     
         @Override
    -    public void putHash(RedisKeyWrap RedisKeyWrap, String hashKey, Object value, long ttl) {
    -        putHash(RedisKeyWrap, hashKey, value, ttl, CacheUtil.DEFAULT_TIME_UNIT);
    +    public void putHash(RedisKeyWrap redisKeyWrap, String hashKey, Object value, long ttl) {
    +        putHash(redisKeyWrap, hashKey, value, ttl, CacheUtil.DEFAULT_TIME_UNIT);
         }
     
         @Override
    -    public void putHash(RedisKeyWrap RedisKeyWrap, String hashKey, Object value, long ttl, TimeUnit timeUnit) {
    -        putHash(RedisKeyWrap, hashKey, value);
    +    public void putHash(RedisKeyWrap redisKeyWrap, String hashKey, Object value, long ttl, TimeUnit timeUnit) {
    +        putHash(redisKeyWrap, hashKey, value);
             // 设置过期时间
    -        expire(RedisKeyWrap, ttl, timeUnit);
    +        expire(redisKeyWrap, ttl, timeUnit);
         }
     
         @Override
    -    public void putHash(RedisKeyWrap RedisKeyWrap, Map map) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public void putHash(RedisKeyWrap redisKeyWrap, Map map) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             Map mapForSave = new HashMap<>(map.size());
             map.forEach((hashKey, val) -> {
                 String jsonValue = val instanceof String ? (String) val : JSON.toJSONString(val);
    @@ -272,30 +272,30 @@ public class RedisCacheImpl implements RedisCache {
         }
     
         @Override
    -    public void putHash(RedisKeyWrap RedisKeyWrap, Map map, long ttl) {
    -        putHash(RedisKeyWrap, map, ttl, CacheUtil.DEFAULT_TIME_UNIT);
    +    public void putHash(RedisKeyWrap redisKeyWrap, Map map, long ttl) {
    +        putHash(redisKeyWrap, map, ttl, CacheUtil.DEFAULT_TIME_UNIT);
         }
     
         @Override
    -    public void putHash(RedisKeyWrap RedisKeyWrap, Map map, long ttl, TimeUnit timeUnit) {
    -        putHash(RedisKeyWrap, map);
    -        expire(RedisKeyWrap, ttl, timeUnit);
    +    public void putHash(RedisKeyWrap redisKeyWrap, Map map, long ttl, TimeUnit timeUnit) {
    +        putHash(redisKeyWrap, map);
    +        expire(redisKeyWrap, ttl, timeUnit);
         }
     
         @Override
    -    public Boolean putHashIfAbsent(RedisKeyWrap RedisKeyWrap, String hashKey, Object value){
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Boolean putHashIfAbsent(RedisKeyWrap redisKeyWrap, String hashKey, Object value){
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotBlank(hashKey);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
             return redisTemplate.opsForHash().putIfAbsent(key, hashKey, jsonValue);
         }
     
         @Override
    -    public  T getForHash(RedisKeyWrap RedisKeyWrap, String hashKey, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public  T getForHash(RedisKeyWrap redisKeyWrap, String hashKey, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotBlank(hashKey);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             Object o = redisTemplate.opsForHash().get(key, hashKey);
             // 如果取String类型 则直接取出返回
             if (String.class.isAssignableFrom(clazz)) {
    @@ -305,10 +305,10 @@ public class RedisCacheImpl implements RedisCache {
         }
     
         @Override
    -    public  List getValueIsListForHash(RedisKeyWrap RedisKeyWrap, String hashKey, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public  List getValueIsListForHash(RedisKeyWrap redisKeyWrap, String hashKey, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotBlank(hashKey);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             Object o = redisTemplate.opsForHash().get(key,hashKey);
             if (o == null) {
                 return new ArrayList<>();
    @@ -321,10 +321,10 @@ public class RedisCacheImpl implements RedisCache {
         }
     
         @Override
    -    public  List multiGetForHash(RedisKeyWrap RedisKeyWrap, List hashKeys, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public  List multiGetForHash(RedisKeyWrap redisKeyWrap, List hashKeys, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotBlank(hashKeys);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             List objHashKeys = new ArrayList<>();
             objHashKeys.addAll(hashKeys);
             List multiGetObj = redisTemplate.opsForHash().multiGet(key, objHashKeys);
    @@ -336,9 +336,9 @@ public class RedisCacheImpl implements RedisCache {
         }
     
         @Override
    -    public  List getAllForHash(RedisKeyWrap RedisKeyWrap, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  List getAllForHash(RedisKeyWrap redisKeyWrap, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             List valuesObj = redisTemplate.opsForHash().values(key);
             if (String.class.isAssignableFrom(clazz)) {
                 return (List) valuesObj;
    @@ -348,11 +348,11 @@ public class RedisCacheImpl implements RedisCache {
         }
         
         @Override
    -    public  Map getAllMapForHash(RedisKeyWrap RedisKeyWrap, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  Map getAllMapForHash(RedisKeyWrap redisKeyWrap, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             Map entries = redisTemplate.opsForHash().entries(key);
    -        Map map = new HashMap<>();
    +        Map map = new HashMap<>(64);
             entries.forEach((k,v) -> {
                 map.put(String.valueOf(k),getComplex(v, clazz));
             });
    @@ -360,9 +360,9 @@ public class RedisCacheImpl implements RedisCache {
         }
     
         @Override
    -    public  T indexForList(RedisKeyWrap RedisKeyWrap, long index, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  T indexForList(RedisKeyWrap redisKeyWrap, long index, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             String cachedValue = redisTemplate.opsForList().index(key, index);
             if (StringUtil.isEmpty(cachedValue)) {
                 return null;
    @@ -374,19 +374,19 @@ public class RedisCacheImpl implements RedisCache {
         }
     
         @Override
    -    public Long leftPushForList(RedisKeyWrap RedisKeyWrap, Object value) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long leftPushForList(RedisKeyWrap redisKeyWrap, Object value) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(value);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
             return redisTemplate.opsForList().leftPush(key, jsonValue);
         }
     
         @Override
    -    public Long leftPushAllForList(RedisKeyWrap RedisKeyWrap, List valueList){
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long leftPushAllForList(RedisKeyWrap redisKeyWrap, List valueList){
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(valueList);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             List jsonList = new ArrayList<>(valueList.size());
             valueList.forEach(value -> {
                 String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
    @@ -396,39 +396,39 @@ public class RedisCacheImpl implements RedisCache {
         }
     
         @Override
    -    public Long leftPushIfPresentForList(RedisKeyWrap RedisKeyWrap, Object value){
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long leftPushIfPresentForList(RedisKeyWrap redisKeyWrap, Object value){
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(value);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
             return redisTemplate.opsForList().leftPushIfPresent(key, jsonValue);
         }
     
         @Override
    -    public Long leftPushForList(RedisKeyWrap RedisKeyWrap, Object pivot, Object value){
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long leftPushForList(RedisKeyWrap redisKeyWrap, Object pivot, Object value){
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(pivot);
             CacheUtil.checkNotEmpty(value);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String jsonPivot = value instanceof String ? (String) pivot : JSON.toJSONString(pivot);
             String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
             return redisTemplate.opsForList().leftPush(key, jsonPivot, jsonValue);
         }
     
         @Override
    -    public Long rightPushForList(RedisKeyWrap RedisKeyWrap, Object value) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long rightPushForList(RedisKeyWrap redisKeyWrap, Object value) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(value);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
             return redisTemplate.opsForList().rightPush(key, jsonValue);
         }
     
         @Override
    -    public Long rightPushAllForList(RedisKeyWrap RedisKeyWrap, List valueList){
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long rightPushAllForList(RedisKeyWrap redisKeyWrap, List valueList){
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(valueList);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             List jsonList = new ArrayList<>(valueList.size());
             valueList.forEach(value -> {
                 String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
    @@ -438,62 +438,62 @@ public class RedisCacheImpl implements RedisCache {
         }
     
         @Override
    -    public Long rightPushIfPresentForList(RedisKeyWrap RedisKeyWrap, Object value){
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long rightPushIfPresentForList(RedisKeyWrap redisKeyWrap, Object value){
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(value);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
             return redisTemplate.opsForList().rightPushIfPresent(key, jsonValue);
         }
     
         @Override
    -    public Long rightPushForList(RedisKeyWrap RedisKeyWrap, Object pivot, Object value){
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long rightPushForList(RedisKeyWrap redisKeyWrap, Object pivot, Object value){
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(pivot);
             CacheUtil.checkNotEmpty(value);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String jsonPivot = value instanceof String ? (String) pivot : JSON.toJSONString(pivot);
             String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
             return redisTemplate.opsForList().rightPush(key, jsonPivot, jsonValue);
         }
     
         @Override
    -    public void setForList(RedisKeyWrap RedisKeyWrap, long index, Object value) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public void setForList(RedisKeyWrap redisKeyWrap, long index, Object value) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(value);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
             redisTemplate.opsForList().set(key, index, jsonValue);
         }
     
         @Override
    -    public  T leftPopForList(RedisKeyWrap RedisKeyWrap, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  T leftPopForList(RedisKeyWrap redisKeyWrap, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             String s = redisTemplate.opsForList().leftPop(key);
             return getComplex(s, clazz);
         }
     
         @Override
    -    public  T leftPopBlockForList(RedisKeyWrap RedisKeyWrap, Class clazz, long timeout, TimeUnit unit) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  T leftPopBlockForList(RedisKeyWrap redisKeyWrap, Class clazz, long timeout, TimeUnit unit) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             String s = redisTemplate.opsForList().leftPop(key, timeout, unit);
             return getComplex(s, clazz);
         }
     
         @Override
    -    public  T rightPopForList(RedisKeyWrap RedisKeyWrap, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  T rightPopForList(RedisKeyWrap redisKeyWrap, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             String s = redisTemplate.opsForList().rightPop(key);
             return getComplex(s, clazz);
         }
     
         @Override
    -    public  T rightPopBlockForList(RedisKeyWrap RedisKeyWrap, Class clazz, long timeout, TimeUnit unit) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  T rightPopBlockForList(RedisKeyWrap redisKeyWrap, Class clazz, long timeout, TimeUnit unit) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             String s = redisTemplate.opsForList().rightPop(key, timeout, unit);
             return getComplex(s, clazz);
         }
    @@ -519,103 +519,103 @@ public class RedisCacheImpl implements RedisCache {
         }
     
         @Override
    -    public  List getAllForList(RedisKeyWrap RedisKeyWrap, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  List getAllForList(RedisKeyWrap redisKeyWrap, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             List list = redisTemplate.opsForList().range(key, 0, -1);
             return parseObjects(list, clazz);
         }
     
         @Override
    -    public  List rangeForList(RedisKeyWrap RedisKeyWrap, long start, long end, Class clazz){
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  List rangeForList(RedisKeyWrap redisKeyWrap, long start, long end, Class clazz){
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             List range = redisTemplate.opsForList().range(key, start, end);
             return parseObjects(range, clazz);
         }
     
         @Override
    -    public Long removeForList(RedisKeyWrap RedisKeyWrap, long index, Object value) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Long removeForList(RedisKeyWrap redisKeyWrap, long index, Object value) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
             return redisTemplate.opsForList().remove(key, index, jsonValue);
         }
     
         @Override
    -    public void trimForList(RedisKeyWrap RedisKeyWrap, long start, long end) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public void trimForList(RedisKeyWrap redisKeyWrap, long start, long end) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             redisTemplate.opsForList().trim(key, start, end);
         }
     
         @Override
    -    public Long lenForList(RedisKeyWrap RedisKeyWrap) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Long lenForList(RedisKeyWrap redisKeyWrap) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.opsForList().size(key);
         }
     
         @Override
    -    public Boolean hasKeyForHash(RedisKeyWrap RedisKeyWrap, String hashKey) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Boolean hasKeyForHash(RedisKeyWrap redisKeyWrap, String hashKey) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotBlank(hashKey);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.opsForHash().hasKey(key, hashKey);
         }
     
         @Override
    -    public void del(RedisKeyWrap RedisKeyWrap) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public void del(RedisKeyWrap redisKeyWrap) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             redisTemplate.delete(key);
         }
         
     
         @Override
    -    public Long delForHash(RedisKeyWrap RedisKeyWrap, String hashKey) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long delForHash(RedisKeyWrap redisKeyWrap, String hashKey) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotBlank(hashKey);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.opsForHash().delete(key, hashKey);
         }
     
         @Override
    -    public Long delForHash(RedisKeyWrap RedisKeyWrap, Collection hashKeys) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long delForHash(RedisKeyWrap redisKeyWrap, Collection hashKeys) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotBlank(hashKeys);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.opsForHash().delete(key, hashKeys.toArray());
         }
     
         @Override
    -    public Long incrByForHash(RedisKeyWrap RedisKeyWrap, String hashKey, long increment) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long incrByForHash(RedisKeyWrap redisKeyWrap, String hashKey, long increment) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotBlank(hashKey);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.opsForHash().increment(key, hashKey, increment);
         }
     
         @Override
    -    public Double incrByDoubleForHash(RedisKeyWrap RedisKeyWrap, String hashKey, double delta){
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Double incrByDoubleForHash(RedisKeyWrap redisKeyWrap, String hashKey, double delta){
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotBlank(hashKey);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.opsForHash().increment(key, hashKey, delta);
         }
     
         @Override
    -    public Set hashKeysForHash(RedisKeyWrap RedisKeyWrap) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Set hashKeysForHash(RedisKeyWrap redisKeyWrap) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             Set keys = redisTemplate.opsForHash().keys(key);
             return parseObjects(keys,String.class);
         }
     
         @Override
    -    public Long sizeForHash(RedisKeyWrap RedisKeyWrap){
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Long sizeForHash(RedisKeyWrap redisKeyWrap){
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.opsForHash().size(key);
         }
     
    @@ -627,25 +627,25 @@ public class RedisCacheImpl implements RedisCache {
         }
     
         @Override
    -    public Boolean expire(RedisKeyWrap RedisKeyWrap, long ttl, TimeUnit timeUnit) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Boolean expire(RedisKeyWrap redisKeyWrap, long ttl, TimeUnit timeUnit) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.expire(key, ttl, timeUnit);
         }
     
         @Override
    -    public Long addForSet(RedisKeyWrap RedisKeyWrap, Object value) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Long addForSet(RedisKeyWrap redisKeyWrap, Object value) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
             return redisTemplate.opsForSet().add(key, jsonValue);
         }
     
         @Override
    -    public Long addForSet(RedisKeyWrap RedisKeyWrap, List values) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long addForSet(RedisKeyWrap redisKeyWrap, List values) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(values);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             List jsonList = new ArrayList<>(values.size());
             values.forEach(value -> {
                 String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
    @@ -655,19 +655,19 @@ public class RedisCacheImpl implements RedisCache {
         }
     
         @Override
    -    public Long removeForSet(RedisKeyWrap RedisKeyWrap, Object value) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long removeForSet(RedisKeyWrap redisKeyWrap, Object value) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(value);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
             return redisTemplate.opsForSet().remove(key, jsonValue);
         }
     
         @Override
    -    public Long removeForSet(RedisKeyWrap RedisKeyWrap, List values) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long removeForSet(RedisKeyWrap redisKeyWrap, List values) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(values);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             List jsonList = values.stream()
                     .map(value -> value instanceof String ? (String) value : JSON.toJSONString(value))
                     .collect(Collectors.toList());
    @@ -675,231 +675,231 @@ public class RedisCacheImpl implements RedisCache {
         }
     
         @Override
    -    public  T popForSet(RedisKeyWrap RedisKeyWrap, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  T popForSet(RedisKeyWrap redisKeyWrap, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             String cachedValue = redisTemplate.opsForSet().pop(key);
             return getComplex(cachedValue,clazz);
         }
     
         @Override
    -    public boolean moveForSet(RedisKeyWrap RedisKeyWrap, Object value, RedisKeyWrap destRedisKeyWrap) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public boolean moveForSet(RedisKeyWrap redisKeyWrap, Object value, RedisKeyWrap destRedisKeyWrap) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(value);
             CacheUtil.checkNotBlank(destRedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String destKey = destRedisKeyWrap.getRelKey();
             String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
             return redisTemplate.opsForSet().move(key, jsonValue, destKey);
         }
     
         @Override
    -    public Long sizeForSet(RedisKeyWrap RedisKeyWrap) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Long sizeForSet(RedisKeyWrap redisKeyWrap) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.opsForSet().size(key);
         }
     
         @Override
    -    public Boolean isMemberForSet(RedisKeyWrap RedisKeyWrap, Object value) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Boolean isMemberForSet(RedisKeyWrap redisKeyWrap, Object value) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(value);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
             return redisTemplate.opsForSet().isMember(key, jsonValue);
         }
     
         @Override
    -    public  Set intersectForSet(RedisKeyWrap RedisKeyWrap, RedisKeyWrap otherRedisKeyWrap, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public  Set intersectForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotBlank(otherRedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String otherKey = otherRedisKeyWrap.getRelKey();
             Set set = redisTemplate.opsForSet().intersect(key, otherKey);
             return parseObjects(set,clazz);
         }
     
         @Override
    -    public  Set intersectForSet(RedisKeyWrap RedisKeyWrap, Collection otherRedisKeyWraps, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public  Set intersectForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(otherRedisKeyWraps);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             List otherKeys = CacheUtil.getBatchKey(otherRedisKeyWraps);
             Set set = redisTemplate.opsForSet().intersect(key, otherKeys);
             return parseObjects(set,clazz);
         }
     
         @Override
    -    public Long intersectAndStoreForSet(RedisKeyWrap RedisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long intersectAndStoreForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotBlank(otherRedisKeyWrap);
             CacheUtil.checkNotBlank(destRedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String otherKey = otherRedisKeyWrap.getRelKey();
             String destKey = destRedisKeyWrap.getRelKey();
             return redisTemplate.opsForSet().intersectAndStore(key, otherKey, destKey);
         }
     
         @Override
    -    public Long intersectAndStoreForSet(RedisKeyWrap RedisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long intersectAndStoreForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(otherRedisKeyWraps);
             CacheUtil.checkNotBlank(destRedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             List otherKeys = CacheUtil.getBatchKey(otherRedisKeyWraps);
             String destKey = destRedisKeyWrap.getRelKey();
             return redisTemplate.opsForSet().intersectAndStore(key, otherKeys, destKey);
         }
     
         @Override
    -    public  Set unionForSet(RedisKeyWrap RedisKeyWrap, RedisKeyWrap otherRedisKeyWrap, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public  Set unionForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotBlank(otherRedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String otherKey = otherRedisKeyWrap.getRelKey();
             Set set = redisTemplate.opsForSet().union(key, otherKey);
             return parseObjects(set,clazz);
         }
     
         @Override
    -    public  Set unionForSet(RedisKeyWrap RedisKeyWrap, Collection otherRedisKeyWraps, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public  Set unionForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(otherRedisKeyWraps);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             List otherKeys = CacheUtil.getBatchKey(otherRedisKeyWraps);
             Set set = redisTemplate.opsForSet().union(key, otherKeys);
             return parseObjects(set,clazz);
         }
     
         @Override
    -    public Long unionAndStoreForSet(RedisKeyWrap RedisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long unionAndStoreForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotBlank(otherRedisKeyWrap);
             CacheUtil.checkNotBlank(destRedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String otherKey = otherRedisKeyWrap.getRelKey();
             String destKey = destRedisKeyWrap.getRelKey();
             return redisTemplate.opsForSet().unionAndStore(key, otherKey, destKey);
         }
     
         @Override
    -    public Long unionAndStoreForSet(RedisKeyWrap RedisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long unionAndStoreForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(otherRedisKeyWraps);
             CacheUtil.checkNotBlank(destRedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             List otherKeys = CacheUtil.getBatchKey(otherRedisKeyWraps);
             String destKey = destRedisKeyWrap.getRelKey();
             return redisTemplate.opsForSet().unionAndStore(key, otherKeys, destKey);
         }
     
         @Override
    -    public  Set differenceForSet(RedisKeyWrap RedisKeyWrap, RedisKeyWrap otherRedisKeyWrap, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public  Set differenceForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotBlank(otherRedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String otherKey = otherRedisKeyWrap.getRelKey();
             Set set = redisTemplate.opsForSet().difference(key, otherKey);
             return parseObjects(set,clazz);
         }
     
         @Override
    -    public  Set differenceForSet(RedisKeyWrap RedisKeyWrap, Collection otherRedisKeyWraps, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public  Set differenceForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(otherRedisKeyWraps);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             List otherKeys = CacheUtil.getBatchKey(otherRedisKeyWraps);
             Set set = redisTemplate.opsForSet().difference(key, otherKeys);
             return parseObjects(set,clazz);
         }
     
         @Override
    -    public Long differenceForSet(RedisKeyWrap RedisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long differenceForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotBlank(otherRedisKeyWrap);
             CacheUtil.checkNotBlank(destRedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String otherKey = otherRedisKeyWrap.getRelKey();
             String destKey = destRedisKeyWrap.getRelKey();
             return redisTemplate.opsForSet().differenceAndStore(key, otherKey, destKey);
         }
     
         @Override
    -    public Long differenceForSet(RedisKeyWrap RedisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long differenceForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(otherRedisKeyWraps);
             CacheUtil.checkNotBlank(destRedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             List otherKeys = CacheUtil.getBatchKey(otherRedisKeyWraps);
             String destKey = destRedisKeyWrap.getRelKey();
             return redisTemplate.opsForSet().differenceAndStore(key, otherKeys, destKey);
         }
     
         @Override
    -    public  Set membersForSet(RedisKeyWrap RedisKeyWrap, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  Set membersForSet(RedisKeyWrap redisKeyWrap, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             Set members = redisTemplate.opsForSet().members(key);
             return parseObjects(members,clazz);
         }
     
         @Override
    -    public  T randomMemberForSet(RedisKeyWrap RedisKeyWrap, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  T randomMemberForSet(RedisKeyWrap redisKeyWrap, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             String s = redisTemplate.opsForSet().randomMember(key);
             return getComplex(s, clazz);
         }
     
         @Override
    -    public  List randomMembersForSet(RedisKeyWrap RedisKeyWrap, long count, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  List randomMembersForSet(RedisKeyWrap redisKeyWrap, long count, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             List list = redisTemplate.opsForSet().randomMembers(key, count);
             return parseObjects(list,clazz);
         }
     
         @Override
    -    public  Set distinctRandomMembersForSet(RedisKeyWrap RedisKeyWrap, long count, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  Set distinctRandomMembersForSet(RedisKeyWrap redisKeyWrap, long count, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             Set set = redisTemplate.opsForSet().distinctRandomMembers(key, count);
             return parseObjects(set,clazz);
         }
     
         @Override
    -    public Cursor scanForSet(RedisKeyWrap RedisKeyWrap, ScanOptions options) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Cursor scanForSet(RedisKeyWrap redisKeyWrap, ScanOptions options) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             Cursor scan = redisTemplate.opsForSet().scan(key, options);
             return scan;
         }
     
         @Override
    -    public void addForZSet(RedisKeyWrap RedisKeyWrap, Object value, Double score){
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public void addForSortedSet(RedisKeyWrap redisKeyWrap, Object value, Double score){
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(value);
             CacheUtil.checkNotEmpty(score);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
             redisTemplate.opsForZSet().add(key,jsonValue,score);
         }
     
         @Override
    -    public void addForZSet(RedisKeyWrap RedisKeyWrap, Object value, Double score, long ttl){
    -        addForZSet(RedisKeyWrap,value,score,ttl, CacheUtil.DEFAULT_TIME_UNIT);
    +    public void addForSortedSet(RedisKeyWrap redisKeyWrap, Object value, Double score, long ttl){
    +        addForSortedSet(redisKeyWrap,value,score,ttl, CacheUtil.DEFAULT_TIME_UNIT);
         }
     
         @Override
    -    public void addForZSet(RedisKeyWrap RedisKeyWrap, Object value, Double score, long ttl, TimeUnit timeUnit){
    -        addForZSet(RedisKeyWrap,value,score);
    -        expire(RedisKeyWrap, ttl, timeUnit);
    +    public void addForSortedSet(RedisKeyWrap redisKeyWrap, Object value, Double score, long ttl, TimeUnit timeUnit){
    +        addForSortedSet(redisKeyWrap,value,score);
    +        expire(redisKeyWrap, ttl, timeUnit);
         }
     
         @Override
    -    public Long addForZSet(RedisKeyWrap RedisKeyWrap, Map map) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Long addForSortedSet(RedisKeyWrap redisKeyWrap, Map map) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             Set> collect =
                     map.entrySet()
                             .stream()
    @@ -912,46 +912,46 @@ public class RedisCacheImpl implements RedisCache {
         }
     
         @Override
    -    public Long addForZSet(RedisKeyWrap RedisKeyWrap, Map map, long ttl) {
    -        return addForZSet(RedisKeyWrap, map, ttl, CacheUtil.DEFAULT_TIME_UNIT);
    +    public Long addForSortedSet(RedisKeyWrap redisKeyWrap, Map map, long ttl) {
    +        return addForSortedSet(redisKeyWrap, map, ttl, CacheUtil.DEFAULT_TIME_UNIT);
         }
     
         @Override
    -    public Long addForZSet(RedisKeyWrap RedisKeyWrap, Map map, long ttl, TimeUnit timeUnit) {
    -        Long count = addForZSet(RedisKeyWrap, map);
    -        expire(RedisKeyWrap, ttl, timeUnit);
    +    public Long addForSortedSet(RedisKeyWrap redisKeyWrap, Map map, long ttl, TimeUnit timeUnit) {
    +        Long count = addForSortedSet(redisKeyWrap, map);
    +        expire(redisKeyWrap, ttl, timeUnit);
             return count;
         }
     
         @Override
    -    public  Set getRangeForZSet(RedisKeyWrap RedisKeyWrap, long start, long end, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  Set getRangeForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             Set resultSet = redisTemplate.opsForZSet().range(key, start, end);
             return parseObjects(resultSet,clazz);
         }
     
         @Override
    -    public  Set getReverseRangeForZSet(RedisKeyWrap RedisKeyWrap, long start, long end, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  Set getReverseRangeForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             Set resultSet = redisTemplate.opsForZSet().reverseRange(key, start, end);
             return parseObjects(resultSet,clazz);
         }
     
         @Override
    -    public Long delForZSet(RedisKeyWrap RedisKeyWrap, Object value) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Long delForSortedSet(RedisKeyWrap redisKeyWrap, Object value) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
             return redisTemplate.opsForZSet().remove(key, jsonValue);
         }
     
         @Override
    -    public Long delForZSet(RedisKeyWrap RedisKeyWrap, Collection valueCollection) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long delForSortedSet(RedisKeyWrap redisKeyWrap, Collection valueCollection) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(valueCollection);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             List jsonValueList = valueCollection.stream()
                     .map(value -> value instanceof String ? (String) value : JSON.toJSONString(value))
                     .distinct()
    @@ -960,50 +960,50 @@ public class RedisCacheImpl implements RedisCache {
         }
     
         @Override
    -    public Long delRangeForZSet(RedisKeyWrap RedisKeyWrap, long start, long end) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Long delRangeForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.opsForZSet().removeRange(key, start, end);
         }
     
         @Override
    -    public Double incrementScoreForZSet(RedisKeyWrap RedisKeyWrap, Object value, double delta) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Double incrementScoreForSortedSet(RedisKeyWrap redisKeyWrap, Object value, double delta) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(value);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
             return redisTemplate.opsForZSet().incrementScore(key, jsonValue, delta);
         }
     
         @Override
    -    public Long sizeForZSet(RedisKeyWrap RedisKeyWrap) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Long sizeForSortedSet(RedisKeyWrap redisKeyWrap) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.opsForZSet().size(key);
         }
     
         @Override
    -    public Long rankForZSet(RedisKeyWrap RedisKeyWrap, Object value) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long rankForSortedSet(RedisKeyWrap redisKeyWrap, Object value) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(value);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
             return redisTemplate.opsForZSet().rank(key, jsonValue);
         }
     
         @Override
    -    public Long reverseRankForZSet(RedisKeyWrap RedisKeyWrap, Object value) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long reverseRankForSortedSet(RedisKeyWrap redisKeyWrap, Object value) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(value);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
             return redisTemplate.opsForZSet().reverseRank(key, jsonValue);
         }
     
         @Override
    -    public  Set> rangeWithScoreForZSet(RedisKeyWrap RedisKeyWrap, long start, long end, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  Set> rangeWithScoreForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             Set> cacheSet = redisTemplate.opsForZSet().rangeWithScores(key, start, end);
             if (cacheSet == null) {
                 return new HashSet<>();
    @@ -1012,153 +1012,153 @@ public class RedisCacheImpl implements RedisCache {
         }
     
         @Override
    -    public  Set rangeByScoreForZSet(RedisKeyWrap RedisKeyWrap, double min, double max, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  Set rangeByScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             Set set = redisTemplate.opsForZSet().rangeByScore(key, min, max);
             return parseObjects(set,clazz);
         }
     
         @Override
    -    public  Set> rangeByScoreWithScoreForZSet(RedisKeyWrap RedisKeyWrap, double min, double max, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  Set> rangeByScoreWithScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             Set> cacheSet = redisTemplate.opsForZSet().rangeByScoreWithScores(key, min, max);
             return typedTupleStringParseObjects(cacheSet, clazz);
         }
     
         @Override
    -    public  Set> rangeByScoreWithScoreForZSet(RedisKeyWrap RedisKeyWrap, double min, double max,
    -                                                                              long start, long end, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  Set> rangeByScoreWithScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max,
    +                                                                                   long start, long end, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             Set> cacheSet = redisTemplate.opsForZSet().rangeByScoreWithScores(key, min, max, start, end);
             return typedTupleStringParseObjects(cacheSet, clazz);
         }
     
         @Override
    -    public  Set> reverseRangeWithScoreForZSet(RedisKeyWrap RedisKeyWrap, long start, long end, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  Set> reverseRangeWithScoreForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             Set> cacheSet = redisTemplate.opsForZSet().reverseRangeWithScores(key, start, end);
             return typedTupleStringParseObjects(cacheSet, clazz);
         }
     
         @Override
    -    public  Set reverseRangeByScoreForZSet(RedisKeyWrap RedisKeyWrap, double min, double max, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  Set reverseRangeByScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             Set set = redisTemplate.opsForZSet().reverseRangeByScore(key, min, max);
             return parseObjects(set,clazz);
         }
     
         @Override
    -    public  Set> reverseRangeByScoreWithScoreForZSet(RedisKeyWrap RedisKeyWrap, double min, double max, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  Set> reverseRangeByScoreWithScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             Set> cacheSet = redisTemplate.opsForZSet().reverseRangeByScoreWithScores(key, min, max);
             return typedTupleStringParseObjects(cacheSet, clazz);
         }
     
         @Override
    -    public  Set reverseRangeByScoreForZSet(RedisKeyWrap RedisKeyWrap, double min, double max, long start, long end, Class clazz) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public  Set reverseRangeByScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max, long start, long end, Class clazz) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             Set set = redisTemplate.opsForZSet().reverseRangeByScore(key, min, max, start, end);
             return parseObjects(set, clazz);
         }
     
         @Override
    -    public Long countForZSet(RedisKeyWrap RedisKeyWrap, double min, double max) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Long countForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.opsForZSet().count(key, min, max);
         }
     
         @Override
    -    public Long zCardForZSet(RedisKeyWrap RedisKeyWrap) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Long zCardForSortedSet(RedisKeyWrap redisKeyWrap) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.opsForZSet().zCard(key);
         }
     
         @Override
    -    public Double scoreByValueForZSet(RedisKeyWrap RedisKeyWrap, Object value) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Double scoreByValueForSortedSet(RedisKeyWrap redisKeyWrap, Object value) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(value);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value);
             return redisTemplate.opsForZSet().score(key, jsonValue);
         }
     
         @Override
    -    public Long removeRangeForZSet(RedisKeyWrap RedisKeyWrap, long start, long end) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Long removeRangeForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.opsForZSet().removeRange(key, start, end);
         }
     
         @Override
    -    public Long removeRangeByScoreForZSet(RedisKeyWrap RedisKeyWrap, double min, double max) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Long removeRangeByScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.opsForZSet().removeRangeByScore(key, min, max);
         }
     
         @Override
    -    public Long unionAndStoreForZSet(RedisKeyWrap RedisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long unionAndStoreForSortedSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotBlank(otherRedisKeyWrap);
             CacheUtil.checkNotBlank(destRedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String otherKey = otherRedisKeyWrap.getRelKey();
             String destKey = destRedisKeyWrap.getRelKey();
             return redisTemplate.opsForZSet().unionAndStore(key, otherKey, destKey);
         }
     
         @Override
    -    public Long unionAndStoreForZSet(RedisKeyWrap RedisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long unionAndStoreForSortedSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(otherRedisKeyWraps);
             CacheUtil.checkNotBlank(destRedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             List otherKeys = CacheUtil.getBatchKey(otherRedisKeyWraps);
             String destKey = destRedisKeyWrap.getRelKey();
             return redisTemplate.opsForZSet().unionAndStore(key, otherKeys, destKey);
         }
     
         @Override
    -    public Long intersectAndStoreForZSet(RedisKeyWrap RedisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long intersectAndStoreForSortedSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotBlank(otherRedisKeyWrap);
             CacheUtil.checkNotBlank(destRedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             String otherKey = otherRedisKeyWrap.getRelKey();
             String destKey = destRedisKeyWrap.getRelKey();
             return redisTemplate.opsForZSet().intersectAndStore(key, otherKey, destKey);
         }
     
         @Override
    -    public Long intersectAndStoreForZSet(RedisKeyWrap RedisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    +    public Long intersectAndStoreForSortedSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
             CacheUtil.checkNotEmpty(otherRedisKeyWraps);
             CacheUtil.checkNotBlank(destRedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +        String key = redisKeyWrap.getRelKey();
             List otherKeys = CacheUtil.getBatchKey(otherRedisKeyWraps);
             String destKey = destRedisKeyWrap.getRelKey();
             return redisTemplate.opsForZSet().intersectAndStore(key, otherKeys, destKey);
         }
     
         @Override
    -    public Cursor> scanForZSet(RedisKeyWrap RedisKeyWrap, ScanOptions options) {
    -        CacheUtil.checkNotBlank(RedisKeyWrap);
    -        String key = RedisKeyWrap.getRelKey();
    +    public Cursor> scanForSortedSet(RedisKeyWrap redisKeyWrap, ScanOptions options) {
    +        CacheUtil.checkNotBlank(redisKeyWrap);
    +        String key = redisKeyWrap.getRelKey();
             return redisTemplate.opsForZSet().scan(key, options);
         }
     
         @Override
    -    public  T getByType(RedisKeyWrap RedisKeyWrap, Type genericReturnType){
    -        String key = RedisKeyWrap.getRelKey();
    +    public  T getByType(RedisKeyWrap redisKeyWrap, Type genericReturnType){
    +        String key = redisKeyWrap.getRelKey();
             String s = redisTemplate.boundValueOps(key).get();
             if (StringUtil.isEmpty(s)) {
                 return null;
    diff --git a/damai-redis-framework/src/main/java/com/damai/redis/RedisKeyWrap.java b/damai-redis-framework/src/main/java/com/damai/redis/RedisKeyWrap.java
    index ce670779..f2e62cf2 100644
    --- a/damai-redis-framework/src/main/java/com/damai/redis/RedisKeyWrap.java
    +++ b/damai-redis-framework/src/main/java/com/damai/redis/RedisKeyWrap.java
    @@ -25,11 +25,11 @@ public final class RedisKeyWrap {
     
         /**
          * 构建真实的key
    -     * @param RedisKeyEnum key的枚举
    +     * @param redisKeyEnum key的枚举
          * @param args 占位符的值
          * */
    -    public static RedisKeyWrap createRedisKey(RedisKeyEnum RedisKeyEnum, Object... args){
    -        String redisRelKey = String.format(RedisKeyEnum.getKeyCode(),args);
    +    public static RedisKeyWrap createRedisKey(RedisKeyEnum redisKeyEnum, Object... args){
    +        String redisRelKey = String.format(redisKeyEnum.getKeyCode(),args);
             return new RedisKeyWrap(SpringUtil.getPrefixDistinctionName() + "-" + redisRelKey);
         }
     
    diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-redisson-common-framework/src/main/java/com/damai/lockinfo/AbstractLockInfoHandle.java b/damai-redisson-framework/damai-redisson-service-framework/damai-redisson-common-framework/src/main/java/com/damai/lockinfo/AbstractLockInfoHandle.java
    index 3fe2b0f9..499bb16e 100644
    --- a/damai-redisson-framework/damai-redisson-service-framework/damai-redisson-common-framework/src/main/java/com/damai/lockinfo/AbstractLockInfoHandle.java
    +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-redisson-common-framework/src/main/java/com/damai/lockinfo/AbstractLockInfoHandle.java
    @@ -34,6 +34,10 @@ public abstract class AbstractLockInfoHandle implements LockInfoHandle {
     
         private final ExpressionParser parser = new SpelExpressionParser();
         
    +    /**
    +     * 锁信息前缀
    +     * @return 具体前缀
    +     * */
         protected abstract String getLockPrefixName();
         @Override
         public String getLockName(JoinPoint joinPoint,String name,String[] keys){
    diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-redisson-common-framework/src/main/java/com/damai/lockinfo/LockInfoHandle.java b/damai-redisson-framework/damai-redisson-service-framework/damai-redisson-common-framework/src/main/java/com/damai/lockinfo/LockInfoHandle.java
    index 30ecb425..a21c2a9a 100644
    --- a/damai-redisson-framework/damai-redisson-service-framework/damai-redisson-common-framework/src/main/java/com/damai/lockinfo/LockInfoHandle.java
    +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-redisson-common-framework/src/main/java/com/damai/lockinfo/LockInfoHandle.java
    @@ -8,8 +8,20 @@ import org.aspectj.lang.JoinPoint;
      * @author: 阿宽不是程序员
      **/
     public interface LockInfoHandle {
    -    
    +    /**
    +     * 获取锁信息
    +     * @param joinPoint 切面
    +     * @param name 锁业务名
    +     * @param keys 锁
    +     * @return 锁信息
    +     * */
         String getLockName(JoinPoint joinPoint, String name, String[] keys);
         
    +    /**
    +     * 拼装锁信息
    +     * @param name 锁业务名
    +     * @param keys 锁
    +     * @return 锁信息
    +     * */
         String simpleGetLockName(String name,String[] keys);
     }
    diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/config/ServiceLockAutoConfiguration.java b/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/config/ServiceLockAutoConfiguration.java
    index f3a3e6d7..95c5cb07 100644
    --- a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/config/ServiceLockAutoConfiguration.java
    +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/config/ServiceLockAutoConfiguration.java
    @@ -6,7 +6,7 @@ import com.damai.lockinfo.factory.LockInfoHandleFactory;
     import com.damai.lockinfo.impl.ServiceLockInfoHandle;
     import com.damai.servicelock.aspect.ServiceLockAspect;
     import com.damai.servicelock.factory.ServiceLockFactory;
    -import com.damai.util.RBloomFilterUtil;
    +import com.damai.util.BloomFilterHandler;
     import com.damai.util.ServiceLockTool;
     import org.redisson.api.RedissonClient;
     import org.springframework.boot.context.properties.EnableConfigurationProperties;
    @@ -44,7 +44,7 @@ public class ServiceLockAutoConfiguration {
          * 布隆过滤器
          */
         @Bean
    -    public RBloomFilterUtil rBloomFilterUtil(RedissonClient redissonClient, RedissonProperties redissonProperties) {
    -        return new RBloomFilterUtil(redissonClient,redissonProperties);
    +    public BloomFilterHandler rBloomFilterUtil(RedissonClient redissonClient, RedissonProperties redissonProperties) {
    +        return new BloomFilterHandler(redissonClient,redissonProperties);
         }
     }
    diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/core/DistributedLockConstants.java b/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/core/DistributedLockConstants.java
    index 0d88abb0..5c57f4b1 100644
    --- a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/core/DistributedLockConstants.java
    +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/core/DistributedLockConstants.java
    @@ -10,8 +10,7 @@ public class DistributedLockConstants {
         /**
          * 	分布式id datacenterId
          * */
    -    public static final String  DATACENTER_Id = "datacenter_id";
    -    
    +    public static final String DATACENTER_ID = "datacenter_id";
         /**
          * api统计定时任务
          * */
    diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/servicelock/ServiceLocker.java b/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/servicelock/ServiceLocker.java
    index c7a4145e..69d097c2 100644
    --- a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/servicelock/ServiceLocker.java
    +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/servicelock/ServiceLocker.java
    @@ -11,19 +11,65 @@ import java.util.concurrent.TimeUnit;
      **/
     public interface ServiceLocker {
         
    +    /**
    +     * 获取锁
    +     * @param lockKey 锁的key
    +     * @return 结果
    +     * */
         RLock getLock(String lockKey);
    -
    +    
    +    /**
    +     * 加锁
    +     * @param lockKey 锁的key
    +     * @return 结果
    +     * */
         RLock lock(String lockKey);
    -
    +    
    +    /**
    +     * 加锁
    +     * @param lockKey 锁的key
    +     * @param leaseTime 释放时间
    +     * @return 结果
    +     * */
         RLock lock(String lockKey, long leaseTime);
    -
    +    
    +    /**
    +     * 加锁
    +     * @param lockKey 锁的key
    +     * @param unit 时间单位
    +     * @param leaseTime 释放时间
    +     * @return 结果
    +     * */
         RLock lock(String lockKey, TimeUnit unit, long leaseTime);
    -
    +    
    +    /**
    +     * 加锁
    +     * @param lockKey 锁的key
    +     * @param unit 时间单位
    +     * @param waitTime 等待时间
    +     * @return 结果
    +     * */
         boolean tryLock(String lockKey, TimeUnit unit, long waitTime);
         
    +    /**
    +     * 加锁
    +     * @param lockKey 锁的key
    +     * @param unit 时间单位
    +     * @param waitTime 等待时间
    +     * @param leaseTime 释放时间
    +     * @return 结果
    +     * */
         boolean tryLock(String lockKey, TimeUnit unit, long waitTime, long leaseTime);
    -
    +    
    +    /**
    +     * 解锁
    +     * @param lockKey 锁的key
    +     * */
         void unlock(String lockKey);
    -
    +    
    +    /**
    +     * 解锁
    +     * @param lock 锁
    +     * */
         void unlock(RLock lock);
     }
    \ No newline at end of file
    diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/servicelock/info/LockTimeOutHandler.java b/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/servicelock/info/LockTimeOutHandler.java
    index b4b2e2d0..7b6d1f9a 100644
    --- a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/servicelock/info/LockTimeOutHandler.java
    +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/servicelock/info/LockTimeOutHandler.java
    @@ -6,6 +6,10 @@ package com.damai.servicelock.info;
      * @author: 阿宽不是程序员
      **/
     public interface LockTimeOutHandler {
    -
    +    
    +    /**
    +     * 处理
    +     * @param lockName 锁名
    +     * */
         void handler(String lockName);
     }
    diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/servicelock/info/LockTimeOutStrategy.java b/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/servicelock/info/LockTimeOutStrategy.java
    index 3e97aecb..d754c0da 100644
    --- a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/servicelock/info/LockTimeOutStrategy.java
    +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/servicelock/info/LockTimeOutStrategy.java
    @@ -7,7 +7,9 @@ package com.damai.servicelock.info;
      * @author: 阿宽不是程序员
      **/
     public enum LockTimeOutStrategy implements LockTimeOutHandler{
    -
    +    /**
    +     * 快速失败
    +     * */
         FAIL(){
             @Override
             public void handler(String lockName) {
    diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/util/RBloomFilterUtil.java b/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/util/BloomFilterHandler.java
    similarity index 92%
    rename from damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/util/RBloomFilterUtil.java
    rename to damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/util/BloomFilterHandler.java
    index 0f4044f5..b3d9eea3 100644
    --- a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/util/RBloomFilterUtil.java
    +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/util/BloomFilterHandler.java
    @@ -12,11 +12,11 @@ import org.redisson.api.RedissonClient;
      * @description: 布隆过滤器 方法抽象
      * @author: 阿宽不是程序员
      **/
    -public class RBloomFilterUtil {
    +public class BloomFilterHandler {
         
         private final RBloomFilter cachePenetrationBloomFilter;
         
    -    public RBloomFilterUtil(RedissonClient redissonClient, RedissonProperties redissonProperties){
    +    public BloomFilterHandler(RedissonClient redissonClient, RedissonProperties redissonProperties){
             RBloomFilter cachePenetrationBloomFilter = redissonClient.getBloomFilter(redissonProperties.getRbLoomFilterName());
             cachePenetrationBloomFilter.tryInit(redissonProperties.getExpectedInsertions(), redissonProperties.getFalseProbability());
             this.cachePenetrationBloomFilter = cachePenetrationBloomFilter;
    diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/util/TaskCall.java b/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/util/TaskCall.java
    index fd3f68d8..14a70892 100644
    --- a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/util/TaskCall.java
    +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/util/TaskCall.java
    @@ -8,5 +8,9 @@ package com.damai.util;
     @FunctionalInterface
     public interface TaskCall {
     
    +    /**
    +     * 执行任务
    +     * @return 结果
    +     * */
         V call();
     }
    diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/util/TaskRun.java b/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/util/TaskRun.java
    index be463608..91e69256 100644
    --- a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/util/TaskRun.java
    +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/util/TaskRun.java
    @@ -7,6 +7,9 @@ package com.damai.util;
      **/
     @FunctionalInterface
     public interface TaskRun {
    -
    +    
    +    /**
    +     * 执行任务
    +     * */
         void run();
     }
    diff --git a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/config/DelayQueueAutoConfig.java b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/config/DelayQueueAutoConfig.java
    index a87b0337..40a0f861 100644
    --- a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/config/DelayQueueAutoConfig.java
    +++ b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/config/DelayQueueAutoConfig.java
    @@ -16,7 +16,7 @@ import org.springframework.context.annotation.Bean;
     public class DelayQueueAutoConfig {
         
         @Bean
    -    public DelayQueueInitHandler DelayQueueInitHandler(DelayQueueProperties delayQueueProperties, RedissonClient redissonClient){
    +    public DelayQueueInitHandler delayQueueInitHandler(DelayQueueProperties delayQueueProperties, RedissonClient redissonClient){
             return new DelayQueueInitHandler(delayQueueProperties, redissonClient);
         }
         
    diff --git a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/core/ConsumerTask.java b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/core/ConsumerTask.java
    index ec045e3e..658aae29 100644
    --- a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/core/ConsumerTask.java
    +++ b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/core/ConsumerTask.java
    @@ -7,7 +7,14 @@ package com.damai.core;
      **/
     public interface ConsumerTask {
         
    +    /**
    +     * 消费任务
    +     * @param content 具体参数
    +     * */
         void execute(String content);
    -    
    +    /**
    +     * 主题
    +     * @return 主题
    +     * */
         String topic();
     }
    diff --git a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/core/DelayConsumerQueue.java b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/core/DelayConsumerQueue.java
    index c0590610..d4874bde 100644
    --- a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/core/DelayConsumerQueue.java
    +++ b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/core/DelayConsumerQueue.java
    @@ -7,6 +7,7 @@ import java.util.Objects;
     import java.util.concurrent.ExecutorService;
     import java.util.concurrent.LinkedBlockingQueue;
     import java.util.concurrent.ThreadPoolExecutor;
    +import java.util.concurrent.TimeUnit;
     import java.util.concurrent.atomic.AtomicBoolean;
     import java.util.concurrent.atomic.AtomicInteger;
     
    @@ -19,8 +20,9 @@ import java.util.concurrent.atomic.AtomicInteger;
     public class DelayConsumerQueue extends DelayBaseQueue{
         
         private final AtomicInteger threadCount = new AtomicInteger(1);
    +    private final ThreadPoolExecutor listenStartThreadPool;
    +    private final ThreadPoolExecutor executeTaskThreadPool;
         
    -    private final ExecutorService executorService;
         
         private final AtomicBoolean runFlag = new AtomicBoolean(false);
         
    @@ -28,7 +30,10 @@ public class DelayConsumerQueue extends DelayBaseQueue{
         
         public DelayConsumerQueue(DelayQueuePart delayQueuePart, String relTopic){
             super(delayQueuePart.getRedissonClient(),relTopic);
    -        this.executorService = new ThreadPoolExecutor(
    +        this.listenStartThreadPool = new ThreadPoolExecutor(1,1,60, 
    +                TimeUnit.SECONDS,new LinkedBlockingQueue<>(),r -> new Thread(Thread.currentThread().getThreadGroup(), r,
    +                "listen-start-thread-" + threadCount.getAndIncrement()));
    +        this.executeTaskThreadPool = new ThreadPoolExecutor(
                     delayQueuePart.getDelayQueueProperties().getCorePoolSize(),
                     delayQueuePart.getDelayQueueProperties().getMaximumPoolSize(),
                     delayQueuePart.getDelayQueueProperties().getKeepAliveTime(),
    @@ -42,12 +47,12 @@ public class DelayConsumerQueue extends DelayBaseQueue{
         public synchronized void listenStart(){
             if (!runFlag.get()) {
                 runFlag.set(true);
    -            new Thread(Thread.currentThread().getThreadGroup(), () -> {
    +            listenStartThreadPool.execute(() -> {
                     while (!Thread.interrupted()) {
                         try {
                             assert blockingQueue != null;
                             String content = blockingQueue.take();
    -                        executorService.execute(() -> {
    +                        executeTaskThreadPool.execute(() -> {
                                 try {
                                     consumerTask.execute(content);
                                 }catch (Exception e) {
    @@ -55,12 +60,12 @@ public class DelayConsumerQueue extends DelayBaseQueue{
                                 }
                             });
                         } catch (InterruptedException e) {
    -                        destroy(executorService);
    +                        destroy(executeTaskThreadPool);
                         } catch (Throwable e) {
                             log.error("blockingQueue take error",e);
                         }
                     }
    -            }, "listen-thread").start();
    +            });
             }
         }
         
    diff --git a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/event/DelayQueueInitHandler.java b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/event/DelayQueueInitHandler.java
    index 58f242a4..1b36902a 100644
    --- a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/event/DelayQueueInitHandler.java
    +++ b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/event/DelayQueueInitHandler.java
    @@ -14,8 +14,10 @@ import org.springframework.context.ApplicationListener;
     import java.util.Map;
     
     /**
    - * DelayQueueInitHandler 类用于处理应用程序启动事件。
    - */
    + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 
    + * @description: 处理应用程序启动事件
    + * @author: 阿宽不是程序员
    + **/
     @AllArgsConstructor
     public class DelayQueueInitHandler implements ApplicationListener {
         
    diff --git a/damai-server-client/damai-base-data-client/src/main/java/com/damai/client/BaseDataClient.java b/damai-server-client/damai-base-data-client/src/main/java/com/damai/client/BaseDataClient.java
    index 1c29cd7f..f0588795 100644
    --- a/damai-server-client/damai-base-data-client/src/main/java/com/damai/client/BaseDataClient.java
    +++ b/damai-server-client/damai-base-data-client/src/main/java/com/damai/client/BaseDataClient.java
    @@ -21,16 +21,34 @@ import java.util.List;
     @Component
     @FeignClient(value = "base-data-service",fallback = BaseDataClientFallback.class)
     public interface BaseDataClient {
    -    
    +    /**
    +     * 根据code查询数据
    +     * @param dto 参数
    +     * @return 结果
    +     * */
         @PostMapping("/channel/data/getByCode")
         ApiResponse getByCode(GetChannelDataByCodeDto dto);
         
    +    /**
    +     * 查询token数据
    +     * @return 结果
    +     * */
         @PostMapping(value = "/get")
         ApiResponse get();
         
    +    /**
    +     * 根据id集合查询地区列表
    +     * @param dto 参数
    +     * @return 结果
    +     * */
         @PostMapping(value = "/area/selectByIdList")
    -    ApiResponse> selectByIdList(AreaSelectDto areaSelectDto);
    +    ApiResponse> selectByIdList(AreaSelectDto dto);
         
    +    /**
    +     * 根据id查询地区
    +     * @param dto 参数
    +     * @return 结果
    +     * */
         @PostMapping(value = "/area/getById")
    -    ApiResponse getById(AreaGetDto areaGetDto);
    +    ApiResponse getById(AreaGetDto dto);
     }
    diff --git a/damai-server-client/damai-job-client/src/main/java/com/damai/client/JobClient.java b/damai-server-client/damai-job-client/src/main/java/com/damai/client/JobClient.java
    index 6b428fa4..a7bb2d6e 100644
    --- a/damai-server-client/damai-job-client/src/main/java/com/damai/client/JobClient.java
    +++ b/damai-server-client/damai-job-client/src/main/java/com/damai/client/JobClient.java
    @@ -19,6 +19,11 @@ import javax.validation.Valid;
     @FeignClient(value = "job-service",fallback = JobClientFallback.class)
     public interface JobClient {
         
    +    /**
    +     * 上报任务状态
    +     * @param dto 参数
    +     * @return 结果
    +     * */
         @RequestMapping(value = "jobRunRecord/callBack", method = RequestMethod.POST)
         ApiResponse callBack(@Valid @RequestBody JobCallBackDto dto);
     }
    diff --git a/damai-server-client/damai-order-client/src/main/java/com/damai/client/OrderClient.java b/damai-server-client/damai-order-client/src/main/java/com/damai/client/OrderClient.java
    index acde21e9..a21c7e85 100644
    --- a/damai-server-client/damai-order-client/src/main/java/com/damai/client/OrderClient.java
    +++ b/damai-server-client/damai-order-client/src/main/java/com/damai/client/OrderClient.java
    @@ -17,7 +17,9 @@ public interface OrderClient {
         
         /**
          * 创建订单
    +     * @param dto 参数
    +     * @return 结果
          * */
         @PostMapping("/order/create")
    -    ApiResponse create(OrderCreateDto orderCreateDto);
    +    ApiResponse create(OrderCreateDto dto);
     }
    diff --git a/damai-server-client/damai-pay-client/src/main/java/com/damai/client/PayClient.java b/damai-server-client/damai-pay-client/src/main/java/com/damai/client/PayClient.java
    index c3d2a945..a3d276ca 100644
    --- a/damai-server-client/damai-pay-client/src/main/java/com/damai/client/PayClient.java
    +++ b/damai-server-client/damai-pay-client/src/main/java/com/damai/client/PayClient.java
    @@ -18,13 +18,25 @@ import org.springframework.web.bind.annotation.PostMapping;
     @Component
     @FeignClient(value = "pay-service",fallback = PayClientFallback.class)
     public interface PayClient {
    -    
    +    /**
    +     * 支付
    +     * @param dto 参数
    +     * @return 结果
    +     * */
         @PostMapping(value = "/pay/common/pay")
    -    ApiResponse commonPay(PayDto payDto);
    -    
    +    ApiResponse commonPay(PayDto dto);
    +    /**
    +     * 回调
    +     * @param dto 参数
    +     * @return 结果
    +     * */
         @PostMapping(value = "/pay/notify")
    -    ApiResponse notify(NotifyDto notifyDto);
    -    
    +    ApiResponse notify(NotifyDto dto);
    +    /**
    +     * 查询支付状态
    +     * @param dto 参数
    +     * @return 结果
    +     * */
         @PostMapping(value = "/pay/trade/check")
    -    ApiResponse tradeCheck(TradeCheckDto tradeCheckDto);
    +    ApiResponse tradeCheck(TradeCheckDto dto);
     }
    diff --git a/damai-server-client/damai-user-client/src/main/java/com/damai/client/UserClient.java b/damai-server-client/damai-user-client/src/main/java/com/damai/client/UserClient.java
    index 9699aed3..0b2811ee 100644
    --- a/damai-server-client/damai-user-client/src/main/java/com/damai/client/UserClient.java
    +++ b/damai-server-client/damai-user-client/src/main/java/com/damai/client/UserClient.java
    @@ -25,21 +25,27 @@ public interface UserClient {
         
         /**
          * 查询用户(通过id)
    +     * @param dto 参数
    +     * @return 结果
          * */
         @PostMapping(value = "/user/getById")
    -    ApiResponse getById(UserIdDto userIdDto);
    +    ApiResponse getById(UserIdDto dto);
         
     
         /**
          * 查询购票人(通过userId)
    +     * @param dto 参数
    +     * @return 结果
          * */
         @PostMapping(value = "/ticket/user/select")
    -    ApiResponse> select(@Valid @RequestBody UserIdDto userIdDto);
    +    ApiResponse> select(@Valid @RequestBody UserIdDto dto);
         
         /**
          * 查询用户和购票人集合
    +     * @param dto 参数
    +     * @return 结果
          */
         @PostMapping(value = "/user/getUserAndTicketUserList")
    -    ApiResponse getUserAndTicketUserList(UserGetAndTicketUserListDto userGetAndTicketUserListDto);
    +    ApiResponse getUserAndTicketUserList(UserGetAndTicketUserListDto dto);
         
     }
    diff --git a/damai-server/damai-admin-service/src/main/java/com/damai/monitor/DingTalkMessage.java b/damai-server/damai-admin-service/src/main/java/com/damai/monitor/DingTalkMessage.java
    index dbb75d1a..743c0ec1 100644
    --- a/damai-server/damai-admin-service/src/main/java/com/damai/monitor/DingTalkMessage.java
    +++ b/damai-server/damai-admin-service/src/main/java/com/damai/monitor/DingTalkMessage.java
    @@ -24,13 +24,13 @@ public class DingTalkMessage {
         private RestTemplate restTemplate = new RestTemplate();
         
         private HttpEntity createMessage(String message) {
    -        Map messageJson = new HashMap<>();
    -        Map context = new HashMap<>();
    +        Map messageJson = new HashMap<>(8);
    +        Map context = new HashMap<>(8);
             context.put("content", message);
             messageJson.put("text", JSON.toJSONString(context));
             messageJson.put("msgtype", "text");
             HttpHeaders headers = new HttpHeaders();
    -        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
    +        headers.setContentType(MediaType.APPLICATION_JSON);
             return new HttpEntity<>(JSON.toJSONString(messageJson), headers);
         }
         
    diff --git a/damai-server/damai-admin-service/src/main/java/com/damai/monitor/MonitorServer.java b/damai-server/damai-admin-service/src/main/java/com/damai/monitor/MonitorServer.java
    index 213af766..3b95f1da 100644
    --- a/damai-server/damai-admin-service/src/main/java/com/damai/monitor/MonitorServer.java
    +++ b/damai-server/damai-admin-service/src/main/java/com/damai/monitor/MonitorServer.java
    @@ -56,7 +56,7 @@ public class MonitorServer extends AbstractStatusChangeNotifier {
             String from = this.getLastStatus(event.getInstance());
             String to = statusChange.getStatusInfo().getStatus();
             
    -        Map root = new HashMap<>();
    +        Map root = new HashMap<>(16);
             root.put("instance", instance);
             root.put("fromStatus",from);
             root.put("toStatus",to);
    diff --git a/damai-server/damai-base-data-service/src/main/java/com/damai/controller/AreaController.java b/damai-server/damai-base-data-service/src/main/java/com/damai/controller/AreaController.java
    index 8ea2cfe4..ca31586f 100644
    --- a/damai-server/damai-base-data-service/src/main/java/com/damai/controller/AreaController.java
    +++ b/damai-server/damai-base-data-service/src/main/java/com/damai/controller/AreaController.java
    @@ -23,7 +23,7 @@ import java.util.List;
      **/
     @RestController
     @RequestMapping("/area")
    -@Api(tags = "area", description = "区域")
    +@Api(tags = "area", value = "区域")
     public class AreaController {
         
         @Autowired
    diff --git a/damai-server/damai-base-data-service/src/main/java/com/damai/controller/ChannelDataController.java b/damai-server/damai-base-data-service/src/main/java/com/damai/controller/ChannelDataController.java
    index f3e985e0..dd025c65 100644
    --- a/damai-server/damai-base-data-service/src/main/java/com/damai/controller/ChannelDataController.java
    +++ b/damai-server/damai-base-data-service/src/main/java/com/damai/controller/ChannelDataController.java
    @@ -22,7 +22,7 @@ import javax.validation.Valid;
      **/
     @RestController
     @RequestMapping("/channel/data")
    -@Api(tags = "channel-data", description = "渠道数据")
    +@Api(tags = "channel-data", value = "渠道数据")
     public class ChannelDataController {
         
         @Autowired
    diff --git a/damai-server/damai-base-data-service/src/main/java/com/damai/controller/TokenDataController.java b/damai-server/damai-base-data-service/src/main/java/com/damai/controller/TokenDataController.java
    index 696cd914..5d13843d 100644
    --- a/damai-server/damai-base-data-service/src/main/java/com/damai/controller/TokenDataController.java
    +++ b/damai-server/damai-base-data-service/src/main/java/com/damai/controller/TokenDataController.java
    @@ -21,7 +21,7 @@ import javax.validation.Valid;
      **/
     @RestController
     @RequestMapping("/token/data")
    -@Api(tags = "token-data", description = "token配置数据")
    +@Api(tags = "token-data", value = "token配置数据")
     public class TokenDataController {
         
         @Autowired
    diff --git a/damai-server/damai-base-data-service/src/main/java/com/damai/service/ChannelDataService.java b/damai-server/damai-base-data-service/src/main/java/com/damai/service/ChannelDataService.java
    index 080e5e03..ca52215f 100644
    --- a/damai-server/damai-base-data-service/src/main/java/com/damai/service/ChannelDataService.java
    +++ b/damai-server/damai-base-data-service/src/main/java/com/damai/service/ChannelDataService.java
    @@ -54,7 +54,7 @@ public class ChannelDataService {
         public void add(ChannelDataAddDto channelDataAddDto) {
             ChannelData channelData = new ChannelData();
             BeanUtils.copyProperties(channelDataAddDto,channelData);
    -        channelData.setId(uidGenerator.getUID());
    +        channelData.setId(uidGenerator.getUid());
             channelData.setCreateTime(DateUtils.now());
             channelDataMapper.insert(channelData);
             addRedisChannelData(channelData);
    diff --git a/damai-server/damai-base-data-service/src/main/java/com/damai/service/TokenDataService.java b/damai-server/damai-base-data-service/src/main/java/com/damai/service/TokenDataService.java
    index 8ee1a969..6d24d9b5 100644
    --- a/damai-server/damai-base-data-service/src/main/java/com/damai/service/TokenDataService.java
    +++ b/damai-server/damai-base-data-service/src/main/java/com/damai/service/TokenDataService.java
    @@ -31,7 +31,7 @@ public class TokenDataService {
         public void add(TokenDataDto tokenDataDto){
             TokenData tokenData = new TokenData();
             BeanUtils.copyProperties(tokenDataDto,tokenData);
    -        tokenData.setId(uidGenerator.getUID());
    +        tokenData.setId(uidGenerator.getUid());
             tokenData.setCreateTime(DateUtils.now());
             tokenDataMapper.insert(tokenData);
         }
    diff --git a/damai-server/damai-base-data-service/src/main/resources/log4j2.xml b/damai-server/damai-base-data-service/src/main/resources/log4j2.xml
    index 8bba99ee..84a2017d 100644
    --- a/damai-server/damai-base-data-service/src/main/resources/log4j2.xml
    +++ b/damai-server/damai-base-data-service/src/main/resources/log4j2.xml
    @@ -10,10 +10,10 @@
         
             
             .
    -        channel-data-service
    +        base-data-service
             local
             log
    -        [channel-data-service] [%X{traceId}] %d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
    +        [base-data-service] [%X{traceId}] %d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
             UTF-8
             com.damai
         
    diff --git a/damai-server/damai-customize-service/src/main/java/com/damai/controller/AllRuleController.java b/damai-server/damai-customize-service/src/main/java/com/damai/controller/AllRuleController.java
    index be029c1a..c9b0742e 100644
    --- a/damai-server/damai-customize-service/src/main/java/com/damai/controller/AllRuleController.java
    +++ b/damai-server/damai-customize-service/src/main/java/com/damai/controller/AllRuleController.java
    @@ -21,7 +21,7 @@ import javax.validation.Valid;
      **/
     @RestController
     @RequestMapping("/allRule")
    -@Api(tags = "allRule", description = "所有规则")
    +@Api(tags = "allRule", value = "所有规则")
     public class AllRuleController {
     
         @Autowired
    @@ -30,7 +30,7 @@ public class AllRuleController {
         
         @ApiOperation(value = "添加所有规则")
         @RequestMapping(value = "/add", method = RequestMethod.POST)
    -    public ApiResponse add(@Valid @RequestBody AllRuleDto allRuleDto) {
    +    public ApiResponse add(@Valid @RequestBody AllRuleDto allRuleDto) {
             allRuleService.add(allRuleDto);
             return ApiResponse.ok();
         }
    diff --git a/damai-server/damai-customize-service/src/main/java/com/damai/controller/ApiDataController.java b/damai-server/damai-customize-service/src/main/java/com/damai/controller/ApiDataController.java
    index ceae729c..05ea5ccb 100644
    --- a/damai-server/damai-customize-service/src/main/java/com/damai/controller/ApiDataController.java
    +++ b/damai-server/damai-customize-service/src/main/java/com/damai/controller/ApiDataController.java
    @@ -22,7 +22,7 @@ import javax.validation.Valid;
      **/
     @RestController
     @RequestMapping("/apiData")
    -@Api(tags = "apiData", description = "api调用记录")
    +@Api(tags = "apiData", value = "api调用记录")
     public class ApiDataController {
         
         @Autowired
    diff --git a/damai-server/damai-customize-service/src/main/java/com/damai/controller/DepthRuleController.java b/damai-server/damai-customize-service/src/main/java/com/damai/controller/DepthRuleController.java
    index 0f7fa97b..949165db 100644
    --- a/damai-server/damai-customize-service/src/main/java/com/damai/controller/DepthRuleController.java
    +++ b/damai-server/damai-customize-service/src/main/java/com/damai/controller/DepthRuleController.java
    @@ -24,7 +24,7 @@ import java.util.List;
      **/
     @RestController
     @RequestMapping("/depthRule")
    -@Api(tags = "depthRule", description = "深度规则")
    +@Api(tags = "depthRule", value = "深度规则")
     public class DepthRuleController {
     
         @Autowired
    diff --git a/damai-server/damai-customize-service/src/main/java/com/damai/controller/RuleController.java b/damai-server/damai-customize-service/src/main/java/com/damai/controller/RuleController.java
    index f42356e2..d2d0d303 100644
    --- a/damai-server/damai-customize-service/src/main/java/com/damai/controller/RuleController.java
    +++ b/damai-server/damai-customize-service/src/main/java/com/damai/controller/RuleController.java
    @@ -24,7 +24,7 @@ import javax.validation.Valid;
      **/
     @RestController
     @RequestMapping("/rule")
    -@Api(tags = "rule", description = "规则")
    +@Api(tags = "rule", value = "规则")
     public class RuleController {
     
         @Autowired
    diff --git a/damai-server/damai-customize-service/src/main/java/com/damai/kafka/ConsumerConfig.java b/damai-server/damai-customize-service/src/main/java/com/damai/kafka/ConsumerConfig.java
    index f69b9dcc..f0660b41 100644
    --- a/damai-server/damai-customize-service/src/main/java/com/damai/kafka/ConsumerConfig.java
    +++ b/damai-server/damai-customize-service/src/main/java/com/damai/kafka/ConsumerConfig.java
    @@ -25,7 +25,7 @@ import java.util.Map;
     public class ConsumerConfig {
         
         public Map consumerConfigs(ConsumerProperty consumerProperty) {
    -        Map propsMap = new HashMap<>();
    +        Map propsMap = new HashMap<>(16);
             propsMap.put(org.apache.kafka.clients.consumer.ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, consumerProperty.getServers());
             propsMap.put(org.apache.kafka.clients.consumer.ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, consumerProperty.isAutoCommit());
             propsMap.put(org.apache.kafka.clients.consumer.ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, consumerProperty.getAutoCommitIntervalMs());
    diff --git a/damai-server/damai-customize-service/src/main/java/com/damai/mapper/ApiDataMapper.java b/damai-server/damai-customize-service/src/main/java/com/damai/mapper/ApiDataMapper.java
    index 06774960..ce8157c0 100644
    --- a/damai-server/damai-customize-service/src/main/java/com/damai/mapper/ApiDataMapper.java
    +++ b/damai-server/damai-customize-service/src/main/java/com/damai/mapper/ApiDataMapper.java
    @@ -12,6 +12,11 @@ import com.damai.vo.ApiDataVo;
      * @author: 阿宽不是程序员
      **/
     public interface ApiDataMapper extends BaseMapper {
    -    
    +    /**
    +     * 分页查询
    +     * @param page 分页对象
    +     * @param apiDataDto 参数
    +     * @return 分页数据
    +     * */
         Page pageList(Page page, ApiDataDto apiDataDto);
     }
    diff --git a/damai-server/damai-customize-service/src/main/java/com/damai/mapper/DepthRuleMapper.java b/damai-server/damai-customize-service/src/main/java/com/damai/mapper/DepthRuleMapper.java
    index 6199d129..5f884d13 100644
    --- a/damai-server/damai-customize-service/src/main/java/com/damai/mapper/DepthRuleMapper.java
    +++ b/damai-server/damai-customize-service/src/main/java/com/damai/mapper/DepthRuleMapper.java
    @@ -10,5 +10,9 @@ import com.damai.entity.DepthRule;
      **/
     public interface DepthRuleMapper extends BaseMapper {
         
    +    /**
    +     * 删除所有规则
    +     * @return 结果
    +     * */
         int delAll();
     }
    diff --git a/damai-server/damai-customize-service/src/main/java/com/damai/mapper/RuleMapper.java b/damai-server/damai-customize-service/src/main/java/com/damai/mapper/RuleMapper.java
    index c81a86cc..fa6157d8 100644
    --- a/damai-server/damai-customize-service/src/main/java/com/damai/mapper/RuleMapper.java
    +++ b/damai-server/damai-customize-service/src/main/java/com/damai/mapper/RuleMapper.java
    @@ -10,5 +10,9 @@ import com.damai.entity.Rule;
      **/
     public interface RuleMapper extends BaseMapper {
         
    +    /**
    +     * 删除所有规则
    +     * @return 结果
    +     * */
         int delAll();
     }
    diff --git a/damai-server/damai-customize-service/src/main/java/com/damai/service/DepthRuleService.java b/damai-server/damai-customize-service/src/main/java/com/damai/service/DepthRuleService.java
    index bc8b960d..d6fd2f80 100644
    --- a/damai-server/damai-customize-service/src/main/java/com/damai/service/DepthRuleService.java
    +++ b/damai-server/damai-customize-service/src/main/java/com/damai/service/DepthRuleService.java
    @@ -75,7 +75,7 @@ public class DepthRuleService {
         public void add(DepthRuleDto depthRuleDto) {
             DepthRule depthRule = new DepthRule();
             BeanUtils.copyProperties(depthRuleDto,depthRule);
    -        depthRule.setId(uidGenerator.getUID());
    +        depthRule.setId(uidGenerator.getUid());
             depthRule.setCreateTime(DateUtils.now());
             depthRuleMapper.insert(depthRule);
         }
    diff --git a/damai-server/damai-customize-service/src/main/java/com/damai/service/RuleService.java b/damai-server/damai-customize-service/src/main/java/com/damai/service/RuleService.java
    index e22a9f19..9bb1a82e 100644
    --- a/damai-server/damai-customize-service/src/main/java/com/damai/service/RuleService.java
    +++ b/damai-server/damai-customize-service/src/main/java/com/damai/service/RuleService.java
    @@ -60,7 +60,7 @@ public class RuleService {
             delAll();
             Rule rule = new Rule();
             BeanUtils.copyProperties(ruleDto,rule);
    -        rule.setId(uidGenerator.getUID());
    +        rule.setId(uidGenerator.getUid());
             rule.setCreateTime(DateUtil.date());
             ruleMapper.insert(rule);
             return rule.getId();
    diff --git a/damai-server/damai-customize-service/src/main/resources/log4j2.xml b/damai-server/damai-customize-service/src/main/resources/log4j2.xml
    index 86c65a16..6a3f2cd2 100644
    --- a/damai-server/damai-customize-service/src/main/resources/log4j2.xml
    +++ b/damai-server/damai-customize-service/src/main/resources/log4j2.xml
    @@ -10,10 +10,10 @@
         
             
             .
    -        order-service
    +        customize-service
             local
             log
    -        [order-service] [%X{traceId}] %d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
    +        [customize-service] [%X{traceId}] %d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
             UTF-8
             com.damai
         
    diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/conf/swagger/SwaggerProvider.java b/damai-server/damai-gateway-service/src/main/java/com/damai/conf/swagger/SwaggerProvider.java
    index f96c01bf..1a34bed5 100644
    --- a/damai-server/damai-gateway-service/src/main/java/com/damai/conf/swagger/SwaggerProvider.java
    +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/conf/swagger/SwaggerProvider.java
    @@ -61,7 +61,7 @@ public class SwaggerProvider implements SwaggerResourcesProvider {
         }
         
         private Map> getServiceMappingNames(GatewayProperties gatewayProperties) {
    -        Map> serviceMap = new HashMap<>();
    +        Map> serviceMap = new HashMap<>(256);
             List routeList = gatewayProperties.getRoutes();
             if (CollUtil.isNotEmpty(routeList)) {
                 for (RouteDefinition route : routeList) {
    diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/constant/GatewayConstant.java b/damai-server/damai-gateway-service/src/main/java/com/damai/constant/GatewayConstant.java
    index df70e925..7d3e5d27 100644
    --- a/damai-server/damai-gateway-service/src/main/java/com/damai/constant/GatewayConstant.java
    +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/constant/GatewayConstant.java
    @@ -25,4 +25,6 @@ public class GatewayConstant {
         
         public static final String USER_ID = "user_id";
         
    +    public static final String V2 = "v2";
    +    
     }
    diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/filter/RequestValidationFilter.java b/damai-server/damai-gateway-service/src/main/java/com/damai/filter/RequestValidationFilter.java
    index a3b9071b..2a276c63 100644
    --- a/damai-server/damai-gateway-service/src/main/java/com/damai/filter/RequestValidationFilter.java
    +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/filter/RequestValidationFilter.java
    @@ -15,7 +15,7 @@ import com.damai.service.ApiRestrictService;
     import com.damai.service.ChannelDataService;
     import com.damai.service.TokenService;
     import com.damai.threadlocal.BaseParameterHolder;
    -import com.damai.util.RSATool;
    +import com.damai.util.RsaTool;
     import com.damai.util.RsaSignTool;
     import com.damai.vo.GetChannelDataVo;
     import com.damai.vo.UserVo;
    @@ -59,6 +59,7 @@ import static com.damai.constant.GatewayConstant.NO_VERIFY;
     import static com.damai.constant.GatewayConstant.REQUEST_BODY;
     import static com.damai.constant.GatewayConstant.TOKEN;
     import static com.damai.constant.GatewayConstant.USER_ID;
    +import static com.damai.constant.GatewayConstant.V2;
     import static com.damai.constant.GatewayConstant.VERIFY_VALUE;
     
     /**
    @@ -99,10 +100,10 @@ public class RequestValidationFilter implements GlobalFilter, Ordered {
             String mark = request.getHeaders().getFirst(MARK_PARAMETER);
             String noVerify = request.getHeaders().getFirst(NO_VERIFY);
             if (StringUtil.isEmpty(traceId)) {
    -            traceId = String.valueOf(uidGenerator.getUID());
    +            traceId = String.valueOf(uidGenerator.getUid());
             }
             MDC.put(TRACE_ID,traceId);
    -        Map headMap = new HashMap<>();
    +        Map headMap = new HashMap<>(8);
             headMap.put(TRACE_ID,traceId);
             headMap.put(MARK_PARAMETER,mark);
             if (StringUtil.isNotEmpty(noVerify)) {
    @@ -162,7 +163,7 @@ public class RequestValidationFilter implements GlobalFilter, Ordered {
             log.info("current thread verify: {}",Thread.currentThread().getName());
             ServerHttpRequest request = exchange.getRequest();
             String requestBody = originalBody;
    -        Map bodyContent = new HashMap<>();
    +        Map bodyContent = new HashMap<>(32);
             if (StringUtil.isNotEmpty(originalBody)) {
                 bodyContent = JSON.parseObject(originalBody, Map.class);
             }
    @@ -183,8 +184,8 @@ public class RequestValidationFilter implements GlobalFilter, Ordered {
                 
                 GetChannelDataVo channelDataVo = channelDataService.getChannelDataByCode(code);
                 
    -            if (StringUtil.isNotEmpty(encrypt) && "v2".equals(encrypt)) {
    -                String decrypt = RSATool.decrypt(bodyContent.get(BUSINESS_BODY),channelDataVo.getDataSecretKey());
    +            if (StringUtil.isNotEmpty(encrypt) && V2.equals(encrypt)) {
    +                String decrypt = RsaTool.decrypt(bodyContent.get(BUSINESS_BODY),channelDataVo.getDataSecretKey());
                     bodyContent.put(BUSINESS_BODY,decrypt);
                 }
                 boolean checkFlag = RsaSignTool.verifyRsaSign256(bodyContent, channelDataVo.getSignPublicKey());
    @@ -220,7 +221,9 @@ public class RequestValidationFilter implements GlobalFilter, Ordered {
             }
             return map;
         }
    -    //将网关层request请求头中的重要参数传递给后续的微服务中
    +    /**
    +     * 将网关层request请求头中的重要参数传递给后续的微服务中
    +     */
         private ServerHttpRequestDecorator decorateHead(ServerWebExchange exchange, HttpHeaders headers, CachedBodyOutputMessage outputMessage, RequestTemporaryWrapper requestTemporaryWrapper, Map headMap){
             return new ServerHttpRequestDecorator(exchange.getRequest()){
                 @Override
    diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/filter/ResponseValidationFilter.java b/damai-server/damai-gateway-service/src/main/java/com/damai/filter/ResponseValidationFilter.java
    index 0d7d8373..e2f54139 100644
    --- a/damai-server/damai-gateway-service/src/main/java/com/damai/filter/ResponseValidationFilter.java
    +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/filter/ResponseValidationFilter.java
    @@ -5,7 +5,7 @@ import com.damai.common.ApiResponse;
     import com.damai.core.StringUtil;
     import com.damai.exception.CheckCodeHandler;
     import com.damai.service.ChannelDataService;
    -import com.damai.util.RSATool;
    +import com.damai.util.RsaTool;
     import com.damai.vo.GetChannelDataVo;
     import lombok.extern.slf4j.Slf4j;
     import org.reactivestreams.Publisher;
    @@ -36,6 +36,7 @@ import java.util.function.BiFunction;
     import static com.damai.constant.GatewayConstant.CODE;
     import static com.damai.constant.GatewayConstant.ENCRYPT;
     import static com.damai.constant.GatewayConstant.NO_VERIFY;
    +import static com.damai.constant.GatewayConstant.V2;
     import static com.damai.constant.GatewayConstant.VERIFY_VALUE;
     import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.ORIGINAL_RESPONSE_CONTENT_TYPE_ATTR;
     
    @@ -129,7 +130,7 @@ public class ResponseValidationFilter implements GlobalFilter, Ordered {
             ServerHttpRequest request = serverWebExchange.getRequest();
             String noVerify = request.getHeaders().getFirst(NO_VERIFY);
             String encrypt = request.getHeaders().getFirst(ENCRYPT);
    -        if ((!VERIFY_VALUE.equals(noVerify)) && "v2".equals(encrypt) && StringUtil.isNotEmpty(responseBody)) {
    +        if ((!VERIFY_VALUE.equals(noVerify)) && V2.equals(encrypt) && StringUtil.isNotEmpty(responseBody)) {
                 ApiResponse apiResponse = JSON.parseObject(responseBody, ApiResponse.class);
                 Object data = apiResponse.getData();
                 if (data != null) {
    @@ -138,7 +139,7 @@ public class ResponseValidationFilter implements GlobalFilter, Ordered {
                     checkCodeHandler.checkCode(code);
                     
                     GetChannelDataVo channelDataVo = channelDataService.getChannelDataByCode(code);
    -                String rsaEncrypt = RSATool.encrypt(JSON.toJSONString(data),channelDataVo.getDataPublicKey());
    +                String rsaEncrypt = RsaTool.encrypt(JSON.toJSONString(data),channelDataVo.getDataPublicKey());
                     apiResponse.setData(rsaEncrypt);
                     modifyResponseBody = JSON.toJSONString(apiResponse);
                 }
    diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/hystrixfactory/FineGritHystrixGatewayFilterFactory.java b/damai-server/damai-gateway-service/src/main/java/com/damai/hystrixfactory/FineGritHystrixGatewayFilterFactory.java
    index 1abbe219..e385fb29 100644
    --- a/damai-server/damai-gateway-service/src/main/java/com/damai/hystrixfactory/FineGritHystrixGatewayFilterFactory.java
    +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/hystrixfactory/FineGritHystrixGatewayFilterFactory.java
    @@ -62,8 +62,6 @@ public class FineGritHystrixGatewayFilterFactory
     		extends AbstractGatewayFilterFactory {
     
     	private final ObjectProvider dispatcherHandlerProvider;
    -
    -	// do not use this dispatcherHandler directly, use getDispatcherHandler() instead.
     	private volatile DispatcherHandler dispatcherHandler;
     
     	public FineGritHystrixGatewayFilterFactory(
    @@ -195,7 +193,8 @@ public class FineGritHystrixGatewayFilterFactory
     		}
     
     		public void setFallbackUri(URI fallbackUri) {
    -			if (fallbackUri != null && !"forward".equals(fallbackUri.getScheme())) {
    +			String forward = "forward";
    +			if (fallbackUri != null && !forward.equals(fallbackUri.getScheme())) {
     				throw new IllegalArgumentException(
     						"Hystrix Filter currently only supports 'forward' URIs, found "
     								+ fallbackUri);
    @@ -226,7 +225,9 @@ public class FineGritHystrixGatewayFilterFactory
     		}
     	}
     
    -	// TODO: replace with HystrixMonoCommand that we write
    +	/**
    +	 * TODO: replace with HystrixMonoCommand that we write
    +	 * */
     	private class RouteHystrixCommand extends HystrixObservableCommand {
     
     		private final URI fallbackUri;
    diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/kafka/ProducerConfig.java b/damai-server/damai-gateway-service/src/main/java/com/damai/kafka/ProducerConfig.java
    index 691a823a..9d1c605e 100644
    --- a/damai-server/damai-gateway-service/src/main/java/com/damai/kafka/ProducerConfig.java
    +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/kafka/ProducerConfig.java
    @@ -22,7 +22,7 @@ import java.util.Map;
     public class ProducerConfig {
         
         public Map producerConfigs(ProducerProperty producerProperty) {
    -        Map props = new HashMap<>();
    +        Map props = new HashMap<>(16);
             props.put(org.apache.kafka.clients.producer.ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, producerProperty.getServers());
             props.put(org.apache.kafka.clients.producer.ProducerConfig.RETRIES_CONFIG, producerProperty.getRetries());
             props.put(org.apache.kafka.clients.producer.ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
    diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/property/GatewayProperty.java b/damai-server/damai-gateway-service/src/main/java/com/damai/property/GatewayProperty.java
    index 06e6f6d8..d42f1e38 100644
    --- a/damai-server/damai-gateway-service/src/main/java/com/damai/property/GatewayProperty.java
    +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/property/GatewayProperty.java
    @@ -12,7 +12,9 @@ import org.springframework.stereotype.Component;
     @Component
     @Data
     public class GatewayProperty {
    -    //需要做频率限制的路径
    +    /**
    +     * 需要做频率限制的路径
    +     */
         @Value("${api.limit.paths:#{null}}")
         private String[] apiRestrictPaths;
         
    diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/service/ApiRestrictData.java b/damai-server/damai-gateway-service/src/main/java/com/damai/service/ApiRestrictData.java
    new file mode 100644
    index 00000000..4410d94f
    --- /dev/null
    +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/service/ApiRestrictData.java
    @@ -0,0 +1,22 @@
    +package com.damai.service;
    +
    +import lombok.Data;
    +
    +/**
    + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 
    + * @description: 接口请求记录 实体对象
    + * @author: 阿宽不是程序员
    + **/
    +@Data
    +public class ApiRestrictData {
    +
    +    private Long triggerResult;
    +    
    +    private Long triggerCallStat;
    +    
    +    private Long apiCount;
    +    
    +    private Long threshold;
    +    
    +    private Long messageIndex;
    +}
    diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/service/ApiRestrictService.java b/damai-server/damai-gateway-service/src/main/java/com/damai/service/ApiRestrictService.java
    index a510b265..1d22dc16 100644
    --- a/damai-server/damai-gateway-service/src/main/java/com/damai/service/ApiRestrictService.java
    +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/service/ApiRestrictService.java
    @@ -1,5 +1,6 @@
     package com.damai.service;
     
    +import cn.hutool.core.collection.CollectionUtil;
     import cn.hutool.core.date.DateUtil;
     import com.alibaba.fastjson.JSON;
     import com.alibaba.fastjson.JSONObject;
    @@ -7,6 +8,7 @@ import com.baidu.fsg.uid.UidGenerator;
     import com.damai.core.RedisKeyEnum;
     import com.damai.core.StringUtil;
     import com.damai.dto.ApiDataDto;
    +import com.damai.enums.ApiRuleType;
     import com.damai.enums.BaseCode;
     import com.damai.enums.RuleTimeUnit;
     import com.damai.exception.DaMaiFrameException;
    @@ -14,29 +16,25 @@ import com.damai.kafka.ApiDataMessageSend;
     import com.damai.property.GatewayProperty;
     import com.damai.redis.RedisCache;
     import com.damai.redis.RedisKeyWrap;
    +import com.damai.service.lua.ApiRestrictCacheOperate;
     import com.damai.util.DateUtils;
     import com.damai.vo.DepthRuleVo;
     import com.damai.vo.RuleVo;
     import lombok.extern.slf4j.Slf4j;
     import org.springframework.beans.factory.annotation.Autowired;
    -import org.springframework.core.io.ClassPathResource;
    -import org.springframework.data.redis.core.script.DefaultRedisScript;
     import org.springframework.http.HttpHeaders;
     import org.springframework.http.server.reactive.ServerHttpRequest;
    -import org.springframework.scripting.support.ResourceScriptSource;
     import org.springframework.stereotype.Component;
     import org.springframework.util.AntPathMatcher;
     import org.springframework.util.PathMatcher;
     
    -import javax.annotation.PostConstruct;
    -import javax.annotation.Resource;
     import java.util.ArrayList;
    +import java.util.Collections;
     import java.util.Comparator;
     import java.util.List;
     import java.util.Objects;
     import java.util.Optional;
     import java.util.stream.Collectors;
    -import java.util.stream.Stream;
     
     /**
      * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 
    @@ -56,27 +54,17 @@ public class ApiRestrictService {
         @Autowired(required = false)
         private ApiDataMessageSend apiDataMessageSend;
         
    -    @Resource
    -    private UidGenerator uidGenerator;
    -    
    -    private DefaultRedisScript redisScript;
    +    @Autowired
    +    private ApiRestrictCacheOperate apiRestrictCacheOperate;
         
    -    @PostConstruct
    -    public void init(){
    -        try {
    -            redisScript = new DefaultRedisScript<>();
    -            redisScript.setScriptSource(new ResourceScriptSource(new ClassPathResource("lua/apiLimit.lua")));
    -            redisScript.setResultType(List.class);
    -        } catch (Exception e) {
    -            log.error("redisScript init lua error",e);
    -        }
    -    }
    +    @Autowired
    +    private UidGenerator uidGenerator;
         
    -    public boolean checkApiRestrict(String requestURI){
    -        if (gatewayProperty.getApiRestrictPaths() != null && gatewayProperty.getApiRestrictPaths().length > 0) {
    +    public boolean checkApiRestrict(String requestUri){
    +        if (gatewayProperty.getApiRestrictPaths() != null) {
                 for (String apiRestrictPath : gatewayProperty.getApiRestrictPaths()) {
                     PathMatcher matcher = new AntPathMatcher();
    -                if(matcher.match(apiRestrictPath, requestURI)){
    +                if(matcher.match(apiRestrictPath, requestUri)){
                         return true;
                     }
                 }
    @@ -88,9 +76,9 @@ public class ApiRestrictService {
             if (checkApiRestrict(url)) {
                 long triggerResult = 0L;
                 long triggerCallStat = 0L;
    -            long apiCount = 0L;
    -            long threshold = 0L;
    -            long messageIndex = -1L;
    +            long apiCount;
    +            long threshold;
    +            long messageIndex;
                 String message = "";
                 
                 String ip = getIpAddress(request);
    @@ -110,71 +98,35 @@ public class ApiRestrictService {
                         depthRuleVoList = JSON.parseArray(depthRuleStr,DepthRuleVo.class);
                     }
                  
    -                int apiRuleType = 0;
    +                int apiRuleType = ApiRuleType.NO_RULE.getCode();
                     if (Optional.ofNullable(ruleVo).isPresent()) {
    -                    apiRuleType = 1;
    +                    apiRuleType = ApiRuleType.RULE.getCode();
                         message = ruleVo.getMessage();
                     }
    -                if (Optional.ofNullable(ruleVo).isPresent() && depthRuleVoList.size() > 0) {
    -                    apiRuleType = 2;
    +                if (Optional.ofNullable(ruleVo).isPresent() && CollectionUtil.isNotEmpty(depthRuleVoList)) {
    +                    apiRuleType = ApiRuleType.DEPTH_RULE.getCode();
                     }
    -                if (apiRuleType == 1 || apiRuleType == 2) {
    -                    JSONObject parameter = new JSONObject();
    +                if (apiRuleType == ApiRuleType.RULE.getCode() || apiRuleType == ApiRuleType.DEPTH_RULE.getCode()) {
                         
    -                    parameter.put("apiRuleType",apiRuleType);
    +                    assert ruleVo != null;
    +                    JSONObject parameter = getRuleParameter(apiRuleType,commonKey,ruleVo);
                         
    -                    String ruleKey = "rule_api_limit" + "_" + commonKey;
    -                    parameter.put("ruleKey",ruleKey);
    -              
    -                    parameter.put("statTime",String.valueOf(Objects.equals(ruleVo.getStatTimeType(), RuleTimeUnit.SECOND.getCode()) ? ruleVo.getStatTime() : ruleVo.getStatTime() * 60));
    -                    
    -                    parameter.put("threshold",ruleVo.getThreshold());
    -               
    -                    parameter.put("effectiveTime",String.valueOf(Objects.equals(ruleVo.getEffectiveTimeType(), RuleTimeUnit.SECOND.getCode()) ? ruleVo.getEffectiveTime() : ruleVo.getEffectiveTime() * 60));
    -                    
    -                    parameter.put("ruleLimitKey",RedisKeyWrap.createRedisKey(RedisKeyEnum.RULE_LIMIT,commonKey).getRelKey());
    -                    
    -                    parameter.put("zSetRuleStatKey",RedisKeyWrap.createRedisKey(RedisKeyEnum.Z_SET_RULE_STAT,commonKey).getRelKey());
    -                    
    -                    if (apiRuleType == 2) {
    -                        depthRuleVoList = sortStartTimeWindow(depthRuleVoList);
    -                        
    -                        parameter.put("depthRuleSize",String.valueOf(depthRuleVoList.size()));
    -                        
    -                        parameter.put("currentTime",System.currentTimeMillis());
    -                        
    -                        List depthRules = new ArrayList<>();
    -                        for (int i = 0; i < depthRuleVoList.size(); i++) {
    -                            JSONObject depthRule = new JSONObject();
    -                            DepthRuleVo depthRuleVo = depthRuleVoList.get(i);
    -                            
    -                            depthRule.put("statTime",Objects.equals(depthRuleVo.getStatTimeType(), RuleTimeUnit.SECOND.getCode()) ? depthRuleVo.getStatTime() : depthRuleVo.getStatTime() * 60);
    -                            
    -                            depthRule.put("threshold",depthRuleVo.getThreshold());
    -                            
    -                            depthRule.put("effectiveTime",String.valueOf(Objects.equals(depthRuleVo.getEffectiveTimeType(), RuleTimeUnit.SECOND.getCode()) ? depthRuleVo.getEffectiveTime() : depthRuleVo.getEffectiveTime() * 60));
    -                            
    -                            depthRule.put("depthRuleLimit",RedisKeyWrap.createRedisKey(RedisKeyEnum.DEPTH_RULE_LIMIT,i,commonKey).getRelKey());
    -
    -                            depthRule.put("startTimeWindowTimestamp",depthRuleVo.getStartTimeWindowTimestamp());
    -                            depthRule.put("endTimeWindowTimestamp",depthRuleVo.getEndTimeWindowTimestamp());
    -                            
    -                            depthRules.add(depthRule);
    -                        }
    +                    if (apiRuleType == ApiRuleType.DEPTH_RULE.getCode()) {
                             
    -                        parameter.put("depthRules",depthRules);
    +                        parameter = getDepthRuleParameter(parameter,commonKey,depthRuleVoList);
                         }
    -                    List executeResult = (ArrayList)redisCache.getInstance().execute(redisScript, Stream.of(parameter).map(p -> JSON.toJSONString(p)).collect(Collectors.toList()), new String[]{});
    -                
    -                    triggerResult = Optional.ofNullable(executeResult.get(0)).orElse(0L);
    +                    ApiRestrictData apiRestrictData = apiRestrictCacheOperate
    +                            .apiRuleOperate(Collections.singletonList(JSON.toJSONString(parameter)), new Object[]{});
    +                    
    +                    triggerResult = apiRestrictData.getTriggerResult();
                  
    -                    triggerCallStat = Optional.ofNullable(executeResult.get(1)).orElse(0L);
    +                    triggerCallStat = apiRestrictData.getTriggerCallStat();
                     
    -                    apiCount = Optional.ofNullable(executeResult.get(2)).orElse(0L);
    +                    apiCount = apiRestrictData.getApiCount();
                       
    -                    threshold = Optional.ofNullable(executeResult.get(3)).orElse(0L);
    +                    threshold = apiRestrictData.getThreshold();
                  
    -                    messageIndex = Optional.ofNullable(executeResult.get(4)).orElse(-1L);
    +                    messageIndex = apiRestrictData.getMessageIndex();
                         if (messageIndex != -1) {
                             message = Optional.ofNullable(depthRuleVoList.get((int)messageIndex))
                                     .map(DepthRuleVo::getMessage)
    @@ -187,7 +139,7 @@ public class ApiRestrictService {
                     log.error("redis Lua eror", e);
                 }
                 if (triggerResult == 1) {
    -                if (triggerCallStat == 1 || triggerCallStat == 2) {
    +                if (triggerCallStat == ApiRuleType.RULE.getCode() || triggerCallStat == ApiRuleType.DEPTH_RULE.getCode()) {
                         saveApiData(request, url, (int)triggerCallStat);
                     }
                     String defaultMessage = BaseCode.API_RULE_TRIGGER.getMsg();
    @@ -199,11 +151,62 @@ public class ApiRestrictService {
             }
         }
         
    +    public JSONObject getRuleParameter(int apiRuleType, String commonKey, RuleVo ruleVo){
    +        JSONObject parameter = new JSONObject();
    +        
    +        parameter.put("apiRuleType",apiRuleType);
    +        
    +        String ruleKey = "rule_api_limit" + "_" + commonKey;
    +        parameter.put("ruleKey",ruleKey);
    +        
    +        parameter.put("statTime",String.valueOf(Objects.equals(ruleVo.getStatTimeType(), RuleTimeUnit.SECOND.getCode()) ? ruleVo.getStatTime() : ruleVo.getStatTime() * 60));
    +        
    +        parameter.put("threshold",ruleVo.getThreshold());
    +        
    +        parameter.put("effectiveTime",String.valueOf(Objects.equals(ruleVo.getEffectiveTimeType(), RuleTimeUnit.SECOND.getCode()) ? ruleVo.getEffectiveTime() : ruleVo.getEffectiveTime() * 60));
    +        
    +        parameter.put("ruleLimitKey",RedisKeyWrap.createRedisKey(RedisKeyEnum.RULE_LIMIT,commonKey).getRelKey());
    +        
    +        parameter.put("zSetRuleStatKey",RedisKeyWrap.createRedisKey(RedisKeyEnum.Z_SET_RULE_STAT,commonKey).getRelKey());
    +        
    +        return parameter;
    +    }
    +    
    +    public JSONObject getDepthRuleParameter(JSONObject parameter,String commonKey,List depthRuleVoList){
    +        depthRuleVoList = sortStartTimeWindow(depthRuleVoList);
    +        
    +        parameter.put("depthRuleSize",String.valueOf(depthRuleVoList.size()));
    +        
    +        parameter.put("currentTime",System.currentTimeMillis());
    +        
    +        List depthRules = new ArrayList<>();
    +        for (int i = 0; i < depthRuleVoList.size(); i++) {
    +            JSONObject depthRule = new JSONObject();
    +            DepthRuleVo depthRuleVo = depthRuleVoList.get(i);
    +            
    +            depthRule.put("statTime",Objects.equals(depthRuleVo.getStatTimeType(), RuleTimeUnit.SECOND.getCode()) ? depthRuleVo.getStatTime() : depthRuleVo.getStatTime() * 60);
    +            
    +            depthRule.put("threshold",depthRuleVo.getThreshold());
    +            
    +            depthRule.put("effectiveTime",String.valueOf(Objects.equals(depthRuleVo.getEffectiveTimeType(), RuleTimeUnit.SECOND.getCode()) ? depthRuleVo.getEffectiveTime() : depthRuleVo.getEffectiveTime() * 60));
    +            
    +            depthRule.put("depthRuleLimit",RedisKeyWrap.createRedisKey(RedisKeyEnum.DEPTH_RULE_LIMIT,i,commonKey).getRelKey());
    +            
    +            depthRule.put("startTimeWindowTimestamp",depthRuleVo.getStartTimeWindowTimestamp());
    +            depthRule.put("endTimeWindowTimestamp",depthRuleVo.getEndTimeWindowTimestamp());
    +            
    +            depthRules.add(depthRule);
    +        }
    +        
    +        parameter.put("depthRules",depthRules);
    +        
    +        return parameter;
    +    }
    +    
         public List sortStartTimeWindow(List depthRuleVoList){
    -        return depthRuleVoList.stream().map(depthRuleVo -> {
    +        return depthRuleVoList.stream().peek(depthRuleVo -> {
                 depthRuleVo.setStartTimeWindowTimestamp(getTimeWindowTimestamp(depthRuleVo.getStartTimeWindow()));
                 depthRuleVo.setEndTimeWindowTimestamp((getTimeWindowTimestamp(depthRuleVo.getEndTimeWindow())));
    -            return depthRuleVo;
             }).sorted(Comparator.comparing(DepthRuleVo::getStartTimeWindowTimestamp)).collect(Collectors.toList());
         }
         
    @@ -218,38 +221,40 @@ public class ApiRestrictService {
           * @param request 请求
           */
         public static String getIpAddress(ServerHttpRequest request) {
    +        String unknown = "unknown";
    +        String split = ",";
             HttpHeaders headers = request.getHeaders();
             String ip = headers.getFirst("x-forwarded-for");
    -        if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
    +        if (ip != null && ip.length() != 0 && !unknown.equalsIgnoreCase(ip)) {
                 // 多次反向代理后会有多个ip值,第一个ip才是真实ip
    -            if (ip.contains(",")) {
    -                ip = ip.split(",")[0];
    +            if (ip.contains(split)) {
    +                ip = ip.split(split)[0];
                 }
             }
    -        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
    +        if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
                 ip = headers.getFirst("Proxy-Client-IP");
             }
    -        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
    +        if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
                 ip = headers.getFirst("WL-Proxy-Client-IP");
             }
    -        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
    +        if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
                 ip = headers.getFirst("HTTP_CLIENT_IP");
             }
    -        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
    +        if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
                 ip = headers.getFirst("HTTP_X_FORWARDED_FOR");
             }
    -        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
    +        if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
                 ip = headers.getFirst("X-Real-IP");
             }
    -        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
    -            ip = request.getRemoteAddress().getAddress().getHostAddress();
    +        if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
    +            ip = Objects.requireNonNull(request.getRemoteAddress()).getAddress().getHostAddress();
             }
             return ip;
         }
         
         public void saveApiData(ServerHttpRequest request, String apiUrl, Integer type){
             ApiDataDto apiDataDto = new ApiDataDto();
    -        apiDataDto.setId(uidGenerator.getUID());
    +        apiDataDto.setId(uidGenerator.getUid());
             apiDataDto.setApiAddress(getIpAddress(request));
             apiDataDto.setApiUrl(apiUrl);
             apiDataDto.setCreateTime(DateUtils.now());
    diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/service/lua/ApiRestrictCacheOperate.java b/damai-server/damai-gateway-service/src/main/java/com/damai/service/lua/ApiRestrictCacheOperate.java
    new file mode 100644
    index 00000000..7ee77dc6
    --- /dev/null
    +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/service/lua/ApiRestrictCacheOperate.java
    @@ -0,0 +1,45 @@
    +package com.damai.service.lua;
    +
    +import com.alibaba.fastjson.JSON;
    +import com.damai.redis.RedisCache;
    +import com.damai.service.ApiRestrictData;
    +import lombok.extern.slf4j.Slf4j;
    +import org.springframework.beans.factory.annotation.Autowired;
    +import org.springframework.core.io.ClassPathResource;
    +import org.springframework.data.redis.core.script.DefaultRedisScript;
    +import org.springframework.scripting.support.ResourceScriptSource;
    +import org.springframework.stereotype.Component;
    +
    +import javax.annotation.PostConstruct;
    +import java.util.List;
    +
    +/**
    + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 
    + * @description: lua执行
    + * @author: 阿宽不是程序员
    + **/
    +@Slf4j
    +@Component
    +public class ApiRestrictCacheOperate {
    +    
    +    @Autowired
    +    private RedisCache redisCache;
    +    
    +    private DefaultRedisScript redisScript;
    +    
    +    @PostConstruct
    +    public void init(){
    +        try {
    +            redisScript = new DefaultRedisScript<>();
    +            redisScript.setScriptSource(new ResourceScriptSource(new ClassPathResource("lua/apiLimit.lua")));
    +            redisScript.setResultType(String.class);
    +        } catch (Exception e) {
    +            log.error("redisScript init lua error",e);
    +        }
    +    }
    +    
    +    public ApiRestrictData apiRuleOperate(List keys, Object[] args){
    +        Object object = redisCache.getInstance().execute(redisScript, keys, args);
    +        return JSON.parseObject((String)object, ApiRestrictData.class);
    +    }
    +}
    diff --git a/damai-server/damai-gateway-service/src/main/resources/log4j2.xml b/damai-server/damai-gateway-service/src/main/resources/log4j2.xml
    index 124e4903..f2d20fd0 100644
    --- a/damai-server/damai-gateway-service/src/main/resources/log4j2.xml
    +++ b/damai-server/damai-gateway-service/src/main/resources/log4j2.xml
    @@ -10,10 +10,10 @@
         
             
             .
    -        gateway
    +        gateway-service
             local
             log
    -        [gateway] [%X{traceId}] %d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
    +        [gateway-service] [%X{traceId}] %d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
             UTF-8
             com.damai
         
    diff --git a/damai-server/damai-gateway-service/src/main/resources/lua/apiLimit.lua b/damai-server/damai-gateway-service/src/main/resources/lua/apiLimit.lua
    index a4072914..79310ea6 100644
    --- a/damai-server/damai-gateway-service/src/main/resources/lua/apiLimit.lua
    +++ b/damai-server/damai-gateway-service/src/main/resources/lua/apiLimit.lua
    @@ -66,15 +66,18 @@ if (api_rule_type == 2) then
                         trigger_result = 1
                         trigger_call_Stat = 2
                         message_index = index
    -                    return {trigger_result,trigger_call_Stat,api_count,threshold,message_index}
    +                    return string.format('{"triggerResult": %d, "triggerCallStat": %d, "apiCount": %d, "threshold": %d, "messageIndex": %d}'
    +                    ,trigger_result,trigger_call_Stat,api_count,threshold,message_index)
                     end
                 end
                 if (redis.call('exists', depth_rule_limit_key) == 1) then
                     trigger_result = 1
                     message_index = index
    -                return {trigger_result,trigger_call_Stat,api_count,threshold,message_index}
    +                return string.format('{"triggerResult": %d, "triggerCallStat": %d, "apiCount": %d, "threshold": %d, "messageIndex": %d}'
    +                ,trigger_result,trigger_call_Stat,api_count,threshold,message_index)
                 end
             end
         end
     end
    -return {trigger_result,trigger_call_Stat,api_count,threshold,message_index}
    +return string.format('{"triggerResult": %d, "triggerCallStat": %d, "apiCount": %d, "threshold": %d, "messageIndex": %d}'
    +,trigger_result,trigger_call_Stat,api_count,threshold,message_index)
    diff --git a/damai-server/damai-job-service/src/main/java/com/damai/controller/JobInfoController.java b/damai-server/damai-job-service/src/main/java/com/damai/controller/JobInfoController.java
    index f786691f..de8b766a 100644
    --- a/damai-server/damai-job-service/src/main/java/com/damai/controller/JobInfoController.java
    +++ b/damai-server/damai-job-service/src/main/java/com/damai/controller/JobInfoController.java
    @@ -24,7 +24,7 @@ import javax.validation.Valid;
      **/
     @RestController
     @RequestMapping("/jobInfo")
    -@Api(tags = "jobInfo", description = "任务")
    +@Api(tags = "jobInfo", value = "任务")
     public class JobInfoController {
         
         @Autowired
    diff --git a/damai-server/damai-job-service/src/main/java/com/damai/controller/JobRunRecordController.java b/damai-server/damai-job-service/src/main/java/com/damai/controller/JobRunRecordController.java
    index 855c7da3..1aba59c1 100644
    --- a/damai-server/damai-job-service/src/main/java/com/damai/controller/JobRunRecordController.java
    +++ b/damai-server/damai-job-service/src/main/java/com/damai/controller/JobRunRecordController.java
    @@ -19,15 +19,15 @@ import javax.validation.Valid;
      **/
     @RestController
     @RequestMapping("/jobRunRecord")
    -@Api(tags = "jobRunRecord", description = "任务执行记录")
    +@Api(tags = "jobRunRecord", value = "任务执行记录")
     public class JobRunRecordController {
         
         @Autowired
         private JobRunRecordService jobRunRecordService;
         
         @RequestMapping(value = "/callBack",method = RequestMethod.POST)
    -    public ApiResponse callBack(@Valid @RequestBody JobCallBackDto JobCallBackDto) {
    -        return ApiResponse.ok(jobRunRecordService.callBack(JobCallBackDto));
    +    public ApiResponse callBack(@Valid @RequestBody JobCallBackDto jobCallBackDto) {
    +        return ApiResponse.ok(jobRunRecordService.callBack(jobCallBackDto));
         }
         
         
    diff --git a/damai-server/damai-job-service/src/main/java/com/damai/mapper/JobRunRecordMapper.java b/damai-server/damai-job-service/src/main/java/com/damai/mapper/JobRunRecordMapper.java
    index ac40da87..1eabfd50 100644
    --- a/damai-server/damai-job-service/src/main/java/com/damai/mapper/JobRunRecordMapper.java
    +++ b/damai-server/damai-job-service/src/main/java/com/damai/mapper/JobRunRecordMapper.java
    @@ -10,5 +10,10 @@ import com.damai.entity.JobRunRecord;
      **/
     public interface JobRunRecordMapper extends BaseMapper {
         
    +    /**
    +     * 上报日志状态
    +     * @param jobRunRecord 数据
    +     * @return 结果
    +     * */
         int callBack(JobRunRecord jobRunRecord);
     }
    diff --git a/damai-server/damai-job-service/src/main/java/com/damai/run/ServiceJobRun.java b/damai-server/damai-job-service/src/main/java/com/damai/run/ServiceJobRun.java
    index 0742891f..5195e8a8 100644
    --- a/damai-server/damai-job-service/src/main/java/com/damai/run/ServiceJobRun.java
    +++ b/damai-server/damai-job-service/src/main/java/com/damai/run/ServiceJobRun.java
    @@ -61,7 +61,7 @@ public class ServiceJobRun {
             Integer method = jobInfo.getMethod();
             String params = jobInfo.getParams();
             
    -        String traceId = String.valueOf(uidGenerator.getUID());
    +        String traceId = String.valueOf(uidGenerator.getUid());
             
             JSONObject jsonObjectHeaders = new JSONObject();
             if (StringUtil.isNotEmpty(headers)) {
    @@ -71,7 +71,7 @@ public class ServiceJobRun {
             jsonObjectHeaders.put(TRACE_ID,traceId);
             
             JobRunRecord jobRunRecord = new JobRunRecord();
    -        jobRunRecord.setId(uidGenerator.getUID());
    +        jobRunRecord.setId(uidGenerator.getUid());
             jobRunRecord.setJobId(id);
             jobRunRecord.setCreateTime(new Date());
             jobRunRecord.setTraceId(traceId);
    @@ -120,7 +120,7 @@ public class ServiceJobRun {
             HttpEntity requestEntity = new HttpEntity(header);
             if (StringUtil.isNotEmpty(params)) {
                 JSONObject jsonObjectParams = JSONObject.parseObject(params);
    -            url = splicingURL(url, jsonObjectParams);
    +            url = splicingUrl(url, jsonObjectParams);
             }
             ResponseEntity exchange = restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class);
             
    @@ -130,21 +130,22 @@ public class ServiceJobRun {
         /**
          * get请求拼接url
          *
    -     * @param url
    -     * @param params
    -     * @return
    +     * @param url 请求
    +     * @param params 参数
    +     * @return 结果
          */
    -    private String splicingURL(String url, JSONObject params) {
    +    private String splicingUrl(String url, JSONObject params) {
    +        String questionMark = "?";
             if (null == params) {
                 return url;
             }
             StringBuilder sb = new StringBuilder(url);
    -        if (url.contains("?")) {
    -            if (!url.endsWith("?")) {
    +        if (url.contains(questionMark)) {
    +            if (!url.endsWith(questionMark)) {
                     sb.append("&");
                 }
             } else {
    -            sb.append("?");
    +            sb.append(questionMark);
             }
             for (String str : params.keySet()) {
                 sb.append(str).append("=").append(params.getString(str)).append("&");
    @@ -175,7 +176,7 @@ public class ServiceJobRun {
             }
             String result = null;
             if (isApplication) {
    -            Map paramMap = new HashMap<>();
    +            Map paramMap = new HashMap<>(8);
                 if (StringUtil.isNotEmpty(params)) {
                     JSONObject jsonObjectParams =  JSONObject.parseObject(params);
                     for (String jsonObjectParam : jsonObjectParams.keySet()) {
    diff --git a/damai-server/damai-job-service/src/main/java/com/damai/service/JobInfoService.java b/damai-server/damai-job-service/src/main/java/com/damai/service/JobInfoService.java
    index 0d379ada..5b583895 100644
    --- a/damai-server/damai-job-service/src/main/java/com/damai/service/JobInfoService.java
    +++ b/damai-server/damai-job-service/src/main/java/com/damai/service/JobInfoService.java
    @@ -43,7 +43,7 @@ public class JobInfoService extends ServiceImpl {
         public void add(final JobInfoDto jobInfoDto) {
             JobInfo jobInfo = new JobInfo();
             BeanUtils.copyProperties(jobInfoDto,jobInfo);
    -        jobInfo.setId(uidGenerator.getUID());
    +        jobInfo.setId(uidGenerator.getUid());
             jobInfo.setCreateTime(new Date());
             jobInfoMapper.insert(jobInfo);
         }
    diff --git a/damai-server/damai-mybatis-puls-service/src/main/java/com/damai/MybatisPlusGenerator.java b/damai-server/damai-mybatis-puls-service/src/main/java/com/damai/MybatisPlusGenerator.java
    index af8a6e9b..c058b3e2 100644
    --- a/damai-server/damai-mybatis-puls-service/src/main/java/com/damai/MybatisPlusGenerator.java
    +++ b/damai-server/damai-mybatis-puls-service/src/main/java/com/damai/MybatisPlusGenerator.java
    @@ -20,7 +20,6 @@ public class MybatisPlusGenerator {
                     .globalConfig(builder -> {
                         builder.author("k") // 设置作者
                                 //.enableSwagger() // 开启 swagger 模式
    -                            .fileOverride() // 覆盖已生成文件
                                 .outputDir("D://"); // 指定输出目录
                     })
                     .dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
    @@ -39,13 +38,17 @@ public class MybatisPlusGenerator {
                     .packageConfig(builder -> {
                         builder.parent("baomidou") // 设置父包名
                                 .moduleName("system") // 设置父包模块名
    -                            .pathInfo(Collections.singletonMap(OutputFile.xml, "D://baomidou/mybatispluscode")); // 设置mapperXml生成路径
    +                            // 设置mapperXml生成路径
    +                            .pathInfo(Collections.singletonMap(OutputFile.xml, "D://baomidou/mybatispluscode")); 
                     })
                     .strategyConfig(builder -> {
    -                    builder.addInclude("d_user_mobile") // 设置需要生成的表名
    -                            .addTablePrefix("d_"); // 设置过滤表前缀
    +                    // 设置需要生成的表名
    +                    builder.addInclude("d_user_mobile")
    +                            // 设置过滤表前缀
    +                            .addTablePrefix("d_"); 
                     })
    -                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
    +                // 使用Freemarker引擎模板,默认的是Velocity引擎模板
    +                .templateEngine(new FreemarkerTemplateEngine()) 
                     .execute();
         }
     }
    diff --git a/damai-server/damai-order-service/src/main/java/com/damai/controller/OrderController.java b/damai-server/damai-order-service/src/main/java/com/damai/controller/OrderController.java
    index 9c927deb..104d1c69 100644
    --- a/damai-server/damai-order-service/src/main/java/com/damai/controller/OrderController.java
    +++ b/damai-server/damai-order-service/src/main/java/com/damai/controller/OrderController.java
    @@ -31,7 +31,7 @@ import java.util.Map;
      **/
     @RestController
     @RequestMapping("/order")
    -@Api(tags = "order", description = "订单")
    +@Api(tags = "order", value = "订单")
     public class OrderController {
         
         @Autowired
    diff --git a/damai-server/damai-order-service/src/main/java/com/damai/mapper/OrderTicketUserMapper.java b/damai-server/damai-order-service/src/main/java/com/damai/mapper/OrderTicketUserMapper.java
    index 0fed3f2c..64a6b93a 100644
    --- a/damai-server/damai-order-service/src/main/java/com/damai/mapper/OrderTicketUserMapper.java
    +++ b/damai-server/damai-order-service/src/main/java/com/damai/mapper/OrderTicketUserMapper.java
    @@ -14,6 +14,11 @@ import java.util.List;
      **/
     public interface OrderTicketUserMapper extends BaseMapper {
         
    +    /**
    +     * 查询订单下购票人数量
    +     * @param orderNumberList 参数
    +     * @return 结果
    +     * */
         List selectOrderTicketUserAggregate(@Param("orderNumberList")List orderNumberList);
     
     }
    diff --git a/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java b/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java
    index 7c308e0e..1c8461eb 100644
    --- a/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java
    +++ b/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java
    @@ -127,7 +127,7 @@ public class OrderService extends ServiceImpl {
             for (OrderTicketUserCreateDto orderTicketUserCreateDto : orderCreateDto.getOrderTicketUserCreateDtoList()) {
                 OrderTicketUser orderTicketUser = new OrderTicketUser();
                 BeanUtil.copyProperties(orderTicketUserCreateDto,orderTicketUser);
    -            orderTicketUser.setId(uidGenerator.getUID());
    +            orderTicketUser.setId(uidGenerator.getUid());
                 orderTicketUserList.add(orderTicketUser);
             }
             orderMapper.insert(order);
    @@ -253,19 +253,7 @@ public class OrderService extends ServiceImpl {
             LambdaQueryWrapper orderLambdaQueryWrapper =
                     Wrappers.lambdaQuery(Order.class).eq(Order::getOrderNumber, orderNumber);
             Order order = orderMapper.selectOne(orderLambdaQueryWrapper);
    -        if (Objects.isNull(order)) {
    -            throw new DaMaiFrameException(BaseCode.ORDER_NOT_EXIST);
    -        }
    -        if (Objects.equals(order.getOrderStatus(), OrderStatus.CANCEL.getCode())) {
    -            log.info("订单已取消 orderNumber : {}",orderNumber);
    -            return;
    -        }
    -        if (Objects.equals(order.getOrderStatus(), OrderStatus.PAY.getCode())) {
    -            log.info("订单已支付 orderNumber : {}",orderNumber);
    -            return;
    -        }
    -        if (Objects.equals(order.getOrderStatus(), OrderStatus.REFUND.getCode())) {
    -            log.info("订单已退单 orderNumber : {}",orderNumber);
    +        if (!checkOrderStatus(order)) {
                 return;
             }
             //将订单更新为取消或者支付状态
    @@ -301,17 +289,39 @@ public class OrderService extends ServiceImpl {
             if (CollectionUtil.isEmpty(orderTicketUserList)) {
                 throw new DaMaiFrameException(BaseCode.TICKET_USER_ORDER_NOT_EXIST);
             }
    -        Long programId = orderTicketUserList.get(0).getProgramId();
    +        Long programId = order.getProgramId();
             //查询到购票人的座位
             List seatIdList =
                     orderTicketUserList.stream().map(OrderTicketUser::getSeatId).map(String::valueOf).collect(Collectors.toList());
    +        //更新缓存相关数据
    +        updateProgramRelatedData(programId,seatIdList,orderStatus);
    +    }
    +    
    +    public boolean checkOrderStatus(Order order){
    +        if (Objects.isNull(order)) {
    +            throw new DaMaiFrameException(BaseCode.ORDER_NOT_EXIST);
    +        }
    +        if (Objects.equals(order.getOrderStatus(), OrderStatus.CANCEL.getCode())) {
    +            log.info("订单已取消 orderNumber : {}",order.getOrderNumber());
    +            return false;
    +        }
    +        if (Objects.equals(order.getOrderStatus(), OrderStatus.PAY.getCode())) {
    +            log.info("订单已支付 orderNumber : {}",order.getOrderNumber());
    +            return false;
    +        }
    +        if (Objects.equals(order.getOrderStatus(), OrderStatus.REFUND.getCode())) {
    +            log.info("订单已退单 orderNumber : {}",order.getOrderNumber());
    +            return false;
    +        }
    +        return true;
    +    }
    +    
    +    public void updateProgramRelatedData(Long programId,List seatIdList,OrderStatus orderStatus){
             //从redis中查询锁定中的座位
             List seatVoList = redisCache.multiGetForHash(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SEAT_LOCK_HASH, programId), seatIdList, SeatVo.class);
             if (CollectionUtil.isEmpty(seatVoList)) {
                 throw new DaMaiFrameException(BaseCode.LOCK_SEAT_LIST_EMPTY);
             }
    -        
    -        /**=====操作缓存相关数据====*/
             //redis解除锁座位
             List unLockSeatIdList = seatVoList.stream().map(SeatVo::getId).map(String::valueOf).collect(Collectors.toList());
             Map unLockSeatVoMap = seatVoList.stream().collect(Collectors
    diff --git a/damai-server/damai-pay-service/src/main/java/com/damai/controller/PayController.java b/damai-server/damai-pay-service/src/main/java/com/damai/controller/PayController.java
    index d9c2be08..1ac16277 100644
    --- a/damai-server/damai-pay-service/src/main/java/com/damai/controller/PayController.java
    +++ b/damai-server/damai-pay-service/src/main/java/com/damai/controller/PayController.java
    @@ -24,7 +24,7 @@ import javax.validation.Valid;
      **/
     @RestController
     @RequestMapping("/pay")
    -@Api(tags = "pay", description = "支付")
    +@Api(tags = "pay", value = "支付")
     public class PayController {
         
         @Autowired
    diff --git a/damai-server/damai-pay-service/src/main/java/com/damai/pay/PayStrategyHandler.java b/damai-server/damai-pay-service/src/main/java/com/damai/pay/PayStrategyHandler.java
    index 4e5d44e6..7c325f0e 100644
    --- a/damai-server/damai-pay-service/src/main/java/com/damai/pay/PayStrategyHandler.java
    +++ b/damai-server/damai-pay-service/src/main/java/com/damai/pay/PayStrategyHandler.java
    @@ -11,14 +11,42 @@ import java.util.Map;
      * @author: 阿宽不是程序员
      **/
     public interface PayStrategyHandler {
    -    
    +    /**
    +     * 支付
    +     * @param outTradeNo 订单号
    +     * @param price 支付价格
    +     * @param subject 标题
    +     * @param notifyUrl 回调地址
    +     * @param returnUrl 支付后返回地址
    +     * @return 结果
    +     * */
         PayResult pay(String outTradeNo, BigDecimal price, String subject, String notifyUrl, String returnUrl);
         
    +    /**
    +     * 验签
    +     * @param params 参数
    +     * @return 结果
    +     * */
         boolean signVerify(Map params);
         
    +    /**
    +     * 数据验证
    +     * @param params 参数
    +     * @param payBill 支付账单
    +     * @return 结果
    +     * */
         boolean dataVerify(Map params, PayBill payBill);
         
    +    /**
    +     * 状态查询
    +     * @param outTradeNo 订单号
    +     * @return 结果
    +     * */
         TradeResult queryTrade(String outTradeNo);
         
    +    /**
    +     * 支付渠道
    +     * @return 结果
    +     * */
         String getChannel();
     }
    diff --git a/damai-server/damai-pay-service/src/main/java/com/damai/pay/alipay/AlipayStrategyHandler.java b/damai-server/damai-pay-service/src/main/java/com/damai/pay/alipay/AlipayStrategyHandler.java
    index 806b479e..34977cd0 100644
    --- a/damai-server/damai-pay-service/src/main/java/com/damai/pay/alipay/AlipayStrategyHandler.java
    +++ b/damai-server/damai-pay-service/src/main/java/com/damai/pay/alipay/AlipayStrategyHandler.java
    @@ -106,7 +106,7 @@ public class AlipayStrategyHandler implements PayStrategyHandler {
             }
             //在支付宝的业务通知中,只有交易通知状态为 TRADE_SUCCESS时,支付宝才会认定为买家付款成功
             String tradeStatus = params.get("trade_status");
    -        if(!"TRADE_SUCCESS".equals(tradeStatus)){
    +        if(!AlipayTradeStatus.TRADE_SUCCESS.getValue().equals(tradeStatus)){
                 log.error("支付未成功 tradeStatus : {}",tradeStatus);
                 return false;
             }
    @@ -115,6 +115,8 @@ public class AlipayStrategyHandler implements PayStrategyHandler {
         
         @Override
         public TradeResult queryTrade(String outTradeNo) {
    +        String successCode = "10000";
    +        String successMsg = "Success";
             TradeResult tradeResult = new TradeResult();
             tradeResult.setSuccess(false);
             try {
    @@ -128,7 +130,7 @@ public class AlipayStrategyHandler implements PayStrategyHandler {
                     JSONObject alipayTradeQueryResponse = jsonResponse.getJSONObject("alipay_trade_query_response");
                     String code = alipayTradeQueryResponse.getString("code");
                     String msg = alipayTradeQueryResponse.getString("msg");
    -                if ("10000".equals(code) && "Success".equals(msg)) {
    +                if (successCode.equals(code) && successMsg.equals(msg)) {
                         tradeResult.setSuccess(true);
                         tradeResult.setOutTradeNo(alipayTradeQueryResponse.getString("out_trade_no"));
                         tradeResult.setTotalAmount(new BigDecimal(alipayTradeQueryResponse.getString("total_amount")));
    diff --git a/damai-server/damai-pay-service/src/main/java/com/damai/service/PayService.java b/damai-server/damai-pay-service/src/main/java/com/damai/service/PayService.java
    index 11b4b2ab..bacdc0b9 100644
    --- a/damai-server/damai-pay-service/src/main/java/com/damai/service/PayService.java
    +++ b/damai-server/damai-pay-service/src/main/java/com/damai/service/PayService.java
    @@ -71,7 +71,7 @@ public class PayService {
                     payDto.getSubject(),payDto.getNotifyUrl(),payDto.getReturnUrl());
             if (pay.isSuccess()) {
                 payBill = new PayBill();
    -            payBill.setId(uidGenerator.getUID());
    +            payBill.setId(uidGenerator.getUid());
                 payBill.setOutOrderNo(String.valueOf(payDto.getOrderNumber()));
                 payBill.setPayChannel(payDto.getChannel());
                 payBill.setPayScene("生产");
    diff --git a/damai-server/damai-pay-service/src/main/resources/log4j2.xml b/damai-server/damai-pay-service/src/main/resources/log4j2.xml
    index 8bba99ee..c378f292 100644
    --- a/damai-server/damai-pay-service/src/main/resources/log4j2.xml
    +++ b/damai-server/damai-pay-service/src/main/resources/log4j2.xml
    @@ -10,10 +10,10 @@
         
             
             .
    -        channel-data-service
    +        pay-service
             local
             log
    -        [channel-data-service] [%X{traceId}] %d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
    +        [pay-service] [%X{traceId}] %d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
             UTF-8
             com.damai
         
    diff --git a/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramCategoryController.java b/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramCategoryController.java
    index e164fd70..46d22823 100644
    --- a/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramCategoryController.java
    +++ b/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramCategoryController.java
    @@ -23,7 +23,7 @@ import java.util.List;
      **/
     @RestController
     @RequestMapping("/program/category")
    -@Api(tags = "program-category", description = "节目类型")
    +@Api(tags = "program-category", value = "节目类型")
     public class ProgramCategoryController {
         
         @Autowired
    diff --git a/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramController.java b/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramController.java
    index 9d357695..4f44b6e6 100644
    --- a/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramController.java
    +++ b/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramController.java
    @@ -29,7 +29,7 @@ import java.util.Map;
      **/
     @RestController
     @RequestMapping("/program")
    -@Api(tags = "program", description = "节目")
    +@Api(tags = "program", value = "节目")
     public class ProgramController {
         
         @Autowired
    diff --git a/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramOrderController.java b/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramOrderController.java
    index 0fac22ba..556cbcb0 100644
    --- a/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramOrderController.java
    +++ b/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramOrderController.java
    @@ -20,7 +20,7 @@ import javax.validation.Valid;
      **/
     @RestController
     @RequestMapping("/program/order")
    -@Api(tags = "program-order", description = "节目订单")
    +@Api(tags = "program-order", value = "节目订单")
     public class ProgramOrderController {
         
         @Autowired
    diff --git a/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramShowTimeController.java b/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramShowTimeController.java
    index bc11b594..50ba33c1 100644
    --- a/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramShowTimeController.java
    +++ b/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramShowTimeController.java
    @@ -20,7 +20,7 @@ import javax.validation.Valid;
      **/
     @RestController
     @RequestMapping("/program/show/time")
    -@Api(tags = "program-show-time", description = "节目演出时间")
    +@Api(tags = "program-show-time", value = "节目演出时间")
     public class ProgramShowTimeController {
         
         @Autowired
    diff --git a/damai-server/damai-program-service/src/main/java/com/damai/controller/SeatController.java b/damai-server/damai-program-service/src/main/java/com/damai/controller/SeatController.java
    index 50f003c1..6a456764 100644
    --- a/damai-server/damai-program-service/src/main/java/com/damai/controller/SeatController.java
    +++ b/damai-server/damai-program-service/src/main/java/com/damai/controller/SeatController.java
    @@ -20,7 +20,7 @@ import javax.validation.Valid;
      **/
     @RestController
     @RequestMapping("/seat")
    -@Api(tags = "seat", description = "座位")
    +@Api(tags = "seat", value = "座位")
     public class SeatController {
         
         @Autowired
    diff --git a/damai-server/damai-program-service/src/main/java/com/damai/controller/TicketCategoryController.java b/damai-server/damai-program-service/src/main/java/com/damai/controller/TicketCategoryController.java
    index 74446f1a..0a4dfc70 100644
    --- a/damai-server/damai-program-service/src/main/java/com/damai/controller/TicketCategoryController.java
    +++ b/damai-server/damai-program-service/src/main/java/com/damai/controller/TicketCategoryController.java
    @@ -20,7 +20,7 @@ import javax.validation.Valid;
      **/
     @RestController
     @RequestMapping("/ticket/category")
    -@Api(tags = "ticket-category", description = "票档")
    +@Api(tags = "ticket-category", value = "票档")
     public class TicketCategoryController {
         
         @Autowired
    diff --git a/damai-server/damai-program-service/src/main/java/com/damai/entity/Program.java b/damai-server/damai-program-service/src/main/java/com/damai/entity/Program.java
    index 8d0ce1cc..c779fdc3 100644
    --- a/damai-server/damai-program-service/src/main/java/com/damai/entity/Program.java
    +++ b/damai-server/damai-program-service/src/main/java/com/damai/entity/Program.java
    @@ -42,12 +42,12 @@ public class Program extends BaseData implements Serializable {
          */
         private String title;
         
    -    /*
    +    /**
          * 艺人
          * */
         private String actor;
         
    -    /*
    +    /**
          * 地点
          * */
         private String place;
    diff --git a/damai-server/damai-program-service/src/main/java/com/damai/mapper/ProgramMapper.java b/damai-server/damai-program-service/src/main/java/com/damai/mapper/ProgramMapper.java
    index 27a66cf9..81efc9de 100644
    --- a/damai-server/damai-program-service/src/main/java/com/damai/mapper/ProgramMapper.java
    +++ b/damai-server/damai-program-service/src/main/java/com/damai/mapper/ProgramMapper.java
    @@ -15,5 +15,11 @@ import org.apache.ibatis.annotations.Param;
      **/
     public interface ProgramMapper extends BaseMapper {
         
    +    /**
    +     * 分页查询
    +     * @param page 分页对象
    +     * @param programPageListDto 参数
    +     * @return 结果
    +     * */
         IPage selectPage(IPage page, @Param("programPageListDto")ProgramPageListDto programPageListDto);
     }
    diff --git a/damai-server/damai-program-service/src/main/java/com/damai/mapper/TicketCategoryMapper.java b/damai-server/damai-program-service/src/main/java/com/damai/mapper/TicketCategoryMapper.java
    index e8897618..4266fbcd 100644
    --- a/damai-server/damai-program-service/src/main/java/com/damai/mapper/TicketCategoryMapper.java
    +++ b/damai-server/damai-program-service/src/main/java/com/damai/mapper/TicketCategoryMapper.java
    @@ -14,10 +14,26 @@ import java.util.Map;
      * @author: 阿宽不是程序员
      **/
     public interface TicketCategoryMapper extends BaseMapper {
    -
    +    
    +    /**
    +     * 票档统计
    +     * @param programIdList 参数
    +     * @return 结果
    +     * */
         List selectAggregateList(@Param("programIdList")List programIdList);
         
    +    /**
    +     * 更新数量
    +     * @param number 数量
    +     * @param id id
    +     * @return 结果
    +     * */
         int updateRemainNumber(@Param("number")Long number,@Param("id")Long id);
         
    +    /**
    +     * 批量更新数量
    +     * @param ticketCategoryCountMap 参数
    +     * @return 结果
    +     * */
         int batchUpdateRemainNumber(@Param("ticketCategoryCountMap") Map ticketCategoryCountMap);
     }
    diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramCategoryService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramCategoryService.java
    index 03c81e47..68bf393b 100644
    --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramCategoryService.java
    +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramCategoryService.java
    @@ -64,7 +64,7 @@ public class ProgramCategoryService extends ServiceImpl programCategoryList = programCategoryAddDtoList.stream().map((programCategoryAddDto) -> {
                 ProgramCategory programCategory = new ProgramCategory();
                 BeanUtil.copyProperties(programCategoryAddDto, programCategory);
    -            programCategory.setId(uidGenerator.getUID());
    +            programCategory.setId(uidGenerator.getUid());
                 return programCategory;
             }).collect(Collectors.toList());
             
    diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java
    index 49e00746..6d8a4851 100644
    --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java
    +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java
    @@ -193,8 +193,7 @@ public class ProgramOrderService {
             data[0] = JSON.toJSONString(jsonArray);
             data[1] = JSON.toJSONString(seatDtoList);
             //升级后的lua脚本处理票档数量和座位状态的检验,以及扣减票档数量的操作
    -        String result = programCacheCreateOrderOperate.programCacheOperate(keys, data);
    -        ProgramCacheCreateOrderData programCacheCreateOrderData = JSON.parseObject(result, ProgramCacheCreateOrderData.class);
    +        ProgramCacheCreateOrderData programCacheCreateOrderData = programCacheCreateOrderOperate.programCacheOperate(keys, data);
             if (!Objects.equals(programCacheCreateOrderData.getCode(), BaseCode.SUCCESS.getCode())) {
                 throw new DaMaiFrameException(Objects.requireNonNull(BaseCode.getRc(programCacheCreateOrderData.getCode())));
             }
    diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java
    index b3fbabd3..308e0c30 100644
    --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java
    +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java
    @@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
     import com.damai.client.BaseDataClient;
     import com.damai.common.ApiResponse;
     import com.damai.core.RedisKeyEnum;
    +import com.damai.core.SpringUtil;
     import com.damai.dto.AreaGetDto;
     import com.damai.dto.AreaSelectDto;
     import com.damai.dto.EsDataQueryDto;
    @@ -129,7 +130,7 @@ public class ProgramService extends ServiceImpl {
         public Long add(ProgramAddDto programAddDto){
             Program program = new Program();
             BeanUtil.copyProperties(programAddDto,program);
    -        program.setId(uidGenerator.getUID());
    +        program.setId(uidGenerator.getUid());
             programMapper.insert(program);
             return program.getId();
         }
    @@ -143,7 +144,8 @@ public class ProgramService extends ServiceImpl {
                 titleQueryDto.setParamValue(programSearchDto.getTitle());
                 titleQueryDto.setAnalyse(true);
                 esDataQueryDtoList.add(titleQueryDto);
    -            PageInfo programListVoPageInfo = businessEsHandle.queryPage(ProgramDocumentParamName.INDEX_NAME, 
    +            PageInfo programListVoPageInfo = 
    +                    businessEsHandle.queryPage(SpringUtil.getPrefixDistinctionName() + "-" + ProgramDocumentParamName.INDEX_NAME, 
                         ProgramDocumentParamName.INDEX_TYPE, esDataQueryDtoList, programSearchDto.getPageNumber(), 
                         programSearchDto.getPageSize(), ProgramListVo.class);
                 pageVo = PageUtil.convertPage(programListVoPageInfo,programListVo -> programListVo);
    @@ -153,7 +155,7 @@ public class ProgramService extends ServiceImpl {
             return pageVo;
         }
         public Map> selectHomeList(ProgramListDto programPageListDto) {
    -        Map> programListVoMap = new HashMap<>();
    +        Map> programListVoMap = new HashMap<>(256);
             
             //根据区域id和父节目类型id查询节目列表
             LambdaQueryWrapper programLambdaQueryWrapper = Wrappers.lambdaQuery(Program.class)
    @@ -168,7 +170,7 @@ public class ProgramService extends ServiceImpl {
                     .in(ProgramShowTime::getProgramId, programIdList);
             List programShowTimeList = programShowTimeMapper.selectList(programShowTimeLambdaQueryWrapper);
             //将节目演出集合根据节目id进行分组成map,key:节目id,value:节目演出时间集合
    -        Map> ProgramShowTimeMap = programShowTimeList.stream().collect(Collectors.groupingBy(ProgramShowTime::getProgramId));
    +        Map> programShowTimeMap = programShowTimeList.stream().collect(Collectors.groupingBy(ProgramShowTime::getProgramId));
             
             //根据获得的节目列表中的父节目类型id来查询节目类型map,key:节目类型id,value:节目类型名
             Map programCategoryMap = selectProgramCategoryMap(programList.stream().map(Program::getParentProgramCategoryId).collect(Collectors.toList()));
    @@ -191,19 +193,19 @@ public class ProgramService extends ServiceImpl {
                     ProgramListVo programListVo = new ProgramListVo();
                     BeanUtil.copyProperties(program,programListVo);
                     //演出时间
    -                programListVo.setShowTime(Optional.ofNullable(ProgramShowTimeMap.get(program.getId()))
    +                programListVo.setShowTime(Optional.ofNullable(programShowTimeMap.get(program.getId()))
                             .filter(list -> !list.isEmpty())
                             .map(list -> list.get(0))
                             .map(ProgramShowTime::getShowTime)
                             .orElse(null));
                     //演出时间(精确到天)
    -                programListVo.setShowDayTime(Optional.ofNullable(ProgramShowTimeMap.get(program.getId()))
    +                programListVo.setShowDayTime(Optional.ofNullable(programShowTimeMap.get(program.getId()))
                             .filter(list -> !list.isEmpty())
                             .map(list -> list.get(0))
                             .map(ProgramShowTime::getShowDayTime)
                             .orElse(null));
                     //演出时间所在的星期
    -                programListVo.setShowWeekTime(Optional.ofNullable(ProgramShowTimeMap.get(program.getId()))
    +                programListVo.setShowWeekTime(Optional.ofNullable(programShowTimeMap.get(program.getId()))
                             .filter(list -> !list.isEmpty())
                             .map(list -> list.get(0))
                             .map(ProgramShowTime::getShowWeekTime)
    @@ -244,7 +246,7 @@ public class ProgramService extends ServiceImpl {
             //根据节目id统计出票档的最低价和最高价的集合map, key:节目id,value:票档
             Map ticketCategorieMap = selectTicketCategorieMap(programIdList);
             //查询区域
    -        Map tempAreaMap = new HashMap<>();
    +        Map tempAreaMap = new HashMap<>(64);
             AreaSelectDto areaSelectDto = new AreaSelectDto();
             areaSelectDto.setIdList(iPage.getRecords().stream().map(Program::getAreaId).distinct().collect(Collectors.toList()));
             ApiResponse> areaResponse = baseDataClient.selectByIdList(areaSelectDto);
    @@ -349,7 +351,7 @@ public class ProgramService extends ServiceImpl {
         }
         
         @Transactional(rollbackFor = Exception.class)
    -    public void OperateProgramData(ProgramOperateDataDto programOperateDataDto){
    +    public void operateProgramData(ProgramOperateDataDto programOperateDataDto){
             Map ticketCategoryCountMap = programOperateDataDto.getTicketCategoryCountMap();
             //从库中查询座位集合
             List seatIdList = programOperateDataDto.getSeatIdList();
    diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramShowTimeService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramShowTimeService.java
    index a31e95ba..025e8a59 100644
    --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramShowTimeService.java
    +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramShowTimeService.java
    @@ -52,7 +52,7 @@ public class ProgramShowTimeService extends ServiceImpl {
             }
             seat = new Seat();
             BeanUtil.copyProperties(seatAddDto,seat);
    -        seat.setId(uidGenerator.getUID());
    +        seat.setId(uidGenerator.getUid());
             seatMapper.insert(seat);
             return seat.getId();
         }
    diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/TicketCategoryService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/TicketCategoryService.java
    index a0238654..eff6667e 100644
    --- a/damai-server/damai-program-service/src/main/java/com/damai/service/TicketCategoryService.java
    +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/TicketCategoryService.java
    @@ -45,7 +45,7 @@ public class TicketCategoryService extends ServiceImpl getEsMapping(){
             List list = new ArrayList<>();
             
             EsDocumentMappingDto idDto = new EsDocumentMappingDto();
    @@ -123,13 +136,7 @@ public class ProgramElasticsearchInitData implements InitData {
             maxPriceDto.setParamType("integer");
             list.add(maxPriceDto);
             
    -        try {
    -            businessEsHandle.createIndex(ProgramDocumentParamName.INDEX_NAME, ProgramDocumentParamName.INDEX_TYPE,list);
    -            return true;
    -        }catch (Exception e) {
    -            log.error("createIndex error",e);
    -        }
    -        return false;
    +        return list;
         }
         
         public void initElasticsearchData(){
    @@ -142,7 +149,7 @@ public class ProgramElasticsearchInitData implements InitData {
             
             for (Long programId : allProgramIdList) {
                 ProgramVo programVo = programService.getDetailFromDb(programId);
    -            Map map = new HashMap<>();
    +            Map map = new HashMap<>(32);
                 map.put(ProgramDocumentParamName.ID,programVo.getId());
                 map.put(ProgramDocumentParamName.TITLE,programVo.getTitle());
                 map.put(ProgramDocumentParamName.ACTOR,programVo.getActor());
    @@ -160,7 +167,8 @@ public class ProgramElasticsearchInitData implements InitData {
                 map.put(ProgramDocumentParamName.MIN_PRICE,Optional.ofNullable(ticketCategorieMap.get(programVo.getId())).map(TicketCategoryAggregate::getMinPrice).orElse(null));
                 //最高价
                 map.put(ProgramDocumentParamName.MAX_PRICE,Optional.ofNullable(ticketCategorieMap.get(programVo.getId())).map(TicketCategoryAggregate::getMaxPrice).orElse(null));
    -            businessEsHandle.add(ProgramDocumentParamName.INDEX_NAME, ProgramDocumentParamName.INDEX_TYPE,map);
    +            businessEsHandle.add(SpringUtil.getPrefixDistinctionName() + "-" + 
    +                    ProgramDocumentParamName.INDEX_NAME, ProgramDocumentParamName.INDEX_TYPE,map);
             }
         }
     }
    diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/lua/ProgramCacheCreateOrderOperate.java b/damai-server/damai-program-service/src/main/java/com/damai/service/lua/ProgramCacheCreateOrderOperate.java
    index 6ac9a392..aca54ccb 100644
    --- a/damai-server/damai-program-service/src/main/java/com/damai/service/lua/ProgramCacheCreateOrderOperate.java
    +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/lua/ProgramCacheCreateOrderOperate.java
    @@ -1,5 +1,6 @@
     package com.damai.service.lua;
     
    +import com.alibaba.fastjson.JSON;
     import com.damai.redis.RedisCache;
     import lombok.extern.slf4j.Slf4j;
     import org.springframework.beans.factory.annotation.Autowired;
    @@ -36,7 +37,8 @@ public class ProgramCacheCreateOrderOperate {
             }
         }
         
    -    public String programCacheOperate(List keys, String[] args){
    -        return (String)redisCache.getInstance().execute(redisScript, keys, args);
    +    public ProgramCacheCreateOrderData programCacheOperate(List keys, String[] args){
    +        Object object = redisCache.getInstance().execute(redisScript, keys, args);
    +        return JSON.parseObject((String)object, ProgramCacheCreateOrderData.class);
         }
     }
    diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/pagestrategy/SelectPageHandle.java b/damai-server/damai-program-service/src/main/java/com/damai/service/pagestrategy/SelectPageHandle.java
    index 3b746d6b..763dc18f 100644
    --- a/damai-server/damai-program-service/src/main/java/com/damai/service/pagestrategy/SelectPageHandle.java
    +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/pagestrategy/SelectPageHandle.java
    @@ -9,8 +9,16 @@ import com.damai.vo.ProgramListVo;
      * @author: 阿宽不是程序员
      **/
     public interface SelectPageHandle {
    +    /**
    +     * 分页查询
    +     * @param dto 参数
    +     * @return 结果
    +     * */
    +    PageVo selectPage(ProgramPageListDto dto);
         
    -    PageVo selectPage(ProgramPageListDto programPageListDto);
    -    
    +    /**
    +     * 获取分页查询类型
    +     * @return 结果
    +     * */
         String getType();
     }
    diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/pagestrategy/impl/SelectPageEsHandle.java b/damai-server/damai-program-service/src/main/java/com/damai/service/pagestrategy/impl/SelectPageEsHandle.java
    index 68a3a4b9..f7bf4f6b 100644
    --- a/damai-server/damai-program-service/src/main/java/com/damai/service/pagestrategy/impl/SelectPageEsHandle.java
    +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/pagestrategy/impl/SelectPageEsHandle.java
    @@ -1,6 +1,7 @@
     package com.damai.service.pagestrategy.impl;
     
     import cn.hutool.core.collection.CollectionUtil;
    +import com.damai.core.SpringUtil;
     import com.damai.dto.EsDataQueryDto;
     import com.damai.dto.ProgramPageListDto;
     import com.damai.enums.TimeType;
    @@ -73,7 +74,8 @@ public class SelectPageEsHandle implements SelectPageHandle {
                     esDataQueryDtoList.add(showDayTimeQueryDto);
                 }
                 
    -            PageInfo programListVoPageInfo = businessEsHandle.queryPage(ProgramDocumentParamName.INDEX_NAME,
    +            PageInfo programListVoPageInfo = businessEsHandle.queryPage(
    +                    SpringUtil.getPrefixDistinctionName() + "-" + ProgramDocumentParamName.INDEX_NAME,
                         ProgramDocumentParamName.INDEX_TYPE, esDataQueryDtoList, programPageListDto.getPageNumber(),
                         programPageListDto.getPageSize(), ProgramListVo.class);
                 pageVo = PageUtil.convertPage(programListVoPageInfo, programListVo -> programListVo);
    diff --git a/damai-server/damai-single-service/src/main/resources/log4j2.xml b/damai-server/damai-single-service/src/main/resources/log4j2.xml
    index 01bda486..ddfbac5d 100644
    --- a/damai-server/damai-single-service/src/main/resources/log4j2.xml
    +++ b/damai-server/damai-single-service/src/main/resources/log4j2.xml
    @@ -10,10 +10,10 @@
         
             
             .
    -        user-service
    +        single-service
             local
             log
    -        [user-service] [%X{traceId}] %d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
    +        [single-service] [%X{traceId}] %d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
             UTF-8
             com.damai
         
    diff --git a/damai-server/damai-user-service/src/main/java/com/damai/controller/TicketUserController.java b/damai-server/damai-user-service/src/main/java/com/damai/controller/TicketUserController.java
    index 970b1736..73e9f334 100644
    --- a/damai-server/damai-user-service/src/main/java/com/damai/controller/TicketUserController.java
    +++ b/damai-server/damai-user-service/src/main/java/com/damai/controller/TicketUserController.java
    @@ -24,7 +24,7 @@ import java.util.List;
      **/
     @RestController
     @RequestMapping("/ticket/user")
    -@Api(tags = "ticket-user", description = "购票人")
    +@Api(tags = "ticket-user", value = "购票人")
     public class TicketUserController {
         
         @Autowired
    diff --git a/damai-server/damai-user-service/src/main/java/com/damai/controller/UserCaptchaController.java b/damai-server/damai-user-service/src/main/java/com/damai/controller/UserCaptchaController.java
    index 92b095f3..cb41c8b8 100644
    --- a/damai-server/damai-user-service/src/main/java/com/damai/controller/UserCaptchaController.java
    +++ b/damai-server/damai-user-service/src/main/java/com/damai/controller/UserCaptchaController.java
    @@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.RestController;
      **/
     @RestController
     @RequestMapping("/user/captcha")
    -@Api(tags = "captcha", description = "验证码")
    +@Api(tags = "captcha", value = "验证码")
     public class UserCaptchaController {
         
         @Autowired
    diff --git a/damai-server/damai-user-service/src/main/java/com/damai/controller/UserController.java b/damai-server/damai-user-service/src/main/java/com/damai/controller/UserController.java
    index b2fefe90..f72d6085 100644
    --- a/damai-server/damai-user-service/src/main/java/com/damai/controller/UserController.java
    +++ b/damai-server/damai-user-service/src/main/java/com/damai/controller/UserController.java
    @@ -32,7 +32,7 @@ import javax.validation.Valid;
      **/
     @RestController
     @RequestMapping("/user")
    -@Api(tags = "user", description = "用户")
    +@Api(tags = "user", value = "用户")
     public class UserController {
         
         @Autowired
    diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/TicketUserService.java b/damai-server/damai-user-service/src/main/java/com/damai/service/TicketUserService.java
    index b3733743..f6c0990c 100644
    --- a/damai-server/damai-user-service/src/main/java/com/damai/service/TicketUserService.java
    +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/TicketUserService.java
    @@ -63,7 +63,7 @@ public class TicketUserService extends ServiceImpl
             }
             TicketUser addTicketUser = new TicketUser();
             BeanUtil.copyProperties(ticketUserDto,addTicketUser);
    -        addTicketUser.setId(uidGenerator.getUID());
    +        addTicketUser.setId(uidGenerator.getUid());
             ticketUserMapper.insert(addTicketUser);
         }
         @Transactional(rollbackFor = Exception.class)
    diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java b/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java
    index 8c2664a1..63517238 100644
    --- a/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java
    +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java
    @@ -38,7 +38,7 @@ import com.damai.redis.RedisCache;
     import com.damai.redis.RedisKeyWrap;
     import com.damai.servicelock.LockType;
     import com.damai.servicelock.annotion.ServiceLock;
    -import com.damai.util.RBloomFilterUtil;
    +import com.damai.util.BloomFilterHandler;
     import com.damai.vo.TicketUserVo;
     import com.damai.vo.UserGetAndTicketUserListVo;
     import com.damai.vo.UserVo;
    @@ -87,7 +87,7 @@ public class UserService extends ServiceImpl {
         private TicketUserMapper ticketUserMapper;
         
         @Autowired
    -    private RBloomFilterUtil rBloomFilterUtil;
    +    private BloomFilterHandler bloomFilterHandler;
         
         @Autowired
         private CompositeContainer compositeContainer;
    @@ -102,15 +102,15 @@ public class UserService extends ServiceImpl {
             //用户表添加
             User user = new User();
             BeanUtils.copyProperties(userRegisterDto,user);
    -        user.setId(uidGenerator.getUID());
    +        user.setId(uidGenerator.getUid());
             userMapper.insert(user);
             //用户手机表添加
             UserMobile userMobile = new UserMobile();
    -        userMobile.setId(uidGenerator.getUID());
    +        userMobile.setId(uidGenerator.getUid());
             userMobile.setUserId(user.getId());
             userMobile.setMobile(userRegisterDto.getMobile());
             userMobileMapper.insert(userMobile);
    -        rBloomFilterUtil.add(userMobile.getMobile());
    +        bloomFilterHandler.add(userMobile.getMobile());
         }
         
         @ServiceLock(lockType= LockType.Read,name = REGISTER_USER_LOCK,keys = {"#mobile"})
    @@ -119,7 +119,7 @@ public class UserService extends ServiceImpl {
         }
         
         public void doExist(String mobile){
    -        boolean contains = rBloomFilterUtil.contains(mobile);
    +        boolean contains = bloomFilterHandler.contains(mobile);
             if (contains) {
                 LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(UserMobile.class)
                         .eq(UserMobile::getMobile, mobile);
    @@ -170,7 +170,7 @@ public class UserService extends ServiceImpl {
         public String createToken(Long userId){
             Map map = new HashMap<>(4);
             map.put("userId",userId);
    -        return TokenUtil.createToken(String.valueOf(uidGenerator.getUID()), JSON.toJSONString(map),tokenExpireTime,TOKEN_SECRET);
    +        return TokenUtil.createToken(String.valueOf(uidGenerator.getUid()), JSON.toJSONString(map),tokenExpireTime,TOKEN_SECRET);
         }
         
         public void logout(UserIdDto userIdDto) {
    @@ -217,7 +217,7 @@ public class UserService extends ServiceImpl {
             UserEmail userEmail = userEmailMapper.selectOne(userEmailLambdaQueryWrapper);
             if (Objects.isNull(userEmail)) {
                 userEmail = new UserEmail();
    -            userEmail.setId(uidGenerator.getUID());
    +            userEmail.setId(uidGenerator.getUid());
                 userEmail.setUserId(user.getId());
                 userEmail.setEmail(userUpdateEmailDto.getEmail());
                 userEmailMapper.insert(userEmail);
    @@ -231,29 +231,29 @@ public class UserService extends ServiceImpl {
         }
         
         @Transactional(rollbackFor = Exception.class)
    -    public void updateMobile(UserUpdateMobileDto UserUpdateMobileDto){
    -        User user = userMapper.selectById(UserUpdateMobileDto.getId());
    +    public void updateMobile(UserUpdateMobileDto userUpdateMobileDto){
    +        User user = userMapper.selectById(userUpdateMobileDto.getId());
             if (Objects.isNull(user)) {
                 throw new DaMaiFrameException(BaseCode.USER_EMPTY);
             }
             String oldMobile = user.getMobile();
             User updateUser = new User();
    -        BeanUtil.copyProperties(UserUpdateMobileDto,updateUser);
    +        BeanUtil.copyProperties(userUpdateMobileDto,updateUser);
             userMapper.updateById(updateUser);
             LambdaQueryWrapper userMobileLambdaQueryWrapper = Wrappers.lambdaQuery(UserMobile.class)
    -                .eq(UserMobile::getMobile, UserUpdateMobileDto.getMobile());
    +                .eq(UserMobile::getMobile, userUpdateMobileDto.getMobile());
             UserMobile userMobile = userMobileMapper.selectOne(userMobileLambdaQueryWrapper);
             if (Objects.isNull(userMobile)) {
                 userMobile = new UserMobile();
    -            userMobile.setId(uidGenerator.getUID());
    +            userMobile.setId(uidGenerator.getUid());
                 userMobile.setUserId(user.getId());
    -            userMobile.setMobile(UserUpdateMobileDto.getMobile());
    +            userMobile.setMobile(userUpdateMobileDto.getMobile());
                 userMobileMapper.insert(userMobile);
             }else {
                 LambdaUpdateWrapper userMobileLambdaUpdateWrapper = Wrappers.lambdaUpdate(UserMobile.class)
                         .eq(UserMobile::getMobile, oldMobile);
                 UserMobile updateUserMobile = new UserMobile();
    -            updateUserMobile.setMobile(UserUpdateMobileDto.getMobile());
    +            updateUserMobile.setMobile(userUpdateMobileDto.getMobile());
                 userMobileMapper.update(updateUserMobile,userMobileLambdaUpdateWrapper);
             }
         }
    diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/tool/RequestCounter.java b/damai-server/damai-user-service/src/main/java/com/damai/service/tool/RequestCounter.java
    index 444e5c4d..e99d3b6a 100644
    --- a/damai-server/damai-user-service/src/main/java/com/damai/service/tool/RequestCounter.java
    +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/tool/RequestCounter.java
    @@ -16,20 +16,23 @@ public class RequestCounter {
         private final AtomicInteger count = new AtomicInteger(0);
         private final AtomicLong lastResetTime = new AtomicLong(System.currentTimeMillis());
         @Value("${request_count_threshold:100}")
    -    private int MAX_REQUESTS_PER_SECOND = 100;
    -    
    +    private int maxRequestsPerSecond = 100;
         
         public synchronized boolean onRequest() {
             long currentTime = System.currentTimeMillis();
             // 如果当前时间和上次重置时间差超过1秒
    -        if (currentTime - lastResetTime.get() >= 1000) {
    -            count.set(0); // 重置计数器
    -            lastResetTime.set(currentTime); // 更新重置时间
    +        long differenceValue = 1000;
    +        if (currentTime - lastResetTime.get() >= differenceValue) {
    +            // 重置计数器
    +            count.set(0);
    +            // 更新重置时间
    +            lastResetTime.set(currentTime);
             }
             
    -        if (count.incrementAndGet() > MAX_REQUESTS_PER_SECOND) {
    +        if (count.incrementAndGet() > maxRequestsPerSecond) {
                 System.out.println("请求超过每秒100次限制");
    -            count.set(0); // 超过限制后重置计数器
    +            // 超过限制后重置计数器
    +            count.set(0);
                 // 更新重置时间
                 lastResetTime.set(System.currentTimeMillis());
                 return true;
    diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/AbstractComposite.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/AbstractComposite.java
    index 2f95f2d7..78c69c6c 100644
    --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/AbstractComposite.java
    +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/AbstractComposite.java
    @@ -26,21 +26,25 @@ public abstract class AbstractComposite {
         protected abstract void execute(T param);
         
         /**
    +     * 获取返回组件的类型
          * @return 返回组件的类型。
          */
         public abstract String type();
         
         /**
    +     * 返回父级执行顺序,用于建立层级关系.(根节点的话返回值为0)
          * @return 返回父级执行顺序,用于建立层级关系.(根节点的话返回值为0)
          */
         public abstract Integer executeParentOrder();
         
         /**
    +     * 返回组件的执行层级。
          * @return 返回组件的执行层级。
          */
         public abstract Integer executeTier();
         
         /**
    +     * 返回组件在同一层级中的执行顺序。
          * @return 返回组件在同一层级中的执行顺序。
          */
         public abstract Integer executeOrder();
    diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/CompositeContainer.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/CompositeContainer.java
    index 705baede..230539cf 100644
    --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/CompositeContainer.java
    +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/CompositeContainer.java
    @@ -85,7 +85,7 @@ public class CompositeContainer {
             Map> groupedByTier = new TreeMap<>();
             
             for (AbstractComposite component : components) {
    -            groupedByTier.computeIfAbsent(component.executeTier(), k -> new HashMap<>())
    +            groupedByTier.computeIfAbsent(component.executeTier(), k -> new HashMap<>(16))
                         // 使用 executeOrder 作为键
                         .put(component.executeOrder(), component);
             }
    diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/init/InitData.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/init/InitData.java
    index c9a1cf74..38437b25 100644
    --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/init/InitData.java
    +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/init/InitData.java
    @@ -6,6 +6,8 @@ package com.damai.init;
      * @author: 阿宽不是程序员
      **/
     public interface InitData {
    -    
    +    /**
    +     * 初始化操作
    +     * */
         void init();
     }
    diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/swagger/SwaggerConfiguration.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/swagger/SwaggerConfiguration.java
    index 5f7aaeea..e0b0784e 100644
    --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/swagger/SwaggerConfiguration.java
    +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/swagger/SwaggerConfiguration.java
    @@ -13,6 +13,7 @@ import springfox.documentation.builders.PathSelectors;
     import springfox.documentation.service.ApiInfo;
     import springfox.documentation.service.ApiKey;
     import springfox.documentation.service.AuthorizationScope;
    +import springfox.documentation.service.Contact;
     import springfox.documentation.service.SecurityReference;
     import springfox.documentation.spi.DocumentationType;
     import springfox.documentation.spi.service.contexts.SecurityContext;
    @@ -37,11 +38,7 @@ public class SwaggerConfiguration {
             Predicate predicate = (requestHandler) -> {
                 boolean controllerStandardDocument = requestHandler.findControllerAnnotation(Api.class).isPresent();
                 boolean methodStandardDocument = requestHandler.findAnnotation(ApiOperation.class).isPresent();
    -            if (controllerStandardDocument || methodStandardDocument) {
    -                return true;
    -            }else {
    -                return false;
    -            }
    +            return controllerStandardDocument || methodStandardDocument;
             };
             
             return new Docket(DocumentationType.SWAGGER_2)
    @@ -58,7 +55,7 @@ public class SwaggerConfiguration {
                     .title("swagger文档")
                     .description("
    前端开发人员使用
    ") .termsOfServiceUrl("http://www.group.com/") - .contact("kuan") + .contact(new Contact("阿宽不是程序员", "", "")) .version("1.0") .build(); } diff --git a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomAwarePredicate.java b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomAwarePredicate.java index 39b4a6ab..8117dfbe 100644 --- a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomAwarePredicate.java +++ b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomAwarePredicate.java @@ -12,6 +12,7 @@ import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; import java.util.Map; import java.util.Objects; @@ -20,23 +21,26 @@ import static com.damai.constant.Constant.MARK_FLAG_TRUE; import static com.damai.constant.Constant.MARK_PARAMETER; /** - * @program: cook-frame + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 * @description: 灰度版本选择负载均衡选择器 - * @author: 星哥 - * @create: 2023-04-17 + * @author: 阿宽不是程序员 **/ @Slf4j public class CustomAwarePredicate extends AbstractServerPredicate{ - private String mark; + private final String mark; private CustomEnabledRule customEnabledRule; + private final Map map = new HashMap<>(); + public CustomAwarePredicate(String mark, CustomEnabledRule customEnabledRule){ super(customEnabledRule); this.mark = mark; this.customEnabledRule = customEnabledRule; + this.map.put(MARK_FLAG_FALSE,MARK_FLAG_FALSE); + this.map.put(MARK_FLAG_TRUE,MARK_FLAG_TRUE); } @Override @@ -64,11 +68,11 @@ public class CustomAwarePredicate extends AbstractServerPredicate{ markFromMetaData = metadata.get(MARK_PARAMETER); } - if(Objects.isNull(markFromMetaData) || !(markFromMetaData.equalsIgnoreCase(MARK_FLAG_FALSE) || markFromMetaData.equalsIgnoreCase(MARK_FLAG_TRUE))) { + if(Objects.isNull(markFromMetaData) || Objects.isNull(map.get(markFromMetaData.toLowerCase()))) { markFromMetaData = MARK_FLAG_FALSE; } - if(Objects.isNull(markFromRequest) || !(markFromRequest.equalsIgnoreCase(MARK_FLAG_FALSE) || markFromRequest.equalsIgnoreCase(MARK_FLAG_FALSE))) { + if(Objects.isNull(markFromRequest) || Objects.isNull(map.get(markFromRequest.toLowerCase()))) { markFromRequest = MARK_FLAG_FALSE; } result = markFromMetaData.equalsIgnoreCase(markFromRequest); diff --git a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomEnabledRule.java b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomEnabledRule.java index 350cfc01..b8ed7dbc 100644 --- a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomEnabledRule.java +++ b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomEnabledRule.java @@ -6,6 +6,11 @@ import com.netflix.loadbalancer.CompositePredicate; import com.netflix.loadbalancer.PredicateBasedRule; import org.springframework.util.Assert; +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 灰度版本选择负载均衡选择器适配 + * @author: 阿宽不是程序员 + **/ public class CustomEnabledRule extends PredicateBasedRule { /** diff --git a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/ExtraRibbonAutoConfiguration.java b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/ExtraRibbonAutoConfiguration.java index 4288e24f..dfeaccae 100644 --- a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/ExtraRibbonAutoConfiguration.java +++ b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/ExtraRibbonAutoConfiguration.java @@ -6,10 +6,9 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.cloud.netflix.ribbon.RibbonClientConfiguration; /** - * @program: cook-frame - * @description: - * @author: 星哥 - * @create: 2023-04-17 + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 灰度版本选择相关配置 + * @author: 阿宽不是程序员 **/ @AutoConfigureBefore(RibbonClientConfiguration.class) diff --git a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/ExtraRibbonProperties.java b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/ExtraRibbonProperties.java index efc2636a..83195656 100644 --- a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/ExtraRibbonProperties.java +++ b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/ExtraRibbonProperties.java @@ -4,10 +4,9 @@ import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; /** - * @program: cook-frame - * @description: - * @author: 星哥 - * @create: 2023-04-17 + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 灰度标识 + * @author: 阿宽不是程序员 **/ @ConfigurationProperties("spring.cloud.nacos.discovery.metadata") @Data diff --git a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/registercenter/EurekaAutoConfigurationBean.java b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/registercenter/EurekaAutoConfigurationBean.java index 0e8c90a3..4a927721 100644 --- a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/registercenter/EurekaAutoConfigurationBean.java +++ b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/registercenter/EurekaAutoConfigurationBean.java @@ -10,30 +10,30 @@ import java.util.Map; **/ public class EurekaAutoConfigurationBean { - private static final String DiscoveryClientOptionalArgsConfiguration = "org.springframework.cloud.netflix.eureka.config.DiscoveryClientOptionalArgsConfiguration"; + private static final String DISCOVERY_CLIENT_OPTIONAL_ARGS_CONFIGURATION = "org.springframework.cloud.netflix.eureka.config.DiscoveryClientOptionalArgsConfiguration"; - private static final String EurekaClientAutoConfiguration = "org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration"; + private static final String EUREKA_CLIENT_AUTO_CONFIGURATION = "org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration"; - private static final String RibbonEurekaAutoConfiguration = "org.springframework.cloud.netflix.ribbon.eureka.RibbonEurekaAutoConfiguration"; + private static final String RIBBON_EUREKA_AUTO_CONFIGURATION = "org.springframework.cloud.netflix.ribbon.eureka.RibbonEurekaAutoConfiguration"; - private static final String EurekaDiscoveryClientConfiguration = "org.springframework.cloud.netflix.eureka.EurekaDiscoveryClientConfiguration"; + private static final String EUREKA_DISCOVERY_CLIENT_CONFIGURATION = "org.springframework.cloud.netflix.eureka.EurekaDiscoveryClientConfiguration"; - private static final String EurekaReactiveDiscoveryClientConfiguration = "org.springframework.cloud.netflix.eureka.reactive.EurekaReactiveDiscoveryClientConfiguration"; + private static final String EUREKA_REACTIVE_DISCOVERY_CLIENT_CONFIGURATION = "org.springframework.cloud.netflix.eureka.reactive.EurekaReactiveDiscoveryClientConfiguration"; - private static final String LoadBalancerEurekaAutoConfiguration = "org.springframework.cloud.netflix.eureka.loadbalancer.LoadBalancerEurekaAutoConfiguration"; + private static final String LOAD_BALANCER_EUREKA_AUTO_CONFIGURATION = "org.springframework.cloud.netflix.eureka.loadbalancer.LoadBalancerEurekaAutoConfiguration"; - private static final Map map = new HashMap<>(10); + private static final Map MAP = new HashMap<>(10); static { - map.put(DiscoveryClientOptionalArgsConfiguration,DiscoveryClientOptionalArgsConfiguration); - map.put(EurekaClientAutoConfiguration,EurekaClientAutoConfiguration); - map.put(RibbonEurekaAutoConfiguration,RibbonEurekaAutoConfiguration); - map.put(EurekaDiscoveryClientConfiguration,EurekaDiscoveryClientConfiguration); - map.put(EurekaReactiveDiscoveryClientConfiguration,EurekaReactiveDiscoveryClientConfiguration); - map.put(LoadBalancerEurekaAutoConfiguration,LoadBalancerEurekaAutoConfiguration); + MAP.put(DISCOVERY_CLIENT_OPTIONAL_ARGS_CONFIGURATION, DISCOVERY_CLIENT_OPTIONAL_ARGS_CONFIGURATION); + MAP.put(EUREKA_CLIENT_AUTO_CONFIGURATION, EUREKA_CLIENT_AUTO_CONFIGURATION); + MAP.put(RIBBON_EUREKA_AUTO_CONFIGURATION, RIBBON_EUREKA_AUTO_CONFIGURATION); + MAP.put(EUREKA_DISCOVERY_CLIENT_CONFIGURATION, EUREKA_DISCOVERY_CLIENT_CONFIGURATION); + MAP.put(EUREKA_REACTIVE_DISCOVERY_CLIENT_CONFIGURATION, EUREKA_REACTIVE_DISCOVERY_CLIENT_CONFIGURATION); + MAP.put(LOAD_BALANCER_EUREKA_AUTO_CONFIGURATION, LOAD_BALANCER_EUREKA_AUTO_CONFIGURATION); } public static Map autoConfigurationBeanNameMap() { - return map; + return MAP; } } diff --git a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/registercenter/NacosAutoConfigurationBean.java b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/registercenter/NacosAutoConfigurationBean.java index 2544332d..227033e9 100644 --- a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/registercenter/NacosAutoConfigurationBean.java +++ b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/registercenter/NacosAutoConfigurationBean.java @@ -10,42 +10,42 @@ import java.util.Map; **/ public class NacosAutoConfigurationBean { - private static final String nacosDiscoveryAutoConfiguration = "com.alibaba.cloud.nacos.discovery.NacosDiscoveryAutoConfiguration"; + private static final String NACOS_DISCOVERY_AUTO_CONFIGURATION = "com.alibaba.cloud.nacos.discovery.NacosDiscoveryAutoConfiguration"; - private static final String ribbonNacosAutoConfiguration = "com.alibaba.cloud.nacos.ribbon.RibbonNacosAutoConfiguration"; + private static final String RIBBON_NACOS_AUTO_CONFIGURATION = "com.alibaba.cloud.nacos.ribbon.RibbonNacosAutoConfiguration"; - private static final String nacosDiscoveryEndpointAutoConfiguration = "com.alibaba.cloud.nacos.endpoint.NacosDiscoveryEndpointAutoConfiguration"; + private static final String NACOS_DISCOVERY_ENDPOINT_AUTO_CONFIGURATION = "com.alibaba.cloud.nacos.endpoint.NacosDiscoveryEndpointAutoConfiguration"; - private static final String nacosServiceRegistryAutoConfiguration = "com.alibaba.cloud.nacos.registry.NacosServiceRegistryAutoConfiguration"; + private static final String NACOS_SERVICE_REGISTRY_AUTO_CONFIGURATION = "com.alibaba.cloud.nacos.registry.NacosServiceRegistryAutoConfiguration"; - private static final String nacosDiscoveryClientConfiguration = "com.alibaba.cloud.nacos.discovery.NacosDiscoveryClientConfiguration"; + private static final String NACOS_DISCOVERY_CLIENT_CONFIGURATION = "com.alibaba.cloud.nacos.discovery.NacosDiscoveryClientConfiguration"; - private static final String nacosReactiveDiscoveryClientConfiguration = "com.alibaba.cloud.nacos.discovery.reactive.NacosReactiveDiscoveryClientConfiguration"; + private static final String NACOS_REACTIVE_DISCOVERY_CLIENT_CONFIGURATION = "com.alibaba.cloud.nacos.discovery.reactive.NacosReactiveDiscoveryClientConfiguration"; - private static final String nacosConfigServerAutoConfiguration = "com.alibaba.cloud.nacos.discovery.configclient.NacosConfigServerAutoConfiguration"; + private static final String NACOS_CONFIG_SERVER_AUTO_CONFIGURATION = "com.alibaba.cloud.nacos.discovery.configclient.NacosConfigServerAutoConfiguration"; - private static final String nacosServiceAutoConfiguration = "com.alibaba.cloud.nacos.NacosServiceAutoConfiguration"; + private static final String NACOS_SERVICE_AUTO_CONFIGURATION = "com.alibaba.cloud.nacos.NacosServiceAutoConfiguration"; - private static final String nacosDiscoveryClientConfigServiceBootstrapConfiguration = "com.alibaba.cloud.nacos.discovery.configclient.NacosDiscoveryClientConfigServiceBootstrapConfiguration"; + private static final String NACOS_DISCOVERY_CLIENT_CONFIG_SERVICE_BOOTSTRAP_CONFIGURATION = "com.alibaba.cloud.nacos.discovery.configclient.NacosDiscoveryClientConfigServiceBootstrapConfiguration"; - private static final String nacosServiceConfig = "com.nacosrefresh.conf.NacosServiceConfig"; + private static final String NACOS_SERVICE_CONFIG = "com.nacosrefresh.conf.NacosServiceConfig"; - private static final Map map = new HashMap<>(10); + private static final Map MAP = new HashMap<>(10); static { - map.put(nacosDiscoveryAutoConfiguration,nacosDiscoveryAutoConfiguration); - map.put(ribbonNacosAutoConfiguration,ribbonNacosAutoConfiguration); - map.put(nacosDiscoveryEndpointAutoConfiguration,nacosDiscoveryEndpointAutoConfiguration); - map.put(nacosServiceRegistryAutoConfiguration,nacosServiceRegistryAutoConfiguration); - map.put(nacosDiscoveryClientConfiguration,nacosDiscoveryClientConfiguration); - map.put(nacosReactiveDiscoveryClientConfiguration,nacosReactiveDiscoveryClientConfiguration); - map.put(nacosConfigServerAutoConfiguration,nacosConfigServerAutoConfiguration); - map.put(nacosServiceAutoConfiguration,nacosServiceAutoConfiguration); - map.put(nacosDiscoveryClientConfigServiceBootstrapConfiguration,nacosDiscoveryClientConfigServiceBootstrapConfiguration); - map.put(nacosServiceConfig,nacosServiceConfig); + MAP.put(NACOS_DISCOVERY_AUTO_CONFIGURATION, NACOS_DISCOVERY_AUTO_CONFIGURATION); + MAP.put(RIBBON_NACOS_AUTO_CONFIGURATION, RIBBON_NACOS_AUTO_CONFIGURATION); + MAP.put(NACOS_DISCOVERY_ENDPOINT_AUTO_CONFIGURATION, NACOS_DISCOVERY_ENDPOINT_AUTO_CONFIGURATION); + MAP.put(NACOS_SERVICE_REGISTRY_AUTO_CONFIGURATION, NACOS_SERVICE_REGISTRY_AUTO_CONFIGURATION); + MAP.put(NACOS_DISCOVERY_CLIENT_CONFIGURATION, NACOS_DISCOVERY_CLIENT_CONFIGURATION); + MAP.put(NACOS_REACTIVE_DISCOVERY_CLIENT_CONFIGURATION, NACOS_REACTIVE_DISCOVERY_CLIENT_CONFIGURATION); + MAP.put(NACOS_CONFIG_SERVER_AUTO_CONFIGURATION, NACOS_CONFIG_SERVER_AUTO_CONFIGURATION); + MAP.put(NACOS_SERVICE_AUTO_CONFIGURATION, NACOS_SERVICE_AUTO_CONFIGURATION); + MAP.put(NACOS_DISCOVERY_CLIENT_CONFIG_SERVICE_BOOTSTRAP_CONFIGURATION, NACOS_DISCOVERY_CLIENT_CONFIG_SERVICE_BOOTSTRAP_CONFIGURATION); + MAP.put(NACOS_SERVICE_CONFIG, NACOS_SERVICE_CONFIG); } public static Map autoConfigurationBeanNameMap() { - return map; + return MAP; } } diff --git a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/registercenter/RegisterCenterAutoConfigurationImportFilter.java b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/registercenter/RegisterCenterAutoConfigurationImportFilter.java index ec5fc310..56d7e6d3 100644 --- a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/registercenter/RegisterCenterAutoConfigurationImportFilter.java +++ b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/registercenter/RegisterCenterAutoConfigurationImportFilter.java @@ -22,9 +22,9 @@ public class RegisterCenterAutoConfigurationImportFilter implements AutoConfigur private static final String EUREKA = "eureka"; - private static final Map eurekaAutoConfigurationBeanNameMap = EurekaAutoConfigurationBean.autoConfigurationBeanNameMap(); + private static final Map EUREKA_AUTO_CONFIGURATION_BEAN_NAME_MAP = EurekaAutoConfigurationBean.autoConfigurationBeanNameMap(); - private static final Map nacosAutoConfigurationBeanNameMap = NacosAutoConfigurationBean.autoConfigurationBeanNameMap(); + private static final Map NACOS_AUTO_CONFIGURATION_BEAN_NAME_MAP = NacosAutoConfigurationBean.autoConfigurationBeanNameMap(); @Override @@ -35,11 +35,11 @@ public class RegisterCenterAutoConfigurationImportFilter implements AutoConfigur if (NACOS.equals(type)) { for (int i = 0; i < autoConfigurationClasses.length; i++) { - match[i] = eurekaAutoConfigurationBeanNameMap.get(autoConfigurationClasses[i]) == null; + match[i] = EUREKA_AUTO_CONFIGURATION_BEAN_NAME_MAP.get(autoConfigurationClasses[i]) == null; } }else if (EUREKA.equals(type)) { for (int i = 0; i < autoConfigurationClasses.length; i++) { - match[i] = nacosAutoConfigurationBeanNameMap.get(autoConfigurationClasses[i]) == null; + match[i] = NACOS_AUTO_CONFIGURATION_BEAN_NAME_MAP.get(autoConfigurationClasses[i]) == null; } }else { for (int i = 0; i < autoConfigurationClasses.length; i++) { diff --git a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosServerList.java b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosServerList.java index de17df0e..11ef07b3 100644 --- a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosServerList.java +++ b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosServerList.java @@ -17,10 +17,12 @@ package com.alibaba.cloud.nacos.ribbon; import com.alibaba.cloud.nacos.NacosDiscoveryProperties; +import com.alibaba.cloud.nacos.NacosServiceManager; import com.alibaba.nacos.api.naming.pojo.Instance; import com.alibaba.nacos.client.naming.utils.CollectionUtils; import com.netflix.client.config.IClientConfig; import com.netflix.loadbalancer.AbstractServerList; +import org.springframework.beans.factory.annotation.Autowired; import java.util.ArrayList; import java.util.List; @@ -36,6 +38,9 @@ public class NacosServerList extends AbstractServerList { private String serviceId; + @Autowired + private NacosServiceManager nacosServiceManager; + public NacosServerList(NacosDiscoveryProperties discoveryProperties) { this.discoveryProperties = discoveryProperties; } @@ -53,7 +58,7 @@ public class NacosServerList extends AbstractServerList { private List getServers() { try { String group = discoveryProperties.getGroup(); - List instances = discoveryProperties.namingServiceInstance() + List instances = nacosServiceManager.getNamingService(discoveryProperties.getNacosProperties()) .selectInstances(serviceId, group, true,false); return instancesToServerList(instances); } diff --git a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/alibaba/nacos/client/naming/cache/ServiceInfoHolder.java b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/alibaba/nacos/client/naming/cache/ServiceInfoHolder.java index c3164481..11243dc6 100644 --- a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/alibaba/nacos/client/naming/cache/ServiceInfoHolder.java +++ b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/alibaba/nacos/client/naming/cache/ServiceInfoHolder.java @@ -164,11 +164,10 @@ public class ServiceInfoHolder implements Closeable { serviceInfo.setJsonFromServer(JacksonUtils.toJson(serviceInfo)); } MetricsMonitor.getServiceInfoMapSizeMonitor().set(serviceInfoMap.size()); - if (changed || (StringUtils.isNotEmpty(notifyService) && "yes".equals(notifyService))) { -// NAMING_LOGGER.info("current ips:(" + serviceInfo.ipCount() + ") service: " + serviceInfo.getKey() + " -> " -// + JacksonUtils.toJson(serviceInfo.getHosts())); -// System.out.println("current ips:(" + serviceInfo.ipCount() + ") service: " + serviceInfo.getKey() + " -> " -// + JacksonUtils.toJson(serviceInfo.getHosts())); + String yes = "yes"; + if (changed || yes.equals(notifyService)) { + NAMING_LOGGER.info("current ips:(" + serviceInfo.ipCount() + ") service: " + serviceInfo.getKey() + " -> " + + JacksonUtils.toJson(serviceInfo.getHosts())); NotifyCenter.publishEvent(new InstancesChangeEvent(serviceInfo.getName(), serviceInfo.getGroupName(), serviceInfo.getClusters(), serviceInfo.getHosts())); DiskCache.write(serviceInfo, cacheDir); diff --git a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/controller/RefreshController.java b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/controller/RefreshController.java index 5ea3eccb..928ab607 100644 --- a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/controller/RefreshController.java +++ b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/controller/RefreshController.java @@ -44,9 +44,9 @@ public class RefreshController { @RequestMapping(value = "/getNacosAndRibbonCacheList", method = RequestMethod.POST) public Map getNacosAndRibbonCacheList() { if (nacosAndRibbonCustom != null) { - nacosAndRibbonCustom.getNacosAndRibbonCacheList(); + return nacosAndRibbonCustom.getNacosAndRibbonCacheList(); } - return new HashMap(); + return new HashMap(2); } /** @@ -60,7 +60,7 @@ public class RefreshController { return false; } if (nacosCustom != null) { - return nacosCustom.LogoutService(); + return nacosCustom.logoutService(); } return false; } diff --git a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/conf/NacosLifecycle.java b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/conf/NacosLifecycle.java index 75f94337..e30b4429 100644 --- a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/conf/NacosLifecycle.java +++ b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/conf/NacosLifecycle.java @@ -20,7 +20,7 @@ import java.util.concurrent.atomic.AtomicBoolean; @AllArgsConstructor public class NacosLifecycle implements SmartLifecycle { - private static final AtomicBoolean running = new AtomicBoolean(false); + private static final AtomicBoolean RUNNING = new AtomicBoolean(false); private final NacosAndRibbonCustom nacosAndRibbonCustom; @@ -35,11 +35,10 @@ public class NacosLifecycle implements SmartLifecycle { @Override public void start(){ - if (running.compareAndSet(false, true)) { + if (RUNNING.compareAndSet(false, true)) { try { NamingService naming = NamingFactory.createNamingService(properties.getNacosProperties()); naming.subscribe(properties.getService(),event -> { - //log.warn("refreshNacosAndRibbonCache finish ..."); new Thread(nacosAndRibbonCustom::refreshNacosAndRibbonCache,"service-refresher-thread").start(); }); }catch (Exception e) { @@ -50,11 +49,10 @@ public class NacosLifecycle implements SmartLifecycle { @Override public void stop() { - if (running.compareAndSet(true, false)) { + if (RUNNING.compareAndSet(true, false)) { try { NamingService naming = NamingFactory.createNamingService(properties.getNacosProperties()); naming.unsubscribe(properties.getService(),event -> { - //log.warn("updateNacosAndRibbonCache completed ..."); new Thread(nacosAndRibbonCustom::refreshNacosAndRibbonCache,"service-refresher-thread").start(); }); }catch (Exception e) { @@ -65,7 +63,7 @@ public class NacosLifecycle implements SmartLifecycle { @Override public boolean isRunning() { - return running.get(); + return RUNNING.get(); } @Override diff --git a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/conf/RefreshConfig.java b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/conf/RefreshConfig.java index 409112c1..4a91b78e 100644 --- a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/conf/RefreshConfig.java +++ b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/conf/RefreshConfig.java @@ -1,6 +1,7 @@ package com.damai.refresh.conf; import com.alibaba.cloud.nacos.NacosDiscoveryProperties; +import com.alibaba.cloud.nacos.NacosServiceManager; import com.alibaba.cloud.nacos.registry.NacosAutoServiceRegistration; import com.damai.refresh.custom.NacosAndRibbonCustom; import com.damai.refresh.custom.NacosCustom; @@ -19,8 +20,10 @@ import org.springframework.context.annotation.Bean; public class RefreshConfig { @Bean - public NacosCustom nacosCustom(NacosDiscoveryProperties discoveryProperties, NacosAutoServiceRegistration nacosAutoServiceRegistration){ - return new NacosCustom(discoveryProperties,nacosAutoServiceRegistration); + public NacosCustom nacosCustom(NacosDiscoveryProperties discoveryProperties, + NacosAutoServiceRegistration nacosAutoServiceRegistration, + NacosServiceManager nacosServiceManager){ + return new NacosCustom(discoveryProperties,nacosAutoServiceRegistration,nacosServiceManager); } @Bean diff --git a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/NacosAndRibbonCustom.java b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/NacosAndRibbonCustom.java index 6b58914d..6bd686a4 100644 --- a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/NacosAndRibbonCustom.java +++ b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/NacosAndRibbonCustom.java @@ -26,9 +26,9 @@ public class NacosAndRibbonCustom { } public Map getNacosAndRibbonCacheList() { - Map nacosCache = nacosCustom.getNacosCache(); - Map ribbonCache = ribbonCustom.getRibbonCache(); - Map map = new HashMap(); + Map nacosCache = nacosCustom.getNacosCache(); + Map ribbonCache = ribbonCustom.getRibbonCache(); + Map> map = new HashMap(8); map.put("nacosCache",nacosCache); map.put("ribbonCache",ribbonCache); return map; diff --git a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/NacosCustom.java b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/NacosCustom.java index 61af542e..d471ad8d 100644 --- a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/NacosCustom.java +++ b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/NacosCustom.java @@ -1,6 +1,7 @@ package com.damai.refresh.custom; import com.alibaba.cloud.nacos.NacosDiscoveryProperties; +import com.alibaba.cloud.nacos.NacosServiceManager; import com.alibaba.cloud.nacos.registry.NacosAutoServiceRegistration; import com.alibaba.nacos.api.naming.NamingService; import com.alibaba.nacos.api.naming.pojo.ServiceInfo; @@ -37,11 +38,13 @@ public class NacosCustom { private final NacosAutoServiceRegistration nacosAutoServiceRegistration; + private final NacosServiceManager nacosServiceManager; + - private Map getNacosCacheMap(){ - Map map = new HashMap(); + private Map getNacosCacheMap(){ + Map map = new HashMap(8); try { - NamingService namingService = discoveryProperties.namingServiceInstance(); + NamingService namingService = nacosServiceManager.getNamingService(discoveryProperties.getNacosProperties()); if (namingService instanceof NacosNamingService) { NacosNamingService nacosNamingService = (NacosNamingService)namingService; Class nacosNamingServiceClass = nacosNamingService.getClass(); @@ -89,7 +92,7 @@ public class NacosCustom { return (Map)map.get("serviceInfoMap"); } - public Boolean LogoutService(){ + public Boolean logoutService(){ try { log.info("stop service"); nacosAutoServiceRegistration.stop(); diff --git a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/RibbonCustom.java b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/RibbonCustom.java index 28da4e2b..4b3d184d 100644 --- a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/RibbonCustom.java +++ b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/RibbonCustom.java @@ -32,7 +32,7 @@ public class RibbonCustom { private static final String UP_SERVER_LIST_FIELD = "upServerList"; private Map zoneAwareLoadBalancerMap(){ - Map zoneAwareLoadBalancerMap = new HashMap<>(); + Map zoneAwareLoadBalancerMap = new HashMap<>(256); try{ SpringClientFactory springClientFactory = SpringUtil.getBean(SpringClientFactory.class); if (springClientFactory != null) { @@ -76,7 +76,7 @@ public class RibbonCustom { } public Map getRibbonCache(){ - Map taotalMap = new HashMap(); + Map taotalMap = new HashMap(256); try { Map zoneAwareLoadBalancerMap = zoneAwareLoadBalancerMap(); for (Map.Entry entry : zoneAwareLoadBalancerMap.entrySet()) { @@ -89,7 +89,7 @@ public class RibbonCustom { Field upServerListField = aClass1.getSuperclass().getSuperclass().getDeclaredField(UP_SERVER_LIST_FIELD); upServerListField.setAccessible(true); List upServerList = (List)upServerListField.get(balancer); - Map mapServerList = new HashMap(); + Map mapServerList = new HashMap(8); mapServerList.put(ALL_SERVER_LIST_FIELD,allServerList); mapServerList.put(UP_SERVER_LIST_FIELD,upServerList); taotalMap.put(serverName,mapServerList); diff --git a/damai-thread-pool-framework/src/main/java/com/damai/BusinessThreadPool.java b/damai-thread-pool-framework/src/main/java/com/damai/BusinessThreadPool.java index dfd62130..d1595cbf 100644 --- a/damai-thread-pool-framework/src/main/java/com/damai/BusinessThreadPool.java +++ b/damai-thread-pool-framework/src/main/java/com/damai/BusinessThreadPool.java @@ -6,6 +6,7 @@ import com.damai.namefactory.BusinessNameThreadFactory; import com.damai.rejectedexecutionhandler.ThreadPoolRejectedExecutionHandler; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.Callable; import java.util.concurrent.Future; @@ -41,7 +42,7 @@ public class BusinessThreadPool extends BaseThreadPool { private static Integer maximumPoolSize() { return new BigDecimal(Runtime.getRuntime().availableProcessors()) - .divide(new BigDecimal("0.2"), 0, BigDecimal.ROUND_HALF_UP).intValue(); + .divide(new BigDecimal("0.2"), 0, RoundingMode.HALF_UP).intValue(); } diff --git a/damai-thread-pool-framework/src/main/java/com/damai/base/BaseThreadPool.java b/damai-thread-pool-framework/src/main/java/com/damai/base/BaseThreadPool.java index 78517add..31e78cbe 100644 --- a/damai-thread-pool-framework/src/main/java/com/damai/base/BaseThreadPool.java +++ b/damai-thread-pool-framework/src/main/java/com/damai/base/BaseThreadPool.java @@ -49,7 +49,7 @@ public class BaseThreadPool { } private static Map> preprocess(final Map parentMdcContext, final Map parentHoldContext){ - Map> map = new HashMap<>(); + Map> map = new HashMap<>(8); Map holdContext = BaseParameterHolder.getParameterMap(); Map mdcContext = MDC.getCopyOfContextMap(); if (parentMdcContext == null) { diff --git a/damai-thread-pool-framework/src/main/java/com/damai/namefactory/AbstractNameThreadFactory.java b/damai-thread-pool-framework/src/main/java/com/damai/namefactory/AbstractNameThreadFactory.java index 357aaac6..6a1caa32 100644 --- a/damai-thread-pool-framework/src/main/java/com/damai/namefactory/AbstractNameThreadFactory.java +++ b/damai-thread-pool-framework/src/main/java/com/damai/namefactory/AbstractNameThreadFactory.java @@ -10,7 +10,7 @@ import java.util.concurrent.atomic.AtomicLong; **/ public abstract class AbstractNameThreadFactory implements ThreadFactory { - protected static final AtomicLong poolNum = new AtomicLong(1); + protected static final AtomicLong POOL_NUM = new AtomicLong(1); private final ThreadGroup group; private final AtomicLong threadNum = new AtomicLong(1); private String namePrefix = ""; diff --git a/damai-thread-pool-framework/src/main/java/com/damai/namefactory/BusinessNameThreadFactory.java b/damai-thread-pool-framework/src/main/java/com/damai/namefactory/BusinessNameThreadFactory.java index 1b1ccbfb..cfa9a74b 100644 --- a/damai-thread-pool-framework/src/main/java/com/damai/namefactory/BusinessNameThreadFactory.java +++ b/damai-thread-pool-framework/src/main/java/com/damai/namefactory/BusinessNameThreadFactory.java @@ -14,6 +14,6 @@ public class BusinessNameThreadFactory extends AbstractNameThreadFactory { */ @Override public String getNamePrefix() { - return "task-pool" + "--" + poolNum.getAndIncrement(); + return "task-pool" + "--" + POOL_NUM.getAndIncrement(); } } diff --git a/pom.xml b/pom.xml index ce8a9935..c059a0cc 100644 --- a/pom.xml +++ b/pom.xml @@ -38,7 +38,6 @@ damai-redisson-framework damai-server damai-server-client - api-stat damai-captcha-framework -- Gitee From 215a3664bd05b08475c8238b32dbb78ab6eb67d3 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Mon, 19 Feb 2024 17:30:17 +0800 Subject: [PATCH 02/74] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=A7=84=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/damai/enums/ApiRuleType.java | 10 +++++++++- .../src/main/java/com/damai/enums/AreaType.java | 9 +++++++++ .../src/main/java/com/damai/enums/BaseCode.java | 4 +++- .../src/main/java/com/damai/enums/BusinessStatus.java | 5 ++++- .../main/java/com/damai/enums/CompositeCheckType.java | 6 ++++++ damai-common/src/main/java/com/damai/enums/IdType.java | 3 +++ .../main/java/com/damai/enums/JobInfoMethodCode.java | 3 +++ .../src/main/java/com/damai/enums/JobRunStatus.java | 3 +++ .../src/main/java/com/damai/enums/OrderStatus.java | 3 +++ .../src/main/java/com/damai/enums/PayBillStatus.java | 3 +++ .../src/main/java/com/damai/enums/PayBillType.java | 3 +++ .../src/main/java/com/damai/enums/PayChannel.java | 3 +++ .../src/main/java/com/damai/enums/RuleStatus.java | 3 +++ .../src/main/java/com/damai/enums/RuleTimeUnit.java | 3 +++ .../src/main/java/com/damai/enums/SeatType.java | 3 +++ .../src/main/java/com/damai/enums/SellStatus.java | 3 +++ damai-common/src/main/java/com/damai/enums/Status.java | 3 +++ .../src/main/java/com/damai/enums/TimeType.java | 3 +++ .../src/main/java/com/damai/enums/UserLogStatus.java | 4 ++++ .../java/com/baidu/fsg/uid/worker/WorkerNodeType.java | 4 +++- .../src/main/java/com/damai/core/RedisKeyEnum.java | 3 +++ 21 files changed, 80 insertions(+), 4 deletions(-) diff --git a/damai-common/src/main/java/com/damai/enums/ApiRuleType.java b/damai-common/src/main/java/com/damai/enums/ApiRuleType.java index 70b5d856..9cac2fb4 100644 --- a/damai-common/src/main/java/com/damai/enums/ApiRuleType.java +++ b/damai-common/src/main/java/com/damai/enums/ApiRuleType.java @@ -6,9 +6,17 @@ package com.damai.enums; * @author: 阿宽不是程序员 **/ public enum ApiRuleType { + /** + * 没有规则 + * */ NO_RULE(0,"没有规则"), + /** + * 普通规则 + * */ RULE(1,"普通规则"), - + /** + * 深度规则 + * */ DEPTH_RULE(2,"深度规则"), ; diff --git a/damai-common/src/main/java/com/damai/enums/AreaType.java b/damai-common/src/main/java/com/damai/enums/AreaType.java index 971167c3..2642a159 100644 --- a/damai-common/src/main/java/com/damai/enums/AreaType.java +++ b/damai-common/src/main/java/com/damai/enums/AreaType.java @@ -6,9 +6,18 @@ package com.damai.enums; * @author: 阿宽不是程序员 **/ public enum AreaType { + /** + * 省 + * */ PROVINCE(1,"省"), + /** + * 市 + * */ MUNICIPALITIES(2,"市"), + /** + * 区或县 + * */ PREFECTURE(3,"区或县"), ; diff --git a/damai-common/src/main/java/com/damai/enums/BaseCode.java b/damai-common/src/main/java/com/damai/enums/BaseCode.java index 3058f25f..91abc96a 100644 --- a/damai-common/src/main/java/com/damai/enums/BaseCode.java +++ b/damai-common/src/main/java/com/damai/enums/BaseCode.java @@ -6,7 +6,9 @@ package com.damai.enums; * @author: 阿宽不是程序员 **/ public enum BaseCode { - + /** + * 基础code码 + * */ SUCCESS(0, "OK"), SYSTEM_ERROR(-1,"系统异常"), diff --git a/damai-common/src/main/java/com/damai/enums/BusinessStatus.java b/damai-common/src/main/java/com/damai/enums/BusinessStatus.java index dd0973be..93b5577c 100644 --- a/damai-common/src/main/java/com/damai/enums/BusinessStatus.java +++ b/damai-common/src/main/java/com/damai/enums/BusinessStatus.java @@ -2,11 +2,14 @@ package com.damai.enums; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: 通过状态枚举 + * @description: 通用状态枚举 * @author: 阿宽不是程序员 **/ public enum BusinessStatus { + /** + * 通用状态枚举 + * */ YES(1,"是"), NO(0,"否") ; diff --git a/damai-common/src/main/java/com/damai/enums/CompositeCheckType.java b/damai-common/src/main/java/com/damai/enums/CompositeCheckType.java index 1f4313db..6baa9837 100644 --- a/damai-common/src/main/java/com/damai/enums/CompositeCheckType.java +++ b/damai-common/src/main/java/com/damai/enums/CompositeCheckType.java @@ -6,8 +6,14 @@ package com.damai.enums; * @author: 阿宽不是程序员 **/ public enum CompositeCheckType { + /** + * 组合模式类型 + * */ USER_REGISTER_CHECK(1,"user_register_check","用户注册"), + /** + * 订单创建 + * */ PROGRAM_ORDER_CREATE_CHECK(2,"program_order_create_check","订单创建"), ; diff --git a/damai-common/src/main/java/com/damai/enums/IdType.java b/damai-common/src/main/java/com/damai/enums/IdType.java index e83417f5..87a06ed9 100644 --- a/damai-common/src/main/java/com/damai/enums/IdType.java +++ b/damai-common/src/main/java/com/damai/enums/IdType.java @@ -6,6 +6,9 @@ package com.damai.enums; * @author: 阿宽不是程序员 **/ public enum IdType { + /** + * 证件类型 + * */ IDENTITY(1, "身份证"), HK_M_TW_PERMIT(2, "港澳台居民居住证"), HKM_PASS(3, "港澳居民来往内地通行证"), diff --git a/damai-common/src/main/java/com/damai/enums/JobInfoMethodCode.java b/damai-common/src/main/java/com/damai/enums/JobInfoMethodCode.java index d299cac7..585e5357 100644 --- a/damai-common/src/main/java/com/damai/enums/JobInfoMethodCode.java +++ b/damai-common/src/main/java/com/damai/enums/JobInfoMethodCode.java @@ -6,6 +6,9 @@ package com.damai.enums; * @author: 阿宽不是程序员 **/ public enum JobInfoMethodCode { + /** + * job类型 + * */ GET(1, "get方法"), POST(2,"post方法"), diff --git a/damai-common/src/main/java/com/damai/enums/JobRunStatus.java b/damai-common/src/main/java/com/damai/enums/JobRunStatus.java index 36aed489..c10812ee 100644 --- a/damai-common/src/main/java/com/damai/enums/JobRunStatus.java +++ b/damai-common/src/main/java/com/damai/enums/JobRunStatus.java @@ -6,6 +6,9 @@ package com.damai.enums; * @author: 阿宽不是程序员 **/ public enum JobRunStatus { + /** + * job运行状态 + * */ RUN_NEW(1, "新建"), RUN_SUCCESS(2,"执行成功"), diff --git a/damai-common/src/main/java/com/damai/enums/OrderStatus.java b/damai-common/src/main/java/com/damai/enums/OrderStatus.java index 4e6140fb..d3d7b50d 100644 --- a/damai-common/src/main/java/com/damai/enums/OrderStatus.java +++ b/damai-common/src/main/java/com/damai/enums/OrderStatus.java @@ -6,6 +6,9 @@ package com.damai.enums; * @author: 阿宽不是程序员 **/ public enum OrderStatus { + /** + * 订单状态 + * */ NO_PAY(1,"未支付"), CANCEL(2,"已取消"), PAY(3,"已支付"), diff --git a/damai-common/src/main/java/com/damai/enums/PayBillStatus.java b/damai-common/src/main/java/com/damai/enums/PayBillStatus.java index 5a80ab52..e12a7527 100644 --- a/damai-common/src/main/java/com/damai/enums/PayBillStatus.java +++ b/damai-common/src/main/java/com/damai/enums/PayBillStatus.java @@ -6,6 +6,9 @@ package com.damai.enums; * @author: 阿宽不是程序员 **/ public enum PayBillStatus { + /** + * 支付账单状态 + * */ NO_PAY(1,"未支付"), CANCEL(2,"已取消"), PAY(3,"已支付"), diff --git a/damai-common/src/main/java/com/damai/enums/PayBillType.java b/damai-common/src/main/java/com/damai/enums/PayBillType.java index 28669b66..6cf78b05 100644 --- a/damai-common/src/main/java/com/damai/enums/PayBillType.java +++ b/damai-common/src/main/java/com/damai/enums/PayBillType.java @@ -6,6 +6,9 @@ package com.damai.enums; * @author: 阿宽不是程序员 **/ public enum PayBillType { + /** + * 账单类型 + * */ PROGRAM(1,"节目"), ; diff --git a/damai-common/src/main/java/com/damai/enums/PayChannel.java b/damai-common/src/main/java/com/damai/enums/PayChannel.java index c8eeafef..7a28686e 100644 --- a/damai-common/src/main/java/com/damai/enums/PayChannel.java +++ b/damai-common/src/main/java/com/damai/enums/PayChannel.java @@ -6,6 +6,9 @@ package com.damai.enums; * @author: 阿宽不是程序员 **/ public enum PayChannel { + /** + * 支付渠道 + * */ ALIPAY(1,"alipay","支付宝"), WX(2,"wx","微信"), diff --git a/damai-common/src/main/java/com/damai/enums/RuleStatus.java b/damai-common/src/main/java/com/damai/enums/RuleStatus.java index 62aa3ff3..1c5070e4 100644 --- a/damai-common/src/main/java/com/damai/enums/RuleStatus.java +++ b/damai-common/src/main/java/com/damai/enums/RuleStatus.java @@ -6,6 +6,9 @@ package com.damai.enums; * @author: 阿宽不是程序员 **/ public enum RuleStatus { + /** + * 规则状态 + * */ RUN(1,"正常"), STOP(0,"禁用") ; diff --git a/damai-common/src/main/java/com/damai/enums/RuleTimeUnit.java b/damai-common/src/main/java/com/damai/enums/RuleTimeUnit.java index fd33ceb7..c2720c18 100644 --- a/damai-common/src/main/java/com/damai/enums/RuleTimeUnit.java +++ b/damai-common/src/main/java/com/damai/enums/RuleTimeUnit.java @@ -6,6 +6,9 @@ package com.damai.enums; * @author: 阿宽不是程序员 **/ public enum RuleTimeUnit { + /** + * 规则时间单位 + * */ SECOND(1,"秒"), MINUTE(2,"分钟") ; diff --git a/damai-common/src/main/java/com/damai/enums/SeatType.java b/damai-common/src/main/java/com/damai/enums/SeatType.java index 8d9d2b98..bd83e6ef 100644 --- a/damai-common/src/main/java/com/damai/enums/SeatType.java +++ b/damai-common/src/main/java/com/damai/enums/SeatType.java @@ -6,6 +6,9 @@ package com.damai.enums; * @author: 阿宽不是程序员 **/ public enum SeatType { + /** + * 座位类型 + * */ GENERAL(1,"通用座位"), ; diff --git a/damai-common/src/main/java/com/damai/enums/SellStatus.java b/damai-common/src/main/java/com/damai/enums/SellStatus.java index 5706a9d4..dd94759a 100644 --- a/damai-common/src/main/java/com/damai/enums/SellStatus.java +++ b/damai-common/src/main/java/com/damai/enums/SellStatus.java @@ -6,6 +6,9 @@ package com.damai.enums; * @author: 阿宽不是程序员 **/ public enum SellStatus { + /** + * 售卖状态 + * */ NO_SOLD(1,"未售卖"), LOCK(2,"锁定"), SOLD(3,"已售卖"), diff --git a/damai-common/src/main/java/com/damai/enums/Status.java b/damai-common/src/main/java/com/damai/enums/Status.java index d3f4270c..05c3a416 100644 --- a/damai-common/src/main/java/com/damai/enums/Status.java +++ b/damai-common/src/main/java/com/damai/enums/Status.java @@ -7,6 +7,9 @@ package com.damai.enums; **/ public enum Status { + /** + * 基础状态 + * */ RUN(1,"正常"), STOP(0,"禁用") ; diff --git a/damai-common/src/main/java/com/damai/enums/TimeType.java b/damai-common/src/main/java/com/damai/enums/TimeType.java index 656b6efc..d999bcc1 100644 --- a/damai-common/src/main/java/com/damai/enums/TimeType.java +++ b/damai-common/src/main/java/com/damai/enums/TimeType.java @@ -6,6 +6,9 @@ package com.damai.enums; * @author: 阿宽不是程序员 **/ public enum TimeType { + /** + * 时间类型 + * */ WEEK(1,"本周内"), MONTH(2,"一个月内"), ; diff --git a/damai-common/src/main/java/com/damai/enums/UserLogStatus.java b/damai-common/src/main/java/com/damai/enums/UserLogStatus.java index cdff82d7..aa774bad 100644 --- a/damai-common/src/main/java/com/damai/enums/UserLogStatus.java +++ b/damai-common/src/main/java/com/damai/enums/UserLogStatus.java @@ -6,7 +6,11 @@ package com.damai.enums; * @author: 阿宽不是程序员 **/ public enum UserLogStatus { + /** + * 用户登录状态 + * */ IN(1,"登录"), + OUT(0,"退出") ; diff --git a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/worker/WorkerNodeType.java b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/worker/WorkerNodeType.java index b69b2401..213a9537 100644 --- a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/worker/WorkerNodeType.java +++ b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/worker/WorkerNodeType.java @@ -25,7 +25,9 @@ import com.baidu.fsg.uid.utils.ValuedEnum; * @author yutianbao */ public enum WorkerNodeType implements ValuedEnum { - + /** + * 百度uid + * */ CONTAINER(1), ACTUAL(2); /** diff --git a/damai-redis-framework/src/main/java/com/damai/core/RedisKeyEnum.java b/damai-redis-framework/src/main/java/com/damai/core/RedisKeyEnum.java index 0610a950..43cdb0ce 100644 --- a/damai-redis-framework/src/main/java/com/damai/core/RedisKeyEnum.java +++ b/damai-redis-framework/src/main/java/com/damai/core/RedisKeyEnum.java @@ -7,6 +7,9 @@ package com.damai.core; * @author: 阿宽不是程序员 **/ public enum RedisKeyEnum { + /** + * redis 缓存 key管理 + * */ Key("key","键值测试","value为TestCacheDto类型","k"), Key2("key:%s","键值占位测试","value为TestCacheDto类型","k"), -- Gitee From afb19cf9ee4d9b6f8470bbf088a07b5615e520fe Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Tue, 20 Feb 2024 13:52:44 +0800 Subject: [PATCH 03/74] =?UTF-8?q?=E7=BB=84=E5=90=88=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/damai/config/DaMaiCommonAutoConfig.java | 8 ++++++-- .../java/com/damai/config/JacksonCustom.java | 17 +++++++++-------- .../main/java/com/damai/constant/Constant.java | 2 ++ .../core/PrefixDistinctionNameProperties.java | 10 ++++------ .../damai/context/DelayQueueProduceCombine.java | 4 +--- .../com/damai/event/DelayQueueInitHandler.java | 3 +-- .../java/com/damai/client/BaseDataClient.java | 4 +++- .../main/java/com/damai/client/JobClient.java | 4 +++- .../main/java/com/damai/client/OrderClient.java | 4 +++- .../main/java/com/damai/client/PayClient.java | 4 +++- .../main/java/com/damai/client/UserClient.java | 12 ++++++------ .../delayconsumer/DelayOrderCancelConsumer.java | 3 ++- .../delaysend/DelayOperateProgramDataSend.java | 4 +++- .../composite/ProgramDetailCheckHandler.java | 7 ++++--- .../composite/ProgramExistCheckHandler.java | 6 +++--- .../composite/ProgramShowTimeCheckHandler.java | 6 +++--- .../composite/UserExistCheckHandler.java | 8 ++++---- .../DelayOperateProgramDataConsumer.java | 3 ++- .../service/delaysend/DelayOrderCancelSend.java | 4 +++- .../composite/UserExistCheckHandler.java | 2 +- .../composite/UserRegisterVerifyCaptcha.java | 2 +- 21 files changed, 67 insertions(+), 50 deletions(-) diff --git a/damai-common/src/main/java/com/damai/config/DaMaiCommonAutoConfig.java b/damai-common/src/main/java/com/damai/config/DaMaiCommonAutoConfig.java index 4b9a6cff..7457375a 100644 --- a/damai-common/src/main/java/com/damai/config/DaMaiCommonAutoConfig.java +++ b/damai-common/src/main/java/com/damai/config/DaMaiCommonAutoConfig.java @@ -3,7 +3,6 @@ package com.damai.config; import com.damai.core.PrefixDistinctionNameProperties; import com.damai.core.SpringUtil; import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; -import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; /** @@ -11,9 +10,14 @@ import org.springframework.context.annotation.Bean; * @description: 通用配置 * @author: 阿宽不是程序员 **/ -@EnableConfigurationProperties(PrefixDistinctionNameProperties.class) + public class DaMaiCommonAutoConfig { + @Bean + public PrefixDistinctionNameProperties prefixDistinctionNameProperties(){ + return new PrefixDistinctionNameProperties(); + } + @Bean public Jackson2ObjectMapperBuilderCustomizer jacksonCustom(){ return new JacksonCustom(); diff --git a/damai-common/src/main/java/com/damai/config/JacksonCustom.java b/damai-common/src/main/java/com/damai/config/JacksonCustom.java index b5ae0acd..59a8db0a 100644 --- a/damai-common/src/main/java/com/damai/config/JacksonCustom.java +++ b/damai-common/src/main/java/com/damai/config/JacksonCustom.java @@ -37,12 +37,10 @@ import java.util.TimeZone; **/ public class JacksonCustom implements Jackson2ObjectMapperBuilderCustomizer, Ordered { - /** 默认日期时间格式 */ + /** + * 默认日期时间格式 + * */ private final String dateTimeFormat = "yyyy-MM-dd HH:mm:ss"; - /** 默认日期格式 */ - private final String dateFormat = "yyyy-MM-dd"; - /** 默认时间格式 */ - private final String timeFormat = "HH:mm:ss"; @Override public void customize(Jackson2ObjectMapperBuilder builder) { @@ -76,10 +74,14 @@ public class JacksonCustom implements Jackson2ObjectMapperBuilderCustomizer, Ord simpleModules[3] = new SimpleModule().addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(dateTimeFormatter)); simpleModules[4] = new SimpleModule().addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(dateTimeFormatter)); //将LocalDate进行格式化和序列化 + //默认日期格式 + String dateFormat = "yyyy-MM-dd"; DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(dateFormat); simpleModules[5] = new SimpleModule().addSerializer(LocalDate.class, new LocalDateSerializer(dateFormatter)); simpleModules[6] = new SimpleModule().addDeserializer(LocalDate.class, new LocalDateDeserializer(dateFormatter)); //将LocalTime进行格式化和序列化 + //默认时间格式 + String timeFormat = "HH:mm:ss"; DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern(timeFormat); simpleModules[7] = new SimpleModule().addSerializer(LocalTime.class, new LocalTimeSerializer(timeFormatter)); simpleModules[8] = new SimpleModule().addDeserializer(LocalTime.class, new LocalTimeDeserializer(timeFormatter)); @@ -91,10 +93,9 @@ public class JacksonCustom implements Jackson2ObjectMapperBuilderCustomizer, Ord //允许有未知的属性 builder.featuresToDisable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); //允许包含不带引号的控制字符 - builder.featuresToEnable(JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS); - + builder.featuresToEnable(JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS.mappedFeature()); //数字转换为字符串 - builder.featuresToEnable(JsonWriteFeature.WRITE_NUMBERS_AS_STRINGS ); + builder.featuresToEnable(JsonWriteFeature.WRITE_NUMBERS_AS_STRINGS.mappedFeature()); } @Override diff --git a/damai-common/src/main/java/com/damai/constant/Constant.java b/damai-common/src/main/java/com/damai/constant/Constant.java index 0eb337e9..ee477680 100644 --- a/damai-common/src/main/java/com/damai/constant/Constant.java +++ b/damai-common/src/main/java/com/damai/constant/Constant.java @@ -28,4 +28,6 @@ public class Constant { public static final String ALIPAY_NOTIFY_FAILURE_RESULT = "failure"; + public static final String SPRING_INJECT_PREFIX_DISTINCTION_NAME = "${prefix.distinction.name:damai}"; + } diff --git a/damai-common/src/main/java/com/damai/core/PrefixDistinctionNameProperties.java b/damai-common/src/main/java/com/damai/core/PrefixDistinctionNameProperties.java index 80913aa1..3b621d60 100644 --- a/damai-common/src/main/java/com/damai/core/PrefixDistinctionNameProperties.java +++ b/damai-common/src/main/java/com/damai/core/PrefixDistinctionNameProperties.java @@ -1,9 +1,9 @@ package com.damai.core; import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.beans.factory.annotation.Value; -import static com.damai.core.PrefixDistinctionNameProperties.PREFIX; +import static com.damai.constant.Constant.SPRING_INJECT_PREFIX_DISTINCTION_NAME; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 @@ -11,10 +11,8 @@ import static com.damai.core.PrefixDistinctionNameProperties.PREFIX; * @author: 阿宽不是程序员 **/ @Data -@ConfigurationProperties(prefix = PREFIX) public class PrefixDistinctionNameProperties { - public static final String PREFIX = "prefix.distinction"; - - private String name = "damai"; + @Value(SPRING_INJECT_PREFIX_DISTINCTION_NAME) + private String name; } diff --git a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/context/DelayQueueProduceCombine.java b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/context/DelayQueueProduceCombine.java index 92938314..cd5777c9 100644 --- a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/context/DelayQueueProduceCombine.java +++ b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/context/DelayQueueProduceCombine.java @@ -2,7 +2,6 @@ package com.damai.context; import com.damai.core.DelayProduceQueue; import com.damai.core.IsolationRegionSelector; -import com.damai.core.SpringUtil; import java.util.ArrayList; import java.util.List; @@ -23,8 +22,7 @@ public class DelayQueueProduceCombine { Integer isolationRegionCount = delayQueueBasePart.getDelayQueueProperties().getIsolationRegionCount(); isolationRegionSelector =new IsolationRegionSelector(isolationRegionCount); for(int i = 0; i < isolationRegionCount; i++) { - delayProduceQueueList.add(new DelayProduceQueue(delayQueueBasePart.getRedissonClient(), - SpringUtil.getPrefixDistinctionName() + "-" + topic + "-" + i)); + delayProduceQueueList.add(new DelayProduceQueue(delayQueueBasePart.getRedissonClient(),topic + "-" + i)); } } diff --git a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/event/DelayQueueInitHandler.java b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/event/DelayQueueInitHandler.java index 1b36902a..a61f3b1f 100644 --- a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/event/DelayQueueInitHandler.java +++ b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/event/DelayQueueInitHandler.java @@ -5,7 +5,6 @@ import com.damai.config.DelayQueueProperties; import com.damai.context.DelayQueuePart; import com.damai.core.ConsumerTask; import com.damai.core.DelayConsumerQueue; -import com.damai.core.SpringUtil; import lombok.AllArgsConstructor; import org.redisson.api.RedissonClient; import org.springframework.boot.context.event.ApplicationStartedEvent; @@ -36,7 +35,7 @@ public class DelayQueueInitHandler implements ApplicationListener> select(@Valid @RequestBody UserIdDto dto); + ApiResponse> select(UserIdDto dto); /** * 查询用户和购票人集合 * @param dto 参数 * @return 结果 */ - @PostMapping(value = "/user/getUserAndTicketUserList") + @PostMapping(value = "/user/get/user/ticket/list") ApiResponse getUserAndTicketUserList(UserGetAndTicketUserListDto dto); } diff --git a/damai-server/damai-order-service/src/main/java/com/damai/service/delayconsumer/DelayOrderCancelConsumer.java b/damai-server/damai-order-service/src/main/java/com/damai/service/delayconsumer/DelayOrderCancelConsumer.java index e23fcffa..74939534 100644 --- a/damai-server/damai-order-service/src/main/java/com/damai/service/delayconsumer/DelayOrderCancelConsumer.java +++ b/damai-server/damai-order-service/src/main/java/com/damai/service/delayconsumer/DelayOrderCancelConsumer.java @@ -1,6 +1,7 @@ package com.damai.service.delayconsumer; import com.alibaba.fastjson.JSON; +import com.damai.core.SpringUtil; import com.damai.core.StringUtil; import com.damai.core.ConsumerTask; import com.damai.dto.DelayOrderCancelDto; @@ -46,6 +47,6 @@ public class DelayOrderCancelConsumer implements ConsumerTask { @Override public String topic() { - return DELAY_ORDER_CANCEL_TOPIC; + return SpringUtil.getPrefixDistinctionName() + "-" + DELAY_ORDER_CANCEL_TOPIC; } } diff --git a/damai-server/damai-order-service/src/main/java/com/damai/service/delaysend/DelayOperateProgramDataSend.java b/damai-server/damai-order-service/src/main/java/com/damai/service/delaysend/DelayOperateProgramDataSend.java index ce0b1c0d..b3180f6d 100644 --- a/damai-server/damai-order-service/src/main/java/com/damai/service/delaysend/DelayOperateProgramDataSend.java +++ b/damai-server/damai-order-service/src/main/java/com/damai/service/delaysend/DelayOperateProgramDataSend.java @@ -1,6 +1,7 @@ package com.damai.service.delaysend; import com.damai.context.DelayQueueContext; +import com.damai.core.SpringUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -23,7 +24,8 @@ public class DelayOperateProgramDataSend { public void sendMessage(String message){ try { - delayQueueContext.sendMessage(DELAY_OPERATE_PROGRAM_DATA_TOPIC,message, DELAY_OPERATE_PROGRAM_DATA_TIME, DELAY_OPERATE_PROGRAM_DATA_TIME_UNIT); + delayQueueContext.sendMessage(SpringUtil.getPrefixDistinctionName() + "-" + DELAY_OPERATE_PROGRAM_DATA_TOPIC, + message, DELAY_OPERATE_PROGRAM_DATA_TIME, DELAY_OPERATE_PROGRAM_DATA_TIME_UNIT); }catch (Exception e) { log.error("send message error message : {}",message,e); } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/ProgramDetailCheckHandler.java b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/ProgramDetailCheckHandler.java index ddb07e57..f0c4baf8 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/ProgramDetailCheckHandler.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/ProgramDetailCheckHandler.java @@ -18,6 +18,7 @@ public class ProgramDetailCheckHandler extends AbstractComposite ticketUserVoList = new ArrayList<>(); @@ -67,16 +67,16 @@ public class UserExistCheckHandler extends AbstractComposite { @Override public Integer executeTier() { - return 2; + return 3; } @Override diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/UserRegisterVerifyCaptcha.java b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/UserRegisterVerifyCaptcha.java index e889540a..e09bdcec 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/UserRegisterVerifyCaptcha.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/UserRegisterVerifyCaptcha.java @@ -51,7 +51,7 @@ public class UserRegisterVerifyCaptcha extends AbstractComposite Date: Tue, 20 Feb 2024 14:08:34 +0800 Subject: [PATCH 04/74] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shardingsphere/DatabaseOrderComplexGeneArithmetic.java | 2 +- .../damai/shardingsphere/TableOrderComplexGeneArithmetic.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/DatabaseOrderComplexGeneArithmetic.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/DatabaseOrderComplexGeneArithmetic.java index 474a1af1..e63df5e2 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/DatabaseOrderComplexGeneArithmetic.java +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/DatabaseOrderComplexGeneArithmetic.java @@ -64,7 +64,7 @@ public class DatabaseOrderComplexGeneArithmetic implements ComplexKeysShardingAl value = orderNumberValues.stream().findFirst().orElseThrow(() -> new DaMaiFrameException(BaseCode.ORDER_NUMBER_NOT_EXIST)); //如果是user_id查询 } else if (CollectionUtil.isNotEmpty(userIdValues)) { - value = orderNumberValues.stream().findFirst().orElseThrow(() -> new DaMaiFrameException(BaseCode.USER_ID_NOT_EXIST)); + value = userIdValues.stream().findFirst().orElseThrow(() -> new DaMaiFrameException(BaseCode.USER_ID_NOT_EXIST)); } //如果order_number或者user_id的值存在 if (Objects.nonNull(value)) { diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/TableOrderComplexGeneArithmetic.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/TableOrderComplexGeneArithmetic.java index fc67848a..2af558b0 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/TableOrderComplexGeneArithmetic.java +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/TableOrderComplexGeneArithmetic.java @@ -55,7 +55,7 @@ public class TableOrderComplexGeneArithmetic implements ComplexKeysShardingAlgor value = orderNumberValues.stream().findFirst().orElseThrow(() -> new DaMaiFrameException(BaseCode.ORDER_NUMBER_NOT_EXIST)); //如果是user_id查询 } else if (CollectionUtil.isNotEmpty(userIdValues)) { - value = orderNumberValues.stream().findFirst().orElseThrow(() -> new DaMaiFrameException(BaseCode.USER_ID_NOT_EXIST)); + value = userIdValues.stream().findFirst().orElseThrow(() -> new DaMaiFrameException(BaseCode.USER_ID_NOT_EXIST)); } //如果order_number或者user_id的值存在 if (Objects.nonNull(value)) { -- Gitee From 886e531c3571073cdd41593d955ba4eaeb2f9068 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Tue, 20 Feb 2024 14:59:00 +0800 Subject: [PATCH 05/74] =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E6=9C=BA=E5=88=B6=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/damai/core/RepeatExecuteLimitConstants.java | 4 +++- damai-server/damai-customize-service/pom.xml | 5 +++++ .../com/damai/kafka/ApiDataMessageConsumer.java | 6 +++--- .../main/java/com/damai/service/ApiDataService.java | 12 +++++++++++- .../damai/service/init/ProgramCategoryInitData.java | 5 +++++ .../service/init/ProgramElasticsearchInitData.java | 6 ++++++ .../damai/service/init/ProgramShowTimeRenewal.java | 5 +++++ .../damai/composite/CompositeAutoConfiguration.java | 13 +++++++++---- .../src/main/java/com/damai/init/InitData.java | 5 +++++ .../main/java/com/damai/init/InitDataContainer.java | 11 ++++++++--- .../DatabaseOrderComplexGeneArithmetic.java | 2 +- 11 files changed, 61 insertions(+), 13 deletions(-) diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/core/RepeatExecuteLimitConstants.java b/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/core/RepeatExecuteLimitConstants.java index 108a3fb2..e4c3c8b4 100644 --- a/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/core/RepeatExecuteLimitConstants.java +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/core/RepeatExecuteLimitConstants.java @@ -2,8 +2,10 @@ package com.damai.core; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: 常量 + * @description: 防重复幂等业务名管理 * @author: 阿宽不是程序员 **/ public class RepeatExecuteLimitConstants { + + public static final String CONSUMER_API_DATA_MESSAGE = "consumerApiDataMessage"; } diff --git a/damai-server/damai-customize-service/pom.xml b/damai-server/damai-customize-service/pom.xml index ca34d176..d361f1df 100644 --- a/damai-server/damai-customize-service/pom.xml +++ b/damai-server/damai-customize-service/pom.xml @@ -66,6 +66,11 @@ damai-service-lock-framework ${revision} + + com.example + damai-repeat-execute-limit-framework + ${revision} + org.springframework.cloud spring-cloud-starter-openfeign diff --git a/damai-server/damai-customize-service/src/main/java/com/damai/kafka/ApiDataMessageConsumer.java b/damai-server/damai-customize-service/src/main/java/com/damai/kafka/ApiDataMessageConsumer.java index ce93d724..4b93e027 100644 --- a/damai-server/damai-customize-service/src/main/java/com/damai/kafka/ApiDataMessageConsumer.java +++ b/damai-server/damai-customize-service/src/main/java/com/damai/kafka/ApiDataMessageConsumer.java @@ -22,12 +22,12 @@ public class ApiDataMessageConsumer { private ApiDataService apiDataService; @KafkaListener(topics = {"${kafka.consumer.topic:save_api_data}"},containerFactory = "kafkaListenerContainerFactory") - public void consumerOrderMessage(ConsumerRecord consumerRecord){ + public void consumerApiDataMessage(ConsumerRecord consumerRecord){ try { Optional.ofNullable(consumerRecord.value()).map(String::valueOf).ifPresent(value -> { - log.info("consumerOrderMessage message:{}",value); + log.info("consumerApiDataMessage consumerRecord:{}",JSON.toJSONString(consumerRecord)); ApiData apiData = JSON.parseObject(value, ApiData.class); - apiDataService.save(apiData); + apiDataService.saveApiData(apiData); }); }catch (Exception e) { log.error("consumerApiDataMessage error",e); diff --git a/damai-server/damai-customize-service/src/main/java/com/damai/service/ApiDataService.java b/damai-server/damai-customize-service/src/main/java/com/damai/service/ApiDataService.java index 85226901..9f413abb 100644 --- a/damai-server/damai-customize-service/src/main/java/com/damai/service/ApiDataService.java +++ b/damai-server/damai-customize-service/src/main/java/com/damai/service/ApiDataService.java @@ -1,15 +1,19 @@ package com.damai.service; import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.damai.core.RepeatExecuteLimitConstants; import com.damai.core.StringUtil; import com.damai.dto.ApiDataDto; import com.damai.entity.ApiData; import com.damai.mapper.ApiDataMapper; +import com.damai.repeatexecutelimit.annotion.RepeatExecuteLimit; import com.damai.vo.ApiDataVo; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -24,13 +28,19 @@ import java.util.stream.Collectors; * @description: api调用记录 service * @author: 阿宽不是程序员 **/ - +@Slf4j @Service public class ApiDataService extends ServiceImpl { @Autowired private ApiDataMapper apiDataMapper; + @RepeatExecuteLimit(name = RepeatExecuteLimitConstants.CONSUMER_API_DATA_MESSAGE,keys = {"#apiData.id"}) + public void saveApiData(ApiData apiData){ + log.info("saveApiData apiData:{}", JSON.toJSONString(apiData)); + apiDataMapper.insert(apiData); + } + public Page pageList(final ApiDataDto dto) { Page page = Page.of(dto.getPageNo(), dto.getPageSize()); LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(ApiData.class) diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramCategoryInitData.java b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramCategoryInitData.java index 5cc45f43..39189af0 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramCategoryInitData.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramCategoryInitData.java @@ -45,6 +45,11 @@ public class ProgramCategoryInitData implements InitData { }); } + @Override + public int executeOrder() { + return 1; + } + @ServiceLock(lockType= LockType.Write,name = PROGRAM_CATEGORY_LOCK,keys = {"#all"}) public void programCategoryRedisDataInit(){ QueryWrapper lambdaQueryWrapper = Wrappers.emptyWrapper(); diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramElasticsearchInitData.java b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramElasticsearchInitData.java index 480d73ef..ad20dd49 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramElasticsearchInitData.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramElasticsearchInitData.java @@ -42,6 +42,12 @@ public class ProgramElasticsearchInitData implements InitData { public void init() { BusinessThreadPool.execute(this::initElasticsearchData); } + + @Override + public int executeOrder() { + return 3; + } + public boolean indexAdd(){ boolean result = businessEsHandle.checkIndex(SpringUtil.getPrefixDistinctionName() + "-" + ProgramDocumentParamName.INDEX_NAME, ProgramDocumentParamName.INDEX_TYPE); diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramShowTimeRenewal.java b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramShowTimeRenewal.java index 2a4a192b..0ce3f4d2 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramShowTimeRenewal.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramShowTimeRenewal.java @@ -23,4 +23,9 @@ public class ProgramShowTimeRenewal implements InitData { public void init() { programShowTimeService.renewal(); } + + @Override + public int executeOrder() { + return 2; + } } diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/CompositeAutoConfiguration.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/CompositeAutoConfiguration.java index 0dda4a52..fd46c03c 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/CompositeAutoConfiguration.java +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/CompositeAutoConfiguration.java @@ -12,12 +12,17 @@ import org.springframework.context.annotation.Bean; public class CompositeAutoConfiguration { @Bean - public ApplicationStartedEventHandler applicationStartedEventHandler(CompositeContainer compositeContainer, InitDataContainer initDataContainer){ - return new ApplicationStartedEventHandler(compositeContainer,initDataContainer); + public CompositeContainer compositeContainer(){ + return new CompositeContainer(); } @Bean - public CompositeContainer compositeContainer(){ - return new CompositeContainer(); + public InitDataContainer initDataContainer(){ + return new InitDataContainer(); + } + + @Bean + public ApplicationStartedEventHandler applicationStartedEventHandler(CompositeContainer compositeContainer, InitDataContainer initDataContainer){ + return new ApplicationStartedEventHandler(compositeContainer,initDataContainer); } } diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/init/InitData.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/init/InitData.java index 38437b25..51ffa0a3 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/init/InitData.java +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/init/InitData.java @@ -10,4 +10,9 @@ public interface InitData { * 初始化操作 * */ void init(); + /** + * 执行顺序 + * @return 执行顺序 + * */ + int executeOrder(); } diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/init/InitDataContainer.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/init/InitDataContainer.java index 1218bd78..b4b99659 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/init/InitDataContainer.java +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/init/InitDataContainer.java @@ -1,15 +1,17 @@ package com.damai.init; import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.stereotype.Component; +import java.util.Comparator; +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; + /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 * @description: 初始化操作执行 * @author: 阿宽不是程序员 **/ -@Component public class InitDataContainer { /** @@ -18,6 +20,9 @@ public class InitDataContainer { public void initData(ConfigurableApplicationContext applicationContext){ // 获取所有 InitData 类型的 Bean Map initDataMap = applicationContext.getBeansOfType(InitData.class); - initDataMap.forEach((k,v) -> v.init()); + List initDataList = + initDataMap.values().stream().sorted(Comparator.comparingInt(InitData::executeOrder)) + .collect(Collectors.toList()); + initDataList.forEach(InitData::init); } } diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/DatabaseOrderComplexGeneArithmetic.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/DatabaseOrderComplexGeneArithmetic.java index e63df5e2..b19ba609 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/DatabaseOrderComplexGeneArithmetic.java +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/DatabaseOrderComplexGeneArithmetic.java @@ -24,7 +24,7 @@ public class DatabaseOrderComplexGeneArithmetic implements ComplexKeysShardingAl private static final String SHARDING_COUNT_KEY_NAME = "sharding-count"; /** - * 属性分库名 + * 属性分表名 * */ private static final String TABLE_SHARDING_COUNT_KEY_NAME = "table-sharding-count"; -- Gitee From 5e3975c00f6d513d8539a1452d3417b2f071cf62 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Wed, 21 Feb 2024 22:03:38 +0800 Subject: [PATCH 06/74] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=A7=84=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/baidu/fsg/uid/config/IdGeneratorRedisConfig.java | 2 +- .../src/main/java/com/damai/entity/DepthRule.java | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/config/IdGeneratorRedisConfig.java b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/config/IdGeneratorRedisConfig.java index 27cedd37..ada67147 100644 --- a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/config/IdGeneratorRedisConfig.java +++ b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/config/IdGeneratorRedisConfig.java @@ -13,7 +13,7 @@ import org.springframework.data.redis.serializer.StringRedisSerializer; * @program: cook-frame * @description: 对百度开源id生成器进行redis适配 * @see 百度开源id生成器 - * @author: 星哥 + * @author: 阿宽不是程序员 * @create: 2023-05-23 **/ @Configuration(proxyBeanMethods = false) diff --git a/damai-server/damai-customize-service/src/main/java/com/damai/entity/DepthRule.java b/damai-server/damai-customize-service/src/main/java/com/damai/entity/DepthRule.java index 0d4a9a97..4acc018c 100644 --- a/damai-server/damai-customize-service/src/main/java/com/damai/entity/DepthRule.java +++ b/damai-server/damai-customize-service/src/main/java/com/damai/entity/DepthRule.java @@ -5,10 +5,9 @@ import lombok.Data; import java.util.Date; /** - * @program: cook-frame - * @description: - * @author: 星哥 - * @create: 2023-06-30 + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 深度规则 实体 + * @author: 阿宽不是程序员 **/ @Data public class DepthRule { -- Gitee From c8cdb871a68c726ed2de59b510607e8cc87bafb9 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Thu, 22 Feb 2024 19:15:37 +0800 Subject: [PATCH 07/74] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=9C=8D=E5=8A=A1bug?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LICENSE.txt => LICENSE | 4 +- .../main/java/com/damai/enums/BaseCode.java | 1 + .../main/java/com/damai/enums/CodeType.java | 73 ++ .../main/java/com/damai/jwt/TokenUtil.java | 34 +- .../src/main/java/com/damai/util/RsaTool.java | 3 +- ...{RedisKeyEnum.java => RedisKeyManage.java} | 48 +- .../main/java/com/damai/redis/CacheUtil.java | 12 +- .../main/java/com/damai/redis/RedisCache.java | 538 ++++++------ .../java/com/damai/redis/RedisCacheImpl.java | 816 +++++++++--------- .../{RedisKeyWrap.java => RedisKeyBuild.java} | 20 +- .../java/com/damai/dto/ChannelDataAddDto.java | 4 + .../java/com/damai/vo/GetChannelDataVo.java | 3 + .../main/java/com/damai/dto/UserLoginDto.java | 11 + .../java/com/damai/dto/UserLogoutDto.java | 34 +- .../damai/controller/TokenDataController.java | 43 - .../java/com/damai/entity/ChannelData.java | 5 + .../com/damai/mapper/TokenDataMapper.java | 14 - .../com/damai/service/ChannelDataService.java | 6 +- .../damai/kafka/ApiDataMessageConsumer.java | 3 +- .../java/com/damai/service/RuleService.java | 14 +- .../damai/filter/RequestValidationFilter.java | 29 +- .../filter/ResponseValidationFilter.java | 9 - .../com/damai/property/GatewayProperty.java | 4 +- .../com/damai/service/ApiRestrictService.java | 14 +- .../com/damai/service/ChannelDataService.java | 27 +- .../java/com/damai/service/TokenService.java | 16 +- .../src/main/resources/bootstrap.yml | 4 +- .../java/com/damai/service/OrderService.java | 14 +- .../damai/controller/ProgramController.java | 10 - .../damai/service/ProgramCategoryService.java | 6 +- .../damai/service/ProgramOrderService.java | 28 +- .../com/damai/service/ProgramService.java | 20 +- .../damai/service/ProgramShowTimeService.java | 8 +- .../java/com/damai/service/SeatService.java | 22 +- .../damai/service/TicketCategoryService.java | 10 +- .../composite/ProgramExistCheckHandler.java | 6 +- .../ProgramShowTimeCheckHandler.java | 6 +- .../service/init/ProgramCategoryInitData.java | 6 +- .../com/damai/controller/UserController.java | 5 +- .../java/com/damai/service/TokenService.java | 6 +- .../java/com/damai/service/UserService.java | 62 +- pom.xml | 31 +- spotless/license-header | 19 + spotless/spotless.xml | 52 ++ 44 files changed, 1110 insertions(+), 990 deletions(-) rename LICENSE.txt => LICENSE (98%) create mode 100644 damai-common/src/main/java/com/damai/enums/CodeType.java rename damai-redis-framework/src/main/java/com/damai/core/{RedisKeyEnum.java => RedisKeyManage.java} (79%) rename damai-redis-framework/src/main/java/com/damai/redis/{RedisKeyWrap.java => RedisKeyBuild.java} (63%) rename damai-server/damai-base-data-service/src/main/java/com/damai/entity/TokenData.java => damai-server-client/damai-user-client/src/main/java/com/damai/dto/UserLogoutDto.java (30%) delete mode 100644 damai-server/damai-base-data-service/src/main/java/com/damai/controller/TokenDataController.java delete mode 100644 damai-server/damai-base-data-service/src/main/java/com/damai/mapper/TokenDataMapper.java create mode 100644 spotless/license-header create mode 100644 spotless/spotless.xml diff --git a/LICENSE.txt b/LICENSE similarity index 98% rename from LICENSE.txt rename to LICENSE index 27494c7e..9bb15cd7 100644 --- a/LICENSE.txt +++ b/LICENSE @@ -15,7 +15,7 @@ "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 + "control" means (properties) 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. @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2023 xingge + Copyright 2023 akuanbushichengxuyuan Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/damai-common/src/main/java/com/damai/enums/BaseCode.java b/damai-common/src/main/java/com/damai/enums/BaseCode.java index 91abc96a..5f414982 100644 --- a/damai-common/src/main/java/com/damai/enums/BaseCode.java +++ b/damai-common/src/main/java/com/damai/enums/BaseCode.java @@ -13,6 +13,7 @@ public enum BaseCode { SYSTEM_ERROR(-1,"系统异常"), UID_WORK_ID_ERROR(500,"uid_work_id设置失败"), + NAME_PASSWORD_ERROR(501,"账号名或登录密码不正确"), RSA_SIGN_ERROR(10000,"res签名验证失败"), RSA_DECRYPT_ERROR(10001,"res解密失败"), diff --git a/damai-common/src/main/java/com/damai/enums/CodeType.java b/damai-common/src/main/java/com/damai/enums/CodeType.java new file mode 100644 index 00000000..35594d1b --- /dev/null +++ b/damai-common/src/main/java/com/damai/enums/CodeType.java @@ -0,0 +1,73 @@ +package com.damai.enums; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 基础数据 code + * @author: 阿宽不是程序员 + **/ +public enum CodeType { + /** + * 支付宝相关信息 + * */ + PC(1,"0001","pc网站"), + + WX_MINI_PROGRAM(2,"0002","微信小程序"), + + ALIPAY_MINI_PROGRAM(3,"0003","支付宝小程序"), + + ; + + private Integer code; + + private String value; + + private String msg; + + CodeType(Integer code, String value, String msg) { + this.code = code; + this.value = value; + this.msg = msg; + } + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMsg() { + return this.msg == null ? "" : this.msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public String getValue() { + return value; + } + + public void setValue(final String value) { + this.value = value; + } + + public static String getMsg(Integer code) { + for (CodeType re : CodeType.values()) { + if (re.code.intValue() == code.intValue()) { + return re.msg; + } + } + return ""; + } + + public static CodeType getRc(Integer code) { + for (CodeType re : CodeType.values()) { + if (re.code.intValue() == code.intValue()) { + return re; + } + } + return null; + } +} diff --git a/damai-common/src/main/java/com/damai/jwt/TokenUtil.java b/damai-common/src/main/java/com/damai/jwt/TokenUtil.java index 73d37a10..aca3cac4 100644 --- a/damai-common/src/main/java/com/damai/jwt/TokenUtil.java +++ b/damai-common/src/main/java/com/damai/jwt/TokenUtil.java @@ -19,36 +19,18 @@ import java.util.Date; @Slf4j public class TokenUtil { - /** - * 指定签名的时候使用的签名算法,也就是header那部分。 - * - */ private static final SignatureAlgorithm SIGNATURE_ALGORITHM = SignatureAlgorithm.HS256; - /** - * 用户登录成功后生成Jwt - * 使用Hs256算法 私匙使用用户密码 - * - * @param id 标识 - * @param info 登录成功的user对象 - * @param ttlMillis jwt过期时间 - * @param tokenSecret 私钥 - * @return - */ + public static String createToken(String id, String info, long ttlMillis, String tokenSecret) { - //生成JWT的时间 + long nowMillis = System.currentTimeMillis(); - //创建一个JwtBuilder,设置jwt的body + JwtBuilder builder = Jwts.builder() - //如果有私有声明,一定要先设置这个自己创建的私有的声明,这个是给builder的claim赋值,一旦写在标准的声明赋值之后,就是覆盖了那些标准的声明的 // .setClaims(claims) - //设置jti(JWT ID):是JWT的唯一标识,根据业务需要,这个可以设置为一个不重复的值,主要用来作为一次性token,从而回避重放攻击。 .setId(id) - //iat: jwt的签发时间 .setIssuedAt(new Date(nowMillis)) - //代表这个JWT的主体,即它的所有人,这个是一个json格式的字符串。 .setSubject(info) - //设置签名使用的签名算法和签名使用的秘钥 .signWith(SIGNATURE_ALGORITHM, tokenSecret); if (ttlMillis >= 0) { //设置过期时间 @@ -57,20 +39,10 @@ public class TokenUtil { return builder.compact(); } - - /** - * Token的解密 - * - * @param token 加密后的token - * @param tokenSecret 私钥 - * @return - */ public static String parseToken(String token, String tokenSecret) { try { return Jwts.parser() - //设置签名的秘钥 .setSigningKey(tokenSecret) - //设置需要解析的jwt .parseClaimsJws(token) .getBody() .getSubject(); diff --git a/damai-common/src/main/java/com/damai/util/RsaTool.java b/damai-common/src/main/java/com/damai/util/RsaTool.java index 2f06db5a..32e2c2ce 100644 --- a/damai-common/src/main/java/com/damai/util/RsaTool.java +++ b/damai-common/src/main/java/com/damai/util/RsaTool.java @@ -148,8 +148,7 @@ public class RsaTool { public static String decrypt(String data, String privateKeyStr) { try { PrivateKey privateKey2 = RsaTool.getPrivateKey(privateKeyStr); - String decryptstr = RsaTool.decrypt(data, privateKey2); - return decryptstr; + return RsaTool.decrypt(data, privateKey2); }catch (Exception e) { log.error("decrypt error",e); throw new DaMaiFrameException(BaseCode.RSA_DECRYPT_ERROR); diff --git a/damai-redis-framework/src/main/java/com/damai/core/RedisKeyEnum.java b/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java similarity index 79% rename from damai-redis-framework/src/main/java/com/damai/core/RedisKeyEnum.java rename to damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java index 43cdb0ce..7e3b6060 100644 --- a/damai-redis-framework/src/main/java/com/damai/core/RedisKeyEnum.java +++ b/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java @@ -6,7 +6,7 @@ package com.damai.core; * @description: redis key管理 * @author: 阿宽不是程序员 **/ -public enum RedisKeyEnum { +public enum RedisKeyManage { /** * redis 缓存 key管理 * */ @@ -14,7 +14,7 @@ public enum RedisKeyEnum { Key("key","键值测试","value为TestCacheDto类型","k"), Key2("key:%s","键值占位测试","value为TestCacheDto类型","k"), - USER_ID("user_id:%s","userId","value为UserVo类型","k"), + USER_LOGIN("user_login_%s_%s","user_login","value为UserVo类型","k"), PRODUCT_STOCK("product_stock:%S","商品库存id","value为库存","k"), @@ -73,61 +73,61 @@ public enum RedisKeyEnum { /** * key值 * */ - private String keyCode; + private String key; /** * key的说明 * */ - private String keyMsg; + private String keyIntroduce; /** * value的说明 * */ - private String valueMsg; + private String valueIntroduce; /** * 作者 * */ private String author; - RedisKeyEnum(String keyCode, String keyMsg, String valueMsg, String author){ - this.keyCode = keyCode; - this.keyMsg = keyMsg; - this.valueMsg = valueMsg; + RedisKeyManage(String key, String keyIntroduce, String valueIntroduce, String author){ + this.key = key; + this.keyIntroduce = keyIntroduce; + this.valueIntroduce = valueIntroduce; this.author = author; } - public static RedisKeyEnum getRc(String keyCode) { - for (RedisKeyEnum re : RedisKeyEnum.values()) { - if (re.keyCode.equals(keyCode)) { + public static RedisKeyManage getRc(String keyCode) { + for (RedisKeyManage re : RedisKeyManage.values()) { + if (re.key.equals(keyCode)) { return re; } } return null; } - public String getKeyCode() { - return keyCode; + public String getKey() { + return key; } - public void setKeyCode(String keyCode) { - this.keyCode = keyCode; + public void setKey(String key) { + this.key = key; } - public String getKeyMsg() { - return keyMsg; + public String getKeyIntroduce() { + return keyIntroduce; } - public void setKeyMsg(String keyMsg) { - this.keyMsg = keyMsg; + public void setKeyIntroduce(String keyIntroduce) { + this.keyIntroduce = keyIntroduce; } - public String getValueMsg() { - return valueMsg; + public String getValueIntroduce() { + return valueIntroduce; } - public void setValueMsg(String valueMsg) { - this.valueMsg = valueMsg; + public void setValueIntroduce(String valueIntroduce) { + this.valueIntroduce = valueIntroduce; } public String getAuthor() { diff --git a/damai-redis-framework/src/main/java/com/damai/redis/CacheUtil.java b/damai-redis-framework/src/main/java/com/damai/redis/CacheUtil.java index 3c472a1a..f08ad73a 100644 --- a/damai-redis-framework/src/main/java/com/damai/redis/CacheUtil.java +++ b/damai-redis-framework/src/main/java/com/damai/redis/CacheUtil.java @@ -53,12 +53,12 @@ public class CacheUtil { } /** - * 检查 redisKeyWrap 中的key是否为空或空的字符串 + * 检查 redisKeyBuild 中的key是否为空或空的字符串 * - * @param redisKeyWrap key包装 + * @param redisKeyBuild key包装 */ - public static void checkNotBlank(RedisKeyWrap redisKeyWrap) { - if (StringUtil.isEmpty(redisKeyWrap.getRelKey())) { + public static void checkNotBlank(RedisKeyBuild redisKeyBuild) { + if (StringUtil.isEmpty(redisKeyBuild.getRelKey())) { throw new RuntimeException("请求参数缺失"); } } @@ -118,8 +118,8 @@ public class CacheUtil { return false; } - public static List getBatchKey(Collection list){ - return list.stream().map(RedisKeyWrap::getRelKey).collect(Collectors.toList()); + public static List getBatchKey(Collection list){ + return list.stream().map(RedisKeyBuild::getRelKey).collect(Collectors.toList()); } } diff --git a/damai-redis-framework/src/main/java/com/damai/redis/RedisCache.java b/damai-redis-framework/src/main/java/com/damai/redis/RedisCache.java index c365cf4b..f1477ed3 100644 --- a/damai-redis-framework/src/main/java/com/damai/redis/RedisCache.java +++ b/damai-redis-framework/src/main/java/com/damai/redis/RedisCache.java @@ -24,17 +24,17 @@ public interface RedisCache { /** * 获取字符串对象 * - * @param redisKeyWrap RedisKeyWrap + * @param redisKeyBuild RedisKeyBuild * @param clazz 类对象 * @param T * @return T 普通对象 */ - T get(RedisKeyWrap redisKeyWrap, Class clazz); + T get(RedisKeyBuild redisKeyBuild, Class clazz); /** * 获取字符串对象(如果缓存中不存在,则执行给定的supplier接口) * - * @param redisKeyWrap RedisKeyWrap + * @param redisKeyBuild RedisKeyBuild * @param clazz 类对象 * @param T * @param supplier 缓存为空时,执行的逻辑 @@ -42,31 +42,31 @@ public interface RedisCache { * @param timeUnit 时间单位 * @return T 普通对象 */ - T get(RedisKeyWrap redisKeyWrap, Class clazz, Supplier supplier, long ttl, TimeUnit timeUnit); + T get(RedisKeyBuild redisKeyBuild, Class clazz, Supplier supplier, long ttl, TimeUnit timeUnit); /** * 返回 key 中字符串值的子字符 - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param start 开始 * @param end 结束 * @return 结果 */ - String getRange(RedisKeyWrap redisKeyWrap, long start, long end); + String getRange(RedisKeyBuild redisKeyBuild, long start, long end); /** * 获取字符串对象, 并且字符串中是集合内容 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param clazz 类型 * @param 指定泛型 * @return List */ - List getValueIsList(RedisKeyWrap redisKeyWrap, Class clazz); + List getValueIsList(RedisKeyBuild redisKeyBuild, Class clazz); /** * 获取字符串对象, 并且字符串中是集合内容(如果缓存中不存在,则执行给定的supplier接口) * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param clazz 类型 * @param 指定泛型 * @param supplier 缓存为空时,执行的逻辑 @@ -74,7 +74,7 @@ public interface RedisCache { * @param timeUnit 时间单位 * @return List */ - List getValueIsList(RedisKeyWrap redisKeyWrap, Class clazz, Supplier> supplier,long ttl, TimeUnit timeUnit); + List getValueIsList(RedisKeyBuild redisKeyBuild, Class clazz, Supplier> supplier, long ttl, TimeUnit timeUnit); /** @@ -83,23 +83,23 @@ public interface RedisCache { * @param keyList key集合 * @return List */ - List getKeys(List keyList); + List getKeys(List keyList); /** * 判断key是否存在 * - * @param redisKeyWrap redisKeyWrap + * @param redisKeyBuild redisKeyBuild * @return 是否存在 可能为空 */ - Boolean hasKey(RedisKeyWrap redisKeyWrap); + Boolean hasKey(RedisKeyBuild redisKeyBuild); /** * 删除key * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @return */ - void del(RedisKeyWrap redisKeyWrap); + void del(RedisKeyBuild redisKeyBuild); /** @@ -107,25 +107,25 @@ public interface RedisCache { * * @param keys key集合 */ - void del(Collection keys); + void del(Collection keys); /** * 设置key过期时间 * - * @param redisKeyWrap RedisKeyWrap + * @param redisKeyBuild RedisKeyBuild * @param ttl 过期时间 * @param timeUnit 时间单位 * @return 是否成功 */ - Boolean expire(RedisKeyWrap redisKeyWrap, long ttl, TimeUnit timeUnit); + Boolean expire(RedisKeyBuild redisKeyBuild, long ttl, TimeUnit timeUnit); /** * 获取key超时时间 * - * @param redisKeyWrap redisKeyWrap + * @param redisKeyBuild redisKeyBuild * @return 超时时间 */ - Long getExpire(RedisKeyWrap redisKeyWrap); + Long getExpire(RedisKeyBuild redisKeyBuild); /** * 查找匹配的key @@ -138,19 +138,19 @@ public interface RedisCache { /** * 将当前数据库的 key 移动到给定的数据库 db 当中 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param dbIndex * @return */ - Boolean move(RedisKeyWrap redisKeyWrap, int dbIndex); + Boolean move(RedisKeyBuild redisKeyBuild, int dbIndex); /** * 移除 key 的过期时间,key 将持久保持 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @return */ - Boolean persist(RedisKeyWrap redisKeyWrap); + Boolean persist(RedisKeyBuild redisKeyBuild); /** * 从当前数据库中随机返回一个 key @@ -165,7 +165,7 @@ public interface RedisCache { * @param oldKey 缓存key * @param newKey 缓存key */ - void rename(RedisKeyWrap oldKey, RedisKeyWrap newKey); + void rename(RedisKeyBuild oldKey, RedisKeyBuild newKey); /** * 仅当 newKey 不存在时,将 oldKey 改名为 newKey @@ -174,66 +174,66 @@ public interface RedisCache { * @param newKey 缓存key * @return */ - Boolean renameIfAbsent(RedisKeyWrap oldKey, RedisKeyWrap newKey); + Boolean renameIfAbsent(RedisKeyBuild oldKey, RedisKeyBuild newKey); /** * 返回 key 所储存的值的类型 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @return */ - DataType type(RedisKeyWrap redisKeyWrap); + DataType type(RedisKeyBuild redisKeyBuild); /** * 设置缓存 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param object 缓存对象 */ - void set(RedisKeyWrap redisKeyWrap, Object object); + void set(RedisKeyBuild redisKeyBuild, Object object); /** * 设置缓存 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param object 缓存对象 * @param ttl 过期时间 */ - void set(RedisKeyWrap redisKeyWrap, Object object, long ttl); + void set(RedisKeyBuild redisKeyBuild, Object object, long ttl); /** * 设置缓存 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param object 缓存对象 * @param ttl 过期时间 * @param timeUnit 时间单位 */ - void set(RedisKeyWrap redisKeyWrap, Object object, long ttl, TimeUnit timeUnit); + void set(RedisKeyBuild redisKeyBuild, Object object, long ttl, TimeUnit timeUnit); /** * 只有在 key 不存在时设置 key 的值 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param object 对象 * @return 之前已经存在返回false,不存在返回true */ - boolean setIfAbsent(RedisKeyWrap redisKeyWrap, Object object); + boolean setIfAbsent(RedisKeyBuild redisKeyBuild, Object object); /** * 获取字符串的长度 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @return 长度 */ - Long size(RedisKeyWrap redisKeyWrap); + Long size(RedisKeyBuild redisKeyBuild); /** * 批量添加 * * @param map 对象 */ - void multiSet(Map map); + void multiSet(Map map); /** * 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在 @@ -241,330 +241,330 @@ public interface RedisCache { * @param map 对象 * @return 之前已经存在返回false,不存在返回true */ - boolean multiSetIfAbsent(Map map); + boolean multiSetIfAbsent(Map map); /** * 增加(自增长), 负数则为自减 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param increment 步长 * @return */ - Long incrBy(RedisKeyWrap redisKeyWrap, long increment); + Long incrBy(RedisKeyBuild redisKeyBuild, long increment); /** * double类型增加(自增长), 负数则为自减 - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param increment 步长 * @return */ - Double incrByDouble(RedisKeyWrap redisKeyWrap, double increment); + Double incrByDouble(RedisKeyBuild redisKeyBuild, double increment); /** * 追加到末尾 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param value 值 * @return */ - Integer append(RedisKeyWrap redisKeyWrap, String value); + Integer append(RedisKeyBuild redisKeyBuild, String value); /** -------------------hash相关操作------------------------- */ /** * 放置一个键值对 * - * @param redisKeyWrap hash键 + * @param redisKeyBuild hash键 * @param hashKey hash key * @param value hash value */ - void putHash(RedisKeyWrap redisKeyWrap, String hashKey, Object value); + void putHash(RedisKeyBuild redisKeyBuild, String hashKey, Object value); /** * 放置一个键值对 并设置过期时间 * - * @param redisKeyWrap hash键 + * @param redisKeyBuild hash键 * @param hashKey hash key * @param value hash value * @param ttl 过期时间 */ - void putHash(RedisKeyWrap redisKeyWrap, String hashKey, Object value, long ttl); + void putHash(RedisKeyBuild redisKeyBuild, String hashKey, Object value, long ttl); /** * 放置一个键值对 并设置过期时间 * - * @param redisKeyWrap hash键 + * @param redisKeyBuild hash键 * @param hashKey hash key * @param value hash value * @param ttl 过期时间 * @param timeUnit 时间单位 */ - void putHash(RedisKeyWrap redisKeyWrap, String hashKey, Object value, long ttl, TimeUnit timeUnit); + void putHash(RedisKeyBuild redisKeyBuild, String hashKey, Object value, long ttl, TimeUnit timeUnit); /** * 放入map中所有键值对 * - * @param redisKeyWrap key + * @param redisKeyBuild key * @param map hash */ - void putHash(RedisKeyWrap redisKeyWrap, Map map); + void putHash(RedisKeyBuild redisKeyBuild, Map map); /** * 放入map中所有键值对 并设置过期时间 * - * @param redisKeyWrap key + * @param redisKeyBuild key * @param map hash * @param ttl 过期时间 */ - void putHash(RedisKeyWrap redisKeyWrap, Map map, long ttl); + void putHash(RedisKeyBuild redisKeyBuild, Map map, long ttl); /** * 放入 Map 中所有键值对 并设置过期时间和时间单位 * - * @param redisKeyWrap key + * @param redisKeyBuild key * @param map hash * @param ttl 过期时间 * @param timeUnit 时间单位 */ - void putHash(RedisKeyWrap redisKeyWrap, Map map, long ttl, TimeUnit timeUnit); + void putHash(RedisKeyBuild redisKeyBuild, Map map, long ttl, TimeUnit timeUnit); /** * 仅当hashKey不存在时才设置 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param hashKey hash中key * @param value 对象 * @return */ - Boolean putHashIfAbsent(RedisKeyWrap redisKeyWrap, String hashKey, Object value); + Boolean putHashIfAbsent(RedisKeyBuild redisKeyBuild, String hashKey, Object value); /** * 从 Hash 中获取普通对象 * - * @param redisKeyWrap key + * @param redisKeyBuild key * @param hashKey hash key * @param clazz 类对象 * @param T * @return 普通对象 */ @SuppressWarnings("all") - T getForHash(RedisKeyWrap redisKeyWrap, String hashKey, Class clazz); + T getForHash(RedisKeyBuild redisKeyBuild, String hashKey, Class clazz); /** * Hash的value是字符串集合,进行提取 * - * @param redisKeyWrap key + * @param redisKeyBuild key * @param hashKey hash key * @param clazz 类对象 * @param T * @return 普通对象 */ - List getValueIsListForHash(RedisKeyWrap redisKeyWrap, String hashKey, Class clazz); + List getValueIsListForHash(RedisKeyBuild redisKeyBuild, String hashKey, Class clazz); /** * 从 {@code key} 处获取给定 {@code hashKeys} 的值 * - * @param redisKeyWrap key + * @param redisKeyBuild key * @param hashKeys hashKeys * @param clazz 类对象 * @param T * @return */ - List multiGetForHash(RedisKeyWrap redisKeyWrap, List hashKeys, Class clazz); + List multiGetForHash(RedisKeyBuild redisKeyBuild, List hashKeys, Class clazz); /** * 谨慎使用! * 获取 Hash Key 下所有值 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param clazz 类型 * @param 泛型 * @return */ - List getAllForHash(RedisKeyWrap redisKeyWrap, Class clazz); + List getAllForHash(RedisKeyBuild redisKeyBuild, Class clazz); /** * 谨慎使用! * 获取 Hash Key 下所有值,返回值为map * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param clazz 类型 * @param 泛型 * @return */ - Map getAllMapForHash(RedisKeyWrap redisKeyWrap, Class clazz); + Map getAllMapForHash(RedisKeyBuild redisKeyBuild, Class clazz); /** * 判断hash中 key是否存在 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param hashKey hash中key * @return 结果 */ - Boolean hasKeyForHash(RedisKeyWrap redisKeyWrap, String hashKey); + Boolean hasKeyForHash(RedisKeyBuild redisKeyBuild, String hashKey); /** * 删除hash key * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param hashKey hash中key * @return 结果 */ - Long delForHash(RedisKeyWrap redisKeyWrap, String hashKey); + Long delForHash(RedisKeyBuild redisKeyBuild, String hashKey); /** * 批量删除hash key * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param hashKeys hash中key * @return 结果 */ - Long delForHash(RedisKeyWrap redisKeyWrap, Collection hashKeys); + Long delForHash(RedisKeyBuild redisKeyBuild, Collection hashKeys); /** * 为哈希表 key 中的指定字段的整数值加上增量 increment * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param hashKey hash中key * @param increment 步长 * @return 结果 */ - Long incrByForHash(RedisKeyWrap redisKeyWrap, String hashKey, long increment); + Long incrByForHash(RedisKeyBuild redisKeyBuild, String hashKey, long increment); /** * 为哈希表 key 中的指定字段的整数值加上增量 increment(double类型) * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param hashKey hash中key * @param delta 步长 * @return 结果 */ - Double incrByDoubleForHash(RedisKeyWrap redisKeyWrap, String hashKey, double delta); + Double incrByDoubleForHash(RedisKeyBuild redisKeyBuild, String hashKey, double delta); /** * 获取所有哈希表中的hashKey * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @return 结果 */ - Set hashKeysForHash(RedisKeyWrap redisKeyWrap); + Set hashKeysForHash(RedisKeyBuild redisKeyBuild); /** * 获取哈希表中字段的数量 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @return 结果 */ - Long sizeForHash(RedisKeyWrap redisKeyWrap); + Long sizeForHash(RedisKeyBuild redisKeyBuild); /** ------------------------list相关操作---------------------------- */ /** * 通过索引获取列表中的元素 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param index 索引 * @param clazz 类型 * @return 结果 */ - T indexForList(RedisKeyWrap redisKeyWrap, long index, Class clazz); + T indexForList(RedisKeyBuild redisKeyBuild, long index, Class clazz); /** * List 从左边放入元素 * - * @param redisKeyWrap key + * @param redisKeyBuild key * @param value value * @return 改动行数 */ - Long leftPushForList(RedisKeyWrap redisKeyWrap, Object value); + Long leftPushForList(RedisKeyBuild redisKeyBuild, Object value); /** * List 从左边放入元素 * - * @param redisKeyWrap key + * @param redisKeyBuild key * @param valueList valueList * @return 改动行数 */ - Long leftPushAllForList(RedisKeyWrap redisKeyWrap, List valueList); + Long leftPushAllForList(RedisKeyBuild redisKeyBuild, List valueList); /** * List 从左边放入元素(当list存在的时候才加入) * - * @param redisKeyWrap + * @param redisKeyBuild * @param value * @return */ - Long leftPushIfPresentForList(RedisKeyWrap redisKeyWrap, Object value); + Long leftPushIfPresentForList(RedisKeyBuild redisKeyBuild, Object value); /** * 如果pivot存在,在pivot左边添加 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param pivot pivot * @param value 对象 * @return 结果 */ - Long leftPushForList(RedisKeyWrap redisKeyWrap, Object pivot, Object value); + Long leftPushForList(RedisKeyBuild redisKeyBuild, Object pivot, Object value); /** * List 从右边放入元素 * - * @param redisKeyWrap key + * @param redisKeyBuild key * @param value value * @return 改动行数 */ - Long rightPushForList(RedisKeyWrap redisKeyWrap, Object value); + Long rightPushForList(RedisKeyBuild redisKeyBuild, Object value); /** * List 从右边放入元素 * - * @param redisKeyWrap key + * @param redisKeyBuild key * @param valueList valueList * @return 改动行数 */ - Long rightPushAllForList(RedisKeyWrap redisKeyWrap, List valueList); + Long rightPushAllForList(RedisKeyBuild redisKeyBuild, List valueList); /** * List 从右边放入元素(当list存在的时候才加入) * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param value 对象 * @return 结果 */ - Long rightPushIfPresentForList(RedisKeyWrap redisKeyWrap, Object value); + Long rightPushIfPresentForList(RedisKeyBuild redisKeyBuild, Object value); /** * 如果pivot存在,在pivot右边添加 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param pivot pivot * @param value 对象 * @return 结果 */ - Long rightPushForList(RedisKeyWrap redisKeyWrap, Object pivot, Object value); + Long rightPushForList(RedisKeyBuild redisKeyBuild, Object pivot, Object value); /** * 通过索引设置列表元素的值 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param index * 位置 * @param value 对象 */ - void setForList(RedisKeyWrap redisKeyWrap, long index, Object value); + void setForList(RedisKeyBuild redisKeyBuild, long index, Object value); /** * 移出并获取列表的第一个元素 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param clazz 类型 * @return 删除的元素 */ - T leftPopForList(RedisKeyWrap redisKeyWrap, Class clazz); + T leftPopForList(RedisKeyBuild redisKeyBuild, Class clazz); /** * 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param clazz 类型 * @param timeout * 等待时间 @@ -572,21 +572,21 @@ public interface RedisCache { * 时间单位 * @return */ - T leftPopBlockForList(RedisKeyWrap redisKeyWrap, Class clazz, long timeout, TimeUnit unit); + T leftPopBlockForList(RedisKeyBuild redisKeyBuild, Class clazz, long timeout, TimeUnit unit); /** * 移除并获取列表最后一个元素 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param clazz 类型 * @return 删除的元素 */ - T rightPopForList(RedisKeyWrap redisKeyWrap, Class clazz); + T rightPopForList(RedisKeyBuild redisKeyBuild, Class clazz); /** * 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param clazz 类型 * @param timeout * 等待时间 @@ -594,7 +594,7 @@ public interface RedisCache { * 时间单位 * @return */ - T rightPopBlockForList(RedisKeyWrap redisKeyWrap, Class clazz, long timeout, TimeUnit unit); + T rightPopBlockForList(RedisKeyBuild redisKeyBuild, Class clazz, long timeout, TimeUnit unit); /** * 移除列表的最后一个元素,并将该元素添加到另一个列表并返回 @@ -604,7 +604,7 @@ public interface RedisCache { * @param clazz * @return */ - T rightPopAndLeftPushForList(RedisKeyWrap sourceKey, RedisKeyWrap destinationKey, Class clazz); + T rightPopAndLeftPushForList(RedisKeyBuild sourceKey, RedisKeyBuild destinationKey, Class clazz); /** * 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 @@ -616,59 +616,59 @@ public interface RedisCache { * @param unit 时间单位 * @return 结果 */ - T rightPopBlockAndLeftPushForList(RedisKeyWrap sourceKey, RedisKeyWrap destinationKey, Class clazz, long timeout, TimeUnit unit); + T rightPopBlockAndLeftPushForList(RedisKeyBuild sourceKey, RedisKeyBuild destinationKey, Class clazz, long timeout, TimeUnit unit); /** * 获取 List 全部数据 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param 泛型 * @param clazz 类型 * @return */ - List getAllForList(RedisKeyWrap redisKeyWrap, Class clazz); + List getAllForList(RedisKeyBuild redisKeyBuild, Class clazz); /** * 获取列表指定范围内的元素 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param start 开始位置, 0是开始位置 * @param end 结束位置, -1返回所有 * @param clazz 类型 * @return 结果 */ - List rangeForList(RedisKeyWrap redisKeyWrap, long start, long end, Class clazz); + List rangeForList(RedisKeyBuild redisKeyBuild, long start, long end, Class clazz); /** * 删除集合中值等于value得元素 * - * @param redisKeyWrap 缓存key + * @param redisKeyBuild 缓存key * @param index * index=0, 删除所有值等于value的元素; index>0, 从头部开始删除第一个值等于value的元素; * index<0, 从尾部开始删除第一个值等于value的元素; * @param value 对象 * @return 结果 */ - Long removeForList(RedisKeyWrap redisKeyWrap, long index, Object value); + Long removeForList(RedisKeyBuild redisKeyBuild, long index, Object value); /** * 裁剪list * - * @param redisKeyWrap + * @param redisKeyBuild * @param start * @param end */ - void trimForList(RedisKeyWrap redisKeyWrap, long start, long end); + void trimForList(RedisKeyBuild redisKeyBuild, long start, long end); /** * 获取列表长度 * - * @param redisKeyWrap + * @param redisKeyBuild * @return */ - Long lenForList(RedisKeyWrap redisKeyWrap); + Long lenForList(RedisKeyBuild redisKeyBuild); /** --------------------set相关操作-------------------------- */ @@ -676,240 +676,240 @@ public interface RedisCache { /** * set添加元素 * - * @param redisKeyWrap + * @param redisKeyBuild * @param value * @return */ - Long addForSet(RedisKeyWrap redisKeyWrap, Object value); + Long addForSet(RedisKeyBuild redisKeyBuild, Object value); /** * set批量添加元素 * - * @param redisKeyWrap + * @param redisKeyBuild * @param values * @return */ - Long addForSet(RedisKeyWrap redisKeyWrap, List values); + Long addForSet(RedisKeyBuild redisKeyBuild, List values); /** * set移除元素 * - * @param redisKeyWrap + * @param redisKeyBuild * @param value * @return */ - Long removeForSet(RedisKeyWrap redisKeyWrap, Object value); + Long removeForSet(RedisKeyBuild redisKeyBuild, Object value); /** * set批量移除元素 * - * @param redisKeyWrap + * @param redisKeyBuild * @param values * @return */ - Long removeForSet(RedisKeyWrap redisKeyWrap, List values); + Long removeForSet(RedisKeyBuild redisKeyBuild, List values); /** * 移除并返回集合的一个随机元素 * - * @param redisKeyWrap + * @param redisKeyBuild * @param clazz * @return */ - T popForSet(RedisKeyWrap redisKeyWrap, Class clazz); + T popForSet(RedisKeyBuild redisKeyBuild, Class clazz); /** * 将元素value从一个集合移到另一个集合 * - * @param redisKeyWrap + * @param redisKeyBuild * @param value - * @param destRedisKeyWrap + * @param destRedisKeyBuild * @return */ - boolean moveForSet(RedisKeyWrap redisKeyWrap, Object value, RedisKeyWrap destRedisKeyWrap); + boolean moveForSet(RedisKeyBuild redisKeyBuild, Object value, RedisKeyBuild destRedisKeyBuild); /** * 获取集合的大小 * - * @param redisKeyWrap + * @param redisKeyBuild * @return */ - Long sizeForSet(RedisKeyWrap redisKeyWrap); + Long sizeForSet(RedisKeyBuild redisKeyBuild); /** * 判断集合是否包含value * - * @param redisKeyWrap + * @param redisKeyBuild * @param value * @return */ - Boolean isMemberForSet(RedisKeyWrap redisKeyWrap, Object value); + Boolean isMemberForSet(RedisKeyBuild redisKeyBuild, Object value); /** * 获取两个集合的交集 * - * @param redisKeyWrap - * @param otherRedisKeyWrap + * @param redisKeyBuild + * @param otherRedisKeyBuild * @param clazz * @return */ - Set intersectForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, Class clazz); + Set intersectForSet(RedisKeyBuild redisKeyBuild, RedisKeyBuild otherRedisKeyBuild, Class clazz); /** * 获取key集合与多个集合的交集 * - * @param redisKeyWrap - * @param otherRedisKeyWraps + * @param redisKeyBuild + * @param otherRedisKeyBuilds * @param clazz * @return */ - Set intersectForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, Class clazz); + Set intersectForSet(RedisKeyBuild redisKeyBuild, Collection otherRedisKeyBuilds, Class clazz); /** * key集合与otherKey集合的交集存储到destKey集合中 * - * @param redisKeyWrap - * @param otherRedisKeyWrap - * @param destRedisKeyWrap + * @param redisKeyBuild + * @param otherRedisKeyBuild + * @param destRedisKeyBuild * @return */ - Long intersectAndStoreForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap); + Long intersectAndStoreForSet(RedisKeyBuild redisKeyBuild, RedisKeyBuild otherRedisKeyBuild, RedisKeyBuild destRedisKeyBuild); /** * key集合与多个集合的交集存储到destKey集合中 * - * @param redisKeyWrap - * @param otherRedisKeyWraps - * @param destRedisKeyWrap + * @param redisKeyBuild + * @param otherRedisKeyBuilds + * @param destRedisKeyBuild * @return */ - Long intersectAndStoreForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap); + Long intersectAndStoreForSet(RedisKeyBuild redisKeyBuild, Collection otherRedisKeyBuilds, RedisKeyBuild destRedisKeyBuild); /** * 获取两个集合的并集 * - * @param redisKeyWrap - * @param otherRedisKeyWrap + * @param redisKeyBuild + * @param otherRedisKeyBuild * @param clazz * @return */ - Set unionForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, Class clazz); + Set unionForSet(RedisKeyBuild redisKeyBuild, RedisKeyBuild otherRedisKeyBuild, Class clazz); /** * 获取key集合与多个集合的并集 * - * @param redisKeyWrap - * @param otherRedisKeyWraps + * @param redisKeyBuild + * @param otherRedisKeyBuilds * @param clazz * @return */ - Set unionForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, Class clazz); + Set unionForSet(RedisKeyBuild redisKeyBuild, Collection otherRedisKeyBuilds, Class clazz); /** * key集合与otherKey集合的并集存储到destKey中 * - * @param redisKeyWrap - * @param otherRedisKeyWrap - * @param destRedisKeyWrap + * @param redisKeyBuild + * @param otherRedisKeyBuild + * @param destRedisKeyBuild * @return */ - Long unionAndStoreForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap); + Long unionAndStoreForSet(RedisKeyBuild redisKeyBuild, RedisKeyBuild otherRedisKeyBuild, RedisKeyBuild destRedisKeyBuild); /** * key集合与多个集合的并集存储到destKey中 * - * @param redisKeyWrap - * @param otherRedisKeyWraps - * @param destRedisKeyWrap + * @param redisKeyBuild + * @param otherRedisKeyBuilds + * @param destRedisKeyBuild * @return */ - Long unionAndStoreForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap); + Long unionAndStoreForSet(RedisKeyBuild redisKeyBuild, Collection otherRedisKeyBuilds, RedisKeyBuild destRedisKeyBuild); /** * 获取两个集合的差集 * - * @param redisKeyWrap - * @param otherRedisKeyWrap + * @param redisKeyBuild + * @param otherRedisKeyBuild * @param clazz * @return */ - Set differenceForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, Class clazz); + Set differenceForSet(RedisKeyBuild redisKeyBuild, RedisKeyBuild otherRedisKeyBuild, Class clazz); /** * 获取key集合与多个集合的差集 * - * @param redisKeyWrap - * @param otherRedisKeyWraps + * @param redisKeyBuild + * @param otherRedisKeyBuilds * @param clazz * @return */ - Set differenceForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, Class clazz); + Set differenceForSet(RedisKeyBuild redisKeyBuild, Collection otherRedisKeyBuilds, Class clazz); /** * key集合与otherKey集合的差集存储到destKey中 * - * @param redisKeyWrap - * @param otherRedisKeyWrap - * @param destRedisKeyWrap + * @param redisKeyBuild + * @param otherRedisKeyBuild + * @param destRedisKeyBuild * @return */ - Long differenceForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap); + Long differenceForSet(RedisKeyBuild redisKeyBuild, RedisKeyBuild otherRedisKeyBuild, RedisKeyBuild destRedisKeyBuild); /** * key集合与多个集合的差集存储到destKey中 * - * @param redisKeyWrap - * @param otherRedisKeyWraps - * @param destRedisKeyWrap + * @param redisKeyBuild + * @param otherRedisKeyBuilds + * @param destRedisKeyBuild * @return */ - Long differenceForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap); + Long differenceForSet(RedisKeyBuild redisKeyBuild, Collection otherRedisKeyBuilds, RedisKeyBuild destRedisKeyBuild); /** * 获取集合所有元素 * - * @param redisKeyWrap + * @param redisKeyBuild * @param clazz * @return */ - Set membersForSet(RedisKeyWrap redisKeyWrap, Class clazz); + Set membersForSet(RedisKeyBuild redisKeyBuild, Class clazz); /** * 随机获取集合中的一个元素 * - * @param redisKeyWrap + * @param redisKeyBuild * @param clazz * @return */ - T randomMemberForSet(RedisKeyWrap redisKeyWrap, Class clazz); + T randomMemberForSet(RedisKeyBuild redisKeyBuild, Class clazz); /** * 随机获取集合中count个元素 * - * @param redisKeyWrap + * @param redisKeyBuild * @param count * @param clazz * @return */ - List randomMembersForSet(RedisKeyWrap redisKeyWrap, long count, Class clazz); + List randomMembersForSet(RedisKeyBuild redisKeyBuild, long count, Class clazz); /** * 随机获取集合中count个元素并且去除重复的 * - * @param redisKeyWrap + * @param redisKeyBuild * @param count * @param clazz * @return */ - Set distinctRandomMembersForSet(RedisKeyWrap redisKeyWrap, long count, Class clazz); + Set distinctRandomMembersForSet(RedisKeyBuild redisKeyBuild, long count, Class clazz); /** * 游标遍历 - * @param redisKeyWrap + * @param redisKeyBuild * @param options * @return */ - Cursor scanForSet(RedisKeyWrap redisKeyWrap, ScanOptions options); + Cursor scanForSet(RedisKeyBuild redisKeyBuild, ScanOptions options); @@ -918,174 +918,174 @@ public interface RedisCache { /** * 存储有序列表 * - * @param redisKeyWrap key + * @param redisKeyBuild key * @param value value * @param score 评分值 * @return */ - void addForSortedSet(RedisKeyWrap redisKeyWrap, Object value, Double score); + void addForSortedSet(RedisKeyBuild redisKeyBuild, Object value, Double score); /** * 存储有序列表并设置超时时间(秒) * - * @param redisKeyWrap key + * @param redisKeyBuild key * @param value value * @param score 评分值 * @param ttl 超时时间 * @return */ - void addForSortedSet(RedisKeyWrap redisKeyWrap, Object value, Double score, long ttl); + void addForSortedSet(RedisKeyBuild redisKeyBuild, Object value, Double score, long ttl); /** * 存储有序列表并设置超时时间 * - * @param redisKeyWrap key + * @param redisKeyBuild key * @param value value * @param score 评分值 * @param ttl 超时时间 * @param timeUnit 时间单位 * @return */ - void addForSortedSet(RedisKeyWrap redisKeyWrap, Object value, Double score, long ttl, TimeUnit timeUnit); + void addForSortedSet(RedisKeyBuild redisKeyBuild, Object value, Double score, long ttl, TimeUnit timeUnit); /** * 存储有序列表 * - * @param redisKeyWrap + * @param redisKeyBuild * @param map map中的key如果是自定义对象类型需要重新equals和hashcode方法 * @return */ - Long addForSortedSet(RedisKeyWrap redisKeyWrap, Map map); + Long addForSortedSet(RedisKeyBuild redisKeyBuild, Map map); /** * 存储有序列表并设置超时时间(秒) * - * @param redisKeyWrap + * @param redisKeyBuild * @param map map中的key如果是自定义对象类型需要重新equals和hashcode方法 * @param ttl * @return */ - Long addForSortedSet(RedisKeyWrap redisKeyWrap, Map map, long ttl); + Long addForSortedSet(RedisKeyBuild redisKeyBuild, Map map, long ttl); /** * 存储有序列表并设置超时时间 自定义单位 * - * @param redisKeyWrap key + * @param redisKeyBuild key * @param map map中的key如果是自定义对象类型需要重新equals和hashcode方法 * @param ttl 过期时间 * @param timeUnit 过期时间单位 * @return 影响的条目 */ - Long addForSortedSet(RedisKeyWrap redisKeyWrap, Map map, long ttl, TimeUnit timeUnit); + Long addForSortedSet(RedisKeyBuild redisKeyBuild, Map map, long ttl, TimeUnit timeUnit); /** * 获取有序列表中范围条目,并转为指定类型 * - * @param redisKeyWrap key + * @param redisKeyBuild key * @param start 开始下标 从0开始 * @param end 结束下标 包含此条 * @param clazz 序列化类型 * @param 泛型参数 * @return 结果set集合 */ - Set getRangeForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end, Class clazz); + Set getRangeForSortedSet(RedisKeyBuild redisKeyBuild, long start, long end, Class clazz); /** * 反转获取有序列表中范围条目,并转为指定类型 * - * @param redisKeyWrap key + * @param redisKeyBuild key * @param start 开始下标 从0开始 * @param end 结束下标 包含此条 * @param clazz 序列化类型 * @param 泛型参数 * @return 结果set集合 */ - Set getReverseRangeForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end, Class clazz); + Set getReverseRangeForSortedSet(RedisKeyBuild redisKeyBuild, long start, long end, Class clazz); /** * 删除zSet条目 * - * @param redisKeyWrap key + * @param redisKeyBuild key * @param value 数据 * @return 影响条目 */ - Long delForSortedSet(RedisKeyWrap redisKeyWrap, Object value); + Long delForSortedSet(RedisKeyBuild redisKeyBuild, Object value); /** * 批量删除zSet条目 * - * @param redisKeyWrap key + * @param redisKeyBuild key * @param valueCollection 数据 * @return 影响条目 */ - Long delForSortedSet(RedisKeyWrap redisKeyWrap, Collection valueCollection); + Long delForSortedSet(RedisKeyBuild redisKeyBuild, Collection valueCollection); /** * 删除范围元素 * - * @param redisKeyWrap key + * @param redisKeyBuild key * @param start 开始range * @param end 结束range * @return 影响条目 */ - Long delRangeForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end); + Long delRangeForSortedSet(RedisKeyBuild redisKeyBuild, long start, long end); /** * 增加元素的score值,并返回增加后的值 * - * @param redisKeyWrap key + * @param redisKeyBuild key * @param value 对象 * @param delta 值 * @return 结果 */ - Double incrementScoreForSortedSet(RedisKeyWrap redisKeyWrap, Object value, double delta); + Double incrementScoreForSortedSet(RedisKeyBuild redisKeyBuild, Object value, double delta); /** * 计算zSet总条数 * - * @param redisKeyWrap key + * @param redisKeyBuild key * @return 总条数 不存在则空 */ - Long sizeForSortedSet(RedisKeyWrap redisKeyWrap); + Long sizeForSortedSet(RedisKeyBuild redisKeyBuild); /** * 返回元素在集合的排名,有序集合是按照元素的score值由小到大排列 * - * @param redisKeyWrap key + * @param redisKeyBuild key * @param value value * @return rank */ - Long rankForSortedSet(RedisKeyWrap redisKeyWrap, Object value); + Long rankForSortedSet(RedisKeyBuild redisKeyBuild, Object value); /** * 返回元素在集合的排名,按元素的score值由大到小排列 * - * @param redisKeyWrap + * @param redisKeyBuild * @param value * @return */ - Long reverseRankForSortedSet(RedisKeyWrap redisKeyWrap, Object value); + Long reverseRankForSortedSet(RedisKeyBuild redisKeyBuild, Object value); /** * 获取集合元素, 并且把score值也获取 * - * @param redisKeyWrap + * @param redisKeyBuild * @param start * @param end * @param clazz * @return */ - Set> rangeWithScoreForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end, Class clazz); + Set> rangeWithScoreForSortedSet(RedisKeyBuild redisKeyBuild, long start, long end, Class clazz); /** * 根据Score值查询集合元素 * - * @param redisKeyWrap + * @param redisKeyBuild * @param min * 最小值 * @param max @@ -1093,12 +1093,12 @@ public interface RedisCache { * @param clazz * @return */ - Set rangeByScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max, Class clazz); + Set rangeByScoreForSortedSet(RedisKeyBuild redisKeyBuild, double min, double max, Class clazz); /** * 根据Score值查询集合元素(含有score值), 从小到大排序 * - * @param redisKeyWrap + * @param redisKeyBuild * @param min * 最小值 * @param max @@ -1106,13 +1106,13 @@ public interface RedisCache { * @param clazz * @return */ - Set> rangeByScoreWithScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max, Class clazz); + Set> rangeByScoreWithScoreForSortedSet(RedisKeyBuild redisKeyBuild, double min, double max, Class clazz); /** * 根据Score值查询集合元素, 从小到大排序 * - * @param redisKeyWrap + * @param redisKeyBuild * @param min * 最小值 * @param max @@ -1122,46 +1122,46 @@ public interface RedisCache { * @param clazz * @return */ - Set> rangeByScoreWithScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max, + Set> rangeByScoreWithScoreForSortedSet(RedisKeyBuild redisKeyBuild, double min, double max, long start, long end, Class clazz); /** * 获取集合的元素, 从大到小排序, 并返回score值 * - * @param redisKeyWrap + * @param redisKeyBuild * @param start * @param end * @param clazz * @return */ - Set> reverseRangeWithScoreForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end, Class clazz); + Set> reverseRangeWithScoreForSortedSet(RedisKeyBuild redisKeyBuild, long start, long end, Class clazz); /** * 根据Score值查询集合元素, 从大到小排序 * - * @param redisKeyWrap + * @param redisKeyBuild * @param min * @param max * @param clazz * @return */ - Set reverseRangeByScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max, Class clazz); + Set reverseRangeByScoreForSortedSet(RedisKeyBuild redisKeyBuild, double min, double max, Class clazz); /** * 根据Score值查询集合元素, 从大到小排序, 并返回score值 * - * @param redisKeyWrap + * @param redisKeyBuild * @param min * @param max * @param clazz * @return */ - Set> reverseRangeByScoreWithScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max, Class clazz); + Set> reverseRangeByScoreWithScoreForSortedSet(RedisKeyBuild redisKeyBuild, double min, double max, Class clazz); /** * 根据Score值查询集合元素, 从大到小排序 * - * @param redisKeyWrap + * @param redisKeyBuild * @param min * @param max * @param start @@ -1169,109 +1169,109 @@ public interface RedisCache { * @param clazz * @return */ - Set reverseRangeByScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max, long start, long end, Class clazz); + Set reverseRangeByScoreForSortedSet(RedisKeyBuild redisKeyBuild, double min, double max, long start, long end, Class clazz); /** * 根据score值获取集合元素数量 * - * @param redisKeyWrap + * @param redisKeyBuild * @param min * @param max * @return */ - Long countForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max); + Long countForSortedSet(RedisKeyBuild redisKeyBuild, double min, double max); /** * 获取集合大小 * - * @param redisKeyWrap + * @param redisKeyBuild * @return */ - Long zCardForSortedSet(RedisKeyWrap redisKeyWrap); + Long zCardForSortedSet(RedisKeyBuild redisKeyBuild); /** * 获取集合中value元素的score值 * - * @param redisKeyWrap + * @param redisKeyBuild * @param value * @return */ - Double scoreByValueForSortedSet(RedisKeyWrap redisKeyWrap, Object value); + Double scoreByValueForSortedSet(RedisKeyBuild redisKeyBuild, Object value); /** * 移除指定索引位置的成员 * - * @param redisKeyWrap + * @param redisKeyBuild * @param start * @param end * @return */ - Long removeRangeForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end); + Long removeRangeForSortedSet(RedisKeyBuild redisKeyBuild, long start, long end); /** * 根据指定的score值的范围来移除成员 * - * @param redisKeyWrap + * @param redisKeyBuild * @param min * @param max * @return */ - Long removeRangeByScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max); + Long removeRangeByScoreForSortedSet(RedisKeyBuild redisKeyBuild, double min, double max); /** * 获取key和otherKey的并集并存储在destKey中 * - * @param redisKeyWrap - * @param otherRedisKeyWrap - * @param destRedisKeyWrap + * @param redisKeyBuild + * @param otherRedisKeyBuild + * @param destRedisKeyBuild * @return */ - Long unionAndStoreForSortedSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap); + Long unionAndStoreForSortedSet(RedisKeyBuild redisKeyBuild, RedisKeyBuild otherRedisKeyBuild, RedisKeyBuild destRedisKeyBuild); /** * 获取key和otherKeys的并集并存储在destKey中 - * @param redisKeyWrap - * @param otherRedisKeyWraps - * @param destRedisKeyWrap + * @param redisKeyBuild + * @param otherRedisKeyBuilds + * @param destRedisKeyBuild * @return */ - Long unionAndStoreForSortedSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap); + Long unionAndStoreForSortedSet(RedisKeyBuild redisKeyBuild, Collection otherRedisKeyBuilds, RedisKeyBuild destRedisKeyBuild); /** * 获取key和otherKey的交集并存储在destKey中 * - * @param redisKeyWrap - * @param otherRedisKeyWrap - * @param destRedisKeyWrap + * @param redisKeyBuild + * @param otherRedisKeyBuild + * @param destRedisKeyBuild * @return */ - Long intersectAndStoreForSortedSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap); + Long intersectAndStoreForSortedSet(RedisKeyBuild redisKeyBuild, RedisKeyBuild otherRedisKeyBuild, RedisKeyBuild destRedisKeyBuild); /** * 获取key和otherKeys的交集并存储在destKey中 * - * @param redisKeyWrap - * @param otherRedisKeyWraps - * @param destRedisKeyWrap + * @param redisKeyBuild + * @param otherRedisKeyBuilds + * @param destRedisKeyBuild * @return */ - Long intersectAndStoreForSortedSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap); + Long intersectAndStoreForSortedSet(RedisKeyBuild redisKeyBuild, Collection otherRedisKeyBuilds, RedisKeyBuild destRedisKeyBuild); /** * 游标遍历 - * @param redisKeyWrap + * @param redisKeyBuild * @param options * @return */ - Cursor> scanForSortedSet(RedisKeyWrap redisKeyWrap, ScanOptions options); + Cursor> scanForSortedSet(RedisKeyBuild redisKeyBuild, ScanOptions options); /** * 不对外使用 - * @param redisKeyWrap + * @param redisKeyBuild * @param genericReturnType * @return */ - T getByType(RedisKeyWrap redisKeyWrap, Type genericReturnType); + T getByType(RedisKeyBuild redisKeyBuild, Type genericReturnType); /** * 获取实例 * diff --git a/damai-redis-framework/src/main/java/com/damai/redis/RedisCacheImpl.java b/damai-redis-framework/src/main/java/com/damai/redis/RedisCacheImpl.java index f0f89c6d..087d8e58 100644 --- a/damai-redis-framework/src/main/java/com/damai/redis/RedisCacheImpl.java +++ b/damai-redis-framework/src/main/java/com/damai/redis/RedisCacheImpl.java @@ -35,9 +35,9 @@ public class RedisCacheImpl implements RedisCache { private StringRedisTemplate redisTemplate; @Override - public T get(RedisKeyWrap redisKeyWrap, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public T get(RedisKeyBuild redisKeyBuild, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); // 如果取String类型 则直接取出返回 String cachedValue = redisTemplate.opsForValue().get(key); if (String.class.isAssignableFrom(clazz)) { @@ -47,29 +47,29 @@ public class RedisCacheImpl implements RedisCache { } @Override - public T get(RedisKeyWrap redisKeyWrap, Class clazz, Supplier supplier,long ttl, TimeUnit timeUnit) { - T t = get(redisKeyWrap, clazz); + public T get(RedisKeyBuild redisKeyBuild, Class clazz, Supplier supplier, long ttl, TimeUnit timeUnit) { + T t = get(redisKeyBuild, clazz); if (CacheUtil.isEmpty(t)) { t = supplier.get(); if (CacheUtil.isEmpty(t)) { return null; } - set(redisKeyWrap,t,ttl,timeUnit); + set(redisKeyBuild,t,ttl,timeUnit); } return t; } @Override - public String getRange(RedisKeyWrap redisKeyWrap, long start, long end) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public String getRange(RedisKeyBuild redisKeyBuild, long start, long end) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); return redisTemplate.opsForValue().get(key, start, end); }; @Override - public List getValueIsList(RedisKeyWrap redisKeyWrap, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public List getValueIsList(RedisKeyBuild redisKeyBuild, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); String valueStr = redisTemplate.opsForValue().get(key); if (StringUtil.isEmpty(valueStr)) { return new ArrayList<>(); @@ -78,9 +78,9 @@ public class RedisCacheImpl implements RedisCache { } @Override - public List getValueIsList(RedisKeyWrap redisKeyWrap, Class clazz, Supplier> supplier,long ttl, TimeUnit timeUnit) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public List getValueIsList(RedisKeyBuild redisKeyBuild, Class clazz, Supplier> supplier, long ttl, TimeUnit timeUnit) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); String valueStr = redisTemplate.opsForValue().get(key); List tList = null; if (CacheUtil.isEmpty(valueStr)) { @@ -88,30 +88,30 @@ public class RedisCacheImpl implements RedisCache { if (CacheUtil.isEmpty(tList)) { return null; } - set(redisKeyWrap,tList,ttl,timeUnit); + set(redisKeyBuild,tList,ttl,timeUnit); } return tList; } @Override - public List getKeys(List keyList) { + public List getKeys(List keyList) { CacheUtil.checkNotEmpty(keyList); List batchKey = CacheUtil.getBatchKey(keyList); return redisTemplate.opsForValue().multiGet(batchKey); } @Override - public Boolean hasKey(RedisKeyWrap redisKeyWrap) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Boolean hasKey(RedisKeyBuild redisKeyBuild) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); return redisTemplate.hasKey(key); } @Override - public Long getExpire(RedisKeyWrap redisKeyWrap) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Long getExpire(RedisKeyBuild redisKeyBuild) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); return redisTemplate.getExpire(key); } @@ -121,16 +121,16 @@ public class RedisCacheImpl implements RedisCache { } @Override - public Boolean move(RedisKeyWrap redisKeyWrap, int dbIndex) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Boolean move(RedisKeyBuild redisKeyBuild, int dbIndex) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); return redisTemplate.move(key, dbIndex); } @Override - public Boolean persist(RedisKeyWrap redisKeyWrap) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Boolean persist(RedisKeyBuild redisKeyBuild) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); return redisTemplate.persist(key); } @@ -140,64 +140,64 @@ public class RedisCacheImpl implements RedisCache { } @Override - public void rename(RedisKeyWrap oldKey, RedisKeyWrap newKey) { + public void rename(RedisKeyBuild oldKey, RedisKeyBuild newKey) { CacheUtil.checkNotBlank(oldKey); CacheUtil.checkNotBlank(newKey); redisTemplate.rename(oldKey.getRelKey(), newKey.getRelKey()); } @Override - public Boolean renameIfAbsent(RedisKeyWrap oldKey, RedisKeyWrap newKey) { + public Boolean renameIfAbsent(RedisKeyBuild oldKey, RedisKeyBuild newKey) { CacheUtil.checkNotBlank(oldKey); CacheUtil.checkNotBlank(newKey); return redisTemplate.renameIfAbsent(oldKey.getRelKey(), newKey.getRelKey()); } @Override - public DataType type(RedisKeyWrap redisKeyWrap) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public DataType type(RedisKeyBuild redisKeyBuild) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); return redisTemplate.type(key); } @Override - public void set(RedisKeyWrap redisKeyWrap, Object object) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public void set(RedisKeyBuild redisKeyBuild, Object object) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); String json = object instanceof String ? (String) object : JSON.toJSONString(object); redisTemplate.opsForValue().set(key, json); } @Override - public void set(RedisKeyWrap redisKeyWrap, Object object, long ttl) { - set(redisKeyWrap, object, ttl, CacheUtil.DEFAULT_TIME_UNIT); + public void set(RedisKeyBuild redisKeyBuild, Object object, long ttl) { + set(redisKeyBuild, object, ttl, CacheUtil.DEFAULT_TIME_UNIT); } @Override - public void set(RedisKeyWrap redisKeyWrap, Object object, long ttl, TimeUnit timeUnit) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public void set(RedisKeyBuild redisKeyBuild, Object object, long ttl, TimeUnit timeUnit) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); String json = object instanceof String ? (String) object : JSON.toJSONString(object); redisTemplate.opsForValue().set(key, json, ttl, timeUnit); } @Override - public boolean setIfAbsent(RedisKeyWrap redisKeyWrap, Object object) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public boolean setIfAbsent(RedisKeyBuild redisKeyBuild, Object object) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); String json = object instanceof String ? (String) object : JSON.toJSONString(object); return redisTemplate.opsForValue().setIfAbsent(key, json); } @Override - public Long size(RedisKeyWrap redisKeyWrap) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Long size(RedisKeyBuild redisKeyBuild) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); return redisTemplate.opsForValue().size(key); } @Override - public void multiSet(Map map) { + public void multiSet(Map map) { CacheUtil.checkNotEmpty(map); Map mapForSave = new HashMap<>(map.size()); map.forEach((hashKey, val) -> { @@ -208,7 +208,7 @@ public class RedisCacheImpl implements RedisCache { } @Override - public boolean multiSetIfAbsent(Map map) { + public boolean multiSetIfAbsent(Map map) { CacheUtil.checkNotEmpty(map); Map mapForSave = new HashMap<>(map.size()); map.forEach((hashKey, val) -> { @@ -219,50 +219,50 @@ public class RedisCacheImpl implements RedisCache { } @Override - public Long incrBy(RedisKeyWrap redisKeyWrap, long increment) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Long incrBy(RedisKeyBuild redisKeyBuild, long increment) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); return redisTemplate.opsForValue().increment(key, increment); } @Override - public Double incrByDouble(RedisKeyWrap redisKeyWrap, double increment) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Double incrByDouble(RedisKeyBuild redisKeyBuild, double increment) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); return redisTemplate.opsForValue().increment(key, increment); } @Override - public Integer append(RedisKeyWrap redisKeyWrap, String value) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Integer append(RedisKeyBuild redisKeyBuild, String value) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); return redisTemplate.opsForValue().append(key, value); } @Override - public void putHash(RedisKeyWrap redisKeyWrap, String hashKey, Object value) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public void putHash(RedisKeyBuild redisKeyBuild, String hashKey, Object value) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); redisTemplate.opsForHash().put(key, hashKey, jsonValue); } @Override - public void putHash(RedisKeyWrap redisKeyWrap, String hashKey, Object value, long ttl) { - putHash(redisKeyWrap, hashKey, value, ttl, CacheUtil.DEFAULT_TIME_UNIT); + public void putHash(RedisKeyBuild redisKeyBuild, String hashKey, Object value, long ttl) { + putHash(redisKeyBuild, hashKey, value, ttl, CacheUtil.DEFAULT_TIME_UNIT); } @Override - public void putHash(RedisKeyWrap redisKeyWrap, String hashKey, Object value, long ttl, TimeUnit timeUnit) { - putHash(redisKeyWrap, hashKey, value); + public void putHash(RedisKeyBuild redisKeyBuild, String hashKey, Object value, long ttl, TimeUnit timeUnit) { + putHash(redisKeyBuild, hashKey, value); // 设置过期时间 - expire(redisKeyWrap, ttl, timeUnit); + expire(redisKeyBuild, ttl, timeUnit); } @Override - public void putHash(RedisKeyWrap redisKeyWrap, Map map) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public void putHash(RedisKeyBuild redisKeyBuild, Map map) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); Map mapForSave = new HashMap<>(map.size()); map.forEach((hashKey, val) -> { String jsonValue = val instanceof String ? (String) val : JSON.toJSONString(val); @@ -272,30 +272,30 @@ public class RedisCacheImpl implements RedisCache { } @Override - public void putHash(RedisKeyWrap redisKeyWrap, Map map, long ttl) { - putHash(redisKeyWrap, map, ttl, CacheUtil.DEFAULT_TIME_UNIT); + public void putHash(RedisKeyBuild redisKeyBuild, Map map, long ttl) { + putHash(redisKeyBuild, map, ttl, CacheUtil.DEFAULT_TIME_UNIT); } @Override - public void putHash(RedisKeyWrap redisKeyWrap, Map map, long ttl, TimeUnit timeUnit) { - putHash(redisKeyWrap, map); - expire(redisKeyWrap, ttl, timeUnit); + public void putHash(RedisKeyBuild redisKeyBuild, Map map, long ttl, TimeUnit timeUnit) { + putHash(redisKeyBuild, map); + expire(redisKeyBuild, ttl, timeUnit); } @Override - public Boolean putHashIfAbsent(RedisKeyWrap redisKeyWrap, String hashKey, Object value){ - CacheUtil.checkNotBlank(redisKeyWrap); + public Boolean putHashIfAbsent(RedisKeyBuild redisKeyBuild, String hashKey, Object value){ + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotBlank(hashKey); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); return redisTemplate.opsForHash().putIfAbsent(key, hashKey, jsonValue); } @Override - public T getForHash(RedisKeyWrap redisKeyWrap, String hashKey, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); + public T getForHash(RedisKeyBuild redisKeyBuild, String hashKey, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotBlank(hashKey); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); Object o = redisTemplate.opsForHash().get(key, hashKey); // 如果取String类型 则直接取出返回 if (String.class.isAssignableFrom(clazz)) { @@ -305,10 +305,10 @@ public class RedisCacheImpl implements RedisCache { } @Override - public List getValueIsListForHash(RedisKeyWrap redisKeyWrap, String hashKey, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); + public List getValueIsListForHash(RedisKeyBuild redisKeyBuild, String hashKey, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotBlank(hashKey); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); Object o = redisTemplate.opsForHash().get(key,hashKey); if (o == null) { return new ArrayList<>(); @@ -321,10 +321,10 @@ public class RedisCacheImpl implements RedisCache { } @Override - public List multiGetForHash(RedisKeyWrap redisKeyWrap, List hashKeys, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); + public List multiGetForHash(RedisKeyBuild redisKeyBuild, List hashKeys, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotBlank(hashKeys); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); List objHashKeys = new ArrayList<>(); objHashKeys.addAll(hashKeys); List multiGetObj = redisTemplate.opsForHash().multiGet(key, objHashKeys); @@ -336,9 +336,9 @@ public class RedisCacheImpl implements RedisCache { } @Override - public List getAllForHash(RedisKeyWrap redisKeyWrap, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public List getAllForHash(RedisKeyBuild redisKeyBuild, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); List valuesObj = redisTemplate.opsForHash().values(key); if (String.class.isAssignableFrom(clazz)) { return (List) valuesObj; @@ -348,9 +348,9 @@ public class RedisCacheImpl implements RedisCache { } @Override - public Map getAllMapForHash(RedisKeyWrap redisKeyWrap, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Map getAllMapForHash(RedisKeyBuild redisKeyBuild, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); Map entries = redisTemplate.opsForHash().entries(key); Map map = new HashMap<>(64); entries.forEach((k,v) -> { @@ -360,9 +360,9 @@ public class RedisCacheImpl implements RedisCache { } @Override - public T indexForList(RedisKeyWrap redisKeyWrap, long index, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public T indexForList(RedisKeyBuild redisKeyBuild, long index, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); String cachedValue = redisTemplate.opsForList().index(key, index); if (StringUtil.isEmpty(cachedValue)) { return null; @@ -374,19 +374,19 @@ public class RedisCacheImpl implements RedisCache { } @Override - public Long leftPushForList(RedisKeyWrap redisKeyWrap, Object value) { - CacheUtil.checkNotBlank(redisKeyWrap); + public Long leftPushForList(RedisKeyBuild redisKeyBuild, Object value) { + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotEmpty(value); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); return redisTemplate.opsForList().leftPush(key, jsonValue); } @Override - public Long leftPushAllForList(RedisKeyWrap redisKeyWrap, List valueList){ - CacheUtil.checkNotBlank(redisKeyWrap); + public Long leftPushAllForList(RedisKeyBuild redisKeyBuild, List valueList){ + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotEmpty(valueList); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); List jsonList = new ArrayList<>(valueList.size()); valueList.forEach(value -> { String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); @@ -396,39 +396,39 @@ public class RedisCacheImpl implements RedisCache { } @Override - public Long leftPushIfPresentForList(RedisKeyWrap redisKeyWrap, Object value){ - CacheUtil.checkNotBlank(redisKeyWrap); + public Long leftPushIfPresentForList(RedisKeyBuild redisKeyBuild, Object value){ + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotEmpty(value); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); return redisTemplate.opsForList().leftPushIfPresent(key, jsonValue); } @Override - public Long leftPushForList(RedisKeyWrap redisKeyWrap, Object pivot, Object value){ - CacheUtil.checkNotBlank(redisKeyWrap); + public Long leftPushForList(RedisKeyBuild redisKeyBuild, Object pivot, Object value){ + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotEmpty(pivot); CacheUtil.checkNotEmpty(value); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); String jsonPivot = value instanceof String ? (String) pivot : JSON.toJSONString(pivot); String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); return redisTemplate.opsForList().leftPush(key, jsonPivot, jsonValue); } @Override - public Long rightPushForList(RedisKeyWrap redisKeyWrap, Object value) { - CacheUtil.checkNotBlank(redisKeyWrap); + public Long rightPushForList(RedisKeyBuild redisKeyBuild, Object value) { + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotEmpty(value); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); return redisTemplate.opsForList().rightPush(key, jsonValue); } @Override - public Long rightPushAllForList(RedisKeyWrap redisKeyWrap, List valueList){ - CacheUtil.checkNotBlank(redisKeyWrap); + public Long rightPushAllForList(RedisKeyBuild redisKeyBuild, List valueList){ + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotEmpty(valueList); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); List jsonList = new ArrayList<>(valueList.size()); valueList.forEach(value -> { String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); @@ -438,68 +438,68 @@ public class RedisCacheImpl implements RedisCache { } @Override - public Long rightPushIfPresentForList(RedisKeyWrap redisKeyWrap, Object value){ - CacheUtil.checkNotBlank(redisKeyWrap); + public Long rightPushIfPresentForList(RedisKeyBuild redisKeyBuild, Object value){ + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotEmpty(value); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); return redisTemplate.opsForList().rightPushIfPresent(key, jsonValue); } @Override - public Long rightPushForList(RedisKeyWrap redisKeyWrap, Object pivot, Object value){ - CacheUtil.checkNotBlank(redisKeyWrap); + public Long rightPushForList(RedisKeyBuild redisKeyBuild, Object pivot, Object value){ + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotEmpty(pivot); CacheUtil.checkNotEmpty(value); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); String jsonPivot = value instanceof String ? (String) pivot : JSON.toJSONString(pivot); String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); return redisTemplate.opsForList().rightPush(key, jsonPivot, jsonValue); } @Override - public void setForList(RedisKeyWrap redisKeyWrap, long index, Object value) { - CacheUtil.checkNotBlank(redisKeyWrap); + public void setForList(RedisKeyBuild redisKeyBuild, long index, Object value) { + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotEmpty(value); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); redisTemplate.opsForList().set(key, index, jsonValue); } @Override - public T leftPopForList(RedisKeyWrap redisKeyWrap, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public T leftPopForList(RedisKeyBuild redisKeyBuild, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); String s = redisTemplate.opsForList().leftPop(key); return getComplex(s, clazz); } @Override - public T leftPopBlockForList(RedisKeyWrap redisKeyWrap, Class clazz, long timeout, TimeUnit unit) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public T leftPopBlockForList(RedisKeyBuild redisKeyBuild, Class clazz, long timeout, TimeUnit unit) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); String s = redisTemplate.opsForList().leftPop(key, timeout, unit); return getComplex(s, clazz); } @Override - public T rightPopForList(RedisKeyWrap redisKeyWrap, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public T rightPopForList(RedisKeyBuild redisKeyBuild, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); String s = redisTemplate.opsForList().rightPop(key); return getComplex(s, clazz); } @Override - public T rightPopBlockForList(RedisKeyWrap redisKeyWrap, Class clazz, long timeout, TimeUnit unit) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public T rightPopBlockForList(RedisKeyBuild redisKeyBuild, Class clazz, long timeout, TimeUnit unit) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); String s = redisTemplate.opsForList().rightPop(key, timeout, unit); return getComplex(s, clazz); } @Override - public T rightPopAndLeftPushForList(RedisKeyWrap sourceKey, RedisKeyWrap destinationKey, Class clazz) { + public T rightPopAndLeftPushForList(RedisKeyBuild sourceKey, RedisKeyBuild destinationKey, Class clazz) { CacheUtil.checkNotBlank(sourceKey); CacheUtil.checkNotBlank(destinationKey); String sourceRelKey = sourceKey.getRelKey(); @@ -509,7 +509,7 @@ public class RedisCacheImpl implements RedisCache { } @Override - public T rightPopBlockAndLeftPushForList(RedisKeyWrap sourceKey, RedisKeyWrap destinationKey, Class clazz, long timeout, TimeUnit unit) { + public T rightPopBlockAndLeftPushForList(RedisKeyBuild sourceKey, RedisKeyBuild destinationKey, Class clazz, long timeout, TimeUnit unit) { CacheUtil.checkNotBlank(sourceKey); CacheUtil.checkNotBlank(destinationKey); String sourceRelKey = sourceKey.getRelKey(); @@ -519,133 +519,133 @@ public class RedisCacheImpl implements RedisCache { } @Override - public List getAllForList(RedisKeyWrap redisKeyWrap, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public List getAllForList(RedisKeyBuild redisKeyBuild, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); List list = redisTemplate.opsForList().range(key, 0, -1); return parseObjects(list, clazz); } @Override - public List rangeForList(RedisKeyWrap redisKeyWrap, long start, long end, Class clazz){ - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public List rangeForList(RedisKeyBuild redisKeyBuild, long start, long end, Class clazz){ + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); List range = redisTemplate.opsForList().range(key, start, end); return parseObjects(range, clazz); } @Override - public Long removeForList(RedisKeyWrap redisKeyWrap, long index, Object value) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Long removeForList(RedisKeyBuild redisKeyBuild, long index, Object value) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); return redisTemplate.opsForList().remove(key, index, jsonValue); } @Override - public void trimForList(RedisKeyWrap redisKeyWrap, long start, long end) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public void trimForList(RedisKeyBuild redisKeyBuild, long start, long end) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); redisTemplate.opsForList().trim(key, start, end); } @Override - public Long lenForList(RedisKeyWrap redisKeyWrap) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Long lenForList(RedisKeyBuild redisKeyBuild) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); return redisTemplate.opsForList().size(key); } @Override - public Boolean hasKeyForHash(RedisKeyWrap redisKeyWrap, String hashKey) { - CacheUtil.checkNotBlank(redisKeyWrap); + public Boolean hasKeyForHash(RedisKeyBuild redisKeyBuild, String hashKey) { + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotBlank(hashKey); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); return redisTemplate.opsForHash().hasKey(key, hashKey); } @Override - public void del(RedisKeyWrap redisKeyWrap) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public void del(RedisKeyBuild redisKeyBuild) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); redisTemplate.delete(key); } @Override - public Long delForHash(RedisKeyWrap redisKeyWrap, String hashKey) { - CacheUtil.checkNotBlank(redisKeyWrap); + public Long delForHash(RedisKeyBuild redisKeyBuild, String hashKey) { + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotBlank(hashKey); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); return redisTemplate.opsForHash().delete(key, hashKey); } @Override - public Long delForHash(RedisKeyWrap redisKeyWrap, Collection hashKeys) { - CacheUtil.checkNotBlank(redisKeyWrap); + public Long delForHash(RedisKeyBuild redisKeyBuild, Collection hashKeys) { + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotBlank(hashKeys); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); return redisTemplate.opsForHash().delete(key, hashKeys.toArray()); } @Override - public Long incrByForHash(RedisKeyWrap redisKeyWrap, String hashKey, long increment) { - CacheUtil.checkNotBlank(redisKeyWrap); + public Long incrByForHash(RedisKeyBuild redisKeyBuild, String hashKey, long increment) { + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotBlank(hashKey); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); return redisTemplate.opsForHash().increment(key, hashKey, increment); } @Override - public Double incrByDoubleForHash(RedisKeyWrap redisKeyWrap, String hashKey, double delta){ - CacheUtil.checkNotBlank(redisKeyWrap); + public Double incrByDoubleForHash(RedisKeyBuild redisKeyBuild, String hashKey, double delta){ + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotBlank(hashKey); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); return redisTemplate.opsForHash().increment(key, hashKey, delta); } @Override - public Set hashKeysForHash(RedisKeyWrap redisKeyWrap) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Set hashKeysForHash(RedisKeyBuild redisKeyBuild) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); Set keys = redisTemplate.opsForHash().keys(key); return parseObjects(keys,String.class); } @Override - public Long sizeForHash(RedisKeyWrap redisKeyWrap){ - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Long sizeForHash(RedisKeyBuild redisKeyBuild){ + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); return redisTemplate.opsForHash().size(key); } @Override - public void del(Collection keys) { + public void del(Collection keys) { CacheUtil.checkNotEmpty(keys); List batchKey = CacheUtil.getBatchKey(keys); redisTemplate.delete(batchKey); } @Override - public Boolean expire(RedisKeyWrap redisKeyWrap, long ttl, TimeUnit timeUnit) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Boolean expire(RedisKeyBuild redisKeyBuild, long ttl, TimeUnit timeUnit) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); return redisTemplate.expire(key, ttl, timeUnit); } @Override - public Long addForSet(RedisKeyWrap redisKeyWrap, Object value) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Long addForSet(RedisKeyBuild redisKeyBuild, Object value) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); return redisTemplate.opsForSet().add(key, jsonValue); } @Override - public Long addForSet(RedisKeyWrap redisKeyWrap, List values) { - CacheUtil.checkNotBlank(redisKeyWrap); + public Long addForSet(RedisKeyBuild redisKeyBuild, List values) { + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotEmpty(values); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); List jsonList = new ArrayList<>(values.size()); values.forEach(value -> { String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); @@ -655,19 +655,19 @@ public class RedisCacheImpl implements RedisCache { } @Override - public Long removeForSet(RedisKeyWrap redisKeyWrap, Object value) { - CacheUtil.checkNotBlank(redisKeyWrap); + public Long removeForSet(RedisKeyBuild redisKeyBuild, Object value) { + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotEmpty(value); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); return redisTemplate.opsForSet().remove(key, jsonValue); } @Override - public Long removeForSet(RedisKeyWrap redisKeyWrap, List values) { - CacheUtil.checkNotBlank(redisKeyWrap); + public Long removeForSet(RedisKeyBuild redisKeyBuild, List values) { + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotEmpty(values); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); List jsonList = values.stream() .map(value -> value instanceof String ? (String) value : JSON.toJSONString(value)) .collect(Collectors.toList()); @@ -675,231 +675,231 @@ public class RedisCacheImpl implements RedisCache { } @Override - public T popForSet(RedisKeyWrap redisKeyWrap, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public T popForSet(RedisKeyBuild redisKeyBuild, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); String cachedValue = redisTemplate.opsForSet().pop(key); return getComplex(cachedValue,clazz); } @Override - public boolean moveForSet(RedisKeyWrap redisKeyWrap, Object value, RedisKeyWrap destRedisKeyWrap) { - CacheUtil.checkNotBlank(redisKeyWrap); + public boolean moveForSet(RedisKeyBuild redisKeyBuild, Object value, RedisKeyBuild destRedisKeyBuild) { + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotEmpty(value); - CacheUtil.checkNotBlank(destRedisKeyWrap); - String key = redisKeyWrap.getRelKey(); - String destKey = destRedisKeyWrap.getRelKey(); + CacheUtil.checkNotBlank(destRedisKeyBuild); + String key = redisKeyBuild.getRelKey(); + String destKey = destRedisKeyBuild.getRelKey(); String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); return redisTemplate.opsForSet().move(key, jsonValue, destKey); } @Override - public Long sizeForSet(RedisKeyWrap redisKeyWrap) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Long sizeForSet(RedisKeyBuild redisKeyBuild) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); return redisTemplate.opsForSet().size(key); } @Override - public Boolean isMemberForSet(RedisKeyWrap redisKeyWrap, Object value) { - CacheUtil.checkNotBlank(redisKeyWrap); + public Boolean isMemberForSet(RedisKeyBuild redisKeyBuild, Object value) { + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotEmpty(value); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); return redisTemplate.opsForSet().isMember(key, jsonValue); } @Override - public Set intersectForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - CacheUtil.checkNotBlank(otherRedisKeyWrap); - String key = redisKeyWrap.getRelKey(); - String otherKey = otherRedisKeyWrap.getRelKey(); + public Set intersectForSet(RedisKeyBuild redisKeyBuild, RedisKeyBuild otherRedisKeyBuild, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + CacheUtil.checkNotBlank(otherRedisKeyBuild); + String key = redisKeyBuild.getRelKey(); + String otherKey = otherRedisKeyBuild.getRelKey(); Set set = redisTemplate.opsForSet().intersect(key, otherKey); return parseObjects(set,clazz); } @Override - public Set intersectForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - CacheUtil.checkNotEmpty(otherRedisKeyWraps); - String key = redisKeyWrap.getRelKey(); - List otherKeys = CacheUtil.getBatchKey(otherRedisKeyWraps); + public Set intersectForSet(RedisKeyBuild redisKeyBuild, Collection otherRedisKeyBuilds, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + CacheUtil.checkNotEmpty(otherRedisKeyBuilds); + String key = redisKeyBuild.getRelKey(); + List otherKeys = CacheUtil.getBatchKey(otherRedisKeyBuilds); Set set = redisTemplate.opsForSet().intersect(key, otherKeys); return parseObjects(set,clazz); } @Override - public Long intersectAndStoreForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap) { - CacheUtil.checkNotBlank(redisKeyWrap); - CacheUtil.checkNotBlank(otherRedisKeyWrap); - CacheUtil.checkNotBlank(destRedisKeyWrap); - String key = redisKeyWrap.getRelKey(); - String otherKey = otherRedisKeyWrap.getRelKey(); - String destKey = destRedisKeyWrap.getRelKey(); + public Long intersectAndStoreForSet(RedisKeyBuild redisKeyBuild, RedisKeyBuild otherRedisKeyBuild, RedisKeyBuild destRedisKeyBuild) { + CacheUtil.checkNotBlank(redisKeyBuild); + CacheUtil.checkNotBlank(otherRedisKeyBuild); + CacheUtil.checkNotBlank(destRedisKeyBuild); + String key = redisKeyBuild.getRelKey(); + String otherKey = otherRedisKeyBuild.getRelKey(); + String destKey = destRedisKeyBuild.getRelKey(); return redisTemplate.opsForSet().intersectAndStore(key, otherKey, destKey); } @Override - public Long intersectAndStoreForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap) { - CacheUtil.checkNotBlank(redisKeyWrap); - CacheUtil.checkNotEmpty(otherRedisKeyWraps); - CacheUtil.checkNotBlank(destRedisKeyWrap); - String key = redisKeyWrap.getRelKey(); - List otherKeys = CacheUtil.getBatchKey(otherRedisKeyWraps); - String destKey = destRedisKeyWrap.getRelKey(); + public Long intersectAndStoreForSet(RedisKeyBuild redisKeyBuild, Collection otherRedisKeyBuilds, RedisKeyBuild destRedisKeyBuild) { + CacheUtil.checkNotBlank(redisKeyBuild); + CacheUtil.checkNotEmpty(otherRedisKeyBuilds); + CacheUtil.checkNotBlank(destRedisKeyBuild); + String key = redisKeyBuild.getRelKey(); + List otherKeys = CacheUtil.getBatchKey(otherRedisKeyBuilds); + String destKey = destRedisKeyBuild.getRelKey(); return redisTemplate.opsForSet().intersectAndStore(key, otherKeys, destKey); } @Override - public Set unionForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - CacheUtil.checkNotBlank(otherRedisKeyWrap); - String key = redisKeyWrap.getRelKey(); - String otherKey = otherRedisKeyWrap.getRelKey(); + public Set unionForSet(RedisKeyBuild redisKeyBuild, RedisKeyBuild otherRedisKeyBuild, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + CacheUtil.checkNotBlank(otherRedisKeyBuild); + String key = redisKeyBuild.getRelKey(); + String otherKey = otherRedisKeyBuild.getRelKey(); Set set = redisTemplate.opsForSet().union(key, otherKey); return parseObjects(set,clazz); } @Override - public Set unionForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - CacheUtil.checkNotEmpty(otherRedisKeyWraps); - String key = redisKeyWrap.getRelKey(); - List otherKeys = CacheUtil.getBatchKey(otherRedisKeyWraps); + public Set unionForSet(RedisKeyBuild redisKeyBuild, Collection otherRedisKeyBuilds, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + CacheUtil.checkNotEmpty(otherRedisKeyBuilds); + String key = redisKeyBuild.getRelKey(); + List otherKeys = CacheUtil.getBatchKey(otherRedisKeyBuilds); Set set = redisTemplate.opsForSet().union(key, otherKeys); return parseObjects(set,clazz); } @Override - public Long unionAndStoreForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap) { - CacheUtil.checkNotBlank(redisKeyWrap); - CacheUtil.checkNotBlank(otherRedisKeyWrap); - CacheUtil.checkNotBlank(destRedisKeyWrap); - String key = redisKeyWrap.getRelKey(); - String otherKey = otherRedisKeyWrap.getRelKey(); - String destKey = destRedisKeyWrap.getRelKey(); + public Long unionAndStoreForSet(RedisKeyBuild redisKeyBuild, RedisKeyBuild otherRedisKeyBuild, RedisKeyBuild destRedisKeyBuild) { + CacheUtil.checkNotBlank(redisKeyBuild); + CacheUtil.checkNotBlank(otherRedisKeyBuild); + CacheUtil.checkNotBlank(destRedisKeyBuild); + String key = redisKeyBuild.getRelKey(); + String otherKey = otherRedisKeyBuild.getRelKey(); + String destKey = destRedisKeyBuild.getRelKey(); return redisTemplate.opsForSet().unionAndStore(key, otherKey, destKey); } @Override - public Long unionAndStoreForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap) { - CacheUtil.checkNotBlank(redisKeyWrap); - CacheUtil.checkNotEmpty(otherRedisKeyWraps); - CacheUtil.checkNotBlank(destRedisKeyWrap); - String key = redisKeyWrap.getRelKey(); - List otherKeys = CacheUtil.getBatchKey(otherRedisKeyWraps); - String destKey = destRedisKeyWrap.getRelKey(); + public Long unionAndStoreForSet(RedisKeyBuild redisKeyBuild, Collection otherRedisKeyBuilds, RedisKeyBuild destRedisKeyBuild) { + CacheUtil.checkNotBlank(redisKeyBuild); + CacheUtil.checkNotEmpty(otherRedisKeyBuilds); + CacheUtil.checkNotBlank(destRedisKeyBuild); + String key = redisKeyBuild.getRelKey(); + List otherKeys = CacheUtil.getBatchKey(otherRedisKeyBuilds); + String destKey = destRedisKeyBuild.getRelKey(); return redisTemplate.opsForSet().unionAndStore(key, otherKeys, destKey); } @Override - public Set differenceForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - CacheUtil.checkNotBlank(otherRedisKeyWrap); - String key = redisKeyWrap.getRelKey(); - String otherKey = otherRedisKeyWrap.getRelKey(); + public Set differenceForSet(RedisKeyBuild redisKeyBuild, RedisKeyBuild otherRedisKeyBuild, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + CacheUtil.checkNotBlank(otherRedisKeyBuild); + String key = redisKeyBuild.getRelKey(); + String otherKey = otherRedisKeyBuild.getRelKey(); Set set = redisTemplate.opsForSet().difference(key, otherKey); return parseObjects(set,clazz); } @Override - public Set differenceForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - CacheUtil.checkNotEmpty(otherRedisKeyWraps); - String key = redisKeyWrap.getRelKey(); - List otherKeys = CacheUtil.getBatchKey(otherRedisKeyWraps); + public Set differenceForSet(RedisKeyBuild redisKeyBuild, Collection otherRedisKeyBuilds, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + CacheUtil.checkNotEmpty(otherRedisKeyBuilds); + String key = redisKeyBuild.getRelKey(); + List otherKeys = CacheUtil.getBatchKey(otherRedisKeyBuilds); Set set = redisTemplate.opsForSet().difference(key, otherKeys); return parseObjects(set,clazz); } @Override - public Long differenceForSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap) { - CacheUtil.checkNotBlank(redisKeyWrap); - CacheUtil.checkNotBlank(otherRedisKeyWrap); - CacheUtil.checkNotBlank(destRedisKeyWrap); - String key = redisKeyWrap.getRelKey(); - String otherKey = otherRedisKeyWrap.getRelKey(); - String destKey = destRedisKeyWrap.getRelKey(); + public Long differenceForSet(RedisKeyBuild redisKeyBuild, RedisKeyBuild otherRedisKeyBuild, RedisKeyBuild destRedisKeyBuild) { + CacheUtil.checkNotBlank(redisKeyBuild); + CacheUtil.checkNotBlank(otherRedisKeyBuild); + CacheUtil.checkNotBlank(destRedisKeyBuild); + String key = redisKeyBuild.getRelKey(); + String otherKey = otherRedisKeyBuild.getRelKey(); + String destKey = destRedisKeyBuild.getRelKey(); return redisTemplate.opsForSet().differenceAndStore(key, otherKey, destKey); } @Override - public Long differenceForSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap) { - CacheUtil.checkNotBlank(redisKeyWrap); - CacheUtil.checkNotEmpty(otherRedisKeyWraps); - CacheUtil.checkNotBlank(destRedisKeyWrap); - String key = redisKeyWrap.getRelKey(); - List otherKeys = CacheUtil.getBatchKey(otherRedisKeyWraps); - String destKey = destRedisKeyWrap.getRelKey(); + public Long differenceForSet(RedisKeyBuild redisKeyBuild, Collection otherRedisKeyBuilds, RedisKeyBuild destRedisKeyBuild) { + CacheUtil.checkNotBlank(redisKeyBuild); + CacheUtil.checkNotEmpty(otherRedisKeyBuilds); + CacheUtil.checkNotBlank(destRedisKeyBuild); + String key = redisKeyBuild.getRelKey(); + List otherKeys = CacheUtil.getBatchKey(otherRedisKeyBuilds); + String destKey = destRedisKeyBuild.getRelKey(); return redisTemplate.opsForSet().differenceAndStore(key, otherKeys, destKey); } @Override - public Set membersForSet(RedisKeyWrap redisKeyWrap, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Set membersForSet(RedisKeyBuild redisKeyBuild, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); Set members = redisTemplate.opsForSet().members(key); return parseObjects(members,clazz); } @Override - public T randomMemberForSet(RedisKeyWrap redisKeyWrap, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public T randomMemberForSet(RedisKeyBuild redisKeyBuild, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); String s = redisTemplate.opsForSet().randomMember(key); return getComplex(s, clazz); } @Override - public List randomMembersForSet(RedisKeyWrap redisKeyWrap, long count, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public List randomMembersForSet(RedisKeyBuild redisKeyBuild, long count, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); List list = redisTemplate.opsForSet().randomMembers(key, count); return parseObjects(list,clazz); } @Override - public Set distinctRandomMembersForSet(RedisKeyWrap redisKeyWrap, long count, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Set distinctRandomMembersForSet(RedisKeyBuild redisKeyBuild, long count, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); Set set = redisTemplate.opsForSet().distinctRandomMembers(key, count); return parseObjects(set,clazz); } @Override - public Cursor scanForSet(RedisKeyWrap redisKeyWrap, ScanOptions options) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Cursor scanForSet(RedisKeyBuild redisKeyBuild, ScanOptions options) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); Cursor scan = redisTemplate.opsForSet().scan(key, options); return scan; } @Override - public void addForSortedSet(RedisKeyWrap redisKeyWrap, Object value, Double score){ - CacheUtil.checkNotBlank(redisKeyWrap); + public void addForSortedSet(RedisKeyBuild redisKeyBuild, Object value, Double score){ + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotEmpty(value); CacheUtil.checkNotEmpty(score); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); redisTemplate.opsForZSet().add(key,jsonValue,score); } @Override - public void addForSortedSet(RedisKeyWrap redisKeyWrap, Object value, Double score, long ttl){ - addForSortedSet(redisKeyWrap,value,score,ttl, CacheUtil.DEFAULT_TIME_UNIT); + public void addForSortedSet(RedisKeyBuild redisKeyBuild, Object value, Double score, long ttl){ + addForSortedSet(redisKeyBuild,value,score,ttl, CacheUtil.DEFAULT_TIME_UNIT); } @Override - public void addForSortedSet(RedisKeyWrap redisKeyWrap, Object value, Double score, long ttl, TimeUnit timeUnit){ - addForSortedSet(redisKeyWrap,value,score); - expire(redisKeyWrap, ttl, timeUnit); + public void addForSortedSet(RedisKeyBuild redisKeyBuild, Object value, Double score, long ttl, TimeUnit timeUnit){ + addForSortedSet(redisKeyBuild,value,score); + expire(redisKeyBuild, ttl, timeUnit); } @Override - public Long addForSortedSet(RedisKeyWrap redisKeyWrap, Map map) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Long addForSortedSet(RedisKeyBuild redisKeyBuild, Map map) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); Set> collect = map.entrySet() .stream() @@ -912,46 +912,46 @@ public class RedisCacheImpl implements RedisCache { } @Override - public Long addForSortedSet(RedisKeyWrap redisKeyWrap, Map map, long ttl) { - return addForSortedSet(redisKeyWrap, map, ttl, CacheUtil.DEFAULT_TIME_UNIT); + public Long addForSortedSet(RedisKeyBuild redisKeyBuild, Map map, long ttl) { + return addForSortedSet(redisKeyBuild, map, ttl, CacheUtil.DEFAULT_TIME_UNIT); } @Override - public Long addForSortedSet(RedisKeyWrap redisKeyWrap, Map map, long ttl, TimeUnit timeUnit) { - Long count = addForSortedSet(redisKeyWrap, map); - expire(redisKeyWrap, ttl, timeUnit); + public Long addForSortedSet(RedisKeyBuild redisKeyBuild, Map map, long ttl, TimeUnit timeUnit) { + Long count = addForSortedSet(redisKeyBuild, map); + expire(redisKeyBuild, ttl, timeUnit); return count; } @Override - public Set getRangeForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Set getRangeForSortedSet(RedisKeyBuild redisKeyBuild, long start, long end, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); Set resultSet = redisTemplate.opsForZSet().range(key, start, end); return parseObjects(resultSet,clazz); } @Override - public Set getReverseRangeForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Set getReverseRangeForSortedSet(RedisKeyBuild redisKeyBuild, long start, long end, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); Set resultSet = redisTemplate.opsForZSet().reverseRange(key, start, end); return parseObjects(resultSet,clazz); } @Override - public Long delForSortedSet(RedisKeyWrap redisKeyWrap, Object value) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Long delForSortedSet(RedisKeyBuild redisKeyBuild, Object value) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); return redisTemplate.opsForZSet().remove(key, jsonValue); } @Override - public Long delForSortedSet(RedisKeyWrap redisKeyWrap, Collection valueCollection) { - CacheUtil.checkNotBlank(redisKeyWrap); + public Long delForSortedSet(RedisKeyBuild redisKeyBuild, Collection valueCollection) { + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotEmpty(valueCollection); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); List jsonValueList = valueCollection.stream() .map(value -> value instanceof String ? (String) value : JSON.toJSONString(value)) .distinct() @@ -960,50 +960,50 @@ public class RedisCacheImpl implements RedisCache { } @Override - public Long delRangeForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Long delRangeForSortedSet(RedisKeyBuild redisKeyBuild, long start, long end) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); return redisTemplate.opsForZSet().removeRange(key, start, end); } @Override - public Double incrementScoreForSortedSet(RedisKeyWrap redisKeyWrap, Object value, double delta) { - CacheUtil.checkNotBlank(redisKeyWrap); + public Double incrementScoreForSortedSet(RedisKeyBuild redisKeyBuild, Object value, double delta) { + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotEmpty(value); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); return redisTemplate.opsForZSet().incrementScore(key, jsonValue, delta); } @Override - public Long sizeForSortedSet(RedisKeyWrap redisKeyWrap) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Long sizeForSortedSet(RedisKeyBuild redisKeyBuild) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); return redisTemplate.opsForZSet().size(key); } @Override - public Long rankForSortedSet(RedisKeyWrap redisKeyWrap, Object value) { - CacheUtil.checkNotBlank(redisKeyWrap); + public Long rankForSortedSet(RedisKeyBuild redisKeyBuild, Object value) { + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotEmpty(value); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); return redisTemplate.opsForZSet().rank(key, jsonValue); } @Override - public Long reverseRankForSortedSet(RedisKeyWrap redisKeyWrap, Object value) { - CacheUtil.checkNotBlank(redisKeyWrap); + public Long reverseRankForSortedSet(RedisKeyBuild redisKeyBuild, Object value) { + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotEmpty(value); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); return redisTemplate.opsForZSet().reverseRank(key, jsonValue); } @Override - public Set> rangeWithScoreForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Set> rangeWithScoreForSortedSet(RedisKeyBuild redisKeyBuild, long start, long end, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); Set> cacheSet = redisTemplate.opsForZSet().rangeWithScores(key, start, end); if (cacheSet == null) { return new HashSet<>(); @@ -1012,153 +1012,153 @@ public class RedisCacheImpl implements RedisCache { } @Override - public Set rangeByScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Set rangeByScoreForSortedSet(RedisKeyBuild redisKeyBuild, double min, double max, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); Set set = redisTemplate.opsForZSet().rangeByScore(key, min, max); return parseObjects(set,clazz); } @Override - public Set> rangeByScoreWithScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Set> rangeByScoreWithScoreForSortedSet(RedisKeyBuild redisKeyBuild, double min, double max, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); Set> cacheSet = redisTemplate.opsForZSet().rangeByScoreWithScores(key, min, max); return typedTupleStringParseObjects(cacheSet, clazz); } @Override - public Set> rangeByScoreWithScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max, + public Set> rangeByScoreWithScoreForSortedSet(RedisKeyBuild redisKeyBuild, double min, double max, long start, long end, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); Set> cacheSet = redisTemplate.opsForZSet().rangeByScoreWithScores(key, min, max, start, end); return typedTupleStringParseObjects(cacheSet, clazz); } @Override - public Set> reverseRangeWithScoreForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Set> reverseRangeWithScoreForSortedSet(RedisKeyBuild redisKeyBuild, long start, long end, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); Set> cacheSet = redisTemplate.opsForZSet().reverseRangeWithScores(key, start, end); return typedTupleStringParseObjects(cacheSet, clazz); } @Override - public Set reverseRangeByScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Set reverseRangeByScoreForSortedSet(RedisKeyBuild redisKeyBuild, double min, double max, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); Set set = redisTemplate.opsForZSet().reverseRangeByScore(key, min, max); return parseObjects(set,clazz); } @Override - public Set> reverseRangeByScoreWithScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Set> reverseRangeByScoreWithScoreForSortedSet(RedisKeyBuild redisKeyBuild, double min, double max, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); Set> cacheSet = redisTemplate.opsForZSet().reverseRangeByScoreWithScores(key, min, max); return typedTupleStringParseObjects(cacheSet, clazz); } @Override - public Set reverseRangeByScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max, long start, long end, Class clazz) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Set reverseRangeByScoreForSortedSet(RedisKeyBuild redisKeyBuild, double min, double max, long start, long end, Class clazz) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); Set set = redisTemplate.opsForZSet().reverseRangeByScore(key, min, max, start, end); return parseObjects(set, clazz); } @Override - public Long countForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Long countForSortedSet(RedisKeyBuild redisKeyBuild, double min, double max) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); return redisTemplate.opsForZSet().count(key, min, max); } @Override - public Long zCardForSortedSet(RedisKeyWrap redisKeyWrap) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Long zCardForSortedSet(RedisKeyBuild redisKeyBuild) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); return redisTemplate.opsForZSet().zCard(key); } @Override - public Double scoreByValueForSortedSet(RedisKeyWrap redisKeyWrap, Object value) { - CacheUtil.checkNotBlank(redisKeyWrap); + public Double scoreByValueForSortedSet(RedisKeyBuild redisKeyBuild, Object value) { + CacheUtil.checkNotBlank(redisKeyBuild); CacheUtil.checkNotEmpty(value); - String key = redisKeyWrap.getRelKey(); + String key = redisKeyBuild.getRelKey(); String jsonValue = value instanceof String ? (String) value : JSON.toJSONString(value); return redisTemplate.opsForZSet().score(key, jsonValue); } @Override - public Long removeRangeForSortedSet(RedisKeyWrap redisKeyWrap, long start, long end) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Long removeRangeForSortedSet(RedisKeyBuild redisKeyBuild, long start, long end) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); return redisTemplate.opsForZSet().removeRange(key, start, end); } @Override - public Long removeRangeByScoreForSortedSet(RedisKeyWrap redisKeyWrap, double min, double max) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Long removeRangeByScoreForSortedSet(RedisKeyBuild redisKeyBuild, double min, double max) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); return redisTemplate.opsForZSet().removeRangeByScore(key, min, max); } @Override - public Long unionAndStoreForSortedSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap) { - CacheUtil.checkNotBlank(redisKeyWrap); - CacheUtil.checkNotBlank(otherRedisKeyWrap); - CacheUtil.checkNotBlank(destRedisKeyWrap); - String key = redisKeyWrap.getRelKey(); - String otherKey = otherRedisKeyWrap.getRelKey(); - String destKey = destRedisKeyWrap.getRelKey(); + public Long unionAndStoreForSortedSet(RedisKeyBuild redisKeyBuild, RedisKeyBuild otherRedisKeyBuild, RedisKeyBuild destRedisKeyBuild) { + CacheUtil.checkNotBlank(redisKeyBuild); + CacheUtil.checkNotBlank(otherRedisKeyBuild); + CacheUtil.checkNotBlank(destRedisKeyBuild); + String key = redisKeyBuild.getRelKey(); + String otherKey = otherRedisKeyBuild.getRelKey(); + String destKey = destRedisKeyBuild.getRelKey(); return redisTemplate.opsForZSet().unionAndStore(key, otherKey, destKey); } @Override - public Long unionAndStoreForSortedSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap) { - CacheUtil.checkNotBlank(redisKeyWrap); - CacheUtil.checkNotEmpty(otherRedisKeyWraps); - CacheUtil.checkNotBlank(destRedisKeyWrap); - String key = redisKeyWrap.getRelKey(); - List otherKeys = CacheUtil.getBatchKey(otherRedisKeyWraps); - String destKey = destRedisKeyWrap.getRelKey(); + public Long unionAndStoreForSortedSet(RedisKeyBuild redisKeyBuild, Collection otherRedisKeyBuilds, RedisKeyBuild destRedisKeyBuild) { + CacheUtil.checkNotBlank(redisKeyBuild); + CacheUtil.checkNotEmpty(otherRedisKeyBuilds); + CacheUtil.checkNotBlank(destRedisKeyBuild); + String key = redisKeyBuild.getRelKey(); + List otherKeys = CacheUtil.getBatchKey(otherRedisKeyBuilds); + String destKey = destRedisKeyBuild.getRelKey(); return redisTemplate.opsForZSet().unionAndStore(key, otherKeys, destKey); } @Override - public Long intersectAndStoreForSortedSet(RedisKeyWrap redisKeyWrap, RedisKeyWrap otherRedisKeyWrap, RedisKeyWrap destRedisKeyWrap) { - CacheUtil.checkNotBlank(redisKeyWrap); - CacheUtil.checkNotBlank(otherRedisKeyWrap); - CacheUtil.checkNotBlank(destRedisKeyWrap); - String key = redisKeyWrap.getRelKey(); - String otherKey = otherRedisKeyWrap.getRelKey(); - String destKey = destRedisKeyWrap.getRelKey(); + public Long intersectAndStoreForSortedSet(RedisKeyBuild redisKeyBuild, RedisKeyBuild otherRedisKeyBuild, RedisKeyBuild destRedisKeyBuild) { + CacheUtil.checkNotBlank(redisKeyBuild); + CacheUtil.checkNotBlank(otherRedisKeyBuild); + CacheUtil.checkNotBlank(destRedisKeyBuild); + String key = redisKeyBuild.getRelKey(); + String otherKey = otherRedisKeyBuild.getRelKey(); + String destKey = destRedisKeyBuild.getRelKey(); return redisTemplate.opsForZSet().intersectAndStore(key, otherKey, destKey); } @Override - public Long intersectAndStoreForSortedSet(RedisKeyWrap redisKeyWrap, Collection otherRedisKeyWraps, RedisKeyWrap destRedisKeyWrap) { - CacheUtil.checkNotBlank(redisKeyWrap); - CacheUtil.checkNotEmpty(otherRedisKeyWraps); - CacheUtil.checkNotBlank(destRedisKeyWrap); - String key = redisKeyWrap.getRelKey(); - List otherKeys = CacheUtil.getBatchKey(otherRedisKeyWraps); - String destKey = destRedisKeyWrap.getRelKey(); + public Long intersectAndStoreForSortedSet(RedisKeyBuild redisKeyBuild, Collection otherRedisKeyBuilds, RedisKeyBuild destRedisKeyBuild) { + CacheUtil.checkNotBlank(redisKeyBuild); + CacheUtil.checkNotEmpty(otherRedisKeyBuilds); + CacheUtil.checkNotBlank(destRedisKeyBuild); + String key = redisKeyBuild.getRelKey(); + List otherKeys = CacheUtil.getBatchKey(otherRedisKeyBuilds); + String destKey = destRedisKeyBuild.getRelKey(); return redisTemplate.opsForZSet().intersectAndStore(key, otherKeys, destKey); } @Override - public Cursor> scanForSortedSet(RedisKeyWrap redisKeyWrap, ScanOptions options) { - CacheUtil.checkNotBlank(redisKeyWrap); - String key = redisKeyWrap.getRelKey(); + public Cursor> scanForSortedSet(RedisKeyBuild redisKeyBuild, ScanOptions options) { + CacheUtil.checkNotBlank(redisKeyBuild); + String key = redisKeyBuild.getRelKey(); return redisTemplate.opsForZSet().scan(key, options); } @Override - public T getByType(RedisKeyWrap redisKeyWrap, Type genericReturnType){ - String key = redisKeyWrap.getRelKey(); + public T getByType(RedisKeyBuild redisKeyBuild, Type genericReturnType){ + String key = redisKeyBuild.getRelKey(); String s = redisTemplate.boundValueOps(key).get(); if (StringUtil.isEmpty(s)) { return null; diff --git a/damai-redis-framework/src/main/java/com/damai/redis/RedisKeyWrap.java b/damai-redis-framework/src/main/java/com/damai/redis/RedisKeyBuild.java similarity index 63% rename from damai-redis-framework/src/main/java/com/damai/redis/RedisKeyWrap.java rename to damai-redis-framework/src/main/java/com/damai/redis/RedisKeyBuild.java index f2e62cf2..587f72b9 100644 --- a/damai-redis-framework/src/main/java/com/damai/redis/RedisKeyWrap.java +++ b/damai-redis-framework/src/main/java/com/damai/redis/RedisKeyBuild.java @@ -1,7 +1,7 @@ package com.damai.redis; -import com.damai.core.RedisKeyEnum; +import com.damai.core.RedisKeyManage; import com.damai.core.SpringUtil; import java.util.Objects; @@ -11,26 +11,24 @@ import java.util.Objects; * @description: redis key包装 * @author: 阿宽不是程序员 **/ -public final class RedisKeyWrap { +public final class RedisKeyBuild { /** * 实际使用的key * */ - private String relKey; + private final String relKey; - private RedisKeyWrap() {} - - private RedisKeyWrap(String relKey) { + private RedisKeyBuild(String relKey) { this.relKey = relKey; } /** * 构建真实的key - * @param redisKeyEnum key的枚举 + * @param redisKeyManage key的枚举 * @param args 占位符的值 * */ - public static RedisKeyWrap createRedisKey(RedisKeyEnum redisKeyEnum, Object... args){ - String redisRelKey = String.format(redisKeyEnum.getKeyCode(),args); - return new RedisKeyWrap(SpringUtil.getPrefixDistinctionName() + "-" + redisRelKey); + public static RedisKeyBuild createRedisKey(RedisKeyManage redisKeyManage, Object... args){ + String redisRelKey = String.format(redisKeyManage.getKey(),args); + return new RedisKeyBuild(SpringUtil.getPrefixDistinctionName() + "-" + redisRelKey); } public String getRelKey() { @@ -45,7 +43,7 @@ public final class RedisKeyWrap { if (o == null || getClass() != o.getClass()) { return false; } - RedisKeyWrap that = (RedisKeyWrap) o; + RedisKeyBuild that = (RedisKeyBuild) o; return relKey.equals(that.relKey); } diff --git a/damai-server-client/damai-base-data-client/src/main/java/com/damai/dto/ChannelDataAddDto.java b/damai-server-client/damai-base-data-client/src/main/java/com/damai/dto/ChannelDataAddDto.java index a08dba49..44f7ee0d 100644 --- a/damai-server-client/damai-base-data-client/src/main/java/com/damai/dto/ChannelDataAddDto.java +++ b/damai-server-client/damai-base-data-client/src/main/java/com/damai/dto/ChannelDataAddDto.java @@ -43,4 +43,8 @@ public class ChannelDataAddDto { @ApiModelProperty(name ="dataSecretKey", dataType ="String", value ="rsa参数私钥") private String dataSecretKey; + @ApiModelProperty(name ="tokenSecret", dataType ="String", value ="token秘钥", required =true) + @NotBlank + private String tokenSecret;; + } diff --git a/damai-server-client/damai-base-data-client/src/main/java/com/damai/vo/GetChannelDataVo.java b/damai-server-client/damai-base-data-client/src/main/java/com/damai/vo/GetChannelDataVo.java index 4ea5a1fb..ab18a224 100644 --- a/damai-server-client/damai-base-data-client/src/main/java/com/damai/vo/GetChannelDataVo.java +++ b/damai-server-client/damai-base-data-client/src/main/java/com/damai/vo/GetChannelDataVo.java @@ -46,4 +46,7 @@ public class GetChannelDataVo { @ApiModelProperty(name ="dataSecretKey", dataType ="String", value ="rsa参数私钥", required =true) private String dataSecretKey; + + @ApiModelProperty(name ="tokenSecret", dataType ="String", value ="token秘钥", required =true) + private String tokenSecret; } \ No newline at end of file diff --git a/damai-server-client/damai-user-client/src/main/java/com/damai/dto/UserLoginDto.java b/damai-server-client/damai-user-client/src/main/java/com/damai/dto/UserLoginDto.java index 7a8850c8..68fed78e 100644 --- a/damai-server-client/damai-user-client/src/main/java/com/damai/dto/UserLoginDto.java +++ b/damai-server-client/damai-user-client/src/main/java/com/damai/dto/UserLoginDto.java @@ -3,6 +3,9 @@ package com.damai.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + +import javax.validation.constraints.NotBlank; + /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 * @description: 用户登录 dto @@ -12,9 +15,17 @@ import lombok.Data; @ApiModel(value="UserLoginDto", description ="用户登录") public class UserLoginDto { + @ApiModelProperty(name ="code", dataType ="String", value ="渠道code 0001:pc网站", required = true) + @NotBlank + private String code; + @ApiModelProperty(name ="name", dataType ="String", value ="用户手机号") private String mobile; @ApiModelProperty(name ="email", dataType ="String", value ="用户邮箱") private String email; + + @ApiModelProperty(name ="password", dataType ="String", value ="密码", required = true) + @NotBlank + private String password; } \ No newline at end of file diff --git a/damai-server/damai-base-data-service/src/main/java/com/damai/entity/TokenData.java b/damai-server-client/damai-user-client/src/main/java/com/damai/dto/UserLogoutDto.java similarity index 30% rename from damai-server/damai-base-data-service/src/main/java/com/damai/entity/TokenData.java rename to damai-server-client/damai-user-client/src/main/java/com/damai/dto/UserLogoutDto.java index 5ae5985e..4106ab08 100644 --- a/damai-server/damai-base-data-service/src/main/java/com/damai/entity/TokenData.java +++ b/damai-server-client/damai-user-client/src/main/java/com/damai/dto/UserLogoutDto.java @@ -1,30 +1,26 @@ -package com.damai.entity; +package com.damai.dto; -import com.damai.data.BaseData; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.io.Serializable; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: token 实体 + * @description: 用户退出登录 dto * @author: 阿宽不是程序员 **/ @Data -public class TokenData extends BaseData implements Serializable { +@ApiModel(value="UserLoginDto", description ="用户退出登录") +public class UserLogoutDto { - /** - * id - * */ - private Long id; - - /** - * 名称 - * */ - private String name; + @ApiModelProperty(name ="code", dataType ="String", value ="渠道code 0001:pc网站", required = true) + @NotBlank + private String code; - /** - * token秘钥 - * */ - private String secret; -} + @ApiModelProperty(name ="id", dataType ="Long", value ="用户id", required =true) + @NotNull + private Long id; +} \ No newline at end of file diff --git a/damai-server/damai-base-data-service/src/main/java/com/damai/controller/TokenDataController.java b/damai-server/damai-base-data-service/src/main/java/com/damai/controller/TokenDataController.java deleted file mode 100644 index 5d13843d..00000000 --- a/damai-server/damai-base-data-service/src/main/java/com/damai/controller/TokenDataController.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.damai.controller; - -import com.damai.common.ApiResponse; -import com.damai.dto.TokenDataDto; -import com.damai.service.TokenDataService; -import com.damai.vo.TokenDataVo; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.validation.Valid; - -/** - * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: token 控制层 - * @author: 阿宽不是程序员 - **/ -@RestController -@RequestMapping("/token/data") -@Api(tags = "token-data", value = "token配置数据") -public class TokenDataController { - - @Autowired - private TokenDataService tokenDataService; - - @ApiOperation(value = "获取token配置数据") - @PostMapping (value = "/get") - public ApiResponse get() { - TokenDataVo tokenDataVo = tokenDataService.get(); - return ApiResponse.ok(tokenDataVo); - } - - @ApiOperation(value = "添加token配置数据") - @PostMapping(value = "/add") - public ApiResponse add(@Valid @RequestBody TokenDataDto tokenDataDto) { - tokenDataService.add(tokenDataDto); - return ApiResponse.ok(true); - } -} diff --git a/damai-server/damai-base-data-service/src/main/java/com/damai/entity/ChannelData.java b/damai-server/damai-base-data-service/src/main/java/com/damai/entity/ChannelData.java index 261d10f2..b949b028 100644 --- a/damai-server/damai-base-data-service/src/main/java/com/damai/entity/ChannelData.java +++ b/damai-server/damai-base-data-service/src/main/java/com/damai/entity/ChannelData.java @@ -56,4 +56,9 @@ public class ChannelData extends BaseData implements Serializable { * */ private String dataSecretKey; + /** + * token秘钥 + * */ + private String tokenSecret; + } \ No newline at end of file diff --git a/damai-server/damai-base-data-service/src/main/java/com/damai/mapper/TokenDataMapper.java b/damai-server/damai-base-data-service/src/main/java/com/damai/mapper/TokenDataMapper.java deleted file mode 100644 index ff9aa611..00000000 --- a/damai-server/damai-base-data-service/src/main/java/com/damai/mapper/TokenDataMapper.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.damai.mapper; - - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.damai.entity.TokenData; - -/** - * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: token mapper - * @author: 阿宽不是程序员 - **/ -public interface TokenDataMapper extends BaseMapper { - -} diff --git a/damai-server/damai-base-data-service/src/main/java/com/damai/service/ChannelDataService.java b/damai-server/damai-base-data-service/src/main/java/com/damai/service/ChannelDataService.java index ca52215f..342af239 100644 --- a/damai-server/damai-base-data-service/src/main/java/com/damai/service/ChannelDataService.java +++ b/damai-server/damai-base-data-service/src/main/java/com/damai/service/ChannelDataService.java @@ -3,13 +3,13 @@ package com.damai.service; import com.baidu.fsg.uid.UidGenerator; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.damai.core.RedisKeyEnum; +import com.damai.core.RedisKeyManage; import com.damai.dto.ChannelDataAddDto; import com.damai.dto.GetChannelDataByCodeDto; import com.damai.entity.ChannelData; import com.damai.enums.Status; import com.damai.mapper.ChannelDataMapper; -import com.damai.redis.RedisKeyWrap; +import com.damai.redis.RedisKeyBuild; import com.damai.util.DateUtils; import com.damai.vo.GetChannelDataVo; import lombok.extern.slf4j.Slf4j; @@ -63,6 +63,6 @@ public class ChannelDataService { private void addRedisChannelData(ChannelData channelData){ GetChannelDataVo getChannelDataVo = new GetChannelDataVo(); BeanUtils.copyProperties(channelData,getChannelDataVo); - redisCache.set(RedisKeyWrap.createRedisKey(RedisKeyEnum.CHANNEL_DATA,getChannelDataVo.getCode()),getChannelDataVo); + redisCache.set(RedisKeyBuild.createRedisKey(RedisKeyManage.CHANNEL_DATA,getChannelDataVo.getCode()),getChannelDataVo); } } diff --git a/damai-server/damai-customize-service/src/main/java/com/damai/kafka/ApiDataMessageConsumer.java b/damai-server/damai-customize-service/src/main/java/com/damai/kafka/ApiDataMessageConsumer.java index 4b93e027..3b159d09 100644 --- a/damai-server/damai-customize-service/src/main/java/com/damai/kafka/ApiDataMessageConsumer.java +++ b/damai-server/damai-customize-service/src/main/java/com/damai/kafka/ApiDataMessageConsumer.java @@ -6,7 +6,6 @@ import com.damai.service.ApiDataService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.kafka.clients.consumer.ConsumerRecord; -import org.springframework.kafka.annotation.KafkaListener; import java.util.Optional; @@ -21,7 +20,7 @@ public class ApiDataMessageConsumer { private ApiDataService apiDataService; - @KafkaListener(topics = {"${kafka.consumer.topic:save_api_data}"},containerFactory = "kafkaListenerContainerFactory") + //@KafkaListener(topics = {"${kafka.consumer.topic:save_api_data}"},containerFactory = "kafkaListenerContainerFactory") public void consumerApiDataMessage(ConsumerRecord consumerRecord){ try { Optional.ofNullable(consumerRecord.value()).map(String::valueOf).ifPresent(value -> { diff --git a/damai-server/damai-customize-service/src/main/java/com/damai/service/RuleService.java b/damai-server/damai-customize-service/src/main/java/com/damai/service/RuleService.java index 9bb1a82e..2eedcd3b 100644 --- a/damai-server/damai-customize-service/src/main/java/com/damai/service/RuleService.java +++ b/damai-server/damai-customize-service/src/main/java/com/damai/service/RuleService.java @@ -5,7 +5,7 @@ import cn.hutool.core.date.DateUtil; import com.baidu.fsg.uid.UidGenerator; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.damai.core.RedisKeyEnum; +import com.damai.core.RedisKeyManage; import com.damai.dto.RuleDto; import com.damai.dto.RuleGetDto; import com.damai.dto.RuleStatusDto; @@ -16,7 +16,7 @@ import com.damai.enums.RuleStatus; import com.damai.mapper.DepthRuleMapper; import com.damai.mapper.RuleMapper; import com.damai.redis.RedisCache; -import com.damai.redis.RedisKeyWrap; +import com.damai.redis.RedisKeyBuild; import com.damai.vo.RuleVo; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -121,16 +121,16 @@ public class RuleService { LambdaQueryWrapper ruleQueryWrapper = Wrappers.lambdaQuery(Rule.class).eq(Rule::getStatus,RuleStatus.RUN.getCode()); Rule rule = ruleMapper.selectOne(ruleQueryWrapper); if (Optional.ofNullable(rule).isPresent()) { - map.put(RedisKeyWrap.createRedisKey(RedisKeyEnum.RULE).getRelKey(),rule); + map.put(RedisKeyBuild.createRedisKey(RedisKeyManage.RULE).getRelKey(),rule); } LambdaQueryWrapper depthRuleQueryWrapper = Wrappers.lambdaQuery(DepthRule.class).eq(DepthRule::getStatus,RuleStatus.RUN.getCode()); List depthRules = depthRuleMapper.selectList(depthRuleQueryWrapper); if (CollUtil.isNotEmpty(depthRules)) { - map.put(RedisKeyWrap.createRedisKey(RedisKeyEnum.DEPTH_RULE).getRelKey(),depthRules); + map.put(RedisKeyBuild.createRedisKey(RedisKeyManage.DEPTH_RULE).getRelKey(),depthRules); } - redisCache.del(RedisKeyWrap.createRedisKey(RedisKeyEnum.ALL_RULE_HASH)); - if (map.size() > 0 && Objects.nonNull(map.get(RedisKeyWrap.createRedisKey(RedisKeyEnum.RULE).getRelKey()))) { - redisCache.putHash(RedisKeyWrap.createRedisKey(RedisKeyEnum.ALL_RULE_HASH),map); + redisCache.del(RedisKeyBuild.createRedisKey(RedisKeyManage.ALL_RULE_HASH)); + if (map.size() > 0 && Objects.nonNull(map.get(RedisKeyBuild.createRedisKey(RedisKeyManage.RULE).getRelKey()))) { + redisCache.putHash(RedisKeyBuild.createRedisKey(RedisKeyManage.ALL_RULE_HASH),map); } } } diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/filter/RequestValidationFilter.java b/damai-server/damai-gateway-service/src/main/java/com/damai/filter/RequestValidationFilter.java index 2a276c63..c831dbb7 100644 --- a/damai-server/damai-gateway-service/src/main/java/com/damai/filter/RequestValidationFilter.java +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/filter/RequestValidationFilter.java @@ -1,6 +1,7 @@ package com.damai.filter; +import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSON; import com.baidu.fsg.uid.UidGenerator; import com.damai.conf.RequestTemporaryWrapper; @@ -8,15 +9,14 @@ import com.damai.core.StringUtil; import com.damai.enums.BaseCode; import com.damai.exception.ArgumentError; import com.damai.exception.ArgumentException; -import com.damai.exception.CheckCodeHandler; import com.damai.exception.DaMaiFrameException; import com.damai.property.GatewayProperty; import com.damai.service.ApiRestrictService; import com.damai.service.ChannelDataService; import com.damai.service.TokenService; import com.damai.threadlocal.BaseParameterHolder; -import com.damai.util.RsaTool; import com.damai.util.RsaSignTool; +import com.damai.util.RsaTool; import com.damai.vo.GetChannelDataVo; import com.damai.vo.UserVo; import lombok.extern.slf4j.Slf4j; @@ -43,7 +43,6 @@ import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; -import javax.annotation.Resource; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -86,11 +85,9 @@ public class RequestValidationFilter implements GlobalFilter, Ordered { @Autowired private GatewayProperty gatewayProperty; - @Resource - private UidGenerator uidGenerator; @Autowired - private CheckCodeHandler checkCodeHandler; + private UidGenerator uidGenerator; @Override @@ -180,8 +177,6 @@ public class RequestValidationFilter implements GlobalFilter, Ordered { //token token = request.getHeaders().getFirst(TOKEN); - checkCodeHandler.checkCode(code); - GetChannelDataVo channelDataVo = channelDataService.getChannelDataByCode(code); if (StringUtil.isNotEmpty(encrypt) && V2.equals(encrypt)) { @@ -204,7 +199,7 @@ public class RequestValidationFilter implements GlobalFilter, Ordered { } if (!skipCheckTokenResult) { - UserVo userVo = tokenService.getUser(token); + UserVo userVo = tokenService.getUser(token,code,channelDataVo.getTokenSecret()); userId = userVo.getId(); } @@ -233,10 +228,10 @@ public class RequestValidationFilter implements GlobalFilter, Ordered { HttpHeaders newHeaders = new HttpHeaders(); newHeaders.putAll(headers); Map map = requestTemporaryWrapper.getMap(); - if (map != null) { + if (CollectionUtil.isNotEmpty(map)) { newHeaders.setAll(map); } - if (headMap != null) { + if (CollectionUtil.isNotEmpty(headMap)) { newHeaders.setAll(headMap); } if (contentLength > 0){ @@ -244,7 +239,7 @@ public class RequestValidationFilter implements GlobalFilter, Ordered { }else { newHeaders.set(HttpHeaders.TRANSFER_ENCODING,"chunked"); } - if (headMap != null && StringUtil.isNotEmpty(headMap.get(TRACE_ID))) { + if (CollectionUtil.isNotEmpty(headMap) && StringUtil.isNotEmpty(headMap.get(TRACE_ID))) { MDC.put(TRACE_ID,headMap.get(TRACE_ID)); } return newHeaders; @@ -263,12 +258,10 @@ public class RequestValidationFilter implements GlobalFilter, Ordered { } public boolean skipCheckToken(String url){ - if (gatewayProperty.getSkipCheckTokenPaths() != null) { - for (String skipCheckTokenPath : gatewayProperty.getSkipCheckTokenPaths()) { - PathMatcher matcher = new AntPathMatcher(); - if(matcher.match(skipCheckTokenPath, url)){ - return true; - } + for (String skipCheckTokenPath : gatewayProperty.getSkipCheckTokenPaths()) { + PathMatcher matcher = new AntPathMatcher(); + if (matcher.match(skipCheckTokenPath, url)) { + return true; } } return false; diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/filter/ResponseValidationFilter.java b/damai-server/damai-gateway-service/src/main/java/com/damai/filter/ResponseValidationFilter.java index e2f54139..9a9528c3 100644 --- a/damai-server/damai-gateway-service/src/main/java/com/damai/filter/ResponseValidationFilter.java +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/filter/ResponseValidationFilter.java @@ -3,7 +3,6 @@ package com.damai.filter; import com.alibaba.fastjson.JSON; import com.damai.common.ApiResponse; import com.damai.core.StringUtil; -import com.damai.exception.CheckCodeHandler; import com.damai.service.ChannelDataService; import com.damai.util.RsaTool; import com.damai.vo.GetChannelDataVo; @@ -55,11 +54,6 @@ public class ResponseValidationFilter implements GlobalFilter, Ordered { @Autowired private ChannelDataService channelDataService; - - @Autowired - private CheckCodeHandler checkCodeHandler; - - @Override public int getOrder() { @@ -135,9 +129,6 @@ public class ResponseValidationFilter implements GlobalFilter, Ordered { Object data = apiResponse.getData(); if (data != null) { String code = request.getHeaders().getFirst(CODE); - - checkCodeHandler.checkCode(code); - GetChannelDataVo channelDataVo = channelDataService.getChannelDataByCode(code); String rsaEncrypt = RsaTool.encrypt(JSON.toJSONString(data),channelDataVo.getDataPublicKey()); apiResponse.setData(rsaEncrypt); diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/property/GatewayProperty.java b/damai-server/damai-gateway-service/src/main/java/com/damai/property/GatewayProperty.java index d42f1e38..6f785b5d 100644 --- a/damai-server/damai-gateway-service/src/main/java/com/damai/property/GatewayProperty.java +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/property/GatewayProperty.java @@ -9,8 +9,8 @@ import org.springframework.stereotype.Component; * @description: 配置属性 * @author: 阿宽不是程序员 **/ -@Component @Data +@Component public class GatewayProperty { /** * 需要做频率限制的路径 @@ -18,6 +18,6 @@ public class GatewayProperty { @Value("${api.limit.paths:#{null}}") private String[] apiRestrictPaths; - @Value("${skip.check.token.paths:/**/test/test,/**/user/login,/**/token/data/add}") + @Value("${skip.check.token.paths:/**/user/register,/**/user/exist,/**/user/login,/**/token/data/add}") private String[] skipCheckTokenPaths; } diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/service/ApiRestrictService.java b/damai-server/damai-gateway-service/src/main/java/com/damai/service/ApiRestrictService.java index 1d22dc16..9fb4b398 100644 --- a/damai-server/damai-gateway-service/src/main/java/com/damai/service/ApiRestrictService.java +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/service/ApiRestrictService.java @@ -5,7 +5,7 @@ import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baidu.fsg.uid.UidGenerator; -import com.damai.core.RedisKeyEnum; +import com.damai.core.RedisKeyManage; import com.damai.core.StringUtil; import com.damai.dto.ApiDataDto; import com.damai.enums.ApiRuleType; @@ -15,7 +15,7 @@ import com.damai.exception.DaMaiFrameException; import com.damai.kafka.ApiDataMessageSend; import com.damai.property.GatewayProperty; import com.damai.redis.RedisCache; -import com.damai.redis.RedisKeyWrap; +import com.damai.redis.RedisKeyBuild; import com.damai.service.lua.ApiRestrictCacheOperate; import com.damai.util.DateUtils; import com.damai.vo.DepthRuleVo; @@ -91,9 +91,9 @@ public class ApiRestrictService { try { List depthRuleVoList = new ArrayList<>(); - RuleVo ruleVo = redisCache.getForHash(RedisKeyWrap.createRedisKey(RedisKeyEnum.ALL_RULE_HASH),RedisKeyWrap.createRedisKey(RedisKeyEnum.RULE).getRelKey(),RuleVo.class); + RuleVo ruleVo = redisCache.getForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.ALL_RULE_HASH), RedisKeyBuild.createRedisKey(RedisKeyManage.RULE).getRelKey(),RuleVo.class); - String depthRuleStr = redisCache.getForHash(RedisKeyWrap.createRedisKey(RedisKeyEnum.ALL_RULE_HASH),RedisKeyWrap.createRedisKey(RedisKeyEnum.DEPTH_RULE).getRelKey(),String.class); + String depthRuleStr = redisCache.getForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.ALL_RULE_HASH), RedisKeyBuild.createRedisKey(RedisKeyManage.DEPTH_RULE).getRelKey(),String.class); if (StringUtil.isNotEmpty(depthRuleStr)) { depthRuleVoList = JSON.parseArray(depthRuleStr,DepthRuleVo.class); } @@ -165,9 +165,9 @@ public class ApiRestrictService { parameter.put("effectiveTime",String.valueOf(Objects.equals(ruleVo.getEffectiveTimeType(), RuleTimeUnit.SECOND.getCode()) ? ruleVo.getEffectiveTime() : ruleVo.getEffectiveTime() * 60)); - parameter.put("ruleLimitKey",RedisKeyWrap.createRedisKey(RedisKeyEnum.RULE_LIMIT,commonKey).getRelKey()); + parameter.put("ruleLimitKey", RedisKeyBuild.createRedisKey(RedisKeyManage.RULE_LIMIT,commonKey).getRelKey()); - parameter.put("zSetRuleStatKey",RedisKeyWrap.createRedisKey(RedisKeyEnum.Z_SET_RULE_STAT,commonKey).getRelKey()); + parameter.put("zSetRuleStatKey", RedisKeyBuild.createRedisKey(RedisKeyManage.Z_SET_RULE_STAT,commonKey).getRelKey()); return parameter; } @@ -190,7 +190,7 @@ public class ApiRestrictService { depthRule.put("effectiveTime",String.valueOf(Objects.equals(depthRuleVo.getEffectiveTimeType(), RuleTimeUnit.SECOND.getCode()) ? depthRuleVo.getEffectiveTime() : depthRuleVo.getEffectiveTime() * 60)); - depthRule.put("depthRuleLimit",RedisKeyWrap.createRedisKey(RedisKeyEnum.DEPTH_RULE_LIMIT,i,commonKey).getRelKey()); + depthRule.put("depthRuleLimit", RedisKeyBuild.createRedisKey(RedisKeyManage.DEPTH_RULE_LIMIT,i,commonKey).getRelKey()); depthRule.put("startTimeWindowTimestamp",depthRuleVo.getStartTimeWindowTimestamp()); depthRule.put("endTimeWindowTimestamp",depthRuleVo.getEndTimeWindowTimestamp()); diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/service/ChannelDataService.java b/damai-server/damai-gateway-service/src/main/java/com/damai/service/ChannelDataService.java index 2a0c9376..bfcef192 100644 --- a/damai-server/damai-gateway-service/src/main/java/com/damai/service/ChannelDataService.java +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/service/ChannelDataService.java @@ -2,18 +2,25 @@ package com.damai.service; import com.damai.client.BaseDataClient; import com.damai.common.ApiResponse; -import com.damai.core.RedisKeyEnum; +import com.damai.core.RedisKeyManage; +import com.damai.core.StringUtil; import com.damai.dto.GetChannelDataByCodeDto; import com.damai.enums.BaseCode; +import com.damai.exception.ArgumentError; +import com.damai.exception.ArgumentException; import com.damai.exception.DaMaiFrameException; import com.damai.redis.RedisCache; -import com.damai.redis.RedisKeyWrap; +import com.damai.redis.RedisKeyBuild; import com.damai.vo.GetChannelDataVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; +import static com.damai.constant.GatewayConstant.CODE; + /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 * @description: 渠道数据获取 @@ -21,6 +28,8 @@ import java.util.Objects; **/ @Service public class ChannelDataService { + + private final static String EXCEPTION_MESSAGE = "code参数为空"; @Autowired private BaseDataClient baseDataClient; @@ -28,7 +37,19 @@ public class ChannelDataService { @Autowired private RedisCache redisCache; + public void checkCode(String code){ + if (StringUtil.isEmpty(code)) { + ArgumentError argumentError = new ArgumentError(); + argumentError.setArgumentName(CODE); + argumentError.setMessage(EXCEPTION_MESSAGE); + List argumentErrorList = new ArrayList<>(); + argumentErrorList.add(argumentError); + throw new ArgumentException(BaseCode.ARGUMENT_EMPTY.getCode(),argumentErrorList); + } + } + public GetChannelDataVo getChannelDataByCode(String code){ + checkCode(code); GetChannelDataVo channelDataVo = getChannelDataByRedis(code); if (Objects.isNull(channelDataVo)) { channelDataVo = getChannelDataByClient(code); @@ -37,7 +58,7 @@ public class ChannelDataService { } private GetChannelDataVo getChannelDataByRedis(String code){ - return redisCache.get(RedisKeyWrap.createRedisKey(RedisKeyEnum.CHANNEL_DATA,code),GetChannelDataVo.class); + return redisCache.get(RedisKeyBuild.createRedisKey(RedisKeyManage.CHANNEL_DATA,code),GetChannelDataVo.class); } private GetChannelDataVo getChannelDataByClient(String code){ diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/service/TokenService.java b/damai-server/damai-gateway-service/src/main/java/com/damai/service/TokenService.java index 65ceab05..503c5b5d 100644 --- a/damai-server/damai-gateway-service/src/main/java/com/damai/service/TokenService.java +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/service/TokenService.java @@ -1,13 +1,13 @@ package com.damai.service; import com.alibaba.fastjson.JSONObject; -import com.damai.core.RedisKeyEnum; +import com.damai.core.RedisKeyManage; import com.damai.core.StringUtil; import com.damai.enums.BaseCode; import com.damai.exception.DaMaiFrameException; import com.damai.jwt.TokenUtil; import com.damai.redis.RedisCache; -import com.damai.redis.RedisKeyWrap; +import com.damai.redis.RedisKeyBuild; import com.damai.vo.UserVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -23,24 +23,22 @@ import java.util.Optional; @Component public class TokenService { - private static final String TOKEN_SECRET = "CSYZWECHAT"; - @Autowired private RedisCache redisCache; - public String parseToken(String token){ - String userStr = TokenUtil.parseToken(token,TOKEN_SECRET); + public String parseToken(String token,String tokenSecret){ + String userStr = TokenUtil.parseToken(token,tokenSecret); if (StringUtil.isNotEmpty(userStr)) { return JSONObject.parseObject(userStr).getString("userId"); } return null; } - public UserVo getUser(String token){ + public UserVo getUser(String token,String code,String tokenSecret){ UserVo userVo = null; - String userId = parseToken(token); + String userId = parseToken(token,tokenSecret); if (StringUtil.isNotEmpty(userId)) { - userVo = redisCache.get(RedisKeyWrap.createRedisKey(RedisKeyEnum.USER_ID, userId), UserVo.class); + userVo = redisCache.get(RedisKeyBuild.createRedisKey(RedisKeyManage.USER_LOGIN, code, userId), UserVo.class); } return Optional.ofNullable(userVo).orElseThrow(() -> new DaMaiFrameException(BaseCode.USER_EMPTY)); } diff --git a/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml b/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml index 3394b0f3..4eab2ed6 100644 --- a/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml +++ b/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml @@ -4,8 +4,8 @@ server: # 应用名称 spring: application: - name: ${prefix.distinction.name:damai}-gateway-service - #name: ${prefix.distinction.name:damai}-gateway-single-service + #name: ${prefix.distinction.name:damai}-gateway-service + name: ${prefix.distinction.name:damai}-gateway-single-service cloud: nacos: discovery: diff --git a/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java b/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java index 1c8461eb..adc51008 100644 --- a/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java +++ b/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java @@ -13,7 +13,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.damai.client.PayClient; import com.damai.client.UserClient; import com.damai.common.ApiResponse; -import com.damai.core.RedisKeyEnum; +import com.damai.core.RedisKeyManage; import com.damai.dto.NotifyDto; import com.damai.dto.OrderCancelDto; import com.damai.dto.OrderCreateDto; @@ -38,7 +38,7 @@ import com.damai.exception.DaMaiFrameException; import com.damai.mapper.OrderMapper; import com.damai.mapper.OrderTicketUserMapper; import com.damai.redis.RedisCache; -import com.damai.redis.RedisKeyWrap; +import com.damai.redis.RedisKeyBuild; import com.damai.service.delaysend.DelayOperateProgramDataSend; import com.damai.service.properties.OrderProperties; import com.damai.servicelock.annotion.ServiceLock; @@ -318,7 +318,7 @@ public class OrderService extends ServiceImpl { public void updateProgramRelatedData(Long programId,List seatIdList,OrderStatus orderStatus){ //从redis中查询锁定中的座位 - List seatVoList = redisCache.multiGetForHash(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SEAT_LOCK_HASH, programId), seatIdList, SeatVo.class); + List seatVoList = redisCache.multiGetForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_LOCK_HASH, programId), seatIdList, SeatVo.class); if (CollectionUtil.isEmpty(seatVoList)) { throw new DaMaiFrameException(BaseCode.LOCK_SEAT_LIST_EMPTY); } @@ -341,7 +341,7 @@ public class OrderService extends ServiceImpl { //操作类型 keys.add(String.valueOf(orderStatus.getCode())); //锁定座位的key - keys.add(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SEAT_LOCK_HASH, programId).getRelKey()); + keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_LOCK_HASH, programId).getRelKey()); Object[] data = new String[3]; //扣除锁定的座位数据 @@ -362,14 +362,14 @@ public class OrderService extends ServiceImpl { if (Objects.equals(orderStatus.getCode(), OrderStatus.CANCEL.getCode())) { //没有售卖座位的key - keys.add(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SEAT_NO_SOLD_HASH, programId).getRelKey()); + keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_NO_SOLD_HASH, programId).getRelKey()); //恢复库存的key - keys.add(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_TICKET_REMAIN_NUMBER_HASH, programId).getRelKey()); + keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_TICKET_REMAIN_NUMBER_HASH, programId).getRelKey()); //恢复库存数据 data[2] = JSON.toJSONString(jsonArray); }else if (Objects.equals(orderStatus.getCode(), OrderStatus.PAY.getCode())) { //已售卖座位的key - keys.add(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SEAT_SOLD_HASH, programId).getRelKey()); + keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_SOLD_HASH, programId).getRelKey()); } orderProgramCacheOperate.programCacheReverseOperate(keys,data); diff --git a/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramController.java b/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramController.java index 4f44b6e6..4bcd4c06 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramController.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramController.java @@ -64,14 +64,4 @@ public class ProgramController { public ApiResponse getDetail(@Valid @RequestBody ProgramGetDto programGetDto) { return ApiResponse.ok(programService.getDetail(programGetDto)); } - - @PostMapping(value = "/es/index/add") - public ApiResponse indexAdd(@Valid @RequestBody ProgramGetDto programGetDto) { - programService.indexAdd(programGetDto); - return ApiResponse.ok(); - } - @PostMapping(value = "/es/data/add") - public ApiResponse dataAdd(@Valid @RequestBody ProgramGetDto programGetDto) { - return ApiResponse.ok(programService.dataAdd(programGetDto)); - } } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramCategoryService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramCategoryService.java index 68bf393b..674f68d6 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramCategoryService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramCategoryService.java @@ -8,13 +8,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.damai.core.RedisKeyEnum; +import com.damai.core.RedisKeyManage; import com.damai.dto.ProgramCategoryAddDto; import com.damai.dto.ProgramCategoryDto; import com.damai.entity.ProgramCategory; import com.damai.mapper.ProgramCategoryMapper; import com.damai.redis.RedisCache; -import com.damai.redis.RedisKeyWrap; +import com.damai.redis.RedisKeyBuild; import com.damai.servicelock.LockType; import com.damai.servicelock.annotion.ServiceLock; import com.damai.vo.ProgramCategoryVo; @@ -72,7 +72,7 @@ public class ProgramCategoryService extends ServiceImpl programCategoryMap = programCategoryList.stream().collect( Collectors.toMap(p -> String.valueOf(p.getId()), p -> p, (v1, v2) -> v2)); - redisCache.putHash(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_CATEGORY_HASH),programCategoryMap); + redisCache.putHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_CATEGORY_HASH),programCategoryMap); } } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java index 6d8a4851..b2418097 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java @@ -8,7 +8,7 @@ import com.baidu.fsg.uid.UidGenerator; import com.damai.client.OrderClient; import com.damai.common.ApiResponse; import com.damai.composite.CompositeContainer; -import com.damai.core.RedisKeyEnum; +import com.damai.core.RedisKeyManage; import com.damai.dto.DelayOrderCancelDto; import com.damai.dto.OrderCreateDto; import com.damai.dto.OrderTicketUserCreateDto; @@ -21,7 +21,7 @@ import com.damai.enums.OrderStatus; import com.damai.enums.SellStatus; import com.damai.exception.DaMaiFrameException; import com.damai.redis.RedisCache; -import com.damai.redis.RedisKeyWrap; +import com.damai.redis.RedisKeyBuild; import com.damai.service.delaysend.DelayOrderCancelSend; import com.damai.service.lua.ProgramCacheCreateOrderData; import com.damai.service.lua.ProgramCacheCreateOrderOperate; @@ -88,9 +88,9 @@ public class ProgramOrderService { List purchaseSeatList = new ArrayList<>(); List seatDtoList = programOrderCreateDto.getSeatDtoList(); //该节目下所有未售卖的座位 - List seatVoList = redisCache.getAllForHash(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SEAT_NO_SOLD_HASH, programOrderCreateDto.getProgramId()), SeatVo.class); + List seatVoList = redisCache.getAllForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_NO_SOLD_HASH, programOrderCreateDto.getProgramId()), SeatVo.class); //该节目下的余票数量 - Map ticketCategoryRemainNumber = redisCache.getAllMapForHash(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_TICKET_REMAIN_NUMBER_HASH, programOrderCreateDto.getProgramId()), Long.class); + Map ticketCategoryRemainNumber = redisCache.getAllMapForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_TICKET_REMAIN_NUMBER_HASH, programOrderCreateDto.getProgramId()), Long.class); //入参座位存在 if (CollectionUtil.isNotEmpty(seatDtoList)) { //余票数量检测 @@ -158,11 +158,11 @@ public class ProgramOrderService { List seatDtoList = programOrderCreateDto.getSeatDtoList(); List keys = new ArrayList<>(); //票档数量的key - keys.add(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_TICKET_REMAIN_NUMBER_HASH, programId).getRelKey()); + keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_TICKET_REMAIN_NUMBER_HASH, programId).getRelKey()); //没有售卖的座位key - keys.add(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SEAT_NO_SOLD_HASH, programId).getRelKey()); + keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_NO_SOLD_HASH, programId).getRelKey()); //锁定的座位key - keys.add(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SEAT_LOCK_HASH, programId).getRelKey()); + keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_LOCK_HASH, programId).getRelKey()); String[] data = new String[2]; //入参座位存在 JSONArray jsonArray = new JSONArray(); @@ -205,9 +205,9 @@ public class ProgramOrderService { private String doCreate(ProgramOrderCreateDto programOrderCreateDto,List purchaseSeatList){ Long programId = programOrderCreateDto.getProgramId(); //获取要购买的节目信息 - ProgramVo programVo = redisCache.get(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM, programId), ProgramVo.class); + ProgramVo programVo = redisCache.get(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM, programId), ProgramVo.class); //查询节目演出时间 - ProgramShowTime programShowTime = redisCache.get(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SHOW_TIME + ProgramShowTime programShowTime = redisCache.get(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SHOW_TIME ,programId),ProgramShowTime.class); //主订单参数构建 OrderCreateDto orderCreateDto = new OrderCreateDto(); @@ -283,7 +283,7 @@ public class ProgramOrderService { }); List keys = new ArrayList<>(); //票档数量的key - keys.add(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_TICKET_REMAIN_NUMBER_HASH, programId).getRelKey()); + keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_TICKET_REMAIN_NUMBER_HASH, programId).getRelKey()); String[] data = new String[3]; //根据座位集合统计出对应的票档数量 @@ -312,14 +312,14 @@ public class ProgramOrderService { data[2] = JSON.toJSONString(seatDataList); if (Objects.equals(orderStatus.getCode(), OrderStatus.NO_PAY.getCode())) { //没有售卖座位的key - keys.add(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SEAT_NO_SOLD_HASH, programId).getRelKey()); + keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_NO_SOLD_HASH, programId).getRelKey()); //锁定座位的key - keys.add(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SEAT_LOCK_HASH, programId).getRelKey()); + keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_LOCK_HASH, programId).getRelKey()); } else if (Objects.equals(orderStatus.getCode(), OrderStatus.CANCEL.getCode())) { //锁定座位的key - keys.add(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SEAT_LOCK_HASH, programId).getRelKey()); + keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_LOCK_HASH, programId).getRelKey()); //没有售卖座位的key - keys.add(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SEAT_NO_SOLD_HASH, programId).getRelKey()); + keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_NO_SOLD_HASH, programId).getRelKey()); } programCacheOperate.programCacheOperate(keys,data); diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java index 308e0c30..ff2dc29b 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java @@ -11,7 +11,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.damai.client.BaseDataClient; import com.damai.common.ApiResponse; -import com.damai.core.RedisKeyEnum; +import com.damai.core.RedisKeyManage; import com.damai.core.SpringUtil; import com.damai.dto.AreaGetDto; import com.damai.dto.AreaSelectDto; @@ -41,7 +41,7 @@ import com.damai.mapper.TicketCategoryMapper; import com.damai.page.PageUtil; import com.damai.page.PageVo; import com.damai.redis.RedisCache; -import com.damai.redis.RedisKeyWrap; +import com.damai.redis.RedisKeyBuild; import com.damai.service.init.ProgramDocumentParamName; import com.damai.service.pagestrategy.SelectPageWrapper; import com.damai.servicelock.LockType; @@ -58,9 +58,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.bind.annotation.RequestBody; -import javax.validation.Valid; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -278,7 +276,7 @@ public class ProgramService extends ServiceImpl { ProgramVo redisProgramVo = programService.getById(programGetDto.getId()); //查询节目类型 - ProgramCategory programCategory = redisCache.getForHash(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_CATEGORY_HASH) + ProgramCategory programCategory = redisCache.getForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_CATEGORY_HASH) ,String.valueOf(redisProgramVo.getProgramCategoryId()),ProgramCategory.class); if (Objects.nonNull(programCategory)) { redisProgramVo.setProgramCategoryName(programCategory.getName()); @@ -307,7 +305,7 @@ public class ProgramService extends ServiceImpl { @ServiceLock(lockType= LockType.Read,name = PROGRAM_LOCK,keys = {"#programId"}) public ProgramVo getById(Long programId) { - return redisCache.get(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM,programId),ProgramVo.class,() -> { + return redisCache.get(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM,programId),ProgramVo.class,() -> { ProgramVo programVo = new ProgramVo(); //根据id查询到节目 Program program = Optional.ofNullable(programMapper.selectById(programId)).orElseThrow(() -> new DaMaiFrameException(BaseCode.PROGRAM_NOT_EXIST)); @@ -410,7 +408,7 @@ public class ProgramService extends ServiceImpl { } //查询节目类型 - ProgramCategory programCategory = redisCache.getForHash(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_CATEGORY_HASH) + ProgramCategory programCategory = redisCache.getForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_CATEGORY_HASH) ,String.valueOf(programVo.getProgramCategoryId()),ProgramCategory.class); if (Objects.nonNull(programCategory)) { programVo.setProgramCategoryName(programCategory.getName()); @@ -429,12 +427,4 @@ public class ProgramService extends ServiceImpl { return programVo; } - - public void indexAdd(@Valid @RequestBody ProgramGetDto programGetDto) { - - } - - public ProgramVo dataAdd(@Valid @RequestBody ProgramGetDto programGetDto) { - return null; - } } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramShowTimeService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramShowTimeService.java index 025e8a59..35ff67e7 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramShowTimeService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramShowTimeService.java @@ -7,14 +7,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.damai.core.RedisKeyEnum; +import com.damai.core.RedisKeyManage; import com.damai.dto.ProgramShowTimeAddDto; import com.damai.entity.ProgramShowTime; import com.damai.enums.BaseCode; import com.damai.exception.DaMaiFrameException; import com.damai.mapper.ProgramShowTimeMapper; import com.damai.redis.RedisCache; -import com.damai.redis.RedisKeyWrap; +import com.damai.redis.RedisKeyBuild; import com.damai.util.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -61,7 +61,7 @@ public class ProgramShowTimeService extends ServiceImpl { + return redisCache.get(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SHOW_TIME,programId),ProgramShowTime.class,() -> { LambdaQueryWrapper programShowTimeLambdaQueryWrapper = Wrappers.lambdaQuery(ProgramShowTime.class).eq(ProgramShowTime::getProgramId, programId); return Optional.ofNullable(programShowTimeMapper.selectOne(programShowTimeLambdaQueryWrapper)) @@ -86,7 +86,7 @@ public class ProgramShowTimeService extends ServiceImpl programShowTimeLambdaUpdateWrapper = Wrappers.lambdaUpdate(ProgramShowTime.class).eq(ProgramShowTime::getProgramId, programShowTime.getProgramId()); programShowTimeMapper.update(updateProgramShowTime,programShowTimeLambdaUpdateWrapper); - redisCache.set(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SHOW_TIME,programShowTime.getProgramId()) + redisCache.set(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SHOW_TIME,programShowTime.getProgramId()) ,updateProgramShowTime,EXPIRE_TIME, TimeUnit.DAYS); } } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/SeatService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/SeatService.java index dfe8bdba..01152440 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/SeatService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/SeatService.java @@ -6,7 +6,7 @@ import com.baidu.fsg.uid.UidGenerator; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.damai.core.RedisKeyEnum; +import com.damai.core.RedisKeyManage; import com.damai.dto.SeatAddDto; import com.damai.entity.Seat; import com.damai.enums.BaseCode; @@ -15,7 +15,7 @@ import com.damai.enums.SellStatus; import com.damai.exception.DaMaiFrameException; import com.damai.mapper.SeatMapper; import com.damai.redis.RedisCache; -import com.damai.redis.RedisKeyWrap; +import com.damai.redis.RedisKeyBuild; import com.damai.vo.SeatVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -71,9 +71,9 @@ public class SeatService extends ServiceImpl { * */ public List selectSeatByProgramId(Long programId) { List seatVoList = new ArrayList<>(); - if ((!redisCache.hasKey(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SEAT_NO_SOLD_HASH, programId))) && - (!redisCache.hasKey(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SEAT_LOCK_HASH, programId))) && - (!redisCache.hasKey(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SEAT_SOLD_HASH, programId)))) { + if ((!redisCache.hasKey(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_NO_SOLD_HASH, programId))) && + (!redisCache.hasKey(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_LOCK_HASH, programId))) && + (!redisCache.hasKey(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_SOLD_HASH, programId)))) { LambdaQueryWrapper seatLambdaQueryWrapper = Wrappers.lambdaQuery(Seat.class).eq(Seat::getProgramId, programId); List seats = seatMapper.selectList(seatLambdaQueryWrapper); for (Seat seat : seats) { @@ -87,24 +87,24 @@ public class SeatService extends ServiceImpl { List lockSeatVoList = seatMap.get(SellStatus.LOCK.getCode()); List soldSeatVoList = seatMap.get(SellStatus.SOLD.getCode()); if (CollectionUtil.isNotEmpty(noSoldSeatVoList)) { - redisCache.putHash(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SEAT_NO_SOLD_HASH, programId) + redisCache.putHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_NO_SOLD_HASH, programId) ,noSoldSeatVoList.stream().collect(Collectors.toMap(s -> String.valueOf(s.getId()),s -> s,(v1,v2) -> v2)) ,EXPIRE_TIME, TimeUnit.DAYS); } if (CollectionUtil.isNotEmpty(lockSeatVoList)) { - redisCache.putHash(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SEAT_LOCK_HASH, programId) + redisCache.putHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_LOCK_HASH, programId) ,lockSeatVoList.stream().collect(Collectors.toMap(s -> String.valueOf(s.getId()),s -> s,(v1,v2) -> v2)) ,EXPIRE_TIME, TimeUnit.DAYS); } if (CollectionUtil.isNotEmpty(soldSeatVoList)) { - redisCache.putHash(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SEAT_SOLD_HASH, programId) + redisCache.putHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_SOLD_HASH, programId) ,soldSeatVoList.stream().collect(Collectors.toMap(s -> String.valueOf(s.getId()),s -> s,(v1,v2) -> v2)) ,EXPIRE_TIME, TimeUnit.DAYS); } }else { - seatVoList = redisCache.getAllForHash(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SEAT_NO_SOLD_HASH, programId),SeatVo.class); - seatVoList.addAll(redisCache.getAllForHash(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SEAT_LOCK_HASH, programId),SeatVo.class)); - seatVoList.addAll(redisCache.getAllForHash(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_SEAT_SOLD_HASH, programId),SeatVo.class)); + seatVoList = redisCache.getAllForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_NO_SOLD_HASH, programId),SeatVo.class); + seatVoList.addAll(redisCache.getAllForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_LOCK_HASH, programId),SeatVo.class)); + seatVoList.addAll(redisCache.getAllForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_SOLD_HASH, programId),SeatVo.class)); seatVoList = seatVoList.stream().sorted(Comparator.comparingInt(SeatVo::getRowCode) .thenComparingInt(SeatVo::getColCode)).collect(Collectors.toList()); } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/TicketCategoryService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/TicketCategoryService.java index eff6667e..56ac0745 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/TicketCategoryService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/TicketCategoryService.java @@ -6,12 +6,12 @@ import com.baidu.fsg.uid.UidGenerator; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.damai.core.RedisKeyEnum; +import com.damai.core.RedisKeyManage; import com.damai.dto.TicketCategoryAddDto; import com.damai.entity.TicketCategory; import com.damai.mapper.TicketCategoryMapper; import com.damai.redis.RedisCache; -import com.damai.redis.RedisKeyWrap; +import com.damai.redis.RedisKeyBuild; import com.damai.vo.TicketCategoryVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -51,7 +51,7 @@ public class TicketCategoryService extends ServiceImpl selectTicketCategoryListByProgramId(Long programId){ - return redisCache.getValueIsList(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_TICKET_CATEGORY_LIST, programId), TicketCategoryVo.class, () -> { + return redisCache.getValueIsList(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_TICKET_CATEGORY_LIST, programId), TicketCategoryVo.class, () -> { LambdaQueryWrapper ticketCategoryLambdaQueryWrapper = Wrappers.lambdaQuery(TicketCategory.class) .eq(TicketCategory::getProgramId, programId); List ticketCategoryList = ticketCategoryMapper.selectList(ticketCategoryLambdaQueryWrapper); @@ -68,14 +68,14 @@ public class TicketCategoryService extends ServiceImpl ticketCategoryLambdaQueryWrapper = Wrappers.lambdaQuery(TicketCategory.class) .eq(TicketCategory::getProgramId, programId); List ticketCategoryList = ticketCategoryMapper.selectList(ticketCategoryLambdaQueryWrapper); Map map = ticketCategoryList.stream().collect(Collectors.toMap(t -> String.valueOf(t.getId()), TicketCategory::getRemainNumber, (v1, v2) -> v2)); - redisCache.putHash(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_TICKET_REMAIN_NUMBER_HASH, programId),map); + redisCache.putHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_TICKET_REMAIN_NUMBER_HASH, programId),map); } } } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/ProgramExistCheckHandler.java b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/ProgramExistCheckHandler.java index 00e6fb32..9a3e1f5c 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/ProgramExistCheckHandler.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/ProgramExistCheckHandler.java @@ -1,13 +1,13 @@ package com.damai.service.composite; import com.damai.composite.AbstractComposite; -import com.damai.core.RedisKeyEnum; +import com.damai.core.RedisKeyManage; import com.damai.dto.ProgramOrderCreateDto; import com.damai.enums.BaseCode; import com.damai.enums.CompositeCheckType; import com.damai.exception.DaMaiFrameException; import com.damai.redis.RedisCache; -import com.damai.redis.RedisKeyWrap; +import com.damai.redis.RedisKeyBuild; import com.damai.vo.ProgramVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -27,7 +27,7 @@ public class ProgramExistCheckHandler extends AbstractComposite programCategoryMap = programCategoryList.stream().collect( Collectors.toMap(p -> String.valueOf(p.getId()), p -> p, (v1, v2) -> v2)); - redisCache.putHash(RedisKeyWrap.createRedisKey(RedisKeyEnum.PROGRAM_CATEGORY_HASH),programCategoryMap); + redisCache.putHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_CATEGORY_HASH),programCategoryMap); } } } diff --git a/damai-server/damai-user-service/src/main/java/com/damai/controller/UserController.java b/damai-server/damai-user-service/src/main/java/com/damai/controller/UserController.java index f72d6085..483b32c8 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/controller/UserController.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/controller/UserController.java @@ -6,6 +6,7 @@ import com.damai.dto.UserExistDto; import com.damai.dto.UserGetAndTicketUserListDto; import com.damai.dto.UserIdDto; import com.damai.dto.UserLoginDto; +import com.damai.dto.UserLogoutDto; import com.damai.dto.UserMobileDto; import com.damai.dto.UserRegisterDto; import com.damai.dto.UserUpdateDto; @@ -72,8 +73,8 @@ public class UserController { @ApiOperation(value = "退出登录") @PostMapping(value = "/logout") - public ApiResponse logout(@Valid @RequestBody UserIdDto userIdDto) { - userService.logout(userIdDto); + public ApiResponse logout(@Valid @RequestBody UserLogoutDto userLogoutDto) { + userService.logout(userLogoutDto); return ApiResponse.ok(); } diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/TokenService.java b/damai-server/damai-user-service/src/main/java/com/damai/service/TokenService.java index f887511f..eeb4cfc3 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/TokenService.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/TokenService.java @@ -1,13 +1,13 @@ package com.damai.service; import com.alibaba.fastjson.JSONObject; -import com.damai.core.RedisKeyEnum; +import com.damai.core.RedisKeyManage; import com.damai.core.StringUtil; import com.damai.enums.BaseCode; import com.damai.exception.DaMaiFrameException; import com.damai.jwt.TokenUtil; import com.damai.redis.RedisCache; -import com.damai.redis.RedisKeyWrap; +import com.damai.redis.RedisKeyBuild; import com.damai.vo.UserVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -40,7 +40,7 @@ public class TokenService { UserVo userVo = null; String userId = parseToken(token); if (StringUtil.isNotEmpty(userId)) { - userVo = redisCache.get(RedisKeyWrap.createRedisKey(RedisKeyEnum.USER_ID, userId), UserVo.class); + userVo = redisCache.get(RedisKeyBuild.createRedisKey(RedisKeyManage.USER_LOGIN, userId), UserVo.class); } return Optional.ofNullable(userVo).orElseThrow(() -> new DaMaiFrameException(BaseCode.USER_EMPTY)); } diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java b/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java index 63517238..25d05349 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java @@ -7,14 +7,18 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.damai.client.BaseDataClient; +import com.damai.common.ApiResponse; import com.damai.composite.CompositeContainer; -import com.damai.core.RedisKeyEnum; +import com.damai.core.RedisKeyManage; import com.damai.core.StringUtil; +import com.damai.dto.GetChannelDataByCodeDto; import com.damai.dto.UserAuthenticationDto; import com.damai.dto.UserExistDto; import com.damai.dto.UserGetAndTicketUserListDto; import com.damai.dto.UserIdDto; import com.damai.dto.UserLoginDto; +import com.damai.dto.UserLogoutDto; import com.damai.dto.UserMobileDto; import com.damai.dto.UserRegisterDto; import com.damai.dto.UserUpdateDto; @@ -35,10 +39,11 @@ import com.damai.mapper.UserEmailMapper; import com.damai.mapper.UserMapper; import com.damai.mapper.UserMobileMapper; import com.damai.redis.RedisCache; -import com.damai.redis.RedisKeyWrap; +import com.damai.redis.RedisKeyBuild; import com.damai.servicelock.LockType; import com.damai.servicelock.annotion.ServiceLock; import com.damai.util.BloomFilterHandler; +import com.damai.vo.GetChannelDataVo; import com.damai.vo.TicketUserVo; import com.damai.vo.UserGetAndTicketUserListVo; import com.damai.vo.UserVo; @@ -66,8 +71,6 @@ import static com.damai.core.DistributedLockConstants.REGISTER_USER_LOCK; @Service public class UserService extends ServiceImpl { - private static final String TOKEN_SECRET = "CSYZWECHAT"; - @Autowired private UserMapper userMapper; @@ -92,7 +95,10 @@ public class UserService extends ServiceImpl { @Autowired private CompositeContainer compositeContainer; - @Value("${token.expire.time:86400000}") + @Autowired + private BaseDataClient baseDataClient; + + @Value("${token.expire.time:20}") private Long tokenExpireTime; @Transactional(rollbackFor = Exception.class) @@ -131,8 +137,10 @@ public class UserService extends ServiceImpl { } public String login(UserLoginDto userLoginDto) { + String code = userLoginDto.getCode(); String mobile = userLoginDto.getMobile(); String email = userLoginDto.getEmail(); + String password = userLoginDto.getPassword(); if (StringUtil.isEmpty(mobile) && StringUtil.isEmpty(email)) { throw new DaMaiFrameException(BaseCode.USER_MOBILE_AND_EMAIL_NOT_EXIST); } @@ -155,30 +163,54 @@ public class UserService extends ServiceImpl { userId = userEmail.getUserId(); } - Boolean loginResult = redisCache.hasKey(RedisKeyWrap.createRedisKey(RedisKeyEnum.USER_ID,userId)); + Boolean loginResult = redisCache.hasKey(RedisKeyBuild.createRedisKey(RedisKeyManage.USER_LOGIN,code,userId)); if (loginResult) { throw new DaMaiFrameException(BaseCode.USER_LOG_IN); } - User user = userMapper.selectById(userId); + LambdaQueryWrapper queryUserWrapper = Wrappers.lambdaQuery(User.class) + .eq(User::getId, userId).eq(User::getPassword, password); + User user = userMapper.selectOne(queryUserWrapper); if (Objects.isNull(user)) { - throw new DaMaiFrameException(BaseCode.USER_EMPTY); + throw new DaMaiFrameException(BaseCode.NAME_PASSWORD_ERROR); + } + redisCache.set(RedisKeyBuild.createRedisKey(RedisKeyManage.USER_LOGIN,code,user.getId()),user, + tokenExpireTime,TimeUnit.MINUTES); + return createToken(user.getId(),getChannelDataByCode(code).getTokenSecret()); + } + private GetChannelDataVo getChannelDataByCode(String code){ + GetChannelDataVo channelDataVo = getChannelDataByRedis(code); + if (Objects.isNull(channelDataVo)) { + channelDataVo = getChannelDataByClient(code); } - redisCache.set(RedisKeyWrap.createRedisKey(RedisKeyEnum.USER_ID,user.getId()),user,tokenExpireTime + 1000,TimeUnit.MILLISECONDS); - return createToken(user.getId()); + return channelDataVo; } - public String createToken(Long userId){ + private GetChannelDataVo getChannelDataByRedis(String code){ + return redisCache.get(RedisKeyBuild.createRedisKey(RedisKeyManage.CHANNEL_DATA,code),GetChannelDataVo.class); + } + + private GetChannelDataVo getChannelDataByClient(String code){ + GetChannelDataByCodeDto getChannelDataByCodeDto = new GetChannelDataByCodeDto(); + getChannelDataByCodeDto.setCode(code); + ApiResponse getChannelDataApiResponse = baseDataClient.getByCode(getChannelDataByCodeDto); + if (Objects.equals(getChannelDataApiResponse.getCode(), BaseCode.SUCCESS.getCode())) { + return getChannelDataApiResponse.getData(); + } + throw new DaMaiFrameException("没有找到ChannelData"); + } + + public String createToken(Long userId,String tokenSecret){ Map map = new HashMap<>(4); map.put("userId",userId); - return TokenUtil.createToken(String.valueOf(uidGenerator.getUid()), JSON.toJSONString(map),tokenExpireTime,TOKEN_SECRET); + return TokenUtil.createToken(String.valueOf(uidGenerator.getUid()), JSON.toJSONString(map),tokenExpireTime * 60 * 1000,tokenSecret); } - public void logout(UserIdDto userIdDto) { - User user = userMapper.selectById(userIdDto.getId()); + public void logout(UserLogoutDto userLogoutDto) { + User user = userMapper.selectById(userLogoutDto.getId()); if (Objects.isNull(user)) { throw new DaMaiFrameException(BaseCode.USER_EMPTY); } - redisCache.del(RedisKeyWrap.createRedisKey(RedisKeyEnum.USER_ID,user.getId())); + redisCache.del(RedisKeyBuild.createRedisKey(RedisKeyManage.USER_LOGIN,userLogoutDto.getCode(),user.getId())); } @Transactional(rollbackFor = Exception.class) public void update(UserUpdateDto userUpdateDto){ diff --git a/pom.xml b/pom.xml index c059a0cc..8d6973de 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,11 @@ pom ${project.artifactId} - 大麦网 + + 诚意推荐 真实还原生产环境的微服务企业级高并发项目 + SpringBoot + SpringCloudAlibaba + 多线程 + Redis + Kafka + ELK + Docker + Sentinel 等技术 + 包括完整的各种组件配置、高并发下的支付订单解决方案、使用设计模式进行解耦、完整的配套文档和视频 + damai-common @@ -83,6 +87,7 @@ 1.33 1.3.0 2.9.3 + 2.22.1 @@ -128,6 +133,30 @@ ${project.sourceEncoding} + + + + + + + + + + + + + + + + + + + + + + + + org.apache.maven.plugins maven-resources-plugin diff --git a/spotless/license-header b/spotless/license-header new file mode 100644 index 00000000..ce04a833 --- /dev/null +++ b/spotless/license-header @@ -0,0 +1,19 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF 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. + */ + + + diff --git a/spotless/spotless.xml b/spotless/spotless.xml new file mode 100644 index 00000000..339a5c7c --- /dev/null +++ b/spotless/spotless.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file -- Gitee From ed07cef133bdf8c4cdffd9adb30bb206f2d02799 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Thu, 22 Feb 2024 19:59:05 +0800 Subject: [PATCH 08/74] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=9C=8D=E5=8A=A1bug?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AbstractUserRegisterCheckHandler.java | 18 ++++++++++++++++++ .../impl}/UserExistCheckHandler.java | 12 +++--------- .../impl}/UserRegisterCountCheckHandler.java | 12 +++--------- .../impl}/UserRegisterVerifyCaptcha.java | 12 +++--------- .../com/damai/composite/AbstractComposite.java | 2 +- 5 files changed, 28 insertions(+), 28 deletions(-) create mode 100644 damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/AbstractUserRegisterCheckHandler.java rename damai-server/damai-user-service/src/main/java/com/damai/service/composite/{ => register/impl}/UserExistCheckHandler.java (74%) rename damai-server/damai-user-service/src/main/java/com/damai/service/composite/{ => register/impl}/UserRegisterCountCheckHandler.java (77%) rename damai-server/damai-user-service/src/main/java/com/damai/service/composite/{ => register/impl}/UserRegisterVerifyCaptcha.java (82%) diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/AbstractUserRegisterCheckHandler.java b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/AbstractUserRegisterCheckHandler.java new file mode 100644 index 00000000..25b1d430 --- /dev/null +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/AbstractUserRegisterCheckHandler.java @@ -0,0 +1,18 @@ +package com.damai.service.composite.register; + +import com.damai.composite.AbstractComposite; +import com.damai.dto.UserRegisterDto; +import com.damai.enums.CompositeCheckType; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 用户注册验证基类,用户注册的相关验证逻辑继承此类 + * @author: 阿宽不是程序员 + **/ +public abstract class AbstractUserRegisterCheckHandler extends AbstractComposite { + + @Override + public String type() { + return CompositeCheckType.USER_REGISTER_CHECK.getValue(); + } +} diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/UserExistCheckHandler.java b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserExistCheckHandler.java similarity index 74% rename from damai-server/damai-user-service/src/main/java/com/damai/service/composite/UserExistCheckHandler.java rename to damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserExistCheckHandler.java index b11d94e2..feffa827 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/UserExistCheckHandler.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserExistCheckHandler.java @@ -1,9 +1,8 @@ -package com.damai.service.composite; +package com.damai.service.composite.register.impl; -import com.damai.composite.AbstractComposite; import com.damai.dto.UserRegisterDto; -import com.damai.enums.CompositeCheckType; import com.damai.service.UserService; +import com.damai.service.composite.register.AbstractUserRegisterCheckHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -13,7 +12,7 @@ import org.springframework.stereotype.Component; * @author: 阿宽不是程序员 **/ @Component -public class UserExistCheckHandler extends AbstractComposite { +public class UserExistCheckHandler extends AbstractUserRegisterCheckHandler { @Autowired private UserService userService; @@ -25,11 +24,6 @@ public class UserExistCheckHandler extends AbstractComposite { public void execute(final UserRegisterDto userRegisterDto) { userService.doExist(userRegisterDto.getMobile()); } - - @Override - public String type() { - return CompositeCheckType.USER_REGISTER_CHECK.getValue(); - } @Override public Integer executeParentOrder() { diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/UserRegisterCountCheckHandler.java b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterCountCheckHandler.java similarity index 77% rename from damai-server/damai-user-service/src/main/java/com/damai/service/composite/UserRegisterCountCheckHandler.java rename to damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterCountCheckHandler.java index b74019a6..330c0e3b 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/UserRegisterCountCheckHandler.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterCountCheckHandler.java @@ -1,10 +1,9 @@ -package com.damai.service.composite; +package com.damai.service.composite.register.impl; -import com.damai.composite.AbstractComposite; import com.damai.dto.UserRegisterDto; import com.damai.enums.BaseCode; -import com.damai.enums.CompositeCheckType; import com.damai.exception.DaMaiFrameException; +import com.damai.service.composite.register.AbstractUserRegisterCheckHandler; import com.damai.service.tool.RequestCounter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -15,7 +14,7 @@ import org.springframework.stereotype.Component; * @author: 阿宽不是程序员 **/ @Component -public class UserRegisterCountCheckHandler extends AbstractComposite { +public class UserRegisterCountCheckHandler extends AbstractUserRegisterCheckHandler { @Autowired private RequestCounter requestCounter; @@ -31,11 +30,6 @@ public class UserRegisterCountCheckHandler extends AbstractComposite { +public class UserRegisterVerifyCaptcha extends AbstractUserRegisterCheckHandler { @Autowired private CaptchaHandle captchaHandle; @@ -39,11 +38,6 @@ public class UserRegisterVerifyCaptcha extends AbstractComposite 泛型参数,表示执行业务时传递的参数类型 * @author: 阿宽不是程序员 **/ -- Gitee From fe4bf396d04acc0dffbff93c424ba017fbc533ce Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Thu, 22 Feb 2024 23:22:39 +0800 Subject: [PATCH 09/74] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=8A=BD=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/damai/enums/BaseCode.java | 5 +++ .../composite/CompositeAutoConfiguration.java | 6 ++-- ...ractApplicationEventInitializeHandler.java | 11 ++++++ .../initialize/base/InitializeHandler.java | 15 ++++++++ .../constant/InitializeHandlerType.java | 8 +++++ .../initialize/context/InitializeContext.java | 34 +++++++++++++++++++ .../ApplicationStartedEventListener.java} | 8 ++--- .../main/resources/META-INF/spring.factories | 4 ++- 8 files changed, 82 insertions(+), 9 deletions(-) create mode 100644 damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/base/AbstractApplicationEventInitializeHandler.java create mode 100644 damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/base/InitializeHandler.java create mode 100644 damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/constant/InitializeHandlerType.java create mode 100644 damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/context/InitializeContext.java rename damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/{event/ApplicationStartedEventHandler.java => initialize/execute/event/ApplicationStartedEventListener.java} (77%) diff --git a/damai-common/src/main/java/com/damai/enums/BaseCode.java b/damai-common/src/main/java/com/damai/enums/BaseCode.java index 5f414982..bdf02b37 100644 --- a/damai-common/src/main/java/com/damai/enums/BaseCode.java +++ b/damai-common/src/main/java/com/damai/enums/BaseCode.java @@ -10,10 +10,15 @@ public enum BaseCode { * 基础code码 * */ SUCCESS(0, "OK"), + SYSTEM_ERROR(-1,"系统异常"), UID_WORK_ID_ERROR(500,"uid_work_id设置失败"), + NAME_PASSWORD_ERROR(501,"账号名或登录密码不正确"), + + INITIALIZE_HANDLER_STRATEGY_NOT_EXIST(502,"初始化操作策略不存在"), + RSA_SIGN_ERROR(10000,"res签名验证失败"), RSA_DECRYPT_ERROR(10001,"res解密失败"), diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/CompositeAutoConfiguration.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/CompositeAutoConfiguration.java index fd46c03c..4d536985 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/CompositeAutoConfiguration.java +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/CompositeAutoConfiguration.java @@ -1,6 +1,6 @@ package com.damai.composite; -import com.damai.event.ApplicationStartedEventHandler; +import com.damai.initialize.execute.event.ApplicationStartedEventListener; import com.damai.init.InitDataContainer; import org.springframework.context.annotation.Bean; @@ -22,7 +22,7 @@ public class CompositeAutoConfiguration { } @Bean - public ApplicationStartedEventHandler applicationStartedEventHandler(CompositeContainer compositeContainer, InitDataContainer initDataContainer){ - return new ApplicationStartedEventHandler(compositeContainer,initDataContainer); + public ApplicationStartedEventListener applicationStartedEventHandler(CompositeContainer compositeContainer, InitDataContainer initDataContainer){ + return new ApplicationStartedEventListener(compositeContainer,initDataContainer); } } diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/base/AbstractApplicationEventInitializeHandler.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/base/AbstractApplicationEventInitializeHandler.java new file mode 100644 index 00000000..b8e76c27 --- /dev/null +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/base/AbstractApplicationEventInitializeHandler.java @@ -0,0 +1,11 @@ +package com.damai.initialize.base; + +import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_EVENT; + +public abstract class AbstractApplicationEventInitializeHandler implements InitializeHandler { + + @Override + public String type() { + return APPLICATION_EVENT; + } +} diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/base/InitializeHandler.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/base/InitializeHandler.java new file mode 100644 index 00000000..96aa81a3 --- /dev/null +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/base/InitializeHandler.java @@ -0,0 +1,15 @@ +package com.damai.initialize.base; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 初始化执行 抽象 + * @author: 阿宽不是程序员 + **/ +public interface InitializeHandler { + + String type(); + + public Integer executeOrder(); + void executeInit(); + +} diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/constant/InitializeHandlerType.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/constant/InitializeHandlerType.java new file mode 100644 index 00000000..dd6639f7 --- /dev/null +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/constant/InitializeHandlerType.java @@ -0,0 +1,8 @@ +package com.damai.initialize.constant; + +public class InitializeHandlerType { + + public static final String APPLICATION_EVENT = "application_event"; + + +} diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/context/InitializeContext.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/context/InitializeContext.java new file mode 100644 index 00000000..44058e4c --- /dev/null +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/context/InitializeContext.java @@ -0,0 +1,34 @@ +package com.damai.initialize.context; + +import com.damai.enums.BaseCode; +import com.damai.exception.DaMaiFrameException; +import com.damai.initialize.base.InitializeHandler; +import org.springframework.context.ApplicationContextInitializer; +import org.springframework.context.ConfigurableApplicationContext; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 初始化执行策略上下文 + * @author: 阿宽不是程序员 + **/ +public class InitializeContext implements ApplicationContextInitializer { + + private Map> map = new HashMap<>(8); + + + public List get(String type){ + return Optional.ofNullable(map.get(type)).orElseThrow(() -> new DaMaiFrameException(BaseCode.INITIALIZE_HANDLER_STRATEGY_NOT_EXIST)); + } + + @Override + public void initialize(ConfigurableApplicationContext applicationContext) { + Map initializeHandlerMap = applicationContext.getBeansOfType(InitializeHandler.class); + map = initializeHandlerMap.values().stream().collect(Collectors.groupingBy(InitializeHandler::type)); + } +} diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/event/ApplicationStartedEventHandler.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/execute/event/ApplicationStartedEventListener.java similarity index 77% rename from damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/event/ApplicationStartedEventHandler.java rename to damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/execute/event/ApplicationStartedEventListener.java index 1a3b5633..524f2201 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/event/ApplicationStartedEventHandler.java +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/execute/event/ApplicationStartedEventListener.java @@ -1,4 +1,4 @@ -package com.damai.event; +package com.damai.initialize.execute.event; import com.damai.composite.CompositeContainer; import com.damai.init.InitDataContainer; @@ -8,11 +8,11 @@ import org.springframework.context.ApplicationListener; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: ApplicationStartedEventHandler 类用于处理应用程序启动事件。 + * @description: ApplicationStartedEventListener 类用于处理应用程序启动事件。 * @author: 阿宽不是程序员 **/ @AllArgsConstructor -public class ApplicationStartedEventHandler implements ApplicationListener { +public class ApplicationStartedEventListener implements ApplicationListener { private final CompositeContainer compositeContainer; @@ -24,6 +24,4 @@ public class ApplicationStartedEventHandler implements ApplicationListener Date: Fri, 23 Feb 2024 11:16:48 +0800 Subject: [PATCH 10/74] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=8A=BD=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/damai/entity/Area.java | 4 +- ...ChannelData.java => ChannelTableData.java} | 4 +- .../com/damai/mapper/ChannelDataMapper.java | 4 +- .../com/damai/service/ChannelDataService.java | 12 +++--- .../src/main/java/com/damai/entity/Order.java | 4 +- .../com/damai/entity/OrderTicketUser.java | 4 +- .../main/java/com/damai/entity/PayBill.java | 4 +- damai-server/damai-program-service/pom.xml | 5 +++ .../main/java/com/damai/entity/Program.java | 4 +- .../com/damai/entity/ProgramCategory.java | 4 +- .../com/damai/entity/ProgramShowTime.java | 4 +- .../src/main/java/com/damai/entity/Seat.java | 4 +- .../java/com/damai/entity/TicketCategory.java | 4 +- .../service/init/ProgramCategoryInitData.java | 17 ++++---- .../init/ProgramElasticsearchInitData.java | 17 ++++---- .../service/init/ProgramShowTimeRenewal.java | 17 ++++---- damai-server/damai-user-service/pom.xml | 5 +++ .../java/com/damai/entity/TicketUser.java | 4 +- .../src/main/java/com/damai/entity/User.java | 4 +- .../main/java/com/damai/entity/UserEmail.java | 4 +- .../java/com/damai/entity/UserMobile.java | 4 +- .../AbstractUserRegisterCheckHandler.java | 4 +- .../{BaseData.java => BaseTableData.java} | 2 +- .../com/damai/init/InitDataContainer.java | 28 ------------- ...ractApplicationEventInitializeHandler.java | 11 ----- .../constant/InitializeHandlerType.java | 8 ---- .../main/resources/META-INF/spring.factories | 2 +- .../damai-service-initialize/.gitignore | 31 ++++++++++++++ .../damai-service-initialize/pom.xml | 29 +++++++++++++ ...tionInitializingBeanInitializeHandler.java | 18 ++++++++ ...icationPostConstructInitializeHandler.java | 18 ++++++++ ...onStartEventListenerInitializeHandler.java | 18 ++++++++ .../initialize/base/InitializeHandler.java | 22 ++++++++-- .../composite/AbstractComposite.java | 2 +- .../composite/CompositeAutoConfiguration.java | 13 +----- .../composite/CompositeContainer.java | 2 +- .../composite/init/CompositeInit.java} | 24 +++++------ .../config/InitializeAutoConfig.java | 41 +++++++++++++++++++ .../constant/InitializeHandlerType.java} | 21 ++++------ .../initialize/context/InitializeContext.java | 4 +- .../ApplicationInitializingBeanExecute.java | 34 +++++++++++++++ .../ApplicationPostConstructExecute.java | 34 +++++++++++++++ .../ApplicationStartEventListenerExecute.java | 32 +++++++++++++++ .../main/resources/META-INF/spring.factories | 5 +++ damai-spring-cloud-framework/pom.xml | 1 + 45 files changed, 384 insertions(+), 153 deletions(-) rename damai-server/damai-base-data-service/src/main/java/com/damai/entity/{ChannelData.java => ChannelTableData.java} (89%) rename damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/data/{BaseData.java => BaseTableData.java} (96%) delete mode 100644 damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/init/InitDataContainer.java delete mode 100644 damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/base/AbstractApplicationEventInitializeHandler.java delete mode 100644 damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/constant/InitializeHandlerType.java create mode 100644 damai-spring-cloud-framework/damai-service-initialize/.gitignore create mode 100644 damai-spring-cloud-framework/damai-service-initialize/pom.xml create mode 100644 damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationInitializingBeanInitializeHandler.java create mode 100644 damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationPostConstructInitializeHandler.java create mode 100644 damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationStartEventListenerInitializeHandler.java rename damai-spring-cloud-framework/{damai-service-common => damai-service-initialize}/src/main/java/com/damai/initialize/base/InitializeHandler.java (42%) rename damai-spring-cloud-framework/{damai-service-common/src/main/java/com/damai => damai-service-initialize/src/main/java/com/damai/initialize}/composite/AbstractComposite.java (98%) rename damai-spring-cloud-framework/{damai-service-common/src/main/java/com/damai => damai-service-initialize/src/main/java/com/damai/initialize}/composite/CompositeAutoConfiguration.java (46%) rename damai-spring-cloud-framework/{damai-service-common/src/main/java/com/damai => damai-service-initialize/src/main/java/com/damai/initialize}/composite/CompositeContainer.java (99%) rename damai-spring-cloud-framework/{damai-service-common/src/main/java/com/damai/initialize/execute/event/ApplicationStartedEventListener.java => damai-service-initialize/src/main/java/com/damai/initialize/composite/init/CompositeInit.java} (32%) create mode 100644 damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/config/InitializeAutoConfig.java rename damai-spring-cloud-framework/{damai-service-common/src/main/java/com/damai/init/InitData.java => damai-service-initialize/src/main/java/com/damai/initialize/constant/InitializeHandlerType.java} (30%) rename damai-spring-cloud-framework/{damai-service-common => damai-service-initialize}/src/main/java/com/damai/initialize/context/InitializeContext.java (84%) create mode 100644 damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationInitializingBeanExecute.java create mode 100644 damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationPostConstructExecute.java create mode 100644 damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationStartEventListenerExecute.java create mode 100644 damai-spring-cloud-framework/damai-service-initialize/src/main/resources/META-INF/spring.factories diff --git a/damai-server/damai-base-data-service/src/main/java/com/damai/entity/Area.java b/damai-server/damai-base-data-service/src/main/java/com/damai/entity/Area.java index 279531b9..904802b8 100644 --- a/damai-server/damai-base-data-service/src/main/java/com/damai/entity/Area.java +++ b/damai-server/damai-base-data-service/src/main/java/com/damai/entity/Area.java @@ -3,7 +3,7 @@ package com.damai.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.damai.data.BaseData; +import com.damai.data.BaseTableData; import lombok.Data; import java.io.Serializable; @@ -15,7 +15,7 @@ import java.io.Serializable; **/ @Data @TableName("d_area") -public class Area extends BaseData implements Serializable { +public class Area extends BaseTableData implements Serializable { private static final long serialVersionUID = 1L; diff --git a/damai-server/damai-base-data-service/src/main/java/com/damai/entity/ChannelData.java b/damai-server/damai-base-data-service/src/main/java/com/damai/entity/ChannelTableData.java similarity index 89% rename from damai-server/damai-base-data-service/src/main/java/com/damai/entity/ChannelData.java rename to damai-server/damai-base-data-service/src/main/java/com/damai/entity/ChannelTableData.java index b949b028..758a8048 100644 --- a/damai-server/damai-base-data-service/src/main/java/com/damai/entity/ChannelData.java +++ b/damai-server/damai-base-data-service/src/main/java/com/damai/entity/ChannelTableData.java @@ -1,6 +1,6 @@ package com.damai.entity; -import com.damai.data.BaseData; +import com.damai.data.BaseTableData; import lombok.Data; import java.io.Serializable; @@ -10,7 +10,7 @@ import java.io.Serializable; * @author: 阿宽不是程序员 **/ @Data -public class ChannelData extends BaseData implements Serializable { +public class ChannelTableData extends BaseTableData implements Serializable { /** * id * */ diff --git a/damai-server/damai-base-data-service/src/main/java/com/damai/mapper/ChannelDataMapper.java b/damai-server/damai-base-data-service/src/main/java/com/damai/mapper/ChannelDataMapper.java index 18854a1f..0223a48d 100644 --- a/damai-server/damai-base-data-service/src/main/java/com/damai/mapper/ChannelDataMapper.java +++ b/damai-server/damai-base-data-service/src/main/java/com/damai/mapper/ChannelDataMapper.java @@ -2,13 +2,13 @@ package com.damai.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.damai.entity.ChannelData; +import com.damai.entity.ChannelTableData; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 * @description: 渠道 mapper * @author: 阿宽不是程序员 **/ -public interface ChannelDataMapper extends BaseMapper { +public interface ChannelDataMapper extends BaseMapper { } diff --git a/damai-server/damai-base-data-service/src/main/java/com/damai/service/ChannelDataService.java b/damai-server/damai-base-data-service/src/main/java/com/damai/service/ChannelDataService.java index 342af239..60711cc9 100644 --- a/damai-server/damai-base-data-service/src/main/java/com/damai/service/ChannelDataService.java +++ b/damai-server/damai-base-data-service/src/main/java/com/damai/service/ChannelDataService.java @@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.damai.core.RedisKeyManage; import com.damai.dto.ChannelDataAddDto; import com.damai.dto.GetChannelDataByCodeDto; -import com.damai.entity.ChannelData; +import com.damai.entity.ChannelTableData; import com.damai.enums.Status; import com.damai.mapper.ChannelDataMapper; import com.damai.redis.RedisKeyBuild; @@ -41,9 +41,9 @@ public class ChannelDataService { public GetChannelDataVo getByCode(GetChannelDataByCodeDto dto){ GetChannelDataVo getChannelDataVo = new GetChannelDataVo(); - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(ChannelData.class) - .eq(ChannelData::getStatus, Status.RUN.getCode()) - .eq(ChannelData::getCode,dto.getCode()); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(ChannelTableData.class) + .eq(ChannelTableData::getStatus, Status.RUN.getCode()) + .eq(ChannelTableData::getCode,dto.getCode()); Optional.ofNullable(channelDataMapper.selectOne(wrapper)).ifPresent(channelData -> { BeanUtils.copyProperties(channelData,getChannelDataVo); }); @@ -52,7 +52,7 @@ public class ChannelDataService { @Transactional(rollbackFor = Exception.class) public void add(ChannelDataAddDto channelDataAddDto) { - ChannelData channelData = new ChannelData(); + ChannelTableData channelData = new ChannelTableData(); BeanUtils.copyProperties(channelDataAddDto,channelData); channelData.setId(uidGenerator.getUid()); channelData.setCreateTime(DateUtils.now()); @@ -60,7 +60,7 @@ public class ChannelDataService { addRedisChannelData(channelData); } - private void addRedisChannelData(ChannelData channelData){ + private void addRedisChannelData(ChannelTableData channelData){ GetChannelDataVo getChannelDataVo = new GetChannelDataVo(); BeanUtils.copyProperties(channelData,getChannelDataVo); redisCache.set(RedisKeyBuild.createRedisKey(RedisKeyManage.CHANNEL_DATA,getChannelDataVo.getCode()),getChannelDataVo); diff --git a/damai-server/damai-order-service/src/main/java/com/damai/entity/Order.java b/damai-server/damai-order-service/src/main/java/com/damai/entity/Order.java index bbdfe7c8..bd8d991f 100644 --- a/damai-server/damai-order-service/src/main/java/com/damai/entity/Order.java +++ b/damai-server/damai-order-service/src/main/java/com/damai/entity/Order.java @@ -1,7 +1,7 @@ package com.damai.entity; import com.baomidou.mybatisplus.annotation.TableName; -import com.damai.data.BaseData; +import com.damai.data.BaseTableData; import lombok.Data; import java.io.Serializable; @@ -15,7 +15,7 @@ import java.util.Date; **/ @Data @TableName("d_order") -public class Order extends BaseData implements Serializable { +public class Order extends BaseTableData implements Serializable { private static final long serialVersionUID = 1L; diff --git a/damai-server/damai-order-service/src/main/java/com/damai/entity/OrderTicketUser.java b/damai-server/damai-order-service/src/main/java/com/damai/entity/OrderTicketUser.java index 4b685aed..2298575f 100644 --- a/damai-server/damai-order-service/src/main/java/com/damai/entity/OrderTicketUser.java +++ b/damai-server/damai-order-service/src/main/java/com/damai/entity/OrderTicketUser.java @@ -1,7 +1,7 @@ package com.damai.entity; import com.baomidou.mybatisplus.annotation.TableName; -import com.damai.data.BaseData; +import com.damai.data.BaseTableData; import lombok.Data; import java.io.Serializable; @@ -15,7 +15,7 @@ import java.util.Date; **/ @Data @TableName("d_order_ticket_user") -public class OrderTicketUser extends BaseData implements Serializable { +public class OrderTicketUser extends BaseTableData implements Serializable { private static final long serialVersionUID = 1L; diff --git a/damai-server/damai-pay-service/src/main/java/com/damai/entity/PayBill.java b/damai-server/damai-pay-service/src/main/java/com/damai/entity/PayBill.java index 8fe39542..2dc3e6e9 100644 --- a/damai-server/damai-pay-service/src/main/java/com/damai/entity/PayBill.java +++ b/damai-server/damai-pay-service/src/main/java/com/damai/entity/PayBill.java @@ -1,7 +1,7 @@ package com.damai.entity; import com.baomidou.mybatisplus.annotation.TableName; -import com.damai.data.BaseData; +import com.damai.data.BaseTableData; import lombok.Data; import java.io.Serializable; @@ -15,7 +15,7 @@ import java.util.Date; **/ @Data @TableName("d_pay_bill") -public class PayBill extends BaseData implements Serializable { +public class PayBill extends BaseTableData implements Serializable { private static final long serialVersionUID = 1L; diff --git a/damai-server/damai-program-service/pom.xml b/damai-server/damai-program-service/pom.xml index 4041ecd6..e21749ef 100644 --- a/damai-server/damai-program-service/pom.xml +++ b/damai-server/damai-program-service/pom.xml @@ -36,6 +36,11 @@ damai-common ${revision} + + com.example + damai-service-initialize + ${revision} + com.example damai-redis-framework diff --git a/damai-server/damai-program-service/src/main/java/com/damai/entity/Program.java b/damai-server/damai-program-service/src/main/java/com/damai/entity/Program.java index c779fdc3..96da1562 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/entity/Program.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/entity/Program.java @@ -1,7 +1,7 @@ package com.damai.entity; import com.baomidou.mybatisplus.annotation.TableName; -import com.damai.data.BaseData; +import com.damai.data.BaseTableData; import lombok.Data; import java.io.Serializable; @@ -13,7 +13,7 @@ import java.io.Serializable; **/ @Data @TableName("d_program") -public class Program extends BaseData implements Serializable { +public class Program extends BaseTableData implements Serializable { private static final long serialVersionUID = 1L; diff --git a/damai-server/damai-program-service/src/main/java/com/damai/entity/ProgramCategory.java b/damai-server/damai-program-service/src/main/java/com/damai/entity/ProgramCategory.java index 3a40fe94..e9cdfc6c 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/entity/ProgramCategory.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/entity/ProgramCategory.java @@ -3,7 +3,7 @@ package com.damai.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.damai.data.BaseData; +import com.damai.data.BaseTableData; import lombok.Data; import java.io.Serializable; @@ -15,7 +15,7 @@ import java.io.Serializable; **/ @Data @TableName("d_program_category") -public class ProgramCategory extends BaseData implements Serializable { +public class ProgramCategory extends BaseTableData implements Serializable { private static final long serialVersionUID = 1L; diff --git a/damai-server/damai-program-service/src/main/java/com/damai/entity/ProgramShowTime.java b/damai-server/damai-program-service/src/main/java/com/damai/entity/ProgramShowTime.java index 5b70c487..b6664a0c 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/entity/ProgramShowTime.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/entity/ProgramShowTime.java @@ -1,7 +1,7 @@ package com.damai.entity; import com.baomidou.mybatisplus.annotation.TableName; -import com.damai.data.BaseData; +import com.damai.data.BaseTableData; import lombok.Data; import java.io.Serializable; @@ -14,7 +14,7 @@ import java.util.Date; **/ @Data @TableName("d_program_show_time") -public class ProgramShowTime extends BaseData implements Serializable { +public class ProgramShowTime extends BaseTableData implements Serializable { private static final long serialVersionUID = 1L; diff --git a/damai-server/damai-program-service/src/main/java/com/damai/entity/Seat.java b/damai-server/damai-program-service/src/main/java/com/damai/entity/Seat.java index 155cce21..de10bd2d 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/entity/Seat.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/entity/Seat.java @@ -1,7 +1,7 @@ package com.damai.entity; import com.baomidou.mybatisplus.annotation.TableName; -import com.damai.data.BaseData; +import com.damai.data.BaseTableData; import lombok.Data; import java.io.Serializable; @@ -14,7 +14,7 @@ import java.math.BigDecimal; **/ @Data @TableName("d_seat") -public class Seat extends BaseData implements Serializable { +public class Seat extends BaseTableData implements Serializable { private static final long serialVersionUID = 1L; diff --git a/damai-server/damai-program-service/src/main/java/com/damai/entity/TicketCategory.java b/damai-server/damai-program-service/src/main/java/com/damai/entity/TicketCategory.java index 517565cb..f762a59c 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/entity/TicketCategory.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/entity/TicketCategory.java @@ -1,7 +1,7 @@ package com.damai.entity; import com.baomidou.mybatisplus.annotation.TableName; -import com.damai.data.BaseData; +import com.damai.data.BaseTableData; import lombok.Data; import java.io.Serializable; @@ -14,7 +14,7 @@ import java.math.BigDecimal; **/ @Data @TableName("d_ticket_category") -public class TicketCategory extends BaseData implements Serializable { +public class TicketCategory extends BaseTableData implements Serializable { private static final long serialVersionUID = 1L; diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramCategoryInitData.java b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramCategoryInitData.java index 3d5884c6..b36c81e7 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramCategoryInitData.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramCategoryInitData.java @@ -6,13 +6,14 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.damai.BusinessThreadPool; import com.damai.core.RedisKeyManage; import com.damai.entity.ProgramCategory; -import com.damai.init.InitData; +import com.damai.initialize.base.AbstractApplicationPostConstructInitializeHandler; import com.damai.mapper.ProgramCategoryMapper; import com.damai.redis.RedisCache; import com.damai.redis.RedisKeyBuild; import com.damai.servicelock.LockType; import com.damai.servicelock.annotion.ServiceLock; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ConfigurableApplicationContext; import org.springframework.stereotype.Component; import java.util.List; @@ -26,7 +27,7 @@ import static com.damai.core.DistributedLockConstants.PROGRAM_CATEGORY_LOCK; * @author: 阿宽不是程序员 **/ @Component -public class ProgramCategoryInitData implements InitData { +public class ProgramCategoryInitData extends AbstractApplicationPostConstructInitializeHandler { @Autowired private ProgramCategoryMapper programCategoryMapper; @@ -39,15 +40,15 @@ public class ProgramCategoryInitData implements InitData { @Override - public void init() { - BusinessThreadPool.execute(() -> { - programCategoryInitDataProxy.programCategoryRedisDataInit(); - }); + public Integer executeOrder() { + return 1; } @Override - public int executeOrder() { - return 1; + public void executeInit(final ConfigurableApplicationContext context) { + BusinessThreadPool.execute(() -> { + programCategoryInitDataProxy.programCategoryRedisDataInit(); + }); } @ServiceLock(lockType= LockType.Write,name = PROGRAM_CATEGORY_LOCK,keys = {"#all"}) diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramElasticsearchInitData.java b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramElasticsearchInitData.java index ad20dd49..baee5d9a 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramElasticsearchInitData.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramElasticsearchInitData.java @@ -4,12 +4,13 @@ import com.damai.BusinessThreadPool; import com.damai.core.SpringUtil; import com.damai.dto.EsDocumentMappingDto; import com.damai.entity.TicketCategoryAggregate; -import com.damai.init.InitData; +import com.damai.initialize.base.AbstractApplicationPostConstructInitializeHandler; import com.damai.service.ProgramService; import com.damai.util.BusinessEsHandle; import com.damai.vo.ProgramVo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ConfigurableApplicationContext; import org.springframework.stereotype.Component; import java.util.ArrayList; @@ -25,7 +26,7 @@ import java.util.Optional; **/ @Slf4j @Component -public class ProgramElasticsearchInitData implements InitData { +public class ProgramElasticsearchInitData extends AbstractApplicationPostConstructInitializeHandler { @Autowired private BusinessEsHandle businessEsHandle; @@ -34,20 +35,20 @@ public class ProgramElasticsearchInitData implements InitData { private ProgramService programService; + @Override + public Integer executeOrder() { + return 3; + } + /** * 项目启动后,异步将program的数据更新到Elasticsearch中,当数据量特别大时,生产环境绝对不会这么做 * 会每个一个节目到数据库后,就会添加到Elasticsearch中,以及用定时任务来更新到Elasticsearch中 * */ @Override - public void init() { + public void executeInit(final ConfigurableApplicationContext context) { BusinessThreadPool.execute(this::initElasticsearchData); } - @Override - public int executeOrder() { - return 3; - } - public boolean indexAdd(){ boolean result = businessEsHandle.checkIndex(SpringUtil.getPrefixDistinctionName() + "-" + ProgramDocumentParamName.INDEX_NAME, ProgramDocumentParamName.INDEX_TYPE); diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramShowTimeRenewal.java b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramShowTimeRenewal.java index 0ce3f4d2..9f4186b2 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramShowTimeRenewal.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramShowTimeRenewal.java @@ -1,8 +1,9 @@ package com.damai.service.init; -import com.damai.init.InitData; +import com.damai.initialize.base.AbstractApplicationPostConstructInitializeHandler; import com.damai.service.ProgramShowTimeService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ConfigurableApplicationContext; import org.springframework.stereotype.Component; /** @@ -11,21 +12,21 @@ import org.springframework.stereotype.Component; * @author: 阿宽不是程序员 **/ @Component -public class ProgramShowTimeRenewal implements InitData { +public class ProgramShowTimeRenewal extends AbstractApplicationPostConstructInitializeHandler { @Autowired private ProgramShowTimeService programShowTimeService; + @Override + public Integer executeOrder() { + return 2; + } + /** * 项目启动将库中的节目演出时间进行更新,真实生产环境不会这么做的 * */ @Override - public void init() { + public void executeInit(final ConfigurableApplicationContext context) { programShowTimeService.renewal(); } - - @Override - public int executeOrder() { - return 2; - } } diff --git a/damai-server/damai-user-service/pom.xml b/damai-server/damai-user-service/pom.xml index 2ad42833..a765fbd3 100644 --- a/damai-server/damai-user-service/pom.xml +++ b/damai-server/damai-user-service/pom.xml @@ -36,6 +36,11 @@ damai-common ${revision} + + com.example + damai-service-initialize + ${revision} + com.example damai-service-common diff --git a/damai-server/damai-user-service/src/main/java/com/damai/entity/TicketUser.java b/damai-server/damai-user-service/src/main/java/com/damai/entity/TicketUser.java index 9b21f216..33dd4b8e 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/entity/TicketUser.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/entity/TicketUser.java @@ -1,7 +1,7 @@ package com.damai.entity; import com.baomidou.mybatisplus.annotation.TableName; -import com.damai.data.BaseData; +import com.damai.data.BaseTableData; import lombok.Data; import java.io.Serializable; @@ -13,7 +13,7 @@ import java.io.Serializable; **/ @Data @TableName("d_ticket_user") -public class TicketUser extends BaseData implements Serializable { +public class TicketUser extends BaseTableData implements Serializable { private static final long serialVersionUID = 1L; diff --git a/damai-server/damai-user-service/src/main/java/com/damai/entity/User.java b/damai-server/damai-user-service/src/main/java/com/damai/entity/User.java index 6d2cbf27..0b072901 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/entity/User.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/entity/User.java @@ -1,7 +1,7 @@ package com.damai.entity; import com.baomidou.mybatisplus.annotation.TableName; -import com.damai.data.BaseData; +import com.damai.data.BaseTableData; import lombok.Data; import java.io.Serializable; @@ -13,7 +13,7 @@ import java.io.Serializable; **/ @Data @TableName("d_user") -public class User extends BaseData implements Serializable { +public class User extends BaseTableData implements Serializable { private static final long serialVersionUID = 1L; diff --git a/damai-server/damai-user-service/src/main/java/com/damai/entity/UserEmail.java b/damai-server/damai-user-service/src/main/java/com/damai/entity/UserEmail.java index 5b0a29ba..e9e9c70d 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/entity/UserEmail.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/entity/UserEmail.java @@ -1,7 +1,7 @@ package com.damai.entity; import com.baomidou.mybatisplus.annotation.TableName; -import com.damai.data.BaseData; +import com.damai.data.BaseTableData; import lombok.Data; import java.io.Serializable; @@ -13,7 +13,7 @@ import java.io.Serializable; **/ @Data @TableName("d_user_email") -public class UserEmail extends BaseData implements Serializable { +public class UserEmail extends BaseTableData implements Serializable { private static final long serialVersionUID = 1L; diff --git a/damai-server/damai-user-service/src/main/java/com/damai/entity/UserMobile.java b/damai-server/damai-user-service/src/main/java/com/damai/entity/UserMobile.java index 10c8aa46..fe0421f3 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/entity/UserMobile.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/entity/UserMobile.java @@ -1,7 +1,7 @@ package com.damai.entity; import com.baomidou.mybatisplus.annotation.TableName; -import com.damai.data.BaseData; +import com.damai.data.BaseTableData; import lombok.Data; import java.io.Serializable; @@ -13,7 +13,7 @@ import java.io.Serializable; **/ @Data @TableName("d_user_mobile") -public class UserMobile extends BaseData implements Serializable { +public class UserMobile extends BaseTableData implements Serializable { private static final long serialVersionUID = 1L; diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/AbstractUserRegisterCheckHandler.java b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/AbstractUserRegisterCheckHandler.java index 25b1d430..fe5d7e89 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/AbstractUserRegisterCheckHandler.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/AbstractUserRegisterCheckHandler.java @@ -1,8 +1,10 @@ package com.damai.service.composite.register; -import com.damai.composite.AbstractComposite; + import com.damai.dto.UserRegisterDto; import com.damai.enums.CompositeCheckType; +import com.damai.initialize.composite.AbstractComposite; + /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/data/BaseData.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/data/BaseTableData.java similarity index 96% rename from damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/data/BaseData.java rename to damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/data/BaseTableData.java index 3a4a02cb..50721968 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/data/BaseData.java +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/data/BaseTableData.java @@ -11,7 +11,7 @@ import java.util.Date; * @author: 阿宽不是程序员 **/ @Data -public class BaseData { +public class BaseTableData { /** * 创建时间 diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/init/InitDataContainer.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/init/InitDataContainer.java deleted file mode 100644 index b4b99659..00000000 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/init/InitDataContainer.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.damai.init; - -import org.springframework.context.ConfigurableApplicationContext; - -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: 初始化操作执行 - * @author: 阿宽不是程序员 - **/ -public class InitDataContainer { - - /** - * 初始化数据 - * */ - public void initData(ConfigurableApplicationContext applicationContext){ - // 获取所有 InitData 类型的 Bean - Map initDataMap = applicationContext.getBeansOfType(InitData.class); - List initDataList = - initDataMap.values().stream().sorted(Comparator.comparingInt(InitData::executeOrder)) - .collect(Collectors.toList()); - initDataList.forEach(InitData::init); - } -} diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/base/AbstractApplicationEventInitializeHandler.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/base/AbstractApplicationEventInitializeHandler.java deleted file mode 100644 index b8e76c27..00000000 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/base/AbstractApplicationEventInitializeHandler.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.damai.initialize.base; - -import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_EVENT; - -public abstract class AbstractApplicationEventInitializeHandler implements InitializeHandler { - - @Override - public String type() { - return APPLICATION_EVENT; - } -} diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/constant/InitializeHandlerType.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/constant/InitializeHandlerType.java deleted file mode 100644 index dd6639f7..00000000 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/constant/InitializeHandlerType.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.damai.initialize.constant; - -public class InitializeHandlerType { - - public static final String APPLICATION_EVENT = "application_event"; - - -} diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/resources/META-INF/spring.factories b/damai-spring-cloud-framework/damai-service-common/src/main/resources/META-INF/spring.factories index 718349d7..9577a160 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/resources/META-INF/spring.factories +++ b/damai-spring-cloud-framework/damai-service-common/src/main/resources/META-INF/spring.factories @@ -1,6 +1,6 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.damai.swagger.SwaggerConfiguration,\ com.damai.mybatisplus.MybatisPlusAutoConfiguration,\ - com.damai.composite.CompositeAutoConfiguration + com.damai.initialize.composite.CompositeAutoConfiguration org.springframework.context.ApplicationContextInitializer=\ com.damai.initialize.context.InitializeContext \ No newline at end of file diff --git a/damai-spring-cloud-framework/damai-service-initialize/.gitignore b/damai-spring-cloud-framework/damai-service-initialize/.gitignore new file mode 100644 index 00000000..a2a3040a --- /dev/null +++ b/damai-spring-cloud-framework/damai-service-initialize/.gitignore @@ -0,0 +1,31 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/** +!**/src/test/** + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ + +### VS Code ### +.vscode/ diff --git a/damai-spring-cloud-framework/damai-service-initialize/pom.xml b/damai-spring-cloud-framework/damai-service-initialize/pom.xml new file mode 100644 index 00000000..a0c62010 --- /dev/null +++ b/damai-spring-cloud-framework/damai-service-initialize/pom.xml @@ -0,0 +1,29 @@ + + + 4.0.0 + + + com.example + damai-spring-cloud-framework + ${revision} + + + damai-service-initialize + service-initialize + service容器初始化行为操作 + + + + + com.example + damai-common + ${revision} + + + org.springframework.boot + spring-boot-starter-web + + + + diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationInitializingBeanInitializeHandler.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationInitializingBeanInitializeHandler.java new file mode 100644 index 00000000..1995a508 --- /dev/null +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationInitializingBeanInitializeHandler.java @@ -0,0 +1,18 @@ +package com.damai.initialize.base; + +import org.springframework.beans.factory.InitializingBean; + +import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_START_INITIALIZING_BEAN; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 用于处理 {@link InitializingBean} 类型 初始化执行 抽象 + * @author: 阿宽不是程序员 + **/ +public abstract class AbstractApplicationInitializingBeanInitializeHandler implements InitializeHandler { + + @Override + public String type() { + return APPLICATION_START_INITIALIZING_BEAN; + } +} diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationPostConstructInitializeHandler.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationPostConstructInitializeHandler.java new file mode 100644 index 00000000..6be7ebbb --- /dev/null +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationPostConstructInitializeHandler.java @@ -0,0 +1,18 @@ +package com.damai.initialize.base; + +import javax.annotation.PostConstruct; + +import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_START_POST_CONSTRUCT; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 用于处理 {@link PostConstruct} 类型 初始化执行 抽象 + * @author: 阿宽不是程序员 + **/ +public abstract class AbstractApplicationPostConstructInitializeHandler implements InitializeHandler { + + @Override + public String type() { + return APPLICATION_START_POST_CONSTRUCT; + } +} diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationStartEventListenerInitializeHandler.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationStartEventListenerInitializeHandler.java new file mode 100644 index 00000000..a7ee276e --- /dev/null +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationStartEventListenerInitializeHandler.java @@ -0,0 +1,18 @@ +package com.damai.initialize.base; + +import org.springframework.beans.factory.InitializingBean; + +import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_START_EVENT_LISTENER; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 用于处理 {@link InitializingBean} 类型 初始化执行 抽象 + * @author: 阿宽不是程序员 + **/ +public abstract class AbstractApplicationStartEventListenerInitializeHandler implements InitializeHandler { + + @Override + public String type() { + return APPLICATION_START_EVENT_LISTENER; + } +} diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/base/InitializeHandler.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/InitializeHandler.java similarity index 42% rename from damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/base/InitializeHandler.java rename to damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/InitializeHandler.java index 96aa81a3..802e2ae7 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/base/InitializeHandler.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/InitializeHandler.java @@ -1,15 +1,29 @@ package com.damai.initialize.base; +import org.springframework.context.ConfigurableApplicationContext; + /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: 初始化执行 抽象 + * @description: 初始化执行 顶级抽象 接口 * @author: 阿宽不是程序员 **/ public interface InitializeHandler { - + /** + * 初始化执行 类型 + * @return 类型 + * */ String type(); - public Integer executeOrder(); - void executeInit(); + /** + * 执行顺序 + * @return 顺序 + * */ + Integer executeOrder(); + + /** + * 执行逻辑 + * @param context 容器上下文 + * */ + void executeInit(ConfigurableApplicationContext context); } diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/AbstractComposite.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/AbstractComposite.java similarity index 98% rename from damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/AbstractComposite.java rename to damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/AbstractComposite.java index 849fe902..69c127f3 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/AbstractComposite.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/AbstractComposite.java @@ -1,4 +1,4 @@ -package com.damai.composite; +package com.damai.initialize.composite; import java.util.ArrayList; import java.util.LinkedList; diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/CompositeAutoConfiguration.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/CompositeAutoConfiguration.java similarity index 46% rename from damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/CompositeAutoConfiguration.java rename to damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/CompositeAutoConfiguration.java index 4d536985..330628ac 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/CompositeAutoConfiguration.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/CompositeAutoConfiguration.java @@ -1,7 +1,5 @@ -package com.damai.composite; +package com.damai.initialize.composite; -import com.damai.initialize.execute.event.ApplicationStartedEventListener; -import com.damai.init.InitDataContainer; import org.springframework.context.annotation.Bean; /** @@ -16,13 +14,4 @@ public class CompositeAutoConfiguration { return new CompositeContainer(); } - @Bean - public InitDataContainer initDataContainer(){ - return new InitDataContainer(); - } - - @Bean - public ApplicationStartedEventListener applicationStartedEventHandler(CompositeContainer compositeContainer, InitDataContainer initDataContainer){ - return new ApplicationStartedEventListener(compositeContainer,initDataContainer); - } } diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/CompositeContainer.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/CompositeContainer.java similarity index 99% rename from damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/CompositeContainer.java rename to damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/CompositeContainer.java index 230539cf..1714348d 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/composite/CompositeContainer.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/CompositeContainer.java @@ -1,4 +1,4 @@ -package com.damai.composite; +package com.damai.initialize.composite; import com.damai.enums.BaseCode; import com.damai.exception.DaMaiFrameException; diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/execute/event/ApplicationStartedEventListener.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/init/CompositeInit.java similarity index 32% rename from damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/execute/event/ApplicationStartedEventListener.java rename to damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/init/CompositeInit.java index 524f2201..17413394 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/execute/event/ApplicationStartedEventListener.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/init/CompositeInit.java @@ -1,27 +1,27 @@ -package com.damai.initialize.execute.event; +package com.damai.initialize.composite.init; -import com.damai.composite.CompositeContainer; -import com.damai.init.InitDataContainer; +import com.damai.initialize.base.AbstractApplicationStartEventListenerInitializeHandler; +import com.damai.initialize.composite.CompositeContainer; import lombok.AllArgsConstructor; -import org.springframework.boot.context.event.ApplicationStartedEvent; -import org.springframework.context.ApplicationListener; +import org.springframework.context.ConfigurableApplicationContext; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: ApplicationStartedEventListener 类用于处理应用程序启动事件。 + * @description: 组合模式初始化操作执行 * @author: 阿宽不是程序员 **/ @AllArgsConstructor -public class ApplicationStartedEventListener implements ApplicationListener { +public class CompositeInit extends AbstractApplicationStartEventListenerInitializeHandler { private final CompositeContainer compositeContainer; - private final InitDataContainer initDataContainer; + @Override + public Integer executeOrder() { + return 1; + } @Override - public void onApplicationEvent(final ApplicationStartedEvent event) { - compositeContainer.init(event.getApplicationContext()); - - initDataContainer.initData(event.getApplicationContext()); + public void executeInit(ConfigurableApplicationContext context) { + compositeContainer.init(context); } } diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/config/InitializeAutoConfig.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/config/InitializeAutoConfig.java new file mode 100644 index 00000000..49ea095f --- /dev/null +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/config/InitializeAutoConfig.java @@ -0,0 +1,41 @@ +package com.damai.initialize.config; + +import com.damai.initialize.context.InitializeContext; +import com.damai.initialize.execute.ApplicationInitializingBeanExecute; +import com.damai.initialize.execute.ApplicationPostConstructExecute; +import com.damai.initialize.execute.ApplicationStartEventListenerExecute; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.Bean; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 初始化执行 相关配置 + * @author: 阿宽不是程序员 + **/ +public class InitializeAutoConfig { + + @Bean + public InitializeContext initializeContext(){ + return new InitializeContext(); + } + + @Bean + public ApplicationInitializingBeanExecute applicationInitializingBeanExecute( + ConfigurableApplicationContext applicationContext, + InitializeContext initializeContext){ + return new ApplicationInitializingBeanExecute(applicationContext,initializeContext); + } + + @Bean + public ApplicationPostConstructExecute applicationPostConstructExecute( + ConfigurableApplicationContext applicationContext, + InitializeContext initializeContext){ + return new ApplicationPostConstructExecute(applicationContext,initializeContext); + } + + @Bean + public ApplicationStartEventListenerExecute applicationStartEventListenerExecute( + InitializeContext initializeContext){ + return new ApplicationStartEventListenerExecute(initializeContext); + } +} diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/init/InitData.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/constant/InitializeHandlerType.java similarity index 30% rename from damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/init/InitData.java rename to damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/constant/InitializeHandlerType.java index 51ffa0a3..c6da146f 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/init/InitData.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/constant/InitializeHandlerType.java @@ -1,18 +1,15 @@ -package com.damai.init; +package com.damai.initialize.constant; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: 初始化数据抽象 + * @description: 初始化执行 不同策略类型 * @author: 阿宽不是程序员 **/ -public interface InitData { - /** - * 初始化操作 - * */ - void init(); - /** - * 执行顺序 - * @return 执行顺序 - * */ - int executeOrder(); +public class InitializeHandlerType { + + public static final String APPLICATION_START_EVENT_LISTENER = "application_start_event_listener"; + + public static final String APPLICATION_START_POST_CONSTRUCT = "application_start_post_construct"; + + public static final String APPLICATION_START_INITIALIZING_BEAN = "application_start_initializing_bean"; } diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/context/InitializeContext.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/context/InitializeContext.java similarity index 84% rename from damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/context/InitializeContext.java rename to damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/context/InitializeContext.java index 44058e4c..5e9b308c 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/initialize/context/InitializeContext.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/context/InitializeContext.java @@ -1,5 +1,6 @@ package com.damai.initialize.context; +import cn.hutool.core.collection.CollectionUtil; import com.damai.enums.BaseCode; import com.damai.exception.DaMaiFrameException; import com.damai.initialize.base.InitializeHandler; @@ -23,7 +24,8 @@ public class InitializeContext implements ApplicationContextInitializer get(String type){ - return Optional.ofNullable(map.get(type)).orElseThrow(() -> new DaMaiFrameException(BaseCode.INITIALIZE_HANDLER_STRATEGY_NOT_EXIST)); + return Optional.ofNullable(map.get(type)).filter(CollectionUtil::isNotEmpty) + .orElseThrow(() -> new DaMaiFrameException(BaseCode.INITIALIZE_HANDLER_STRATEGY_NOT_EXIST)); } @Override diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationInitializingBeanExecute.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationInitializingBeanExecute.java new file mode 100644 index 00000000..594f83cb --- /dev/null +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationInitializingBeanExecute.java @@ -0,0 +1,34 @@ +package com.damai.initialize.execute; + +import com.damai.initialize.base.InitializeHandler; +import com.damai.initialize.context.InitializeContext; +import lombok.AllArgsConstructor; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.context.ConfigurableApplicationContext; + +import java.util.Comparator; +import java.util.List; + +import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_START_INITIALIZING_BEAN; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 用于处理 {@link InitializingBean} 应用程序启动事件。 + * @author: 阿宽不是程序员 + **/ +@AllArgsConstructor +public class ApplicationInitializingBeanExecute implements InitializingBean { + + private final ConfigurableApplicationContext applicationContext; + + private final InitializeContext initializeContext; + + @Override + public void afterPropertiesSet() { + List initializeHandlers = initializeContext.get(APPLICATION_START_INITIALIZING_BEAN); + initializeHandlers.stream().sorted(Comparator.comparingInt(InitializeHandler::executeOrder)) + .forEach(initializeHandler -> { + initializeHandler.executeInit(applicationContext); + }); + } +} diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationPostConstructExecute.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationPostConstructExecute.java new file mode 100644 index 00000000..fc2603c0 --- /dev/null +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationPostConstructExecute.java @@ -0,0 +1,34 @@ +package com.damai.initialize.execute; + +import com.damai.initialize.base.InitializeHandler; +import com.damai.initialize.context.InitializeContext; +import lombok.AllArgsConstructor; +import org.springframework.context.ConfigurableApplicationContext; + +import javax.annotation.PostConstruct; +import java.util.Comparator; +import java.util.List; + +import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_START_POST_CONSTRUCT; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 用于处理 {@link PostConstruct} 应用程序启动事件。 + * @author: 阿宽不是程序员 + **/ +@AllArgsConstructor +public class ApplicationPostConstructExecute { + + private final ConfigurableApplicationContext applicationContext; + + private final InitializeContext initializeContext; + + @PostConstruct + public void postConstructExecute() { + List initializeHandlers = initializeContext.get(APPLICATION_START_POST_CONSTRUCT); + initializeHandlers.stream().sorted(Comparator.comparingInt(InitializeHandler::executeOrder)) + .forEach(initializeHandler -> { + initializeHandler.executeInit(applicationContext); + }); + } +} diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationStartEventListenerExecute.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationStartEventListenerExecute.java new file mode 100644 index 00000000..ad4ec1a9 --- /dev/null +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationStartEventListenerExecute.java @@ -0,0 +1,32 @@ +package com.damai.initialize.execute; + +import com.damai.initialize.base.InitializeHandler; +import com.damai.initialize.context.InitializeContext; +import lombok.AllArgsConstructor; +import org.springframework.boot.context.event.ApplicationStartedEvent; +import org.springframework.context.ApplicationListener; + +import java.util.Comparator; +import java.util.List; + +import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_START_EVENT_LISTENER; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 用于处理 {@link ApplicationStartedEvent} 应用程序启动事件。 + * @author: 阿宽不是程序员 + **/ +@AllArgsConstructor +public class ApplicationStartEventListenerExecute implements ApplicationListener { + + private final InitializeContext initializeContext; + + @Override + public void onApplicationEvent(ApplicationStartedEvent event) { + List initializeHandlers = initializeContext.get(APPLICATION_START_EVENT_LISTENER); + initializeHandlers.stream().sorted(Comparator.comparingInt(InitializeHandler::executeOrder)) + .forEach(initializeHandler -> { + initializeHandler.executeInit(event.getApplicationContext()); + }); + } +} diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/resources/META-INF/spring.factories b/damai-spring-cloud-framework/damai-service-initialize/src/main/resources/META-INF/spring.factories new file mode 100644 index 00000000..dfa7a777 --- /dev/null +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/resources/META-INF/spring.factories @@ -0,0 +1,5 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ + com.damai.initialize.config.InitializeAutoConfig,\ + com.damai.initialize.composite.CompositeAutoConfiguration +org.springframework.context.ApplicationContextInitializer=\ + com.damai.initialize.context.InitializeContext \ No newline at end of file diff --git a/damai-spring-cloud-framework/pom.xml b/damai-spring-cloud-framework/pom.xml index 97bc4ced..24faa840 100644 --- a/damai-spring-cloud-framework/pom.xml +++ b/damai-spring-cloud-framework/pom.xml @@ -21,6 +21,7 @@ damai-sentinel-general damai-service-lossless damai-service-hystrix + damai-service-initialize -- Gitee From f4415b198d0d881cd2812cfcf25c256c16679bff Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Fri, 23 Feb 2024 13:36:27 +0800 Subject: [PATCH 11/74] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=8A=BD=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../damai/service/ProgramOrderService.java | 2 +- .../AbstractProgramCheckHandler.java | 18 ++++++++ .../{ => impl}/ProgramDetailCheckHandler.java | 13 ++---- .../{ => impl}/ProgramExistCheckHandler.java | 13 ++---- .../ProgramOrderCreateParamCheckHandler.java | 12 ++---- .../ProgramShowTimeCheckHandler.java | 12 ++---- .../{ => impl}/UserExistCheckHandler.java | 12 ++---- .../java/com/damai/service/UserService.java | 2 +- .../AbstractUserRegisterCheckHandler.java | 2 +- .../main/resources/META-INF/spring.factories | 5 +-- .../config/InitializeAutoConfig.java | 20 +++------ .../ApplicationInitializingBeanExecute.java | 28 ++++++------- .../ApplicationPostConstructExecute.java | 26 +++++------- .../ApplicationStartEventListenerExecute.java | 26 ++++++------ .../base/AbstractApplicationExecute.java} | 41 +++++++++---------- .../composite/AbstractComposite.java | 2 +- .../composite/CompositeAutoConfiguration.java | 7 +++- .../composite/CompositeContainer.java | 2 +- .../composite/init/CompositeInit.java | 4 +- .../main/resources/META-INF/spring.factories | 4 +- 20 files changed, 111 insertions(+), 140 deletions(-) create mode 100644 damai-server/damai-program-service/src/main/java/com/damai/service/composite/AbstractProgramCheckHandler.java rename damai-server/damai-program-service/src/main/java/com/damai/service/composite/{ => impl}/ProgramDetailCheckHandler.java (76%) rename damai-server/damai-program-service/src/main/java/com/damai/service/composite/{ => impl}/ProgramExistCheckHandler.java (80%) rename damai-server/damai-program-service/src/main/java/com/damai/service/composite/{ => impl}/ProgramOrderCreateParamCheckHandler.java (89%) rename damai-server/damai-program-service/src/main/java/com/damai/service/composite/{ => impl}/ProgramShowTimeCheckHandler.java (80%) rename damai-server/damai-program-service/src/main/java/com/damai/service/composite/{ => impl}/UserExistCheckHandler.java (89%) rename damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/{context/InitializeContext.java => execute/base/AbstractApplicationExecute.java} (31%) rename damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/{ => impl}/composite/AbstractComposite.java (98%) rename damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/{ => impl}/composite/CompositeAutoConfiguration.java (63%) rename damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/{ => impl}/composite/CompositeContainer.java (98%) rename damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/{ => impl}/composite/init/CompositeInit.java (88%) diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java index b2418097..79edf4a4 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java @@ -7,7 +7,6 @@ import com.alibaba.fastjson.JSONObject; import com.baidu.fsg.uid.UidGenerator; import com.damai.client.OrderClient; import com.damai.common.ApiResponse; -import com.damai.composite.CompositeContainer; import com.damai.core.RedisKeyManage; import com.damai.dto.DelayOrderCancelDto; import com.damai.dto.OrderCreateDto; @@ -20,6 +19,7 @@ import com.damai.enums.CompositeCheckType; import com.damai.enums.OrderStatus; import com.damai.enums.SellStatus; import com.damai.exception.DaMaiFrameException; +import com.damai.initialize.impl.composite.CompositeContainer; import com.damai.redis.RedisCache; import com.damai.redis.RedisKeyBuild; import com.damai.service.delaysend.DelayOrderCancelSend; diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/AbstractProgramCheckHandler.java b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/AbstractProgramCheckHandler.java new file mode 100644 index 00000000..b32d5143 --- /dev/null +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/AbstractProgramCheckHandler.java @@ -0,0 +1,18 @@ +package com.damai.service.composite; + +import com.damai.dto.ProgramOrderCreateDto; +import com.damai.enums.CompositeCheckType; +import com.damai.initialize.impl.composite.AbstractComposite; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 生成节目订单验证基类,生成节目订单的相关验证逻辑继承此类 + * @author: 阿宽不是程序员 + **/ +public abstract class AbstractProgramCheckHandler extends AbstractComposite { + + @Override + public String type() { + return CompositeCheckType.PROGRAM_ORDER_CREATE_CHECK.getValue(); + } +} diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/ProgramDetailCheckHandler.java b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramDetailCheckHandler.java similarity index 76% rename from damai-server/damai-program-service/src/main/java/com/damai/service/composite/ProgramDetailCheckHandler.java rename to damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramDetailCheckHandler.java index f0c4baf8..22191cef 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/ProgramDetailCheckHandler.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramDetailCheckHandler.java @@ -1,10 +1,10 @@ -package com.damai.service.composite; +package com.damai.service.composite.impl; + -import com.damai.composite.AbstractComposite; import com.damai.dto.ProgramGetDto; import com.damai.dto.ProgramOrderCreateDto; -import com.damai.enums.CompositeCheckType; import com.damai.service.ProgramService; +import com.damai.service.composite.AbstractProgramCheckHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -14,7 +14,7 @@ import org.springframework.stereotype.Component; * @author: 阿宽不是程序员 **/ @Component -public class ProgramDetailCheckHandler extends AbstractComposite { +public class ProgramDetailCheckHandler extends AbstractProgramCheckHandler { @Autowired private ProgramService programService; @@ -27,11 +27,6 @@ public class ProgramDetailCheckHandler extends AbstractComposite { +public class ProgramExistCheckHandler extends AbstractProgramCheckHandler { @Autowired private RedisCache redisCache; @@ -33,11 +33,6 @@ public class ProgramExistCheckHandler extends AbstractComposite { +public class ProgramOrderCreateParamCheckHandler extends AbstractProgramCheckHandler { @Override protected void execute(final ProgramOrderCreateDto programOrderCreateDto) { //验证手动选择座位和自动分配座位的参数是否正确 @@ -54,11 +53,6 @@ public class ProgramOrderCreateParamCheckHandler extends AbstractComposite { +public class ProgramShowTimeCheckHandler extends AbstractProgramCheckHandler { @Autowired private RedisCache redisCache; @@ -34,11 +33,6 @@ public class ProgramShowTimeCheckHandler extends AbstractComposite { +public class UserExistCheckHandler extends AbstractProgramCheckHandler { @Autowired private UserClient userClient; @@ -60,11 +59,6 @@ public class UserExistCheckHandler extends AbstractComposite initializeHandlers = initializeContext.get(APPLICATION_START_INITIALIZING_BEAN); - initializeHandlers.stream().sorted(Comparator.comparingInt(InitializeHandler::executeOrder)) - .forEach(initializeHandler -> { - initializeHandler.executeInit(applicationContext); - }); + execute(); + } + + @Override + public String type() { + return APPLICATION_START_INITIALIZING_BEAN; } } diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationPostConstructExecute.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationPostConstructExecute.java index fc2603c0..4a52c038 100644 --- a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationPostConstructExecute.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationPostConstructExecute.java @@ -1,13 +1,9 @@ package com.damai.initialize.execute; -import com.damai.initialize.base.InitializeHandler; -import com.damai.initialize.context.InitializeContext; -import lombok.AllArgsConstructor; +import com.damai.initialize.execute.base.AbstractApplicationExecute; import org.springframework.context.ConfigurableApplicationContext; import javax.annotation.PostConstruct; -import java.util.Comparator; -import java.util.List; import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_START_POST_CONSTRUCT; @@ -16,19 +12,19 @@ import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_ST * @description: 用于处理 {@link PostConstruct} 应用程序启动事件。 * @author: 阿宽不是程序员 **/ -@AllArgsConstructor -public class ApplicationPostConstructExecute { +public class ApplicationPostConstructExecute extends AbstractApplicationExecute { - private final ConfigurableApplicationContext applicationContext; - - private final InitializeContext initializeContext; + public ApplicationPostConstructExecute(ConfigurableApplicationContext applicationContext){ + super(applicationContext); + } @PostConstruct public void postConstructExecute() { - List initializeHandlers = initializeContext.get(APPLICATION_START_POST_CONSTRUCT); - initializeHandlers.stream().sorted(Comparator.comparingInt(InitializeHandler::executeOrder)) - .forEach(initializeHandler -> { - initializeHandler.executeInit(applicationContext); - }); + execute(); + } + + @Override + public String type() { + return APPLICATION_START_POST_CONSTRUCT; } } diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationStartEventListenerExecute.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationStartEventListenerExecute.java index ad4ec1a9..f4cac1ff 100644 --- a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationStartEventListenerExecute.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationStartEventListenerExecute.java @@ -1,13 +1,9 @@ package com.damai.initialize.execute; -import com.damai.initialize.base.InitializeHandler; -import com.damai.initialize.context.InitializeContext; -import lombok.AllArgsConstructor; +import com.damai.initialize.execute.base.AbstractApplicationExecute; import org.springframework.boot.context.event.ApplicationStartedEvent; import org.springframework.context.ApplicationListener; - -import java.util.Comparator; -import java.util.List; +import org.springframework.context.ConfigurableApplicationContext; import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_START_EVENT_LISTENER; @@ -16,17 +12,19 @@ import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_ST * @description: 用于处理 {@link ApplicationStartedEvent} 应用程序启动事件。 * @author: 阿宽不是程序员 **/ -@AllArgsConstructor -public class ApplicationStartEventListenerExecute implements ApplicationListener { +public class ApplicationStartEventListenerExecute extends AbstractApplicationExecute implements ApplicationListener { - private final InitializeContext initializeContext; + public ApplicationStartEventListenerExecute(ConfigurableApplicationContext applicationContext){ + super(applicationContext); + } @Override public void onApplicationEvent(ApplicationStartedEvent event) { - List initializeHandlers = initializeContext.get(APPLICATION_START_EVENT_LISTENER); - initializeHandlers.stream().sorted(Comparator.comparingInt(InitializeHandler::executeOrder)) - .forEach(initializeHandler -> { - initializeHandler.executeInit(event.getApplicationContext()); - }); + execute(); + } + + @Override + public String type() { + return APPLICATION_START_EVENT_LISTENER; } } diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/context/InitializeContext.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/base/AbstractApplicationExecute.java similarity index 31% rename from damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/context/InitializeContext.java rename to damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/base/AbstractApplicationExecute.java index 5e9b308c..57a9e975 100644 --- a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/context/InitializeContext.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/base/AbstractApplicationExecute.java @@ -1,36 +1,35 @@ -package com.damai.initialize.context; +package com.damai.initialize.execute.base; -import cn.hutool.core.collection.CollectionUtil; -import com.damai.enums.BaseCode; -import com.damai.exception.DaMaiFrameException; import com.damai.initialize.base.InitializeHandler; -import org.springframework.context.ApplicationContextInitializer; +import lombok.AllArgsConstructor; import org.springframework.context.ConfigurableApplicationContext; -import java.util.HashMap; -import java.util.List; +import java.util.Comparator; import java.util.Map; -import java.util.Optional; -import java.util.stream.Collectors; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: 初始化执行策略上下文 + * @description: 用于处理应用程序启动执行的基类 * @author: 阿宽不是程序员 **/ -public class InitializeContext implements ApplicationContextInitializer { +@AllArgsConstructor +public abstract class AbstractApplicationExecute { - private Map> map = new HashMap<>(8); + private final ConfigurableApplicationContext applicationContext; - - public List get(String type){ - return Optional.ofNullable(map.get(type)).filter(CollectionUtil::isNotEmpty) - .orElseThrow(() -> new DaMaiFrameException(BaseCode.INITIALIZE_HANDLER_STRATEGY_NOT_EXIST)); - } - - @Override - public void initialize(ConfigurableApplicationContext applicationContext) { + public void execute(){ Map initializeHandlerMap = applicationContext.getBeansOfType(InitializeHandler.class); - map = initializeHandlerMap.values().stream().collect(Collectors.groupingBy(InitializeHandler::type)); + initializeHandlerMap.values() + .stream() + .filter(initializeHandler -> initializeHandler.type().equals(type())) + .sorted(Comparator.comparingInt(InitializeHandler::executeOrder)) + .forEach(initializeHandler -> { + initializeHandler.executeInit(applicationContext); + }); } + /** + * 初始化执行 类型 + * @return 类型 + * */ + public abstract String type(); } diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/AbstractComposite.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/AbstractComposite.java similarity index 98% rename from damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/AbstractComposite.java rename to damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/AbstractComposite.java index 69c127f3..d9bd5488 100644 --- a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/AbstractComposite.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/AbstractComposite.java @@ -1,4 +1,4 @@ -package com.damai.initialize.composite; +package com.damai.initialize.impl.composite; import java.util.ArrayList; import java.util.LinkedList; diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/CompositeAutoConfiguration.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/CompositeAutoConfiguration.java similarity index 63% rename from damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/CompositeAutoConfiguration.java rename to damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/CompositeAutoConfiguration.java index 330628ac..44a5c09e 100644 --- a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/CompositeAutoConfiguration.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/CompositeAutoConfiguration.java @@ -1,5 +1,6 @@ -package com.damai.initialize.composite; +package com.damai.initialize.impl.composite; +import com.damai.initialize.impl.composite.init.CompositeInit; import org.springframework.context.annotation.Bean; /** @@ -14,4 +15,8 @@ public class CompositeAutoConfiguration { return new CompositeContainer(); } + @Bean + public CompositeInit compositeInit(CompositeContainer compositeContainer){ + return new CompositeInit(compositeContainer); + } } diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/CompositeContainer.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/CompositeContainer.java similarity index 98% rename from damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/CompositeContainer.java rename to damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/CompositeContainer.java index 1714348d..7dde5dea 100644 --- a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/CompositeContainer.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/CompositeContainer.java @@ -1,4 +1,4 @@ -package com.damai.initialize.composite; +package com.damai.initialize.impl.composite; import com.damai.enums.BaseCode; import com.damai.exception.DaMaiFrameException; diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/init/CompositeInit.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/init/CompositeInit.java similarity index 88% rename from damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/init/CompositeInit.java rename to damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/init/CompositeInit.java index 17413394..1fdc2493 100644 --- a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/composite/init/CompositeInit.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/init/CompositeInit.java @@ -1,7 +1,7 @@ -package com.damai.initialize.composite.init; +package com.damai.initialize.impl.composite.init; import com.damai.initialize.base.AbstractApplicationStartEventListenerInitializeHandler; -import com.damai.initialize.composite.CompositeContainer; +import com.damai.initialize.impl.composite.CompositeContainer; import lombok.AllArgsConstructor; import org.springframework.context.ConfigurableApplicationContext; diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/resources/META-INF/spring.factories b/damai-spring-cloud-framework/damai-service-initialize/src/main/resources/META-INF/spring.factories index dfa7a777..839c9054 100644 --- a/damai-spring-cloud-framework/damai-service-initialize/src/main/resources/META-INF/spring.factories +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/resources/META-INF/spring.factories @@ -1,5 +1,3 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.damai.initialize.config.InitializeAutoConfig,\ - com.damai.initialize.composite.CompositeAutoConfiguration -org.springframework.context.ApplicationContextInitializer=\ - com.damai.initialize.context.InitializeContext \ No newline at end of file + com.damai.initialize.impl.composite.CompositeAutoConfiguration \ No newline at end of file -- Gitee From 53a46d14e06a632568295210b45e52eefa323a99 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Fri, 23 Feb 2024 14:21:36 +0800 Subject: [PATCH 12/74] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=8A=BD=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/init/ProgramCategoryInitData.java | 4 +-- .../init/ProgramElasticsearchInitData.java | 4 +-- .../service/init/ProgramShowTimeRenewal.java | 4 +-- ...ctApplicationCommandLineRunnerHandler.java | 18 ++++++++++++ ...ctApplicationInitializingBeanHandler.java} | 6 ++-- ...tractApplicationPostConstructHandler.java} | 6 ++-- ...ApplicationStartEventListenerHandler.java} | 6 ++-- .../config/InitializeAutoConfig.java | 7 +++++ .../constant/InitializeHandlerType.java | 8 +++-- .../ApplicationCommandLineRunnerExecute.java | 29 +++++++++++++++++++ .../ApplicationInitializingBeanExecute.java | 4 +-- .../ApplicationPostConstructExecute.java | 4 +-- .../ApplicationStartEventListenerExecute.java | 4 +-- .../impl/composite/init/CompositeInit.java | 4 +-- 14 files changed, 82 insertions(+), 26 deletions(-) create mode 100644 damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationCommandLineRunnerHandler.java rename damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/{AbstractApplicationStartEventListenerInitializeHandler.java => AbstractApplicationInitializingBeanHandler.java} (72%) rename damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/{AbstractApplicationPostConstructInitializeHandler.java => AbstractApplicationPostConstructHandler.java} (71%) rename damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/{AbstractApplicationInitializingBeanInitializeHandler.java => AbstractApplicationStartEventListenerHandler.java} (71%) create mode 100644 damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationCommandLineRunnerExecute.java diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramCategoryInitData.java b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramCategoryInitData.java index b36c81e7..d80b45c6 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramCategoryInitData.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramCategoryInitData.java @@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.damai.BusinessThreadPool; import com.damai.core.RedisKeyManage; import com.damai.entity.ProgramCategory; -import com.damai.initialize.base.AbstractApplicationPostConstructInitializeHandler; +import com.damai.initialize.base.AbstractApplicationPostConstructHandler; import com.damai.mapper.ProgramCategoryMapper; import com.damai.redis.RedisCache; import com.damai.redis.RedisKeyBuild; @@ -27,7 +27,7 @@ import static com.damai.core.DistributedLockConstants.PROGRAM_CATEGORY_LOCK; * @author: 阿宽不是程序员 **/ @Component -public class ProgramCategoryInitData extends AbstractApplicationPostConstructInitializeHandler { +public class ProgramCategoryInitData extends AbstractApplicationPostConstructHandler { @Autowired private ProgramCategoryMapper programCategoryMapper; diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramElasticsearchInitData.java b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramElasticsearchInitData.java index baee5d9a..6cf7f8ec 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramElasticsearchInitData.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramElasticsearchInitData.java @@ -4,7 +4,7 @@ import com.damai.BusinessThreadPool; import com.damai.core.SpringUtil; import com.damai.dto.EsDocumentMappingDto; import com.damai.entity.TicketCategoryAggregate; -import com.damai.initialize.base.AbstractApplicationPostConstructInitializeHandler; +import com.damai.initialize.base.AbstractApplicationPostConstructHandler; import com.damai.service.ProgramService; import com.damai.util.BusinessEsHandle; import com.damai.vo.ProgramVo; @@ -26,7 +26,7 @@ import java.util.Optional; **/ @Slf4j @Component -public class ProgramElasticsearchInitData extends AbstractApplicationPostConstructInitializeHandler { +public class ProgramElasticsearchInitData extends AbstractApplicationPostConstructHandler { @Autowired private BusinessEsHandle businessEsHandle; diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramShowTimeRenewal.java b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramShowTimeRenewal.java index 9f4186b2..e1c6c9d7 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramShowTimeRenewal.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramShowTimeRenewal.java @@ -1,6 +1,6 @@ package com.damai.service.init; -import com.damai.initialize.base.AbstractApplicationPostConstructInitializeHandler; +import com.damai.initialize.base.AbstractApplicationPostConstructHandler; import com.damai.service.ProgramShowTimeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ConfigurableApplicationContext; @@ -12,7 +12,7 @@ import org.springframework.stereotype.Component; * @author: 阿宽不是程序员 **/ @Component -public class ProgramShowTimeRenewal extends AbstractApplicationPostConstructInitializeHandler { +public class ProgramShowTimeRenewal extends AbstractApplicationPostConstructHandler { @Autowired private ProgramShowTimeService programShowTimeService; diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationCommandLineRunnerHandler.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationCommandLineRunnerHandler.java new file mode 100644 index 00000000..6cec80a0 --- /dev/null +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationCommandLineRunnerHandler.java @@ -0,0 +1,18 @@ +package com.damai.initialize.base; + +import org.springframework.boot.CommandLineRunner; + +import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_POST_CONSTRUCT; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 用于处理 {@link CommandLineRunner} 类型 初始化执行 抽象 + * @author: 阿宽不是程序员 + **/ +public abstract class AbstractApplicationCommandLineRunnerHandler implements InitializeHandler { + + @Override + public String type() { + return APPLICATION_POST_CONSTRUCT; + } +} diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationStartEventListenerInitializeHandler.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationInitializingBeanHandler.java similarity index 72% rename from damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationStartEventListenerInitializeHandler.java rename to damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationInitializingBeanHandler.java index a7ee276e..19b09e36 100644 --- a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationStartEventListenerInitializeHandler.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationInitializingBeanHandler.java @@ -2,17 +2,17 @@ package com.damai.initialize.base; import org.springframework.beans.factory.InitializingBean; -import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_START_EVENT_LISTENER; +import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_INITIALIZING_BEAN; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 * @description: 用于处理 {@link InitializingBean} 类型 初始化执行 抽象 * @author: 阿宽不是程序员 **/ -public abstract class AbstractApplicationStartEventListenerInitializeHandler implements InitializeHandler { +public abstract class AbstractApplicationInitializingBeanHandler implements InitializeHandler { @Override public String type() { - return APPLICATION_START_EVENT_LISTENER; + return APPLICATION_INITIALIZING_BEAN; } } diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationPostConstructInitializeHandler.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationPostConstructHandler.java similarity index 71% rename from damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationPostConstructInitializeHandler.java rename to damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationPostConstructHandler.java index 6be7ebbb..c3ac5449 100644 --- a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationPostConstructInitializeHandler.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationPostConstructHandler.java @@ -2,17 +2,17 @@ package com.damai.initialize.base; import javax.annotation.PostConstruct; -import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_START_POST_CONSTRUCT; +import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_POST_CONSTRUCT; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 * @description: 用于处理 {@link PostConstruct} 类型 初始化执行 抽象 * @author: 阿宽不是程序员 **/ -public abstract class AbstractApplicationPostConstructInitializeHandler implements InitializeHandler { +public abstract class AbstractApplicationPostConstructHandler implements InitializeHandler { @Override public String type() { - return APPLICATION_START_POST_CONSTRUCT; + return APPLICATION_POST_CONSTRUCT; } } diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationInitializingBeanInitializeHandler.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationStartEventListenerHandler.java similarity index 71% rename from damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationInitializingBeanInitializeHandler.java rename to damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationStartEventListenerHandler.java index 1995a508..818fa501 100644 --- a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationInitializingBeanInitializeHandler.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/base/AbstractApplicationStartEventListenerHandler.java @@ -2,17 +2,17 @@ package com.damai.initialize.base; import org.springframework.beans.factory.InitializingBean; -import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_START_INITIALIZING_BEAN; +import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_EVENT_LISTENER; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 * @description: 用于处理 {@link InitializingBean} 类型 初始化执行 抽象 * @author: 阿宽不是程序员 **/ -public abstract class AbstractApplicationInitializingBeanInitializeHandler implements InitializeHandler { +public abstract class AbstractApplicationStartEventListenerHandler implements InitializeHandler { @Override public String type() { - return APPLICATION_START_INITIALIZING_BEAN; + return APPLICATION_EVENT_LISTENER; } } diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/config/InitializeAutoConfig.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/config/InitializeAutoConfig.java index a67d8d4b..48045e6f 100644 --- a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/config/InitializeAutoConfig.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/config/InitializeAutoConfig.java @@ -1,5 +1,6 @@ package com.damai.initialize.config; +import com.damai.initialize.execute.ApplicationCommandLineRunnerExecute; import com.damai.initialize.execute.ApplicationInitializingBeanExecute; import com.damai.initialize.execute.ApplicationPostConstructExecute; import com.damai.initialize.execute.ApplicationStartEventListenerExecute; @@ -30,4 +31,10 @@ public class InitializeAutoConfig { ConfigurableApplicationContext applicationContext){ return new ApplicationStartEventListenerExecute(applicationContext); } + + @Bean + public ApplicationCommandLineRunnerExecute applicationCommandLineRunnerExecute( + ConfigurableApplicationContext applicationContext){ + return new ApplicationCommandLineRunnerExecute(applicationContext); + } } diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/constant/InitializeHandlerType.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/constant/InitializeHandlerType.java index c6da146f..3721d51d 100644 --- a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/constant/InitializeHandlerType.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/constant/InitializeHandlerType.java @@ -7,9 +7,11 @@ package com.damai.initialize.constant; **/ public class InitializeHandlerType { - public static final String APPLICATION_START_EVENT_LISTENER = "application_start_event_listener"; + public static final String APPLICATION_EVENT_LISTENER = "application_event_listener"; - public static final String APPLICATION_START_POST_CONSTRUCT = "application_start_post_construct"; + public static final String APPLICATION_POST_CONSTRUCT = "application_post_construct"; - public static final String APPLICATION_START_INITIALIZING_BEAN = "application_start_initializing_bean"; + public static final String APPLICATION_INITIALIZING_BEAN = "application_initializing_bean"; + + public static final String APPLICATION_COMMAND_LINE_RUNNER = "application_command_line_runner"; } diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationCommandLineRunnerExecute.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationCommandLineRunnerExecute.java new file mode 100644 index 00000000..e33a5c73 --- /dev/null +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationCommandLineRunnerExecute.java @@ -0,0 +1,29 @@ +package com.damai.initialize.execute; + +import com.damai.initialize.execute.base.AbstractApplicationExecute; +import org.springframework.boot.CommandLineRunner; +import org.springframework.context.ConfigurableApplicationContext; + +import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_COMMAND_LINE_RUNNER; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 用于处理 {@link CommandLineRunner} 应用程序启动事件。 + * @author: 阿宽不是程序员 + **/ +public class ApplicationCommandLineRunnerExecute extends AbstractApplicationExecute implements CommandLineRunner { + + public ApplicationCommandLineRunnerExecute(ConfigurableApplicationContext applicationContext){ + super(applicationContext); + } + + @Override + public void run(final String... args) { + execute(); + } + + @Override + public String type() { + return APPLICATION_COMMAND_LINE_RUNNER; + } +} diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationInitializingBeanExecute.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationInitializingBeanExecute.java index 70a21e68..1e153069 100644 --- a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationInitializingBeanExecute.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationInitializingBeanExecute.java @@ -4,7 +4,7 @@ import com.damai.initialize.execute.base.AbstractApplicationExecute; import org.springframework.beans.factory.InitializingBean; import org.springframework.context.ConfigurableApplicationContext; -import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_START_INITIALIZING_BEAN; +import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_INITIALIZING_BEAN; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 @@ -25,6 +25,6 @@ public class ApplicationInitializingBeanExecute extends AbstractApplicationExecu @Override public String type() { - return APPLICATION_START_INITIALIZING_BEAN; + return APPLICATION_INITIALIZING_BEAN; } } diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationPostConstructExecute.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationPostConstructExecute.java index 4a52c038..635fc0ff 100644 --- a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationPostConstructExecute.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationPostConstructExecute.java @@ -5,7 +5,7 @@ import org.springframework.context.ConfigurableApplicationContext; import javax.annotation.PostConstruct; -import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_START_POST_CONSTRUCT; +import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_POST_CONSTRUCT; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 @@ -25,6 +25,6 @@ public class ApplicationPostConstructExecute extends AbstractApplicationExecute @Override public String type() { - return APPLICATION_START_POST_CONSTRUCT; + return APPLICATION_POST_CONSTRUCT; } } diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationStartEventListenerExecute.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationStartEventListenerExecute.java index f4cac1ff..7e7bcf00 100644 --- a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationStartEventListenerExecute.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/execute/ApplicationStartEventListenerExecute.java @@ -5,7 +5,7 @@ import org.springframework.boot.context.event.ApplicationStartedEvent; import org.springframework.context.ApplicationListener; import org.springframework.context.ConfigurableApplicationContext; -import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_START_EVENT_LISTENER; +import static com.damai.initialize.constant.InitializeHandlerType.APPLICATION_EVENT_LISTENER; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 @@ -25,6 +25,6 @@ public class ApplicationStartEventListenerExecute extends AbstractApplicationExe @Override public String type() { - return APPLICATION_START_EVENT_LISTENER; + return APPLICATION_EVENT_LISTENER; } } diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/init/CompositeInit.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/init/CompositeInit.java index 1fdc2493..fad5ff36 100644 --- a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/init/CompositeInit.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/init/CompositeInit.java @@ -1,6 +1,6 @@ package com.damai.initialize.impl.composite.init; -import com.damai.initialize.base.AbstractApplicationStartEventListenerInitializeHandler; +import com.damai.initialize.base.AbstractApplicationStartEventListenerHandler; import com.damai.initialize.impl.composite.CompositeContainer; import lombok.AllArgsConstructor; import org.springframework.context.ConfigurableApplicationContext; @@ -11,7 +11,7 @@ import org.springframework.context.ConfigurableApplicationContext; * @author: 阿宽不是程序员 **/ @AllArgsConstructor -public class CompositeInit extends AbstractApplicationStartEventListenerInitializeHandler { +public class CompositeInit extends AbstractApplicationStartEventListenerHandler { private final CompositeContainer compositeContainer; -- Gitee From f633a581e3e566c606a57af8c1ec82e4eefd7d88 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Fri, 23 Feb 2024 18:33:18 +0800 Subject: [PATCH 13/74] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=8A=BD=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/composite/AbstractComposite.java | 25 +++++++++---------- .../impl/composite/CompositeContainer.java | 14 ----------- 2 files changed, 12 insertions(+), 27 deletions(-) diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/AbstractComposite.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/AbstractComposite.java index d9bd5488..cb3774da 100644 --- a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/AbstractComposite.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/AbstractComposite.java @@ -38,47 +38,46 @@ public abstract class AbstractComposite { public abstract Integer executeParentOrder(); /** - * 返回组件的执行层级。 - * @return 返回组件的执行层级。 + * 返回组件的执行层级 + * @return 返回组件的执行层级 */ public abstract Integer executeTier(); /** - * 返回组件在同一层级中的执行顺序。 - * @return 返回组件在同一层级中的执行顺序。 + * 返回组件在同一层级中的执行顺序 + * @return 返回组件在同一层级中的执行顺序 */ public abstract Integer executeOrder(); /** - * 将子组件添加到当前组件的子列表中。 - * @param abstractComposite 子组件实例。 + * 将子组件添加到当前组件的子列表中 + * @param abstractComposite 子组件实例 */ public void add(AbstractComposite abstractComposite) { list.add(abstractComposite); } /** - * 按层次结构执行每个组件的业务逻辑。 - * @param param 泛型参数,用于业务执行。 + * 按层次结构执行每个组件的业务逻辑 + * @param param 泛型参数,用于业务执行 */ public void allExecute(T param) { Queue> queue = new LinkedList<>(); - // 将当前对象加入队列 + queue.add(this); while (!queue.isEmpty()) { - // 当前层的大小 + int levelSize = queue.size(); for (int i = 0; i < levelSize; i++) { - // 从队列中取出一个元素 + AbstractComposite current = queue.poll(); - // 执行当前元素的业务逻辑 + assert current != null; current.execute(param); - // 将当前元素的子元素加入队列,以便在下一次迭代中处理 queue.addAll(current.list); } } diff --git a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/CompositeContainer.java b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/CompositeContainer.java index 7dde5dea..2970ad1b 100644 --- a/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/CompositeContainer.java +++ b/damai-spring-cloud-framework/damai-service-initialize/src/main/java/com/damai/initialize/impl/composite/CompositeContainer.java @@ -22,14 +22,11 @@ public class CompositeContainer { private final Map allCompositeInterfaceMap = new HashMap<>(); public void init(ConfigurableApplicationContext applicationEvent){ - // 获取所有 AbstractComposite 类型的 Bean Map compositeInterfaceMap = applicationEvent.getBeansOfType(AbstractComposite.class); Map> collect = compositeInterfaceMap.values().stream().collect(Collectors.groupingBy(AbstractComposite::type)); collect.forEach((k,v) -> { - // 构建组件树结构 AbstractComposite root = build(v); - // 如果根节点存在,则执行业务逻辑 if (Objects.nonNull(root)) { allCompositeInterfaceMap.put(k, root); } @@ -52,7 +49,6 @@ public class CompositeContainer { Map nextLevelComponents = groupedByTier.get(currentTier + 1); if (currentLevelComponents == null) { - // 当前层级没有组件时,直接返回 return; } @@ -60,18 +56,14 @@ public class CompositeContainer { for (AbstractComposite child : nextLevelComponents.values()) { Integer parentOrder = child.executeParentOrder(); if (parentOrder == null || parentOrder == 0) { - // 跳过根节点 continue; } AbstractComposite parent = currentLevelComponents.get(parentOrder); if (parent != null) { - // 将子节点添加到父节点的子列表中 parent.add(child); } } } - - // 递归构建下一层级的树结构 buildTree(groupedByTier, currentTier + 1); } @@ -81,26 +73,20 @@ public class CompositeContainer { * @return 根节点。 */ private static AbstractComposite build(Collection components) { - // 按层级和执行顺序组织组件 Map> groupedByTier = new TreeMap<>(); for (AbstractComposite component : components) { groupedByTier.computeIfAbsent(component.executeTier(), k -> new HashMap<>(16)) - // 使用 executeOrder 作为键 .put(component.executeOrder(), component); } - // 找到最小层级 Integer minTier = groupedByTier.keySet().stream().min(Integer::compare).orElse(null); if (minTier == null) { - // 没有组件时返回空 return null; } - // 构建组件树 buildTree(groupedByTier, minTier); - // 找到并返回根节点 return groupedByTier.get(minTier).values().stream() .filter(c -> c.executeParentOrder() == null || c.executeParentOrder() == 0) .findFirst() -- Gitee From 7447ae88470186fdd432f76ba7bf2859310fbc00 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Sat, 24 Feb 2024 23:34:16 +0800 Subject: [PATCH 14/74] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/damai/core/RedisKeyManage.java | 2 + .../com/damai/service/UserCaptchaService.java | 25 ++++++++--- .../impl/UserRegisterCountCheckHandler.java | 5 +-- .../service/lua/CheckNeedCaptchaOperate.java | 43 +++++++++++++++++++ .../damai/service/tool/RequestCounter.java | 13 +++--- .../main/resources/lua/checkNeedCaptcha.lua | 39 +++++++++++++++++ 6 files changed, 110 insertions(+), 17 deletions(-) create mode 100644 damai-server/damai-user-service/src/main/java/com/damai/service/lua/CheckNeedCaptchaOperate.java create mode 100644 damai-server/damai-user-service/src/main/resources/lua/checkNeedCaptcha.lua diff --git a/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java b/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java index 7e3b6060..0ed26865 100644 --- a/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java +++ b/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java @@ -68,6 +68,8 @@ public enum RedisKeyManage { PROGRAM_CATEGORY_HASH("d_mai_program_category_hash","节目类型hash集合","节目类型hash集合","k"), + COUNTER("d_mai_counter_%S","计数器的key","计数器的值","k"), + ; /** diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java b/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java index 40e14435..c74423ec 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java @@ -2,14 +2,19 @@ package com.damai.service; import com.anji.captcha.model.common.ResponseModel; import com.anji.captcha.model.vo.CaptchaVO; +import com.damai.core.RedisKeyManage; +import com.damai.service.lua.CheckNeedCaptchaOperate; import com.damai.service.tool.RequestCounter; import com.damai.vo.CheckVerifyVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: 验证码 service + * @description: 判断是否需要验证码 * @author: 阿宽不是程序员 **/ @Service @@ -21,13 +26,23 @@ public class UserCaptchaService { @Autowired private RequestCounter requestCounter; + @Autowired + private CheckNeedCaptchaOperate checkNeedCaptchaOperate; + public CheckVerifyVo checkNeedCaptcha() { CheckVerifyVo checkVerifyVo = new CheckVerifyVo(); checkVerifyVo.setType(0); - boolean result = requestCounter.onRequest(); - if (result) { - checkVerifyVo.setType(1); - } +// boolean result = requestCounter.onRequest(); +// if (result) { +// checkVerifyVo.setType(1); +// } + List keys = new ArrayList<>(); + keys.add(RedisKeyManage.COUNTER.getKey()); +// keys.add(); +// keys.add(); +// keys.add(); +// keys.add(); + checkNeedCaptchaOperate.checkNeedCaptchaOperate(keys,null); return checkVerifyVo; } diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterCountCheckHandler.java b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterCountCheckHandler.java index 330c0e3b..a7cae06b 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterCountCheckHandler.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterCountCheckHandler.java @@ -10,7 +10,7 @@ import org.springframework.stereotype.Component; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: 用户注册tps检查 + * @description: 用户注册请求数检查 * @author: 阿宽不是程序员 **/ @Component @@ -19,9 +19,6 @@ public class UserRegisterCountCheckHandler extends AbstractUserRegisterCheckHand @Autowired private RequestCounter requestCounter; - /** - * 验证每秒用户注册请求是否超过最大限制 - * */ @Override protected void execute(final UserRegisterDto param) { boolean result = requestCounter.onRequest(); diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/lua/CheckNeedCaptchaOperate.java b/damai-server/damai-user-service/src/main/java/com/damai/service/lua/CheckNeedCaptchaOperate.java new file mode 100644 index 00000000..39d01e71 --- /dev/null +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/lua/CheckNeedCaptchaOperate.java @@ -0,0 +1,43 @@ +package com.damai.service.lua; + +import com.damai.redis.RedisCache; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ClassPathResource; +import org.springframework.data.redis.core.script.DefaultRedisScript; +import org.springframework.scripting.support.ResourceScriptSource; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.List; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 判断是否需要进行校验验证码 + * @author: 阿宽不是程序员 + **/ +@Slf4j +@Component +public class CheckNeedCaptchaOperate { + + @Autowired + private RedisCache redisCache; + + private DefaultRedisScript redisScript; + + @PostConstruct + public void init(){ + try { + redisScript = new DefaultRedisScript<>(); + redisScript.setScriptSource(new ResourceScriptSource(new ClassPathResource("lua/checkNeedCaptcha.lua"))); + redisScript.setResultType(String.class); + } catch (Exception e) { + log.error("redisScript init lua error",e); + } + } + + public Boolean checkNeedCaptchaOperate(List keys, String[] args){ + Object object = redisCache.getInstance().execute(redisScript, keys, args); + return Boolean.parseBoolean((String)object); + } +} diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/tool/RequestCounter.java b/damai-server/damai-user-service/src/main/java/com/damai/service/tool/RequestCounter.java index e99d3b6a..443d4a33 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/tool/RequestCounter.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/tool/RequestCounter.java @@ -1,5 +1,6 @@ package com.damai.service.tool; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @@ -10,30 +11,26 @@ import java.util.concurrent.atomic.AtomicLong; * @description: 计数器 * @author: 阿宽不是程序员 **/ +@Slf4j @Component public class RequestCounter { private final AtomicInteger count = new AtomicInteger(0); private final AtomicLong lastResetTime = new AtomicLong(System.currentTimeMillis()); - @Value("${request_count_threshold:100}") - private int maxRequestsPerSecond = 100; + @Value("${request_count_threshold:1000}") + private int maxRequestsPerSecond = 1000; public synchronized boolean onRequest() { long currentTime = System.currentTimeMillis(); - // 如果当前时间和上次重置时间差超过1秒 long differenceValue = 1000; if (currentTime - lastResetTime.get() >= differenceValue) { - // 重置计数器 count.set(0); - // 更新重置时间 lastResetTime.set(currentTime); } if (count.incrementAndGet() > maxRequestsPerSecond) { - System.out.println("请求超过每秒100次限制"); - // 超过限制后重置计数器 + log.warn("请求超过每秒{}次限制",maxRequestsPerSecond); count.set(0); - // 更新重置时间 lastResetTime.set(System.currentTimeMillis()); return true; } diff --git a/damai-server/damai-user-service/src/main/resources/lua/checkNeedCaptcha.lua b/damai-server/damai-user-service/src/main/resources/lua/checkNeedCaptcha.lua new file mode 100644 index 00000000..e7f38dfb --- /dev/null +++ b/damai-server/damai-user-service/src/main/resources/lua/checkNeedCaptcha.lua @@ -0,0 +1,39 @@ +-- 计数器的键 +local countKey = KEYS[1] +-- 时间戳的键 +local timeKey = KEYS[2] +-- 是否需要校验验证码的键 +local verifyCaptchaKey = KEYS[3] +-- 每秒最大请求次数 +local maxRequestsPerSecond = tonumber(ARGV[1]) +-- 当前时间戳 +local currentTime = tonumber(ARGV[2]) +-- 唯一标识 +local id = tonumber(ARGV[3]) +-- 时间窗口大小,1000毫秒,即1秒 +local differenceValue = 1000 +-- 获取当前计数和上次重置时间 +local count = tonumber(redis.call('get', countKey) or "0") +local lastResetTime = tonumber(redis.call('get', timeKey) or "0") +-- 检查时间窗口是否已过,如果是,则重置计数和时间 +if currentTime - lastResetTime >= differenceValue then + count = 0 + redis.call('set', countKey, count) + redis.call('set', timeKey, currentTime) +end +-- 更新计数 +count = count + 1 +-- 判断是否超过限制 +if count > maxRequestsPerSecond then + -- 超过限制,可以在这里记录日志(注意:Redis自身不支持日志记录到文件,需要另外处理) + -- 重置计数和时间戳 + count = 0 + redis.call('set', countKey, count) + redis.call('set', timeKey, currentTime) + redis.call('hset',verifyCaptchaKey,id,'yes') + return true +end +-- 未超过限制,更新计数 +redis.call('set', countKey, count) +redis.call('hset',verifyCaptchaKey,id,'no') +return false -- Gitee From 512f333e922e2d0000976985bbc930fded588024 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Sun, 25 Feb 2024 00:05:40 +0800 Subject: [PATCH 15/74] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/damai/core/RedisKeyManage.java | 5 +++- .../com/damai/vo/CheckNeedCaptchaDataVo.java | 21 +++++++++++++ .../controller/UserCaptchaController.java | 3 +- .../com/damai/service/UserCaptchaService.java | 30 +++++++++++-------- .../service/lua/CheckNeedCaptchaOperate.java | 6 ++-- .../main/resources/lua/checkNeedCaptcha.lua | 4 +-- 6 files changed, 51 insertions(+), 18 deletions(-) create mode 100644 damai-server-client/damai-user-client/src/main/java/com/damai/vo/CheckNeedCaptchaDataVo.java diff --git a/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java b/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java index 0ed26865..a28dbb17 100644 --- a/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java +++ b/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java @@ -68,8 +68,11 @@ public enum RedisKeyManage { PROGRAM_CATEGORY_HASH("d_mai_program_category_hash","节目类型hash集合","节目类型hash集合","k"), - COUNTER("d_mai_counter_%S","计数器的key","计数器的值","k"), + COUNTER_COUNT("d_mai_counter_count_%S","计数器的值的key","计数器的值","k"), + COUNTER_TIMESTAMP("d_mai_counter_timestamp_%S","计数器的时间戳的key","计数器的时间戳","k"), + + VERIFY_CAPTCHA_HASH("d_mai_verify_captcha_hash","是否需要校验验证码hash集合的key","是否需要校验验证码hash集合","k"), ; /** diff --git a/damai-server-client/damai-user-client/src/main/java/com/damai/vo/CheckNeedCaptchaDataVo.java b/damai-server-client/damai-user-client/src/main/java/com/damai/vo/CheckNeedCaptchaDataVo.java new file mode 100644 index 00000000..4aaf6a7c --- /dev/null +++ b/damai-server-client/damai-user-client/src/main/java/com/damai/vo/CheckNeedCaptchaDataVo.java @@ -0,0 +1,21 @@ +package com.damai.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 是否需要进行校验验证码 vo + * @author: 阿宽不是程序员 + **/ +@Data +@ApiModel(value="CheckNeedCaptchaDataVo", description ="是否需要进行校验验证码") +public class CheckNeedCaptchaDataVo { + + @ApiModelProperty(name ="verifyCaptcha", dataType ="Integer", value ="是否需要验证码 1:是 0:否") + private Integer verifyCaptcha; + + @ApiModelProperty(name ="id", dataType ="Long", value ="唯一标识id,用户注册接口需要传入此id") + private Long id; +} diff --git a/damai-server/damai-user-service/src/main/java/com/damai/controller/UserCaptchaController.java b/damai-server/damai-user-service/src/main/java/com/damai/controller/UserCaptchaController.java index cb41c8b8..1feeb947 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/controller/UserCaptchaController.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/controller/UserCaptchaController.java @@ -4,6 +4,7 @@ import com.anji.captcha.model.common.ResponseModel; import com.anji.captcha.model.vo.CaptchaVO; import com.damai.common.ApiResponse; import com.damai.service.UserCaptchaService; +import com.damai.vo.CheckNeedCaptchaDataVo; import com.damai.vo.CheckVerifyVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -28,7 +29,7 @@ public class UserCaptchaController { @ApiOperation(value = "检查是否需要验证码") @PostMapping(value = "/check/need") - public ApiResponse checkNeedCaptcha(){ + public ApiResponse checkNeedCaptcha(){ return ApiResponse.ok(userCaptchaService.checkNeedCaptcha()); } diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java b/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java index c74423ec..325a215c 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java @@ -2,11 +2,14 @@ package com.damai.service; import com.anji.captcha.model.common.ResponseModel; import com.anji.captcha.model.vo.CaptchaVO; +import com.baidu.fsg.uid.UidGenerator; import com.damai.core.RedisKeyManage; import com.damai.service.lua.CheckNeedCaptchaOperate; import com.damai.service.tool.RequestCounter; +import com.damai.vo.CheckNeedCaptchaDataVo; import com.damai.vo.CheckVerifyVo; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -20,30 +23,33 @@ import java.util.List; @Service public class UserCaptchaService { + @Value("${verify_captcha_threshold:10}") + private int verifyCaptchaThreshold; + @Autowired private CaptchaHandle captchaHandle; @Autowired private RequestCounter requestCounter; + @Autowired + private UidGenerator uidGenerator; + @Autowired private CheckNeedCaptchaOperate checkNeedCaptchaOperate; - public CheckVerifyVo checkNeedCaptcha() { + public CheckNeedCaptchaDataVo checkNeedCaptcha() { CheckVerifyVo checkVerifyVo = new CheckVerifyVo(); checkVerifyVo.setType(0); -// boolean result = requestCounter.onRequest(); -// if (result) { -// checkVerifyVo.setType(1); -// } List keys = new ArrayList<>(); - keys.add(RedisKeyManage.COUNTER.getKey()); -// keys.add(); -// keys.add(); -// keys.add(); -// keys.add(); - checkNeedCaptchaOperate.checkNeedCaptchaOperate(keys,null); - return checkVerifyVo; + keys.add(RedisKeyManage.COUNTER_COUNT.getKey()); + keys.add(RedisKeyManage.COUNTER_TIMESTAMP.getKey()); + keys.add(RedisKeyManage.VERIFY_CAPTCHA_HASH.getKey()); + String[] data = new String[3]; + data[0] = String.valueOf(verifyCaptchaThreshold); + data[1] = String.valueOf(System.currentTimeMillis()); + data[2] = String.valueOf(uidGenerator.getUid()); + return checkNeedCaptchaOperate.checkNeedCaptchaOperate(keys, data); } public ResponseModel getCaptcha(CaptchaVO captchaVO) { diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/lua/CheckNeedCaptchaOperate.java b/damai-server/damai-user-service/src/main/java/com/damai/service/lua/CheckNeedCaptchaOperate.java index 39d01e71..8903a05b 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/lua/CheckNeedCaptchaOperate.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/lua/CheckNeedCaptchaOperate.java @@ -1,6 +1,8 @@ package com.damai.service.lua; +import com.alibaba.fastjson2.JSON; import com.damai.redis.RedisCache; +import com.damai.vo.CheckNeedCaptchaDataVo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; @@ -36,8 +38,8 @@ public class CheckNeedCaptchaOperate { } } - public Boolean checkNeedCaptchaOperate(List keys, String[] args){ + public CheckNeedCaptchaDataVo checkNeedCaptchaOperate(List keys, String[] args){ Object object = redisCache.getInstance().execute(redisScript, keys, args); - return Boolean.parseBoolean((String)object); + return JSON.parseObject((String)object,CheckNeedCaptchaDataVo.class); } } diff --git a/damai-server/damai-user-service/src/main/resources/lua/checkNeedCaptcha.lua b/damai-server/damai-user-service/src/main/resources/lua/checkNeedCaptcha.lua index e7f38dfb..64be2972 100644 --- a/damai-server/damai-user-service/src/main/resources/lua/checkNeedCaptcha.lua +++ b/damai-server/damai-user-service/src/main/resources/lua/checkNeedCaptcha.lua @@ -31,9 +31,9 @@ if count > maxRequestsPerSecond then redis.call('set', countKey, count) redis.call('set', timeKey, currentTime) redis.call('hset',verifyCaptchaKey,id,'yes') - return true + return string.format('{"verifyCaptcha": %d, "id": %d}',1,id) end -- 未超过限制,更新计数 redis.call('set', countKey, count) redis.call('hset',verifyCaptchaKey,id,'no') -return false +return string.format('{"verifyCaptcha": %d, "id": %d}',0,id) -- Gitee From e15452a53a81075227623cc4bf528943c0bb38b9 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Sun, 25 Feb 2024 16:27:45 +0800 Subject: [PATCH 16/74] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/damai/enums/BaseCode.java | 8 +++ .../java/com/damai/enums/VerifyCaptcha.java | 71 +++++++++++++++++++ .../java/com/damai/core/RedisKeyManage.java | 6 +- .../java/com/damai/dto/UserRegisterDto.java | 4 ++ .../com/damai/vo/CheckNeedCaptchaDataVo.java | 8 +-- .../main/java/com/damai/vo/CheckVerifyVo.java | 18 ----- .../controller/UserCaptchaController.java | 1 - .../com/damai/service/UserCaptchaService.java | 25 ++++--- .../java/com/damai/service/UserService.java | 3 + .../impl/UserRegisterVerifyCaptcha.java | 24 ++++++- .../service/lua/CheckNeedCaptchaOperate.java | 6 +- .../main/resources/lua/checkNeedCaptcha.lua | 40 +++++------ 12 files changed, 154 insertions(+), 60 deletions(-) create mode 100644 damai-common/src/main/java/com/damai/enums/VerifyCaptcha.java delete mode 100644 damai-server-client/damai-user-client/src/main/java/com/damai/vo/CheckVerifyVo.java diff --git a/damai-common/src/main/java/com/damai/enums/BaseCode.java b/damai-common/src/main/java/com/damai/enums/BaseCode.java index bdf02b37..1ec6c6d1 100644 --- a/damai-common/src/main/java/com/damai/enums/BaseCode.java +++ b/damai-common/src/main/java/com/damai/enums/BaseCode.java @@ -19,6 +19,14 @@ public enum BaseCode { INITIALIZE_HANDLER_STRATEGY_NOT_EXIST(502,"初始化操作策略不存在"), + VERIFY_CAPTCHA_ID_NOT_EXIST(503,"校验验证码id不存在"), + + CAPTCHA_TYPE_EMPTY(504,"验证码类型为空"), + + POINT_JSON_EMPTY(505,"点坐标为空"), + + CAPTCHA_TOKEN_JSON_EMPTY(506,"验证码token为空"), + RSA_SIGN_ERROR(10000,"res签名验证失败"), RSA_DECRYPT_ERROR(10001,"res解密失败"), diff --git a/damai-common/src/main/java/com/damai/enums/VerifyCaptcha.java b/damai-common/src/main/java/com/damai/enums/VerifyCaptcha.java new file mode 100644 index 00000000..8c252c60 --- /dev/null +++ b/damai-common/src/main/java/com/damai/enums/VerifyCaptcha.java @@ -0,0 +1,71 @@ +package com.damai.enums; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 是否需要校验验证码 + * @author: 阿宽不是程序员 + **/ +public enum VerifyCaptcha { + /** + * 是否需要校验验证码 + * */ + NO(0,"no","不需要"), + + YES(1,"yes","需要"), + + ; + + private Integer code; + + private String value; + + private String msg; + + VerifyCaptcha(Integer code, String value, String msg) { + this.code = code; + this.value = value; + this.msg = msg; + } + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMsg() { + return this.msg == null ? "" : this.msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public String getValue() { + return value; + } + + public void setValue(final String value) { + this.value = value; + } + + public static String getMsg(Integer code) { + for (VerifyCaptcha re : VerifyCaptcha.values()) { + if (re.code.intValue() == code.intValue()) { + return re.msg; + } + } + return ""; + } + + public static VerifyCaptcha getRc(Integer code) { + for (VerifyCaptcha re : VerifyCaptcha.values()) { + if (re.code.intValue() == code.intValue()) { + return re; + } + } + return null; + } +} diff --git a/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java b/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java index a28dbb17..4836536b 100644 --- a/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java +++ b/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java @@ -68,11 +68,13 @@ public enum RedisKeyManage { PROGRAM_CATEGORY_HASH("d_mai_program_category_hash","节目类型hash集合","节目类型hash集合","k"), - COUNTER_COUNT("d_mai_counter_count_%S","计数器的值的key","计数器的值","k"), + COUNTER_COUNT("d_mai_counter_count","计数器的值的key","计数器的值","k"), - COUNTER_TIMESTAMP("d_mai_counter_timestamp_%S","计数器的时间戳的key","计数器的时间戳","k"), + COUNTER_TIMESTAMP("d_mai_counter_timestamp","计数器的时间戳的key","计数器的时间戳","k"), VERIFY_CAPTCHA_HASH("d_mai_verify_captcha_hash","是否需要校验验证码hash集合的key","是否需要校验验证码hash集合","k"), + + VERIFY_CAPTCHA_ID("d_mai_verify_captcha_id_%S","校验验证码id的key","校验验证码id","k"), ; /** diff --git a/damai-server-client/damai-user-client/src/main/java/com/damai/dto/UserRegisterDto.java b/damai-server-client/damai-user-client/src/main/java/com/damai/dto/UserRegisterDto.java index 83aeccba..e85b7497 100644 --- a/damai-server-client/damai-user-client/src/main/java/com/damai/dto/UserRegisterDto.java +++ b/damai-server-client/damai-user-client/src/main/java/com/damai/dto/UserRegisterDto.java @@ -47,6 +47,10 @@ public class UserRegisterDto implements Serializable { @ApiModelProperty(name ="idNumber", dataType ="String", value ="身份证号码") private String idNumber; + @ApiModelProperty(name ="id", dataType ="captchaId", value ="captchaId 调用是否需要校验验证码接口返回") + @NotBlank + private String captchaId; + @ApiModelProperty(name ="captchaType", dataType ="String", value ="验证码类型:(clickWord,blockPuzzle)") private String captchaType; diff --git a/damai-server-client/damai-user-client/src/main/java/com/damai/vo/CheckNeedCaptchaDataVo.java b/damai-server-client/damai-user-client/src/main/java/com/damai/vo/CheckNeedCaptchaDataVo.java index 4aaf6a7c..e1620661 100644 --- a/damai-server-client/damai-user-client/src/main/java/com/damai/vo/CheckNeedCaptchaDataVo.java +++ b/damai-server-client/damai-user-client/src/main/java/com/damai/vo/CheckNeedCaptchaDataVo.java @@ -13,9 +13,9 @@ import lombok.Data; @ApiModel(value="CheckNeedCaptchaDataVo", description ="是否需要进行校验验证码") public class CheckNeedCaptchaDataVo { - @ApiModelProperty(name ="verifyCaptcha", dataType ="Integer", value ="是否需要验证码 1:是 0:否") - private Integer verifyCaptcha; + @ApiModelProperty(name ="verifyCaptcha", dataType ="Boolean", value ="是否需要验证码 true:是 false:否") + private Boolean verifyCaptcha; - @ApiModelProperty(name ="id", dataType ="Long", value ="唯一标识id,用户注册接口需要传入此id") - private Long id; + @ApiModelProperty(name ="id", dataType ="captchaId", value ="唯一标识id,用户注册接口需要传入此id") + private Long captchaId; } diff --git a/damai-server-client/damai-user-client/src/main/java/com/damai/vo/CheckVerifyVo.java b/damai-server-client/damai-user-client/src/main/java/com/damai/vo/CheckVerifyVo.java deleted file mode 100644 index 596aa216..00000000 --- a/damai-server-client/damai-user-client/src/main/java/com/damai/vo/CheckVerifyVo.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.damai.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: 检查验证码 vo - * @author: 阿宽不是程序员 - **/ -@Data -@ApiModel(value="CheckVerifyVo", description ="检查验证码") -public class CheckVerifyVo { - - @ApiModelProperty(name ="type", dataType ="Integer", value ="是否需要验证码 1:是 0:否") - private Integer type; -} diff --git a/damai-server/damai-user-service/src/main/java/com/damai/controller/UserCaptchaController.java b/damai-server/damai-user-service/src/main/java/com/damai/controller/UserCaptchaController.java index 1feeb947..eb368f7f 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/controller/UserCaptchaController.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/controller/UserCaptchaController.java @@ -5,7 +5,6 @@ import com.anji.captcha.model.vo.CaptchaVO; import com.damai.common.ApiResponse; import com.damai.service.UserCaptchaService; import com.damai.vo.CheckNeedCaptchaDataVo; -import com.damai.vo.CheckVerifyVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java b/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java index 325a215c..482a4e4a 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java @@ -4,10 +4,10 @@ import com.anji.captcha.model.common.ResponseModel; import com.anji.captcha.model.vo.CaptchaVO; import com.baidu.fsg.uid.UidGenerator; import com.damai.core.RedisKeyManage; +import com.damai.redis.RedisKeyBuild; import com.damai.service.lua.CheckNeedCaptchaOperate; import com.damai.service.tool.RequestCounter; import com.damai.vo.CheckNeedCaptchaDataVo; -import com.damai.vo.CheckVerifyVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,17 +39,22 @@ public class UserCaptchaService { private CheckNeedCaptchaOperate checkNeedCaptchaOperate; public CheckNeedCaptchaDataVo checkNeedCaptcha() { - CheckVerifyVo checkVerifyVo = new CheckVerifyVo(); - checkVerifyVo.setType(0); + long currentTimeMillis = System.currentTimeMillis(); + long id = uidGenerator.getUid(); List keys = new ArrayList<>(); - keys.add(RedisKeyManage.COUNTER_COUNT.getKey()); - keys.add(RedisKeyManage.COUNTER_TIMESTAMP.getKey()); - keys.add(RedisKeyManage.VERIFY_CAPTCHA_HASH.getKey()); - String[] data = new String[3]; + keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.COUNTER_COUNT).getRelKey()); + keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.COUNTER_TIMESTAMP).getRelKey()); + keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.VERIFY_CAPTCHA_HASH).getRelKey()); + keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.VERIFY_CAPTCHA_ID,id).getRelKey()); + String[] data = new String[2]; data[0] = String.valueOf(verifyCaptchaThreshold); - data[1] = String.valueOf(System.currentTimeMillis()); - data[2] = String.valueOf(uidGenerator.getUid()); - return checkNeedCaptchaOperate.checkNeedCaptchaOperate(keys, data); + data[1] = String.valueOf(currentTimeMillis); + String resultStr = checkNeedCaptchaOperate.checkNeedCaptchaOperate(keys, data); + boolean result = Boolean.parseBoolean(resultStr); + CheckNeedCaptchaDataVo checkNeedCaptchaDataVo = new CheckNeedCaptchaDataVo(); + checkNeedCaptchaDataVo.setCaptchaId(id); + checkNeedCaptchaDataVo.setVerifyCaptcha(result); + return checkNeedCaptchaDataVo; } public ResponseModel getCaptcha(CaptchaVO captchaVO) { diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java b/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java index caa8d069..cad4b7c6 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java @@ -105,6 +105,9 @@ public class UserService extends ServiceImpl { @ServiceLock(lockType= LockType.Write,name = REGISTER_USER_LOCK,keys = {"#userRegisterDto.mobile"}) public void register(UserRegisterDto userRegisterDto) { compositeContainer.execute(CompositeCheckType.USER_REGISTER_CHECK.getValue(),userRegisterDto); + if (1 == 1) { + return; + } //用户表添加 User user = new User(); BeanUtils.copyProperties(userRegisterDto,user); diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterVerifyCaptcha.java b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterVerifyCaptcha.java index f00fc231..e5db065c 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterVerifyCaptcha.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterVerifyCaptcha.java @@ -2,9 +2,14 @@ package com.damai.service.composite.register.impl; import com.anji.captcha.model.common.ResponseModel; import com.anji.captcha.model.vo.CaptchaVO; +import com.damai.core.RedisKeyManage; import com.damai.core.StringUtil; import com.damai.dto.UserRegisterDto; +import com.damai.enums.BaseCode; +import com.damai.enums.VerifyCaptcha; import com.damai.exception.DaMaiFrameException; +import com.damai.redis.RedisCache; +import com.damai.redis.RedisKeyBuild; import com.damai.service.CaptchaHandle; import com.damai.service.composite.register.AbstractUserRegisterCheckHandler; import org.springframework.beans.factory.annotation.Autowired; @@ -21,12 +26,29 @@ public class UserRegisterVerifyCaptcha extends AbstractUserRegisterCheckHandler @Autowired private CaptchaHandle captchaHandle; + @Autowired + private RedisCache redisCache; + /** * 验证验证码是否正确 * */ @Override protected void execute(UserRegisterDto param) { - if (StringUtil.isNotEmpty(param.getCaptchaType())) { + String verifyCaptcha = redisCache.getForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.VERIFY_CAPTCHA_HASH), + RedisKeyBuild.createRedisKey(RedisKeyManage.VERIFY_CAPTCHA_ID,param.getCaptchaId()).getRelKey(), String.class); + if (StringUtil.isEmpty(verifyCaptcha)) { + throw new DaMaiFrameException(BaseCode.VERIFY_CAPTCHA_ID_NOT_EXIST); + } + if (VerifyCaptcha.YES.getValue().equals(verifyCaptcha)) { + if (StringUtil.isEmpty(param.getCaptchaType())) { + throw new DaMaiFrameException(BaseCode.CAPTCHA_TYPE_EMPTY); + } + if (StringUtil.isEmpty(param.getPointJson())) { + throw new DaMaiFrameException(BaseCode.POINT_JSON_EMPTY); + } + if (StringUtil.isEmpty(param.getToken())) { + throw new DaMaiFrameException(BaseCode.CAPTCHA_TOKEN_JSON_EMPTY); + } CaptchaVO captchaVO = new CaptchaVO(); captchaVO.setCaptchaType(param.getCaptchaType()); captchaVO.setPointJson(param.getPointJson()); diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/lua/CheckNeedCaptchaOperate.java b/damai-server/damai-user-service/src/main/java/com/damai/service/lua/CheckNeedCaptchaOperate.java index 8903a05b..ebfc6fad 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/lua/CheckNeedCaptchaOperate.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/lua/CheckNeedCaptchaOperate.java @@ -1,8 +1,6 @@ package com.damai.service.lua; -import com.alibaba.fastjson2.JSON; import com.damai.redis.RedisCache; -import com.damai.vo.CheckNeedCaptchaDataVo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; @@ -38,8 +36,8 @@ public class CheckNeedCaptchaOperate { } } - public CheckNeedCaptchaDataVo checkNeedCaptchaOperate(List keys, String[] args){ + public String checkNeedCaptchaOperate(List keys, String[] args){ Object object = redisCache.getInstance().execute(redisScript, keys, args); - return JSON.parseObject((String)object,CheckNeedCaptchaDataVo.class); + return (String)object; } } diff --git a/damai-server/damai-user-service/src/main/resources/lua/checkNeedCaptcha.lua b/damai-server/damai-user-service/src/main/resources/lua/checkNeedCaptcha.lua index 64be2972..4119857b 100644 --- a/damai-server/damai-user-service/src/main/resources/lua/checkNeedCaptcha.lua +++ b/damai-server/damai-user-service/src/main/resources/lua/checkNeedCaptcha.lua @@ -1,39 +1,39 @@ -- 计数器的键 -local countKey = KEYS[1] +local counter_count_key = KEYS[1] -- 时间戳的键 -local timeKey = KEYS[2] +local counter_timestamp_key = KEYS[2] -- 是否需要校验验证码的键 -local verifyCaptchaKey = KEYS[3] +local verify_captcha_hash_key = KEYS[3] +-- 校验验证码id的键 +local verify_captcha_id = KEYS[4] -- 每秒最大请求次数 -local maxRequestsPerSecond = tonumber(ARGV[1]) +local verify_captcha_threshold = tonumber(ARGV[1]) -- 当前时间戳 -local currentTime = tonumber(ARGV[2]) --- 唯一标识 -local id = tonumber(ARGV[3]) +local current_time_millis = tonumber(ARGV[2]) -- 时间窗口大小,1000毫秒,即1秒 local differenceValue = 1000 -- 获取当前计数和上次重置时间 -local count = tonumber(redis.call('get', countKey) or "0") -local lastResetTime = tonumber(redis.call('get', timeKey) or "0") +local count = tonumber(redis.call('get', counter_count_key) or "0") +local lastResetTime = tonumber(redis.call('get', counter_timestamp_key) or "0") -- 检查时间窗口是否已过,如果是,则重置计数和时间 -if currentTime - lastResetTime >= differenceValue then +if current_time_millis - lastResetTime >= differenceValue then count = 0 - redis.call('set', countKey, count) - redis.call('set', timeKey, currentTime) + redis.call('set', counter_count_key, count) + redis.call('set', counter_timestamp_key, current_time_millis) end -- 更新计数 count = count + 1 -- 判断是否超过限制 -if count > maxRequestsPerSecond then +if count > verify_captcha_threshold then -- 超过限制,可以在这里记录日志(注意:Redis自身不支持日志记录到文件,需要另外处理) -- 重置计数和时间戳 count = 0 - redis.call('set', countKey, count) - redis.call('set', timeKey, currentTime) - redis.call('hset',verifyCaptchaKey,id,'yes') - return string.format('{"verifyCaptcha": %d, "id": %d}',1,id) + redis.call('set', counter_count_key, count) + redis.call('set', counter_timestamp_key, current_time_millis) + redis.call('hset', verify_captcha_hash_key,verify_captcha_id,'yes') + return 'true' end -- 未超过限制,更新计数 -redis.call('set', countKey, count) -redis.call('hset',verifyCaptchaKey,id,'no') -return string.format('{"verifyCaptcha": %d, "id": %d}',0,id) +redis.call('set', counter_count_key, count) +redis.call('hset', verify_captcha_hash_key,verify_captcha_id,'no') +return 'false' -- Gitee From 49403dc8082d201a018423cf13ad0a90851d0bd6 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Mon, 26 Feb 2024 14:12:21 +0800 Subject: [PATCH 17/74] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- damai-captcha-framework/pom.xml | 2 +- .../src/main/java/com/damai/service/CaptchaHandle.java | 2 +- .../src/main/java/com/damai/service/UserCaptchaService.java | 3 +-- .../register/impl/UserRegisterCountCheckHandler.java | 4 ++-- .../composite/register/impl/UserRegisterVerifyCaptcha.java | 4 ++-- .../java/com/damai/service/lua/CheckNeedCaptchaOperate.java | 4 ++-- 6 files changed, 9 insertions(+), 10 deletions(-) diff --git a/damai-captcha-framework/pom.xml b/damai-captcha-framework/pom.xml index 2a56b7ef..92b94a82 100644 --- a/damai-captcha-framework/pom.xml +++ b/damai-captcha-framework/pom.xml @@ -12,7 +12,7 @@ damai-captcha-framework - damai-captcha-framework + captcha-framework 验证码操作封装 diff --git a/damai-captcha-framework/src/main/java/com/damai/service/CaptchaHandle.java b/damai-captcha-framework/src/main/java/com/damai/service/CaptchaHandle.java index ef504bad..19519147 100644 --- a/damai-captcha-framework/src/main/java/com/damai/service/CaptchaHandle.java +++ b/damai-captcha-framework/src/main/java/com/damai/service/CaptchaHandle.java @@ -34,6 +34,6 @@ public class CaptchaHandle { assert requestAttributes != null; HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest(); captchaVO.setBrowserInfo(RemoteUtil.getRemoteId(request)); - return captchaService.check(captchaVO); + return captchaService.verification(captchaVO); } } diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java b/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java index 482a4e4a..f9731f54 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java @@ -49,8 +49,7 @@ public class UserCaptchaService { String[] data = new String[2]; data[0] = String.valueOf(verifyCaptchaThreshold); data[1] = String.valueOf(currentTimeMillis); - String resultStr = checkNeedCaptchaOperate.checkNeedCaptchaOperate(keys, data); - boolean result = Boolean.parseBoolean(resultStr); + Boolean result = checkNeedCaptchaOperate.checkNeedCaptchaOperate(keys, data); CheckNeedCaptchaDataVo checkNeedCaptchaDataVo = new CheckNeedCaptchaDataVo(); checkNeedCaptchaDataVo.setCaptchaId(id); checkNeedCaptchaDataVo.setVerifyCaptcha(result); diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterCountCheckHandler.java b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterCountCheckHandler.java index a7cae06b..7c5be083 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterCountCheckHandler.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterCountCheckHandler.java @@ -29,12 +29,12 @@ public class UserRegisterCountCheckHandler extends AbstractUserRegisterCheckHand @Override public Integer executeParentOrder() { - return 0; + return 1; } @Override public Integer executeTier() { - return 1; + return 2; } @Override diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterVerifyCaptcha.java b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterVerifyCaptcha.java index e5db065c..eed18a0e 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterVerifyCaptcha.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterVerifyCaptcha.java @@ -62,12 +62,12 @@ public class UserRegisterVerifyCaptcha extends AbstractUserRegisterCheckHandler @Override public Integer executeParentOrder() { - return 1; + return 0; } @Override public Integer executeTier() { - return 2; + return 1; } @Override diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/lua/CheckNeedCaptchaOperate.java b/damai-server/damai-user-service/src/main/java/com/damai/service/lua/CheckNeedCaptchaOperate.java index ebfc6fad..39d01e71 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/lua/CheckNeedCaptchaOperate.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/lua/CheckNeedCaptchaOperate.java @@ -36,8 +36,8 @@ public class CheckNeedCaptchaOperate { } } - public String checkNeedCaptchaOperate(List keys, String[] args){ + public Boolean checkNeedCaptchaOperate(List keys, String[] args){ Object object = redisCache.getInstance().execute(redisScript, keys, args); - return (String)object; + return Boolean.parseBoolean((String)object); } } -- Gitee From 986185d5a20721b36cfa1ba2a6901317476774c3 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Mon, 26 Feb 2024 20:08:26 +0800 Subject: [PATCH 18/74] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/damai/core/RedisKeyManage.java | 2 -- .../java/com/damai/service/UserCaptchaService.java | 11 +++++------ .../register/impl/UserRegisterVerifyCaptcha.java | 3 +-- .../damai/service/lua/CheckNeedCaptchaOperate.java | 14 ++++++++++---- .../src/main/resources/lua/checkNeedCaptcha.lua | 12 +++++++----- 5 files changed, 23 insertions(+), 19 deletions(-) diff --git a/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java b/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java index 4836536b..6127a7d7 100644 --- a/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java +++ b/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java @@ -72,8 +72,6 @@ public enum RedisKeyManage { COUNTER_TIMESTAMP("d_mai_counter_timestamp","计数器的时间戳的key","计数器的时间戳","k"), - VERIFY_CAPTCHA_HASH("d_mai_verify_captcha_hash","是否需要校验验证码hash集合的key","是否需要校验验证码hash集合","k"), - VERIFY_CAPTCHA_ID("d_mai_verify_captcha_id_%S","校验验证码id的key","校验验证码id","k"), ; diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java b/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java index f9731f54..0e0dac23 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java @@ -6,7 +6,6 @@ import com.baidu.fsg.uid.UidGenerator; import com.damai.core.RedisKeyManage; import com.damai.redis.RedisKeyBuild; import com.damai.service.lua.CheckNeedCaptchaOperate; -import com.damai.service.tool.RequestCounter; import com.damai.vo.CheckNeedCaptchaDataVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -26,11 +25,11 @@ public class UserCaptchaService { @Value("${verify_captcha_threshold:10}") private int verifyCaptchaThreshold; - @Autowired - private CaptchaHandle captchaHandle; + @Value("${verify_captcha_id_expire_time:60}") + private int verifyCaptchaIdExpireTime; @Autowired - private RequestCounter requestCounter; + private CaptchaHandle captchaHandle; @Autowired private UidGenerator uidGenerator; @@ -44,11 +43,11 @@ public class UserCaptchaService { List keys = new ArrayList<>(); keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.COUNTER_COUNT).getRelKey()); keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.COUNTER_TIMESTAMP).getRelKey()); - keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.VERIFY_CAPTCHA_HASH).getRelKey()); keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.VERIFY_CAPTCHA_ID,id).getRelKey()); - String[] data = new String[2]; + String[] data = new String[3]; data[0] = String.valueOf(verifyCaptchaThreshold); data[1] = String.valueOf(currentTimeMillis); + data[2] = String.valueOf(verifyCaptchaIdExpireTime); Boolean result = checkNeedCaptchaOperate.checkNeedCaptchaOperate(keys, data); CheckNeedCaptchaDataVo checkNeedCaptchaDataVo = new CheckNeedCaptchaDataVo(); checkNeedCaptchaDataVo.setCaptchaId(id); diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterVerifyCaptcha.java b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterVerifyCaptcha.java index eed18a0e..4d2f161b 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterVerifyCaptcha.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterVerifyCaptcha.java @@ -34,8 +34,7 @@ public class UserRegisterVerifyCaptcha extends AbstractUserRegisterCheckHandler * */ @Override protected void execute(UserRegisterDto param) { - String verifyCaptcha = redisCache.getForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.VERIFY_CAPTCHA_HASH), - RedisKeyBuild.createRedisKey(RedisKeyManage.VERIFY_CAPTCHA_ID,param.getCaptchaId()).getRelKey(), String.class); + String verifyCaptcha = redisCache.get(RedisKeyBuild.createRedisKey(RedisKeyManage.VERIFY_CAPTCHA_ID,param.getCaptchaId()), String.class); if (StringUtil.isEmpty(verifyCaptcha)) { throw new DaMaiFrameException(BaseCode.VERIFY_CAPTCHA_ID_NOT_EXIST); } diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/lua/CheckNeedCaptchaOperate.java b/damai-server/damai-user-service/src/main/java/com/damai/service/lua/CheckNeedCaptchaOperate.java index 39d01e71..ad1a17c2 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/lua/CheckNeedCaptchaOperate.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/lua/CheckNeedCaptchaOperate.java @@ -1,14 +1,15 @@ package com.damai.service.lua; +import com.damai.initialize.base.AbstractApplicationPostConstructHandler; import com.damai.redis.RedisCache; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ConfigurableApplicationContext; import org.springframework.core.io.ClassPathResource; import org.springframework.data.redis.core.script.DefaultRedisScript; import org.springframework.scripting.support.ResourceScriptSource; import org.springframework.stereotype.Component; -import javax.annotation.PostConstruct; import java.util.List; /** @@ -18,15 +19,20 @@ import java.util.List; **/ @Slf4j @Component -public class CheckNeedCaptchaOperate { +public class CheckNeedCaptchaOperate extends AbstractApplicationPostConstructHandler { @Autowired private RedisCache redisCache; private DefaultRedisScript redisScript; - @PostConstruct - public void init(){ + @Override + public Integer executeOrder() { + return 1; + } + + @Override + public void executeInit(final ConfigurableApplicationContext context) { try { redisScript = new DefaultRedisScript<>(); redisScript.setScriptSource(new ResourceScriptSource(new ClassPathResource("lua/checkNeedCaptcha.lua"))); diff --git a/damai-server/damai-user-service/src/main/resources/lua/checkNeedCaptcha.lua b/damai-server/damai-user-service/src/main/resources/lua/checkNeedCaptcha.lua index 4119857b..e61119ff 100644 --- a/damai-server/damai-user-service/src/main/resources/lua/checkNeedCaptcha.lua +++ b/damai-server/damai-user-service/src/main/resources/lua/checkNeedCaptcha.lua @@ -2,14 +2,14 @@ local counter_count_key = KEYS[1] -- 时间戳的键 local counter_timestamp_key = KEYS[2] --- 是否需要校验验证码的键 -local verify_captcha_hash_key = KEYS[3] -- 校验验证码id的键 -local verify_captcha_id = KEYS[4] +local verify_captcha_id = KEYS[3] -- 每秒最大请求次数 local verify_captcha_threshold = tonumber(ARGV[1]) -- 当前时间戳 local current_time_millis = tonumber(ARGV[2]) +-- 校验验证码id过期时间 +local verify_captcha_id_expire_time = tonumber(ARGV[3]) -- 时间窗口大小,1000毫秒,即1秒 local differenceValue = 1000 -- 获取当前计数和上次重置时间 @@ -30,10 +30,12 @@ if count > verify_captcha_threshold then count = 0 redis.call('set', counter_count_key, count) redis.call('set', counter_timestamp_key, current_time_millis) - redis.call('hset', verify_captcha_hash_key,verify_captcha_id,'yes') + redis.call('set', verify_captcha_id,'yes') + redis.call('expire',verify_captcha_id,verify_captcha_id_expire_time) return 'true' end -- 未超过限制,更新计数 redis.call('set', counter_count_key, count) -redis.call('hset', verify_captcha_hash_key,verify_captcha_id,'no') +redis.call('set',verify_captcha_id,'no') +redis.call('expire',verify_captcha_id,verify_captcha_id_expire_time) return 'false' -- Gitee From a876a8b5d7c437f33d6af1b92ea9deb0d83c5940 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Mon, 26 Feb 2024 22:34:07 +0800 Subject: [PATCH 19/74] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/damai/service/UserCaptchaService.java | 6 ++++- .../main/resources/lua/checkNeedCaptcha.lua | 22 ++++++------------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java b/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java index 0e0dac23..c959eb85 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/UserCaptchaService.java @@ -28,6 +28,9 @@ public class UserCaptchaService { @Value("${verify_captcha_id_expire_time:60}") private int verifyCaptchaIdExpireTime; + @Value("${always_verify_captcha:0}") + private int alwaysVerifyCaptcha; + @Autowired private CaptchaHandle captchaHandle; @@ -44,10 +47,11 @@ public class UserCaptchaService { keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.COUNTER_COUNT).getRelKey()); keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.COUNTER_TIMESTAMP).getRelKey()); keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.VERIFY_CAPTCHA_ID,id).getRelKey()); - String[] data = new String[3]; + String[] data = new String[4]; data[0] = String.valueOf(verifyCaptchaThreshold); data[1] = String.valueOf(currentTimeMillis); data[2] = String.valueOf(verifyCaptchaIdExpireTime); + data[3] = String.valueOf(alwaysVerifyCaptcha); Boolean result = checkNeedCaptchaOperate.checkNeedCaptchaOperate(keys, data); CheckNeedCaptchaDataVo checkNeedCaptchaDataVo = new CheckNeedCaptchaDataVo(); checkNeedCaptchaDataVo.setCaptchaId(id); diff --git a/damai-server/damai-user-service/src/main/resources/lua/checkNeedCaptcha.lua b/damai-server/damai-user-service/src/main/resources/lua/checkNeedCaptcha.lua index e61119ff..3a9c37d9 100644 --- a/damai-server/damai-user-service/src/main/resources/lua/checkNeedCaptcha.lua +++ b/damai-server/damai-user-service/src/main/resources/lua/checkNeedCaptcha.lua @@ -1,32 +1,25 @@ --- 计数器的键 local counter_count_key = KEYS[1] --- 时间戳的键 local counter_timestamp_key = KEYS[2] --- 校验验证码id的键 local verify_captcha_id = KEYS[3] --- 每秒最大请求次数 local verify_captcha_threshold = tonumber(ARGV[1]) --- 当前时间戳 local current_time_millis = tonumber(ARGV[2]) --- 校验验证码id过期时间 local verify_captcha_id_expire_time = tonumber(ARGV[3]) --- 时间窗口大小,1000毫秒,即1秒 +local always_verify_captcha = tonumber(ARGV[4]) local differenceValue = 1000 --- 获取当前计数和上次重置时间 +if always_verify_captcha == 1 then + redis.call('set', verify_captcha_id,'yes') + redis.call('expire',verify_captcha_id,verify_captcha_id_expire_time) + return 'true' +end local count = tonumber(redis.call('get', counter_count_key) or "0") local lastResetTime = tonumber(redis.call('get', counter_timestamp_key) or "0") --- 检查时间窗口是否已过,如果是,则重置计数和时间 -if current_time_millis - lastResetTime >= differenceValue then +if current_time_millis - lastResetTime > differenceValue then count = 0 redis.call('set', counter_count_key, count) redis.call('set', counter_timestamp_key, current_time_millis) end --- 更新计数 count = count + 1 --- 判断是否超过限制 if count > verify_captcha_threshold then - -- 超过限制,可以在这里记录日志(注意:Redis自身不支持日志记录到文件,需要另外处理) - -- 重置计数和时间戳 count = 0 redis.call('set', counter_count_key, count) redis.call('set', counter_timestamp_key, current_time_millis) @@ -34,7 +27,6 @@ if count > verify_captcha_threshold then redis.call('expire',verify_captcha_id,verify_captcha_id_expire_time) return 'true' end --- 未超过限制,更新计数 redis.call('set', counter_count_key, count) redis.call('set',verify_captcha_id,'no') redis.call('expire',verify_captcha_id,verify_captcha_id_expire_time) -- Gitee From c4f76674e41155ca401673ff6fcfebd50ecc0e0e Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Tue, 27 Feb 2024 19:03:05 +0800 Subject: [PATCH 20/74] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../damai-bloom-filter-framework/.gitignore | 31 +++++++++++++++++++ .../damai-bloom-filter-framework/pom.xml | 30 ++++++++++++++++++ .../config/BloomFilterAutoConfiguration.java | 23 ++++++++++++++ .../damai/config/BloomFilterProperties.java} | 10 +++--- .../damai/handler}/BloomFilterHandler.java | 12 +++---- .../main/resources/META-INF/spring.factories | 2 ++ .../config/ServiceLockAutoConfiguration.java | 11 ------- .../damai-redisson-service-framework/pom.xml | 1 + damai-server/damai-user-service/pom.xml | 5 +++ .../java/com/damai/service/UserService.java | 2 +- 10 files changed, 104 insertions(+), 23 deletions(-) create mode 100644 damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/.gitignore create mode 100644 damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/pom.xml create mode 100644 damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/src/main/java/com/damai/config/BloomFilterAutoConfiguration.java rename damai-redisson-framework/damai-redisson-service-framework/{damai-service-lock-framework/src/main/java/com/damai/config/RedissonProperties.java => damai-bloom-filter-framework/src/main/java/com/damai/config/BloomFilterProperties.java} (62%) rename damai-redisson-framework/damai-redisson-service-framework/{damai-service-lock-framework/src/main/java/com/damai/util => damai-bloom-filter-framework/src/main/java/com/damai/handler}/BloomFilterHandler.java (75%) create mode 100644 damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/src/main/resources/META-INF/spring.factories diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/.gitignore b/damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/.gitignore new file mode 100644 index 00000000..a2a3040a --- /dev/null +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/.gitignore @@ -0,0 +1,31 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/** +!**/src/test/** + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ + +### VS Code ### +.vscode/ diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/pom.xml b/damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/pom.xml new file mode 100644 index 00000000..11301dfc --- /dev/null +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/pom.xml @@ -0,0 +1,30 @@ + + + 4.0.0 + + + com.example + damai-redisson-service-framework + ${revision} + + + + damai-bloom-filter-framework + + bloom-filter-framework + 布隆过滤器工具 + + + + com.example + damai-redisson-common-framework + ${revision} + + + org.springframework.boot + spring-boot-starter-web + true + + + diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/src/main/java/com/damai/config/BloomFilterAutoConfiguration.java b/damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/src/main/java/com/damai/config/BloomFilterAutoConfiguration.java new file mode 100644 index 00000000..a7a90ef4 --- /dev/null +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/src/main/java/com/damai/config/BloomFilterAutoConfiguration.java @@ -0,0 +1,23 @@ +package com.damai.config; + +import com.damai.handler.BloomFilterHandler; +import org.redisson.api.RedissonClient; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 布隆过滤器 配置 + * @author: 阿宽不是程序员 + **/ +@EnableConfigurationProperties(BloomFilterProperties.class) +public class BloomFilterAutoConfiguration { + + /** + * 布隆过滤器 + */ + @Bean + public BloomFilterHandler rBloomFilterUtil(RedissonClient redissonClient, BloomFilterProperties bloomFilterProperties) { + return new BloomFilterHandler(redissonClient, bloomFilterProperties); + } +} diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/config/RedissonProperties.java b/damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/src/main/java/com/damai/config/BloomFilterProperties.java similarity index 62% rename from damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/config/RedissonProperties.java rename to damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/src/main/java/com/damai/config/BloomFilterProperties.java index c5eba873..9ebf4e7a 100644 --- a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/config/RedissonProperties.java +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/src/main/java/com/damai/config/BloomFilterProperties.java @@ -5,16 +5,16 @@ import org.springframework.boot.context.properties.ConfigurationProperties; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: 分布式锁 配置属性 + * @description: 布隆过滤器 配置属性 * @author: 阿宽不是程序员 **/ @Data -@ConfigurationProperties(prefix = RedissonProperties.PREFIX) -public class RedissonProperties { +@ConfigurationProperties(prefix = BloomFilterProperties.PREFIX) +public class BloomFilterProperties { - public static final String PREFIX = "redisson"; + public static final String PREFIX = "bloom-filter"; - private String rbLoomFilterName = "user_register_rb_loom_filter"; + private String name; private Long expectedInsertions = 20000L; diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/util/BloomFilterHandler.java b/damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/src/main/java/com/damai/handler/BloomFilterHandler.java similarity index 75% rename from damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/util/BloomFilterHandler.java rename to damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/src/main/java/com/damai/handler/BloomFilterHandler.java index b3d9eea3..e9f393ba 100644 --- a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/util/BloomFilterHandler.java +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/src/main/java/com/damai/handler/BloomFilterHandler.java @@ -1,7 +1,7 @@ -package com.damai.util; +package com.damai.handler; -import com.damai.config.RedissonProperties; +import com.damai.config.BloomFilterProperties; import org.redisson.api.RBloomFilter; import org.redisson.api.RedissonClient; @@ -9,16 +9,16 @@ import org.redisson.api.RedissonClient; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: 布隆过滤器 方法抽象 + * @description: 布隆过滤器 * @author: 阿宽不是程序员 **/ public class BloomFilterHandler { private final RBloomFilter cachePenetrationBloomFilter; - public BloomFilterHandler(RedissonClient redissonClient, RedissonProperties redissonProperties){ - RBloomFilter cachePenetrationBloomFilter = redissonClient.getBloomFilter(redissonProperties.getRbLoomFilterName()); - cachePenetrationBloomFilter.tryInit(redissonProperties.getExpectedInsertions(), redissonProperties.getFalseProbability()); + public BloomFilterHandler(RedissonClient redissonClient, BloomFilterProperties bloomFilterProperties){ + RBloomFilter cachePenetrationBloomFilter = redissonClient.getBloomFilter(bloomFilterProperties.getName()); + cachePenetrationBloomFilter.tryInit(bloomFilterProperties.getExpectedInsertions(), bloomFilterProperties.getFalseProbability()); this.cachePenetrationBloomFilter = cachePenetrationBloomFilter; } diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/src/main/resources/META-INF/spring.factories b/damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/src/main/resources/META-INF/spring.factories new file mode 100644 index 00000000..08650594 --- /dev/null +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ + com.damai.config.BloomFilterAutoConfiguration \ No newline at end of file diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/config/ServiceLockAutoConfiguration.java b/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/config/ServiceLockAutoConfiguration.java index 95c5cb07..82ed393c 100644 --- a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/config/ServiceLockAutoConfiguration.java +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/config/ServiceLockAutoConfiguration.java @@ -6,10 +6,8 @@ import com.damai.lockinfo.factory.LockInfoHandleFactory; import com.damai.lockinfo.impl.ServiceLockInfoHandle; import com.damai.servicelock.aspect.ServiceLockAspect; import com.damai.servicelock.factory.ServiceLockFactory; -import com.damai.util.BloomFilterHandler; import com.damai.util.ServiceLockTool; import org.redisson.api.RedissonClient; -import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; /** @@ -17,7 +15,6 @@ import org.springframework.context.annotation.Bean; * @description: 分布式锁 配置 * @author: 阿宽不是程序员 **/ -@EnableConfigurationProperties(RedissonProperties.class) public class ServiceLockAutoConfiguration { @Bean(LockInfoType.SERVICE_LOCK) @@ -39,12 +36,4 @@ public class ServiceLockAutoConfiguration { public ServiceLockTool serviceLockUtil(LockInfoHandleFactory lockInfoHandleFactory,ServiceLockFactory serviceLockFactory){ return new ServiceLockTool(lockInfoHandleFactory,serviceLockFactory); } - - /** - * 布隆过滤器 - */ - @Bean - public BloomFilterHandler rBloomFilterUtil(RedissonClient redissonClient, RedissonProperties redissonProperties) { - return new BloomFilterHandler(redissonClient,redissonProperties); - } } diff --git a/damai-redisson-framework/damai-redisson-service-framework/pom.xml b/damai-redisson-framework/damai-redisson-service-framework/pom.xml index 1d4f32d2..b0778c02 100644 --- a/damai-redisson-framework/damai-redisson-service-framework/pom.xml +++ b/damai-redisson-framework/damai-redisson-service-framework/pom.xml @@ -18,6 +18,7 @@ damai-redisson-common-framework damai-service-lock-framework damai-repeat-execute-limit-framework + damai-bloom-filter-framework diff --git a/damai-server/damai-user-service/pom.xml b/damai-server/damai-user-service/pom.xml index a765fbd3..36428c86 100644 --- a/damai-server/damai-user-service/pom.xml +++ b/damai-server/damai-user-service/pom.xml @@ -51,6 +51,11 @@ damai-service-lock-framework ${revision} + + com.example + damai-bloom-filter-framework + ${revision} + com.example damai-user-client diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java b/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java index cad4b7c6..c32fa511 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java @@ -32,6 +32,7 @@ import com.damai.enums.BaseCode; import com.damai.enums.BusinessStatus; import com.damai.enums.CompositeCheckType; import com.damai.exception.DaMaiFrameException; +import com.damai.handler.BloomFilterHandler; import com.damai.initialize.impl.composite.CompositeContainer; import com.damai.jwt.TokenUtil; import com.damai.mapper.TicketUserMapper; @@ -42,7 +43,6 @@ import com.damai.redis.RedisCache; import com.damai.redis.RedisKeyBuild; import com.damai.servicelock.LockType; import com.damai.servicelock.annotion.ServiceLock; -import com.damai.util.BloomFilterHandler; import com.damai.vo.GetChannelDataVo; import com.damai.vo.TicketUserVo; import com.damai.vo.UserGetAndTicketUserListVo; -- Gitee From d6b3fdc7f83283b3f1775bb9a6b3d3f410b5b502 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Tue, 27 Feb 2024 22:22:30 +0800 Subject: [PATCH 21/74] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../damai-bloom-filter-framework/pom.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/pom.xml b/damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/pom.xml index 11301dfc..13793afb 100644 --- a/damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/pom.xml +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-bloom-filter-framework/pom.xml @@ -23,8 +23,7 @@ org.springframework.boot - spring-boot-starter-web - true + spring-boot-starter -- Gitee From b0b1db899b550647ad7b68290c026c10aaee2810 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Wed, 28 Feb 2024 19:00:30 +0800 Subject: [PATCH 22/74] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/damai/service/UserService.java | 5 +- .../main/resources/shardingsphere-user.yaml | 83 ++----------------- 2 files changed, 7 insertions(+), 81 deletions(-) diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java b/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java index c32fa511..2021b194 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java @@ -98,16 +98,13 @@ public class UserService extends ServiceImpl { @Autowired private BaseDataClient baseDataClient; - @Value("${token.expire.time:20}") + @Value("${token.expire.time:40}") private Long tokenExpireTime; @Transactional(rollbackFor = Exception.class) @ServiceLock(lockType= LockType.Write,name = REGISTER_USER_LOCK,keys = {"#userRegisterDto.mobile"}) public void register(UserRegisterDto userRegisterDto) { compositeContainer.execute(CompositeCheckType.USER_REGISTER_CHECK.getValue(),userRegisterDto); - if (1 == 1) { - return; - } //用户表添加 User user = new User(); BeanUtils.copyProperties(userRegisterDto,user); diff --git a/damai-server/damai-user-service/src/main/resources/shardingsphere-user.yaml b/damai-server/damai-user-service/src/main/resources/shardingsphere-user.yaml index 9d799f2a..a883e321 100644 --- a/damai-server/damai-user-service/src/main/resources/shardingsphere-user.yaml +++ b/damai-server/damai-user-service/src/main/resources/shardingsphere-user.yaml @@ -1,11 +1,10 @@ -dataSources: +dataSources: ds_0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver jdbcUrl: jdbc:mysql://www.cookframe.com:3306/damai_user_0?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai username: root password: qaz321qwe! - ds_1: dataSourceClassName: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver @@ -14,172 +13,103 @@ dataSources: password: qaz321qwe! rules: - # 分库分表规则 - !SHARDING tables: - # 对d_user_mobile表进行分库分表 d_user_mobile: - # 库为damai_user_0 damai_user_1 表为d_user_mobile_0 至 d_user_mobile_1 actualDataNodes: ds_${0..1}.d_user_mobile_${0..1} - # 分库策略 databaseStrategy: standard: - # 使用user_mobile作为分片键 shardingColumn: mobile - # 用user_mobile列使用hash取模作为分库算法 - shardingAlgorithmName: databaseUserMobileHashModModel - # 分表策略 + shardingAlgorithmName: databaseUserMobileHashModModel tableStrategy: standard: - # 使用user_mobile作为分片键 shardingColumn: mobile - # 用user_mobile列使用hash取模作为分表算法 shardingAlgorithmName: tableUserMobileHashMod - # 对d_user_email表进行分库分表 d_user_email: - # 库为damai_user_0 damai_user_1 表为d_user_email_0 至 d_user_email_1 actualDataNodes: ds_${0..1}.d_user_email_${0..1} - # 分库策略 databaseStrategy: standard: - # 使用email作为分片键 shardingColumn: email - # 用user_mobile列使用hash取模作为分库算法 - shardingAlgorithmName: databaseUserEmailHashModModel - # 分表策略 + shardingAlgorithmName: databaseUserEmailHashModModel tableStrategy: standard: - # 使用email作为分片键 shardingColumn: email - # 用user_mobile列使用hash取模作为分表算法 shardingAlgorithmName: tableUserEmailHashMod - # 对d_user表进行分库分表 d_user: - # 库为damai_user_0 damai_user_1 表为d_user_0 至 d_user_1 actualDataNodes: ds_${0..1}.d_user_${0..1} - # 分库策略 databaseStrategy: standard: - # 使用id作为分片键 shardingColumn: id - # 用user_mobile列使用hash取模作为分库算法 - shardingAlgorithmName: databaseUserHashModModel - # 分表策略 + shardingAlgorithmName: databaseUserHashModModel tableStrategy: standard: - # 使用id作为分片键 shardingColumn: id - # 用user_mobile列使用hash取模作为分表算法 shardingAlgorithmName: tableUserHashModModel - # 对d_ticket_user表进行分库分表 d_ticket_user: - # 库为damai_user_0 damai_user_1 表为d_ticket_user_0 至 d_ticket_user_1 actualDataNodes: ds_${0..1}.d_ticket_user_${0..1} - # 分库策略 databaseStrategy: standard: - # 使用id作为分片键 shardingColumn: id - # 用user_mobile列使用hash取模作为分库算法 - shardingAlgorithmName: databaseTicketUserHashModModel - # 分表策略 + shardingAlgorithmName: databaseTicketUserHashModModel tableStrategy: standard: - # 使用id作为分片键 shardingColumn: id - # 用user_mobile列使用hash取模作为分表算法 - shardingAlgorithmName: tableTicketUserHashModModel - # 具体的算法 + shardingAlgorithmName: tableTicketUserHashModModel shardingAlgorithms: - # d_user_mobile表分库算法 databaseUserMobileHashModModel: type: HASH_MOD props: - # 分库数量 sharding-count: 2 - # d_user_mobile表分表算法 tableUserMobileHashMod: type: HASH_MOD props: - # 分表数量 sharding-count: 2 - # d_user_email表分库算法 databaseUserEmailHashModModel: type: HASH_MOD props: - # 分库数量 sharding-count: 2 - # d_user_email表分表算法 tableUserEmailHashMod: type: HASH_MOD props: - # 分表数量 sharding-count: 2 - # d_user表分库算法 databaseUserHashModModel: type: MOD props: - # 分库数量 sharding-count: 2 - # d_user表分表算法 tableUserHashModModel: type: MOD props: - # 分表数量 sharding-count: 2 - # d_ticket_user表分库算法 databaseTicketUserHashModModel: type: MOD props: - # 分库数量 sharding-count: 2 - # d_ticket_user表分表算法 tableTicketUserHashModModel: type: MOD props: - # 分表数量 sharding-count: 2 - # 加密规则 - !ENCRYPT tables: - # d_user表 d_user: columns: - # 对mobile列进行加密 mobile: - # 密文列mobile cipherColumn: mobile - # 自定义的加密算法 encryptorName: user_encryption_algorithm - # 对password列进行加密 password: - # 密文列password cipherColumn: password - # 自定义的加密算法 encryptorName: user_encryption_algorithm - # 对id_number列进行加密 id_number: - # 密文列id_number cipherColumn: id_number - # 自定义的加密算法 encryptorName: user_encryption_algorithm - # d_user_mobile表 d_user_mobile: columns: - # 对mobile列进行加密 mobile: - # 密文列id_number cipherColumn: mobile - # 自定义的加密算法 encryptorName: user_encryption_algorithm - # d_ticket_user表 d_ticket_user: columns: - # 对id_number列进行加密 id_number: - # 密文列id_number cipherColumn: id_number - # 自定义的加密算法 encryptorName: user_encryption_algorithm encryptors: user_encryption_algorithm: @@ -190,6 +120,5 @@ rules: sm4-iv: 1afc7fdce9ebc393f693cd3d23e35ed2 sm4-padding: PKCS7Padding props: - # 打印真实sql sql-show: true \ No newline at end of file -- Gitee From a186a08f48d30a6396fed94d578a32731b5c7b2a Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Thu, 29 Feb 2024 20:06:38 +0800 Subject: [PATCH 23/74] =?UTF-8?q?=E4=BB=A3=E7=A0=81bug=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../damai/toolkit/SnowflakeIdGenerator.java | 2 +- .../dto/UserGetAndTicketUserListDto.java | 7 +- .../com/damai/entity/ChannelTableData.java | 2 + .../main/java/com/damai/entity/ApiData.java | 11 ++- .../main/java/com/damai/entity/DepthRule.java | 11 ++- .../src/main/java/com/damai/entity/Rule.java | 11 ++- .../main/resources/mapper/ApiDataMapper.xml | 2 +- .../main/resources/mapper/DepthRuleMapper.xml | 2 +- .../src/main/resources/mapper/RuleMapper.xml | 2 +- .../java/com/damai/service/OrderService.java | 16 ++-- .../main/resources/shardingsphere-order.yaml | 48 +---------- .../resources/shardingsphere-program.yaml | 83 ++++--------------- .../main/resources/shardingsphere-single.yaml | 16 ++-- .../java/com/damai/service/UserService.java | 2 +- .../register/impl/UserExistCheckHandler.java | 5 +- .../impl/UserRegisterVerifyCaptcha.java | 3 - .../main/resources/shardingsphere-user.yaml | 20 ++--- .../TableOrderComplexGeneArithmetic.java | 6 +- 18 files changed, 76 insertions(+), 173 deletions(-) diff --git a/damai-id-generator-framework/src/main/java/com/damai/toolkit/SnowflakeIdGenerator.java b/damai-id-generator-framework/src/main/java/com/damai/toolkit/SnowflakeIdGenerator.java index d7b6bbbc..0feec9bf 100644 --- a/damai-id-generator-framework/src/main/java/com/damai/toolkit/SnowflakeIdGenerator.java +++ b/damai-id-generator-framework/src/main/java/com/damai/toolkit/SnowflakeIdGenerator.java @@ -209,7 +209,7 @@ public class SnowflakeIdGenerator { return ((timestamp - BASIS_TIME) << timestampLeftShift) | (datacenterId << datacenterIdShift) | (workerId << workerIdShift) - | (sequence << (sequenceBits - sequenceShift)) + | (sequence << sequenceShift) | (userId % tableCount); } diff --git a/damai-server-client/damai-user-client/src/main/java/com/damai/dto/UserGetAndTicketUserListDto.java b/damai-server-client/damai-user-client/src/main/java/com/damai/dto/UserGetAndTicketUserListDto.java index 76c454e3..31231ff3 100644 --- a/damai-server-client/damai-user-client/src/main/java/com/damai/dto/UserGetAndTicketUserListDto.java +++ b/damai-server-client/damai-user-client/src/main/java/com/damai/dto/UserGetAndTicketUserListDto.java @@ -5,21 +5,16 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotNull; -import java.util.List; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 * @description: 用户和购票人查询 dto * @author: 阿宽不是程序员 **/ @Data -@ApiModel(value="UserGetAndTicketUserListDto", description ="查询用户和购票人集合入参") +@ApiModel(value="UserGetAndTicketUserListDto", description ="查询用户以及用户下购票人集合入参") public class UserGetAndTicketUserListDto { @ApiModelProperty(name ="id", dataType ="Long", value ="用户id", required =true) @NotNull private Long userId; - - @ApiModelProperty(name ="ticketUserIdList", dataType ="List", value ="购票人id集合", required =true) - @NotNull - private List ticketUserIdList; } \ No newline at end of file diff --git a/damai-server/damai-base-data-service/src/main/java/com/damai/entity/ChannelTableData.java b/damai-server/damai-base-data-service/src/main/java/com/damai/entity/ChannelTableData.java index 758a8048..b09cde74 100644 --- a/damai-server/damai-base-data-service/src/main/java/com/damai/entity/ChannelTableData.java +++ b/damai-server/damai-base-data-service/src/main/java/com/damai/entity/ChannelTableData.java @@ -1,5 +1,6 @@ package com.damai.entity; +import com.baomidou.mybatisplus.annotation.TableName; import com.damai.data.BaseTableData; import lombok.Data; @@ -10,6 +11,7 @@ import java.io.Serializable; * @author: 阿宽不是程序员 **/ @Data +@TableName("d_channel_data") public class ChannelTableData extends BaseTableData implements Serializable { /** * id diff --git a/damai-server/damai-customize-service/src/main/java/com/damai/entity/ApiData.java b/damai-server/damai-customize-service/src/main/java/com/damai/entity/ApiData.java index 3d36f03e..364d5077 100644 --- a/damai-server/damai-customize-service/src/main/java/com/damai/entity/ApiData.java +++ b/damai-server/damai-customize-service/src/main/java/com/damai/entity/ApiData.java @@ -1,8 +1,10 @@ package com.damai.entity; +import com.baomidou.mybatisplus.annotation.TableName; +import com.damai.data.BaseTableData; import lombok.Data; -import java.util.Date; +import java.io.Serializable; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 @@ -10,7 +12,8 @@ import java.util.Date; * @author: 阿宽不是程序员 **/ @Data -public class ApiData { +@TableName("d_api_data") +public class ApiData extends BaseTableData implements Serializable { private Long id; @@ -26,10 +29,6 @@ public class ApiData { private String apiUrl; - private Date createTime; - - private Integer status; - private String callDayTime; private String callHourTime; diff --git a/damai-server/damai-customize-service/src/main/java/com/damai/entity/DepthRule.java b/damai-server/damai-customize-service/src/main/java/com/damai/entity/DepthRule.java index 4acc018c..51a1c479 100644 --- a/damai-server/damai-customize-service/src/main/java/com/damai/entity/DepthRule.java +++ b/damai-server/damai-customize-service/src/main/java/com/damai/entity/DepthRule.java @@ -1,8 +1,10 @@ package com.damai.entity; +import com.baomidou.mybatisplus.annotation.TableName; +import com.damai.data.BaseTableData; import lombok.Data; -import java.util.Date; +import java.io.Serializable; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 @@ -10,7 +12,8 @@ import java.util.Date; * @author: 阿宽不是程序员 **/ @Data -public class DepthRule { +@TableName("d_depth_rule") +public class DepthRule extends BaseTableData implements Serializable { private Long id; @@ -31,8 +34,4 @@ public class DepthRule { private String limitApi; private String message; - - private Integer status; - - private Date createTime; } diff --git a/damai-server/damai-customize-service/src/main/java/com/damai/entity/Rule.java b/damai-server/damai-customize-service/src/main/java/com/damai/entity/Rule.java index e04b5123..de3cf1e3 100644 --- a/damai-server/damai-customize-service/src/main/java/com/damai/entity/Rule.java +++ b/damai-server/damai-customize-service/src/main/java/com/damai/entity/Rule.java @@ -1,8 +1,10 @@ package com.damai.entity; +import com.baomidou.mybatisplus.annotation.TableName; +import com.damai.data.BaseTableData; import lombok.Data; -import java.util.Date; +import java.io.Serializable; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 @@ -10,7 +12,8 @@ import java.util.Date; * @author: 阿宽不是程序员 **/ @Data -public class Rule { +@TableName("d_rule") +public class Rule extends BaseTableData implements Serializable { private Long id; @@ -27,8 +30,4 @@ public class Rule { private String limitApi; private String message; - - private Integer status; - - private Date createTime; } diff --git a/damai-server/damai-customize-service/src/main/resources/mapper/ApiDataMapper.xml b/damai-server/damai-customize-service/src/main/resources/mapper/ApiDataMapper.xml index 9301fd08..1b713b55 100644 --- a/damai-server/damai-customize-service/src/main/resources/mapper/ApiDataMapper.xml +++ b/damai-server/damai-customize-service/src/main/resources/mapper/ApiDataMapper.xml @@ -22,7 +22,7 @@ select id,head_version,api_address,api_method,api_body,api_params,api_url,create_time, status,call_day_time,call_hour_time,call_minute_time,call_second_time,type,count(1) as statistics - from api_data + from d_api_data where status = 1 and create_time = ]]> #{startDate} diff --git a/damai-server/damai-customize-service/src/main/resources/mapper/DepthRuleMapper.xml b/damai-server/damai-customize-service/src/main/resources/mapper/DepthRuleMapper.xml index 87f3692a..63033db6 100644 --- a/damai-server/damai-customize-service/src/main/resources/mapper/DepthRuleMapper.xml +++ b/damai-server/damai-customize-service/src/main/resources/mapper/DepthRuleMapper.xml @@ -4,6 +4,6 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - delete from depth_rule + delete from d_depth_rule \ No newline at end of file diff --git a/damai-server/damai-customize-service/src/main/resources/mapper/RuleMapper.xml b/damai-server/damai-customize-service/src/main/resources/mapper/RuleMapper.xml index 691623a0..c0c0b817 100644 --- a/damai-server/damai-customize-service/src/main/resources/mapper/RuleMapper.xml +++ b/damai-server/damai-customize-service/src/main/resources/mapper/RuleMapper.xml @@ -4,6 +4,6 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - delete from rule + delete from d_rule \ No newline at end of file diff --git a/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java b/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java index adc51008..aff8549a 100644 --- a/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java +++ b/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java @@ -50,6 +50,7 @@ import com.damai.vo.OrderPayCheckVo; import com.damai.vo.OrderTicketUserVo; import com.damai.vo.SeatVo; import com.damai.vo.TicketUserInfoVo; +import com.damai.vo.TicketUserVo; import com.damai.vo.TradeCheckVo; import com.damai.vo.UserAndTicketUserInfoVo; import com.damai.vo.UserGetAndTicketUserListVo; @@ -212,10 +213,10 @@ public class OrderService extends ServiceImpl { orderPayCheckVo.setOrderStatus(payBillStatus); if (Objects.equals(payBillStatus, PayBillStatus.PAY.getCode())) { orderPayCheckVo.setPayOrderTime(DateUtils.now()); - updateOrderRelatedData(order.getId(),OrderStatus.PAY); + orderService.updateOrderRelatedData(order.getId(),OrderStatus.PAY); }else if (Objects.equals(payBillStatus, PayBillStatus.CANCEL.getCode())) { orderPayCheckVo.setCancelOrderTime(DateUtils.now()); - updateOrderRelatedData(order.getId(),OrderStatus.CANCEL); + orderService.updateOrderRelatedData(order.getId(),OrderStatus.CANCEL); } } }else { @@ -429,8 +430,6 @@ public class OrderService extends ServiceImpl { //查询用户和购票人信息 UserGetAndTicketUserListDto userGetAndTicketUserListDto = new UserGetAndTicketUserListDto(); userGetAndTicketUserListDto.setUserId(order.getUserId()); - userGetAndTicketUserListDto.setTicketUserIdList(orderTicketUserList.stream() - .map(OrderTicketUser::getTicketUserId).collect(Collectors.toList())); ApiResponse userGetAndTicketUserApiResponse = userClient.getUserAndTicketUserList(userGetAndTicketUserListDto); @@ -448,11 +447,18 @@ public class OrderService extends ServiceImpl { if (CollectionUtil.isEmpty(userAndTicketUserListVo.getTicketUserVoList())) { throw new DaMaiFrameException(BaseCode.TICKET_USER_EMPTY); } + List filterTicketUserVoList = new ArrayList<>(); + Map ticketUserVoMap = userAndTicketUserListVo.getTicketUserVoList() + .stream().collect(Collectors.toMap(TicketUserVo::getId, ticketUserVo -> ticketUserVo, (v1, v2) -> v2)); + for (OrderTicketUser orderTicketUser : orderTicketUserList) { + filterTicketUserVoList.add(ticketUserVoMap.get(orderTicketUser.getTicketUserId())); + } + UserInfoVo userInfoVo = new UserInfoVo(); BeanUtil.copyProperties(userAndTicketUserListVo.getUserVo(),userInfoVo); UserAndTicketUserInfoVo userAndTicketUserInfoVo = new UserAndTicketUserInfoVo(); userAndTicketUserInfoVo.setUserInfoVo(userInfoVo); - userAndTicketUserInfoVo.setTicketUserInfoVoList(BeanUtil.copyToList(userAndTicketUserListVo.getTicketUserVoList(), TicketUserInfoVo.class)); + userAndTicketUserInfoVo.setTicketUserInfoVoList(BeanUtil.copyToList(filterTicketUserVoList, TicketUserInfoVo.class)); orderGetVo.setUserAndTicketUserInfoVo(userAndTicketUserInfoVo); return orderGetVo; diff --git a/damai-server/damai-order-service/src/main/resources/shardingsphere-order.yaml b/damai-server/damai-order-service/src/main/resources/shardingsphere-order.yaml index b57d0b95..078f9938 100644 --- a/damai-server/damai-order-service/src/main/resources/shardingsphere-order.yaml +++ b/damai-server/damai-order-service/src/main/resources/shardingsphere-order.yaml @@ -1,110 +1,68 @@ -dataSources: +dataSources: ds_0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver jdbcUrl: jdbc:mysql://www.cookframe.com:3306/damai_order_0?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&autoReconnect=true username: root password: qaz321qwe! - ds_1: dataSourceClassName: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver jdbcUrl: jdbc:mysql://www.cookframe.com:3306/damai_order_1?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&autoReconnect=true username: root password: qaz321qwe! - + rules: - !SHARDING tables: - # 对d_order表进行分库分表 d_order: - # 库为damai_order_0 damai_order_1 表为d_order_0 至 d_user_order_3 actualDataNodes: ds_${0..1}.d_order_${0..3} - # 分库策略 databaseStrategy: complex: - # 使用order_number,user_id作为分片键 shardingColumns: order_number,user_id - # 使用order_number,user_id分库算法 shardingAlgorithmName: databaseOrderComplexGeneArithmetic - # 分表策略 tableStrategy: complex: - # 使用order_number,user_id作为分片键 shardingColumns: order_number,user_id - # 使用order_number,user_id分表算法 shardingAlgorithmName: tableOrderComplexGeneArithmetic - # 对d_order_ticket_user表进行分库分表 d_order_ticket_user: - # 库为damai_order_0 damai_order_1 表为d_order_ticket_user_0 至 d_order_ticket_user_3 actualDataNodes: ds_${0..1}.d_order_ticket_user_${0..3} - # 分库策略 databaseStrategy: complex: - # 使用order_number,user_id作为分片键 shardingColumns: order_number,user_id - # 使用order_number,user_id分库算法 shardingAlgorithmName: databaseOrderTicketUserComplexGeneArithmetic - # 分表策略 tableStrategy: complex: - # 使用order_number,user_id作为分片键 shardingColumns: order_number,user_id - # 使用order_number,user_id分表算法 shardingAlgorithmName: tableOrderTicketUserComplexGeneArithmetic - # 绑定表 bindingTables: - d_order,d_order_ticket_user - # 具体的算法 shardingAlgorithms: - # d_order表分库算法 databaseOrderComplexGeneArithmetic: - # 通过自定义实现类实现分库算法 type: CLASS_BASED props: - # 分库数量 sharding-count: 2 - # 分表数量 table-sharding-count: 4 - # 分库策略,复合多分片 strategy: complex - # 具体的分库逻辑在此自定义类中 algorithmClassName: com.damai.shardingsphere.DatabaseOrderComplexGeneArithmetic - # d_order表分表算法 tableOrderComplexGeneArithmetic: - # 通过自定义实现类实现分表算法 type: CLASS_BASED props: - # 分表数量 sharding-count: 4 - # 分表策略,复合多分片 strategy: complex - # 具体的分表逻辑在此自定义类中 algorithmClassName: com.damai.shardingsphere.TableOrderComplexGeneArithmetic - # d_order_ticket_user表分库算法 databaseOrderTicketUserComplexGeneArithmetic: - # 通过自定义实现类实现分库算法 type: CLASS_BASED props: - # 分库数量 sharding-count: 2 - # 分表数量 table-sharding-count: 4 - # 分库策略,复合多分片 strategy: complex - # 具体的分库逻辑在此自定义类中 algorithmClassName: com.damai.shardingsphere.DatabaseOrderComplexGeneArithmetic - # d_order_ticket_user表分表算法 tableOrderTicketUserComplexGeneArithmetic: - # 通过自定义实现类实现分表算法 type: CLASS_BASED props: - # 分表数量 sharding-count: 4 - # 分表策略,复合多分片 strategy: complex - # 具体的分表逻辑在此自定义类中 - algorithmClassName: com.damai.shardingsphere.TableOrderComplexGeneArithmetic + algorithmClassName: com.damai.shardingsphere.TableOrderComplexGeneArithmetic props: - # 打印真实sql sql-show: true \ No newline at end of file diff --git a/damai-server/damai-program-service/src/main/resources/shardingsphere-program.yaml b/damai-server/damai-program-service/src/main/resources/shardingsphere-program.yaml index 6e62fbec..1c4fadc3 100644 --- a/damai-server/damai-program-service/src/main/resources/shardingsphere-program.yaml +++ b/damai-server/damai-program-service/src/main/resources/shardingsphere-program.yaml @@ -16,131 +16,80 @@ dataSources: rules: - !SHARDING tables: - # 对d_program表进行分库分表 d_program: - # 库为damai_program_0 damai_program_1 表为d_program_0 至 d_program_1 actualDataNodes: ds_${0..1}.d_program_${0..1} - # 分库策略 databaseStrategy: standard: - # 使用id作为分片键 shardingColumn: id - # 使用id分库算法 - shardingAlgorithmName: databaseProgramHashModModel - # 分表策略 + shardingAlgorithmName: databaseProgramModModel tableStrategy: standard: - # 使用id作为分片键 shardingColumn: id - # 使用id分表算法 - shardingAlgorithmName: tableProgramHashModModel - # 对d_program_show_time表进行分库分表 + shardingAlgorithmName: tableProgramModModel d_program_show_time: - # 库为damai_program_0 damai_program_1 表为d_program_show_time_0 至 d_program_show_time_1 actualDataNodes: ds_${0..1}.d_program_show_time_${0..1} - # 分库策略 databaseStrategy: standard: - # 使用id作为分片键 shardingColumn: program_id - # 使用id分库算法 - shardingAlgorithmName: databaseProgramShowTimeHashModModel - # 分表策略 + shardingAlgorithmName: databaseProgramShowTimeModModel tableStrategy: standard: - # 使用id作为分片键 shardingColumn: program_id - # 使用id分表算法 - shardingAlgorithmName: tableProgramShowTimeHashModModel - # 对d_seat表进行分库分表 + shardingAlgorithmName: tableProgramShowTimeModModel d_seat: - # 库为damai_program_0 damai_program_1 表为d_seat_0 至 d_seat_1 actualDataNodes: ds_${0..1}.d_seat_${0..1} - # 分库策略 databaseStrategy: standard: - # 使用id作为分片键 shardingColumn: program_id - # 使用id分库算法 - shardingAlgorithmName: databaseSeatHashModModel - # 分表策略 + shardingAlgorithmName: databaseSeatModModel tableStrategy: standard: - # 使用id作为分片键 shardingColumn: program_id - # 使用id分表算法 - shardingAlgorithmName: tableSeatHashModModel - # 对d_ticket_category表进行分库分表 + shardingAlgorithmName: tableSeatModModel d_ticket_category: - # 库为damai_program_0 damai_program_1 表为d_ticket_category_0 至 d_ticket_category_1 actualDataNodes: ds_${0..1}.d_ticket_category_${0..1} - # 分库策略 databaseStrategy: standard: - # 使用id作为分片键 shardingColumn: program_id - # 使用id分库算法 - shardingAlgorithmName: databaseTicketCategoryHashModModel - # 分表策略 + shardingAlgorithmName: databaseTicketCategoryModModel tableStrategy: standard: - # 使用id作为分片键 shardingColumn: program_id - # 使用id分表算法 - shardingAlgorithmName: tableTicketCategoryHashModModel - # 广播表 + shardingAlgorithmName: tableTicketCategoryModModel broadcastTables: - d_program_category - # 具体的算法 shardingAlgorithms: - # d_program表分库算法 - databaseProgramHashModModel: + databaseProgramModModel: type: MOD props: - # 分库数量 sharding-count: 2 - # d_program表分表算法 - tableProgramHashModModel: + tableProgramModModel: type: MOD props: - # 分表数量 sharding-count: 2 - # d_program_show_time表分库算法 - databaseProgramShowTimeHashModModel: + databaseProgramShowTimeModModel: type: MOD props: - # 分库数量 sharding-count: 2 - # d_program_show_time表分表算法 - tableProgramShowTimeHashModModel: + tableProgramShowTimeModModel: type: MOD props: - # 分表数量 sharding-count: 2 - # d_seat表分库算法 - databaseSeatHashModModel: + databaseSeatModModel: type: MOD props: - # 分库数量 sharding-count: 2 - # d_seat表分表算法 - tableSeatHashModModel: + tableSeatModModel: type: MOD props: - # 分表数量 sharding-count: 2 - # d_ticket_category表分库算法 - databaseTicketCategoryHashModModel: + databaseTicketCategoryModModel: type: MOD props: - # 分库数量 sharding-count: 2 - # d_ticket_category表分表算法 - tableTicketCategoryHashModModel: + tableTicketCategoryModModel: type: MOD props: - # 分表数量 sharding-count: 2 props: - # 打印真实sql sql-show: true \ No newline at end of file diff --git a/damai-server/damai-single-service/src/main/resources/shardingsphere-single.yaml b/damai-server/damai-single-service/src/main/resources/shardingsphere-single.yaml index 3ad4bb8e..7af3001f 100644 --- a/damai-server/damai-single-service/src/main/resources/shardingsphere-single.yaml +++ b/damai-server/damai-single-service/src/main/resources/shardingsphere-single.yaml @@ -41,8 +41,8 @@ rules: standard: # 使用id作为分片键 shardingColumn: id - # 用user_mobile列使用hash取模作为分表算法 - shardingAlgorithmName: tableUserHashModModel + # 用user_mobile列使用取模作为分表算法 + shardingAlgorithmName: tableUserModModel # 对d_ticket_user表进行分表 d_ticket_user: # 库为damai 表为d_ticket_user_0 至 d_ticket_user_1 @@ -50,10 +50,10 @@ rules: # 分表策略 tableStrategy: standard: - # 使用id作为分片键 - shardingColumn: id - # 用user_mobile列使用hash取模作为分表算法 - shardingAlgorithmName: tableTicketUserHashModModel + # 使用user_id作为分片键 + shardingColumn: user_id + # 用user_id列使用取模作为分表算法 + shardingAlgorithmName: tableTicketUserModModel # 对d_order表进行分表 d_order: # 库为damai 表为d_order_0 至 d_user_order_3 @@ -152,13 +152,13 @@ rules: # 分表数量 sharding-count: 2 # d_user表分表算法 - tableUserHashModModel: + tableUserModModel: type: MOD props: # 分表数量 sharding-count: 2 # d_ticket_user表分表算法 - tableTicketUserHashModModel: + tableTicketUserModModel: type: MOD props: # 分表数量 diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java b/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java index 2021b194..5c9c8aad 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java @@ -340,7 +340,7 @@ public class UserService extends ServiceImpl { UserVo userVo = getById(userIdDto); LambdaQueryWrapper ticketUserLambdaQueryWrapper = Wrappers.lambdaQuery(TicketUser.class) - .in(TicketUser::getId, userGetAndTicketUserListDto.getTicketUserIdList()); + .eq(TicketUser::getUserId, userGetAndTicketUserListDto.getUserId()); List ticketUserList = ticketUserMapper.selectList(ticketUserLambdaQueryWrapper); List ticketUserVoList = BeanUtil.copyToList(ticketUserList, TicketUserVo.class); diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserExistCheckHandler.java b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserExistCheckHandler.java index feffa827..33f31a1c 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserExistCheckHandler.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserExistCheckHandler.java @@ -16,10 +16,7 @@ public class UserExistCheckHandler extends AbstractUserRegisterCheckHandler { @Autowired private UserService userService; - - /** - * 验证是否已注册用户 - * */ + @Override public void execute(final UserRegisterDto userRegisterDto) { userService.doExist(userRegisterDto.getMobile()); diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterVerifyCaptcha.java b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterVerifyCaptcha.java index 4d2f161b..01be4d02 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterVerifyCaptcha.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterVerifyCaptcha.java @@ -29,9 +29,6 @@ public class UserRegisterVerifyCaptcha extends AbstractUserRegisterCheckHandler @Autowired private RedisCache redisCache; - /** - * 验证验证码是否正确 - * */ @Override protected void execute(UserRegisterDto param) { String verifyCaptcha = redisCache.get(RedisKeyBuild.createRedisKey(RedisKeyManage.VERIFY_CAPTCHA_ID,param.getCaptchaId()), String.class); diff --git a/damai-server/damai-user-service/src/main/resources/shardingsphere-user.yaml b/damai-server/damai-user-service/src/main/resources/shardingsphere-user.yaml index a883e321..992ba6e2 100644 --- a/damai-server/damai-user-service/src/main/resources/shardingsphere-user.yaml +++ b/damai-server/damai-user-service/src/main/resources/shardingsphere-user.yaml @@ -40,21 +40,21 @@ rules: databaseStrategy: standard: shardingColumn: id - shardingAlgorithmName: databaseUserHashModModel + shardingAlgorithmName: databaseUserModModel tableStrategy: standard: shardingColumn: id - shardingAlgorithmName: tableUserHashModModel + shardingAlgorithmName: tableUserModModel d_ticket_user: actualDataNodes: ds_${0..1}.d_ticket_user_${0..1} databaseStrategy: standard: - shardingColumn: id - shardingAlgorithmName: databaseTicketUserHashModModel + shardingColumn: user_id + shardingAlgorithmName: databaseTicketUserModModel tableStrategy: standard: - shardingColumn: id - shardingAlgorithmName: tableTicketUserHashModModel + shardingColumn: user_id + shardingAlgorithmName: tableTicketUserModModel shardingAlgorithms: databaseUserMobileHashModModel: type: HASH_MOD @@ -72,19 +72,19 @@ rules: type: HASH_MOD props: sharding-count: 2 - databaseUserHashModModel: + databaseUserModModel: type: MOD props: sharding-count: 2 - tableUserHashModModel: + tableUserModModel: type: MOD props: sharding-count: 2 - databaseTicketUserHashModModel: + databaseTicketUserModModel: type: MOD props: sharding-count: 2 - tableTicketUserHashModModel: + tableTicketUserModModel: type: MOD props: sharding-count: 2 diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/TableOrderComplexGeneArithmetic.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/TableOrderComplexGeneArithmetic.java index 2af558b0..90d5b9a5 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/TableOrderComplexGeneArithmetic.java +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/TableOrderComplexGeneArithmetic.java @@ -44,11 +44,12 @@ public class TableOrderComplexGeneArithmetic implements ComplexKeysShardingAlgor if (CollectionUtil.isEmpty(columnNameAndShardingValuesMap)) { return actualTableNames; } - + //order_number条件的值 Collection orderNumberValues = columnNameAndShardingValuesMap.get("order_number"); - + //user_id条件的值 Collection userIdValues = columnNameAndShardingValuesMap.get("user_id"); + //分片键的值 Long value = null; //如果是order_number查询 if (CollectionUtil.isNotEmpty(orderNumberValues)) { @@ -59,6 +60,7 @@ public class TableOrderComplexGeneArithmetic implements ComplexKeysShardingAlgor } //如果order_number或者user_id的值存在 if (Objects.nonNull(value)) { + //逻辑表名_分片键的值%分表数量 actualTableNames.add(logicTableName + "_" + value % shardingCount); } return actualTableNames; -- Gitee From 168aaa74e8b13535090ab3f6177f3854f7b9a2a0 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Thu, 29 Feb 2024 23:05:19 +0800 Subject: [PATCH 24/74] =?UTF-8?q?=E4=BB=A3=E7=A0=81bug=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/damai/service/TokenDataService.java | 48 ------------------- .../composite/impl/UserExistCheckHandler.java | 14 ++++-- .../DatabaseOrderComplexGeneArithmetic.java | 31 ++---------- .../TableOrderComplexGeneArithmetic.java | 21 ++------ 4 files changed, 17 insertions(+), 97 deletions(-) delete mode 100644 damai-server/damai-base-data-service/src/main/java/com/damai/service/TokenDataService.java diff --git a/damai-server/damai-base-data-service/src/main/java/com/damai/service/TokenDataService.java b/damai-server/damai-base-data-service/src/main/java/com/damai/service/TokenDataService.java deleted file mode 100644 index 6d24d9b5..00000000 --- a/damai-server/damai-base-data-service/src/main/java/com/damai/service/TokenDataService.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.damai.service; - -import com.baidu.fsg.uid.UidGenerator; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.damai.dto.TokenDataDto; -import com.damai.entity.TokenData; -import com.damai.enums.Status; -import com.damai.mapper.TokenDataMapper; -import com.damai.util.DateUtils; -import com.damai.vo.TokenDataVo; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.Optional; - -/** - * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: token service - * @author: 阿宽不是程序员 - **/ -@Service -public class TokenDataService { - - @Autowired - private TokenDataMapper tokenDataMapper; - @Resource - private UidGenerator uidGenerator; - - public void add(TokenDataDto tokenDataDto){ - TokenData tokenData = new TokenData(); - BeanUtils.copyProperties(tokenDataDto,tokenData); - tokenData.setId(uidGenerator.getUid()); - tokenData.setCreateTime(DateUtils.now()); - tokenDataMapper.insert(tokenData); - } - - public TokenDataVo get() { - TokenDataVo tokenDataVo = new TokenDataVo(); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(TokenData::getStatus, Status.RUN.getCode()); - Optional.ofNullable(tokenDataMapper.selectOne(queryWrapper)).ifPresent(tokenData -> { - BeanUtils.copyProperties(tokenData,tokenDataVo); - }); - return tokenDataVo; - } -} diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/UserExistCheckHandler.java b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/UserExistCheckHandler.java index 35e5abe7..f5df3246 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/UserExistCheckHandler.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/UserExistCheckHandler.java @@ -15,10 +15,11 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.Optional; +import java.util.stream.Collectors; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 @@ -36,10 +37,9 @@ public class UserExistCheckHandler extends AbstractProgramCheckHandler { protected void execute(ProgramOrderCreateDto programOrderCreateDto) { //验证用户和购票人信息正确性 UserVo userVo = new UserVo(); - List ticketUserVoList = new ArrayList<>(); + List ticketUserVoList; UserGetAndTicketUserListDto userGetAndTicketUserListDto = new UserGetAndTicketUserListDto(); userGetAndTicketUserListDto.setUserId(programOrderCreateDto.getUserId()); - userGetAndTicketUserListDto.setTicketUserIdList(programOrderCreateDto.getTicketUserIdList()); ApiResponse userGetAndTicketUserApiResponse = userClient.getUserAndTicketUserList(userGetAndTicketUserListDto); if (Objects.equals(userGetAndTicketUserApiResponse.getCode(), BaseCode.SUCCESS.getCode())) { @@ -57,6 +57,14 @@ public class UserExistCheckHandler extends AbstractProgramCheckHandler { log.error("user client rpc getUserAndTicketUserList error response : {}", JSON.toJSONString(userGetAndTicketUserApiResponse)); throw new DaMaiFrameException(userGetAndTicketUserApiResponse); } + Map ticketUserVoMap = ticketUserVoList.stream() + .collect(Collectors.toMap(TicketUserVo::getId, ticketUserVo -> ticketUserVo, (v1, v2) -> v2)); + + for (Long ticketUserId : programOrderCreateDto.getTicketUserIdList()) { + if (Objects.isNull(ticketUserVoMap.get(ticketUserId))) { + throw new DaMaiFrameException(BaseCode.TICKET_USER_EMPTY); + } + } } @Override diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/DatabaseOrderComplexGeneArithmetic.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/DatabaseOrderComplexGeneArithmetic.java index b19ba609..13b916b2 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/DatabaseOrderComplexGeneArithmetic.java +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/DatabaseOrderComplexGeneArithmetic.java @@ -18,24 +18,12 @@ import java.util.Properties; * @author: 阿宽不是程序员 **/ public class DatabaseOrderComplexGeneArithmetic implements ComplexKeysShardingAlgorithm { - /** - * 属性分库名 - * */ private static final String SHARDING_COUNT_KEY_NAME = "sharding-count"; - /** - * 属性分表名 - * */ private static final String TABLE_SHARDING_COUNT_KEY_NAME = "table-sharding-count"; - /** - * 分库数量 - * */ private int shardingCount; - /** - * 分表数量 - * */ private int tableShardingCount; @Override @@ -45,43 +33,35 @@ public class DatabaseOrderComplexGeneArithmetic implements ComplexKeysShardingAl } @Override public Collection doSharding(Collection allActualSplitDatabaseNames, ComplexKeysShardingValue complexKeysShardingValue) { - //返回的真实库名集合 List actualDatabaseNames = new ArrayList<>(allActualSplitDatabaseNames.size()); - //查询中的列名和值 Map> columnNameAndShardingValuesMap = complexKeysShardingValue.getColumnNameAndShardingValuesMap(); - //如果没有条件查询,那么就查所有的分表 if (CollectionUtil.isEmpty(columnNameAndShardingValuesMap)) { return actualDatabaseNames; } Collection orderNumberValues = columnNameAndShardingValuesMap.get("order_number"); - Collection userIdValues = columnNameAndShardingValuesMap.get("user_id"); Long value = null; - //如果是order_number查询 if (CollectionUtil.isNotEmpty(orderNumberValues)) { value = orderNumberValues.stream().findFirst().orElseThrow(() -> new DaMaiFrameException(BaseCode.ORDER_NUMBER_NOT_EXIST)); - //如果是user_id查询 } else if (CollectionUtil.isNotEmpty(userIdValues)) { value = userIdValues.stream().findFirst().orElseThrow(() -> new DaMaiFrameException(BaseCode.USER_ID_NOT_EXIST)); } - //如果order_number或者user_id的值存在 if (Objects.nonNull(value)) { - //这里和分表数量进行取模,是因为订单编号中在插入user_id的基因时,是和表数量进行取模的 long tableIndex = value % tableShardingCount; - //获得值后再获得实际的分库的索引 long databaseIndex = calculateDatabaseIndex(shardingCount,tableIndex,tableShardingCount); String databaseIndexStr = String.valueOf(databaseIndex); for (String actualSplitDatabaseName : allActualSplitDatabaseNames) { - //将所有的分库名和得到的分库索引进行匹配 if (actualSplitDatabaseName.contains(databaseIndexStr)) { actualDatabaseNames.add(actualSplitDatabaseName); break; } } + return actualDatabaseNames; + }else { + return allActualSplitDatabaseNames; } - return actualDatabaseNames; } /** @@ -93,18 +73,13 @@ public class DatabaseOrderComplexGeneArithmetic implements ComplexKeysShardingAl * @return 分配到的数据库编号 */ public long calculateDatabaseIndex(long databaseCount, long tableIndex, long tableCount) { - // 每个数据库平均分配到的表数量(向下取整) long tablesPerDatabase = tableCount / databaseCount; - // 不能均匀分配的表的数量 long remainder = tableCount % databaseCount; - // 计算当前tableIndex应分配到的数据库编号 long databaseIndex; if (tableIndex < (tablesPerDatabase + 1) * remainder) { - // 如果tableIndex在能均匀分配的表的范围内 databaseIndex = tableIndex / (tablesPerDatabase + 1); } else { - // 如果tableIndex在不能均匀分配的表的范围内 databaseIndex = remainder + (tableIndex - (tablesPerDatabase + 1) * remainder) / tablesPerDatabase; } diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/TableOrderComplexGeneArithmetic.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/TableOrderComplexGeneArithmetic.java index 90d5b9a5..d09e798f 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/TableOrderComplexGeneArithmetic.java +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/TableOrderComplexGeneArithmetic.java @@ -19,13 +19,9 @@ import java.util.Properties; **/ public class TableOrderComplexGeneArithmetic implements ComplexKeysShardingAlgorithm { - /** - * 属性分表名 - * */ + private static final String SHARDING_COUNT_KEY_NAME = "sharding-count"; - /** - * 分表数量 - * */ + private int shardingCount; @Override @@ -34,35 +30,24 @@ public class TableOrderComplexGeneArithmetic implements ComplexKeysShardingAlgor } @Override public Collection doSharding(Collection allActualSplitTableNames, ComplexKeysShardingValue complexKeysShardingValue) { - //返回的真实表名集合 List actualTableNames = new ArrayList<>(allActualSplitTableNames.size()); - //逻辑表名 String logicTableName = complexKeysShardingValue.getLogicTableName(); - //查询中的列名和值 Map> columnNameAndShardingValuesMap = complexKeysShardingValue.getColumnNameAndShardingValuesMap(); - //如果没有条件查询,那么就查所有的分表 if (CollectionUtil.isEmpty(columnNameAndShardingValuesMap)) { return actualTableNames; } - //order_number条件的值 Collection orderNumberValues = columnNameAndShardingValuesMap.get("order_number"); - //user_id条件的值 Collection userIdValues = columnNameAndShardingValuesMap.get("user_id"); - //分片键的值 Long value = null; - //如果是order_number查询 if (CollectionUtil.isNotEmpty(orderNumberValues)) { value = orderNumberValues.stream().findFirst().orElseThrow(() -> new DaMaiFrameException(BaseCode.ORDER_NUMBER_NOT_EXIST)); - //如果是user_id查询 } else if (CollectionUtil.isNotEmpty(userIdValues)) { value = userIdValues.stream().findFirst().orElseThrow(() -> new DaMaiFrameException(BaseCode.USER_ID_NOT_EXIST)); } - //如果order_number或者user_id的值存在 if (Objects.nonNull(value)) { - //逻辑表名_分片键的值%分表数量 actualTableNames.add(logicTableName + "_" + value % shardingCount); } - return actualTableNames; + return allActualSplitTableNames; } } -- Gitee From 754bfdb76b2cdc8f6e228a4967aeaf4b3d8b23a6 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Fri, 1 Mar 2024 16:11:01 +0800 Subject: [PATCH 25/74] =?UTF-8?q?=E4=BB=A3=E7=A0=81bug=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../damai/config/JsonCustomSerializer.java | 52 ++++--------- .../damai/toolkit/SnowflakeIdGenerator.java | 78 +++---------------- .../toolkit/WorkAndDataCenterIdHandler.java | 9 +-- .../resources/lua/workAndDataCenterId.lua | 20 ----- 4 files changed, 33 insertions(+), 126 deletions(-) diff --git a/damai-common/src/main/java/com/damai/config/JsonCustomSerializer.java b/damai-common/src/main/java/com/damai/config/JsonCustomSerializer.java index c8f7f329..b8c3555a 100644 --- a/damai-common/src/main/java/com/damai/config/JsonCustomSerializer.java +++ b/damai-common/src/main/java/com/damai/config/JsonCustomSerializer.java @@ -2,7 +2,6 @@ package com.damai.config; import cn.hutool.core.date.DateTime; import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.BeanDescription; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.SerializationConfig; @@ -38,76 +37,59 @@ public class JsonCustomSerializer extends BeanSerializerModifier { Class clazz = javaType.getRawClass(); if (String.class.isAssignableFrom(clazz)) { return new com.fasterxml.jackson.databind.JsonSerializer() { - @Override - public void serialize(Object value, JsonGenerator jgen, SerializerProvider serializers) - throws IOException, JsonProcessingException { - jgen.writeString(""); + public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) + throws IOException { + gen.writeString(""); } - }; } - if (Number.class.isAssignableFrom(clazz)) { return new com.fasterxml.jackson.databind.JsonSerializer() { - @Override - public void serialize(Object value, JsonGenerator jgen, SerializerProvider serializers) + public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException { - jgen.writeString(""); + gen.writeString(""); } - }; } - if (Boolean.class.isAssignableFrom(clazz)) { return new com.fasterxml.jackson.databind.JsonSerializer() { - @Override - public void serialize(Object value, JsonGenerator jgen, SerializerProvider serializers) - throws IOException, JsonProcessingException { - jgen.writeBoolean(false); + public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) + throws IOException { + gen.writeBoolean(false); } - }; } - if (java.util.Date.class.isAssignableFrom(clazz)) { return new com.fasterxml.jackson.databind.JsonSerializer() { - @Override - public void serialize(Object value, JsonGenerator jgen, SerializerProvider serializers) - throws IOException, JsonProcessingException { - jgen.writeString(""); + public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) + throws IOException { + gen.writeString(""); } - }; } if (clazz.equals(DateTime.class)) { return new com.fasterxml.jackson.databind.JsonSerializer() { - @Override - public void serialize(Object value, JsonGenerator jgen, SerializerProvider serializers) - throws IOException, JsonProcessingException { - jgen.writeString(""); + public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) + throws IOException { + gen.writeString(""); } - }; } if (clazz.isArray() || clazz.equals(List.class) || clazz.equals(Set.class)) { return new com.fasterxml.jackson.databind.JsonSerializer() { - @Override - public void serialize(Object value, JsonGenerator jgen, SerializerProvider serializers) + public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException { - jgen.writeStartArray(); - jgen.writeEndArray(); + gen.writeStartArray(); + gen.writeEndArray(); } - }; } - return null; } - } diff --git a/damai-id-generator-framework/src/main/java/com/damai/toolkit/SnowflakeIdGenerator.java b/damai-id-generator-framework/src/main/java/com/damai/toolkit/SnowflakeIdGenerator.java index 0feec9bf..131eea23 100644 --- a/damai-id-generator-framework/src/main/java/com/damai/toolkit/SnowflakeIdGenerator.java +++ b/damai-id-generator-framework/src/main/java/com/damai/toolkit/SnowflakeIdGenerator.java @@ -19,46 +19,28 @@ import java.util.concurrent.ThreadLocalRandom; @Slf4j public class SnowflakeIdGenerator { - /** - * 时间起始标记点,作为基准,一般取系统的最近时间(一旦确定不能变动) - */ private static final long BASIS_TIME = 1288834974657L; - /** - * 机器标识位数 - */ private final long workerIdBits = 5L; private final long datacenterIdBits = 5L; private final long maxWorkerId = -1L ^ (-1L << workerIdBits); private final long maxDatacenterId = -1L ^ (-1L << datacenterIdBits); - /** - * 毫秒内自增位 - */ + private final long sequenceBits = 12L; private final long workerIdShift = sequenceBits; private final long datacenterIdShift = sequenceBits + workerIdBits; - /** - * 时间戳左移动位 - */ + private final long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits; private final long sequenceMask = -1L ^ (-1L << sequenceBits); private final long workerId; - /** - * 数据标识 ID 部分 - */ + private final long datacenterId; - /** - * 并发控制 - */ + private long sequence = 0L; - /** - * 上次生产 ID 时间戳 - */ + private long lastTimestamp = -1L; - /** - * IP 地址 - */ + private InetAddress inetAddress; public SnowflakeIdGenerator(WorkDataCenterId workDataCenterId) { @@ -83,13 +65,7 @@ public class SnowflakeIdGenerator { log.debug("Initialization SnowflakeIdGenerator datacenterId:" + this.datacenterId + " workerId:" + this.workerId); } } - - /** - * 有参构造器 - * - * @param workerId 工作机器 ID - * @param datacenterId 序列号 - */ + public SnowflakeIdGenerator(long workerId, long datacenterId) { Assert.isFalse(workerId > maxWorkerId || workerId < 0, String.format("worker Id can't be greater than %d or less than 0", maxWorkerId)); @@ -99,29 +75,17 @@ public class SnowflakeIdGenerator { this.datacenterId = datacenterId; initLog(); } - - /** - * 获取 maxWorkerId - */ + protected long getMaxWorkerId(long datacenterId, long maxWorkerId) { StringBuilder mpid = new StringBuilder(); mpid.append(datacenterId); String name = ManagementFactory.getRuntimeMXBean().getName(); if (StringUtils.isNotBlank(name)) { - /* - * GET jvmPid - */ mpid.append(name.split("@")[0]); } - /* - * MAC + PID 的 hashcode 获取16个低位 - */ return (mpid.toString().hashCode() & 0xffff) % (maxWorkerId + 1); } - - /** - * 数据标识id部分 - */ + protected long getDatacenterId(long maxDatacenterId) { long id = 0L; try { @@ -181,31 +145,19 @@ public class SnowflakeIdGenerator { return timestamp; } - - /** - * 获取分布式id - * - * @return id - */ + public synchronized long nextId() { long timestamp = getBase(); - - // 时间戳部分 | 数据中心部分 | 机器标识部分 | 序列号部分 + return ((timestamp - BASIS_TIME) << timestampLeftShift) | (datacenterId << datacenterIdShift) | (workerId << workerIdShift) | sequence; } - /** - * 获取订单编号 - * - * @return orderNumber - */ public synchronized long getOrderNumber(long userId,long tableCount) { long timestamp = getBase(); long sequenceShift = log2N(tableCount); - // 时间戳部分 | 数据中心部分 | 机器标识部分 | 序列号部分 | 用户id基因 return ((timestamp - BASIS_TIME) << timestampLeftShift) | (datacenterId << datacenterIdShift) | (workerId << workerIdShift) @@ -224,17 +176,11 @@ public class SnowflakeIdGenerator { protected long timeGen() { return SystemClock.now(); } - - /** - * 反解id的时间戳部分 - */ + public static long parseIdTimestamp(long id) { return (id>>22)+ BASIS_TIME; } - /** - * 求log2(N) - * */ public long log2N(long count) { return (long)(Math.log(count)/ Math.log(2)); } diff --git a/damai-id-generator-framework/src/main/java/com/damai/toolkit/WorkAndDataCenterIdHandler.java b/damai-id-generator-framework/src/main/java/com/damai/toolkit/WorkAndDataCenterIdHandler.java index f160aecf..79dd17b0 100644 --- a/damai-id-generator-framework/src/main/java/com/damai/toolkit/WorkAndDataCenterIdHandler.java +++ b/damai-id-generator-framework/src/main/java/com/damai/toolkit/WorkAndDataCenterIdHandler.java @@ -7,9 +7,8 @@ import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.script.DefaultRedisScript; import org.springframework.scripting.support.ResourceScriptSource; +import java.util.Arrays; import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.Stream; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 @@ -24,9 +23,9 @@ public class WorkAndDataCenterIdHandler { private final String SNOWFLAKE_DATA_CENTER_ID_key = "snowflake_data_center_id"; - public final List keys = Stream.of(SNOWFLAKE_WORK_ID_KEY,SNOWFLAKE_DATA_CENTER_ID_key).collect(Collectors.toList()); + public final List keys = Arrays.asList(SNOWFLAKE_WORK_ID_KEY,SNOWFLAKE_DATA_CENTER_ID_key); - private StringRedisTemplate stringRedisTemplate; + private final StringRedisTemplate stringRedisTemplate; private DefaultRedisScript redisScript; @@ -44,7 +43,7 @@ public class WorkAndDataCenterIdHandler { public WorkDataCenterId getWorkAndDataCenterId(){ WorkDataCenterId workDataCenterId = new WorkDataCenterId(); try { - String[] data = new String[2]; + Object[] data = new String[2]; data[0] = String.valueOf(IdGeneratorConstant.MAX_WORKER_ID); data[1] = String.valueOf(IdGeneratorConstant.MAX_DATA_CENTER_ID); String result = stringRedisTemplate.execute(redisScript, keys, data); diff --git a/damai-id-generator-framework/src/main/resources/lua/workAndDataCenterId.lua b/damai-id-generator-framework/src/main/resources/lua/workAndDataCenterId.lua index 10c5e445..20f682f8 100644 --- a/damai-id-generator-framework/src/main/resources/lua/workAndDataCenterId.lua +++ b/damai-id-generator-framework/src/main/resources/lua/workAndDataCenterId.lua @@ -1,57 +1,37 @@ --- redis中work_id的key local snowflake_work_id_key = KEYS[1] --- redis中data_center_id的key local snowflake_data_center_id_key = KEYS[2] --- worker_id的最大阈值 local max_worker_id = tonumber(ARGV[1]) --- data_center_id的最大阈值 local max_data_center_id = tonumber(ARGV[2]) --- 返回的work_id local return_worker_id = 0 --- 返回的data_center_id local return_data_center_id = 0 --- work_id初始化flag local snowflake_work_id_flag = false --- data_center_id初始化flag local snowflake_data_center_id_flag = false --- 构建并返回JSON字符串 local json_result = string.format('{"%s": %d, "%s": %d}', 'workId', return_worker_id, 'dataCenterId', return_data_center_id) --- 如果work_id不存在,则将值初始化为0 if (redis.call('exists', snowflake_work_id_key) == 0) then redis.call('set',snowflake_work_id_key,0) snowflake_work_id_flag = true end --- 如果data_center_id不存在,则将值初始化为0 if (redis.call('exists', snowflake_data_center_id_key) == 0) then redis.call('set',snowflake_data_center_id_key,0) snowflake_data_center_id_flag = true end --- 如果work_id和data_center_id都是初始化了,那么执行返回初始化的值 if (snowflake_work_id_flag and snowflake_data_center_id_flag) then return json_result end --- 获得work_id的值 local snowflake_work_id = tonumber(redis.call('get',snowflake_work_id_key)) --- 获得data_center_id的值 local snowflake_data_center_id = tonumber(redis.call('get',snowflake_data_center_id_key)) --- 如果work_id的值达到了最大阈值 if (snowflake_work_id == max_worker_id) then - -- 如果data_center_id的值也达到了最大阈值 if (snowflake_data_center_id == max_data_center_id) then - -- 将work_id的值初始化为0 redis.call('set',snowflake_work_id_key,0) - -- 将data_center_id的值初始化为0 redis.call('set',snowflake_data_center_id_key,0) else - -- 如果data_center_id的值没有达到最大值,将进行自增,并将自增的结果返回 return_data_center_id = redis.call('incr',snowflake_data_center_id_key) end else - -- 如果work_id的值没有达到最大值,将进行自增,并将自增的结果返回 return_worker_id = redis.call('incr',snowflake_work_id_key) end return string.format('{"%s": %d, "%s": %d}', -- Gitee From cde854213d3d704ce299a7248a74025e8780a2a7 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Fri, 1 Mar 2024 22:32:38 +0800 Subject: [PATCH 26/74] =?UTF-8?q?=E4=BB=A3=E7=A0=81bug=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/damai/lockinfo/AbstractLockInfoHandle.java | 4 ++-- .../java/com/damai/servicelock/aspect/ServiceLockAspect.java | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-redisson-common-framework/src/main/java/com/damai/lockinfo/AbstractLockInfoHandle.java b/damai-redisson-framework/damai-redisson-service-framework/damai-redisson-common-framework/src/main/java/com/damai/lockinfo/AbstractLockInfoHandle.java index 499bb16e..e55755d4 100644 --- a/damai-redisson-framework/damai-redisson-service-framework/damai-redisson-common-framework/src/main/java/com/damai/lockinfo/AbstractLockInfoHandle.java +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-redisson-common-framework/src/main/java/com/damai/lockinfo/AbstractLockInfoHandle.java @@ -60,7 +60,7 @@ public abstract class AbstractLockInfoHandle implements LockInfoHandle { * */ private String getRelKey(JoinPoint joinPoint, String[] keys){ Method method = getMethod(joinPoint); - List definitionKeys = getSpelRelKey(keys, method, joinPoint.getArgs()); + List definitionKeys = getSpElKey(keys, method, joinPoint.getArgs()); return SEPARATOR + String.join(SEPARATOR, definitionKeys); } @@ -78,7 +78,7 @@ public abstract class AbstractLockInfoHandle implements LockInfoHandle { return method; } - private List getSpelRelKey(String[] definitionKeys, Method method, Object[] parameterValues) { + private List getSpElKey(String[] definitionKeys, Method method, Object[] parameterValues) { List definitionKeyList = new ArrayList<>(); for (String definitionKey : definitionKeys) { if (!ObjectUtils.isEmpty(definitionKey)) { diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/servicelock/aspect/ServiceLockAspect.java b/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/servicelock/aspect/ServiceLockAspect.java index bad8ce31..c21ee586 100644 --- a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/servicelock/aspect/ServiceLockAspect.java +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/servicelock/aspect/ServiceLockAspect.java @@ -56,12 +56,10 @@ public class ServiceLockAspect { } }else { log.warn("Timeout while acquiring serviceLock:{}",lockName); - //加锁失败,如果设置了自定义处理,则执行 String customLockTimeoutStrategy = servicelock.customLockTimeoutStrategy(); if (StringUtil.isNotEmpty(customLockTimeoutStrategy)) { return handleCustomLockTimeoutStrategy(customLockTimeoutStrategy, joinPoint); }else{ - //默认处理 servicelock.lockTimeoutStrategy().handler(lockName); } return joinPoint.proceed(); -- Gitee From e18c1363fd5d102721e27b7aa40a295a074d13d6 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Sat, 2 Mar 2024 20:21:32 +0800 Subject: [PATCH 27/74] =?UTF-8?q?elasticsearch=E7=BB=84=E4=BB=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/damai/conf/BusinessEsAutoConfig.java | 5 ++--- .../src/main/java/com/damai/conf/BusinessEsProperties.java | 2 -- .../src/main/java/com/damai/util/BusinessEsHandle.java | 1 + 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/damai-elasticsearch-framework/src/main/java/com/damai/conf/BusinessEsAutoConfig.java b/damai-elasticsearch-framework/src/main/java/com/damai/conf/BusinessEsAutoConfig.java index d92c0b67..250093d9 100644 --- a/damai-elasticsearch-framework/src/main/java/com/damai/conf/BusinessEsAutoConfig.java +++ b/damai-elasticsearch-framework/src/main/java/com/damai/conf/BusinessEsAutoConfig.java @@ -46,8 +46,7 @@ public class BusinessEsAutoConfig { CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, passWord)); builder.setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider) - .setDefaultIOReactorConfig( - IOReactorConfig.custom() + .setDefaultIOReactorConfig(IOReactorConfig.custom() // 设置线程数 .setIoThreadCount(businessEsProperties.getMaxConnectNum()) .build())); @@ -60,7 +59,7 @@ public class BusinessEsAutoConfig { builder.setRequestConfigCallback(requestConfigBuilder -> requestConfigBuilder .setConnectTimeout(businessEsProperties.getConnectTimeOut()) .setSocketTimeout(businessEsProperties.getSocketTimeOut()) - .setConnectionRequestTimeout(businessEsProperties.getConnectionRequestTimeOut())); + .setConnectionRequestTimeout(businessEsProperties.getConnectionRequestTimeOut())); return builder.build(); } diff --git a/damai-elasticsearch-framework/src/main/java/com/damai/conf/BusinessEsProperties.java b/damai-elasticsearch-framework/src/main/java/com/damai/conf/BusinessEsProperties.java index df77f074..9829e169 100644 --- a/damai-elasticsearch-framework/src/main/java/com/damai/conf/BusinessEsProperties.java +++ b/damai-elasticsearch-framework/src/main/java/com/damai/conf/BusinessEsProperties.java @@ -31,6 +31,4 @@ public class BusinessEsProperties { private Integer connectionRequestTimeOut = 40000; private Integer maxConnectNum = 400; - - private Integer maxConnectPerRoute = 400; } diff --git a/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java b/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java index eb53a66c..533e1c4b 100644 --- a/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java +++ b/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java @@ -103,6 +103,7 @@ public class BusinessEsHandle { indexRequest.source(builder); String source = indexRequest.source().utf8ToString(); + log.info("create index execute dsl : {}",source); HttpEntity entity = new NStringEntity(source, ContentType.APPLICATION_JSON); Request request = new Request("PUT","/"+ indexName); request.setEntity(entity); -- Gitee From d1d39ff59a36147af1e4562901c81992215576f8 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Mon, 4 Mar 2024 15:49:10 +0800 Subject: [PATCH 28/74] =?UTF-8?q?=E4=BB=A3=E7=A0=81bug=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CustomEventPublishingRunListener.java | 38 ------------------- .../src/main/java/com/damai/util/Aes.java | 1 - .../com/damai/{core => util}/StringUtil.java | 2 +- .../com/damai/conf/BusinessEsAutoConfig.java | 2 +- .../java/com/damai/util/BusinessEsHandle.java | 1 - .../main/java/com/damai/redis/CacheUtil.java | 2 +- .../java/com/damai/redis/RedisCacheImpl.java | 2 +- .../lockinfo/AbstractLockInfoHandle.java | 2 +- .../servicelock/aspect/ServiceLockAspect.java | 2 +- .../main/java/com/damai/vo/TicketUserVo.java | 2 +- .../src/main/java/com/damai/vo/UserVo.java | 2 +- .../com/damai/monitor/DingTalkMessage.java | 2 +- .../com/damai/service/AllRuleService.java | 2 +- .../com/damai/service/ApiDataService.java | 2 +- .../com/damai/service/DepthRuleService.java | 2 +- .../damai/conf/swagger/SwaggerProvider.java | 2 +- .../com/damai/exception/CheckCodeHandler.java | 2 +- .../damai/filter/RequestValidationFilter.java | 2 +- .../filter/ResponseValidationFilter.java | 2 +- .../com/damai/service/ApiRestrictService.java | 2 +- .../com/damai/service/ChannelDataService.java | 2 +- .../java/com/damai/service/TokenService.java | 2 +- .../java/com/damai/run/ServiceJobRun.java | 2 +- .../DelayOrderCancelConsumer.java | 2 +- .../DelayOperateProgramDataConsumer.java | 2 +- .../java/com/damai/service/TokenService.java | 2 +- .../java/com/damai/service/UserService.java | 2 +- .../impl/UserRegisterVerifyCaptcha.java | 2 +- .../com/damai/callback/JobRunCallBack.java | 2 +- .../spring/webmvc/SentinelWebInterceptor.java | 2 +- .../com/damai/filter/BaseParameterFilter.java | 2 +- ...erCenterAutoConfigurationImportFilter.java | 2 +- .../filter/RequestParamContextFilter.java | 2 +- 33 files changed, 30 insertions(+), 70 deletions(-) delete mode 100644 damai-common/src/main/java/com/damai/runlistener/CustomEventPublishingRunListener.java rename damai-common/src/main/java/com/damai/{core => util}/StringUtil.java (98%) diff --git a/damai-common/src/main/java/com/damai/runlistener/CustomEventPublishingRunListener.java b/damai-common/src/main/java/com/damai/runlistener/CustomEventPublishingRunListener.java deleted file mode 100644 index 976e2d2b..00000000 --- a/damai-common/src/main/java/com/damai/runlistener/CustomEventPublishingRunListener.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.damai.runlistener; - -import com.damai.core.StringUtil; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.SpringApplicationRunListener; -import org.springframework.core.Ordered; -import org.springframework.core.env.ConfigurableEnvironment; - -/** - * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: 服务名配置 - * @author: 阿宽不是程序员 - **/ -public class CustomEventPublishingRunListener implements SpringApplicationRunListener, Ordered { - - private static final String SPRING_APPLICATION_NAME = "spring.application.name"; - - private final SpringApplication application; - - private final String[] args; - - public CustomEventPublishingRunListener(SpringApplication application, String[] args){ - this.application = application; - this.args = args; - } - @Override - public int getOrder() { - return 1; - } - - @Override - public void environmentPrepared(ConfigurableEnvironment environment) { - String applicationName = environment.getProperty(SPRING_APPLICATION_NAME); - if (StringUtil.isNotEmpty(applicationName)) { - System.setProperty("applicationName", applicationName); - } - } -} diff --git a/damai-common/src/main/java/com/damai/util/Aes.java b/damai-common/src/main/java/com/damai/util/Aes.java index 442d541c..e03b56b4 100644 --- a/damai-common/src/main/java/com/damai/util/Aes.java +++ b/damai-common/src/main/java/com/damai/util/Aes.java @@ -1,6 +1,5 @@ package com.damai.util; -import com.damai.core.StringUtil; import com.damai.enums.BaseCode; import com.damai.exception.DaMaiFrameException; import lombok.extern.slf4j.Slf4j; diff --git a/damai-common/src/main/java/com/damai/core/StringUtil.java b/damai-common/src/main/java/com/damai/util/StringUtil.java similarity index 98% rename from damai-common/src/main/java/com/damai/core/StringUtil.java rename to damai-common/src/main/java/com/damai/util/StringUtil.java index 102c9573..962a8dfd 100644 --- a/damai-common/src/main/java/com/damai/core/StringUtil.java +++ b/damai-common/src/main/java/com/damai/util/StringUtil.java @@ -1,4 +1,4 @@ -package com.damai.core; +package com.damai.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/damai-elasticsearch-framework/src/main/java/com/damai/conf/BusinessEsAutoConfig.java b/damai-elasticsearch-framework/src/main/java/com/damai/conf/BusinessEsAutoConfig.java index 250093d9..e1134510 100644 --- a/damai-elasticsearch-framework/src/main/java/com/damai/conf/BusinessEsAutoConfig.java +++ b/damai-elasticsearch-framework/src/main/java/com/damai/conf/BusinessEsAutoConfig.java @@ -1,7 +1,7 @@ package com.damai.conf; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import com.damai.util.BusinessEsHandle; import org.apache.http.Header; import org.apache.http.HttpHeaders; diff --git a/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java b/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java index 533e1c4b..865790db 100644 --- a/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java +++ b/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java @@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.damai.core.StringUtil; import com.damai.dto.EsDataQueryDto; import com.damai.dto.EsDocumentMappingDto; import com.damai.dto.EsGeoPointDto; diff --git a/damai-redis-framework/src/main/java/com/damai/redis/CacheUtil.java b/damai-redis-framework/src/main/java/com/damai/redis/CacheUtil.java index f08ad73a..fcc7c7b7 100644 --- a/damai-redis-framework/src/main/java/com/damai/redis/CacheUtil.java +++ b/damai-redis-framework/src/main/java/com/damai/redis/CacheUtil.java @@ -1,7 +1,7 @@ package com.damai.redis; import com.alibaba.fastjson.util.ParameterizedTypeImpl; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import java.lang.reflect.Type; import java.util.Collection; import java.util.List; diff --git a/damai-redis-framework/src/main/java/com/damai/redis/RedisCacheImpl.java b/damai-redis-framework/src/main/java/com/damai/redis/RedisCacheImpl.java index 087d8e58..841b97ee 100644 --- a/damai-redis-framework/src/main/java/com/damai/redis/RedisCacheImpl.java +++ b/damai-redis-framework/src/main/java/com/damai/redis/RedisCacheImpl.java @@ -2,7 +2,7 @@ package com.damai.redis; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import lombok.AllArgsConstructor; import org.springframework.data.redis.connection.DataType; import org.springframework.data.redis.core.Cursor; diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-redisson-common-framework/src/main/java/com/damai/lockinfo/AbstractLockInfoHandle.java b/damai-redisson-framework/damai-redisson-service-framework/damai-redisson-common-framework/src/main/java/com/damai/lockinfo/AbstractLockInfoHandle.java index e55755d4..9337a9e7 100644 --- a/damai-redisson-framework/damai-redisson-service-framework/damai-redisson-common-framework/src/main/java/com/damai/lockinfo/AbstractLockInfoHandle.java +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-redisson-common-framework/src/main/java/com/damai/lockinfo/AbstractLockInfoHandle.java @@ -2,7 +2,7 @@ package com.damai.lockinfo; import com.damai.core.SpringUtil; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.reflect.MethodSignature; diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/servicelock/aspect/ServiceLockAspect.java b/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/servicelock/aspect/ServiceLockAspect.java index c21ee586..d93c62ed 100644 --- a/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/servicelock/aspect/ServiceLockAspect.java +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-service-lock-framework/src/main/java/com/damai/servicelock/aspect/ServiceLockAspect.java @@ -1,7 +1,7 @@ package com.damai.servicelock.aspect; import com.damai.constant.LockInfoType; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import com.damai.lockinfo.LockInfoHandle; import com.damai.lockinfo.factory.LockInfoHandleFactory; import com.damai.servicelock.LockType; diff --git a/damai-server-client/damai-user-client/src/main/java/com/damai/vo/TicketUserVo.java b/damai-server-client/damai-user-client/src/main/java/com/damai/vo/TicketUserVo.java index c4b8cd2f..3b6a89ba 100644 --- a/damai-server-client/damai-user-client/src/main/java/com/damai/vo/TicketUserVo.java +++ b/damai-server-client/damai-user-client/src/main/java/com/damai/vo/TicketUserVo.java @@ -1,7 +1,7 @@ package com.damai.vo; import cn.hutool.core.util.DesensitizedUtil; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/damai-server-client/damai-user-client/src/main/java/com/damai/vo/UserVo.java b/damai-server-client/damai-user-client/src/main/java/com/damai/vo/UserVo.java index 244ec7dc..30243b54 100644 --- a/damai-server-client/damai-user-client/src/main/java/com/damai/vo/UserVo.java +++ b/damai-server-client/damai-user-client/src/main/java/com/damai/vo/UserVo.java @@ -1,7 +1,7 @@ package com.damai.vo; import cn.hutool.core.util.DesensitizedUtil; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/damai-server/damai-admin-service/src/main/java/com/damai/monitor/DingTalkMessage.java b/damai-server/damai-admin-service/src/main/java/com/damai/monitor/DingTalkMessage.java index 743c0ec1..8c3fce1f 100644 --- a/damai-server/damai-admin-service/src/main/java/com/damai/monitor/DingTalkMessage.java +++ b/damai-server/damai-admin-service/src/main/java/com/damai/monitor/DingTalkMessage.java @@ -1,7 +1,7 @@ package com.damai.monitor; import com.alibaba.fastjson.JSON; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; diff --git a/damai-server/damai-customize-service/src/main/java/com/damai/service/AllRuleService.java b/damai-server/damai-customize-service/src/main/java/com/damai/service/AllRuleService.java index 41754bf3..a1b3bfdf 100644 --- a/damai-server/damai-customize-service/src/main/java/com/damai/service/AllRuleService.java +++ b/damai-server/damai-customize-service/src/main/java/com/damai/service/AllRuleService.java @@ -2,7 +2,7 @@ package com.damai.service; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import com.damai.dto.AllRuleDto; import com.damai.dto.DepthRuleDto; import com.damai.enums.BaseCode; diff --git a/damai-server/damai-customize-service/src/main/java/com/damai/service/ApiDataService.java b/damai-server/damai-customize-service/src/main/java/com/damai/service/ApiDataService.java index 9f413abb..2d0578f8 100644 --- a/damai-server/damai-customize-service/src/main/java/com/damai/service/ApiDataService.java +++ b/damai-server/damai-customize-service/src/main/java/com/damai/service/ApiDataService.java @@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.damai.core.RepeatExecuteLimitConstants; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import com.damai.dto.ApiDataDto; import com.damai.entity.ApiData; import com.damai.mapper.ApiDataMapper; diff --git a/damai-server/damai-customize-service/src/main/java/com/damai/service/DepthRuleService.java b/damai-server/damai-customize-service/src/main/java/com/damai/service/DepthRuleService.java index d6fd2f80..b93f99c8 100644 --- a/damai-server/damai-customize-service/src/main/java/com/damai/service/DepthRuleService.java +++ b/damai-server/damai-customize-service/src/main/java/com/damai/service/DepthRuleService.java @@ -4,7 +4,7 @@ import cn.hutool.core.date.DateUtil; import com.baidu.fsg.uid.UidGenerator; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import com.damai.dto.DepthRuleDto; import com.damai.dto.DepthRuleStatusDto; import com.damai.dto.DepthRuleUpdateDto; diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/conf/swagger/SwaggerProvider.java b/damai-server/damai-gateway-service/src/main/java/com/damai/conf/swagger/SwaggerProvider.java index 1a34bed5..b7e6cbdb 100644 --- a/damai-server/damai-gateway-service/src/main/java/com/damai/conf/swagger/SwaggerProvider.java +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/conf/swagger/SwaggerProvider.java @@ -2,7 +2,7 @@ package com.damai.conf.swagger; import cn.hutool.core.collection.CollUtil; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import lombok.AllArgsConstructor; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.DiscoveryClient; diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/exception/CheckCodeHandler.java b/damai-server/damai-gateway-service/src/main/java/com/damai/exception/CheckCodeHandler.java index fab5f3d8..ac45aca3 100644 --- a/damai-server/damai-gateway-service/src/main/java/com/damai/exception/CheckCodeHandler.java +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/exception/CheckCodeHandler.java @@ -1,6 +1,6 @@ package com.damai.exception; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import com.damai.enums.BaseCode; import org.springframework.stereotype.Component; diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/filter/RequestValidationFilter.java b/damai-server/damai-gateway-service/src/main/java/com/damai/filter/RequestValidationFilter.java index c831dbb7..03879212 100644 --- a/damai-server/damai-gateway-service/src/main/java/com/damai/filter/RequestValidationFilter.java +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/filter/RequestValidationFilter.java @@ -5,7 +5,7 @@ import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSON; import com.baidu.fsg.uid.UidGenerator; import com.damai.conf.RequestTemporaryWrapper; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import com.damai.enums.BaseCode; import com.damai.exception.ArgumentError; import com.damai.exception.ArgumentException; diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/filter/ResponseValidationFilter.java b/damai-server/damai-gateway-service/src/main/java/com/damai/filter/ResponseValidationFilter.java index 9a9528c3..2dba06ef 100644 --- a/damai-server/damai-gateway-service/src/main/java/com/damai/filter/ResponseValidationFilter.java +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/filter/ResponseValidationFilter.java @@ -2,7 +2,7 @@ package com.damai.filter; import com.alibaba.fastjson.JSON; import com.damai.common.ApiResponse; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import com.damai.service.ChannelDataService; import com.damai.util.RsaTool; import com.damai.vo.GetChannelDataVo; diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/service/ApiRestrictService.java b/damai-server/damai-gateway-service/src/main/java/com/damai/service/ApiRestrictService.java index 9fb4b398..48c40e14 100644 --- a/damai-server/damai-gateway-service/src/main/java/com/damai/service/ApiRestrictService.java +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/service/ApiRestrictService.java @@ -6,7 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baidu.fsg.uid.UidGenerator; import com.damai.core.RedisKeyManage; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import com.damai.dto.ApiDataDto; import com.damai.enums.ApiRuleType; import com.damai.enums.BaseCode; diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/service/ChannelDataService.java b/damai-server/damai-gateway-service/src/main/java/com/damai/service/ChannelDataService.java index bfcef192..54c17246 100644 --- a/damai-server/damai-gateway-service/src/main/java/com/damai/service/ChannelDataService.java +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/service/ChannelDataService.java @@ -3,7 +3,7 @@ package com.damai.service; import com.damai.client.BaseDataClient; import com.damai.common.ApiResponse; import com.damai.core.RedisKeyManage; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import com.damai.dto.GetChannelDataByCodeDto; import com.damai.enums.BaseCode; import com.damai.exception.ArgumentError; diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/service/TokenService.java b/damai-server/damai-gateway-service/src/main/java/com/damai/service/TokenService.java index 503c5b5d..87fcb735 100644 --- a/damai-server/damai-gateway-service/src/main/java/com/damai/service/TokenService.java +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/service/TokenService.java @@ -2,7 +2,7 @@ package com.damai.service; import com.alibaba.fastjson.JSONObject; import com.damai.core.RedisKeyManage; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import com.damai.enums.BaseCode; import com.damai.exception.DaMaiFrameException; import com.damai.jwt.TokenUtil; diff --git a/damai-server/damai-job-service/src/main/java/com/damai/run/ServiceJobRun.java b/damai-server/damai-job-service/src/main/java/com/damai/run/ServiceJobRun.java index 5195e8a8..12f18709 100644 --- a/damai-server/damai-job-service/src/main/java/com/damai/run/ServiceJobRun.java +++ b/damai-server/damai-job-service/src/main/java/com/damai/run/ServiceJobRun.java @@ -2,7 +2,7 @@ package com.damai.run; import com.alibaba.fastjson.JSONObject; import com.baidu.fsg.uid.UidGenerator; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import com.damai.entity.JobInfo; import com.damai.entity.JobRunRecord; import com.damai.enums.BaseCode; diff --git a/damai-server/damai-order-service/src/main/java/com/damai/service/delayconsumer/DelayOrderCancelConsumer.java b/damai-server/damai-order-service/src/main/java/com/damai/service/delayconsumer/DelayOrderCancelConsumer.java index 74939534..e9c0c5e6 100644 --- a/damai-server/damai-order-service/src/main/java/com/damai/service/delayconsumer/DelayOrderCancelConsumer.java +++ b/damai-server/damai-order-service/src/main/java/com/damai/service/delayconsumer/DelayOrderCancelConsumer.java @@ -2,7 +2,7 @@ package com.damai.service.delayconsumer; import com.alibaba.fastjson.JSON; import com.damai.core.SpringUtil; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import com.damai.core.ConsumerTask; import com.damai.dto.DelayOrderCancelDto; import com.damai.dto.OrderCancelDto; diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/delayconsumer/DelayOperateProgramDataConsumer.java b/damai-server/damai-program-service/src/main/java/com/damai/service/delayconsumer/DelayOperateProgramDataConsumer.java index eb02700d..69d6c019 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/delayconsumer/DelayOperateProgramDataConsumer.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/delayconsumer/DelayOperateProgramDataConsumer.java @@ -3,7 +3,7 @@ package com.damai.service.delayconsumer; import com.alibaba.fastjson.JSON; import com.damai.core.ConsumerTask; import com.damai.core.SpringUtil; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import com.damai.dto.ProgramOperateDataDto; import com.damai.service.ProgramService; import lombok.extern.slf4j.Slf4j; diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/TokenService.java b/damai-server/damai-user-service/src/main/java/com/damai/service/TokenService.java index eeb4cfc3..69de8951 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/TokenService.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/TokenService.java @@ -2,7 +2,7 @@ package com.damai.service; import com.alibaba.fastjson.JSONObject; import com.damai.core.RedisKeyManage; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import com.damai.enums.BaseCode; import com.damai.exception.DaMaiFrameException; import com.damai.jwt.TokenUtil; diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java b/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java index 5c9c8aad..3bf1fca7 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/UserService.java @@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.damai.client.BaseDataClient; import com.damai.common.ApiResponse; import com.damai.core.RedisKeyManage; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import com.damai.dto.GetChannelDataByCodeDto; import com.damai.dto.UserAuthenticationDto; import com.damai.dto.UserExistDto; diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterVerifyCaptcha.java b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterVerifyCaptcha.java index 01be4d02..5bea2f1a 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterVerifyCaptcha.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/composite/register/impl/UserRegisterVerifyCaptcha.java @@ -3,7 +3,7 @@ package com.damai.service.composite.register.impl; import com.anji.captcha.model.common.ResponseModel; import com.anji.captcha.model.vo.CaptchaVO; import com.damai.core.RedisKeyManage; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import com.damai.dto.UserRegisterDto; import com.damai.enums.BaseCode; import com.damai.enums.VerifyCaptcha; diff --git a/damai-spring-cloud-framework/damai-job-async/src/main/java/com/damai/callback/JobRunCallBack.java b/damai-spring-cloud-framework/damai-job-async/src/main/java/com/damai/callback/JobRunCallBack.java index 9b08699d..06bc990d 100644 --- a/damai-spring-cloud-framework/damai-job-async/src/main/java/com/damai/callback/JobRunCallBack.java +++ b/damai-spring-cloud-framework/damai-job-async/src/main/java/com/damai/callback/JobRunCallBack.java @@ -3,7 +3,7 @@ package com.damai.callback; import com.alibaba.fastjson.JSON; import com.damai.client.JobClient; import com.damai.common.ApiResponse; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import com.damai.dto.JobCallBackDto; import com.damai.threadlocal.BaseParameterHolder; import lombok.extern.slf4j.Slf4j; diff --git a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-web-general/src/main/java/com/alibaba/csp/sentinel/adapter/spring/webmvc/SentinelWebInterceptor.java b/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-web-general/src/main/java/com/alibaba/csp/sentinel/adapter/spring/webmvc/SentinelWebInterceptor.java index 122623b9..667e1a6e 100644 --- a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-web-general/src/main/java/com/alibaba/csp/sentinel/adapter/spring/webmvc/SentinelWebInterceptor.java +++ b/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-web-general/src/main/java/com/alibaba/csp/sentinel/adapter/spring/webmvc/SentinelWebInterceptor.java @@ -67,7 +67,7 @@ public class SentinelWebInterceptor extends AbstractSentinelInterceptor { resourceName = request.getMethod().toUpperCase() + ":" + resourceName; } Optional applicationNameOptional = Optional.ofNullable(SpringUtil.getProperty("spring.application.name")) - .filter(com.damai.core.StringUtil::isNotEmpty); + .filter(com.damai.util.StringUtil::isNotEmpty); if (applicationNameOptional.isPresent()) { String applicationName = applicationNameOptional.get(); resourceName = applicationName + SPLIT_RESOURCE + resourceName; diff --git a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/filter/BaseParameterFilter.java b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/filter/BaseParameterFilter.java index f785a23c..9ce1bb1e 100644 --- a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/filter/BaseParameterFilter.java +++ b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/filter/BaseParameterFilter.java @@ -1,6 +1,6 @@ package com.damai.filter; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import com.damai.threadlocal.BaseParameterHolder; import lombok.extern.slf4j.Slf4j; import org.slf4j.MDC; diff --git a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/registercenter/RegisterCenterAutoConfigurationImportFilter.java b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/registercenter/RegisterCenterAutoConfigurationImportFilter.java index 56d7e6d3..094f8bc2 100644 --- a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/registercenter/RegisterCenterAutoConfigurationImportFilter.java +++ b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/registercenter/RegisterCenterAutoConfigurationImportFilter.java @@ -1,6 +1,6 @@ package com.damai.registercenter; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import org.springframework.boot.autoconfigure.AutoConfigurationImportFilter; import org.springframework.boot.autoconfigure.AutoConfigurationMetadata; import org.springframework.context.EnvironmentAware; diff --git a/damai-thread-pool-framework/src/main/java/com/damai/filter/RequestParamContextFilter.java b/damai-thread-pool-framework/src/main/java/com/damai/filter/RequestParamContextFilter.java index 16164712..8f697e8c 100644 --- a/damai-thread-pool-framework/src/main/java/com/damai/filter/RequestParamContextFilter.java +++ b/damai-thread-pool-framework/src/main/java/com/damai/filter/RequestParamContextFilter.java @@ -1,7 +1,7 @@ package com.damai.filter; -import com.damai.core.StringUtil; +import com.damai.util.StringUtil; import org.slf4j.MDC; import org.springframework.web.filter.OncePerRequestFilter; -- Gitee From 5fb1f2a72308bb88ac300cfe7066288d2574dfa6 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Mon, 4 Mar 2024 17:07:53 +0800 Subject: [PATCH 29/74] =?UTF-8?q?=E4=BB=A3=E7=A0=81bug=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/damai/page/PageVo.java | 22 +++++-------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/page/PageVo.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/page/PageVo.java index 950370df..e13e5c7e 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/page/PageVo.java +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/page/PageVo.java @@ -33,32 +33,20 @@ import java.util.List; @Data @NoArgsConstructor @AllArgsConstructor -@ApiModel(value="UserVo", description ="用户数据") +@ApiModel(value="UserVo", description ="分页返回数据") public class PageVo implements Serializable { private static final long serialVersionUID = 1L; - - /** - * 页码 - */ + @ApiModelProperty(name ="pageNum", dataType ="String", value ="页码") private long pageNum; - - /** - * 页大小 - */ + @ApiModelProperty(name ="pageSize", dataType ="String", value ="页大小") private long pageSize; - - /** - * 记录总数 - */ + @ApiModelProperty(name ="totalSize", dataType ="String", value ="记录总数") private long totalSize; - - /** - * 数据 - */ + @ApiModelProperty(name ="list", dataType ="List", value ="数据") private List list; } -- Gitee From feeff87fb81e565af14659d0a35f29f2f8cdffb4 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Mon, 4 Mar 2024 17:18:21 +0800 Subject: [PATCH 30/74] =?UTF-8?q?swagger=E4=BB=A3=E7=A0=81=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/damai/swagger/SwaggerConfiguration.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/swagger/SwaggerConfiguration.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/swagger/SwaggerConfiguration.java index e0b0784e..aa13798e 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/swagger/SwaggerConfiguration.java +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/swagger/SwaggerConfiguration.java @@ -1,13 +1,11 @@ package com.damai.swagger; import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; -import com.google.common.base.Predicate; import com.google.common.collect.Lists; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.context.annotation.Bean; import org.springframework.core.annotation.Order; -import springfox.documentation.RequestHandler; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.service.ApiInfo; @@ -35,18 +33,16 @@ public class SwaggerConfiguration { @Order(value = 1) public Docket groupRestApi() { - Predicate predicate = (requestHandler) -> { - boolean controllerStandardDocument = requestHandler.findControllerAnnotation(Api.class).isPresent(); - boolean methodStandardDocument = requestHandler.findAnnotation(ApiOperation.class).isPresent(); - return controllerStandardDocument || methodStandardDocument; - }; - return new Docket(DocumentationType.SWAGGER_2) .apiInfo(groupApiInfo()) .useDefaultResponseMessages(false) .forCodeGeneration(true) .select() - .apis(predicate) + .apis((requestHandler) -> { + boolean controllerStandardDocument = requestHandler.findControllerAnnotation(Api.class).isPresent(); + boolean methodStandardDocument = requestHandler.findAnnotation(ApiOperation.class).isPresent(); + return controllerStandardDocument || methodStandardDocument; + }) .build(); } -- Gitee From 2f667ef75ed281f524407bf1ea5de3d921319051 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Mon, 4 Mar 2024 17:19:44 +0800 Subject: [PATCH 31/74] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- damai-common/src/main/resources/META-INF/spring.factories | 2 -- 1 file changed, 2 deletions(-) diff --git a/damai-common/src/main/resources/META-INF/spring.factories b/damai-common/src/main/resources/META-INF/spring.factories index 29f829cf..0d5c527e 100644 --- a/damai-common/src/main/resources/META-INF/spring.factories +++ b/damai-common/src/main/resources/META-INF/spring.factories @@ -1,6 +1,4 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.damai.config.DaMaiCommonAutoConfig -org.springframework.boot.SpringApplicationRunListener=\ - com.damai.runlistener.CustomEventPublishingRunListener org.springframework.boot.env.EnvironmentPostProcessor=\ com.damai.environment.SpringEnvironment \ No newline at end of file -- Gitee From e0bb172fcc123af85862b4279b065626391fe89c Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Tue, 5 Mar 2024 15:44:01 +0800 Subject: [PATCH 32/74] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/damai/service/ApiDataService.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/damai-server/damai-customize-service/src/main/java/com/damai/service/ApiDataService.java b/damai-server/damai-customize-service/src/main/java/com/damai/service/ApiDataService.java index 2d0578f8..351ba08e 100644 --- a/damai-server/damai-customize-service/src/main/java/com/damai/service/ApiDataService.java +++ b/damai-server/damai-customize-service/src/main/java/com/damai/service/ApiDataService.java @@ -37,8 +37,11 @@ public class ApiDataService extends ServiceImpl { @RepeatExecuteLimit(name = RepeatExecuteLimitConstants.CONSUMER_API_DATA_MESSAGE,keys = {"#apiData.id"}) public void saveApiData(ApiData apiData){ - log.info("saveApiData apiData:{}", JSON.toJSONString(apiData)); - apiDataMapper.insert(apiData); + ApiData dbApiData = apiDataMapper.selectById(apiData.getId()); + if (Objects.isNull(dbApiData)) { + log.info("saveApiData apiData:{}", JSON.toJSONString(apiData)); + apiDataMapper.insert(apiData); + } } public Page pageList(final ApiDataDto dto) { -- Gitee From 1e5d928fd0c764e57d4096bbe1579e3cecfbd3cf Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Tue, 5 Mar 2024 22:28:46 +0800 Subject: [PATCH 33/74] =?UTF-8?q?=E5=BB=B6=E8=BF=9F=E9=98=9F=E5=88=97?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../damai/config/DelayQueueAutoConfig.java | 12 ++++++++--- .../com/damai/context/DelayQueueContext.java | 20 ++++++------------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/config/DelayQueueAutoConfig.java b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/config/DelayQueueAutoConfig.java index 40a0f861..f1b70aad 100644 --- a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/config/DelayQueueAutoConfig.java +++ b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/config/DelayQueueAutoConfig.java @@ -1,6 +1,7 @@ package com.damai.config; +import com.damai.context.DelayQueueBasePart; import com.damai.context.DelayQueueContext; import com.damai.event.DelayQueueInitHandler; import org.redisson.api.RedissonClient; @@ -19,9 +20,14 @@ public class DelayQueueAutoConfig { public DelayQueueInitHandler delayQueueInitHandler(DelayQueueProperties delayQueueProperties, RedissonClient redissonClient){ return new DelayQueueInitHandler(delayQueueProperties, redissonClient); } - + + @Bean + public DelayQueueBasePart delayQueueBasePart(RedissonClient redissonClient,DelayQueueProperties delayQueueProperties){ + return new DelayQueueBasePart(redissonClient,delayQueueProperties); + } + @Bean - public DelayQueueContext delayQueueContext(DelayQueueProperties delayQueueProperties, RedissonClient redissonClient){ - return new DelayQueueContext(delayQueueProperties,redissonClient); + public DelayQueueContext delayQueueContext(DelayQueueBasePart delayQueueBasePart){ + return new DelayQueueContext(delayQueueBasePart); } } diff --git a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/context/DelayQueueContext.java b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/context/DelayQueueContext.java index dcaf814a..3a387dc3 100644 --- a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/context/DelayQueueContext.java +++ b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/context/DelayQueueContext.java @@ -1,8 +1,5 @@ package com.damai.context; -import com.damai.config.DelayQueueProperties; -import org.redisson.api.RedissonClient; - import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; @@ -14,22 +11,17 @@ import java.util.concurrent.TimeUnit; **/ public class DelayQueueContext { - private final DelayQueueProperties delayQueueProperties; - - private final RedissonClient redissonClient; - + private final DelayQueueBasePart delayQueueBasePart; + //key为topc主题,value为发送消息的处理器 private final Map delayQueueProduceCombineMap = new ConcurrentHashMap<>(); - public DelayQueueContext(DelayQueueProperties delayQueueProperties,RedissonClient redissonClient){ - this.delayQueueProperties = delayQueueProperties; - this.redissonClient = redissonClient; + public DelayQueueContext(DelayQueueBasePart delayQueueBasePart){ + this.delayQueueBasePart = delayQueueBasePart; } public void sendMessage(String topic,String content,long delayTime, TimeUnit timeUnit) { - DelayQueueProduceCombine delayQueueProduceCombine = delayQueueProduceCombineMap.computeIfAbsent(topic,k -> { - DelayQueueBasePart delayQueueBasePart = new DelayQueueBasePart(redissonClient,delayQueueProperties); - return new DelayQueueProduceCombine(delayQueueBasePart,topic); - }); + DelayQueueProduceCombine delayQueueProduceCombine = delayQueueProduceCombineMap.computeIfAbsent( + topic, k -> new DelayQueueProduceCombine(delayQueueBasePart,topic)); delayQueueProduceCombine.offer(content,delayTime,timeUnit); } } -- Gitee From 1d4aba574a127a119c7381325b047bce623480d5 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Wed, 6 Mar 2024 15:42:57 +0800 Subject: [PATCH 34/74] =?UTF-8?q?=E5=BB=B6=E8=BF=9F=E9=98=9F=E5=88=97?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/damai/config/DelayQueueAutoConfig.java | 4 ++-- .../com/damai/context/DelayQueueBasePart.java | 8 +------- .../java/com/damai/context/DelayQueuePart.java | 15 ++++++--------- .../java/com/damai/core/DelayConsumerQueue.java | 12 ++++++------ .../com/damai/event/DelayQueueInitHandler.java | 17 ++++++++++------- 5 files changed, 25 insertions(+), 31 deletions(-) diff --git a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/config/DelayQueueAutoConfig.java b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/config/DelayQueueAutoConfig.java index f1b70aad..1ef613d7 100644 --- a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/config/DelayQueueAutoConfig.java +++ b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/config/DelayQueueAutoConfig.java @@ -17,8 +17,8 @@ import org.springframework.context.annotation.Bean; public class DelayQueueAutoConfig { @Bean - public DelayQueueInitHandler delayQueueInitHandler(DelayQueueProperties delayQueueProperties, RedissonClient redissonClient){ - return new DelayQueueInitHandler(delayQueueProperties, redissonClient); + public DelayQueueInitHandler delayQueueInitHandler(DelayQueueBasePart delayQueueBasePart){ + return new DelayQueueInitHandler(delayQueueBasePart); } @Bean diff --git a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/context/DelayQueueBasePart.java b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/context/DelayQueueBasePart.java index bfdd9877..371d36de 100644 --- a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/context/DelayQueueBasePart.java +++ b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/context/DelayQueueBasePart.java @@ -7,20 +7,14 @@ import org.redisson.api.RedissonClient; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: 延迟队列 分片 + * @description: 延迟队列配置信息 * @author: 阿宽不是程序员 **/ @Data @AllArgsConstructor public class DelayQueueBasePart { - /** - * redisson客户端 - * */ private final RedissonClient redissonClient; - /** - * 配置信息 - * */ private final DelayQueueProperties delayQueueProperties; } diff --git a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/context/DelayQueuePart.java b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/context/DelayQueuePart.java index 7659e330..f13fa256 100644 --- a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/context/DelayQueuePart.java +++ b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/context/DelayQueuePart.java @@ -1,25 +1,22 @@ package com.damai.context; -import com.damai.config.DelayQueueProperties; import com.damai.core.ConsumerTask; import lombok.Data; -import org.redisson.api.RedissonClient; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: 延迟队列 消费分片 + * @description: 消息主题 * @author: 阿宽不是程序员 **/ @Data -public class DelayQueuePart extends DelayQueueBasePart { +public class DelayQueuePart { - /** - * 客户端对象 - * */ + private final DelayQueueBasePart delayQueueBasePart; + private final ConsumerTask consumerTask; - public DelayQueuePart(RedissonClient redissonClient, DelayQueueProperties delayQueueProperties, ConsumerTask consumerTask){ - super(redissonClient,delayQueueProperties); + public DelayQueuePart(DelayQueueBasePart delayQueueBasePart, ConsumerTask consumerTask){ + this.delayQueueBasePart = delayQueueBasePart; this.consumerTask = consumerTask; } } diff --git a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/core/DelayConsumerQueue.java b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/core/DelayConsumerQueue.java index d4874bde..cf440ca9 100644 --- a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/core/DelayConsumerQueue.java +++ b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/core/DelayConsumerQueue.java @@ -29,16 +29,16 @@ public class DelayConsumerQueue extends DelayBaseQueue{ private final ConsumerTask consumerTask; public DelayConsumerQueue(DelayQueuePart delayQueuePart, String relTopic){ - super(delayQueuePart.getRedissonClient(),relTopic); + super(delayQueuePart.getDelayQueueBasePart().getRedissonClient(),relTopic); this.listenStartThreadPool = new ThreadPoolExecutor(1,1,60, TimeUnit.SECONDS,new LinkedBlockingQueue<>(),r -> new Thread(Thread.currentThread().getThreadGroup(), r, "listen-start-thread-" + threadCount.getAndIncrement())); this.executeTaskThreadPool = new ThreadPoolExecutor( - delayQueuePart.getDelayQueueProperties().getCorePoolSize(), - delayQueuePart.getDelayQueueProperties().getMaximumPoolSize(), - delayQueuePart.getDelayQueueProperties().getKeepAliveTime(), - delayQueuePart.getDelayQueueProperties().getUnit(), - new LinkedBlockingQueue<>(delayQueuePart.getDelayQueueProperties().getWorkQueueSize()), + delayQueuePart.getDelayQueueBasePart().getDelayQueueProperties().getCorePoolSize(), + delayQueuePart.getDelayQueueBasePart().getDelayQueueProperties().getMaximumPoolSize(), + delayQueuePart.getDelayQueueBasePart().getDelayQueueProperties().getKeepAliveTime(), + delayQueuePart.getDelayQueueBasePart().getDelayQueueProperties().getUnit(), + new LinkedBlockingQueue<>(delayQueuePart.getDelayQueueBasePart().getDelayQueueProperties().getWorkQueueSize()), r -> new Thread(Thread.currentThread().getThreadGroup(), r, "delay-queue-consume-thread-" + threadCount.getAndIncrement())); this.consumerTask = delayQueuePart.getConsumerTask(); diff --git a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/event/DelayQueueInitHandler.java b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/event/DelayQueueInitHandler.java index a61f3b1f..50e15074 100644 --- a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/event/DelayQueueInitHandler.java +++ b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/event/DelayQueueInitHandler.java @@ -1,12 +1,11 @@ package com.damai.event; import cn.hutool.core.collection.CollectionUtil; -import com.damai.config.DelayQueueProperties; +import com.damai.context.DelayQueueBasePart; import com.damai.context.DelayQueuePart; import com.damai.core.ConsumerTask; import com.damai.core.DelayConsumerQueue; import lombok.AllArgsConstructor; -import org.redisson.api.RedissonClient; import org.springframework.boot.context.event.ApplicationStartedEvent; import org.springframework.context.ApplicationListener; @@ -20,22 +19,26 @@ import java.util.Map; @AllArgsConstructor public class DelayQueueInitHandler implements ApplicationListener { - private final DelayQueueProperties delayQueueProperties; - - private final RedissonClient redissonClient; + private final DelayQueueBasePart delayQueueBasePart; @Override public void onApplicationEvent(ApplicationStartedEvent event) { + //获取ConsumerTask集合 Map consumerTaskMap = event.getApplicationContext().getBeansOfType(ConsumerTask.class); if (CollectionUtil.isEmpty(consumerTaskMap)) { return; } for (ConsumerTask consumerTask : consumerTaskMap.values()) { - DelayQueuePart delayQueuePart = new DelayQueuePart(redissonClient,delayQueueProperties,consumerTask); - Integer isolationRegionCount = delayQueuePart.getDelayQueueProperties().getIsolationRegionCount(); + //构建消息主题数据 + DelayQueuePart delayQueuePart = new DelayQueuePart(delayQueueBasePart,consumerTask); + //获取分区数 + Integer isolationRegionCount = delayQueuePart.getDelayQueueBasePart().getDelayQueueProperties() + .getIsolationRegionCount(); + //根据分区数来创建消息消费队列 for(int i = 0; i < isolationRegionCount; i++) { DelayConsumerQueue delayConsumerQueue = new DelayConsumerQueue(delayQueuePart, delayQueuePart.getConsumerTask().topic() + "-" + i); + //创建队列后监听消息 delayConsumerQueue.listenStart(); } } -- Gitee From 3d682c3748b8b9fdaf9ff29f61a5d91bad00e750 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Wed, 6 Mar 2024 15:44:18 +0800 Subject: [PATCH 35/74] =?UTF-8?q?=E5=BB=B6=E8=BF=9F=E9=98=9F=E5=88=97?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/damai/event/DelayQueueInitHandler.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/event/DelayQueueInitHandler.java b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/event/DelayQueueInitHandler.java index 50e15074..3cb87e59 100644 --- a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/event/DelayQueueInitHandler.java +++ b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/event/DelayQueueInitHandler.java @@ -23,26 +23,21 @@ public class DelayQueueInitHandler implements ApplicationListener consumerTaskMap = event.getApplicationContext().getBeansOfType(ConsumerTask.class); if (CollectionUtil.isEmpty(consumerTaskMap)) { return; } for (ConsumerTask consumerTask : consumerTaskMap.values()) { - //构建消息主题数据 DelayQueuePart delayQueuePart = new DelayQueuePart(delayQueueBasePart,consumerTask); - //获取分区数 Integer isolationRegionCount = delayQueuePart.getDelayQueueBasePart().getDelayQueueProperties() .getIsolationRegionCount(); - //根据分区数来创建消息消费队列 + for(int i = 0; i < isolationRegionCount; i++) { DelayConsumerQueue delayConsumerQueue = new DelayConsumerQueue(delayQueuePart, delayQueuePart.getConsumerTask().topic() + "-" + i); - //创建队列后监听消息 delayConsumerQueue.listenStart(); } } } - - } -- Gitee From 9ca96c3efc1189e4594579fa4667074303acda20 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Wed, 6 Mar 2024 17:16:49 +0800 Subject: [PATCH 36/74] =?UTF-8?q?=E5=BB=B6=E8=BF=9F=E9=98=9F=E5=88=97?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/damai/core/DelayConsumerQueue.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/core/DelayConsumerQueue.java b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/core/DelayConsumerQueue.java index cf440ca9..99b6acd6 100644 --- a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/core/DelayConsumerQueue.java +++ b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/core/DelayConsumerQueue.java @@ -19,10 +19,13 @@ import java.util.concurrent.atomic.AtomicInteger; @Slf4j public class DelayConsumerQueue extends DelayBaseQueue{ - private final AtomicInteger threadCount = new AtomicInteger(1); + private final AtomicInteger listenStartThreadCount = new AtomicInteger(1); + + private final AtomicInteger executeTaskThreadCount = new AtomicInteger(1); + private final ThreadPoolExecutor listenStartThreadPool; - private final ThreadPoolExecutor executeTaskThreadPool; + private final ThreadPoolExecutor executeTaskThreadPool; private final AtomicBoolean runFlag = new AtomicBoolean(false); @@ -32,7 +35,7 @@ public class DelayConsumerQueue extends DelayBaseQueue{ super(delayQueuePart.getDelayQueueBasePart().getRedissonClient(),relTopic); this.listenStartThreadPool = new ThreadPoolExecutor(1,1,60, TimeUnit.SECONDS,new LinkedBlockingQueue<>(),r -> new Thread(Thread.currentThread().getThreadGroup(), r, - "listen-start-thread-" + threadCount.getAndIncrement())); + "listen-start-thread-" + listenStartThreadCount.getAndIncrement())); this.executeTaskThreadPool = new ThreadPoolExecutor( delayQueuePart.getDelayQueueBasePart().getDelayQueueProperties().getCorePoolSize(), delayQueuePart.getDelayQueueBasePart().getDelayQueueProperties().getMaximumPoolSize(), @@ -40,7 +43,7 @@ public class DelayConsumerQueue extends DelayBaseQueue{ delayQueuePart.getDelayQueueBasePart().getDelayQueueProperties().getUnit(), new LinkedBlockingQueue<>(delayQueuePart.getDelayQueueBasePart().getDelayQueueProperties().getWorkQueueSize()), r -> new Thread(Thread.currentThread().getThreadGroup(), r, - "delay-queue-consume-thread-" + threadCount.getAndIncrement())); + "delay-queue-consume-thread-" + executeTaskThreadCount.getAndIncrement())); this.consumerTask = delayQueuePart.getConsumerTask(); } -- Gitee From 46472d1eef40cc3dd5508f5523466160b97185c6 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Wed, 6 Mar 2024 22:33:42 +0800 Subject: [PATCH 37/74] =?UTF-8?q?=E5=B9=82=E7=AD=89=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../damai/config/RepeatExecuteLimitAutoConfiguration.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/config/RepeatExecuteLimitAutoConfiguration.java b/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/config/RepeatExecuteLimitAutoConfiguration.java index f8d4b2d5..cab64518 100644 --- a/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/config/RepeatExecuteLimitAutoConfiguration.java +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/config/RepeatExecuteLimitAutoConfiguration.java @@ -23,8 +23,10 @@ public class RepeatExecuteLimitAutoConfiguration { } @Bean - public RepeatExecuteLimitAspect repeatExecuteLimitAspect(LocalLockCache localLockCache,LockInfoHandleFactory lockInfoHandleFactory, - ServiceLockFactory serviceLockFactory,RedissonDataHandle redissonDataHandle){ + public RepeatExecuteLimitAspect repeatExecuteLimitAspect(LocalLockCache localLockCache, + LockInfoHandleFactory lockInfoHandleFactory, + ServiceLockFactory serviceLockFactory, + RedissonDataHandle redissonDataHandle){ return new RepeatExecuteLimitAspect(localLockCache, lockInfoHandleFactory,serviceLockFactory,redissonDataHandle); } } -- Gitee From c74cd8c45a9c09e144cf2022835cbf7ad0dc18e7 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Wed, 6 Mar 2024 22:40:51 +0800 Subject: [PATCH 38/74] =?UTF-8?q?=E5=B9=82=E7=AD=89=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/damai/config/RepeatExecuteLimitAutoConfiguration.java | 1 + 1 file changed, 1 insertion(+) diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/config/RepeatExecuteLimitAutoConfiguration.java b/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/config/RepeatExecuteLimitAutoConfiguration.java index cab64518..9d802721 100644 --- a/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/config/RepeatExecuteLimitAutoConfiguration.java +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/config/RepeatExecuteLimitAutoConfiguration.java @@ -30,3 +30,4 @@ public class RepeatExecuteLimitAutoConfiguration { return new RepeatExecuteLimitAspect(localLockCache, lockInfoHandleFactory,serviceLockFactory,redissonDataHandle); } } + \ No newline at end of file -- Gitee From 927addc393a5b7d837fe8a275d847866daeef974 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Thu, 7 Mar 2024 10:16:26 +0800 Subject: [PATCH 39/74] =?UTF-8?q?=E5=B9=82=E7=AD=89=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aspect/RepeatExecuteLimitAspect.java | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/repeatexecutelimit/aspect/RepeatExecuteLimitAspect.java b/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/repeatexecutelimit/aspect/RepeatExecuteLimitAspect.java index b93b76d9..fec29bae 100644 --- a/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/repeatexecutelimit/aspect/RepeatExecuteLimitAspect.java +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/repeatexecutelimit/aspect/RepeatExecuteLimitAspect.java @@ -53,21 +53,18 @@ public class RepeatExecuteLimitAspect { String lockName = lockInfoHandle.getLockName(joinPoint,repeatLimit.name(), repeatLimit.keys()); String repeatFlagName = PREFIX_NAME + lockName; Object flagObject; - if (durationTime > 0) { - flagObject = redissonDataHandle.get(repeatFlagName); - if (SUCCESS_FLAG.equals(flagObject)) { - throw new DaMaiFrameException(message); - } + flagObject = redissonDataHandle.get(repeatFlagName); + if (SUCCESS_FLAG.equals(flagObject)) { + throw new DaMaiFrameException(message); } - ReentrantLock localLock = localLockCache.getLock(lockName,false); + ReentrantLock localLock = localLockCache.getLock(lockName,true); boolean localLockResult = localLock.tryLock(); if (!localLockResult) { throw new DaMaiFrameException(message); } try { - ServiceLocker lock = serviceLockFactory.getLock(LockType.Reentrant); + ServiceLocker lock = serviceLockFactory.getLock(LockType.Fair); boolean result = lock.tryLock(lockName, TimeUnit.SECONDS, 0); - //加锁成功执行 if (result) { try{ flagObject = redissonDataHandle.get(repeatFlagName); @@ -75,10 +72,12 @@ public class RepeatExecuteLimitAspect { throw new DaMaiFrameException(message); } obj = joinPoint.proceed(); - try { - redissonDataHandle.set(repeatFlagName,SUCCESS_FLAG,durationTime,TimeUnit.SECONDS); - }catch (Exception e) { - log.error("getBucket error",e); + if (durationTime > 0) { + try { + redissonDataHandle.set(repeatFlagName,SUCCESS_FLAG,durationTime,TimeUnit.SECONDS); + }catch (Exception e) { + log.error("getBucket error",e); + } } return obj; } finally { -- Gitee From cdd3e442bd632df27d19804367f903ba1050117a Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Thu, 7 Mar 2024 11:42:50 +0800 Subject: [PATCH 40/74] =?UTF-8?q?=E5=B9=82=E7=AD=89=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/damai/handle/RedissonDataHandle.java | 4 ++-- .../com/damai/config/RepeatExecuteLimitAutoConfiguration.java | 2 +- .../repeatexecutelimit/aspect/RepeatExecuteLimitAspect.java | 3 +-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-redisson-common-framework/src/main/java/com/damai/handle/RedissonDataHandle.java b/damai-redisson-framework/damai-redisson-service-framework/damai-redisson-common-framework/src/main/java/com/damai/handle/RedissonDataHandle.java index caa579c2..70acaf2a 100644 --- a/damai-redisson-framework/damai-redisson-service-framework/damai-redisson-common-framework/src/main/java/com/damai/handle/RedissonDataHandle.java +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-redisson-common-framework/src/main/java/com/damai/handle/RedissonDataHandle.java @@ -15,8 +15,8 @@ public class RedissonDataHandle { private final RedissonClient redissonClient; - public Object get(String key){ - return redissonClient.getBucket(key).get(); + public String get(String key){ + return (String)redissonClient.getBucket(key).get(); } public void set(String key,String value){ diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/config/RepeatExecuteLimitAutoConfiguration.java b/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/config/RepeatExecuteLimitAutoConfiguration.java index 9d802721..0e86297c 100644 --- a/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/config/RepeatExecuteLimitAutoConfiguration.java +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/config/RepeatExecuteLimitAutoConfiguration.java @@ -18,7 +18,7 @@ import org.springframework.context.annotation.Bean; public class RepeatExecuteLimitAutoConfiguration { @Bean(LockInfoType.REPEAT_EXECUTE_LIMIT) - public LockInfoHandle serviceLockInfoHandle(){ + public LockInfoHandle repeatExecuteLimitHandle(){ return new RepeatExecuteLimitLockInfoHandle(); } diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/repeatexecutelimit/aspect/RepeatExecuteLimitAspect.java b/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/repeatexecutelimit/aspect/RepeatExecuteLimitAspect.java index fec29bae..aab2309e 100644 --- a/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/repeatexecutelimit/aspect/RepeatExecuteLimitAspect.java +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/repeatexecutelimit/aspect/RepeatExecuteLimitAspect.java @@ -52,8 +52,7 @@ public class RepeatExecuteLimitAspect { LockInfoHandle lockInfoHandle = lockInfoHandleFactory.getLockInfoHandle(LockInfoType.REPEAT_EXECUTE_LIMIT); String lockName = lockInfoHandle.getLockName(joinPoint,repeatLimit.name(), repeatLimit.keys()); String repeatFlagName = PREFIX_NAME + lockName; - Object flagObject; - flagObject = redissonDataHandle.get(repeatFlagName); + String flagObject = redissonDataHandle.get(repeatFlagName); if (SUCCESS_FLAG.equals(flagObject)) { throw new DaMaiFrameException(message); } -- Gitee From 665bfb980e4df93ab7f91364301ccc397430565c Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Thu, 7 Mar 2024 19:57:47 +0800 Subject: [PATCH 41/74] =?UTF-8?q?=E7=81=B0=E5=BA=A6=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/damai/constant/Constant.java | 6 +- .../main/java/com/damai/enums/BaseCode.java | 4 + .../damai/filter/RequestValidationFilter.java | 11 +- .../src/main/resources/bootstrap.yml | 4 +- .../damai/balance/CustomAwarePredicate.java | 109 +++++++++++++----- .../com/damai/balance/CustomEnabledRule.java | 8 +- .../balance/ExtraRibbonAutoConfiguration.java | 12 +- .../damai/balance/ExtraRibbonProperties.java | 2 +- .../feign/ExtraFeignAutoConfiguration.java | 5 +- .../damai/feign/FeignRequestInterceptor.java | 18 ++- .../com/damai/filter/BaseParameterFilter.java | 14 +-- 11 files changed, 136 insertions(+), 57 deletions(-) diff --git a/damai-common/src/main/java/com/damai/constant/Constant.java b/damai-common/src/main/java/com/damai/constant/Constant.java index ee477680..84bcbd6d 100644 --- a/damai-common/src/main/java/com/damai/constant/Constant.java +++ b/damai-common/src/main/java/com/damai/constant/Constant.java @@ -12,11 +12,11 @@ public class Constant { * */ public static final String TRACE_ID = "traceId"; - public static final String MARK_FLAG_TRUE = "true"; + public static final String GRAY_FLAG_TRUE = "true"; - public static final String MARK_FLAG_FALSE = "false"; + public static final String GRAY_FLAG_FALSE = "false"; - public static final String MARK_PARAMETER = "mark"; + public static final String GRAY_PARAMETER = "gray"; public static final String CODE = "code"; diff --git a/damai-common/src/main/java/com/damai/enums/BaseCode.java b/damai-common/src/main/java/com/damai/enums/BaseCode.java index 1ec6c6d1..63476260 100644 --- a/damai-common/src/main/java/com/damai/enums/BaseCode.java +++ b/damai-common/src/main/java/com/damai/enums/BaseCode.java @@ -27,6 +27,10 @@ public enum BaseCode { CAPTCHA_TOKEN_JSON_EMPTY(506,"验证码token为空"), + LOAD_BALANCER_NOT_EXIST(507,"负载均衡器不存在"), + + SERVER_LIST_NOT_EXIST(508,"服务列表不存在"), + RSA_SIGN_ERROR(10000,"res签名验证失败"), RSA_DECRYPT_ERROR(10001,"res解密失败"), diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/filter/RequestValidationFilter.java b/damai-server/damai-gateway-service/src/main/java/com/damai/filter/RequestValidationFilter.java index 03879212..0413f714 100644 --- a/damai-server/damai-gateway-service/src/main/java/com/damai/filter/RequestValidationFilter.java +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/filter/RequestValidationFilter.java @@ -47,9 +47,10 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Function; -import static com.damai.constant.Constant.MARK_PARAMETER; +import static com.damai.constant.Constant.GRAY_PARAMETER; import static com.damai.constant.Constant.TRACE_ID; import static com.damai.constant.GatewayConstant.BUSINESS_BODY; import static com.damai.constant.GatewayConstant.CODE; @@ -94,7 +95,7 @@ public class RequestValidationFilter implements GlobalFilter, Ordered { public Mono filter(final ServerWebExchange exchange, final GatewayFilterChain chain) { ServerHttpRequest request = exchange.getRequest(); String traceId = request.getHeaders().getFirst(TRACE_ID); - String mark = request.getHeaders().getFirst(MARK_PARAMETER); + String gray = request.getHeaders().getFirst(GRAY_PARAMETER); String noVerify = request.getHeaders().getFirst(NO_VERIFY); if (StringUtil.isEmpty(traceId)) { traceId = String.valueOf(uidGenerator.getUid()); @@ -102,15 +103,15 @@ public class RequestValidationFilter implements GlobalFilter, Ordered { MDC.put(TRACE_ID,traceId); Map headMap = new HashMap<>(8); headMap.put(TRACE_ID,traceId); - headMap.put(MARK_PARAMETER,mark); + headMap.put(GRAY_PARAMETER,gray); if (StringUtil.isNotEmpty(noVerify)) { headMap.put(NO_VERIFY,noVerify); } BaseParameterHolder.setParameter(TRACE_ID,traceId); - BaseParameterHolder.setParameter(MARK_PARAMETER,mark); + BaseParameterHolder.setParameter(GRAY_PARAMETER,gray); MediaType contentType = request.getHeaders().getContentType(); //application json请求 - if (contentType != null && contentType.toString().toLowerCase().contains(MediaType.APPLICATION_JSON_VALUE.toLowerCase())) { + if (Objects.nonNull(contentType) && contentType.toString().toLowerCase().contains(MediaType.APPLICATION_JSON_VALUE.toLowerCase())) { return readBody(exchange,chain,headMap); }else { Map map = doExecute("", exchange); diff --git a/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml b/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml index 4eab2ed6..3394b0f3 100644 --- a/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml +++ b/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml @@ -4,8 +4,8 @@ server: # 应用名称 spring: application: - #name: ${prefix.distinction.name:damai}-gateway-service - name: ${prefix.distinction.name:damai}-gateway-single-service + name: ${prefix.distinction.name:damai}-gateway-service + #name: ${prefix.distinction.name:damai}-gateway-single-service cloud: nacos: discovery: diff --git a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomAwarePredicate.java b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomAwarePredicate.java index 8117dfbe..7a7f2c36 100644 --- a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomAwarePredicate.java +++ b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomAwarePredicate.java @@ -2,9 +2,14 @@ package com.damai.balance; import cn.hutool.core.collection.CollectionUtil; import com.alibaba.cloud.nacos.ribbon.NacosServer; +import com.damai.enums.BaseCode; +import com.damai.exception.DaMaiFrameException; import com.damai.threadlocal.BaseParameterHolder; +import com.damai.util.StringUtil; import com.netflix.loadbalancer.AbstractServerPredicate; +import com.netflix.loadbalancer.ILoadBalancer; import com.netflix.loadbalancer.PredicateKey; +import com.netflix.loadbalancer.Server; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.web.context.request.RequestAttributes; @@ -12,13 +17,16 @@ import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Optional; -import static com.damai.constant.Constant.MARK_FLAG_FALSE; -import static com.damai.constant.Constant.MARK_FLAG_TRUE; -import static com.damai.constant.Constant.MARK_PARAMETER; +import static com.damai.constant.Constant.GRAY_FLAG_FALSE; +import static com.damai.constant.Constant.GRAY_FLAG_TRUE; +import static com.damai.constant.Constant.GRAY_PARAMETER; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 @@ -29,58 +37,107 @@ import static com.damai.constant.Constant.MARK_PARAMETER; public class CustomAwarePredicate extends AbstractServerPredicate{ - private final String mark; + private final String gray; private CustomEnabledRule customEnabledRule; private final Map map = new HashMap<>(); - public CustomAwarePredicate(String mark, CustomEnabledRule customEnabledRule){ + public CustomAwarePredicate(String gray, CustomEnabledRule customEnabledRule){ super(customEnabledRule); - this.mark = mark; + this.gray = gray; this.customEnabledRule = customEnabledRule; - this.map.put(MARK_FLAG_FALSE,MARK_FLAG_FALSE); - this.map.put(MARK_FLAG_TRUE,MARK_FLAG_TRUE); + this.map.put(GRAY_FLAG_FALSE, GRAY_FLAG_FALSE); + this.map.put(GRAY_FLAG_TRUE, GRAY_FLAG_TRUE); } + /** + * 灰度调用服务的说明: + * + * 请求服务中请求头中的参数 gray=false:请求生产的服务。 gray=true:请求灰度的服务 + * + * 被调用服务的配置: + * spring.cloud.nacos.discovery.metadata.gray=false:代表生产的服务 + * spring.cloud.nacos.discovery.metadata.gray=true:代表灰度的服务 + * + * 如果请求服务中请求头没有gray参数,或者该参数中的值不是true或false字符串(不区分大小写)则认为gray=false + * + * 如果被调用服务的 spring.cloud.nacos.discovery.metadata.gray 配置项没有配置,或者为空,或者该配置项中的值不是true或false字符串(不区分大小写)则认为mark=false + * 判断逻辑: + * 如果所有被调用服务端的配置项 --spring.cloud.nacos.discovery.metadata.gray=true,并且请求中的Header参数 gray=true,则在该请求的n次调用中apply()函数都返回true,走负载均衡 + * 否则被调用服务端的配置项 --spring.cloud.nacos.discovery.metadata.gray 必须与请求中的Header参数 gray 值相等 apply()函数才会返回true + * + * 总结: + * 生产的请求必须走生产的服务(没有部署生产服务就熔断),灰度的请求在有灰度服务部署的情况下必须走灰度的,没有灰度服务的情况下则调用生产的服务 + */ + @Override public boolean apply(PredicateKey input) { boolean result; try { RequestAttributes ra = RequestContextHolder.getRequestAttributes(); - String markFromRequest = null; + String grayFromRequest = null; if (ra != null) { ServletRequestAttributes sra = (ServletRequestAttributes) ra; HttpServletRequest request = sra.getRequest(); - markFromRequest = request.getHeader(MARK_PARAMETER); - }else { - markFromRequest = BaseParameterHolder.getParameter(MARK_PARAMETER); + grayFromRequest = request.getHeader(GRAY_PARAMETER); } - if (StringUtils.isEmpty(markFromRequest)) { - markFromRequest = mark; + if (StringUtils.isEmpty(grayFromRequest)) { + grayFromRequest = BaseParameterHolder.getParameter(GRAY_PARAMETER); + } + if (StringUtils.isEmpty(grayFromRequest)) { + grayFromRequest = gray; } NacosServer nacosServer = (NacosServer) input.getServer(); Map metadata = nacosServer.getInstance().getMetadata(); - String markFromMetaData; + String grayFromMetaData; if (CollectionUtil.isEmpty(metadata)) { - markFromMetaData = MARK_FLAG_FALSE; + grayFromMetaData = GRAY_FLAG_FALSE; }else { - markFromMetaData = metadata.get(MARK_PARAMETER); + grayFromMetaData = metadata.get(GRAY_PARAMETER); } - - if(Objects.isNull(markFromMetaData) || Objects.isNull(map.get(markFromMetaData.toLowerCase()))) { - markFromMetaData = MARK_FLAG_FALSE; + //判断如果被调用端没有灰度配置则默认配置为生产环境 + if(StringUtil.isEmpty(grayFromMetaData) || Objects.isNull(map.get(grayFromMetaData.toLowerCase()))) { + grayFromMetaData = GRAY_FLAG_FALSE; } - - if(Objects.isNull(markFromRequest) || Objects.isNull(map.get(markFromRequest.toLowerCase()))) { - markFromRequest = MARK_FLAG_FALSE; + //判断如果请求端没有灰度标识则默认配置为生产环境 + if(StringUtil.isEmpty(grayFromRequest) || Objects.isNull(map.get(grayFromRequest.toLowerCase()))) { + grayFromRequest = GRAY_FLAG_FALSE; } - result = markFromMetaData.equalsIgnoreCase(markFromRequest); + result = grayFromMetaData.equalsIgnoreCase(grayFromRequest); + + /*假如最后得到的结果为false,再做一次匹配 + * + * 如果所有服务端的配置均为spring.cloud.nacos.discovery.metadata.gray=true,而调用请求端的请求头中的 gray 为true,则也允许结果返回true做负载均衡 + * + * 反之如果所有服务端的配置为spring.cloud.nacos.discovery.metadata.gray=true,而调用请求端的请求头中的 gray 为false,则结果返回false,不允许做负载均衡 + */ + if (result == false && grayFromRequest.equalsIgnoreCase(GRAY_FLAG_TRUE)) { + List servers = Optional.ofNullable(customEnabledRule) + .map(CustomEnabledRule::getLoadBalancer) + .map(ILoadBalancer::getReachableServers) + .orElseThrow(() -> new DaMaiFrameException(BaseCode.LOAD_BALANCER_NOT_EXIST)); + if (CollectionUtil.isEmpty(servers)) { + throw new DaMaiFrameException(BaseCode.SERVER_LIST_NOT_EXIST); + } + List judgeList = new ArrayList(); + for (Server server : servers) { + NacosServer nacosServerInstance = (NacosServer) server; + String balanceGray = nacosServerInstance.getInstance().getMetadata().get(GRAY_PARAMETER); + //判断如果被调用端没有灰度配置则默认配置为生产环境 + if (StringUtil.isEmpty(balanceGray) || Objects.isNull(map.get(balanceGray.toLowerCase()))) { + balanceGray = GRAY_FLAG_FALSE; + } + judgeList.add(balanceGray); + } + if(!judgeList.contains(GRAY_FLAG_TRUE)) { + result = true; + } + } }catch (Exception e) { result = false; log.error("CustomAwarePredicate#apply error",e); - } - return result; + } return result; } } diff --git a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomEnabledRule.java b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomEnabledRule.java index b8ed7dbc..d23b99fd 100644 --- a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomEnabledRule.java +++ b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomEnabledRule.java @@ -16,21 +16,21 @@ public class CustomEnabledRule extends PredicateBasedRule { /** * 这里为静态的原因是ribbon在定时任务执行时是直接调用DiscoveryEnabledRule的无参构造方法,而不是从spring中获得 * */ - private static String mark; + private static String gray; private CompositePredicate predicate = null; public CustomEnabledRule(ExtraRibbonProperties extraRibbonProperties){ super(); - mark = extraRibbonProperties.getMark(); - CustomAwarePredicate metadataAwarePredicate = new CustomAwarePredicate(mark, this); + gray = extraRibbonProperties.getGray(); + CustomAwarePredicate metadataAwarePredicate = new CustomAwarePredicate(gray, this); Assert.notNull(metadataAwarePredicate, "参数 'abstractServerPredicate' 不能为 null"); predicate = createCompositePredicate(metadataAwarePredicate, new AvailabilityPredicate(this, null)); } public CustomEnabledRule(){ super(); - CustomAwarePredicate metadataAwarePredicate = new CustomAwarePredicate(mark, this); + CustomAwarePredicate metadataAwarePredicate = new CustomAwarePredicate(gray, this); Assert.notNull(metadataAwarePredicate, "参数 'abstractServerPredicate' 不能为 null"); predicate = createCompositePredicate(metadataAwarePredicate, new AvailabilityPredicate(this, null)); } diff --git a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/ExtraRibbonAutoConfiguration.java b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/ExtraRibbonAutoConfiguration.java index dfeaccae..5b50bdf0 100644 --- a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/ExtraRibbonAutoConfiguration.java +++ b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/ExtraRibbonAutoConfiguration.java @@ -1,9 +1,11 @@ package com.damai.balance; +import com.damai.feign.ExtraFeignAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.netflix.ribbon.RibbonClientConfiguration; +import org.springframework.context.annotation.Bean; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 @@ -11,13 +13,13 @@ import org.springframework.cloud.netflix.ribbon.RibbonClientConfiguration; * @author: 阿宽不是程序员 **/ -@AutoConfigureBefore(RibbonClientConfiguration.class) +@AutoConfigureBefore(value = {RibbonClientConfiguration.class, ExtraFeignAutoConfiguration.class}) @ConditionalOnProperty(value = "ribbon.filter.metadata.enabled", matchIfMissing = true) @EnableConfigurationProperties(ExtraRibbonProperties.class) public class ExtraRibbonAutoConfiguration { -// @Bean -// public CustomEnabledRule discoveryEnabledRule(ExtraRibbonProperties extraRibbonProperties){ -// return new CustomEnabledRule(extraRibbonProperties); -// } + @Bean + public CustomEnabledRule discoveryEnabledRule(ExtraRibbonProperties extraRibbonProperties){ + return new CustomEnabledRule(extraRibbonProperties); + } } diff --git a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/ExtraRibbonProperties.java b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/ExtraRibbonProperties.java index 83195656..2860e722 100644 --- a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/ExtraRibbonProperties.java +++ b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/ExtraRibbonProperties.java @@ -12,5 +12,5 @@ import org.springframework.boot.context.properties.ConfigurationProperties; @Data public class ExtraRibbonProperties { - private String mark; + private String gray = "false"; } diff --git a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/feign/ExtraFeignAutoConfiguration.java b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/feign/ExtraFeignAutoConfiguration.java index dfe14202..0a11e33e 100644 --- a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/feign/ExtraFeignAutoConfiguration.java +++ b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/feign/ExtraFeignAutoConfiguration.java @@ -1,5 +1,6 @@ package com.damai.feign; +import com.damai.balance.ExtraRibbonProperties; import org.springframework.context.annotation.Bean; @@ -12,7 +13,7 @@ import org.springframework.context.annotation.Bean; public class ExtraFeignAutoConfiguration { @Bean - public FeignRequestInterceptor feignRequestInterceptor (){ - return new FeignRequestInterceptor(); + public FeignRequestInterceptor feignRequestInterceptor(ExtraRibbonProperties extraRibbonProperties){ + return new FeignRequestInterceptor(extraRibbonProperties); } } diff --git a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/feign/FeignRequestInterceptor.java b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/feign/FeignRequestInterceptor.java index 1a0ba3b0..6920612f 100644 --- a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/feign/FeignRequestInterceptor.java +++ b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/feign/FeignRequestInterceptor.java @@ -1,7 +1,10 @@ package com.damai.feign; +import com.damai.balance.ExtraRibbonProperties; +import com.damai.util.StringUtil; import feign.RequestInterceptor; import feign.RequestTemplate; +import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; @@ -9,7 +12,10 @@ import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; +import java.util.Objects; + import static com.damai.constant.Constant.CODE; +import static com.damai.constant.Constant.GRAY_PARAMETER; import static com.damai.constant.Constant.TRACE_ID; @@ -20,19 +26,27 @@ import static com.damai.constant.Constant.TRACE_ID; **/ @Slf4j +@AllArgsConstructor public class FeignRequestInterceptor implements RequestInterceptor { + private final ExtraRibbonProperties extraRibbonProperties; + @Override - public void apply(final RequestTemplate template) { + public void apply(RequestTemplate template) { try { RequestAttributes ra = RequestContextHolder.getRequestAttributes(); - if (ra != null) { + if (Objects.nonNull(ra)) { ServletRequestAttributes sra = (ServletRequestAttributes) ra; HttpServletRequest request = sra.getRequest(); String traceId = request.getHeader(TRACE_ID); String code = request.getHeader(CODE); + String gray = request.getHeader(GRAY_PARAMETER); + if (StringUtil.isEmpty(gray)) { + gray = extraRibbonProperties.getGray(); + } template.header(TRACE_ID,traceId); template.header(CODE,code); + template.header(GRAY_PARAMETER,gray); } }catch (Exception e) { log.error("FeignRequestInterceptor apply error",e); diff --git a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/filter/BaseParameterFilter.java b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/filter/BaseParameterFilter.java index 9ce1bb1e..d04c74c8 100644 --- a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/filter/BaseParameterFilter.java +++ b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/filter/BaseParameterFilter.java @@ -12,7 +12,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import static com.damai.constant.Constant.MARK_PARAMETER; +import static com.damai.constant.Constant.GRAY_PARAMETER; import static com.damai.constant.Constant.TRACE_ID; /** @@ -26,22 +26,22 @@ public class BaseParameterFilter extends OncePerRequestFilter { protected void doFilterInternal(final HttpServletRequest request, final HttpServletResponse response, final FilterChain filterChain) throws ServletException, IOException { log.info("current thread doFilterInternal : {}",Thread.currentThread().getName()); String traceId = request.getHeader(TRACE_ID); - String mark = request.getHeader(MARK_PARAMETER); + String gray = request.getHeader(GRAY_PARAMETER); try { if (StringUtil.isNotEmpty(traceId)) { BaseParameterHolder.setParameter(TRACE_ID,traceId); MDC.put(TRACE_ID,traceId); } - if (StringUtil.isNotEmpty(mark)) { - BaseParameterHolder.setParameter(MARK_PARAMETER,mark); - MDC.put(MARK_PARAMETER,mark); + if (StringUtil.isNotEmpty(gray)) { + BaseParameterHolder.setParameter(GRAY_PARAMETER,gray); + MDC.put(GRAY_PARAMETER,gray); } filterChain.doFilter(request, response); }finally { BaseParameterHolder.removeParameter(TRACE_ID); MDC.remove(TRACE_ID); - BaseParameterHolder.removeParameter(MARK_PARAMETER); - MDC.remove(MARK_PARAMETER); + BaseParameterHolder.removeParameter(GRAY_PARAMETER); + MDC.remove(GRAY_PARAMETER); } } } -- Gitee From db67530d7a22ac91b6dfc4996028ce16dfcaa1b8 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Fri, 8 Mar 2024 14:56:49 +0800 Subject: [PATCH 42/74] =?UTF-8?q?=E7=81=B0=E5=BA=A6=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../damai/balance/CustomAwarePredicate.java | 60 +++++++------------ 1 file changed, 21 insertions(+), 39 deletions(-) diff --git a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomAwarePredicate.java b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomAwarePredicate.java index 7a7f2c36..b3656f14 100644 --- a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomAwarePredicate.java +++ b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomAwarePredicate.java @@ -11,13 +11,10 @@ import com.netflix.loadbalancer.ILoadBalancer; import com.netflix.loadbalancer.PredicateKey; import com.netflix.loadbalancer.Server; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang.StringUtils; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; -import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -62,7 +59,7 @@ public class CustomAwarePredicate extends AbstractServerPredicate{ * * 如果请求服务中请求头没有gray参数,或者该参数中的值不是true或false字符串(不区分大小写)则认为gray=false * - * 如果被调用服务的 spring.cloud.nacos.discovery.metadata.gray 配置项没有配置,或者为空,或者该配置项中的值不是true或false字符串(不区分大小写)则认为mark=false + * 如果被调用服务的 spring.cloud.nacos.discovery.metadata.gray 配置项没有配置,或者为空,或者该配置项中的值不是true或false字符串(不区分大小写)则认为gray=false * 判断逻辑: * 如果所有被调用服务端的配置项 --spring.cloud.nacos.discovery.metadata.gray=true,并且请求中的Header参数 gray=true,则在该请求的n次调用中apply()函数都返回true,走负载均衡 * 否则被调用服务端的配置项 --spring.cloud.nacos.discovery.metadata.gray 必须与请求中的Header参数 gray 值相等 apply()函数才会返回true @@ -75,35 +72,23 @@ public class CustomAwarePredicate extends AbstractServerPredicate{ public boolean apply(PredicateKey input) { boolean result; try { - RequestAttributes ra = RequestContextHolder.getRequestAttributes(); - String grayFromRequest = null; - if (ra != null) { - ServletRequestAttributes sra = (ServletRequestAttributes) ra; - HttpServletRequest request = sra.getRequest(); - grayFromRequest = request.getHeader(GRAY_PARAMETER); - } - if (StringUtils.isEmpty(grayFromRequest)) { - grayFromRequest = BaseParameterHolder.getParameter(GRAY_PARAMETER); - } - if (StringUtils.isEmpty(grayFromRequest)) { - grayFromRequest = gray; - } + RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); + String grayFromRequest = Optional.ofNullable(requestAttributes) + .map(ra -> (ServletRequestAttributes) ra) + .map(sra -> sra.getRequest().getHeader(GRAY_PARAMETER)) + .filter(StringUtil::isNotEmpty) + .orElseGet(() -> BaseParameterHolder.getParameter(GRAY_PARAMETER)); + grayFromRequest = Optional.ofNullable(grayFromRequest).filter(StringUtil::isNotEmpty).orElse(gray); NacosServer nacosServer = (NacosServer) input.getServer(); - Map metadata = nacosServer.getInstance().getMetadata(); - String grayFromMetaData; - if (CollectionUtil.isEmpty(metadata)) { - grayFromMetaData = GRAY_FLAG_FALSE; - }else { - grayFromMetaData = metadata.get(GRAY_PARAMETER); - } + String grayFromMetaData = Optional.ofNullable(nacosServer.getInstance().getMetadata()) + .filter(CollectionUtil::isNotEmpty) + .map(metadata -> metadata.get(GRAY_PARAMETER)) + .filter(StringUtil::isNotEmpty) + .orElse(GRAY_FLAG_FALSE); //判断如果被调用端没有灰度配置则默认配置为生产环境 - if(StringUtil.isEmpty(grayFromMetaData) || Objects.isNull(map.get(grayFromMetaData.toLowerCase()))) { - grayFromMetaData = GRAY_FLAG_FALSE; - } + grayFromMetaData = Optional.ofNullable(map.get(grayFromMetaData.toLowerCase())).orElse(GRAY_FLAG_FALSE); //判断如果请求端没有灰度标识则默认配置为生产环境 - if(StringUtil.isEmpty(grayFromRequest) || Objects.isNull(map.get(grayFromRequest.toLowerCase()))) { - grayFromRequest = GRAY_FLAG_FALSE; - } + grayFromRequest = Optional.ofNullable(map.get(grayFromRequest.toLowerCase())).orElse(GRAY_FLAG_FALSE); result = grayFromMetaData.equalsIgnoreCase(grayFromRequest); /*假如最后得到的结果为false,再做一次匹配 @@ -112,16 +97,13 @@ public class CustomAwarePredicate extends AbstractServerPredicate{ * * 反之如果所有服务端的配置为spring.cloud.nacos.discovery.metadata.gray=true,而调用请求端的请求头中的 gray 为false,则结果返回false,不允许做负载均衡 */ - - if (result == false && grayFromRequest.equalsIgnoreCase(GRAY_FLAG_TRUE)) { + if (!result && grayFromRequest.equalsIgnoreCase(GRAY_FLAG_TRUE)) { List servers = Optional.ofNullable(customEnabledRule) .map(CustomEnabledRule::getLoadBalancer) .map(ILoadBalancer::getReachableServers) - .orElseThrow(() -> new DaMaiFrameException(BaseCode.LOAD_BALANCER_NOT_EXIST)); - if (CollectionUtil.isEmpty(servers)) { - throw new DaMaiFrameException(BaseCode.SERVER_LIST_NOT_EXIST); - } - List judgeList = new ArrayList(); + .filter(CollectionUtil::isNotEmpty) + .orElseThrow(() -> new DaMaiFrameException(BaseCode.SERVER_LIST_NOT_EXIST)); + Map map = new HashMap<>(servers.size()); for (Server server : servers) { NacosServer nacosServerInstance = (NacosServer) server; String balanceGray = nacosServerInstance.getInstance().getMetadata().get(GRAY_PARAMETER); @@ -129,9 +111,9 @@ public class CustomAwarePredicate extends AbstractServerPredicate{ if (StringUtil.isEmpty(balanceGray) || Objects.isNull(map.get(balanceGray.toLowerCase()))) { balanceGray = GRAY_FLAG_FALSE; } - judgeList.add(balanceGray); + map.put(balanceGray,balanceGray); } - if(!judgeList.contains(GRAY_FLAG_TRUE)) { + if(Objects.isNull(map.get(GRAY_FLAG_TRUE))) { result = true; } } -- Gitee From 51d86d2a3038448d381e2da0b255b4ed05721269 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Fri, 8 Mar 2024 18:08:32 +0800 Subject: [PATCH 43/74] =?UTF-8?q?=E7=81=B0=E5=BA=A6=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../damai/balance/CustomAwarePredicate.java | 29 ------------------- .../com/damai/balance/CustomEnabledRule.java | 9 ++++-- 2 files changed, 7 insertions(+), 31 deletions(-) diff --git a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomAwarePredicate.java b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomAwarePredicate.java index b3656f14..83ff7b35 100644 --- a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomAwarePredicate.java +++ b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomAwarePredicate.java @@ -48,26 +48,6 @@ public class CustomAwarePredicate extends AbstractServerPredicate{ this.map.put(GRAY_FLAG_TRUE, GRAY_FLAG_TRUE); } - /** - * 灰度调用服务的说明: - * - * 请求服务中请求头中的参数 gray=false:请求生产的服务。 gray=true:请求灰度的服务 - * - * 被调用服务的配置: - * spring.cloud.nacos.discovery.metadata.gray=false:代表生产的服务 - * spring.cloud.nacos.discovery.metadata.gray=true:代表灰度的服务 - * - * 如果请求服务中请求头没有gray参数,或者该参数中的值不是true或false字符串(不区分大小写)则认为gray=false - * - * 如果被调用服务的 spring.cloud.nacos.discovery.metadata.gray 配置项没有配置,或者为空,或者该配置项中的值不是true或false字符串(不区分大小写)则认为gray=false - * 判断逻辑: - * 如果所有被调用服务端的配置项 --spring.cloud.nacos.discovery.metadata.gray=true,并且请求中的Header参数 gray=true,则在该请求的n次调用中apply()函数都返回true,走负载均衡 - * 否则被调用服务端的配置项 --spring.cloud.nacos.discovery.metadata.gray 必须与请求中的Header参数 gray 值相等 apply()函数才会返回true - * - * 总结: - * 生产的请求必须走生产的服务(没有部署生产服务就熔断),灰度的请求在有灰度服务部署的情况下必须走灰度的,没有灰度服务的情况下则调用生产的服务 - */ - @Override public boolean apply(PredicateKey input) { boolean result; @@ -85,18 +65,10 @@ public class CustomAwarePredicate extends AbstractServerPredicate{ .map(metadata -> metadata.get(GRAY_PARAMETER)) .filter(StringUtil::isNotEmpty) .orElse(GRAY_FLAG_FALSE); - //判断如果被调用端没有灰度配置则默认配置为生产环境 grayFromMetaData = Optional.ofNullable(map.get(grayFromMetaData.toLowerCase())).orElse(GRAY_FLAG_FALSE); - //判断如果请求端没有灰度标识则默认配置为生产环境 grayFromRequest = Optional.ofNullable(map.get(grayFromRequest.toLowerCase())).orElse(GRAY_FLAG_FALSE); result = grayFromMetaData.equalsIgnoreCase(grayFromRequest); - /*假如最后得到的结果为false,再做一次匹配 - * - * 如果所有服务端的配置均为spring.cloud.nacos.discovery.metadata.gray=true,而调用请求端的请求头中的 gray 为true,则也允许结果返回true做负载均衡 - * - * 反之如果所有服务端的配置为spring.cloud.nacos.discovery.metadata.gray=true,而调用请求端的请求头中的 gray 为false,则结果返回false,不允许做负载均衡 - */ if (!result && grayFromRequest.equalsIgnoreCase(GRAY_FLAG_TRUE)) { List servers = Optional.ofNullable(customEnabledRule) .map(CustomEnabledRule::getLoadBalancer) @@ -107,7 +79,6 @@ public class CustomAwarePredicate extends AbstractServerPredicate{ for (Server server : servers) { NacosServer nacosServerInstance = (NacosServer) server; String balanceGray = nacosServerInstance.getInstance().getMetadata().get(GRAY_PARAMETER); - //判断如果被调用端没有灰度配置则默认配置为生产环境 if (StringUtil.isEmpty(balanceGray) || Objects.isNull(map.get(balanceGray.toLowerCase()))) { balanceGray = GRAY_FLAG_FALSE; } diff --git a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomEnabledRule.java b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomEnabledRule.java index d23b99fd..38fd702b 100644 --- a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomEnabledRule.java +++ b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/balance/CustomEnabledRule.java @@ -18,7 +18,7 @@ public class CustomEnabledRule extends PredicateBasedRule { * */ private static String gray; - private CompositePredicate predicate = null; + private final CompositePredicate predicate; public CustomEnabledRule(ExtraRibbonProperties extraRibbonProperties){ super(); @@ -28,13 +28,18 @@ public class CustomEnabledRule extends PredicateBasedRule { predicate = createCompositePredicate(metadataAwarePredicate, new AvailabilityPredicate(this, null)); } + /** + * 保留此构造方法的原因是Ribbon在定时任务中,会创建此适配器,而创建的方法是使用反射来构建 + * */ public CustomEnabledRule(){ super(); CustomAwarePredicate metadataAwarePredicate = new CustomAwarePredicate(gray, this); Assert.notNull(metadataAwarePredicate, "参数 'abstractServerPredicate' 不能为 null"); predicate = createCompositePredicate(metadataAwarePredicate, new AvailabilityPredicate(this, null)); } - + /** + * 当请求执行到Ribbon时,会执行到 过滤器适配器的获得过滤器方法 {@link PredicateBasedRule#choose(Object)} + * */ @Override public AbstractServerPredicate getPredicate() { return predicate; -- Gitee From 9796e90ee5881215f0426db59f8cfb78e0cd16f4 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Fri, 8 Mar 2024 23:29:36 +0800 Subject: [PATCH 44/74] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alibaba/nacos/api/naming/pojo/ServiceInfo.java | 10 ++++++++++ .../client/naming/cache/ServiceInfoHolder.java | 14 ++++++++++++-- .../com/damai/controller/RefreshController.java | 9 +++++---- .../com/damai/refresh/conf/NacosLifecycle.java | 8 ++++---- .../java/com/damai/refresh/conf/RefreshConfig.java | 4 ++-- .../damai/refresh/custom/NacosAndRibbonCustom.java | 12 ++++++++---- .../java/com/damai/refresh/custom/NacosCustom.java | 8 ++++---- .../com/damai/refresh/custom/RibbonCustom.java | 6 +++--- 8 files changed, 48 insertions(+), 23 deletions(-) diff --git a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/alibaba/nacos/api/naming/pojo/ServiceInfo.java b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/alibaba/nacos/api/naming/pojo/ServiceInfo.java index f2106c83..a486e359 100644 --- a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/alibaba/nacos/api/naming/pojo/ServiceInfo.java +++ b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/alibaba/nacos/api/naming/pojo/ServiceInfo.java @@ -66,6 +66,8 @@ public class ServiceInfo { private String notifyService; + private ServiceInfo changeServiceInfo; + public ServiceInfo() { } @@ -307,4 +309,12 @@ public class ServiceInfo { public void setNotifyService(String notifyService) { this.notifyService = notifyService; } + + public ServiceInfo getChangeServiceInfo() { + return changeServiceInfo; + } + + public void setChangeServiceInfo(final ServiceInfo changeServiceInfo) { + this.changeServiceInfo = changeServiceInfo; + } } diff --git a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/alibaba/nacos/client/naming/cache/ServiceInfoHolder.java b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/alibaba/nacos/client/naming/cache/ServiceInfoHolder.java index 11243dc6..510a0bde 100644 --- a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/alibaba/nacos/client/naming/cache/ServiceInfoHolder.java +++ b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/alibaba/nacos/client/naming/cache/ServiceInfoHolder.java @@ -158,18 +158,28 @@ public class ServiceInfoHolder implements Closeable { //empty or error push, just ignore return oldService; } + // 缓存服务信息 serviceInfoMap.put(serviceInfo.getKey(), serviceInfo); + // 判断注册的实例信息是否已变更 boolean changed = isChangedServiceInfo(oldService, serviceInfo); if (StringUtils.isBlank(serviceInfo.getJsonFromServer())) { serviceInfo.setJsonFromServer(JacksonUtils.toJson(serviceInfo)); } + // 监控服务监控缓存Map的大小 MetricsMonitor.getServiceInfoMapSizeMonitor().set(serviceInfoMap.size()); + // 服务实例以更变 String yes = "yes"; if (changed || yes.equals(notifyService)) { - NAMING_LOGGER.info("current ips:(" + serviceInfo.ipCount() + ") service: " + serviceInfo.getKey() + " -> " - + JacksonUtils.toJson(serviceInfo.getHosts())); + ServiceInfo changeServiceInfo = serviceInfo.getChangeServiceInfo(); + if (changeServiceInfo != null) { + //更新nacos本地缓存 + NAMING_LOGGER.info("changeServiceInfo : "+JacksonUtils.toJson(changeServiceInfo)); + serviceInfoMap.put(changeServiceInfo.getKey(), changeServiceInfo); + } + // 添加实例变更事件,会被订阅者执行 NotifyCenter.publishEvent(new InstancesChangeEvent(serviceInfo.getName(), serviceInfo.getGroupName(), serviceInfo.getClusters(), serviceInfo.getHosts())); + // 记录Service本地文件 DiskCache.write(serviceInfo, cacheDir); } return serviceInfo; diff --git a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/controller/RefreshController.java b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/controller/RefreshController.java index 928ab607..1dc7b991 100644 --- a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/controller/RefreshController.java +++ b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/controller/RefreshController.java @@ -22,6 +22,7 @@ public class RefreshController { @Autowired(required = false) private NacosAndRibbonCustom nacosAndRibbonCustom; + @Autowired(required = false) private NacosCustom nacosCustom; @@ -32,9 +33,9 @@ public class RefreshController { @RequestMapping(value = "/refreshNacosAndRibbonCache", method = RequestMethod.POST) public Boolean refreshNacosAndRibbonCache() { if (nacosAndRibbonCustom != null) { - nacosAndRibbonCustom.refreshNacosAndRibbonCache(); + return nacosAndRibbonCustom.refreshNacosAndRibbonCache(); } - return true; + return false; } @@ -42,11 +43,11 @@ public class RefreshController { * 获取ribbon和nacos缓存服务列表 * */ @RequestMapping(value = "/getNacosAndRibbonCacheList", method = RequestMethod.POST) - public Map getNacosAndRibbonCacheList() { + public Map getNacosAndRibbonCacheList() { if (nacosAndRibbonCustom != null) { return nacosAndRibbonCustom.getNacosAndRibbonCacheList(); } - return new HashMap(2); + return new HashMap<>(2); } /** diff --git a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/conf/NacosLifecycle.java b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/conf/NacosLifecycle.java index e30b4429..7e82f438 100644 --- a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/conf/NacosLifecycle.java +++ b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/conf/NacosLifecycle.java @@ -4,7 +4,7 @@ package com.damai.refresh.conf; import com.alibaba.cloud.nacos.NacosDiscoveryProperties; import com.alibaba.nacos.api.naming.NamingFactory; import com.alibaba.nacos.api.naming.NamingService; -import com.damai.refresh.custom.NacosAndRibbonCustom; +import com.damai.refresh.custom.RibbonCustom; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.context.SmartLifecycle; @@ -22,7 +22,7 @@ public class NacosLifecycle implements SmartLifecycle { private static final AtomicBoolean RUNNING = new AtomicBoolean(false); - private final NacosAndRibbonCustom nacosAndRibbonCustom; + private final RibbonCustom ribbonCustom; private final NacosDiscoveryProperties properties; @@ -39,7 +39,7 @@ public class NacosLifecycle implements SmartLifecycle { try { NamingService naming = NamingFactory.createNamingService(properties.getNacosProperties()); naming.subscribe(properties.getService(),event -> { - new Thread(nacosAndRibbonCustom::refreshNacosAndRibbonCache,"service-refresher-thread").start(); + new Thread(ribbonCustom::updateRibbonCache,"service-refresher-thread").start(); }); }catch (Exception e) { log.error("ServiceRefresher subscribe failed, properties:{}", properties, e); @@ -53,7 +53,7 @@ public class NacosLifecycle implements SmartLifecycle { try { NamingService naming = NamingFactory.createNamingService(properties.getNacosProperties()); naming.unsubscribe(properties.getService(),event -> { - new Thread(nacosAndRibbonCustom::refreshNacosAndRibbonCache,"service-refresher-thread").start(); + new Thread(ribbonCustom::updateRibbonCache,"service-refresher-thread").start(); }); }catch (Exception e) { log.error("ServiceRefresher unsubscribe failed, properties:{}", properties, e); diff --git a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/conf/RefreshConfig.java b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/conf/RefreshConfig.java index 4a91b78e..6d0d283d 100644 --- a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/conf/RefreshConfig.java +++ b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/conf/RefreshConfig.java @@ -37,7 +37,7 @@ public class RefreshConfig { } @Bean - public NacosLifecycle nacosLifecycle(NacosAndRibbonCustom nacosAndRibbonCustom, NacosDiscoveryProperties properties){ - return new NacosLifecycle(nacosAndRibbonCustom,properties); + public NacosLifecycle nacosLifecycle(RibbonCustom ribbonCustom, NacosDiscoveryProperties properties){ + return new NacosLifecycle(ribbonCustom,properties); } } diff --git a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/NacosAndRibbonCustom.java b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/NacosAndRibbonCustom.java index 6bd686a4..625857db 100644 --- a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/NacosAndRibbonCustom.java +++ b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/NacosAndRibbonCustom.java @@ -1,6 +1,10 @@ package com.damai.refresh.custom; +import com.alibaba.nacos.api.naming.pojo.ServiceInfo; +import com.netflix.loadbalancer.Server; + import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -25,10 +29,10 @@ public class NacosAndRibbonCustom { return true; } - public Map getNacosAndRibbonCacheList() { - Map nacosCache = nacosCustom.getNacosCache(); - Map ribbonCache = ribbonCustom.getRibbonCache(); - Map> map = new HashMap(8); + public Map getNacosAndRibbonCacheList() { + Map nacosCache = nacosCustom.getNacosCache(); + Map>> ribbonCache = ribbonCustom.getRibbonCache(); + Map> map = new HashMap<>(8); map.put("nacosCache",nacosCache); map.put("ribbonCache",ribbonCache); return map; diff --git a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/NacosCustom.java b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/NacosCustom.java index d471ad8d..2920d60e 100644 --- a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/NacosCustom.java +++ b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/NacosCustom.java @@ -42,7 +42,7 @@ public class NacosCustom { private Map getNacosCacheMap(){ - Map map = new HashMap(8); + Map map = new HashMap<>(8); try { NamingService namingService = nacosServiceManager.getNamingService(discoveryProperties.getNacosProperties()); if (namingService instanceof NacosNamingService) { @@ -79,7 +79,7 @@ public class NacosCustom { } public void clearNacosCache(){ - Map map = getNacosCacheMap(); + Map map = getNacosCacheMap(); Map> futureMap = (Map>)map.get(FUTURE_MAP_FIELD); Map serviceInfoMap = (Map)map.get("serviceInfoMap"); synchronized (futureMap) { @@ -87,8 +87,8 @@ public class NacosCustom { } } - public Map getNacosCache(){ - Map map = getNacosCacheMap(); + public Map getNacosCache(){ + Map map = getNacosCacheMap(); return (Map)map.get("serviceInfoMap"); } diff --git a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/RibbonCustom.java b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/RibbonCustom.java index 4b3d184d..ed342dad 100644 --- a/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/RibbonCustom.java +++ b/damai-spring-cloud-framework/damai-service-lossless/src/main/java/com/damai/refresh/custom/RibbonCustom.java @@ -75,8 +75,8 @@ public class RibbonCustom { } - public Map getRibbonCache(){ - Map taotalMap = new HashMap(256); + public Map>> getRibbonCache(){ + Map>> taotalMap = new HashMap(256); try { Map zoneAwareLoadBalancerMap = zoneAwareLoadBalancerMap(); for (Map.Entry entry : zoneAwareLoadBalancerMap.entrySet()) { @@ -89,7 +89,7 @@ public class RibbonCustom { Field upServerListField = aClass1.getSuperclass().getSuperclass().getDeclaredField(UP_SERVER_LIST_FIELD); upServerListField.setAccessible(true); List upServerList = (List)upServerListField.get(balancer); - Map mapServerList = new HashMap(8); + Map> mapServerList = new HashMap(8); mapServerList.put(ALL_SERVER_LIST_FIELD,allServerList); mapServerList.put(UP_SERVER_LIST_FIELD,upServerList); taotalMap.put(serverName,mapServerList); -- Gitee From 8747902ed95db2f63dff0dfa608a3ab6eaee154a Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Sat, 9 Mar 2024 21:06:08 +0800 Subject: [PATCH 45/74] =?UTF-8?q?=E8=B4=AD=E7=A5=A8=E4=BA=BA=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/damai/constant/Constant.java | 2 + .../java/com/damai/core/RedisKeyManage.java | 2 + .../src/main/java/com/damai/vo/ProgramVo.java | 6 ++ .../main/java/com/damai/entity/Program.java | 5 ++ .../com/damai/service/ProgramService.java | 63 ++++++++++++++++++- .../damai/service/ProgramShowTimeService.java | 4 ++ .../com/damai/service/TicketUserService.java | 23 ++++++- .../com/damai/filter/BaseParameterFilter.java | 18 +++++- 8 files changed, 119 insertions(+), 4 deletions(-) diff --git a/damai-common/src/main/java/com/damai/constant/Constant.java b/damai-common/src/main/java/com/damai/constant/Constant.java index 84bcbd6d..d1fcc026 100644 --- a/damai-common/src/main/java/com/damai/constant/Constant.java +++ b/damai-common/src/main/java/com/damai/constant/Constant.java @@ -20,6 +20,8 @@ public class Constant { public static final String CODE = "code"; + public static final String USER_ID = "userId"; + public static final String JOB_INFO_ID = "jobInfoId"; public static final String JOB_RUN_RECORD_ID = "jobRunRecordId"; diff --git a/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java b/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java index 6127a7d7..37f54869 100644 --- a/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java +++ b/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java @@ -73,6 +73,8 @@ public enum RedisKeyManage { COUNTER_TIMESTAMP("d_mai_counter_timestamp","计数器的时间戳的key","计数器的时间戳","k"), VERIFY_CAPTCHA_ID("d_mai_verify_captcha_id_%S","校验验证码id的key","校验验证码id","k"), + + TICKET_USER_LIST("d_mai_ticket_user_list_%S","购票人列表的key","购票人列表","k"), ; /** diff --git a/damai-server-client/damai-program-client/src/main/java/com/damai/vo/ProgramVo.java b/damai-server-client/damai-program-client/src/main/java/com/damai/vo/ProgramVo.java index 41a7be57..6db8cad4 100644 --- a/damai-server-client/damai-program-client/src/main/java/com/damai/vo/ProgramVo.java +++ b/damai-server-client/damai-program-client/src/main/java/com/damai/vo/ProgramVo.java @@ -127,6 +127,12 @@ public class ProgramVo implements Serializable { @ApiModelProperty(name ="electronicInvoice", dataType ="Integer", value ="电子发票 1:是 0:不是") private Integer electronicInvoice; + /** + * 高热度节目 0:否 1:是 + * */ + @ApiModelProperty(name ="highHeat", dataType ="Integer", value ="高热度节目 0:否 1:是") + private Integer highHeat; + @ApiModelProperty(name ="programStatus", dataType ="Integer", value ="节目状态 1:上架 0:下架") private Integer programStatus; diff --git a/damai-server/damai-program-service/src/main/java/com/damai/entity/Program.java b/damai-server/damai-program-service/src/main/java/com/damai/entity/Program.java index 96da1562..9089d315 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/entity/Program.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/entity/Program.java @@ -167,6 +167,11 @@ public class Program extends BaseTableData implements Serializable { */ private Integer electronicInvoice; + /** + * 高热度节目 0:否 1:是 + * */ + private Integer highHeat; + /** * 节目状态 1:上架 0:下架 */ diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java index ff2dc29b..a1f14ccf 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java @@ -9,7 +9,9 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.damai.BusinessThreadPool; import com.damai.client.BaseDataClient; +import com.damai.client.UserClient; import com.damai.common.ApiResponse; import com.damai.core.RedisKeyManage; import com.damai.core.SpringUtil; @@ -22,6 +24,7 @@ import com.damai.dto.ProgramListDto; import com.damai.dto.ProgramOperateDataDto; import com.damai.dto.ProgramPageListDto; import com.damai.dto.ProgramSearchDto; +import com.damai.dto.UserIdDto; import com.damai.entity.Program; import com.damai.entity.ProgramCategory; import com.damai.entity.ProgramShowTime; @@ -46,13 +49,16 @@ import com.damai.service.init.ProgramDocumentParamName; import com.damai.service.pagestrategy.SelectPageWrapper; import com.damai.servicelock.LockType; import com.damai.servicelock.annotion.ServiceLock; +import com.damai.threadlocal.BaseParameterHolder; import com.damai.util.BusinessEsHandle; import com.damai.util.DateUtils; +import com.damai.util.StringUtil; import com.damai.vo.AreaVo; import com.damai.vo.ProgramListVo; import com.damai.vo.ProgramVo; import com.damai.vo.SeatVo; import com.damai.vo.TicketCategoryVo; +import com.damai.vo.TicketUserVo; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -71,6 +77,8 @@ import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; +import static com.damai.constant.Constant.CODE; +import static com.damai.constant.Constant.USER_ID; import static com.damai.core.DistributedLockConstants.PROGRAM_LOCK; import static com.damai.service.cache.ExpireTime.EXPIRE_TIME; @@ -104,6 +112,9 @@ public class ProgramService extends ServiceImpl { @Autowired private BaseDataClient baseDataClient; + @Autowired + private UserClient userClient; + @Autowired private RedisCache redisCache; @@ -272,9 +283,13 @@ public class ProgramService extends ServiceImpl { }); } + public ProgramVo getDetail(ProgramGetDto programGetDto) { ProgramVo redisProgramVo = programService.getById(programGetDto.getId()); + //预先加载用户购票人 + preloadTicketUserList(redisProgramVo.getHighHeat()); + //查询节目类型 ProgramCategory programCategory = redisCache.getForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_CATEGORY_HASH) ,String.valueOf(redisProgramVo.getProgramCategoryId()),ProgramCategory.class); @@ -291,7 +306,10 @@ public class ProgramService extends ServiceImpl { //查询座位 List redisSeatVoList = seatService.selectSeatByProgramId(redisProgramVo.getId()); - redisProgramVo.setSeatVoList(redisSeatVoList); + //如果节目允许选择座位才把座位给前端展示 + if (Objects.equals(redisProgramVo.getPermitChooseSeat(), BusinessStatus.YES.getCode())) { + redisProgramVo.setSeatVoList(redisSeatVoList); + } //查询节目票档 List ticketCategoryVoList = ticketCategoryService.selectTicketCategoryListByProgramId(redisProgramVo.getId()); @@ -427,4 +445,47 @@ public class ProgramService extends ServiceImpl { return programVo; } + + /*** + * 预先加载用户下的购票人 + */ + private void preloadTicketUserList(Integer highHeat){ + //如果节目是热度不高的,那么不用预先加载了 + if (Objects.equals(highHeat, BusinessStatus.NO.getCode())) { + return; + } + + String userId = BaseParameterHolder.getParameter(USER_ID); + String code = BaseParameterHolder.getParameter(CODE); + //如果用户id或者code有一个为空,那么判断不了用户登录状态,也不用预先加载了 + if (StringUtil.isEmpty(userId) && StringUtil.isEmpty(code)) { + return; + } + //异步加载购票人信息,别耽误查询节目详情的主线程 + BusinessThreadPool.execute(() -> { + try { + Boolean userLogin = redisCache.hasKey(RedisKeyBuild.createRedisKey(RedisKeyManage.USER_LOGIN, code, userId)); + //如果用户没有登录,也不用预先加载了 + if (!userLogin) { + return; + } + //如果已经预热加载了,就不用再执行了 + if (redisCache.hasKey(RedisKeyBuild.createRedisKey(RedisKeyManage.TICKET_USER_LIST,userId))) { + return; + } + UserIdDto userIdDto = new UserIdDto(); + userIdDto.setId(Long.parseLong(userId)); + ApiResponse> apiResponse = userClient.select(userIdDto); + if (Objects.equals(apiResponse.getCode(), BaseCode.SUCCESS.getCode())) { + Optional.ofNullable(apiResponse.getData()).filter(CollectionUtil::isNotEmpty) + .ifPresent(ticketUserVoList -> redisCache.set(RedisKeyBuild.createRedisKey( + RedisKeyManage.TICKET_USER_LIST,userId),ticketUserVoList)); + }else { + log.warn("userClient.select 调用失败 apiResponse : {}",JSON.toJSONString(apiResponse)); + } + }catch (Exception e) { + log.error("预热加载投票人列表失败",e); + } + }); + } } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramShowTimeService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramShowTimeService.java index 35ff67e7..21ae337e 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramShowTimeService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramShowTimeService.java @@ -78,6 +78,10 @@ public class ProgramShowTimeService extends ServiceImpl @Autowired private UidGenerator uidGenerator; + @Autowired + private RedisCache redisCache; + public List select(TicketUserListDto ticketUserListDto) { + //先从缓存中查询 + List valueIsList = redisCache.getValueIsList(RedisKeyBuild.createRedisKey( + RedisKeyManage.TICKET_USER_LIST, ticketUserListDto.getUserId()), TicketUserVo.class); + if (CollectionUtil.isNotEmpty(valueIsList)) { + return valueIsList; + } LambdaQueryWrapper ticketUserLambdaQueryWrapper = Wrappers.lambdaQuery(TicketUser.class) .eq(TicketUser::getUserId, ticketUserListDto.getUserId()); List ticketUsers = ticketUserMapper.selectList(ticketUserLambdaQueryWrapper); @@ -48,7 +61,7 @@ public class TicketUserService extends ServiceImpl } @Transactional(rollbackFor = Exception.class) - public void add(final TicketUserDto ticketUserDto) { + public void add(TicketUserDto ticketUserDto) { User user = userMapper.selectById(ticketUserDto.getUserId()); if (Objects.isNull(user)) { throw new DaMaiFrameException(BaseCode.USER_EMPTY); @@ -65,13 +78,19 @@ public class TicketUserService extends ServiceImpl BeanUtil.copyProperties(ticketUserDto,addTicketUser); addTicketUser.setId(uidGenerator.getUid()); ticketUserMapper.insert(addTicketUser); + delTicketUserVoListCache(String.valueOf(ticketUserDto.getUserId())); } @Transactional(rollbackFor = Exception.class) - public void delete(final TicketUserIdDto ticketUserIdDto) { + public void delete(TicketUserIdDto ticketUserIdDto) { TicketUser ticketUser = ticketUserMapper.selectById(ticketUserIdDto.getId()); if (Objects.isNull(ticketUser)) { throw new DaMaiFrameException(BaseCode.TICKET_USER_EMPTY); } ticketUserMapper.deleteById(ticketUserIdDto.getId()); + delTicketUserVoListCache(String.valueOf(ticketUser.getUserId())); + } + + public void delTicketUserVoListCache(String userId){ + redisCache.del(RedisKeyBuild.createRedisKey(RedisKeyManage.TICKET_USER_LIST, userId)); } } diff --git a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/filter/BaseParameterFilter.java b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/filter/BaseParameterFilter.java index d04c74c8..131faa35 100644 --- a/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/filter/BaseParameterFilter.java +++ b/damai-spring-cloud-framework/damai-service-component/src/main/java/com/damai/filter/BaseParameterFilter.java @@ -12,8 +12,10 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import static com.damai.constant.Constant.CODE; import static com.damai.constant.Constant.GRAY_PARAMETER; import static com.damai.constant.Constant.TRACE_ID; +import static com.damai.constant.Constant.USER_ID; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 @@ -27,21 +29,35 @@ public class BaseParameterFilter extends OncePerRequestFilter { log.info("current thread doFilterInternal : {}",Thread.currentThread().getName()); String traceId = request.getHeader(TRACE_ID); String gray = request.getHeader(GRAY_PARAMETER); + String userId = request.getHeader(USER_ID); + String code = request.getHeader(CODE); try { if (StringUtil.isNotEmpty(traceId)) { - BaseParameterHolder.setParameter(TRACE_ID,traceId); + BaseParameterHolder.setParameter(TRACE_ID,traceId); MDC.put(TRACE_ID,traceId); } if (StringUtil.isNotEmpty(gray)) { BaseParameterHolder.setParameter(GRAY_PARAMETER,gray); MDC.put(GRAY_PARAMETER,gray); } + if (StringUtil.isNotEmpty(userId)) { + BaseParameterHolder.setParameter(USER_ID,userId); + MDC.put(USER_ID,userId); + } + if (StringUtil.isNotEmpty(code)) { + BaseParameterHolder.setParameter(CODE,code); + MDC.put(CODE,code); + } filterChain.doFilter(request, response); }finally { BaseParameterHolder.removeParameter(TRACE_ID); MDC.remove(TRACE_ID); BaseParameterHolder.removeParameter(GRAY_PARAMETER); MDC.remove(GRAY_PARAMETER); + BaseParameterHolder.removeParameter(USER_ID); + MDC.remove(USER_ID); + BaseParameterHolder.removeParameter(CODE); + MDC.remove(CODE); } } } -- Gitee From b459689a7fc18aa184a06a2838d33aabf364bb87 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Sat, 9 Mar 2024 23:31:44 +0800 Subject: [PATCH 46/74] =?UTF-8?q?=E8=B4=AD=E7=A5=A8=E4=BA=BA=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../composite/impl/UserExistCheckHandler.java | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/UserExistCheckHandler.java b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/UserExistCheckHandler.java index f5df3246..54143576 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/UserExistCheckHandler.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/UserExistCheckHandler.java @@ -1,16 +1,18 @@ package com.damai.service.composite.impl; +import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSON; import com.damai.client.UserClient; import com.damai.common.ApiResponse; +import com.damai.core.RedisKeyManage; import com.damai.dto.ProgramOrderCreateDto; -import com.damai.dto.UserGetAndTicketUserListDto; +import com.damai.dto.UserIdDto; import com.damai.enums.BaseCode; import com.damai.exception.DaMaiFrameException; +import com.damai.redis.RedisCache; +import com.damai.redis.RedisKeyBuild; import com.damai.service.composite.AbstractProgramCheckHandler; import com.damai.vo.TicketUserVo; -import com.damai.vo.UserGetAndTicketUserListVo; -import com.damai.vo.UserVo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -18,7 +20,6 @@ import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.Optional; import java.util.stream.Collectors; /** @@ -33,29 +34,28 @@ public class UserExistCheckHandler extends AbstractProgramCheckHandler { @Autowired private UserClient userClient; + @Autowired + private RedisCache redisCache; + @Override protected void execute(ProgramOrderCreateDto programOrderCreateDto) { //验证用户和购票人信息正确性 - UserVo userVo = new UserVo(); - List ticketUserVoList; - UserGetAndTicketUserListDto userGetAndTicketUserListDto = new UserGetAndTicketUserListDto(); - userGetAndTicketUserListDto.setUserId(programOrderCreateDto.getUserId()); - ApiResponse userGetAndTicketUserApiResponse = - userClient.getUserAndTicketUserList(userGetAndTicketUserListDto); - if (Objects.equals(userGetAndTicketUserApiResponse.getCode(), BaseCode.SUCCESS.getCode())) { - UserGetAndTicketUserListVo userAndTicketUserListVo = - Optional.ofNullable(userGetAndTicketUserApiResponse.getData()) - .orElseThrow(() -> new DaMaiFrameException(BaseCode.RPC_RESULT_DATA_EMPTY)); - if (Objects.isNull(userAndTicketUserListVo.getUserVo())) { - throw new DaMaiFrameException(BaseCode.USER_EMPTY); + //先从缓存中查询 + List ticketUserVoList = redisCache.getValueIsList(RedisKeyBuild.createRedisKey( + RedisKeyManage.TICKET_USER_LIST, programOrderCreateDto.getUserId()), TicketUserVo.class); + if (CollectionUtil.isEmpty(ticketUserVoList)) { + UserIdDto userIdDto = new UserIdDto(); + userIdDto.setId(programOrderCreateDto.getProgramId()); + ApiResponse> apiResponse = userClient.select(userIdDto); + if (Objects.equals(apiResponse.getCode(), BaseCode.SUCCESS.getCode())) { + ticketUserVoList = apiResponse.getData(); + }else { + log.error("user client rpc getUserAndTicketUserList select response : {}", JSON.toJSONString(apiResponse)); + throw new DaMaiFrameException(apiResponse); } - ticketUserVoList = - Optional.ofNullable(userAndTicketUserListVo.getTicketUserVoList()).filter(list -> !list.isEmpty()) - .orElseThrow(() -> new DaMaiFrameException(BaseCode.TICKET_USER_EMPTY)); - log.info("userVo : {}, ticketUserVoList : {}",JSON.toJSONString(userVo),JSON.toJSONString(ticketUserVoList)); - }else { - log.error("user client rpc getUserAndTicketUserList error response : {}", JSON.toJSONString(userGetAndTicketUserApiResponse)); - throw new DaMaiFrameException(userGetAndTicketUserApiResponse); + } + if (CollectionUtil.isEmpty(ticketUserVoList)) { + throw new DaMaiFrameException(BaseCode.TICKET_USER_EMPTY); } Map ticketUserVoMap = ticketUserVoList.stream() .collect(Collectors.toMap(TicketUserVo::getId, ticketUserVo -> ticketUserVo, (v1, v2) -> v2)); -- Gitee From 7f9d8e4990333f274185ef3f39566dc31919663f Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Sun, 10 Mar 2024 13:00:58 +0800 Subject: [PATCH 47/74] =?UTF-8?q?=E8=B4=AD=E7=A5=A8=E4=BA=BA=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/damai/service/ProgramService.java | 8 +------- .../main/java/com/damai/service/TicketUserService.java | 6 +++--- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java index a1f14ccf..71aeadb8 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java @@ -450,26 +450,20 @@ public class ProgramService extends ServiceImpl { * 预先加载用户下的购票人 */ private void preloadTicketUserList(Integer highHeat){ - //如果节目是热度不高的,那么不用预先加载了 if (Objects.equals(highHeat, BusinessStatus.NO.getCode())) { return; } - String userId = BaseParameterHolder.getParameter(USER_ID); String code = BaseParameterHolder.getParameter(CODE); - //如果用户id或者code有一个为空,那么判断不了用户登录状态,也不用预先加载了 - if (StringUtil.isEmpty(userId) && StringUtil.isEmpty(code)) { + if (StringUtil.isEmpty(userId) || StringUtil.isEmpty(code)) { return; } - //异步加载购票人信息,别耽误查询节目详情的主线程 BusinessThreadPool.execute(() -> { try { Boolean userLogin = redisCache.hasKey(RedisKeyBuild.createRedisKey(RedisKeyManage.USER_LOGIN, code, userId)); - //如果用户没有登录,也不用预先加载了 if (!userLogin) { return; } - //如果已经预热加载了,就不用再执行了 if (redisCache.hasKey(RedisKeyBuild.createRedisKey(RedisKeyManage.TICKET_USER_LIST,userId))) { return; } diff --git a/damai-server/damai-user-service/src/main/java/com/damai/service/TicketUserService.java b/damai-server/damai-user-service/src/main/java/com/damai/service/TicketUserService.java index af2eb0cd..8caddfe9 100644 --- a/damai-server/damai-user-service/src/main/java/com/damai/service/TicketUserService.java +++ b/damai-server/damai-user-service/src/main/java/com/damai/service/TicketUserService.java @@ -49,10 +49,10 @@ public class TicketUserService extends ServiceImpl public List select(TicketUserListDto ticketUserListDto) { //先从缓存中查询 - List valueIsList = redisCache.getValueIsList(RedisKeyBuild.createRedisKey( + List ticketUserVoList = redisCache.getValueIsList(RedisKeyBuild.createRedisKey( RedisKeyManage.TICKET_USER_LIST, ticketUserListDto.getUserId()), TicketUserVo.class); - if (CollectionUtil.isNotEmpty(valueIsList)) { - return valueIsList; + if (CollectionUtil.isNotEmpty(ticketUserVoList)) { + return ticketUserVoList; } LambdaQueryWrapper ticketUserLambdaQueryWrapper = Wrappers.lambdaQuery(TicketUser.class) .eq(TicketUser::getUserId, ticketUserListDto.getUserId()); -- Gitee From 7c188bfcf600948cfbb2b8a1c63771430f7a0724 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Sun, 10 Mar 2024 15:37:10 +0800 Subject: [PATCH 48/74] =?UTF-8?q?=E8=B4=AD=E7=A5=A8=E4=BA=BA=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/damai/vo/TicketUserVo.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/damai-server-client/damai-user-client/src/main/java/com/damai/vo/TicketUserVo.java b/damai-server-client/damai-user-client/src/main/java/com/damai/vo/TicketUserVo.java index 3b6a89ba..df853ddd 100644 --- a/damai-server-client/damai-user-client/src/main/java/com/damai/vo/TicketUserVo.java +++ b/damai-server-client/damai-user-client/src/main/java/com/damai/vo/TicketUserVo.java @@ -1,6 +1,7 @@ package com.damai.vo; import cn.hutool.core.util.DesensitizedUtil; +import cn.hutool.core.util.StrUtil; import com.damai.util.StringUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -34,6 +35,13 @@ public class TicketUserVo implements Serializable { @ApiModelProperty(name ="idNumber", dataType ="String", value ="证件号码") private String idNumber; + public String getRelName() { + if (StringUtil.isNotEmpty(relName)) { + return StrUtil.hide(relName, 0, 1); + } + return relName; + } + public String getIdNumber() { if (StringUtil.isNotEmpty(idNumber)) { return DesensitizedUtil.idCardNum(idNumber, 4, 4); -- Gitee From 8d502a5f08055af9c50960cf1ea55685a6912ed2 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Sun, 10 Mar 2024 18:01:59 +0800 Subject: [PATCH 49/74] =?UTF-8?q?=E8=8A=82=E7=9B=AE=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/damai/redis/CacheUtil.java | 3 +- .../java/com/damai/dto/ProgramListDto.java | 3 -- .../com/damai/service/ProgramService.java | 10 ------ .../java/com/damai/service/SeatService.java | 33 ++++++++++--------- .../damai/service/TicketCategoryService.java | 17 +++++----- 5 files changed, 28 insertions(+), 38 deletions(-) diff --git a/damai-redis-framework/src/main/java/com/damai/redis/CacheUtil.java b/damai-redis-framework/src/main/java/com/damai/redis/CacheUtil.java index fcc7c7b7..cf938b88 100644 --- a/damai-redis-framework/src/main/java/com/damai/redis/CacheUtil.java +++ b/damai-redis-framework/src/main/java/com/damai/redis/CacheUtil.java @@ -103,7 +103,6 @@ public class CacheUtil { /** * 判断 object 是否为空 * - * @param object */ public static boolean isEmpty(Object object) { if (object == null) { @@ -113,7 +112,7 @@ public class CacheUtil { return StringUtil.isEmpty((String) object); } if (object instanceof Collection) { - return ((Collection)object).size() == 0; + return ((Collection) object).isEmpty(); } return false; } diff --git a/damai-server-client/damai-program-client/src/main/java/com/damai/dto/ProgramListDto.java b/damai-server-client/damai-program-client/src/main/java/com/damai/dto/ProgramListDto.java index b6aa57d5..5efec009 100644 --- a/damai-server-client/damai-program-client/src/main/java/com/damai/dto/ProgramListDto.java +++ b/damai-server-client/damai-program-client/src/main/java/com/damai/dto/ProgramListDto.java @@ -25,8 +25,5 @@ public class ProgramListDto { @NotNull private List parentProgramCategoryIds; - /** - * 业务字段,后端自己填充 - * */ private Date time; } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java index 71aeadb8..2f934b39 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java @@ -287,35 +287,27 @@ public class ProgramService extends ServiceImpl { public ProgramVo getDetail(ProgramGetDto programGetDto) { ProgramVo redisProgramVo = programService.getById(programGetDto.getId()); - //预先加载用户购票人 preloadTicketUserList(redisProgramVo.getHighHeat()); - //查询节目类型 ProgramCategory programCategory = redisCache.getForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_CATEGORY_HASH) ,String.valueOf(redisProgramVo.getProgramCategoryId()),ProgramCategory.class); if (Objects.nonNull(programCategory)) { redisProgramVo.setProgramCategoryName(programCategory.getName()); } - //查询节目演出时间 ProgramShowTime redisProgramShowTime = programShowTimeService.selectProgramShowTimeByProgramId(redisProgramVo.getId()); redisProgramVo.setShowTime(redisProgramShowTime.getShowTime()); redisProgramVo.setShowDayTime(redisProgramShowTime.getShowDayTime()); redisProgramVo.setShowWeekTime(redisProgramShowTime.getShowWeekTime()); - - //查询座位 List redisSeatVoList = seatService.selectSeatByProgramId(redisProgramVo.getId()); - //如果节目允许选择座位才把座位给前端展示 if (Objects.equals(redisProgramVo.getPermitChooseSeat(), BusinessStatus.YES.getCode())) { redisProgramVo.setSeatVoList(redisSeatVoList); } - //查询节目票档 List ticketCategoryVoList = ticketCategoryService.selectTicketCategoryListByProgramId(redisProgramVo.getId()); redisProgramVo.setTicketCategoryVoList(ticketCategoryVoList); - //余票数量 ticketCategoryService.setRedisRemainNumber(redisProgramVo.getId()); return redisProgramVo; @@ -325,11 +317,9 @@ public class ProgramService extends ServiceImpl { public ProgramVo getById(Long programId) { return redisCache.get(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM,programId),ProgramVo.class,() -> { ProgramVo programVo = new ProgramVo(); - //根据id查询到节目 Program program = Optional.ofNullable(programMapper.selectById(programId)).orElseThrow(() -> new DaMaiFrameException(BaseCode.PROGRAM_NOT_EXIST)); BeanUtil.copyProperties(program,programVo); - //查询区域 AreaGetDto areaGetDto = new AreaGetDto(); areaGetDto.setId(program.getAreaId()); ApiResponse areaResponse = baseDataClient.getById(areaGetDto); diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/SeatService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/SeatService.java index 01152440..5a88ce90 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/SeatService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/SeatService.java @@ -20,7 +20,6 @@ import com.damai.vo.SeatVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Map; @@ -70,11 +69,16 @@ public class SeatService extends ServiceImpl { * 查询座位 * */ public List selectSeatByProgramId(Long programId) { - List seatVoList = new ArrayList<>(); - if ((!redisCache.hasKey(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_NO_SOLD_HASH, programId))) && - (!redisCache.hasKey(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_LOCK_HASH, programId))) && - (!redisCache.hasKey(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_SOLD_HASH, programId)))) { - LambdaQueryWrapper seatLambdaQueryWrapper = Wrappers.lambdaQuery(Seat.class).eq(Seat::getProgramId, programId); + List seatVoList = redisCache.getAllForHash(RedisKeyBuild.createRedisKey( + RedisKeyManage.PROGRAM_SEAT_NO_SOLD_HASH, programId),SeatVo.class); + seatVoList.addAll(redisCache.getAllForHash(RedisKeyBuild.createRedisKey( + RedisKeyManage.PROGRAM_SEAT_LOCK_HASH, programId),SeatVo.class)); + seatVoList.addAll(redisCache.getAllForHash(RedisKeyBuild.createRedisKey( + RedisKeyManage.PROGRAM_SEAT_SOLD_HASH, programId),SeatVo.class)); + + if (CollectionUtil.isEmpty(seatVoList)) { + LambdaQueryWrapper seatLambdaQueryWrapper = + Wrappers.lambdaQuery(Seat.class).eq(Seat::getProgramId, programId); List seats = seatMapper.selectList(seatLambdaQueryWrapper); for (Seat seat : seats) { SeatVo seatVo = new SeatVo(); @@ -88,26 +92,25 @@ public class SeatService extends ServiceImpl { List soldSeatVoList = seatMap.get(SellStatus.SOLD.getCode()); if (CollectionUtil.isNotEmpty(noSoldSeatVoList)) { redisCache.putHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_NO_SOLD_HASH, programId) - ,noSoldSeatVoList.stream().collect(Collectors.toMap(s -> String.valueOf(s.getId()),s -> s,(v1,v2) -> v2)) + ,noSoldSeatVoList.stream() + .collect(Collectors.toMap(s -> String.valueOf(s.getId()),s -> s,(v1,v2) -> v2)) ,EXPIRE_TIME, TimeUnit.DAYS); } if (CollectionUtil.isNotEmpty(lockSeatVoList)) { redisCache.putHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_LOCK_HASH, programId) - ,lockSeatVoList.stream().collect(Collectors.toMap(s -> String.valueOf(s.getId()),s -> s,(v1,v2) -> v2)) + ,lockSeatVoList.stream() + .collect(Collectors.toMap(s -> String.valueOf(s.getId()),s -> s,(v1,v2) -> v2)) ,EXPIRE_TIME, TimeUnit.DAYS); } if (CollectionUtil.isNotEmpty(soldSeatVoList)) { redisCache.putHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_SOLD_HASH, programId) - ,soldSeatVoList.stream().collect(Collectors.toMap(s -> String.valueOf(s.getId()),s -> s,(v1,v2) -> v2)) + ,soldSeatVoList.stream() + .collect(Collectors.toMap(s -> String.valueOf(s.getId()),s -> s,(v1,v2) -> v2)) ,EXPIRE_TIME, TimeUnit.DAYS); } - }else { - seatVoList = redisCache.getAllForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_NO_SOLD_HASH, programId),SeatVo.class); - seatVoList.addAll(redisCache.getAllForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_LOCK_HASH, programId),SeatVo.class)); - seatVoList.addAll(redisCache.getAllForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_SOLD_HASH, programId),SeatVo.class)); - seatVoList = seatVoList.stream().sorted(Comparator.comparingInt(SeatVo::getRowCode) - .thenComparingInt(SeatVo::getColCode)).collect(Collectors.toList()); } + seatVoList = seatVoList.stream().sorted(Comparator.comparingInt(SeatVo::getRowCode) + .thenComparingInt(SeatVo::getColCode)).collect(Collectors.toList()); return seatVoList; } } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/TicketCategoryService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/TicketCategoryService.java index 56ac0745..506d31dc 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/TicketCategoryService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/TicketCategoryService.java @@ -51,10 +51,13 @@ public class TicketCategoryService extends ServiceImpl selectTicketCategoryListByProgramId(Long programId){ - return redisCache.getValueIsList(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_TICKET_CATEGORY_LIST, programId), TicketCategoryVo.class, () -> { - LambdaQueryWrapper ticketCategoryLambdaQueryWrapper = Wrappers.lambdaQuery(TicketCategory.class) - .eq(TicketCategory::getProgramId, programId); - List ticketCategoryList = ticketCategoryMapper.selectList(ticketCategoryLambdaQueryWrapper); + return redisCache.getValueIsList(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_TICKET_CATEGORY_LIST, programId), + TicketCategoryVo.class, + () -> { + LambdaQueryWrapper ticketCategoryLambdaQueryWrapper = + Wrappers.lambdaQuery(TicketCategory.class).eq(TicketCategory::getProgramId, programId); + List ticketCategoryList = + ticketCategoryMapper.selectList(ticketCategoryLambdaQueryWrapper); return ticketCategoryList.stream().map(ticketCategory -> { ticketCategory.setRemainNumber(null); TicketCategoryVo ticketCategoryVo = new TicketCategoryVo(); @@ -64,11 +67,9 @@ public class TicketCategoryService extends ServiceImpl ticketCategoryLambdaQueryWrapper = Wrappers.lambdaQuery(TicketCategory.class) .eq(TicketCategory::getProgramId, programId); -- Gitee From ff6151aa74a4ca38c0fe9a1428631563242ddd18 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Sun, 10 Mar 2024 21:27:01 +0800 Subject: [PATCH 50/74] =?UTF-8?q?=E8=8A=82=E7=9B=AE=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/damai/vo/ProgramVo.java | 3 ++ .../com/damai/service/ProgramService.java | 35 ++++++++++++++----- .../com/damai/service/SelectHomeListEs.java | 29 +++++++++++++++ .../init/ProgramDocumentParamName.java | 2 ++ .../init/ProgramElasticsearchInitData.java | 14 +++++--- .../pagestrategy/impl/SelectPageEsHandle.java | 2 +- 6 files changed, 72 insertions(+), 13 deletions(-) create mode 100644 damai-server/damai-program-service/src/main/java/com/damai/service/SelectHomeListEs.java diff --git a/damai-server-client/damai-program-client/src/main/java/com/damai/vo/ProgramVo.java b/damai-server-client/damai-program-client/src/main/java/com/damai/vo/ProgramVo.java index 6db8cad4..1a14ca7f 100644 --- a/damai-server-client/damai-program-client/src/main/java/com/damai/vo/ProgramVo.java +++ b/damai-server-client/damai-program-client/src/main/java/com/damai/vo/ProgramVo.java @@ -49,6 +49,9 @@ public class ProgramVo implements Serializable { @ApiModelProperty(name ="parentProgramCategoryId", dataType ="Long", value ="父节目类型表id") private Long parentProgramCategoryId; + @ApiModelProperty(name ="parentProgramCategoryName", dataType ="String", value ="父节目类型名字") + private String parentProgramCategoryName; + @ApiModelProperty(name ="detail", dataType ="String", value ="项目详情") private String detail; diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java index 2f934b39..cec3f01f 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java @@ -166,12 +166,20 @@ public class ProgramService extends ServiceImpl { public Map> selectHomeList(ProgramListDto programPageListDto) { Map> programListVoMap = new HashMap<>(256); - //根据区域id和父节目类型id查询节目列表 - LambdaQueryWrapper programLambdaQueryWrapper = Wrappers.lambdaQuery(Program.class) - .eq(Program::getProgramStatus, BusinessStatus.YES.getCode()) - .eq(Program::getAreaId,programPageListDto.getAreaId()) - .in(Program::getParentProgramCategoryId, programPageListDto.getParentProgramCategoryIds()); - List programList = programMapper.selectList(programLambdaQueryWrapper); + //根据父节目类型id来查询节目类型map,key:节目类型id,value:节目类型名 + Map programCategoryMap = selectProgramCategoryMap(programPageListDto.getParentProgramCategoryIds()); + + List programList = new ArrayList<>(64); + for (Long parentProgramCategoryId : programPageListDto.getParentProgramCategoryIds()) { + //根据区域id和父节目类型id查询节目列表 + LambdaQueryWrapper programLambdaQueryWrapper = Wrappers.lambdaQuery(Program.class) + .eq(Program::getProgramStatus, BusinessStatus.YES.getCode()) + .eq(Program::getAreaId,programPageListDto.getAreaId()) + .eq(Program::getParentProgramCategoryId, parentProgramCategoryId) + .last("limit 7"); + programList.addAll(programMapper.selectList(programLambdaQueryWrapper)); + } + //节目id集合 List programIdList = programList.stream().map(Program::getId).collect(Collectors.toList()); //根据节目id集合查询节目演出时间集合 @@ -181,8 +189,7 @@ public class ProgramService extends ServiceImpl { //将节目演出集合根据节目id进行分组成map,key:节目id,value:节目演出时间集合 Map> programShowTimeMap = programShowTimeList.stream().collect(Collectors.groupingBy(ProgramShowTime::getProgramId)); - //根据获得的节目列表中的父节目类型id来查询节目类型map,key:节目类型id,value:节目类型名 - Map programCategoryMap = selectProgramCategoryMap(programList.stream().map(Program::getParentProgramCategoryId).collect(Collectors.toList())); + //根据节目id统计出票档的最低价和最高价的集合map, key:节目id,value:票档 Map ticketCategorieMap = selectTicketCategorieMap(programIdList); @@ -295,6 +302,12 @@ public class ProgramService extends ServiceImpl { redisProgramVo.setProgramCategoryName(programCategory.getName()); } + ProgramCategory parentProgramCategory = redisCache.getForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_CATEGORY_HASH) + ,String.valueOf(redisProgramVo.getParentProgramCategoryId()),ProgramCategory.class); + if (Objects.nonNull(parentProgramCategory)) { + redisProgramVo.setParentProgramCategoryName(parentProgramCategory.getName()); + } + ProgramShowTime redisProgramShowTime = programShowTimeService.selectProgramShowTimeByProgramId(redisProgramVo.getId()); redisProgramVo.setShowTime(redisProgramShowTime.getShowTime()); redisProgramVo.setShowDayTime(redisProgramShowTime.getShowDayTime()); @@ -421,6 +434,12 @@ public class ProgramService extends ServiceImpl { if (Objects.nonNull(programCategory)) { programVo.setProgramCategoryName(programCategory.getName()); } + //查询父节目类型 + ProgramCategory parentProgramCategory = redisCache.getForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_CATEGORY_HASH) + ,String.valueOf(programVo.getParentProgramCategoryId()),ProgramCategory.class); + if (Objects.nonNull(parentProgramCategory)) { + programVo.setParentProgramCategoryName(parentProgramCategory.getName()); + } //查询节目演出时间 LambdaQueryWrapper programShowTimeLambdaQueryWrapper = diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/SelectHomeListEs.java b/damai-server/damai-program-service/src/main/java/com/damai/service/SelectHomeListEs.java new file mode 100644 index 00000000..6b230d6e --- /dev/null +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/SelectHomeListEs.java @@ -0,0 +1,29 @@ +package com.damai.service; + +import com.damai.dto.ProgramListDto; +import com.damai.util.BusinessEsHandle; +import com.damai.vo.ProgramListVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: es主页查询 + * @author: 阿宽不是程序员 + **/ +@Component +public class SelectHomeListEs { + + @Autowired + private BusinessEsHandle businessEsHandle; + + public Map> selectHomeList(ProgramListDto programPageListDto) { + Map> programListVoMap = new HashMap<>(256); + //TODO + return null; + } +} diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramDocumentParamName.java b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramDocumentParamName.java index e81cd1f5..701cf5f6 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramDocumentParamName.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramDocumentParamName.java @@ -30,6 +30,8 @@ public class ProgramDocumentParamName { public static final String PARENT_PROGRAM_CATEGORY_ID = "parentProgramCategoryId"; + public static final String PARENT_PROGRAM_CATEGORY_NAME = "parentProgramCategoryName"; + public static final String SHOW_TIME = "showTime"; public static final String SHOW_DAY_TIME = "showDayTime"; diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramElasticsearchInitData.java b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramElasticsearchInitData.java index 6cf7f8ec..c1ee5e25 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramElasticsearchInitData.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramElasticsearchInitData.java @@ -108,15 +108,20 @@ public class ProgramElasticsearchInitData extends AbstractApplicationPostConstru programCategoryIdDto.setParamType("long"); list.add(programCategoryIdDto); + EsDocumentMappingDto programCategoryNameDto = new EsDocumentMappingDto(); + programCategoryNameDto.setParamName(ProgramDocumentParamName.PROGRAM_CATEGORY_NAME); + programCategoryNameDto.setParamType("text"); + list.add(programCategoryNameDto); + EsDocumentMappingDto parentProgramCategoryIdDto = new EsDocumentMappingDto(); parentProgramCategoryIdDto.setParamName(ProgramDocumentParamName.PARENT_PROGRAM_CATEGORY_ID); parentProgramCategoryIdDto.setParamType("long"); list.add(parentProgramCategoryIdDto); - EsDocumentMappingDto programCategoryNameDto = new EsDocumentMappingDto(); - programCategoryNameDto.setParamName(ProgramDocumentParamName.PROGRAM_CATEGORY_NAME); - programCategoryNameDto.setParamType("text"); - list.add(programCategoryNameDto); + EsDocumentMappingDto parentProgramCategoryNameDto = new EsDocumentMappingDto(); + parentProgramCategoryNameDto.setParamName(ProgramDocumentParamName.PARENT_PROGRAM_CATEGORY_NAME); + parentProgramCategoryNameDto.setParamType("text"); + list.add(parentProgramCategoryNameDto); EsDocumentMappingDto showTimeDto = new EsDocumentMappingDto(); showTimeDto.setParamName(ProgramDocumentParamName.SHOW_TIME); @@ -167,6 +172,7 @@ public class ProgramElasticsearchInitData extends AbstractApplicationPostConstru map.put(ProgramDocumentParamName.PROGRAM_CATEGORY_ID,programVo.getProgramCategoryId()); map.put(ProgramDocumentParamName.PROGRAM_CATEGORY_NAME,programVo.getProgramCategoryName()); map.put(ProgramDocumentParamName.PARENT_PROGRAM_CATEGORY_ID,programVo.getParentProgramCategoryId()); + map.put(ProgramDocumentParamName.PARENT_PROGRAM_CATEGORY_NAME,programVo.getParentProgramCategoryName()); map.put(ProgramDocumentParamName.SHOW_TIME, programVo.getShowTime()); map.put(ProgramDocumentParamName.SHOW_DAY_TIME,programVo.getShowDayTime()); map.put(ProgramDocumentParamName.SHOW_WEEK_TIME,programVo.getShowWeekTime()); diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/pagestrategy/impl/SelectPageEsHandle.java b/damai-server/damai-program-service/src/main/java/com/damai/service/pagestrategy/impl/SelectPageEsHandle.java index f7bf4f6b..5708073a 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/pagestrategy/impl/SelectPageEsHandle.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/pagestrategy/impl/SelectPageEsHandle.java @@ -23,7 +23,7 @@ import java.util.List; import java.util.Objects; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: es查询 + * @description: es分页查询 * @author: 阿宽不是程序员 **/ @Slf4j -- Gitee From ddb987d7926d57510a6394281bf90af5046986c9 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Mon, 11 Mar 2024 14:43:34 +0800 Subject: [PATCH 51/74] =?UTF-8?q?=E8=8A=82=E7=9B=AE=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/damai/dto/ProgramListDto.java | 5 +- .../java/com/damai/mapper/ProgramMapper.java | 10 ++ .../com/damai/service/ProgramService.java | 103 +++++++----------- .../damai/service/ProgramShowTimeService.java | 5 +- .../service/{ => es}/SelectHomeListEs.java | 35 +++++- .../ProgramSelectPageHandleStrategyInit.java} | 18 ++- .../service/init/ProgramShowTimeRenewal.java | 11 +- .../config/ProgramAutoConfig.java | 6 +- .../main/resources/mapper/ProgramMapper.xml | 20 ++++ 9 files changed, 132 insertions(+), 81 deletions(-) rename damai-server/damai-program-service/src/main/java/com/damai/service/{ => es}/SelectHomeListEs.java (31%) rename damai-server/damai-program-service/src/main/java/com/damai/service/{pagestrategy/event/SelectPageHandleStrategyInit.java => init/ProgramSelectPageHandleStrategyInit.java} (60%) diff --git a/damai-server-client/damai-program-client/src/main/java/com/damai/dto/ProgramListDto.java b/damai-server-client/damai-program-client/src/main/java/com/damai/dto/ProgramListDto.java index 5efec009..d734c0c7 100644 --- a/damai-server-client/damai-program-client/src/main/java/com/damai/dto/ProgramListDto.java +++ b/damai-server-client/damai-program-client/src/main/java/com/damai/dto/ProgramListDto.java @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotNull; -import java.util.Date; +import javax.validation.constraints.Size; import java.util.List; /** @@ -23,7 +23,6 @@ public class ProgramListDto { @ApiModelProperty(name ="parentProgramCategoryIds", dataType ="Long[]", value ="父节目类型id集合") @NotNull + @Size(max = 4) private List parentProgramCategoryIds; - - private Date time; } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/mapper/ProgramMapper.java b/damai-server/damai-program-service/src/main/java/com/damai/mapper/ProgramMapper.java index 81efc9de..619eb94a 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/mapper/ProgramMapper.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/mapper/ProgramMapper.java @@ -3,11 +3,14 @@ package com.damai.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.damai.dto.ProgramListDto; import com.damai.dto.ProgramPageListDto; import com.damai.entity.Program; import com.damai.entity.ProgramV2; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 * @description: 节目 mapper @@ -15,6 +18,13 @@ import org.apache.ibatis.annotations.Param; **/ public interface ProgramMapper extends BaseMapper { + /** + * 主页查询 + * @param programListDto 参数 + * @return 结果 + * */ + List selectHomeList(@Param("programListDto")ProgramListDto programListDto); + /** * 分页查询 * @param page 分页对象 diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java index cec3f01f..01c2c42a 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java @@ -45,6 +45,7 @@ import com.damai.page.PageUtil; import com.damai.page.PageVo; import com.damai.redis.RedisCache; import com.damai.redis.RedisKeyBuild; +import com.damai.service.es.SelectHomeListEs; import com.damai.service.init.ProgramDocumentParamName; import com.damai.service.pagestrategy.SelectPageWrapper; import com.damai.servicelock.LockType; @@ -136,6 +137,9 @@ public class ProgramService extends ServiceImpl { @Autowired private SelectPageWrapper selectPageWrapper; + @Autowired + private SelectHomeListEs selectHomeListEs; + public Long add(ProgramAddDto programAddDto){ Program program = new Program(); BeanUtil.copyProperties(programAddDto,program); @@ -164,75 +168,57 @@ public class ProgramService extends ServiceImpl { return pageVo; } public Map> selectHomeList(ProgramListDto programPageListDto) { - Map> programListVoMap = new HashMap<>(256); - //根据父节目类型id来查询节目类型map,key:节目类型id,value:节目类型名 - Map programCategoryMap = selectProgramCategoryMap(programPageListDto.getParentProgramCategoryIds()); - - List programList = new ArrayList<>(64); - for (Long parentProgramCategoryId : programPageListDto.getParentProgramCategoryIds()) { - //根据区域id和父节目类型id查询节目列表 - LambdaQueryWrapper programLambdaQueryWrapper = Wrappers.lambdaQuery(Program.class) - .eq(Program::getProgramStatus, BusinessStatus.YES.getCode()) - .eq(Program::getAreaId,programPageListDto.getAreaId()) - .eq(Program::getParentProgramCategoryId, parentProgramCategoryId) - .last("limit 7"); - programList.addAll(programMapper.selectList(programLambdaQueryWrapper)); + Map> programListVoMap = selectHomeListEs.selectHomeList(programPageListDto); + if (CollectionUtil.isNotEmpty(programListVoMap)) { + return programListVoMap; } - - //节目id集合 + return dbSelectHomeList(programPageListDto); + } + + private Map> dbSelectHomeList(ProgramListDto programPageListDto){ + Map> programListVoMap = new HashMap<>(256); + Map programCategoryMap = selectProgramCategoryMap(programPageListDto.getParentProgramCategoryIds()); + List programList = programMapper.selectHomeList(programPageListDto); List programIdList = programList.stream().map(Program::getId).collect(Collectors.toList()); - //根据节目id集合查询节目演出时间集合 LambdaQueryWrapper programShowTimeLambdaQueryWrapper = Wrappers.lambdaQuery(ProgramShowTime.class) .in(ProgramShowTime::getProgramId, programIdList); List programShowTimeList = programShowTimeMapper.selectList(programShowTimeLambdaQueryWrapper); - //将节目演出集合根据节目id进行分组成map,key:节目id,value:节目演出时间集合 - Map> programShowTimeMap = programShowTimeList.stream().collect(Collectors.groupingBy(ProgramShowTime::getProgramId)); - + Map> programShowTimeMap = + programShowTimeList.stream().collect(Collectors.groupingBy(ProgramShowTime::getProgramId)); - - //根据节目id统计出票档的最低价和最高价的集合map, key:节目id,value:票档 Map ticketCategorieMap = selectTicketCategorieMap(programIdList); - - //将节目结合按照父节目类型id进行分组成map,key:父节目类型id,value:节目集合 - Map> programMap = programList.stream().collect(Collectors.groupingBy(Program::getParentProgramCategoryId)); - //循环此map + Map> programMap = programList.stream() + .collect(Collectors.groupingBy(Program::getParentProgramCategoryId)); for (Entry> programEntry : programMap.entrySet()) { - //父节目类型id Long key = programEntry.getKey(); - //节目集合 List value = programEntry.getValue(); List programListVoList = new ArrayList<>(); - //循环节目集合 for (Program program : value) { ProgramListVo programListVo = new ProgramListVo(); BeanUtil.copyProperties(program,programListVo); - //演出时间 programListVo.setShowTime(Optional.ofNullable(programShowTimeMap.get(program.getId())) .filter(list -> !list.isEmpty()) .map(list -> list.get(0)) .map(ProgramShowTime::getShowTime) .orElse(null)); - //演出时间(精确到天) programListVo.setShowDayTime(Optional.ofNullable(programShowTimeMap.get(program.getId())) .filter(list -> !list.isEmpty()) .map(list -> list.get(0)) .map(ProgramShowTime::getShowDayTime) .orElse(null)); - //演出时间所在的星期 programListVo.setShowWeekTime(Optional.ofNullable(programShowTimeMap.get(program.getId())) .filter(list -> !list.isEmpty()) .map(list -> list.get(0)) .map(ProgramShowTime::getShowWeekTime) .orElse(null)); - //节目最高价 - programListVo.setMaxPrice(Optional.ofNullable(ticketCategorieMap.get(program.getId())).map(TicketCategoryAggregate::getMaxPrice).orElse(null)); - //节目最低价 - programListVo.setMinPrice(Optional.ofNullable(ticketCategorieMap.get(program.getId())).map(TicketCategoryAggregate::getMinPrice).orElse(null)); + programListVo.setMaxPrice(Optional.ofNullable(ticketCategorieMap.get(program.getId())) + .map(TicketCategoryAggregate::getMaxPrice).orElse(null)); + programListVo.setMinPrice(Optional.ofNullable(ticketCategorieMap.get(program.getId())) + .map(TicketCategoryAggregate::getMinPrice).orElse(null)); programListVoList.add(programListVo); } - //key:节目类型名 value:节目列表 programListVoMap.put(programCategoryMap.get(key),programListVoList); } return programListVoMap; @@ -296,17 +282,7 @@ public class ProgramService extends ServiceImpl { preloadTicketUserList(redisProgramVo.getHighHeat()); - ProgramCategory programCategory = redisCache.getForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_CATEGORY_HASH) - ,String.valueOf(redisProgramVo.getProgramCategoryId()),ProgramCategory.class); - if (Objects.nonNull(programCategory)) { - redisProgramVo.setProgramCategoryName(programCategory.getName()); - } - - ProgramCategory parentProgramCategory = redisCache.getForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_CATEGORY_HASH) - ,String.valueOf(redisProgramVo.getParentProgramCategoryId()),ProgramCategory.class); - if (Objects.nonNull(parentProgramCategory)) { - redisProgramVo.setParentProgramCategoryName(parentProgramCategory.getName()); - } + setProgramCategoryData(redisProgramVo); ProgramShowTime redisProgramShowTime = programShowTimeService.selectProgramShowTimeByProgramId(redisProgramVo.getId()); redisProgramVo.setShowTime(redisProgramShowTime.getShowTime()); @@ -346,11 +322,7 @@ public class ProgramService extends ServiceImpl { return programVo; },EXPIRE_TIME, TimeUnit.DAYS); } - /** - * 根据节目类型id集合查询节目类型名字 - * @param programCategoryIdList 节目类型id集合 - * @return Map key:节目类型id value:节目类型名字 - * */ + public Map selectProgramCategoryMap(Collection programCategoryIdList){ LambdaQueryWrapper pcLambdaQueryWrapper = Wrappers.lambdaQuery(ProgramCategory.class) .in(ProgramCategory::getId, programCategoryIdList); @@ -428,18 +400,8 @@ public class ProgramService extends ServiceImpl { log.error("base-data rpc getById error areaResponse:{}", JSON.toJSONString(areaResponse)); } - //查询节目类型 - ProgramCategory programCategory = redisCache.getForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_CATEGORY_HASH) - ,String.valueOf(programVo.getProgramCategoryId()),ProgramCategory.class); - if (Objects.nonNull(programCategory)) { - programVo.setProgramCategoryName(programCategory.getName()); - } - //查询父节目类型 - ProgramCategory parentProgramCategory = redisCache.getForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_CATEGORY_HASH) - ,String.valueOf(programVo.getParentProgramCategoryId()),ProgramCategory.class); - if (Objects.nonNull(parentProgramCategory)) { - programVo.setParentProgramCategoryName(parentProgramCategory.getName()); - } + //设置节目类型相关信息 + setProgramCategoryData(programVo); //查询节目演出时间 LambdaQueryWrapper programShowTimeLambdaQueryWrapper = @@ -491,4 +453,17 @@ public class ProgramService extends ServiceImpl { } }); } + + public void setProgramCategoryData(ProgramVo programVo){ + ProgramCategory programCategory = redisCache.getForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_CATEGORY_HASH) + ,String.valueOf(programVo.getProgramCategoryId()),ProgramCategory.class); + if (Objects.nonNull(programCategory)) { + programVo.setProgramCategoryName(programCategory.getName()); + } + ProgramCategory parentProgramCategory = redisCache.getForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_CATEGORY_HASH) + ,String.valueOf(programVo.getParentProgramCategoryId()),ProgramCategory.class); + if (Objects.nonNull(parentProgramCategory)) { + programVo.setParentProgramCategoryName(parentProgramCategory.getName()); + } + } } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramShowTimeService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramShowTimeService.java index 21ae337e..209b6b1f 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramShowTimeService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramShowTimeService.java @@ -70,7 +70,8 @@ public class ProgramShowTimeService extends ServiceImpl programShowTimeLambdaQueryWrapper = Wrappers.lambdaQuery(ProgramShowTime.class). le(ProgramShowTime::getShowTime, DateUtils.addDay(DateUtils.now(), 1)); @@ -80,6 +81,7 @@ public class ProgramShowTimeService extends ServiceImpl> selectHomeList(ProgramListDto programPageListDto) { Map> programListVoMap = new HashMap<>(256); - //TODO - return null; + + try { + for (Long parentProgramCategoryId : programPageListDto.getParentProgramCategoryIds()) { + List programEsQueryDto = new ArrayList<>(); + EsDataQueryDto areaIdQueryDto = new EsDataQueryDto(); + areaIdQueryDto.setParamName(ProgramDocumentParamName.AREA_ID); + areaIdQueryDto.setParamValue(programPageListDto.getAreaId()); + programEsQueryDto.add(areaIdQueryDto); + EsDataQueryDto parentProgramCategoryIdQueryDto = new EsDataQueryDto(); + parentProgramCategoryIdQueryDto.setParamName(ProgramDocumentParamName.PARENT_PROGRAM_CATEGORY_ID); + parentProgramCategoryIdQueryDto.setParamValue(parentProgramCategoryId); + programEsQueryDto.add(parentProgramCategoryIdQueryDto); + PageInfo pageInfo = businessEsHandle.queryPage( + SpringUtil.getPrefixDistinctionName() + "-" + ProgramDocumentParamName.INDEX_NAME, + ProgramDocumentParamName.INDEX_TYPE, programEsQueryDto, 1, 7, ProgramListVo.class); + if (pageInfo.getList().size() > 0) { + String areaName = pageInfo.getList().get(0).getAreaName(); + programListVoMap.put(areaName,pageInfo.getList()); + } + } + }catch (Exception e) { + log.error("businessEsHandle.queryPage error",e); + } + return programListVoMap; } } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/pagestrategy/event/SelectPageHandleStrategyInit.java b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramSelectPageHandleStrategyInit.java similarity index 60% rename from damai-server/damai-program-service/src/main/java/com/damai/service/pagestrategy/event/SelectPageHandleStrategyInit.java rename to damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramSelectPageHandleStrategyInit.java index 236cb185..8a320690 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/pagestrategy/event/SelectPageHandleStrategyInit.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramSelectPageHandleStrategyInit.java @@ -1,10 +1,10 @@ -package com.damai.service.pagestrategy.event; +package com.damai.service.init; +import com.damai.initialize.base.AbstractApplicationPostConstructHandler; import com.damai.service.pagestrategy.SelectPageHandle; import com.damai.service.pagestrategy.SelectPageStrategyContext; import lombok.AllArgsConstructor; -import org.springframework.boot.context.event.ApplicationStartedEvent; -import org.springframework.context.ApplicationListener; +import org.springframework.context.ConfigurableApplicationContext; import java.util.Map; import java.util.Map.Entry; @@ -15,13 +15,19 @@ import java.util.Map.Entry; * @author: 阿宽不是程序员 **/ @AllArgsConstructor -public class SelectPageHandleStrategyInit implements ApplicationListener { +public class ProgramSelectPageHandleStrategyInit extends AbstractApplicationPostConstructHandler { private final SelectPageStrategyContext selectPageStrategyContext; + + @Override + public Integer executeOrder() { + return 4; + } + @Override - public void onApplicationEvent(ApplicationStartedEvent event) { - Map selectPageHandleMap = event.getApplicationContext().getBeansOfType(SelectPageHandle.class); + public void executeInit(ConfigurableApplicationContext context) { + Map selectPageHandleMap = context.getBeansOfType(SelectPageHandle.class); for (Entry entry : selectPageHandleMap.entrySet()) { SelectPageHandle selectPageHandle = entry.getValue(); selectPageStrategyContext.put(selectPageHandle.getType(),selectPageHandle); diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramShowTimeRenewal.java b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramShowTimeRenewal.java index e1c6c9d7..7dbf4c9f 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramShowTimeRenewal.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramShowTimeRenewal.java @@ -1,7 +1,9 @@ package com.damai.service.init; +import com.damai.core.SpringUtil; import com.damai.initialize.base.AbstractApplicationPostConstructHandler; import com.damai.service.ProgramShowTimeService; +import com.damai.util.BusinessEsHandle; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.stereotype.Component; @@ -17,6 +19,9 @@ public class ProgramShowTimeRenewal extends AbstractApplicationPostConstructHand @Autowired private ProgramShowTimeService programShowTimeService; + @Autowired + private BusinessEsHandle businessEsHandle; + @Override public Integer executeOrder() { return 2; @@ -27,6 +32,10 @@ public class ProgramShowTimeRenewal extends AbstractApplicationPostConstructHand * */ @Override public void executeInit(final ConfigurableApplicationContext context) { - programShowTimeService.renewal(); + boolean flag = programShowTimeService.renewal(); + if (flag) { + businessEsHandle.deleteIndex(SpringUtil.getPrefixDistinctionName() + "-" + + ProgramDocumentParamName.INDEX_NAME); + } } } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/pagestrategy/config/ProgramAutoConfig.java b/damai-server/damai-program-service/src/main/java/com/damai/service/pagestrategy/config/ProgramAutoConfig.java index 5a41a1b7..9e3592d5 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/pagestrategy/config/ProgramAutoConfig.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/pagestrategy/config/ProgramAutoConfig.java @@ -4,7 +4,7 @@ import com.damai.service.pagestrategy.ProgramConstant; import com.damai.service.pagestrategy.SelectPageHandle; import com.damai.service.pagestrategy.SelectPageStrategyContext; import com.damai.service.pagestrategy.SelectPageWrapper; -import com.damai.service.pagestrategy.event.SelectPageHandleStrategyInit; +import com.damai.service.init.ProgramSelectPageHandleStrategyInit; import com.damai.service.pagestrategy.impl.SelectPageDbHandle; import com.damai.service.pagestrategy.impl.SelectPageEsHandle; import org.springframework.beans.factory.annotation.Value; @@ -37,8 +37,8 @@ public class ProgramAutoConfig { } @Bean - public SelectPageHandleStrategyInit selectPageHandleStrategyInit(SelectPageStrategyContext selectPageStrategyContext){ - return new SelectPageHandleStrategyInit(selectPageStrategyContext); + public ProgramSelectPageHandleStrategyInit selectPageHandleStrategyInit(SelectPageStrategyContext selectPageStrategyContext){ + return new ProgramSelectPageHandleStrategyInit(selectPageStrategyContext); } @Bean diff --git a/damai-server/damai-program-service/src/main/resources/mapper/ProgramMapper.xml b/damai-server/damai-program-service/src/main/resources/mapper/ProgramMapper.xml index c973f369..d904989b 100644 --- a/damai-server/damai-program-service/src/main/resources/mapper/ProgramMapper.xml +++ b/damai-server/damai-program-service/src/main/resources/mapper/ProgramMapper.xml @@ -19,6 +19,26 @@ + + - select dp.id,dp.area_id,dp.program_category_id,dp.parent_program_category_id,dp.title,dp.actor, dp.place,dp.item_picture,ds.show_time,ds.show_week_time,ds.show_day_time @@ -51,20 +51,17 @@ and dp.area_id = #{programPageListDto.areaId,jdbcType=BIGINT} - - and dp.program_category_id in - - #{programCategoryId,jdbcType=BIGINT} - + + and dp.program_category_id = #{programPageListDto.programCategoryId,jdbcType=BIGINT} - - and dp.parent_program_category_id in - - #{parentProgramCategoryId,jdbcType=BIGINT} - + + and dp.parent_program_category_id = #{programPageListDto.parentProgramCategoryId,jdbcType=BIGINT} + + + and ds.show_day_time >= #{programPageListDto.startDateTime} + + + and ds.show_day_time <= #{programPageListDto.endDateTime} - and ds.show_day_time = #{programPageListDto.showDayTime} - and ds.show_day_time #{programPageListDto.time} - \ No newline at end of file -- Gitee From 0ba7f619be26012ee4f829f082408084bac862cf Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Mon, 11 Mar 2024 22:25:39 +0800 Subject: [PATCH 54/74] =?UTF-8?q?=E8=8A=82=E7=9B=AE=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/damai/util/BusinessEsHandle.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java b/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java index 7888f639..09948f28 100644 --- a/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java +++ b/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java @@ -531,7 +531,8 @@ public class BusinessEsHandle { return sourceBuilder; } - public void executeQuery(String indexName, String indexType,List list,PageInfo pageInfo,Class clazz, SearchSourceBuilder sourceBuilder) throws IOException { + public void executeQuery(String indexName, String indexType,List list,PageInfo pageInfo,Class clazz, + SearchSourceBuilder sourceBuilder) throws IOException { String string = sourceBuilder.toString(); HttpEntity entity = new NStringEntity(string, ContentType.APPLICATION_JSON); StringBuilder endpointStringBuilder = new StringBuilder("/" + indexName); -- Gitee From a4453365db73de71f483ed717195337b7fd8d881 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Mon, 11 Mar 2024 22:29:24 +0800 Subject: [PATCH 55/74] =?UTF-8?q?=E8=8A=82=E7=9B=AE=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/damai/service/es/ProgramEs.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/es/ProgramEs.java b/damai-server/damai-program-service/src/main/java/com/damai/service/es/ProgramEs.java index 49b6b040..e524cdd7 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/es/ProgramEs.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/es/ProgramEs.java @@ -55,7 +55,7 @@ public class ProgramEs { PageInfo pageInfo = businessEsHandle.queryPage( SpringUtil.getPrefixDistinctionName() + "-" + ProgramDocumentParamName.INDEX_NAME, ProgramDocumentParamName.INDEX_TYPE, programEsQueryDto, 1, 7, ProgramListVo.class); - if (pageInfo.getList().size() > 0) { + if (!pageInfo.getList().isEmpty()) { String areaName = pageInfo.getList().get(0).getAreaName(); programListVoMap.put(areaName,pageInfo.getList()); } -- Gitee From a7f9cd20ad4fbabd4412a0d08476759e95b6745c Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Mon, 11 Mar 2024 23:28:32 +0800 Subject: [PATCH 56/74] =?UTF-8?q?=E8=8A=82=E7=9B=AE=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/damai/util/BusinessEsHandle.java | 18 +++++++++++++---- .../java/com/damai/service/es/ProgramEs.java | 20 ++++++++++++++++++- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java b/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java index 09948f28..a83da1d1 100644 --- a/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java +++ b/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java @@ -319,7 +319,7 @@ public class BusinessEsHandle { return list; } SearchSourceBuilder sourceBuilder = getSearchSourceBuilder(esGeoPointDto,esDataQueryDtoList,sortParam,geoPointDtoSortParam,sortOrder); - executeQuery(indexName,indexType,list,null,clazz,sourceBuilder); + executeQuery(indexName,indexType,list,null,clazz,sourceBuilder,null); return list; } @@ -461,7 +461,7 @@ public class BusinessEsHandle { SearchSourceBuilder sourceBuilder = getSearchSourceBuilder(esGeoPointDto,esDataQueryDtoList,sortParam,geoPointDtoSortParam,sortOrder); sourceBuilder.from((pageNo - 1) * pageSize); sourceBuilder.size(pageSize); - executeQuery(indexName,indexType,list,pageInfo,clazz,sourceBuilder); + executeQuery(indexName,indexType,list,pageInfo,clazz,sourceBuilder,null); return pageInfo; } @@ -532,7 +532,7 @@ public class BusinessEsHandle { } public void executeQuery(String indexName, String indexType,List list,PageInfo pageInfo,Class clazz, - SearchSourceBuilder sourceBuilder) throws IOException { + SearchSourceBuilder sourceBuilder,List highLightFieldNameList) throws IOException { String string = sourceBuilder.toString(); HttpEntity entity = new NStringEntity(string, ContentType.APPLICATION_JSON); StringBuilder endpointStringBuilder = new StringBuilder("/" + indexName); @@ -573,7 +573,7 @@ public class BusinessEsHandle { if (null != hitsArr && !hitsArr.isEmpty()) { for (int i = 0, size = hitsArr.size(); i < size; i++) { JSONObject data = hitsArr.getJSONObject(i); - if (null != data) { + if (Objects.nonNull(data)) { JSONObject jsonObject = data.getJSONObject("_source"); JSONArray jsonArray = data.getJSONArray("sort"); @@ -581,6 +581,16 @@ public class BusinessEsHandle { Long sort = jsonArray.getLong(0); jsonObject.put("sort",sort); } + + JSONObject highlight = data.getJSONObject("highlight"); + if (Objects.nonNull(highlight) && Objects.nonNull(highLightFieldNameList)) { + for (String highLightFieldName : highLightFieldNameList) { + JSONArray highLightFieldValue = highlight.getJSONArray(highLightFieldName); + if (Objects.nonNull(highLightFieldValue) && !highLightFieldValue.isEmpty()) { + jsonObject.put(highLightFieldName,highLightFieldValue.get(0)); + } + } + } list.add(JSONObject.parseObject(jsonObject.toJSONString(),clazz)); } } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/es/ProgramEs.java b/damai-server/damai-program-service/src/main/java/com/damai/service/es/ProgramEs.java index e524cdd7..c6ae8df0 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/es/ProgramEs.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/es/ProgramEs.java @@ -17,10 +17,12 @@ import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.builder.SearchSourceBuilder; +import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -138,16 +140,32 @@ public class ProgramEs { searchSourceBuilder.trackTotalHits(true); searchSourceBuilder.from((programSearchDto.getPageNumber() - 1) * programSearchDto.getPageSize()); searchSourceBuilder.size(programSearchDto.getPageSize()); + searchSourceBuilder.highlighter(getHighlightBuilder(Arrays.asList(ProgramDocumentParamName.TITLE, + ProgramDocumentParamName.ACTOR))); List list = new ArrayList<>(); PageInfo pageInfo = new PageInfo<>(list); pageInfo.setPageNum(programSearchDto.getPageNumber()); pageInfo.setPageSize(programSearchDto.getPageSize()); businessEsHandle.executeQuery(SpringUtil.getPrefixDistinctionName() + "-" + ProgramDocumentParamName.INDEX_NAME, - ProgramDocumentParamName.INDEX_TYPE,list,pageInfo,ProgramListVo.class,searchSourceBuilder); + ProgramDocumentParamName.INDEX_TYPE,list,pageInfo,ProgramListVo.class, + searchSourceBuilder,Arrays.asList(ProgramDocumentParamName.TITLE,ProgramDocumentParamName.ACTOR)); pageVo = PageUtil.convertPage(pageInfo,programListVo -> programListVo); }catch (Exception e) { log.error("search error",e); } return pageVo; } + + public HighlightBuilder getHighlightBuilder(List fieldNameList){ + // 创建一个HighlightBuilder + HighlightBuilder highlightBuilder = new HighlightBuilder(); + for (String fieldName : fieldNameList) { + // 为特定字段添加高亮设置 + HighlightBuilder.Field highlightTitle = new HighlightBuilder.Field(fieldName); + highlightTitle.preTags(""); + highlightTitle.postTags(""); + highlightBuilder.field(highlightTitle); + } + return highlightBuilder; + } } -- Gitee From e930d550e9d108e334f7cadf507f504a6ed76782 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Tue, 12 Mar 2024 10:28:54 +0800 Subject: [PATCH 57/74] =?UTF-8?q?elasticsearch=E7=BB=84=E4=BB=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/damai/util/BusinessEsHandle.java | 152 ++++++------------ 1 file changed, 45 insertions(+), 107 deletions(-) diff --git a/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java b/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java index a83da1d1..0408b553 100644 --- a/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java +++ b/damai-elasticsearch-framework/src/main/java/com/damai/util/BusinessEsHandle.java @@ -324,66 +324,6 @@ public class BusinessEsHandle { } - /** - * 查询 - * - * @param indexName 索引名字 - * @param indexType 索引类型 - * @param dsl es的dsl语句 - * @param clazz 返回的类型 - * @return List - */ - public List query(String indexName, String indexType, String dsl, Class clazz) throws IOException { - if (!esSwitch) { - return new ArrayList<>(); - } - if (StringUtil.isEmpty(dsl)) { - return new ArrayList<>(); - } - HttpEntity entity = new NStringEntity(dsl, ContentType.APPLICATION_JSON); - String endpoint = ""; - if (esTypeSwitch) { - endpoint = "/" + indexName + "/" + indexType + "/_search"; - }else { - endpoint = "/" + indexName + "/_search"; - } - - Request request = new Request("POST",endpoint); - request.setEntity(entity); - request.addParameters(Collections.emptyMap()); - Response response = restClient.performRequest(request); - String results = EntityUtils.toString(response.getEntity()); - if (StringUtil.isEmpty(results)) { - return null; - } - List list = new ArrayList<>(); - JSONObject parse = (JSONObject) JSONObject.parse(results); - if (parse != null) { - JSONObject hits = parse.getJSONObject("hits"); - if (hits != null) { - // 数据 - JSONArray hitsArr = hits.getJSONArray("hits"); - if (null != hitsArr && !hitsArr.isEmpty()) { - for (int i = 0, size = hitsArr.size(); i < size; i++) { - JSONObject data = hitsArr.getJSONObject(i); - if (null != data) { - JSONObject jsonObject = data.getJSONObject("_source"); - - JSONArray jsonArray = data.getJSONArray("sort"); - if (null != jsonArray && !jsonArray.isEmpty()) { - Long sort = jsonArray.getLong(0); - jsonObject.put("sort",sort); - } - list.add(JSONObject.parseObject(jsonObject.toJSONString(),clazz)); - } - } - } - } - } - return list; - } - - /** * 查询(分页) * @@ -471,7 +411,6 @@ public class BusinessEsHandle { sortOrder = SortOrder.DESC; } if (StringUtil.isNotEmpty(sortParam)) { - // 排序 FieldSortBuilder sort = SortBuilders.fieldSort(sortParam); sort.order(sortOrder); sourceBuilder.sort(sort); @@ -482,13 +421,11 @@ public class BusinessEsHandle { sort.order(sortOrder); sourceBuilder.sort(sort); } - // 经纬度匹配 if (Objects.nonNull(esGeoPointDto)) { QueryBuilder geoQuery = new GeoDistanceQueryBuilder(esGeoPointDto.getParamName()).distance(Long.MAX_VALUE, DistanceUnit.KILOMETERS) .point(esGeoPointDto.getLatitude().doubleValue(), esGeoPointDto.getLongitude().doubleValue()).geoDistance(GeoDistance.PLANE); sourceBuilder.query(geoQuery); } - // 匹配 BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); for (EsDataQueryDto esDataQueryDto : esDataQueryDtoList) { String paramName = esDataQueryDto.getParamName(); @@ -547,55 +484,56 @@ public class BusinessEsHandle { request.setEntity(entity); request.addParameters(Collections.emptyMap()); Response response = restClient.performRequest(request); - String results = EntityUtils.toString(response.getEntity()); - if (StringUtil.isEmpty(results)) { + String result = EntityUtils.toString(response.getEntity()); + if (StringUtil.isEmpty(result)) { return; } - JSONObject parse = (JSONObject) JSONObject.parse(results); - if (Objects.nonNull(parse)) { - JSONObject hits = parse.getJSONObject("hits"); - if (Objects.nonNull(hits)) { - // 总条数 - Long value = null; - if (esTypeSwitch) { - value = hits.getLong("total"); - }else { - JSONObject totalJsonObject = hits.getJSONObject("total"); - if (totalJsonObject != null) { - value = totalJsonObject.getLong("value"); - } - } - if (Objects.nonNull(pageInfo)) { - pageInfo.setTotal(value); - } - // 数据 - JSONArray hitsArr = hits.getJSONArray("hits"); - if (null != hitsArr && !hitsArr.isEmpty()) { - for (int i = 0, size = hitsArr.size(); i < size; i++) { - JSONObject data = hitsArr.getJSONObject(i); - if (Objects.nonNull(data)) { - JSONObject jsonObject = data.getJSONObject("_source"); - - JSONArray jsonArray = data.getJSONArray("sort"); - if (null != jsonArray && !jsonArray.isEmpty()) { - Long sort = jsonArray.getLong(0); - jsonObject.put("sort",sort); - } - - JSONObject highlight = data.getJSONObject("highlight"); - if (Objects.nonNull(highlight) && Objects.nonNull(highLightFieldNameList)) { - for (String highLightFieldName : highLightFieldNameList) { - JSONArray highLightFieldValue = highlight.getJSONArray(highLightFieldName); - if (Objects.nonNull(highLightFieldValue) && !highLightFieldValue.isEmpty()) { - jsonObject.put(highLightFieldName,highLightFieldValue.get(0)); - } - } - } - list.add(JSONObject.parseObject(jsonObject.toJSONString(),clazz)); - } + JSONObject resultJsonObject = JSONObject.parseObject(result); + if (Objects.isNull(resultJsonObject)) { + return; + } + JSONObject hits = resultJsonObject.getJSONObject("hits"); + if (Objects.isNull(hits)) { + return; + } + Long value = null; + if (esTypeSwitch) { + value = hits.getLong("total"); + }else { + JSONObject totalJsonObject = hits.getJSONObject("total"); + if (Objects.nonNull(totalJsonObject)) { + value = totalJsonObject.getLong("value"); + } + } + if (Objects.nonNull(pageInfo) && Objects.nonNull(value)) { + pageInfo.setTotal(value); + } + JSONArray arrayData = hits.getJSONArray("hits"); + if (Objects.isNull(arrayData) || arrayData.isEmpty()) { + return; + } + for (int i = 0, size = arrayData.size(); i < size; i++) { + JSONObject data = arrayData.getJSONObject(i); + if (Objects.isNull(data)) { + continue; + } + JSONObject jsonObject = data.getJSONObject("_source"); + JSONArray jsonArray = data.getJSONArray("sort"); + if (Objects.nonNull(jsonArray) && !jsonArray.isEmpty()) { + Long sort = jsonArray.getLong(0); + jsonObject.put("sort",sort); + } + JSONObject highlight = data.getJSONObject("highlight"); + if (Objects.nonNull(highlight) && Objects.nonNull(highLightFieldNameList)) { + for (String highLightFieldName : highLightFieldNameList) { + JSONArray highLightFieldValue = highlight.getJSONArray(highLightFieldName); + if (Objects.isNull(highLightFieldValue) || highLightFieldValue.isEmpty()) { + continue; } + jsonObject.put(highLightFieldName,highLightFieldValue.get(0)); } } + list.add(JSONObject.parseObject(jsonObject.toJSONString(),clazz)); } } } -- Gitee From 459fb2351a3241454b793e9dc599bea37898e930 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Tue, 12 Mar 2024 15:29:16 +0800 Subject: [PATCH 58/74] =?UTF-8?q?=E8=8A=82=E7=9B=AE=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=9D=E5=A7=8B=E5=8C=96=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/damai/enums/BaseCode.java | 2 + .../com/damai/dto/EsDocumentMappingDto.java | 4 + .../com/damai/context/DelayQueueContext.java | 4 +- .../main/java/com/damai/dto/SeatListDto.java | 21 +++ .../java/com/damai/vo/SeatRelateInfoVo.java | 42 +++++ .../com/damai/controller/SeatController.java | 8 + .../com/damai/service/ProgramService.java | 55 +++--- .../java/com/damai/service/SeatService.java | 38 +++++ .../init/ProgramElasticsearchInitData.java | 156 +++++------------- 9 files changed, 185 insertions(+), 145 deletions(-) create mode 100644 damai-server-client/damai-program-client/src/main/java/com/damai/dto/SeatListDto.java create mode 100644 damai-server-client/damai-program-client/src/main/java/com/damai/vo/SeatRelateInfoVo.java diff --git a/damai-common/src/main/java/com/damai/enums/BaseCode.java b/damai-common/src/main/java/com/damai/enums/BaseCode.java index 12953a99..7d65778b 100644 --- a/damai-common/src/main/java/com/damai/enums/BaseCode.java +++ b/damai-common/src/main/java/com/damai/enums/BaseCode.java @@ -154,6 +154,8 @@ public enum BaseCode { END_DATE_TIME_NOT_EXIST(50005,"结束时间为空"), + PROGRAM_NOT_ALLOW_CHOOSE_SEAT(50006,"此节目不允许选择座位"), + USER_LOG_IN_STATUS_ERROR(60001,"用户不是登录状态"), USER_LOG_IN(60002,"用户已登录"), diff --git a/damai-elasticsearch-framework/src/main/java/com/damai/dto/EsDocumentMappingDto.java b/damai-elasticsearch-framework/src/main/java/com/damai/dto/EsDocumentMappingDto.java index 625130d6..a72241b1 100644 --- a/damai-elasticsearch-framework/src/main/java/com/damai/dto/EsDocumentMappingDto.java +++ b/damai-elasticsearch-framework/src/main/java/com/damai/dto/EsDocumentMappingDto.java @@ -1,6 +1,8 @@ package com.damai.dto; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 @@ -8,6 +10,8 @@ import lombok.Data; * @author: 阿宽不是程序员 **/ @Data +@AllArgsConstructor +@NoArgsConstructor public class EsDocumentMappingDto { /** diff --git a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/context/DelayQueueContext.java b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/context/DelayQueueContext.java index 3a387dc3..20c9bc5d 100644 --- a/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/context/DelayQueueContext.java +++ b/damai-redisson-framework/damai-service-delay-queue-framework/src/main/java/com/damai/context/DelayQueueContext.java @@ -12,7 +12,9 @@ import java.util.concurrent.TimeUnit; public class DelayQueueContext { private final DelayQueueBasePart delayQueueBasePart; - //key为topc主题,value为发送消息的处理器 + /** + * key为topic主题,value为发送消息的处理器 + * */ private final Map delayQueueProduceCombineMap = new ConcurrentHashMap<>(); public DelayQueueContext(DelayQueueBasePart delayQueueBasePart){ diff --git a/damai-server-client/damai-program-client/src/main/java/com/damai/dto/SeatListDto.java b/damai-server-client/damai-program-client/src/main/java/com/damai/dto/SeatListDto.java new file mode 100644 index 00000000..5d8829da --- /dev/null +++ b/damai-server-client/damai-program-client/src/main/java/com/damai/dto/SeatListDto.java @@ -0,0 +1,21 @@ +package com.damai.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 节目座位列表 dto + * @author: 阿宽不是程序员 + **/ +@Data +@ApiModel(value="SeatListDto", description ="节目座位列表") +public class SeatListDto { + + @ApiModelProperty(name ="programId", dataType ="Long", value ="节目表id",required = true) + @NotNull + private Long programId; +} diff --git a/damai-server-client/damai-program-client/src/main/java/com/damai/vo/SeatRelateInfoVo.java b/damai-server-client/damai-program-client/src/main/java/com/damai/vo/SeatRelateInfoVo.java new file mode 100644 index 00000000..fc73d98d --- /dev/null +++ b/damai-server-client/damai-program-client/src/main/java/com/damai/vo/SeatRelateInfoVo.java @@ -0,0 +1,42 @@ +package com.damai.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 座位相关信息 vo + * @author: 阿宽不是程序员 + **/ +@Data +@ApiModel(value="SeatRelateInfoVo", description ="座位相关信息") +public class SeatRelateInfoVo implements Serializable { + + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(name ="programId", dataType ="Long", value ="节目表id") + private Long programId; + + @ApiModelProperty(name ="place", dataType ="String", value ="地点") + private String place; + + @ApiModelProperty(name ="showTime", dataType ="Date", value ="演出时间") + private Date showTime; + + @ApiModelProperty(name ="showWeekTime", dataType ="String", value ="演出时间所在的星期") + private String showWeekTime; + + @ApiModelProperty(name ="priceList", dataType ="List", value ="价格集合") + private List priceList; + + @ApiModelProperty(name ="seatVoMap", dataType ="Map>", value ="座位集合") + private Map> seatVoMap; + +} diff --git a/damai-server/damai-program-service/src/main/java/com/damai/controller/SeatController.java b/damai-server/damai-program-service/src/main/java/com/damai/controller/SeatController.java index 6a456764..9269ae38 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/controller/SeatController.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/controller/SeatController.java @@ -2,7 +2,9 @@ package com.damai.controller; import com.damai.common.ApiResponse; import com.damai.dto.SeatAddDto; +import com.damai.dto.SeatListDto; import com.damai.service.SeatService; +import com.damai.vo.SeatRelateInfoVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -32,4 +34,10 @@ public class SeatController { public ApiResponse add(@Valid @RequestBody SeatAddDto seatAddDto) { return ApiResponse.ok(seatService.add(seatAddDto)); } + + @ApiOperation(value = "查询座位相关信息") + @PostMapping(value = "/relate/info") + public ApiResponse relateInfo(@Valid @RequestBody SeatListDto seatListDto) { + return ApiResponse.ok(seatService.relateInfo(seatListDto)); + } } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java index 641553d0..55339c26 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java @@ -315,23 +315,11 @@ public class ProgramService extends ServiceImpl { @ServiceLock(lockType= LockType.Read,name = PROGRAM_LOCK,keys = {"#programId"}) public ProgramVo getById(Long programId) { - return redisCache.get(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM,programId),ProgramVo.class,() -> { - ProgramVo programVo = new ProgramVo(); - Program program = Optional.ofNullable(programMapper.selectById(programId)).orElseThrow(() -> new DaMaiFrameException(BaseCode.PROGRAM_NOT_EXIST)); - BeanUtil.copyProperties(program,programVo); - - AreaGetDto areaGetDto = new AreaGetDto(); - areaGetDto.setId(program.getAreaId()); - ApiResponse areaResponse = baseDataClient.getById(areaGetDto); - if (Objects.equals(areaResponse.getCode(), ApiResponse.ok().getCode())) { - if (Objects.nonNull(areaResponse.getData())) { - programVo.setAreaName(areaResponse.getData().getName()); - } - }else { - log.error("base-data rpc getById error areaResponse:{}", JSON.toJSONString(areaResponse)); - } - return programVo; - },EXPIRE_TIME, TimeUnit.DAYS); + return redisCache.get(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM,programId) + ,ProgramVo.class, + () -> createProgramVo(programId) + ,EXPIRE_TIME, + TimeUnit.DAYS); } public Map selectProgramCategoryMap(Collection programCategoryIdList){ @@ -383,21 +371,12 @@ public class ProgramService extends ServiceImpl { } } - public List getAllProgramIdList(){ - LambdaQueryWrapper programLambdaQueryWrapper = - Wrappers.lambdaQuery(Program.class).eq(Program::getProgramStatus, BusinessStatus.YES.getCode()) - .select(Program::getId); - List programs = programMapper.selectList(programLambdaQueryWrapper); - return programs.stream().map(Program::getId).collect(Collectors.toList()); - } - - public ProgramVo getDetailFromDb(Long programId) { + private ProgramVo createProgramVo(long programId){ ProgramVo programVo = new ProgramVo(); - //根据id查询到节目 - Program program = Optional.ofNullable(programMapper.selectById(programId)).orElseThrow(() -> new DaMaiFrameException(BaseCode.PROGRAM_NOT_EXIST)); + Program program = + Optional.ofNullable(programMapper.selectById(programId)) + .orElseThrow(() -> new DaMaiFrameException(BaseCode.PROGRAM_NOT_EXIST)); BeanUtil.copyProperties(program,programVo); - - //查询区域 AreaGetDto areaGetDto = new AreaGetDto(); areaGetDto.setId(program.getAreaId()); ApiResponse areaResponse = baseDataClient.getById(areaGetDto); @@ -408,17 +387,27 @@ public class ProgramService extends ServiceImpl { }else { log.error("base-data rpc getById error areaResponse:{}", JSON.toJSONString(areaResponse)); } + return programVo; + } + + public List getAllProgramIdList(){ + LambdaQueryWrapper programLambdaQueryWrapper = + Wrappers.lambdaQuery(Program.class).eq(Program::getProgramStatus, BusinessStatus.YES.getCode()) + .select(Program::getId); + List programs = programMapper.selectList(programLambdaQueryWrapper); + return programs.stream().map(Program::getId).collect(Collectors.toList()); + } + + public ProgramVo getDetailFromDb(Long programId) { + ProgramVo programVo = createProgramVo(programId); - //设置节目类型相关信息 setProgramCategoryData(programVo); - //查询节目演出时间 LambdaQueryWrapper programShowTimeLambdaQueryWrapper = Wrappers.lambdaQuery(ProgramShowTime.class).eq(ProgramShowTime::getProgramId, programId); ProgramShowTime programShowTime = Optional.ofNullable(programShowTimeMapper.selectOne(programShowTimeLambdaQueryWrapper)) .orElseThrow(() -> new DaMaiFrameException(BaseCode.PROGRAM_SHOW_TIME_NOT_EXIST)); - programVo.setShowTime(programShowTime.getShowTime()); programVo.setShowDayTime(programShowTime.getShowDayTime()); programVo.setShowWeekTime(programShowTime.getShowWeekTime()); diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/SeatService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/SeatService.java index 5a88ce90..26957830 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/SeatService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/SeatService.java @@ -7,15 +7,21 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.damai.core.RedisKeyManage; +import com.damai.dto.ProgramGetDto; import com.damai.dto.SeatAddDto; +import com.damai.dto.SeatListDto; +import com.damai.entity.ProgramShowTime; import com.damai.entity.Seat; import com.damai.enums.BaseCode; +import com.damai.enums.BusinessStatus; import com.damai.enums.SeatType; import com.damai.enums.SellStatus; import com.damai.exception.DaMaiFrameException; import com.damai.mapper.SeatMapper; import com.damai.redis.RedisCache; import com.damai.redis.RedisKeyBuild; +import com.damai.vo.ProgramVo; +import com.damai.vo.SeatRelateInfoVo; import com.damai.vo.SeatVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -46,6 +52,12 @@ public class SeatService extends ServiceImpl { @Autowired private SeatMapper seatMapper; + @Autowired + private ProgramService programService; + + @Autowired + private ProgramShowTimeService programShowTimeService; + /** * 添加座位 * */ @@ -113,4 +125,30 @@ public class SeatService extends ServiceImpl { .thenComparingInt(SeatVo::getColCode)).collect(Collectors.toList()); return seatVoList; } + + public SeatRelateInfoVo relateInfo(SeatListDto seatListDto) { + SeatRelateInfoVo seatRelateInfoVo = new SeatRelateInfoVo(); + ProgramVo programVo = + redisCache.get(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM,seatListDto.getProgramId()),ProgramVo.class); + if (Objects.isNull(programVo)){ + ProgramGetDto programGetDto = new ProgramGetDto(); + programGetDto.setId(seatListDto.getProgramId()); + programVo = programService.getDetail(programGetDto); + } + if (programVo.getPermitChooseSeat().equals(BusinessStatus.NO.getCode())) { + throw new DaMaiFrameException(BaseCode.PROGRAM_NOT_ALLOW_CHOOSE_SEAT); + } + List seatVos = selectSeatByProgramId(seatListDto.getProgramId()); + Map> seatVoMap = + seatVos.stream().collect(Collectors.groupingBy(seatVo -> seatVo.getPrice().toString())); + ProgramShowTime programShowTime = programShowTimeService.selectProgramShowTimeByProgramId(seatListDto.getProgramId()); + + seatRelateInfoVo.setProgramId(programVo.getId()); + seatRelateInfoVo.setPlace(programVo.getPlace()); + seatRelateInfoVo.setShowTime(programShowTime.getShowTime()); + seatRelateInfoVo.setShowWeekTime(programShowTime.getShowWeekTime()); + seatRelateInfoVo.setPriceList(seatVoMap.keySet().stream().sorted().collect(Collectors.toList())); + seatRelateInfoVo.setSeatVoMap(seatVoMap); + return seatRelateInfoVo; + } } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramElasticsearchInitData.java b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramElasticsearchInitData.java index c1ee5e25..56581a96 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramElasticsearchInitData.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/init/ProgramElasticsearchInitData.java @@ -40,123 +40,16 @@ public class ProgramElasticsearchInitData extends AbstractApplicationPostConstru return 3; } - /** - * 项目启动后,异步将program的数据更新到Elasticsearch中,当数据量特别大时,生产环境绝对不会这么做 - * 会每个一个节目到数据库后,就会添加到Elasticsearch中,以及用定时任务来更新到Elasticsearch中 - * */ @Override public void executeInit(final ConfigurableApplicationContext context) { BusinessThreadPool.execute(this::initElasticsearchData); } - public boolean indexAdd(){ - boolean result = businessEsHandle.checkIndex(SpringUtil.getPrefixDistinctionName() + "-" + - ProgramDocumentParamName.INDEX_NAME, ProgramDocumentParamName.INDEX_TYPE); - if (result) { - return false; - } - try { - businessEsHandle.createIndex(SpringUtil.getPrefixDistinctionName() + "-" + - ProgramDocumentParamName.INDEX_NAME, ProgramDocumentParamName.INDEX_TYPE,getEsMapping()); - return true; - }catch (Exception e) { - log.error("createIndex error",e); - } - return false; - } - - public List getEsMapping(){ - List list = new ArrayList<>(); - - EsDocumentMappingDto idDto = new EsDocumentMappingDto(); - idDto.setParamName(ProgramDocumentParamName.ID); - idDto.setParamType("long"); - list.add(idDto); - - EsDocumentMappingDto titleDto = new EsDocumentMappingDto(); - titleDto.setParamName(ProgramDocumentParamName.TITLE); - titleDto.setParamType("text"); - list.add(titleDto); - - EsDocumentMappingDto actorDto = new EsDocumentMappingDto(); - actorDto.setParamName(ProgramDocumentParamName.ACTOR); - actorDto.setParamType("text"); - list.add(actorDto); - - EsDocumentMappingDto placeDto = new EsDocumentMappingDto(); - placeDto.setParamName(ProgramDocumentParamName.PLACE); - placeDto.setParamType("text"); - list.add(placeDto); - - EsDocumentMappingDto itemPictureDto = new EsDocumentMappingDto(); - itemPictureDto.setParamName(ProgramDocumentParamName.ITEM_PICTURE); - itemPictureDto.setParamType("text"); - list.add(itemPictureDto); - - EsDocumentMappingDto areaIdDto = new EsDocumentMappingDto(); - areaIdDto.setParamName(ProgramDocumentParamName.AREA_ID); - areaIdDto.setParamType("long"); - list.add(areaIdDto); - - EsDocumentMappingDto areaNameDto = new EsDocumentMappingDto(); - areaNameDto.setParamName(ProgramDocumentParamName.AREA_NAME); - areaNameDto.setParamType("text"); - list.add(areaNameDto); - - EsDocumentMappingDto programCategoryIdDto = new EsDocumentMappingDto(); - programCategoryIdDto.setParamName(ProgramDocumentParamName.PROGRAM_CATEGORY_ID); - programCategoryIdDto.setParamType("long"); - list.add(programCategoryIdDto); - - EsDocumentMappingDto programCategoryNameDto = new EsDocumentMappingDto(); - programCategoryNameDto.setParamName(ProgramDocumentParamName.PROGRAM_CATEGORY_NAME); - programCategoryNameDto.setParamType("text"); - list.add(programCategoryNameDto); - - EsDocumentMappingDto parentProgramCategoryIdDto = new EsDocumentMappingDto(); - parentProgramCategoryIdDto.setParamName(ProgramDocumentParamName.PARENT_PROGRAM_CATEGORY_ID); - parentProgramCategoryIdDto.setParamType("long"); - list.add(parentProgramCategoryIdDto); - - EsDocumentMappingDto parentProgramCategoryNameDto = new EsDocumentMappingDto(); - parentProgramCategoryNameDto.setParamName(ProgramDocumentParamName.PARENT_PROGRAM_CATEGORY_NAME); - parentProgramCategoryNameDto.setParamType("text"); - list.add(parentProgramCategoryNameDto); - - EsDocumentMappingDto showTimeDto = new EsDocumentMappingDto(); - showTimeDto.setParamName(ProgramDocumentParamName.SHOW_TIME); - showTimeDto.setParamType("date"); - list.add(showTimeDto); - - EsDocumentMappingDto showDayTimeDto = new EsDocumentMappingDto(); - showDayTimeDto.setParamName(ProgramDocumentParamName.SHOW_DAY_TIME); - showDayTimeDto.setParamType("date"); - list.add(showDayTimeDto); - - EsDocumentMappingDto showWeekTimeDto = new EsDocumentMappingDto(); - showWeekTimeDto.setParamName(ProgramDocumentParamName.SHOW_WEEK_TIME); - showWeekTimeDto.setParamType("text"); - list.add(showWeekTimeDto); - - EsDocumentMappingDto minPriceDto = new EsDocumentMappingDto(); - minPriceDto.setParamName(ProgramDocumentParamName.MIN_PRICE); - minPriceDto.setParamType("integer"); - list.add(minPriceDto); - - EsDocumentMappingDto maxPriceDto = new EsDocumentMappingDto(); - maxPriceDto.setParamName(ProgramDocumentParamName.MAX_PRICE); - maxPriceDto.setParamType("integer"); - list.add(maxPriceDto); - - return list; - } - public void initElasticsearchData(){ if (!indexAdd()) { return; } List allProgramIdList = programService.getAllProgramIdList(); - //根据节目id统计出票档的最低价和最高价的集合map, key:节目id,value:票档 Map ticketCategorieMap = programService.selectTicketCategorieMap(allProgramIdList); for (Long programId : allProgramIdList) { @@ -176,12 +69,53 @@ public class ProgramElasticsearchInitData extends AbstractApplicationPostConstru map.put(ProgramDocumentParamName.SHOW_TIME, programVo.getShowTime()); map.put(ProgramDocumentParamName.SHOW_DAY_TIME,programVo.getShowDayTime()); map.put(ProgramDocumentParamName.SHOW_WEEK_TIME,programVo.getShowWeekTime()); - //最低价 - map.put(ProgramDocumentParamName.MIN_PRICE,Optional.ofNullable(ticketCategorieMap.get(programVo.getId())).map(TicketCategoryAggregate::getMinPrice).orElse(null)); - //最高价 - map.put(ProgramDocumentParamName.MAX_PRICE,Optional.ofNullable(ticketCategorieMap.get(programVo.getId())).map(TicketCategoryAggregate::getMaxPrice).orElse(null)); + map.put(ProgramDocumentParamName.MIN_PRICE, + Optional.ofNullable(ticketCategorieMap.get(programVo.getId())) + .map(TicketCategoryAggregate::getMinPrice).orElse(null)); + map.put(ProgramDocumentParamName.MAX_PRICE, + Optional.ofNullable(ticketCategorieMap.get(programVo.getId())) + .map(TicketCategoryAggregate::getMaxPrice).orElse(null)); businessEsHandle.add(SpringUtil.getPrefixDistinctionName() + "-" + ProgramDocumentParamName.INDEX_NAME, ProgramDocumentParamName.INDEX_TYPE,map); } } + + public boolean indexAdd(){ + boolean result = businessEsHandle.checkIndex(SpringUtil.getPrefixDistinctionName() + "-" + + ProgramDocumentParamName.INDEX_NAME, ProgramDocumentParamName.INDEX_TYPE); + if (result) { + return false; + } + try { + businessEsHandle.createIndex(SpringUtil.getPrefixDistinctionName() + "-" + + ProgramDocumentParamName.INDEX_NAME, ProgramDocumentParamName.INDEX_TYPE,getEsMapping()); + return true; + }catch (Exception e) { + log.error("createIndex error",e); + } + return false; + } + + public List getEsMapping(){ + List list = new ArrayList<>(); + + list.add(new EsDocumentMappingDto(ProgramDocumentParamName.ID,"long")); + list.add(new EsDocumentMappingDto(ProgramDocumentParamName.TITLE,"text")); + list.add(new EsDocumentMappingDto(ProgramDocumentParamName.ACTOR,"text")); + list.add(new EsDocumentMappingDto(ProgramDocumentParamName.PLACE,"text")); + list.add(new EsDocumentMappingDto(ProgramDocumentParamName.ITEM_PICTURE,"text")); + list.add(new EsDocumentMappingDto(ProgramDocumentParamName.AREA_ID,"long")); + list.add(new EsDocumentMappingDto(ProgramDocumentParamName.AREA_NAME,"text")); + list.add(new EsDocumentMappingDto(ProgramDocumentParamName.PROGRAM_CATEGORY_ID,"long")); + list.add(new EsDocumentMappingDto(ProgramDocumentParamName.PROGRAM_CATEGORY_NAME,"text")); + list.add(new EsDocumentMappingDto(ProgramDocumentParamName.PARENT_PROGRAM_CATEGORY_ID,"long")); + list.add(new EsDocumentMappingDto(ProgramDocumentParamName.PARENT_PROGRAM_CATEGORY_NAME,"text")); + list.add(new EsDocumentMappingDto(ProgramDocumentParamName.SHOW_TIME,"date")); + list.add(new EsDocumentMappingDto(ProgramDocumentParamName.SHOW_DAY_TIME,"date")); + list.add(new EsDocumentMappingDto(ProgramDocumentParamName.SHOW_WEEK_TIME,"text")); + list.add(new EsDocumentMappingDto(ProgramDocumentParamName.MIN_PRICE,"integer")); + list.add(new EsDocumentMappingDto(ProgramDocumentParamName.MAX_PRICE,"integer")); + + return list; + } } -- Gitee From 8b277c574690e9a7fbe58399fdc4031d35b19c64 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Tue, 12 Mar 2024 19:58:11 +0800 Subject: [PATCH 59/74] =?UTF-8?q?=E8=8A=82=E7=9B=AE=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/damai/core/RepeatExecuteLimitConstants.java | 4 +++- .../aspect/RepeatExecuteLimitAspect.java | 2 +- damai-server/damai-program-service/pom.xml | 5 +++++ .../com/damai/controller/ProgramOrderController.java | 8 ++++---- .../main/java/com/damai/lock/ProgramOrderLock.java | 11 +++++++++++ .../java/com/damai/service/ProgramOrderService.java | 1 + .../composite/impl/ProgramDetailCheckHandler.java | 1 - .../composite/impl/ProgramExistCheckHandler.java | 12 +++++++++--- .../impl/ProgramOrderCreateParamCheckHandler.java | 1 - .../composite/impl/ProgramShowTimeCheckHandler.java | 5 ++--- .../composite/impl/UserExistCheckHandler.java | 7 ++----- 11 files changed, 38 insertions(+), 19 deletions(-) diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/core/RepeatExecuteLimitConstants.java b/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/core/RepeatExecuteLimitConstants.java index e4c3c8b4..4b059c34 100644 --- a/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/core/RepeatExecuteLimitConstants.java +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/core/RepeatExecuteLimitConstants.java @@ -7,5 +7,7 @@ package com.damai.core; **/ public class RepeatExecuteLimitConstants { - public static final String CONSUMER_API_DATA_MESSAGE = "consumerApiDataMessage"; + public static final String CONSUMER_API_DATA_MESSAGE = "consumer_api_data_message"; + + public static final String CREATE_PROGRAM_ORDER = "create_program_order"; } diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/repeatexecutelimit/aspect/RepeatExecuteLimitAspect.java b/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/repeatexecutelimit/aspect/RepeatExecuteLimitAspect.java index aab2309e..3281c61c 100644 --- a/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/repeatexecutelimit/aspect/RepeatExecuteLimitAspect.java +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/repeatexecutelimit/aspect/RepeatExecuteLimitAspect.java @@ -31,7 +31,7 @@ import static com.damai.repeatexecutelimit.constant.RepeatExecuteLimitConstant.S **/ @Slf4j @Aspect -@Order(-9) +@Order(-11) @AllArgsConstructor public class RepeatExecuteLimitAspect { diff --git a/damai-server/damai-program-service/pom.xml b/damai-server/damai-program-service/pom.xml index e21749ef..0540acc1 100644 --- a/damai-server/damai-program-service/pom.xml +++ b/damai-server/damai-program-service/pom.xml @@ -51,6 +51,11 @@ damai-service-lock-framework ${revision} + + com.example + damai-repeat-execute-limit-framework + ${revision} + com.example damai-service-delay-queue-framework diff --git a/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramOrderController.java b/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramOrderController.java index 556cbcb0..156c7951 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramOrderController.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramOrderController.java @@ -26,21 +26,21 @@ public class ProgramOrderController { @Autowired private ProgramOrderLock programOrderLock; - @ApiOperation(value = "生成订单") + @ApiOperation(value = "购票V1") @PostMapping(value = "/create/v1") public ApiResponse createV1(@Valid @RequestBody ProgramOrderCreateDto programOrderCreateDto) { return ApiResponse.ok(programOrderLock.createV1(programOrderCreateDto)); } - @ApiOperation(value = "生成订单(优化版本v2)") + @ApiOperation(value = "购票V2") @PostMapping(value = "/create/v2") public ApiResponse createV2(@Valid @RequestBody ProgramOrderCreateDto programOrderCreateDto) { return ApiResponse.ok(programOrderLock.createV2(programOrderCreateDto)); } - @ApiOperation(value = "生成订单(优化版本v3)") + @ApiOperation(value = "购票V2") @PostMapping(value = "/create/v3") - public ApiResponse createNew(@Valid @RequestBody ProgramOrderCreateDto programOrderCreateDto) { + public ApiResponse createV3(@Valid @RequestBody ProgramOrderCreateDto programOrderCreateDto) { return ApiResponse.ok(programOrderLock.createV3(programOrderCreateDto)); } } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/lock/ProgramOrderLock.java b/damai-server/damai-program-service/src/main/java/com/damai/lock/ProgramOrderLock.java index e8f7d419..fddfc5f4 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/lock/ProgramOrderLock.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/lock/ProgramOrderLock.java @@ -2,9 +2,11 @@ package com.damai.lock; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; +import com.damai.core.RepeatExecuteLimitConstants; import com.damai.dto.ProgramOrderCreateDto; import com.damai.dto.SeatDto; import com.damai.locallock.LocalLockCache; +import com.damai.repeatexecutelimit.annotion.RepeatExecuteLimit; import com.damai.service.ProgramOrderService; import com.damai.servicelock.LockType; import com.damai.servicelock.annotion.ServiceLock; @@ -43,6 +45,9 @@ public class ProgramOrderLock { /** * 订单创建,使用节目id作为锁 * */ + @RepeatExecuteLimit( + name = RepeatExecuteLimitConstants.CREATE_PROGRAM_ORDER, + keys = {"#programOrderCreateDto.userId","#programOrderCreateDto.programId"}) @ServiceLock(name = PROGRAM_ORDER_CREATE_V1,keys = {"#programOrderCreateDto.programId"}) public String createV1(ProgramOrderCreateDto programOrderCreateDto) { return programOrderService.create(programOrderCreateDto); @@ -52,6 +57,9 @@ public class ProgramOrderLock { * 订单优化版本v2,先用本地锁将没有获得锁的请求拦在外,获得本地锁后,再去获得分布式锁,这样可以减少对redis的压力。 * */ + @RepeatExecuteLimit( + name = RepeatExecuteLimitConstants.CREATE_PROGRAM_ORDER, + keys = {"#programOrderCreateDto.userId","#programOrderCreateDto.programId"}) public String createV2(ProgramOrderCreateDto programOrderCreateDto) { List seatDtoList = programOrderCreateDto.getSeatDtoList(); List ticketCategoryIdList = new ArrayList<>(); @@ -125,6 +133,9 @@ public class ProgramOrderLock { * 订单创建,进行优化,一开始直接利用lua执行判断要购买的座位和票的数量是足够,不足够直接返回,足够的话进行相应扣除, * 这样既能将大量无用的抢购请求直接返回掉,又可以实现无锁化 * */ + @RepeatExecuteLimit( + name = RepeatExecuteLimitConstants.CREATE_PROGRAM_ORDER, + keys = {"#programOrderCreateDto.userId","#programOrderCreateDto.programId"}) public String createV3(ProgramOrderCreateDto programOrderCreateDto) { return programOrderService.createNew(programOrderCreateDto); } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java index 79edf4a4..3cb813da 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java @@ -77,6 +77,7 @@ public class ProgramOrderService { public String create(ProgramOrderCreateDto programOrderCreateDto) { + //进行业务验证 compositeContainer.execute(CompositeCheckType.PROGRAM_ORDER_CREATE_CHECK.getValue(),programOrderCreateDto); //节目id Long programId = programOrderCreateDto.getProgramId(); diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramDetailCheckHandler.java b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramDetailCheckHandler.java index 22191cef..868fbc4f 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramDetailCheckHandler.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramDetailCheckHandler.java @@ -21,7 +21,6 @@ public class ProgramDetailCheckHandler extends AbstractProgramCheckHandler { @Override protected void execute(final ProgramOrderCreateDto programOrderCreateDto) { - //避免节目不存在,再次缓存 ProgramGetDto programGetDto = new ProgramGetDto(); programGetDto.setId(programOrderCreateDto.getProgramId()); programService.getDetail(programGetDto); diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramExistCheckHandler.java b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramExistCheckHandler.java index 10972875..c37df4f2 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramExistCheckHandler.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramExistCheckHandler.java @@ -4,6 +4,7 @@ package com.damai.service.composite.impl; import com.damai.core.RedisKeyManage; import com.damai.dto.ProgramOrderCreateDto; import com.damai.enums.BaseCode; +import com.damai.enums.BusinessStatus; import com.damai.exception.DaMaiFrameException; import com.damai.redis.RedisCache; import com.damai.redis.RedisKeyBuild; @@ -24,13 +25,18 @@ public class ProgramExistCheckHandler extends AbstractProgramCheckHandler { @Autowired private RedisCache redisCache; + @Override protected void execute(final ProgramOrderCreateDto programOrderCreateDto) { - //查询要购买的节目 ProgramVo programVo = redisCache.get(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM, programOrderCreateDto.getProgramId()), ProgramVo.class); if (Objects.isNull(programVo)) { throw new DaMaiFrameException(BaseCode.PROGRAM_NOT_EXIST); } + if (programVo.getPermitChooseSeat().equals(BusinessStatus.NO.getCode())) { + if (Objects.nonNull(programOrderCreateDto.getSeatDtoList())) { + throw new DaMaiFrameException(BaseCode.PROGRAM_NOT_ALLOW_CHOOSE_SEAT); + } + } } @Override @@ -40,11 +46,11 @@ public class ProgramExistCheckHandler extends AbstractProgramCheckHandler { @Override public Integer executeTier() { - return 3; + return 2; } @Override public Integer executeOrder() { - return 1; + return 2; } } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramOrderCreateParamCheckHandler.java b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramOrderCreateParamCheckHandler.java index 0191ddb9..094bec8e 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramOrderCreateParamCheckHandler.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramOrderCreateParamCheckHandler.java @@ -20,7 +20,6 @@ import java.util.Objects; public class ProgramOrderCreateParamCheckHandler extends AbstractProgramCheckHandler { @Override protected void execute(final ProgramOrderCreateDto programOrderCreateDto) { - //验证手动选择座位和自动分配座位的参数是否正确 List seatDtoList = programOrderCreateDto.getSeatDtoList(); if (CollectionUtil.isNotEmpty(seatDtoList)) { for (SeatDto seatDto : seatDtoList) { diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramShowTimeCheckHandler.java b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramShowTimeCheckHandler.java index da084d5f..d4fa5aef 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramShowTimeCheckHandler.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramShowTimeCheckHandler.java @@ -25,7 +25,6 @@ public class ProgramShowTimeCheckHandler extends AbstractProgramCheckHandler { private RedisCache redisCache; @Override protected void execute(final ProgramOrderCreateDto programOrderCreateDto) { - //查询节目演出时间 ProgramShowTime programShowTime = redisCache.get(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SHOW_TIME ,programOrderCreateDto.getProgramId()),ProgramShowTime.class); if (Objects.isNull(programShowTime)) { @@ -40,11 +39,11 @@ public class ProgramShowTimeCheckHandler extends AbstractProgramCheckHandler { @Override public Integer executeTier() { - return 4; + return 2; } @Override public Integer executeOrder() { - return 1; + return 3; } } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/UserExistCheckHandler.java b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/UserExistCheckHandler.java index 54143576..63c7a613 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/UserExistCheckHandler.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/UserExistCheckHandler.java @@ -39,8 +39,6 @@ public class UserExistCheckHandler extends AbstractProgramCheckHandler { @Override protected void execute(ProgramOrderCreateDto programOrderCreateDto) { - //验证用户和购票人信息正确性 - //先从缓存中查询 List ticketUserVoList = redisCache.getValueIsList(RedisKeyBuild.createRedisKey( RedisKeyManage.TICKET_USER_LIST, programOrderCreateDto.getUserId()), TicketUserVo.class); if (CollectionUtil.isEmpty(ticketUserVoList)) { @@ -59,7 +57,6 @@ public class UserExistCheckHandler extends AbstractProgramCheckHandler { } Map ticketUserVoMap = ticketUserVoList.stream() .collect(Collectors.toMap(TicketUserVo::getId, ticketUserVo -> ticketUserVo, (v1, v2) -> v2)); - for (Long ticketUserId : programOrderCreateDto.getTicketUserIdList()) { if (Objects.isNull(ticketUserVoMap.get(ticketUserId))) { throw new DaMaiFrameException(BaseCode.TICKET_USER_EMPTY); @@ -74,11 +71,11 @@ public class UserExistCheckHandler extends AbstractProgramCheckHandler { @Override public Integer executeTier() { - return 5; + return 2; } @Override public Integer executeOrder() { - return 1; + return 4; } } -- Gitee From fad35a529fca4fe8c014faa09f7498a02f7a0de4 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Tue, 12 Mar 2024 20:09:57 +0800 Subject: [PATCH 60/74] =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=B4=AD=E7=A5=A8?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/damai/service/ProgramOrderService.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java index 3cb813da..509fd9c7 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java @@ -89,9 +89,13 @@ public class ProgramOrderService { List purchaseSeatList = new ArrayList<>(); List seatDtoList = programOrderCreateDto.getSeatDtoList(); //该节目下所有未售卖的座位 - List seatVoList = redisCache.getAllForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_NO_SOLD_HASH, programOrderCreateDto.getProgramId()), SeatVo.class); + List seatVoList = + redisCache.getAllForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_NO_SOLD_HASH, + programOrderCreateDto.getProgramId()), SeatVo.class); //该节目下的余票数量 - Map ticketCategoryRemainNumber = redisCache.getAllMapForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_TICKET_REMAIN_NUMBER_HASH, programOrderCreateDto.getProgramId()), Long.class); + Map ticketCategoryRemainNumber = + redisCache.getAllMapForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_TICKET_REMAIN_NUMBER_HASH, + programOrderCreateDto.getProgramId()), Long.class); //入参座位存在 if (CollectionUtil.isNotEmpty(seatDtoList)) { //余票数量检测 @@ -100,7 +104,8 @@ public class ProgramOrderService { for (final Entry entry : seatTicketCategoryDtoCount.entrySet()) { Long ticketCategoryId = entry.getKey(); Long purchaseCount = entry.getValue(); - Long remainNumber = Optional.ofNullable(ticketCategoryRemainNumber.get(String.valueOf(ticketCategoryId))).orElseThrow(() -> new DaMaiFrameException(BaseCode.TICKET_CATEGORY_NOT_EXIST_V2)); + Long remainNumber = Optional.ofNullable(ticketCategoryRemainNumber.get(String.valueOf(ticketCategoryId))) + .orElseThrow(() -> new DaMaiFrameException(BaseCode.TICKET_CATEGORY_NOT_EXIST_V2)); if (purchaseCount > remainNumber) { throw new DaMaiFrameException(BaseCode.TICKET_REMAIN_NUMBER_NOT_SUFFICIENT); } @@ -134,7 +139,8 @@ public class ProgramOrderService { Long ticketCategoryId = programOrderCreateDto.getTicketCategoryId(); Integer ticketCount = programOrderCreateDto.getTicketCount(); //余票检测 - Long remainNumber = Optional.ofNullable(ticketCategoryRemainNumber.get(String.valueOf(ticketCategoryId))).orElseThrow(() -> new DaMaiFrameException(BaseCode.TICKET_CATEGORY_NOT_EXIST_V2)); + Long remainNumber = Optional.ofNullable(ticketCategoryRemainNumber.get(String.valueOf(ticketCategoryId))) + .orElseThrow(() -> new DaMaiFrameException(BaseCode.TICKET_CATEGORY_NOT_EXIST_V2)); if (ticketCount > remainNumber) { throw new DaMaiFrameException(BaseCode.TICKET_REMAIN_NUMBER_NOT_SUFFICIENT); } -- Gitee From 12399ae2f1b1514ba9d1cf9cd6e5912784a2019c Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Tue, 12 Mar 2024 23:03:39 +0800 Subject: [PATCH 61/74] =?UTF-8?q?=E8=8A=82=E7=9B=AE=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/damai/enums/BaseCode.java | 2 ++ .../damai/service/ProgramOrderService.java | 27 ++----------------- 2 files changed, 4 insertions(+), 25 deletions(-) diff --git a/damai-common/src/main/java/com/damai/enums/BaseCode.java b/damai-common/src/main/java/com/damai/enums/BaseCode.java index 7d65778b..ff8b2186 100644 --- a/damai-common/src/main/java/com/damai/enums/BaseCode.java +++ b/damai-common/src/main/java/com/damai/enums/BaseCode.java @@ -144,6 +144,8 @@ public enum BaseCode { SEAT_PRICE_EMPTY(40026,"座位价格为空"), + SEAT_IS_NOT_NOT_SOLD(40027,"座位不是未售卖"), + DELAY_QUEUE_CLIENT_NOT_EXIST(50001,"延迟队列客户端不存在"), DELAY_QUEUE_MESSAGE_NOT_EXIST(50002,"延迟队列消息不存在"), diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java index 509fd9c7..d327a3e8 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java @@ -77,31 +77,22 @@ public class ProgramOrderService { public String create(ProgramOrderCreateDto programOrderCreateDto) { - //进行业务验证 compositeContainer.execute(CompositeCheckType.PROGRAM_ORDER_CREATE_CHECK.getValue(),programOrderCreateDto); - //节目id Long programId = programOrderCreateDto.getProgramId(); - //传入的座位总价格 BigDecimal parameterOrderPrice = new BigDecimal("0"); - //库中的座位总价格 BigDecimal databaseOrderPrice = new BigDecimal("0"); - //要购买的座位 List purchaseSeatList = new ArrayList<>(); List seatDtoList = programOrderCreateDto.getSeatDtoList(); - //该节目下所有未售卖的座位 List seatVoList = redisCache.getAllForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_NO_SOLD_HASH, programOrderCreateDto.getProgramId()), SeatVo.class); - //该节目下的余票数量 Map ticketCategoryRemainNumber = redisCache.getAllMapForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_TICKET_REMAIN_NUMBER_HASH, programOrderCreateDto.getProgramId()), Long.class); - //入参座位存在 if (CollectionUtil.isNotEmpty(seatDtoList)) { - //余票数量检测 Map seatTicketCategoryDtoCount = seatDtoList.stream() .collect(Collectors.groupingBy(SeatDto::getTicketCategoryId, Collectors.counting())); - for (final Entry entry : seatTicketCategoryDtoCount.entrySet()) { + for (Entry entry : seatTicketCategoryDtoCount.entrySet()) { Long ticketCategoryId = entry.getKey(); Long purchaseCount = entry.getValue(); Long remainNumber = Optional.ofNullable(ticketCategoryRemainNumber.get(String.valueOf(ticketCategoryId))) @@ -110,35 +101,23 @@ public class ProgramOrderService { throw new DaMaiFrameException(BaseCode.TICKET_REMAIN_NUMBER_NOT_SUFFICIENT); } } - //循环入参的座位对象 for (SeatDto seatDto : seatDtoList) { - //验证入参的对象在库中的状态,不存在、已锁、已售卖 Map seatVoMap = seatVoList.stream().collect(Collectors .toMap(seat -> seat.getRowCode() + "-" + seat.getColCode(), seat -> seat, (v1, v2) -> v2)); SeatVo seatVo = seatVoMap.get(seatDto.getRowCode() + "-" + seatDto.getColCode()); if (Objects.isNull(seatVo)) { - throw new DaMaiFrameException(BaseCode.SEAT_NOT_EXIST); - } - if (Objects.equals(seatVo.getSellStatus(), SellStatus.LOCK.getCode())) { - throw new DaMaiFrameException(BaseCode.SEAT_LOCK); - } - if (Objects.equals(seatVo.getSellStatus(), SellStatus.SOLD.getCode())) { - throw new DaMaiFrameException(BaseCode.SEAT_SOLD); + throw new DaMaiFrameException(BaseCode.SEAT_IS_NOT_NOT_SOLD); } purchaseSeatList.add(seatVo); - //将入参的座位价格进行累加 parameterOrderPrice = parameterOrderPrice.add(seatDto.getPrice()); - //将库中的座位价格进行类型 databaseOrderPrice = databaseOrderPrice.add(seatVo.getPrice()); } if (parameterOrderPrice.compareTo(databaseOrderPrice) > 0) { throw new DaMaiFrameException(BaseCode.PRICE_ERROR); } }else { - //入参座位不存在,利用算法自动根据人数和票档进行分配相邻座位 Long ticketCategoryId = programOrderCreateDto.getTicketCategoryId(); Integer ticketCount = programOrderCreateDto.getTicketCount(); - //余票检测 Long remainNumber = Optional.ofNullable(ticketCategoryRemainNumber.get(String.valueOf(ticketCategoryId))) .orElseThrow(() -> new DaMaiFrameException(BaseCode.TICKET_CATEGORY_NOT_EXIST_V2)); if (ticketCount > remainNumber) { @@ -151,9 +130,7 @@ public class ProgramOrderService { throw new DaMaiFrameException(BaseCode.SEAT_OCCUPY); } } - //进行操作缓存中的数据 updateProgramCacheData(programId,purchaseSeatList,OrderStatus.NO_PAY); - //将筛选出来的购买的座位信息传入,执行创建订单的操作 return doCreate(programOrderCreateDto,purchaseSeatList); } -- Gitee From d6d4615f28e7b071ca7323fe84951974e7b7f52c Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Wed, 13 Mar 2024 19:13:28 +0800 Subject: [PATCH 62/74] =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=B4=AD=E7=A5=A8?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/damai/enums/BaseCode.java | 4 ++ .../core/RepeatExecuteLimitConstants.java | 2 + .../java/com/damai/client/UserClient.java | 3 +- .../com/damai/client/UserClientFallback.java | 5 ++- damai-server/damai-order-service/pom.xml | 5 +++ .../java/com/damai/service/OrderService.java | 40 +++++++------------ .../main/resources/lua/OrderProgramData.lua | 5 --- .../damai/service/ProgramOrderService.java | 39 +++++------------- .../com/damai/service/ProgramService.java | 13 +++--- .../ProgramOrderCreateParamCheckHandler.java | 13 ++++++ .../composite/impl/UserExistCheckHandler.java | 8 ++-- .../com/damai/service/tool/SeatMatch.java | 6 +-- .../src/main/resources/lua/programData.lua | 11 ----- .../TableOrderComplexGeneArithmetic.java | 3 +- 14 files changed, 69 insertions(+), 88 deletions(-) diff --git a/damai-common/src/main/java/com/damai/enums/BaseCode.java b/damai-common/src/main/java/com/damai/enums/BaseCode.java index ff8b2186..d0cfe89b 100644 --- a/damai-common/src/main/java/com/damai/enums/BaseCode.java +++ b/damai-common/src/main/java/com/damai/enums/BaseCode.java @@ -196,6 +196,10 @@ public enum BaseCode { GET_USER_AND_TICKET_USER_ERROR(60019,"获取用户和购票人信息错误"), + TICKET_USER_ID_REPEAT(60020,"购票人id重复"), + + TICKET_USER_COUNT_UNEQUAL_SEAT_COUNT(60021,"购票人数量和要购买的座位数量不相等"), + ORDER_NUMBER_NOT_EXIST(70000,"order_number的值不存在"), USER_ID_NOT_EXIST(70001,"user_id的值不存在"), diff --git a/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/core/RepeatExecuteLimitConstants.java b/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/core/RepeatExecuteLimitConstants.java index 4b059c34..902ef3e2 100644 --- a/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/core/RepeatExecuteLimitConstants.java +++ b/damai-redisson-framework/damai-redisson-service-framework/damai-repeat-execute-limit-framework/src/main/java/com/damai/core/RepeatExecuteLimitConstants.java @@ -10,4 +10,6 @@ public class RepeatExecuteLimitConstants { public static final String CONSUMER_API_DATA_MESSAGE = "consumer_api_data_message"; public static final String CREATE_PROGRAM_ORDER = "create_program_order"; + + public final static String CANCEL_PROGRAM_ORDER = "cancel_program_order"; } diff --git a/damai-server-client/damai-user-client/src/main/java/com/damai/client/UserClient.java b/damai-server-client/damai-user-client/src/main/java/com/damai/client/UserClient.java index 9bc92e47..6bda1608 100644 --- a/damai-server-client/damai-user-client/src/main/java/com/damai/client/UserClient.java +++ b/damai-server-client/damai-user-client/src/main/java/com/damai/client/UserClient.java @@ -1,6 +1,7 @@ package com.damai.client; import com.damai.common.ApiResponse; +import com.damai.dto.TicketUserListDto; import com.damai.dto.UserGetAndTicketUserListDto; import com.damai.dto.UserIdDto; import com.damai.vo.TicketUserVo; @@ -38,7 +39,7 @@ public interface UserClient { * @return 结果 * */ @PostMapping(value = "/ticket/user/select") - ApiResponse> select(UserIdDto dto); + ApiResponse> select(TicketUserListDto dto); /** * 查询用户和购票人集合 diff --git a/damai-server-client/damai-user-client/src/main/java/com/damai/client/UserClientFallback.java b/damai-server-client/damai-user-client/src/main/java/com/damai/client/UserClientFallback.java index 011225fb..a70178f3 100644 --- a/damai-server-client/damai-user-client/src/main/java/com/damai/client/UserClientFallback.java +++ b/damai-server-client/damai-user-client/src/main/java/com/damai/client/UserClientFallback.java @@ -1,6 +1,7 @@ package com.damai.client; import com.damai.common.ApiResponse; +import com.damai.dto.TicketUserListDto; import com.damai.dto.UserGetAndTicketUserListDto; import com.damai.dto.UserIdDto; import com.damai.enums.BaseCode; @@ -25,12 +26,12 @@ public class UserClientFallback implements UserClient { } @Override - public ApiResponse> select(final UserIdDto userIdDto) { + public ApiResponse> select(final TicketUserListDto dto) { return ApiResponse.error(BaseCode.SYSTEM_ERROR); } @Override - public ApiResponse getUserAndTicketUserList(final UserGetAndTicketUserListDto userGetAndTicketUserListDto) { + public ApiResponse getUserAndTicketUserList(final UserGetAndTicketUserListDto dto) { return ApiResponse.error(BaseCode.SYSTEM_ERROR); } } diff --git a/damai-server/damai-order-service/pom.xml b/damai-server/damai-order-service/pom.xml index 62fd50fa..f39f3fc5 100644 --- a/damai-server/damai-order-service/pom.xml +++ b/damai-server/damai-order-service/pom.xml @@ -75,6 +75,11 @@ damai-service-lock-framework ${revision} + + com.example + damai-repeat-execute-limit-framework + ${revision} + com.example damai-service-delay-queue-framework diff --git a/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java b/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java index aff8549a..5a1774b8 100644 --- a/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java +++ b/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java @@ -39,6 +39,7 @@ import com.damai.mapper.OrderMapper; import com.damai.mapper.OrderTicketUserMapper; import com.damai.redis.RedisCache; import com.damai.redis.RedisKeyBuild; +import com.damai.repeatexecutelimit.annotion.RepeatExecuteLimit; import com.damai.service.delaysend.DelayOperateProgramDataSend; import com.damai.service.properties.OrderProperties; import com.damai.servicelock.annotion.ServiceLock; @@ -70,6 +71,7 @@ import java.util.stream.Collectors; import static com.damai.constant.Constant.ALIPAY_NOTIFY_SUCCESS_RESULT; import static com.damai.core.DistributedLockConstants.ORDER_CANCEL_LOCK; import static com.damai.core.DistributedLockConstants.ORDER_PAY_CHECK; +import static com.damai.core.RepeatExecuteLimitConstants.CANCEL_PROGRAM_ORDER; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 @@ -117,13 +119,14 @@ public class OrderService extends ServiceImpl { public String create(OrderCreateDto orderCreateDto) { LambdaQueryWrapper orderLambdaQueryWrapper = Wrappers.lambdaQuery(Order.class).eq(Order::getOrderNumber, orderCreateDto.getOrderNumber()); + //如果订单存在了,那么直接拒绝 Order oldOrder = orderMapper.selectOne(orderLambdaQueryWrapper); if (Objects.nonNull(oldOrder)) { throw new DaMaiFrameException(BaseCode.ORDER_EXIST); } Order order = new Order(); BeanUtil.copyProperties(orderCreateDto,order); - + //转化订单对象 List orderTicketUserList = new ArrayList<>(); for (OrderTicketUserCreateDto orderTicketUserCreateDto : orderCreateDto.getOrderTicketUserCreateDtoList()) { OrderTicketUser orderTicketUser = new OrderTicketUser(); @@ -131,7 +134,9 @@ public class OrderService extends ServiceImpl { orderTicketUser.setId(uidGenerator.getUid()); orderTicketUserList.add(orderTicketUser); } + //插入主订单 orderMapper.insert(order); + //插入购票人订单 orderTicketUserService.saveBatch(orderTicketUserList); return String.valueOf(order.getOrderNumber()); } @@ -139,8 +144,9 @@ public class OrderService extends ServiceImpl { /** * 订单取消,以订单编号加锁 * */ - @Transactional(rollbackFor = Exception.class) + @RepeatExecuteLimit(name = CANCEL_PROGRAM_ORDER,keys = {"#orderCancelDto.orderNumber"}) @ServiceLock(name = ORDER_CANCEL_LOCK,keys = {"#orderCancelDto.orderNumber"}) + @Transactional(rollbackFor = Exception.class) public boolean cancel(OrderCancelDto orderCancelDto){ updateOrderRelatedData(orderCancelDto.getOrderNumber(),OrderStatus.CANCEL); return true; @@ -257,12 +263,10 @@ public class OrderService extends ServiceImpl { if (!checkOrderStatus(order)) { return; } - //将订单更新为取消或者支付状态 Order updateOrder = new Order(); updateOrder.setId(order.getId()); updateOrder.setOrderStatus(orderStatus.getCode()); - //将购票人订单更新为取消或者支付状态 OrderTicketUser updateOrderTicketUser = new OrderTicketUser(); updateOrderTicketUser.setOrderStatus(orderStatus.getCode()); if (Objects.equals(orderStatus.getCode(), OrderStatus.PAY.getCode())) { @@ -272,10 +276,8 @@ public class OrderService extends ServiceImpl { updateOrder.setCancelOrderTime(DateUtils.now()); updateOrderTicketUser.setCancelOrderTime(DateUtils.now()); } - //更新订单 int updateOrderResult = orderMapper.updateById(updateOrder); - //更新购票人订单 LambdaUpdateWrapper orderTicketUserLambdaUpdateWrapper = Wrappers.lambdaUpdate(OrderTicketUser.class).eq(OrderTicketUser::getOrderNumber, order.getOrderNumber()); int updateTicketUserOrderResult = @@ -283,7 +285,6 @@ public class OrderService extends ServiceImpl { if (updateOrderResult <= 0 || updateTicketUserOrderResult <= 0) { throw new DaMaiFrameException(BaseCode.ORDER_CANAL_ERROR); } - LambdaQueryWrapper orderTicketUserLambdaQueryWrapper = Wrappers.lambdaQuery(OrderTicketUser.class).eq(OrderTicketUser::getOrderNumber, order.getOrderNumber()); List orderTicketUserList = orderTicketUserMapper.selectList(orderTicketUserLambdaQueryWrapper); @@ -291,10 +292,8 @@ public class OrderService extends ServiceImpl { throw new DaMaiFrameException(BaseCode.TICKET_USER_ORDER_NOT_EXIST); } Long programId = order.getProgramId(); - //查询到购票人的座位 List seatIdList = orderTicketUserList.stream().map(OrderTicketUser::getSeatId).map(String::valueOf).collect(Collectors.toList()); - //更新缓存相关数据 updateProgramRelatedData(programId,seatIdList,orderStatus); } @@ -318,12 +317,12 @@ public class OrderService extends ServiceImpl { } public void updateProgramRelatedData(Long programId,List seatIdList,OrderStatus orderStatus){ - //从redis中查询锁定中的座位 - List seatVoList = redisCache.multiGetForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_LOCK_HASH, programId), seatIdList, SeatVo.class); + List seatVoList = + redisCache.multiGetForHash(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_LOCK_HASH, programId), + seatIdList, SeatVo.class); if (CollectionUtil.isEmpty(seatVoList)) { throw new DaMaiFrameException(BaseCode.LOCK_SEAT_LIST_EMPTY); } - //redis解除锁座位 List unLockSeatIdList = seatVoList.stream().map(SeatVo::getId).map(String::valueOf).collect(Collectors.toList()); Map unLockSeatVoMap = seatVoList.stream().collect(Collectors .toMap(seatVo -> String.valueOf(seatVo.getId()), seatVo -> seatVo, (v1, v2) -> v2)); @@ -339,20 +338,15 @@ public class OrderService extends ServiceImpl { }); List keys = new ArrayList<>(); - //操作类型 keys.add(String.valueOf(orderStatus.getCode())); - //锁定座位的key keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_LOCK_HASH, programId).getRelKey()); Object[] data = new String[3]; - //扣除锁定的座位数据 data[0] = JSON.toJSONString(unLockSeatIdList); - //如果是订单取消的操作,那么添加到未售卖的座位数据 - //如果是订单支付的操作,那么添加到已售卖的座位数据 data[1] = JSON.toJSONString(seatDataList); - //根据座位集合统计出对应的票档数量 - Map ticketCategoryCountMap = seatVoList.stream().collect(Collectors.groupingBy(SeatVo::getTicketCategoryId, Collectors.counting())); + Map ticketCategoryCountMap = + seatVoList.stream().collect(Collectors.groupingBy(SeatVo::getTicketCategoryId, Collectors.counting())); JSONArray jsonArray = new JSONArray(); ticketCategoryCountMap.forEach((k,v) -> { JSONObject jsonObject = new JSONObject(); @@ -362,19 +356,14 @@ public class OrderService extends ServiceImpl { }); if (Objects.equals(orderStatus.getCode(), OrderStatus.CANCEL.getCode())) { - //没有售卖座位的key keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_NO_SOLD_HASH, programId).getRelKey()); - //恢复库存的key keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_TICKET_REMAIN_NUMBER_HASH, programId).getRelKey()); - //恢复库存数据 data[2] = JSON.toJSONString(jsonArray); }else if (Objects.equals(orderStatus.getCode(), OrderStatus.PAY.getCode())) { - //已售卖座位的key keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_SOLD_HASH, programId).getRelKey()); } orderProgramCacheOperate.programCacheReverseOperate(keys,data); - //如果是支付成功了,发送延迟队列给program服务,将数据库中的票档的余票更新、座位状态更新 if (Objects.equals(orderStatus.getCode(), OrderStatus.PAY.getCode())) { ProgramOperateDataDto programOperateDataDto = new ProgramOperateDataDto(); programOperateDataDto.setProgramId(programId); @@ -396,7 +385,8 @@ public class OrderService extends ServiceImpl { orderListVos = BeanUtil.copyToList(orderList, OrderListVo.class); //每个订单下的购票人订单数量统计 List orderTicketUserAggregateList = - orderTicketUserMapper.selectOrderTicketUserAggregate(orderList.stream().map(Order::getOrderNumber).collect(Collectors.toList())); + orderTicketUserMapper.selectOrderTicketUserAggregate(orderList.stream().map(Order::getOrderNumber). + collect(Collectors.toList())); Map orderTicketUserAggregateMap = orderTicketUserAggregateList.stream() .collect(Collectors.toMap(OrderTicketUserAggregate::getOrderNumber, OrderTicketUserAggregate::getOrderTicketUserCount, (v1, v2) -> v2)); diff --git a/damai-server/damai-order-service/src/main/resources/lua/OrderProgramData.lua b/damai-server/damai-order-service/src/main/resources/lua/OrderProgramData.lua index 1acb170f..1b90ed60 100644 --- a/damai-server/damai-order-service/src/main/resources/lua/OrderProgramData.lua +++ b/damai-server/damai-order-service/src/main/resources/lua/OrderProgramData.lua @@ -3,16 +3,11 @@ local program_seat_lock_hash_key = KEYS[2] local program_seat_hash_key = KEYS[3] local un_lock_seat_id_list = cjson.decode(ARGV[1]) local seat_data_list = cjson.decode(ARGV[2]) --- 将锁定的座位集合进行扣除 redis.call('HDEL',program_seat_lock_hash_key,unpack(un_lock_seat_id_list)) --- 如果是订单取消的操作,那么添加到未售卖的座位hash数据 --- 如果是订单支付的操作,那么添加到已售卖的座位hash数据 redis.call('HMSET',program_seat_hash_key,unpack(seat_data_list)) --- 如果是将订单取消 if (operate_order_status == 2) then local program_ticket_remain_number_hash_key = KEYS[4] local increase_data_list = cjson.decode(ARGV[3]) - -- 恢复库存 for index,increase_data in ipairs(increase_data_list) do local ticket_category_id = increase_data.ticketCategoryId local increase_count = increase_data.count diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java index d327a3e8..738bc84b 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java @@ -125,7 +125,6 @@ public class ProgramOrderService { } purchaseSeatList = SeatMatch.findAdjacentSeatVos(seatVoList.stream().filter(seatVo -> Objects.equals(seatVo.getTicketCategoryId(), ticketCategoryId)).collect(Collectors.toList()), ticketCount); - //如果匹配出来的座位数量小于要购买的数量,拒绝执行 if (purchaseSeatList.size() < ticketCount) { throw new DaMaiFrameException(BaseCode.SEAT_OCCUPY); } @@ -188,25 +187,21 @@ public class ProgramOrderService { private String doCreate(ProgramOrderCreateDto programOrderCreateDto,List purchaseSeatList){ Long programId = programOrderCreateDto.getProgramId(); - //获取要购买的节目信息 ProgramVo programVo = redisCache.get(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM, programId), ProgramVo.class); - //查询节目演出时间 ProgramShowTime programShowTime = redisCache.get(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SHOW_TIME ,programId),ProgramShowTime.class); - //主订单参数构建 OrderCreateDto orderCreateDto = new OrderCreateDto(); - //生成订单编号 orderCreateDto.setOrderNumber(uidGenerator.getOrderNumber(programOrderCreateDto.getUserId(),ORDER_TABLE_COUNT)); orderCreateDto.setProgramId(programOrderCreateDto.getProgramId()); orderCreateDto.setUserId(programOrderCreateDto.getUserId()); orderCreateDto.setProgramTitle(programVo.getTitle()); orderCreateDto.setProgramPlace(programVo.getPlace()); orderCreateDto.setProgramShowTime(programShowTime.getShowTime()); - BigDecimal databaseOrderPrice = purchaseSeatList.stream().map(SeatVo::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal databaseOrderPrice = + purchaseSeatList.stream().map(SeatVo::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add); orderCreateDto.setOrderPrice(databaseOrderPrice); orderCreateDto.setCreateOrderTime(DateUtils.now()); - //购票人订单构建 List ticketUserIdList = programOrderCreateDto.getTicketUserIdList(); List orderTicketUserCreateDtoList = new ArrayList<>(); for (int i = 0; i < ticketUserIdList.size(); i++) { @@ -216,7 +211,9 @@ public class ProgramOrderService { orderTicketUserCreateDto.setProgramId(programOrderCreateDto.getProgramId()); orderTicketUserCreateDto.setUserId(programOrderCreateDto.getUserId()); orderTicketUserCreateDto.setTicketUserId(ticketUserId); - SeatVo seatVo = Optional.ofNullable(purchaseSeatList.get(i)).orElseThrow(() -> new DaMaiFrameException(BaseCode.SEAT_NOT_EXIST)); + SeatVo seatVo = + Optional.ofNullable(purchaseSeatList.get(i)) + .orElseThrow(() -> new DaMaiFrameException(BaseCode.SEAT_NOT_EXIST)); orderTicketUserCreateDto.setSeatId(seatVo.getId()); orderTicketUserCreateDto.setSeatInfo(seatVo.getRowCode()+"排"+seatVo.getColCode()+"列"); orderTicketUserCreateDto.setOrderPrice(seatVo.getPrice()); @@ -231,13 +228,11 @@ public class ProgramOrderService { if (Objects.equals(createOrderResponse.getCode(), BaseCode.SUCCESS.getCode())) { orderNumber = createOrderResponse.getData(); }else { - //订单创建失败将操作缓存中的数据还原 updateProgramCacheData(programId,purchaseSeatList,OrderStatus.CANCEL); log.error("创建订单失败 需人工处理 orderCreateDto : {}",JSON.toJSONString(orderCreateDto)); throw new DaMaiFrameException(createOrderResponse); } - //延迟队列创建 DelayOrderCancelDto delayOrderCancelDto = new DelayOrderCancelDto(); delayOrderCancelDto.setOrderNumber(orderCreateDto.getOrderNumber()); delayOrderCancelSend.sendMessage(JSON.toJSONString(delayOrderCancelDto)); @@ -245,14 +240,12 @@ public class ProgramOrderService { return orderNumber; } - private void updateProgramCacheData(long programId,List seatVoList,OrderStatus orderStatus){ + private void updateProgramCacheData(Long programId,List seatVoList,OrderStatus orderStatus){ if (!(Objects.equals(orderStatus.getCode(), OrderStatus.NO_PAY.getCode()) || Objects.equals(orderStatus.getCode(), OrderStatus.CANCEL.getCode()))) { throw new DaMaiFrameException(BaseCode.OPERATE_ORDER_STATUS_NOT_PERMIT); } - //座位id集合 List seatIdList = seatVoList.stream().map(SeatVo::getId).map(String::valueOf).collect(Collectors.toList()); - //座位map Map seatVoMap = seatVoList.stream().collect(Collectors .toMap(seatVo -> String.valueOf(seatVo.getId()), seatVo -> seatVo, (v1, v2) -> v2)); List seatDataList = new ArrayList<>(); @@ -266,13 +259,11 @@ public class ProgramOrderService { seatDataList.add(JSON.toJSONString(v)); }); List keys = new ArrayList<>(); - //票档数量的key keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_TICKET_REMAIN_NUMBER_HASH, programId).getRelKey()); String[] data = new String[3]; - //根据座位集合统计出对应的票档数量 - Map ticketCategoryCountMap = seatVoList.stream().collect(Collectors.groupingBy(SeatVo::getTicketCategoryId, Collectors.counting())); - //要扣除或者恢复的票档数量 + Map ticketCategoryCountMap = + seatVoList.stream().collect(Collectors.groupingBy(SeatVo::getTicketCategoryId, Collectors.counting())); JSONArray jsonArray = new JSONArray(); ticketCategoryCountMap.forEach((k,v) -> { JSONObject jsonObject = new JSONObject(); @@ -282,30 +273,20 @@ public class ProgramOrderService { } else if (Objects.equals(orderStatus.getCode(), OrderStatus.CANCEL.getCode())) { jsonObject.put("count",v); } - jsonArray.add(jsonObject); }); - //票档数量数据 - data[0] = JSON.toJSONString(jsonArray); - //如果是订单创建,那么就扣除未售卖的座位id - //如果是订单取消,那么就扣除锁定的座位id + data[0] = JSON.toJSONString(jsonArray); data[1] = JSON.toJSONString(seatIdList); - //如果是订单创建的操作,那么添加到锁定的座位数据 - //如果是订单订单的操作,那么添加到未售卖的座位数据 data[2] = JSON.toJSONString(seatDataList); + if (Objects.equals(orderStatus.getCode(), OrderStatus.NO_PAY.getCode())) { - //没有售卖座位的key keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_NO_SOLD_HASH, programId).getRelKey()); - //锁定座位的key keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_LOCK_HASH, programId).getRelKey()); } else if (Objects.equals(orderStatus.getCode(), OrderStatus.CANCEL.getCode())) { - //锁定座位的key keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_LOCK_HASH, programId).getRelKey()); - //没有售卖座位的key keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_NO_SOLD_HASH, programId).getRelKey()); } - programCacheOperate.programCacheOperate(keys,data); } } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java index 55339c26..89193d4c 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java @@ -22,11 +22,11 @@ import com.damai.dto.ProgramListDto; import com.damai.dto.ProgramOperateDataDto; import com.damai.dto.ProgramPageListDto; import com.damai.dto.ProgramSearchDto; -import com.damai.dto.UserIdDto; +import com.damai.dto.TicketUserListDto; import com.damai.entity.Program; import com.damai.entity.ProgramCategory; -import com.damai.entity.ProgramShowTime; import com.damai.entity.ProgramJoinShowTime; +import com.damai.entity.ProgramShowTime; import com.damai.entity.Seat; import com.damai.entity.TicketCategoryAggregate; import com.damai.enums.BaseCode; @@ -426,16 +426,17 @@ public class ProgramService extends ServiceImpl { } BusinessThreadPool.execute(() -> { try { - Boolean userLogin = redisCache.hasKey(RedisKeyBuild.createRedisKey(RedisKeyManage.USER_LOGIN, code, userId)); + Boolean userLogin = + redisCache.hasKey(RedisKeyBuild.createRedisKey(RedisKeyManage.USER_LOGIN, code, userId)); if (!userLogin) { return; } if (redisCache.hasKey(RedisKeyBuild.createRedisKey(RedisKeyManage.TICKET_USER_LIST,userId))) { return; } - UserIdDto userIdDto = new UserIdDto(); - userIdDto.setId(Long.parseLong(userId)); - ApiResponse> apiResponse = userClient.select(userIdDto); + TicketUserListDto ticketUserListDto = new TicketUserListDto(); + ticketUserListDto.setUserId(Long.parseLong(userId)); + ApiResponse> apiResponse = userClient.select(ticketUserListDto); if (Objects.equals(apiResponse.getCode(), BaseCode.SUCCESS.getCode())) { Optional.ofNullable(apiResponse.getData()).filter(CollectionUtil::isNotEmpty) .ifPresent(ticketUserVoList -> redisCache.set(RedisKeyBuild.createRedisKey( diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramOrderCreateParamCheckHandler.java b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramOrderCreateParamCheckHandler.java index 094bec8e..0bff57ab 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramOrderCreateParamCheckHandler.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramOrderCreateParamCheckHandler.java @@ -9,7 +9,9 @@ import com.damai.service.composite.AbstractProgramCheckHandler; import org.springframework.stereotype.Component; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.stream.Collectors; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 @@ -21,7 +23,18 @@ public class ProgramOrderCreateParamCheckHandler extends AbstractProgramCheckHan @Override protected void execute(final ProgramOrderCreateDto programOrderCreateDto) { List seatDtoList = programOrderCreateDto.getSeatDtoList(); + List ticketUserIdList = programOrderCreateDto.getTicketUserIdList(); + Map> ticketUserIdMap = + ticketUserIdList.stream().collect(Collectors.groupingBy(ticketUserId -> ticketUserId)); + for (List value : ticketUserIdMap.values()) { + if (value.size() > 1) { + throw new DaMaiFrameException(BaseCode.TICKET_USER_ID_REPEAT); + } + } if (CollectionUtil.isNotEmpty(seatDtoList)) { + if (seatDtoList.size() != programOrderCreateDto.getTicketUserIdList().size()) { + throw new DaMaiFrameException(BaseCode.TICKET_USER_COUNT_UNEQUAL_SEAT_COUNT); + } for (SeatDto seatDto : seatDtoList) { if (Objects.isNull(seatDto.getId())) { throw new DaMaiFrameException(BaseCode.SEAT_ID_EMPTY); diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/UserExistCheckHandler.java b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/UserExistCheckHandler.java index 63c7a613..b51c9728 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/UserExistCheckHandler.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/UserExistCheckHandler.java @@ -6,7 +6,7 @@ import com.damai.client.UserClient; import com.damai.common.ApiResponse; import com.damai.core.RedisKeyManage; import com.damai.dto.ProgramOrderCreateDto; -import com.damai.dto.UserIdDto; +import com.damai.dto.TicketUserListDto; import com.damai.enums.BaseCode; import com.damai.exception.DaMaiFrameException; import com.damai.redis.RedisCache; @@ -42,9 +42,9 @@ public class UserExistCheckHandler extends AbstractProgramCheckHandler { List ticketUserVoList = redisCache.getValueIsList(RedisKeyBuild.createRedisKey( RedisKeyManage.TICKET_USER_LIST, programOrderCreateDto.getUserId()), TicketUserVo.class); if (CollectionUtil.isEmpty(ticketUserVoList)) { - UserIdDto userIdDto = new UserIdDto(); - userIdDto.setId(programOrderCreateDto.getProgramId()); - ApiResponse> apiResponse = userClient.select(userIdDto); + TicketUserListDto ticketUserListDto = new TicketUserListDto(); + ticketUserListDto.setUserId(programOrderCreateDto.getUserId()); + ApiResponse> apiResponse = userClient.select(ticketUserListDto); if (Objects.equals(apiResponse.getCode(), BaseCode.SUCCESS.getCode())) { ticketUserVoList = apiResponse.getData(); }else { diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/tool/SeatMatch.java b/damai-server/damai-program-service/src/main/java/com/damai/service/tool/SeatMatch.java index d208641d..c4fd6813 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/tool/SeatMatch.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/tool/SeatMatch.java @@ -15,7 +15,6 @@ public class SeatMatch { public static List findAdjacentSeatVos(List allSeats, int seatCount) { List adjacentSeats = new ArrayList<>(); - // 对可用座位排序 allSeats.sort((s1, s2) -> { if (Objects.equals(s1.getRowCode(), s2.getRowCode())) { return s1.getColCode() - s2.getColCode(); @@ -24,14 +23,14 @@ public class SeatMatch { } }); - // 寻找相邻座位 for (int i = 0; i < allSeats.size() - seatCount + 1; i++) { boolean seatsFound = true; for (int j = 0; j < seatCount - 1; j++) { SeatVo current = allSeats.get(i + j); SeatVo next = allSeats.get(i + j + 1); - if (!(Objects.equals(current.getRowCode(), next.getRowCode()) && next.getColCode() - current.getColCode() == 1)) { + if (!(Objects.equals(current.getRowCode(), next.getRowCode()) && + next.getColCode() - current.getColCode() == 1)) { seatsFound = false; break; } @@ -43,7 +42,6 @@ public class SeatMatch { return adjacentSeats; } } - // 如果没有找到,返回空列表 return adjacentSeats; } } diff --git a/damai-server/damai-program-service/src/main/resources/lua/programData.lua b/damai-server/damai-program-service/src/main/resources/lua/programData.lua index 11423726..53794a67 100644 --- a/damai-server/damai-program-service/src/main/resources/lua/programData.lua +++ b/damai-server/damai-program-service/src/main/resources/lua/programData.lua @@ -1,25 +1,14 @@ --- 票档数量的key local program_ticket_remain_number_hash_key = KEYS[1] local seat_hash_key_del = KEYS[2] local seat_hash_key_add = KEYS[3] --- 票档数量数据 local ticket_category_list = cjson.decode(ARGV[1]) --- 如果是订单创建,那么就扣除未售卖的座位id --- 如果是订单取消,那么就扣除锁定的座位id local seat_id_list = cjson.decode(ARGV[2]) --- 如果是订单创建的操作,那么添加到锁定的座位数据 --- 如果是订单订单的操作,那么添加到未售卖的座位数据 local seat_data_list = cjson.decode(ARGV[3]) - --- 如果是订单创建,则扣票档数量 --- 如果是订单取消,则恢复票档数量 for index,increase_data in ipairs(ticket_category_list) do local ticket_category_id = increase_data.ticketCategoryId local increase_count = increase_data.count redis.call('HINCRBY',program_ticket_remain_number_hash_key,ticket_category_id,increase_count) end --- 如果是订单创建,将没有售卖的座位删除,再将座位数据添加到锁定的座位中 --- 如果是订单取消,将锁定的座位删除,再将座位数据添加到没有售卖的座位中 redis.call('HDEL',seat_hash_key_del,unpack(seat_id_list)) redis.call('HMSET',seat_hash_key_add,unpack(seat_data_list)) diff --git a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/TableOrderComplexGeneArithmetic.java b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/TableOrderComplexGeneArithmetic.java index d09e798f..4291dee2 100644 --- a/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/TableOrderComplexGeneArithmetic.java +++ b/damai-spring-cloud-framework/damai-service-common/src/main/java/com/damai/shardingsphere/TableOrderComplexGeneArithmetic.java @@ -34,7 +34,7 @@ public class TableOrderComplexGeneArithmetic implements ComplexKeysShardingAlgor String logicTableName = complexKeysShardingValue.getLogicTableName(); Map> columnNameAndShardingValuesMap = complexKeysShardingValue.getColumnNameAndShardingValuesMap(); if (CollectionUtil.isEmpty(columnNameAndShardingValuesMap)) { - return actualTableNames; + return allActualSplitTableNames; } Collection orderNumberValues = columnNameAndShardingValuesMap.get("order_number"); Collection userIdValues = columnNameAndShardingValuesMap.get("user_id"); @@ -47,6 +47,7 @@ public class TableOrderComplexGeneArithmetic implements ComplexKeysShardingAlgor } if (Objects.nonNull(value)) { actualTableNames.add(logicTableName + "_" + value % shardingCount); + return actualTableNames; } return allActualSplitTableNames; } -- Gitee From c6f3f081eb72be2c9c0ecce2de7a27d51cf24831 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Thu, 14 Mar 2024 18:05:11 +0800 Subject: [PATCH 63/74] =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=B4=AD=E7=A5=A8?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ProgramOrderController.java | 2 +- .../java/com/damai/lock/ProgramOrderLock.java | 43 +++++---------- .../damai/service/ProgramOrderService.java | 19 +------ .../resources/lua/programDataCreateOrder.lua | 55 +------------------ 4 files changed, 20 insertions(+), 99 deletions(-) diff --git a/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramOrderController.java b/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramOrderController.java index 156c7951..b7e6ccc9 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramOrderController.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramOrderController.java @@ -38,7 +38,7 @@ public class ProgramOrderController { return ApiResponse.ok(programOrderLock.createV2(programOrderCreateDto)); } - @ApiOperation(value = "购票V2") + @ApiOperation(value = "购票V3") @PostMapping(value = "/create/v3") public ApiResponse createV3(@Valid @RequestBody ProgramOrderCreateDto programOrderCreateDto) { return ApiResponse.ok(programOrderLock.createV3(programOrderCreateDto)); diff --git a/damai-server/damai-program-service/src/main/java/com/damai/lock/ProgramOrderLock.java b/damai-server/damai-program-service/src/main/java/com/damai/lock/ProgramOrderLock.java index fddfc5f4..4327fe1a 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/lock/ProgramOrderLock.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/lock/ProgramOrderLock.java @@ -5,6 +5,8 @@ import cn.hutool.core.util.StrUtil; import com.damai.core.RepeatExecuteLimitConstants; import com.damai.dto.ProgramOrderCreateDto; import com.damai.dto.SeatDto; +import com.damai.enums.CompositeCheckType; +import com.damai.initialize.impl.composite.CompositeContainer; import com.damai.locallock.LocalLockCache; import com.damai.repeatexecutelimit.annotion.RepeatExecuteLimit; import com.damai.service.ProgramOrderService; @@ -42,51 +44,43 @@ public class ProgramOrderLock { @Autowired private ServiceLockTool serviceLockTool; - /** - * 订单创建,使用节目id作为锁 - * */ + @Autowired + private CompositeContainer compositeContainer; + @RepeatExecuteLimit( name = RepeatExecuteLimitConstants.CREATE_PROGRAM_ORDER, keys = {"#programOrderCreateDto.userId","#programOrderCreateDto.programId"}) @ServiceLock(name = PROGRAM_ORDER_CREATE_V1,keys = {"#programOrderCreateDto.programId"}) public String createV1(ProgramOrderCreateDto programOrderCreateDto) { + compositeContainer.execute(CompositeCheckType.PROGRAM_ORDER_CREATE_CHECK.getValue(),programOrderCreateDto); return programOrderService.create(programOrderCreateDto); } - /** - * 订单优化版本v2,先用本地锁将没有获得锁的请求拦在外,获得本地锁后,再去获得分布式锁,这样可以减少对redis的压力。 - * - */ @RepeatExecuteLimit( name = RepeatExecuteLimitConstants.CREATE_PROGRAM_ORDER, keys = {"#programOrderCreateDto.userId","#programOrderCreateDto.programId"}) public String createV2(ProgramOrderCreateDto programOrderCreateDto) { + compositeContainer.execute(CompositeCheckType.PROGRAM_ORDER_CREATE_CHECK.getValue(),programOrderCreateDto); List seatDtoList = programOrderCreateDto.getSeatDtoList(); List ticketCategoryIdList = new ArrayList<>(); - //根据入参座位或者票档id统计出要锁定的票档id if (CollectionUtil.isNotEmpty(seatDtoList)) { - ticketCategoryIdList = seatDtoList.stream().map(SeatDto::getTicketCategoryId).distinct().collect(Collectors.toList()); + ticketCategoryIdList = + seatDtoList.stream().map(SeatDto::getTicketCategoryId).distinct().collect(Collectors.toList()); }else { ticketCategoryIdList.add(programOrderCreateDto.getTicketCategoryId()); } - //本地锁集合 List localLockList = new ArrayList<>(ticketCategoryIdList.size()); - //分布式锁集合 - List localLockSuccessList = new ArrayList<>(ticketCategoryIdList.size()); - //加锁成功的本地锁集合 List serviceLockList = new ArrayList<>(ticketCategoryIdList.size()); - //加锁成功的分布式锁集合 + List localLockSuccessList = new ArrayList<>(ticketCategoryIdList.size()); List serviceLockSuccessList = new ArrayList<>(ticketCategoryIdList.size()); - //根据统计出的票档id获得本地锁和分布式锁集合 for (Long ticketCategoryId : ticketCategoryIdList) { - //锁的key为d_program_order_create_v2_lock-programId-ticketCategoryId - String lockKey = StrUtil.join("-",PROGRAM_ORDER_CREATE_V2,programOrderCreateDto.getProgramId(),ticketCategoryId); - ReentrantLock localLock = localLockCache.getLock(lockKey,true); - RLock serviceLock = serviceLockTool.getLock(LockType.Fair, lockKey); + String lockKey = StrUtil.join("-",PROGRAM_ORDER_CREATE_V2, + programOrderCreateDto.getProgramId(),ticketCategoryId); + ReentrantLock localLock = localLockCache.getLock(lockKey,false); + RLock serviceLock = serviceLockTool.getLock(LockType.Reentrant, lockKey); localLockList.add(localLock); serviceLockList.add(serviceLock); } - //循环本地锁进行加锁 for (ReentrantLock reentrantLock : localLockList) { try { reentrantLock.lock(); @@ -95,7 +89,6 @@ public class ProgramOrderLock { } localLockSuccessList.add(reentrantLock); } - //循环分布式锁进行加锁 for (RLock rLock : serviceLockList) { try { rLock.lock(); @@ -105,10 +98,8 @@ public class ProgramOrderLock { serviceLockSuccessList.add(rLock); } try { - //进行订单创建 return programOrderService.create(programOrderCreateDto); }finally { - //先循环解锁分布式锁 for (int i = serviceLockSuccessList.size() - 1; i >= 0; i--) { RLock rLock = serviceLockSuccessList.get(i); try { @@ -117,7 +108,6 @@ public class ProgramOrderLock { log.error("service lock unlock error",t); } } - //再循环解锁本地锁 for (int i = localLockSuccessList.size() - 1; i >= 0; i--) { ReentrantLock reentrantLock = localLockSuccessList.get(i); try { @@ -129,14 +119,11 @@ public class ProgramOrderLock { } } - /** - * 订单创建,进行优化,一开始直接利用lua执行判断要购买的座位和票的数量是足够,不足够直接返回,足够的话进行相应扣除, - * 这样既能将大量无用的抢购请求直接返回掉,又可以实现无锁化 - * */ @RepeatExecuteLimit( name = RepeatExecuteLimitConstants.CREATE_PROGRAM_ORDER, keys = {"#programOrderCreateDto.userId","#programOrderCreateDto.programId"}) public String createV3(ProgramOrderCreateDto programOrderCreateDto) { + compositeContainer.execute(CompositeCheckType.PROGRAM_ORDER_CREATE_CHECK.getValue(),programOrderCreateDto); return programOrderService.createNew(programOrderCreateDto); } } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java index 738bc84b..d2566673 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramOrderService.java @@ -15,11 +15,9 @@ import com.damai.dto.ProgramOrderCreateDto; import com.damai.dto.SeatDto; import com.damai.entity.ProgramShowTime; import com.damai.enums.BaseCode; -import com.damai.enums.CompositeCheckType; import com.damai.enums.OrderStatus; import com.damai.enums.SellStatus; import com.damai.exception.DaMaiFrameException; -import com.damai.initialize.impl.composite.CompositeContainer; import com.damai.redis.RedisCache; import com.damai.redis.RedisKeyBuild; import com.damai.service.delaysend.DelayOrderCancelSend; @@ -69,15 +67,11 @@ public class ProgramOrderService { @Autowired private ProgramCacheCreateOrderOperate programCacheCreateOrderOperate; - @Autowired - private CompositeContainer compositeContainer; - @Autowired private DelayOrderCancelSend delayOrderCancelSend; public String create(ProgramOrderCreateDto programOrderCreateDto) { - compositeContainer.execute(CompositeCheckType.PROGRAM_ORDER_CREATE_CHECK.getValue(),programOrderCreateDto); Long programId = programOrderCreateDto.getProgramId(); BigDecimal parameterOrderPrice = new BigDecimal("0"); BigDecimal databaseOrderPrice = new BigDecimal("0"); @@ -135,26 +129,19 @@ public class ProgramOrderService { public String createNew(ProgramOrderCreateDto programOrderCreateDto) { - compositeContainer.execute(CompositeCheckType.PROGRAM_ORDER_CREATE_CHECK.getValue(),programOrderCreateDto); - //节目id Long programId = programOrderCreateDto.getProgramId(); List seatDtoList = programOrderCreateDto.getSeatDtoList(); List keys = new ArrayList<>(); - //票档数量的key keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_TICKET_REMAIN_NUMBER_HASH, programId).getRelKey()); - //没有售卖的座位key keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_NO_SOLD_HASH, programId).getRelKey()); - //锁定的座位key keys.add(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_LOCK_HASH, programId).getRelKey()); String[] data = new String[2]; - //入参座位存在 JSONArray jsonArray = new JSONArray(); if (CollectionUtil.isNotEmpty(seatDtoList)) { keys.add("1"); Map seatTicketCategoryDtoCount = seatDtoList.stream() .collect(Collectors.groupingBy(SeatDto::getTicketCategoryId, Collectors.counting())); - //将入参的座位集合统计出票档id和票档数量 - for (final Entry entry : seatTicketCategoryDtoCount.entrySet()) { + for (Entry entry : seatTicketCategoryDtoCount.entrySet()) { Long ticketCategoryId = entry.getKey(); Long ticketCount = entry.getValue(); JSONObject jsonObject = new JSONObject(); @@ -163,9 +150,7 @@ public class ProgramOrderService { jsonArray.add(jsonObject); } }else { - //入参座位不存在 keys.add("2"); - //如果不选择座位,则直接传入票档id和票档数量 Long ticketCategoryId = programOrderCreateDto.getTicketCategoryId(); Integer ticketCount = programOrderCreateDto.getTicketCount(); JSONObject jsonObject = new JSONObject(); @@ -175,13 +160,11 @@ public class ProgramOrderService { } data[0] = JSON.toJSONString(jsonArray); data[1] = JSON.toJSONString(seatDtoList); - //升级后的lua脚本处理票档数量和座位状态的检验,以及扣减票档数量的操作 ProgramCacheCreateOrderData programCacheCreateOrderData = programCacheCreateOrderOperate.programCacheOperate(keys, data); if (!Objects.equals(programCacheCreateOrderData.getCode(), BaseCode.SUCCESS.getCode())) { throw new DaMaiFrameException(Objects.requireNonNull(BaseCode.getRc(programCacheCreateOrderData.getCode()))); } List purchaseSeatList = programCacheCreateOrderData.getPurchaseSeatList(); - //将筛选出来的购买的座位信息传入,执行创建订单的操作 return doCreate(programOrderCreateDto,purchaseSeatList); } diff --git a/damai-server/damai-program-service/src/main/resources/lua/programDataCreateOrder.lua b/damai-server/damai-program-service/src/main/resources/lua/programDataCreateOrder.lua index 5f7c911c..d23c0c67 100644 --- a/damai-server/damai-program-service/src/main/resources/lua/programDataCreateOrder.lua +++ b/damai-server/damai-program-service/src/main/resources/lua/programDataCreateOrder.lua @@ -1,24 +1,13 @@ --- 票档数量的key local ticket_remain_number_hash_key = KEYS[1] --- 没有售卖的座位key local seat_no_sold_hash_key = KEYS[2] --- 锁定的座位key local seat_lock_hash_key = KEYS[3] --- 类型 1 用户选座位 2自动匹配座位 local type = tonumber(KEYS[4]) --- 要购买的票档 包括票档id和票档数量 -local ticket_count_list = cjson.decode(ARGV[1]) --- 过滤后符合条件可以购买的座位集合 +local ticket_count_list = cjson.decode(ARGV[1]) local purchase_seat_list = {} --- 入参座位价格总和 local total_seat_dto_price = 0 --- 缓存座位价格总和 local total_seat_vo_price = 0 --- 匹配座位算法 local function find_adjacent_seats(all_seats, seat_count) local adjacent_seats = {} - - -- 对可用座位排序 table.sort(all_seats, function(s1, s2) if s1.rowCode == s2.rowCode then return s1.colCode < s2.colCode @@ -26,8 +15,7 @@ local function find_adjacent_seats(all_seats, seat_count) return s1.rowCode < s2.rowCode end end) - - -- 寻找相邻座位 + for i = 1, #all_seats - seat_count + 1 do local seats_found = true for j = 0, seat_count - 2 do @@ -46,99 +34,71 @@ local function find_adjacent_seats(all_seats, seat_count) return adjacent_seats end end - -- 如果没有找到,返回空列表 return adjacent_seats end --- 入参座位存在 if (type == 1) then for index,ticket_count in ipairs(ticket_count_list) do - -- 入参座位的票档id local ticket_category_id = ticket_count.ticketCategoryId - -- 入参座位的票档数量 local count = ticket_count.ticketCount - -- 从缓存中获取相应票档数量 local remain_number_str = redis.call('hget', ticket_remain_number_hash_key, tostring(ticket_category_id)) - -- 如果为空直接返回 if (remain_number_str == nil) then return string.format('{"%s": %d}', 'code', 40010) end local remain_number = tonumber(remain_number_str) - -- 入参座位的票档数量大于缓存中获取相应票档数量,说明票档数量不足,直接返回 if (count > remain_number) then return string.format('{"%s": %d}', 'code', 40011) end end - -- 入参座位集合 local seat_dto_list = cjson.decode(ARGV[2]) for index,seat_dto in ipairs(seat_dto_list) do - -- 入参座位id local id = seat_dto.id - -- 入参座位价格 local seat_dto_price = seat_dto.price - -- 根据座位id从缓存中没有售卖的座位 local seat_vo_str = redis.call('hget', seat_no_sold_hash_key, tostring(id)) - -- 如果从缓存中为空,则直接返回 if (seat_vo_str == nil) then return string.format('{"%s": %d}', 'code', 40001) end local seat_vo = cjson.decode(seat_vo_str) - -- 如果从缓存查询的座位状态是锁定的,直接返回 if (seat_vo.sellStatus == 2) then return string.format('{"%s": %d}', 'code', 40002) end - -- 如果从缓存查询的座位状态是已经售卖的,直接返回 if (seat_vo.sellStatus == 3) then return string.format('{"%s": %d}', 'code', 40003) end table.insert(purchase_seat_list,seat_vo) - -- 入参座位价格累加 total_seat_dto_price = total_seat_dto_price + seat_dto_price - -- 缓存座位价格累加 total_seat_vo_price = total_seat_vo_price + seat_vo.price if (total_seat_dto_price > total_seat_vo_price) then return string.format('{"%s": %d}', 'code', 40008) end end end --- 入参座位不存在 if (type == 2) then - -- 这里的外层循环其实就一次 for index,ticket_count in ipairs(ticket_count_list) do - -- 入参选择的票档id local ticket_category_id = ticket_count.ticketCategoryId - -- 入参选择的票档数量 local count = ticket_count.ticketCount - -- 从缓存中获取相应票档数量 local remain_number_str = redis.call('hget', ticket_remain_number_hash_key, tostring(ticket_category_id)) - -- 如果为空直接返回 if (remain_number_str == nil) then return string.format('{"%s": %d}', 'code', 40010) end local remain_number = tonumber(remain_number_str) - -- 入参的票档数量大于缓存中获取相应票档数量,说明票档数量不足,直接返回 if (count > remain_number) then return string.format('{"%s": %d}', 'code', 40011) end - -- 获取没有售卖的座位集合 local seat_vo_no_sold_str_list = redis.call('hvals',seat_no_sold_hash_key) local filter_seat_vo_no_sold_list = {} - -- 这里遍历的原因,座位集合是以hash存储在缓存中,而每个座位是字符串,要把字符串转成对象 for index,seat_vo_no_sold_str in ipairs(seat_vo_no_sold_str_list) do local seat_vo_no_sold = cjson.decode(seat_vo_no_sold_str) - -- 根据入参选择的票档过滤出相应的没有售卖的座位 if (seat_vo_no_sold.ticketCategoryId == ticket_category_id) then table.insert(filter_seat_vo_no_sold_list,seat_vo_no_sold) end end - -- 利用算法自动根据人数和票档进行分配相邻座位 purchase_seat_list = find_adjacent_seats(filter_seat_vo_no_sold_list,count) if (#purchase_seat_list < count) then return string.format('{"%s": %d}', 'code', 40004) end end end --- 经过以上的验证,说明座位和票档数量是够用的,下面开始真正的锁定座位和扣除票档数量操作 local seat_id_list = {} local seat_data_list = {} for index,seat in ipairs(purchase_seat_list) do @@ -148,21 +108,12 @@ for index,seat in ipairs(purchase_seat_list) do seat.sellStatus = 2 table.insert(seat_data_list,cjson.encode(seat)) end --- 扣票档数量 for index,ticket_count in ipairs(ticket_count_list) do - -- 票档id local ticket_category_id = ticket_count.ticketCategoryId - -- 票档数量 local count = ticket_count.ticketCount redis.call('hincrby',ticket_remain_number_hash_key,ticket_category_id,"-" .. count) end --- 将没有售卖的座位删除 redis.call('hdel',seat_no_sold_hash_key,unpack(seat_id_list)) --- 再将座位数据添加到锁定的座位中 redis.call('hmset',seat_lock_hash_key,unpack(seat_data_list)) -return string.format('{"%s": %d, "%s": %s}', 'code', 0, 'purchaseSeatList', cjson.encode(purchase_seat_list)) - - - - +return string.format('{"%s": %d, "%s": %s}', 'code', 0, 'purchaseSeatList', cjson.encode(purchase_seat_list)) \ No newline at end of file -- Gitee From 74863aa750f72a536aacdd22185a899fb04e6876 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Thu, 14 Mar 2024 22:53:36 +0800 Subject: [PATCH 64/74] =?UTF-8?q?=E6=94=AF=E4=BB=98=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/damai/service/OrderService.java | 16 ++++++++++------ damai-server/damai-pay-service/pom.xml | 5 +++++ .../com/damai/pay/PayStrategyInitHandler.java | 15 ++++++++++----- .../damai/pay/alipay/AlipayStrategyHandler.java | 14 ++++++++++++++ 4 files changed, 39 insertions(+), 11 deletions(-) diff --git a/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java b/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java index 5a1774b8..dd7820de 100644 --- a/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java +++ b/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java @@ -172,7 +172,15 @@ public class OrderService extends ServiceImpl { if (orderPayDto.getPrice().compareTo(order.getOrderPrice()) != 0) { throw new DaMaiFrameException(BaseCode.PAY_PRICE_NOT_EQUAL_ORDER_PRICE); } - //调用支付服务进行支付 + PayDto payDto = getPayDto(orderPayDto, orderNumber); + ApiResponse payResponse = payClient.commonPay(payDto); + if (!Objects.equals(payResponse.getCode(), BaseCode.SUCCESS.getCode())) { + throw new DaMaiFrameException(payResponse); + } + return payResponse.getData(); + } + + private PayDto getPayDto(OrderPayDto orderPayDto, Long orderNumber) { PayDto payDto = new PayDto(); payDto.setOrderNumber(String.valueOf(orderNumber)); payDto.setPayBillType(orderPayDto.getPayBillType()); @@ -182,11 +190,7 @@ public class OrderService extends ServiceImpl { payDto.setPrice(orderPayDto.getPrice()); payDto.setNotifyUrl(orderProperties.getOrderPayNotifyUrl()); payDto.setReturnUrl(orderProperties.getOrderPayReturnUrl()); - ApiResponse payResponse = payClient.commonPay(payDto); - if (!Objects.equals(payResponse.getCode(), BaseCode.SUCCESS.getCode())) { - throw new DaMaiFrameException(payResponse); - } - return payResponse.getData(); + return payDto; } /** diff --git a/damai-server/damai-pay-service/pom.xml b/damai-server/damai-pay-service/pom.xml index f1a02f3c..551d1cfc 100644 --- a/damai-server/damai-pay-service/pom.xml +++ b/damai-server/damai-pay-service/pom.xml @@ -51,6 +51,11 @@ damai-service-component ${revision} + + com.example + damai-service-initialize + ${revision} + com.example damai-service-lock-framework diff --git a/damai-server/damai-pay-service/src/main/java/com/damai/pay/PayStrategyInitHandler.java b/damai-server/damai-pay-service/src/main/java/com/damai/pay/PayStrategyInitHandler.java index 4aded58e..99a0b994 100644 --- a/damai-server/damai-pay-service/src/main/java/com/damai/pay/PayStrategyInitHandler.java +++ b/damai-server/damai-pay-service/src/main/java/com/damai/pay/PayStrategyInitHandler.java @@ -1,8 +1,8 @@ package com.damai.pay; +import com.damai.initialize.base.AbstractApplicationInitializingBeanHandler; import lombok.AllArgsConstructor; -import org.springframework.boot.context.event.ApplicationStartedEvent; -import org.springframework.context.ApplicationListener; +import org.springframework.context.ConfigurableApplicationContext; import java.util.Map; import java.util.Map.Entry; @@ -13,13 +13,18 @@ import java.util.Map.Entry; * @author: 阿宽不是程序员 **/ @AllArgsConstructor -public class PayStrategyInitHandler implements ApplicationListener { +public class PayStrategyInitHandler extends AbstractApplicationInitializingBeanHandler { private final PayStrategyContext payStrategyContext; @Override - public void onApplicationEvent(ApplicationStartedEvent event) { - Map payStrategyHandlerMap = event.getApplicationContext().getBeansOfType(PayStrategyHandler.class); + public Integer executeOrder() { + return 1; + } + + @Override + public void executeInit(ConfigurableApplicationContext context) { + Map payStrategyHandlerMap = context.getBeansOfType(PayStrategyHandler.class); for (Entry entry : payStrategyHandlerMap.entrySet()) { PayStrategyHandler payStrategyHandler = entry.getValue(); payStrategyContext.put(payStrategyHandler.getChannel(),payStrategyHandler); diff --git a/damai-server/damai-pay-service/src/main/java/com/damai/pay/alipay/AlipayStrategyHandler.java b/damai-server/damai-pay-service/src/main/java/com/damai/pay/alipay/AlipayStrategyHandler.java index 34977cd0..f271b7e2 100644 --- a/damai-server/damai-pay-service/src/main/java/com/damai/pay/alipay/AlipayStrategyHandler.java +++ b/damai-server/damai-pay-service/src/main/java/com/damai/pay/alipay/AlipayStrategyHandler.java @@ -34,8 +34,14 @@ import java.util.Map; @AllArgsConstructor public class AlipayStrategyHandler implements PayStrategyHandler { + /** + * 支付宝的SDK + * */ private final AlipayClient alipayClient; + /** + * 支付宝相关配置 + * */ private final AlipayProperties aliPayProperties; @Override @@ -120,6 +126,7 @@ public class AlipayStrategyHandler implements PayStrategyHandler { TradeResult tradeResult = new TradeResult(); tradeResult.setSuccess(false); try { + //构建查询参数,将订单号放入,调用SDK查询 AlipayTradeQueryRequest request = new AlipayTradeQueryRequest(); JSONObject bizContent = new JSONObject(); bizContent.put("out_trade_no", outTradeNo); @@ -130,10 +137,14 @@ public class AlipayStrategyHandler implements PayStrategyHandler { JSONObject alipayTradeQueryResponse = jsonResponse.getJSONObject("alipay_trade_query_response"); String code = alipayTradeQueryResponse.getString("code"); String msg = alipayTradeQueryResponse.getString("msg"); + //如果调用成功 if (successCode.equals(code) && successMsg.equals(msg)) { tradeResult.setSuccess(true); + //订单编号 tradeResult.setOutTradeNo(alipayTradeQueryResponse.getString("out_trade_no")); + //支付金额 tradeResult.setTotalAmount(new BigDecimal(alipayTradeQueryResponse.getString("total_amount"))); + //账单状态,需将支付的状态转换为对应的支付服务中账单状态 tradeResult.setPayBillStatus(convertPayBillStatus(alipayTradeQueryResponse.getString("trade_status"))); return tradeResult; } @@ -149,6 +160,9 @@ public class AlipayStrategyHandler implements PayStrategyHandler { return PayChannel.ALIPAY.getValue(); } + /** + * 转换账单状态 + * */ private Integer convertPayBillStatus(String tradeStatus){ if (AlipayTradeStatus.WAIT_BUYER_PAY.getValue().equals(tradeStatus)) { return PayBillStatus.NO_PAY.getCode(); -- Gitee From 57cb1c89b3744c029d6190338d55a874a8344fd0 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Fri, 15 Mar 2024 15:09:41 +0800 Subject: [PATCH 65/74] =?UTF-8?q?=E6=94=AF=E4=BB=98=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/damai/service/OrderService.java | 12 ---------- .../pay/alipay/config/AlipayProperties.java | 24 +++++++++++++++++++ .../java/com/damai/service/PayService.java | 13 +++------- 3 files changed, 27 insertions(+), 22 deletions(-) diff --git a/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java b/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java index dd7820de..eb2cd840 100644 --- a/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java +++ b/damai-server/damai-order-service/src/main/java/com/damai/service/OrderService.java @@ -119,14 +119,12 @@ public class OrderService extends ServiceImpl { public String create(OrderCreateDto orderCreateDto) { LambdaQueryWrapper orderLambdaQueryWrapper = Wrappers.lambdaQuery(Order.class).eq(Order::getOrderNumber, orderCreateDto.getOrderNumber()); - //如果订单存在了,那么直接拒绝 Order oldOrder = orderMapper.selectOne(orderLambdaQueryWrapper); if (Objects.nonNull(oldOrder)) { throw new DaMaiFrameException(BaseCode.ORDER_EXIST); } Order order = new Order(); BeanUtil.copyProperties(orderCreateDto,order); - //转化订单对象 List orderTicketUserList = new ArrayList<>(); for (OrderTicketUserCreateDto orderTicketUserCreateDto : orderCreateDto.getOrderTicketUserCreateDtoList()) { OrderTicketUser orderTicketUser = new OrderTicketUser(); @@ -134,9 +132,7 @@ public class OrderService extends ServiceImpl { orderTicketUser.setId(uidGenerator.getUid()); orderTicketUserList.add(orderTicketUser); } - //插入主订单 orderMapper.insert(order); - //插入购票人订单 orderTicketUserService.saveBatch(orderTicketUserList); return String.valueOf(order.getOrderNumber()); } @@ -245,7 +241,6 @@ public class OrderService extends ServiceImpl { if (!Objects.equals(notifyResponse.getCode(), BaseCode.SUCCESS.getCode())) { throw new DaMaiFrameException(notifyResponse); } - //将订单状态更新 if (ALIPAY_NOTIFY_SUCCESS_RESULT.equals(notifyResponse.getData().getPayResult())) { orderService.updateOrderRelatedData(Long.parseLong(notifyResponse.getData().getOutTradeNo()),OrderStatus.PAY); } @@ -387,7 +382,6 @@ public class OrderService extends ServiceImpl { return orderListVos; } orderListVos = BeanUtil.copyToList(orderList, OrderListVo.class); - //每个订单下的购票人订单数量统计 List orderTicketUserAggregateList = orderTicketUserMapper.selectOrderTicketUserAggregate(orderList.stream().map(Order::getOrderNumber). collect(Collectors.toList())); @@ -401,14 +395,12 @@ public class OrderService extends ServiceImpl { } public OrderGetVo get(OrderGetDto orderGetDto) { - //查询订单 LambdaQueryWrapper orderLambdaQueryWrapper = Wrappers.lambdaQuery(Order.class).eq(Order::getOrderNumber, orderGetDto.getOrderNumber()); Order order = orderMapper.selectOne(orderLambdaQueryWrapper); if (Objects.isNull(order)) { throw new DaMaiFrameException(BaseCode.ORDER_NOT_EXIST); } - //查询购票人订单 LambdaQueryWrapper orderTicketUserLambdaQueryWrapper = Wrappers.lambdaQuery(OrderTicketUser.class).eq(OrderTicketUser::getOrderNumber, order.getOrderNumber()); List orderTicketUserList = orderTicketUserMapper.selectList(orderTicketUserLambdaQueryWrapper); @@ -418,10 +410,8 @@ public class OrderService extends ServiceImpl { OrderGetVo orderGetVo = new OrderGetVo(); BeanUtil.copyProperties(order,orderGetVo); - orderGetVo.setOrderTicketUserVoList(BeanUtil.copyToList(orderTicketUserList, OrderTicketUserVo.class)); - //查询用户和购票人信息 UserGetAndTicketUserListDto userGetAndTicketUserListDto = new UserGetAndTicketUserListDto(); userGetAndTicketUserListDto.setUserId(order.getUserId()); ApiResponse userGetAndTicketUserApiResponse = @@ -431,7 +421,6 @@ public class OrderService extends ServiceImpl { throw new DaMaiFrameException(userGetAndTicketUserApiResponse); } - //验证用户和购票人信息是否存在 UserGetAndTicketUserListVo userAndTicketUserListVo = Optional.ofNullable(userGetAndTicketUserApiResponse.getData()) .orElseThrow(() -> new DaMaiFrameException(BaseCode.RPC_RESULT_DATA_EMPTY)); @@ -447,7 +436,6 @@ public class OrderService extends ServiceImpl { for (OrderTicketUser orderTicketUser : orderTicketUserList) { filterTicketUserVoList.add(ticketUserVoMap.get(orderTicketUser.getTicketUserId())); } - UserInfoVo userInfoVo = new UserInfoVo(); BeanUtil.copyProperties(userAndTicketUserListVo.getUserVo(),userInfoVo); UserAndTicketUserInfoVo userAndTicketUserInfoVo = new UserAndTicketUserInfoVo(); diff --git a/damai-server/damai-pay-service/src/main/java/com/damai/pay/alipay/config/AlipayProperties.java b/damai-server/damai-pay-service/src/main/java/com/damai/pay/alipay/config/AlipayProperties.java index 77dcb7e3..990de753 100644 --- a/damai-server/damai-pay-service/src/main/java/com/damai/pay/alipay/config/AlipayProperties.java +++ b/damai-server/damai-pay-service/src/main/java/com/damai/pay/alipay/config/AlipayProperties.java @@ -14,19 +14,43 @@ public class AlipayProperties { public static final String PREFIX = "alipay"; + /** + * 应用ID + * */ private String appId; + /** + * 商户PID + * */ private String sellerId; + /** + * 支付宝网关 + * */ private String gatewayUrl; + /** + * 商户私钥,您的PKCS8格式RSA2私钥 + * */ private String merchantPrivateKey; + /** + * 支付宝公钥,查看地址: 对应APPID下的支付宝公钥 + * */ private String alipayPublicKey; + /** + * 接口内容加密秘钥,对称秘钥 + * */ private String contentKey; + /** + * 页面跳转同步通知页面路径 + * */ private String returnUrl; + /** + * 支付宝异步回调接口 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 + * */ private String notifyUrl; } diff --git a/damai-server/damai-pay-service/src/main/java/com/damai/service/PayService.java b/damai-server/damai-pay-service/src/main/java/com/damai/service/PayService.java index bacdc0b9..1147a958 100644 --- a/damai-server/damai-pay-service/src/main/java/com/damai/service/PayService.java +++ b/damai-server/damai-pay-service/src/main/java/com/damai/service/PayService.java @@ -89,18 +89,15 @@ public class PayService { @Transactional(rollbackFor = Exception.class) public NotifyVo notify(NotifyDto notifyDto){ NotifyVo notifyVo = new NotifyVo(); - log.info("回调通知参数 ===> {}", JSON.toJSONString(notifyDto)); Map params = notifyDto.getParams(); - //验签 + PayStrategyHandler payStrategyHandler = payStrategyContext.get(notifyDto.getChannel()); boolean signVerifyResult = payStrategyHandler.signVerify(params); if (!signVerifyResult) { notifyVo.setPayResult(ALIPAY_NOTIFY_FAILURE_RESULT); return notifyVo; } - //按照支付结果异步通知中的描述,对支付结果中的业务内容进行二次校验 - //1 商户需要验证该通知数据中的 out_trade_no 是否为商户系统中创建的订单号 LambdaQueryWrapper payBillLambdaQueryWrapper = Wrappers.lambdaQuery(PayBill.class).eq(PayBill::getOutOrderNo, params.get("out_trade_no")); PayBill payBill = payBillMapper.selectOne(payBillLambdaQueryWrapper); @@ -127,7 +124,6 @@ public class PayService { notifyVo.setPayResult(ALIPAY_NOTIFY_SUCCESS_RESULT); return notifyVo; } - boolean dataVerify = payStrategyHandler.dataVerify(notifyDto.getParams(), payBill); if (!dataVerify) { notifyVo.setPayResult(ALIPAY_NOTIFY_FAILURE_RESULT); @@ -135,10 +131,8 @@ public class PayService { } PayBill updatePayBill = new PayBill(); updatePayBill.setPayBillStatus(PayBillStatus.PAY.getCode()); - LambdaUpdateWrapper payBillLambdaUpdateWrapper = Wrappers.lambdaUpdate(PayBill.class).eq(PayBill::getOutOrderNo, params.get("out_trade_no")); - payBillMapper.update(updatePayBill,payBillLambdaUpdateWrapper); notifyVo.setOutTradeNo(payBill.getOutOrderNo()); notifyVo.setPayResult(ALIPAY_NOTIFY_SUCCESS_RESULT); @@ -166,17 +160,16 @@ public class PayService { return tradeCheckVo; } if (payBill.getPayAmount().compareTo(totalAmount) != 0) { - log.error("支付宝和库中账单支付金额不一致 支付宝支付金额 : {}, 库中账单支付金额 : {}, tradeCheckDto : {}", + log.error("支付渠道 和库中账单支付金额不一致 支付渠道支付金额 : {}, 库中账单支付金额 : {}, tradeCheckDto : {}", totalAmount,payBill.getPayAmount(),JSON.toJSONString(tradeCheckDto)); return tradeCheckVo; } if (!Objects.equals(payBill.getPayBillStatus(), payBillStatus)) { - log.info("支付宝和库中账单交易状态不一致 支付宝payBillStatus : {}, 库中payBillStatus : {}, tradeCheckDto : {}", + log.warn("支付渠道和库中账单交易状态不一致 支付渠道payBillStatus : {}, 库中payBillStatus : {}, tradeCheckDto : {}", payBillStatus,payBill.getPayBillStatus(),JSON.toJSONString(tradeCheckDto)); PayBill updatePayBill = new PayBill(); updatePayBill.setId(payBill.getId()); updatePayBill.setPayBillStatus(payBillStatus); - LambdaUpdateWrapper payBillLambdaUpdateWrapper = Wrappers.lambdaUpdate(PayBill.class).eq(PayBill::getOutOrderNo, outTradeNo); payBillMapper.update(updatePayBill,payBillLambdaUpdateWrapper); -- Gitee From c435733cedac1b64b72b7b99fcf6d417e7d219ea Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Fri, 15 Mar 2024 19:00:38 +0800 Subject: [PATCH 66/74] =?UTF-8?q?=E6=94=AF=E4=BB=98=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/damai/util/Test.java | 13 ++++ .../com/damai/dto/ProgramResetExecuteDto.java | 21 +++++++ .../src/main/resources/bootstrap.yml | 2 +- .../damai/service/constant/OrderConstant.java | 2 +- .../controller/ProgramResetController.java | 34 +++++++++++ .../com/damai/service/ProgramService.java | 59 +++++++++++++++++-- .../damai/service/ProgramShowTimeService.java | 16 +++-- .../DelayOperateProgramDataConsumer.java | 2 +- 8 files changed, 135 insertions(+), 14 deletions(-) create mode 100644 damai-common/src/main/java/com/damai/util/Test.java create mode 100644 damai-server-client/damai-program-client/src/main/java/com/damai/dto/ProgramResetExecuteDto.java create mode 100644 damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramResetController.java diff --git a/damai-common/src/main/java/com/damai/util/Test.java b/damai-common/src/main/java/com/damai/util/Test.java new file mode 100644 index 00000000..b41a2aed --- /dev/null +++ b/damai-common/src/main/java/com/damai/util/Test.java @@ -0,0 +1,13 @@ +package com.damai.util; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 测试使用 + * @author: 阿宽不是程序员 + **/ +public class Test { + + public static void main(String[] args) { + + } +} diff --git a/damai-server-client/damai-program-client/src/main/java/com/damai/dto/ProgramResetExecuteDto.java b/damai-server-client/damai-program-client/src/main/java/com/damai/dto/ProgramResetExecuteDto.java new file mode 100644 index 00000000..ec475ac4 --- /dev/null +++ b/damai-server-client/damai-program-client/src/main/java/com/damai/dto/ProgramResetExecuteDto.java @@ -0,0 +1,21 @@ +package com.damai.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 节目数据重置 dto + * @author: 阿宽不是程序员 + **/ +@Data +@ApiModel(value="ProgramResetExecuteDto", description ="节目数据重置") +public class ProgramResetExecuteDto { + + @ApiModelProperty(name ="programId", dataType ="Long", value ="节目id") + @NotNull + private Long programId; +} diff --git a/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml b/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml index 3394b0f3..5b87a3f1 100644 --- a/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml +++ b/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml @@ -6,7 +6,7 @@ spring: application: name: ${prefix.distinction.name:damai}-gateway-service #name: ${prefix.distinction.name:damai}-gateway-single-service - cloud: + cloud: nacos: discovery: server-addr: 62.234.31.217:8848 diff --git a/damai-server/damai-order-service/src/main/java/com/damai/service/constant/OrderConstant.java b/damai-server/damai-order-service/src/main/java/com/damai/service/constant/OrderConstant.java index e1adce00..077323d5 100644 --- a/damai-server/damai-order-service/src/main/java/com/damai/service/constant/OrderConstant.java +++ b/damai-server/damai-order-service/src/main/java/com/damai/service/constant/OrderConstant.java @@ -13,7 +13,7 @@ public class OrderConstant { public static final String DELAY_OPERATE_PROGRAM_DATA_TOPIC = "d_delay_operate_program_data_topic"; - public static final Long DELAY_OPERATE_PROGRAM_DATA_TIME = 3L; + public static final Long DELAY_OPERATE_PROGRAM_DATA_TIME = 1L; public static final TimeUnit DELAY_OPERATE_PROGRAM_DATA_TIME_UNIT = TimeUnit.SECONDS; } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramResetController.java b/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramResetController.java new file mode 100644 index 00000000..14fc7fd7 --- /dev/null +++ b/damai-server/damai-program-service/src/main/java/com/damai/controller/ProgramResetController.java @@ -0,0 +1,34 @@ +package com.damai.controller; + +import com.damai.common.ApiResponse; +import com.damai.dto.ProgramResetExecuteDto; +import com.damai.service.ProgramService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 节目相关数据重置 控制层 + * @author: 阿宽不是程序员 + **/ +@RestController +@RequestMapping("/program/reset") +@Api(tags = "program-reset", value = "节目数据重置") +public class ProgramResetController { + + @Autowired + private ProgramService programService; + + @ApiOperation(value = "执行重置(根据节目id)") + @PostMapping(value = "/execute") + public ApiResponse resetExecute(@Valid @RequestBody ProgramResetExecuteDto programResetExecuteDto) { + return ApiResponse.ok(programService.resetExecute(programResetExecuteDto)); + } +} diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java index 89193d4c..41e40d89 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java @@ -21,6 +21,7 @@ import com.damai.dto.ProgramGetDto; import com.damai.dto.ProgramListDto; import com.damai.dto.ProgramOperateDataDto; import com.damai.dto.ProgramPageListDto; +import com.damai.dto.ProgramResetExecuteDto; import com.damai.dto.ProgramSearchDto; import com.damai.dto.TicketUserListDto; import com.damai.entity.Program; @@ -28,6 +29,7 @@ import com.damai.entity.ProgramCategory; import com.damai.entity.ProgramJoinShowTime; import com.damai.entity.ProgramShowTime; import com.damai.entity.Seat; +import com.damai.entity.TicketCategory; import com.damai.entity.TicketCategoryAggregate; import com.damai.enums.BaseCode; import com.damai.enums.BusinessStatus; @@ -341,29 +343,24 @@ public class ProgramService extends ServiceImpl { @Transactional(rollbackFor = Exception.class) public void operateProgramData(ProgramOperateDataDto programOperateDataDto){ Map ticketCategoryCountMap = programOperateDataDto.getTicketCategoryCountMap(); - //从库中查询座位集合 List seatIdList = programOperateDataDto.getSeatIdList(); LambdaQueryWrapper seatLambdaQueryWrapper = Wrappers.lambdaQuery(Seat.class).in(Seat::getId, seatIdList); List seatList = seatMapper.selectList(seatLambdaQueryWrapper); - //如果库中的座位集合为空或者库中的座位集合数量和传入的座位数量不相同则抛出异常 if (CollectionUtil.isEmpty(seatList) || seatList.size() != seatIdList.size()) { throw new DaMaiFrameException(BaseCode.SEAT_NOT_EXIST); } for (Seat seat : seatList) { - //如果库中的座位有一个已经是已售卖的状态,则抛出异常 if (Objects.equals(seat.getSellStatus(), SellStatus.SOLD.getCode())) { throw new DaMaiFrameException(BaseCode.SEAT_SOLD); } } - //将库中的座位集合批量更新为售卖状态 LambdaUpdateWrapper seatLambdaUpdateWrapper = Wrappers.lambdaUpdate(Seat.class).in(Seat::getId, seatIdList); Seat updateSeat = new Seat(); updateSeat.setSellStatus(SellStatus.SOLD.getCode()); seatMapper.update(updateSeat,seatLambdaUpdateWrapper); - //将库中的对应票档进行更新库存 int updateRemainNumberCount = ticketCategoryMapper.batchUpdateRemainNumber(ticketCategoryCountMap); if (updateRemainNumberCount != ticketCategoryCountMap.size()) { @@ -462,4 +459,56 @@ public class ProgramService extends ServiceImpl { programVo.setParentProgramCategoryName(parentProgramCategory.getName()); } } + + @Transactional(rollbackFor = Exception.class) + public Boolean resetExecute(ProgramResetExecuteDto programResetExecuteDto) { + Long programId = programResetExecuteDto.getProgramId(); + LambdaQueryWrapper seatQueryWrapper = + Wrappers.lambdaQuery(Seat.class).eq(Seat::getProgramId, programId); + List seatList = seatMapper.selectList(seatQueryWrapper); + if (CollectionUtil.isEmpty(seatList)) { + return true; + } + boolean resetSeatFlag = false; + for (Seat seat : seatList) { + if (!seat.getSellStatus().equals(SellStatus.NO_SOLD.getCode())) { + resetSeatFlag = true; + break; + } + } + if (resetSeatFlag) { + LambdaUpdateWrapper seatUpdateWrapper = + Wrappers.lambdaUpdate(Seat.class).eq(Seat::getProgramId, programId); + Seat seatUpdate = new Seat(); + seatUpdate.setSellStatus(SellStatus.NO_SOLD.getCode()); + seatMapper.update(seatUpdate,seatUpdateWrapper); + } + + LambdaQueryWrapper ticketCategoryQueryWrapper = + Wrappers.lambdaQuery(TicketCategory.class).eq(TicketCategory::getProgramId, programId); + List ticketCategories = ticketCategoryMapper.selectList(ticketCategoryQueryWrapper); + for (TicketCategory ticketCategory : ticketCategories) { + Long remainNumber = ticketCategory.getRemainNumber(); + Long totalNumber = ticketCategory.getTotalNumber(); + if (!remainNumber.equals(totalNumber)) { + TicketCategory ticketCategoryUpdate = new TicketCategory(); + ticketCategoryUpdate.setRemainNumber(totalNumber); + ticketCategoryUpdate.setId(ticketCategory.getId()); + ticketCategoryMapper.updateById(ticketCategoryUpdate); + } + } + delRedisData(programId); + return true; + } + + private void delRedisData(Long programId){ + redisCache.del(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM,programId)); + redisCache.del(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SHOW_TIME,programId)); + redisCache.del(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_NO_SOLD_HASH, programId)); + redisCache.del(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_LOCK_HASH, programId)); + redisCache.del(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SEAT_SOLD_HASH, programId)); + redisCache.del(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_TICKET_CATEGORY_LIST, programId)); + redisCache.del(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_TICKET_REMAIN_NUMBER_HASH, programId)); + } } + diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramShowTimeService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramShowTimeService.java index 209b6b1f..3282c50a 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramShowTimeService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramShowTimeService.java @@ -61,12 +61,16 @@ public class ProgramShowTimeService extends ServiceImpl { - LambdaQueryWrapper programShowTimeLambdaQueryWrapper = - Wrappers.lambdaQuery(ProgramShowTime.class).eq(ProgramShowTime::getProgramId, programId); - return Optional.ofNullable(programShowTimeMapper.selectOne(programShowTimeLambdaQueryWrapper)) - .orElseThrow(() -> new DaMaiFrameException(BaseCode.PROGRAM_SHOW_TIME_NOT_EXIST)); - },EXPIRE_TIME, TimeUnit.DAYS); + return redisCache.get(RedisKeyBuild.createRedisKey(RedisKeyManage.PROGRAM_SHOW_TIME,programId), + ProgramShowTime.class, + () -> { + LambdaQueryWrapper programShowTimeLambdaQueryWrapper = + Wrappers.lambdaQuery(ProgramShowTime.class).eq(ProgramShowTime::getProgramId, programId); + return Optional.ofNullable(programShowTimeMapper.selectOne(programShowTimeLambdaQueryWrapper)) + .orElseThrow(() -> new DaMaiFrameException(BaseCode.PROGRAM_SHOW_TIME_NOT_EXIST)); + }, + EXPIRE_TIME, + TimeUnit.DAYS); } @Transactional(rollbackFor = Exception.class) diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/delayconsumer/DelayOperateProgramDataConsumer.java b/damai-server/damai-program-service/src/main/java/com/damai/service/delayconsumer/DelayOperateProgramDataConsumer.java index 69d6c019..e7b700e2 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/delayconsumer/DelayOperateProgramDataConsumer.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/delayconsumer/DelayOperateProgramDataConsumer.java @@ -14,7 +14,7 @@ import static com.damai.service.constant.ProgramOrderConstant.DELAY_OPERATE_PROG /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: 节目缓存操作 + * @description: 节目消息监听 * @author: 阿宽不是程序员 **/ @Slf4j -- Gitee From c7b874778a541b73811b69ec4bf5de87890492c9 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Sun, 17 Mar 2024 12:16:36 +0800 Subject: [PATCH 67/74] =?UTF-8?q?=E6=94=AF=E4=BB=98=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/damai/service/ProgramService.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java index 41e40d89..8cc9526f 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/ProgramService.java @@ -44,6 +44,7 @@ import com.damai.page.PageUtil; import com.damai.page.PageVo; import com.damai.redis.RedisCache; import com.damai.redis.RedisKeyBuild; +import com.damai.repeatexecutelimit.annotion.RepeatExecuteLimit; import com.damai.service.constant.ProgramTimeType; import com.damai.service.es.ProgramEs; import com.damai.servicelock.LockType; @@ -77,6 +78,7 @@ import java.util.stream.Collectors; import static com.damai.constant.Constant.CODE; import static com.damai.constant.Constant.USER_ID; import static com.damai.core.DistributedLockConstants.PROGRAM_LOCK; +import static com.damai.core.RepeatExecuteLimitConstants.CANCEL_PROGRAM_ORDER; import static com.damai.service.cache.ExpireTime.EXPIRE_TIME; import static com.damai.util.DateUtils.FORMAT_DATE; @@ -340,6 +342,7 @@ public class ProgramService extends ServiceImpl { .collect(Collectors.toMap(TicketCategoryAggregate::getProgramId, ticketCategory -> ticketCategory, (v1, v2) -> v2)); } + @RepeatExecuteLimit(name = CANCEL_PROGRAM_ORDER,keys = {"#programOperateDataDto.programId"}) @Transactional(rollbackFor = Exception.class) public void operateProgramData(ProgramOperateDataDto programOperateDataDto){ Map ticketCategoryCountMap = programOperateDataDto.getTicketCategoryCountMap(); -- Gitee From 4ab11741e47b425f98bed77843d3895863b34035 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Tue, 19 Mar 2024 20:18:34 +0800 Subject: [PATCH 68/74] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- damai-server/damai-base-data-service/pom.xml | 10 +- damai-server/damai-gateway-service/pom.xml | 9 +- .../src/main/resources/bootstrap.yml | 3 + .../controller/TicketCategoryController.java | 8 ++ .../damai/service/TicketCategoryService.java | 16 +++ damai-server/damai-user-service/pom.xml | 2 +- .../damai-sentinel-general/.gitignore | 31 ----- .../damai-sentinel-common-general/.gitignore | 31 ----- .../damai-sentinel-common-general/pom.xml | 28 ----- .../sentinel/constant/SentinelConstant.java | 13 --- .../slots/block/degrade/DegradeSlot.java | 98 ---------------- .../sentinel/slots/block/flow/FlowSlot.java | 100 ---------------- .../main/resources/META-INF/spring.factories | 0 .../damai-sentinel-gateway-general/.gitignore | 31 ----- .../damai-sentinel-gateway-general/README.md | 5 - .../damai-sentinel-gateway-general/pom.xml | 36 ------ .../gateway/sc/SentinelGatewayFilter.java | 108 ------------------ .../damai/sentinel/GatewayConfiguration.java | 44 ------- .../main/resources/META-INF/spring.factories | 2 - .../damai-sentinel-web-general/.gitignore | 31 ----- .../damai-sentinel-web-general/pom.xml | 35 ------ .../spring/webmvc/SentinelWebInterceptor.java | 86 -------------- .../damai-sentinel-general/pom.xml | 23 ---- 23 files changed, 43 insertions(+), 707 deletions(-) delete mode 100644 damai-spring-cloud-framework/damai-sentinel-general/.gitignore delete mode 100644 damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/.gitignore delete mode 100644 damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/pom.xml delete mode 100644 damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/src/main/java/com/alibaba/csp/sentinel/constant/SentinelConstant.java delete mode 100644 damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/src/main/java/com/alibaba/csp/sentinel/slots/block/degrade/DegradeSlot.java delete mode 100644 damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/src/main/java/com/alibaba/csp/sentinel/slots/block/flow/FlowSlot.java delete mode 100644 damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/src/main/resources/META-INF/spring.factories delete mode 100644 damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/.gitignore delete mode 100644 damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/README.md delete mode 100644 damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/pom.xml delete mode 100644 damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/sc/SentinelGatewayFilter.java delete mode 100644 damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/src/main/java/com/damai/sentinel/GatewayConfiguration.java delete mode 100644 damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/src/main/resources/META-INF/spring.factories delete mode 100644 damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-web-general/.gitignore delete mode 100644 damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-web-general/pom.xml delete mode 100644 damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-web-general/src/main/java/com/alibaba/csp/sentinel/adapter/spring/webmvc/SentinelWebInterceptor.java delete mode 100644 damai-spring-cloud-framework/damai-sentinel-general/pom.xml diff --git a/damai-server/damai-base-data-service/pom.xml b/damai-server/damai-base-data-service/pom.xml index e0684a0f..10e32212 100644 --- a/damai-server/damai-base-data-service/pom.xml +++ b/damai-server/damai-base-data-service/pom.xml @@ -110,6 +110,14 @@ jasypt-spring-boot-starter ${jasypt.version} + + com.alibaba.cloud + spring-cloud-starter-alibaba-sentinel + + + com.alibaba.csp + sentinel-datasource-nacos + @@ -119,7 +127,7 @@ spring-boot-maven-plugin ${spring-boot.version} - com.damai.ProgramApplication + com.damai.BaseDataApplication true diff --git a/damai-server/damai-gateway-service/pom.xml b/damai-server/damai-gateway-service/pom.xml index ae7ae144..3b63cee4 100644 --- a/damai-server/damai-gateway-service/pom.xml +++ b/damai-server/damai-gateway-service/pom.xml @@ -154,9 +154,12 @@ ${jasypt.version} - com.example - damai-sentinel-gateway-general - ${revision} + com.alibaba.cloud + spring-cloud-starter-alibaba-sentinel + + + com.alibaba.csp + sentinel-spring-cloud-gateway-adapter com.alibaba.csp diff --git a/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml b/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml index 5b87a3f1..e7d8ebd4 100644 --- a/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml +++ b/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml @@ -15,5 +15,8 @@ spring: config: server-addr: 62.234.31.217:8848 file-extension: yaml + shared-configs: + - data-id: common.yaml + refresh: true username: nacos password: nacos \ No newline at end of file diff --git a/damai-server/damai-program-service/src/main/java/com/damai/controller/TicketCategoryController.java b/damai-server/damai-program-service/src/main/java/com/damai/controller/TicketCategoryController.java index 0a4dfc70..2a0e52cd 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/controller/TicketCategoryController.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/controller/TicketCategoryController.java @@ -2,7 +2,9 @@ package com.damai.controller; import com.damai.common.ApiResponse; import com.damai.dto.TicketCategoryAddDto; +import com.damai.dto.TicketCategoryDto; import com.damai.service.TicketCategoryService; +import com.damai.vo.TicketCategoryDetailVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -32,4 +34,10 @@ public class TicketCategoryController { public ApiResponse add(@Valid @RequestBody TicketCategoryAddDto ticketCategoryAddDto) { return ApiResponse.ok(ticketCategoryService.add(ticketCategoryAddDto)); } + + @ApiOperation(value = "查询详情") + @PostMapping(value = "/detail") + public ApiResponse detail(@Valid @RequestBody TicketCategoryDto ticketCategoryDto) { + return ApiResponse.ok(ticketCategoryService.detail(ticketCategoryDto)); + } } diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/TicketCategoryService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/TicketCategoryService.java index 506d31dc..f101c595 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/TicketCategoryService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/TicketCategoryService.java @@ -8,15 +8,20 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.damai.core.RedisKeyManage; import com.damai.dto.TicketCategoryAddDto; +import com.damai.dto.TicketCategoryDto; import com.damai.entity.TicketCategory; import com.damai.mapper.TicketCategoryMapper; import com.damai.redis.RedisCache; import com.damai.redis.RedisKeyBuild; +import com.damai.vo.TicketCategoryDetailVo; import com.damai.vo.TicketCategoryVo; +import lombok.extern.slf4j.Slf4j; +import org.apache.ibatis.session.SqlSessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -29,6 +34,7 @@ import static com.damai.service.cache.ExpireTime.EXPIRE_TIME; * @description: 票档 service * @author: 阿宽不是程序员 **/ +@Slf4j @Service public class TicketCategoryService extends ServiceImpl { @@ -41,6 +47,9 @@ public class TicketCategoryService extends ServiceImplspring-boot-maven-plugin ${spring-boot.version} - com.damai.SingleApplication + com.damai.UserApplication true diff --git a/damai-spring-cloud-framework/damai-sentinel-general/.gitignore b/damai-spring-cloud-framework/damai-sentinel-general/.gitignore deleted file mode 100644 index a2a3040a..00000000 --- a/damai-spring-cloud-framework/damai-sentinel-general/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -HELP.md -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/** -!**/src/test/** - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ - -### VS Code ### -.vscode/ diff --git a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/.gitignore b/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/.gitignore deleted file mode 100644 index a2a3040a..00000000 --- a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -HELP.md -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/** -!**/src/test/** - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ - -### VS Code ### -.vscode/ diff --git a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/pom.xml b/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/pom.xml deleted file mode 100644 index 76fed79d..00000000 --- a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/pom.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - 4.0.0 - - - com.example - damai-sentinel-general - ${revision} - - damai-sentinel-common-general - sentinel-common-general - sentinel common支持全局配置组件 - - - - - com.example - damai-common - ${revision} - - - com.alibaba.cloud - spring-cloud-starter-alibaba-sentinel - - - - diff --git a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/src/main/java/com/alibaba/csp/sentinel/constant/SentinelConstant.java b/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/src/main/java/com/alibaba/csp/sentinel/constant/SentinelConstant.java deleted file mode 100644 index b17e74a9..00000000 --- a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/src/main/java/com/alibaba/csp/sentinel/constant/SentinelConstant.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.alibaba.csp.sentinel.constant; - -/** - * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: sentinel常量 - * @author: 阿宽不是程序员 - **/ -public class SentinelConstant { - - public static final String SPLIT_RESOURCE = "_"; - - public static final String GENERAL_URL = "#general"; -} diff --git a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/src/main/java/com/alibaba/csp/sentinel/slots/block/degrade/DegradeSlot.java b/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/src/main/java/com/alibaba/csp/sentinel/slots/block/degrade/DegradeSlot.java deleted file mode 100644 index 6181652d..00000000 --- a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/src/main/java/com/alibaba/csp/sentinel/slots/block/degrade/DegradeSlot.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 1999-2018 Alibaba Group Holding Ltd. - * - * 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. - */ -package com.alibaba.csp.sentinel.slots.block.degrade; - -import com.alibaba.csp.sentinel.Constants; -import com.alibaba.csp.sentinel.Entry; -import com.alibaba.csp.sentinel.constant.SentinelConstant; -import com.alibaba.csp.sentinel.context.Context; -import com.alibaba.csp.sentinel.node.DefaultNode; -import com.alibaba.csp.sentinel.slotchain.AbstractLinkedProcessorSlot; -import com.alibaba.csp.sentinel.slotchain.ResourceWrapper; -import com.alibaba.csp.sentinel.slots.block.BlockException; -import com.alibaba.csp.sentinel.slots.block.degrade.circuitbreaker.CircuitBreaker; -import com.alibaba.csp.sentinel.spi.Spi; - -import java.util.List; - -/** - * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: sentinel熔断统计 - * @author: 阿宽不是程序员 - **/ -@Spi(order = Constants.ORDER_DEGRADE_SLOT) -public class DegradeSlot extends AbstractLinkedProcessorSlot { - - @Override - public void entry(Context context, ResourceWrapper resourceWrapper, DefaultNode node, int count, - boolean prioritized, Object... args) throws Throwable { - // 完成熔断降级检测 - performChecking(context, resourceWrapper); - // 触发下一个节点 - fireEntry(context, resourceWrapper, node, count, prioritized, args); - } - - void performChecking(Context context, ResourceWrapper r) throws BlockException { - // 获取到当前资源的所有熔断器 - List circuitBreakers = DegradeRuleManager.getCircuitBreakers(r.getName()); - if (circuitBreakers == null || circuitBreakers.size() == 0) { - //上一步拿不到资源所对应的熔断后,这里拿取通用的熔断 - circuitBreakers = DegradeRuleManager.getCircuitBreakers(SentinelConstant.GENERAL_URL); - if (circuitBreakers != null) { - for (CircuitBreaker circuitBreaker : circuitBreakers) { - DegradeRule rule = circuitBreaker.getRule(); - if (rule != null) { - rule.setResource(r.getName()); - } - } - } - } - // 若熔断器为空,则直结束 - if (circuitBreakers == null || circuitBreakers.isEmpty()) { - return; - } - // 逐个尝试所有熔断器 - for (CircuitBreaker cb : circuitBreakers) { - // 若没有通过当前熔断器,则直接抛出异常 - if (!cb.tryPass(context)) { - throw new DegradeException(cb.getRule().getLimitApp(), cb.getRule()); - } - } - } - - @Override - public void exit(Context context, ResourceWrapper r, int count, Object... args) { - Entry curEntry = context.getCurEntry(); - if (curEntry.getBlockError() != null) { - fireExit(context, r, count, args); - return; - } - List circuitBreakers = DegradeRuleManager.getCircuitBreakers(r.getName()); - if (circuitBreakers == null || circuitBreakers.isEmpty()) { - fireExit(context, r, count, args); - return; - } - - if (curEntry.getBlockError() == null) { - // passed request - for (CircuitBreaker circuitBreaker : circuitBreakers) { - circuitBreaker.onRequestComplete(context); - } - } - - fireExit(context, r, count, args); - } -} diff --git a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/src/main/java/com/alibaba/csp/sentinel/slots/block/flow/FlowSlot.java b/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/src/main/java/com/alibaba/csp/sentinel/slots/block/flow/FlowSlot.java deleted file mode 100644 index 53c7b77c..00000000 --- a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/src/main/java/com/alibaba/csp/sentinel/slots/block/flow/FlowSlot.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 1999-2018 Alibaba Group Holding Ltd. - * - * 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. - */ -package com.alibaba.csp.sentinel.slots.block.flow; - -import com.alibaba.csp.sentinel.Constants; -import com.alibaba.csp.sentinel.constant.SentinelConstant; -import com.alibaba.csp.sentinel.context.Context; -import com.alibaba.csp.sentinel.node.DefaultNode; -import com.alibaba.csp.sentinel.slotchain.AbstractLinkedProcessorSlot; -import com.alibaba.csp.sentinel.slotchain.ResourceWrapper; -import com.alibaba.csp.sentinel.slots.block.BlockException; -import com.alibaba.csp.sentinel.spi.Spi; -import com.alibaba.csp.sentinel.util.AssertUtil; -import com.alibaba.csp.sentinel.util.function.Function; - -import java.util.Collection; -import java.util.List; -import java.util.Map; - -/** - * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: sentinel流控统计 - * @author: 阿宽不是程序员 - **/ -@Spi(order = Constants.ORDER_FLOW_SLOT) -public class FlowSlot extends AbstractLinkedProcessorSlot { - - private final FlowRuleChecker checker; - - public FlowSlot() { - this(new FlowRuleChecker()); - } - - /** - * Package-private for test. - * - * @param checker flow rule checker - * @since 1.6.1 - */ - FlowSlot(FlowRuleChecker checker) { - AssertUtil.notNull(checker, "flow checker should not be null"); - this.checker = checker; - } - - @Override - public void entry(Context context, ResourceWrapper resourceWrapper, DefaultNode node, int count, - boolean prioritized, Object... args) throws Throwable { - // 检测并应用流控规则 - checkFlow(resourceWrapper, context, node, count, prioritized); - // 触发下一个Slot - fireEntry(context, resourceWrapper, node, count, prioritized, args); - } - - void checkFlow(ResourceWrapper resource, Context context, DefaultNode node, int count, boolean prioritized) - throws BlockException { - checker.checkFlow(ruleProvider, resource, context, node, count, prioritized); - } - - @Override - public void exit(Context context, ResourceWrapper resourceWrapper, int count, Object... args) { - fireExit(context, resourceWrapper, count, args); - } - - private final Function> ruleProvider = new Function>() { - @Override - public Collection apply(String resource) { - // Flow rule map should not be null. - // 获取到所有资源的流控规则 - // map的key为资源名称,value为该资源上加载的所有流控规则 - Map> flowRules = FlowRuleManager.getFlowRuleMap(); - // 获取指定资源的所有流控规则 - List flowRuleList = flowRules.get(resource); - - if (flowRuleList == null || flowRuleList.size() == 0) { - //如果没有找到属于本资源的,那么找通用的 - flowRuleList = flowRules.get(SentinelConstant.GENERAL_URL); - } - if (flowRuleList != null) { - for (final FlowRule flowRule : flowRuleList) { - //将真正的资源路径替换通用的 - flowRule.setResource(resource); - } - } - return flowRuleList; - } - }; -} diff --git a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/src/main/resources/META-INF/spring.factories b/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-common-general/src/main/resources/META-INF/spring.factories deleted file mode 100644 index e69de29b..00000000 diff --git a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/.gitignore b/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/.gitignore deleted file mode 100644 index a2a3040a..00000000 --- a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -HELP.md -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/** -!**/src/test/** - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ - -### VS Code ### -.vscode/ diff --git a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/README.md b/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/README.md deleted file mode 100644 index 04afd0ee..00000000 --- a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/README.md +++ /dev/null @@ -1,5 +0,0 @@ -### 需要添加的配置项 -```properties -spring.cloud.sentinel.eager = true -spring.cloud.sentinel.filter.enabled = false -``` \ No newline at end of file diff --git a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/pom.xml b/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/pom.xml deleted file mode 100644 index 6fb4a990..00000000 --- a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/pom.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - 4.0.0 - - - com.example - damai-sentinel-general - ${revision} - - damai-sentinel-gateway-general - sentinel-gateway-general - sentinel gateway支持全局配置组件 - - - - com.example - damai-common - ${revision} - - - com.example - damai-sentinel-common-general - ${revision} - - - com.alibaba.csp - sentinel-spring-cloud-gateway-adapter - - - org.springframework.cloud - spring-cloud-starter-gateway - - - - diff --git a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/sc/SentinelGatewayFilter.java b/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/sc/SentinelGatewayFilter.java deleted file mode 100644 index e9c9b77a..00000000 --- a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/sc/SentinelGatewayFilter.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright 1999-2019 Alibaba Group Holding Ltd. - * - * 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. - */ -package com.alibaba.csp.sentinel.adapter.gateway.sc; - -import com.alibaba.csp.sentinel.EntryType; -import com.alibaba.csp.sentinel.ResourceTypeConstants; -import com.alibaba.csp.sentinel.adapter.gateway.common.SentinelGatewayConstants; -import com.alibaba.csp.sentinel.adapter.gateway.common.param.GatewayParamParser; -import com.alibaba.csp.sentinel.adapter.gateway.sc.api.GatewayApiMatcherManager; -import com.alibaba.csp.sentinel.adapter.gateway.sc.api.matcher.WebExchangeApiMatcher; -import com.alibaba.csp.sentinel.adapter.gateway.sc.callback.GatewayCallbackManager; -import com.alibaba.csp.sentinel.adapter.reactor.ContextConfig; -import com.alibaba.csp.sentinel.adapter.reactor.EntryConfig; -import com.alibaba.csp.sentinel.adapter.reactor.SentinelReactorTransformer; -import org.springframework.cloud.gateway.filter.GatewayFilter; -import org.springframework.cloud.gateway.filter.GatewayFilterChain; -import org.springframework.cloud.gateway.filter.GlobalFilter; -import org.springframework.cloud.gateway.route.Route; -import org.springframework.cloud.gateway.support.ServerWebExchangeUtils; -import org.springframework.core.Ordered; -import org.springframework.web.server.ServerWebExchange; -import reactor.core.publisher.Mono; - -import java.util.Optional; -import java.util.Set; -import java.util.stream.Collectors; - -/** - * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: sentinel gateway过滤器 - * @author: 阿宽不是程序员 - **/ -public class SentinelGatewayFilter implements GatewayFilter, GlobalFilter, Ordered { - - private final int order; - - public SentinelGatewayFilter() { - this(Ordered.HIGHEST_PRECEDENCE); - } - - public SentinelGatewayFilter(int order) { - this.order = order; - } - - private final GatewayParamParser paramParser = new GatewayParamParser<>( - new ServerWebExchangeItemParser()); - - @Override - public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { - Route route = exchange.getAttribute(ServerWebExchangeUtils.GATEWAY_ROUTE_ATTR); - String uri = exchange.getRequest().getPath().value(); - Mono asyncResult = chain.filter(exchange); - if (route != null) { - String routeId = route.getId(); - Object[] params = paramParser.parseParameterFor(uri, exchange, - r -> r.getResourceMode() == SentinelGatewayConstants.RESOURCE_MODE_ROUTE_ID); - String origin = Optional.ofNullable(GatewayCallbackManager.getRequestOriginParser()) - .map(f -> f.apply(exchange)) - .orElse(""); - asyncResult = asyncResult.transform( - new SentinelReactorTransformer<>(new EntryConfig(uri, ResourceTypeConstants.COMMON_API_GATEWAY, - EntryType.IN, 1, params, new ContextConfig(contextName(uri), origin))) - ); - } - - Set matchingApis = pickMatchingApiDefinitions(exchange); - for (String apiName : matchingApis) { - Object[] params = paramParser.parseParameterFor(apiName, exchange, - r -> r.getResourceMode() == SentinelGatewayConstants.RESOURCE_MODE_CUSTOM_API_NAME); - asyncResult = asyncResult.transform( - new SentinelReactorTransformer<>(new EntryConfig(apiName, ResourceTypeConstants.COMMON_API_GATEWAY, - EntryType.IN, 1, params)) - ); - } - - return asyncResult; - } - - private String contextName(String route) { - return SentinelGatewayConstants.GATEWAY_CONTEXT_ROUTE_PREFIX + route; - } - - Set pickMatchingApiDefinitions(ServerWebExchange exchange) { - return GatewayApiMatcherManager.getApiMatcherMap().values() - .stream() - .filter(m -> m.test(exchange)) - .map(WebExchangeApiMatcher::getApiName) - .collect(Collectors.toSet()); - } - - @Override - public int getOrder() { - return order; - } -} diff --git a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/src/main/java/com/damai/sentinel/GatewayConfiguration.java b/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/src/main/java/com/damai/sentinel/GatewayConfiguration.java deleted file mode 100644 index 53e32571..00000000 --- a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/src/main/java/com/damai/sentinel/GatewayConfiguration.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.damai.sentinel; - -import com.alibaba.csp.sentinel.adapter.gateway.sc.SentinelGatewayFilter; -import com.alibaba.csp.sentinel.adapter.gateway.sc.exception.SentinelGatewayBlockExceptionHandler; -import org.springframework.beans.factory.ObjectProvider; -import org.springframework.cloud.gateway.filter.GlobalFilter; -import org.springframework.context.annotation.Bean; -import org.springframework.core.Ordered; -import org.springframework.core.annotation.Order; -import org.springframework.http.codec.ServerCodecConfigurer; -import org.springframework.web.reactive.result.view.ViewResolver; - -import java.util.Collections; -import java.util.List; - -/** - * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: sentinel gateway配置 - * @author: 阿宽不是程序员 - **/ -public class GatewayConfiguration { - - private final List viewResolvers; - private final ServerCodecConfigurer serverCodecConfigurer; - - public GatewayConfiguration(ObjectProvider> viewResolversProvider, - ServerCodecConfigurer serverCodecConfigurer) { - this.viewResolvers = viewResolversProvider.getIfAvailable(Collections::emptyList); - this.serverCodecConfigurer = serverCodecConfigurer; - } - - @Bean - @Order(Ordered.HIGHEST_PRECEDENCE) - public SentinelGatewayBlockExceptionHandler sentinelGatewayBlockExceptionHandler() { - // Register the block exception handler for Spring Cloud Gateway. - return new SentinelGatewayBlockExceptionHandler(viewResolvers, serverCodecConfigurer); - } - - @Bean - @Order(Ordered.HIGHEST_PRECEDENCE) - public GlobalFilter sentinelGatewayFilter() { - return new SentinelGatewayFilter(); - } -} \ No newline at end of file diff --git a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/src/main/resources/META-INF/spring.factories b/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/src/main/resources/META-INF/spring.factories deleted file mode 100644 index dcb03d11..00000000 --- a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-gateway-general/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - com.damai.sentinel.GatewayConfiguration \ No newline at end of file diff --git a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-web-general/.gitignore b/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-web-general/.gitignore deleted file mode 100644 index a2a3040a..00000000 --- a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-web-general/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -HELP.md -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/** -!**/src/test/** - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ - -### VS Code ### -.vscode/ diff --git a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-web-general/pom.xml b/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-web-general/pom.xml deleted file mode 100644 index 51aa33d5..00000000 --- a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-web-general/pom.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - 4.0.0 - - - com.example - damai-sentinel-general - ${revision} - - damai-sentinel-web-general - sentinel-web-general - sentinel web支持全局配置组件 - - - - - com.example - damai-common - ${revision} - - - org.springframework.boot - spring-boot-starter-web - true - - - com.example - damai-sentinel-common-general - ${revision} - - - - - diff --git a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-web-general/src/main/java/com/alibaba/csp/sentinel/adapter/spring/webmvc/SentinelWebInterceptor.java b/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-web-general/src/main/java/com/alibaba/csp/sentinel/adapter/spring/webmvc/SentinelWebInterceptor.java deleted file mode 100644 index 667e1a6e..00000000 --- a/damai-spring-cloud-framework/damai-sentinel-general/damai-sentinel-web-general/src/main/java/com/alibaba/csp/sentinel/adapter/spring/webmvc/SentinelWebInterceptor.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 1999-2019 Alibaba Group Holding Ltd. - * - * 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 - * - * https://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. - */ -package com.alibaba.csp.sentinel.adapter.spring.webmvc; - -import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.UrlCleaner; -import com.alibaba.csp.sentinel.adapter.spring.webmvc.config.SentinelWebMvcConfig; -import com.alibaba.csp.sentinel.util.StringUtil; -import com.damai.core.SpringUtil; -import org.springframework.web.servlet.HandlerMapping; - -import javax.servlet.http.HttpServletRequest; -import java.util.Optional; - -import static com.alibaba.csp.sentinel.constant.SentinelConstant.SPLIT_RESOURCE; - - -/** - * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 - * @description: sentinel web统计 - * @author: 阿宽不是程序员 - **/ -public class SentinelWebInterceptor extends AbstractSentinelInterceptor { - - private final SentinelWebMvcConfig config; - - public SentinelWebInterceptor() { - this(new SentinelWebMvcConfig()); - } - - public SentinelWebInterceptor(SentinelWebMvcConfig config) { - super(config); - if (config == null) { - // Use the default config by default. - this.config = new SentinelWebMvcConfig(); - } else { - this.config = config; - } - } - - @Override - protected String getResourceName(HttpServletRequest request) { - // Resolve the Spring Web URL pattern from the request attribute. - Object resourceNameObject = request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE); - if (resourceNameObject == null || !(resourceNameObject instanceof String)) { - return null; - } - String resourceName = (String) resourceNameObject; - UrlCleaner urlCleaner = config.getUrlCleaner(); - if (urlCleaner != null) { - resourceName = urlCleaner.clean(resourceName); - } - // Add method specification if necessary - if (StringUtil.isNotEmpty(resourceName) && config.isHttpMethodSpecify()) { - resourceName = request.getMethod().toUpperCase() + ":" + resourceName; - } - Optional applicationNameOptional = Optional.ofNullable(SpringUtil.getProperty("spring.application.name")) - .filter(com.damai.util.StringUtil::isNotEmpty); - if (applicationNameOptional.isPresent()) { - String applicationName = applicationNameOptional.get(); - resourceName = applicationName + SPLIT_RESOURCE + resourceName; - } - return resourceName; - } - - @Override - protected String getContextName(HttpServletRequest request) { - if (config.isWebContextUnify()) { - return super.getContextName(request); - } - - return getResourceName(request); - } -} diff --git a/damai-spring-cloud-framework/damai-sentinel-general/pom.xml b/damai-spring-cloud-framework/damai-sentinel-general/pom.xml deleted file mode 100644 index 25bbb494..00000000 --- a/damai-spring-cloud-framework/damai-sentinel-general/pom.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - 4.0.0 - - - com.example - damai-spring-cloud-framework - ${revision} - - - damai-sentinel-general - sentinel-general - sentinel支持全局通用组件 - pom - - - damai-sentinel-common-general - damai-sentinel-web-general - damai-sentinel-gateway-general - - - -- Gitee From 6035d7440d153a91eb4953a53584be6fadfa7e34 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Tue, 19 Mar 2024 22:11:08 +0800 Subject: [PATCH 69/74] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/damai/dto/TicketCategoryDto.java | 22 +++++++++ .../com/damai/vo/TicketCategoryDetailVo.java | 34 ++++++++++++++ .../GatewaySentinelConfiguration.java | 46 +++++++++++++++++++ 3 files changed, 102 insertions(+) create mode 100644 damai-server-client/damai-program-client/src/main/java/com/damai/dto/TicketCategoryDto.java create mode 100644 damai-server-client/damai-program-client/src/main/java/com/damai/vo/TicketCategoryDetailVo.java create mode 100644 damai-server/damai-gateway-service/src/main/java/com/damai/conf/sentinel/GatewaySentinelConfiguration.java diff --git a/damai-server-client/damai-program-client/src/main/java/com/damai/dto/TicketCategoryDto.java b/damai-server-client/damai-program-client/src/main/java/com/damai/dto/TicketCategoryDto.java new file mode 100644 index 00000000..b583bc33 --- /dev/null +++ b/damai-server-client/damai-program-client/src/main/java/com/damai/dto/TicketCategoryDto.java @@ -0,0 +1,22 @@ +package com.damai.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 节目票档 dto + * @author: 阿宽不是程序员 + **/ +@Data +@ApiModel(value="TicketCategoryDto", description ="节目票档") +public class TicketCategoryDto { + + @ApiModelProperty(name ="id", dataType ="Long", value ="id",required = true) + @NotNull + private Long id; + +} diff --git a/damai-server-client/damai-program-client/src/main/java/com/damai/vo/TicketCategoryDetailVo.java b/damai-server-client/damai-program-client/src/main/java/com/damai/vo/TicketCategoryDetailVo.java new file mode 100644 index 00000000..93c182f8 --- /dev/null +++ b/damai-server-client/damai-program-client/src/main/java/com/damai/vo/TicketCategoryDetailVo.java @@ -0,0 +1,34 @@ +package com.damai.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 节目票档详情 Vo + * @author: 阿宽不是程序员 + **/ +@Data +@ApiModel(value="TicketCategoryDetailVo", description ="节目票档详情") +public class TicketCategoryDetailVo { + + @ApiModelProperty(name ="programId", dataType ="Long", value ="节目表id",required = true) + private Long programId; + + @ApiModelProperty(name ="introduce", dataType ="String", value ="介绍",required = true) + private String introduce; + + @ApiModelProperty(name ="price", dataType ="BigDecimal", value ="价格",required = true) + private BigDecimal price; + + @ApiModelProperty(name ="totalNumber", dataType ="Long", value ="总数量",required = true) + private Long totalNumber; + + @ApiModelProperty(name ="remainNumber", dataType ="Long", value ="剩余数量",required = true) + private Long remainNumber; + + +} diff --git a/damai-server/damai-gateway-service/src/main/java/com/damai/conf/sentinel/GatewaySentinelConfiguration.java b/damai-server/damai-gateway-service/src/main/java/com/damai/conf/sentinel/GatewaySentinelConfiguration.java new file mode 100644 index 00000000..2e437616 --- /dev/null +++ b/damai-server/damai-gateway-service/src/main/java/com/damai/conf/sentinel/GatewaySentinelConfiguration.java @@ -0,0 +1,46 @@ +package com.damai.conf.sentinel; + +import com.alibaba.csp.sentinel.adapter.gateway.sc.SentinelGatewayFilter; +import com.alibaba.csp.sentinel.adapter.gateway.sc.exception.SentinelGatewayBlockExceptionHandler; +import org.springframework.beans.factory.ObjectProvider; +import org.springframework.cloud.gateway.filter.GlobalFilter; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; +import org.springframework.http.codec.ServerCodecConfigurer; +import org.springframework.web.reactive.result.view.ViewResolver; + +import java.util.Collections; +import java.util.List; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: sentinel 配置 + * @author: 阿宽不是程序员 + **/ +@Configuration +public class GatewaySentinelConfiguration { + + private final List viewResolvers; + private final ServerCodecConfigurer serverCodecConfigurer; + + public GatewaySentinelConfiguration(ObjectProvider> viewResolversProvider, + ServerCodecConfigurer serverCodecConfigurer) { + this.viewResolvers = viewResolversProvider.getIfAvailable(Collections::emptyList); + this.serverCodecConfigurer = serverCodecConfigurer; + } + + @Bean + @Order(Ordered.HIGHEST_PRECEDENCE) + public SentinelGatewayBlockExceptionHandler sentinelGatewayBlockExceptionHandler() { + // Register the block exception handler for Spring Cloud Gateway. + return new SentinelGatewayBlockExceptionHandler(viewResolvers, serverCodecConfigurer); + } + + @Bean + @Order(-1) + public GlobalFilter sentinelGatewayFilter() { + return new SentinelGatewayFilter(); + } +} -- Gitee From 7d3ae99cd5eb1af9dd5eb39cefb83b709871f6fa Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Wed, 20 Mar 2024 20:09:00 +0800 Subject: [PATCH 70/74] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/damai/dto/SeatBatchAddDto.java | 26 +++++++++++++ .../damai/dto/SeatBatchRelateInfoAddDto.java | 31 +++++++++++++++ damai-server/damai-customize-service/pom.xml | 5 +-- damai-server/damai-program-service/pom.xml | 8 ++++ .../com/damai/controller/SeatController.java | 9 ++++- .../src/main/java/com/damai/entity/Seat.java | 3 ++ .../java/com/damai/service/SeatService.java | 38 +++++++++++++++++++ damai-spring-cloud-framework/pom.xml | 1 - 8 files changed, 116 insertions(+), 5 deletions(-) create mode 100644 damai-server-client/damai-program-client/src/main/java/com/damai/dto/SeatBatchAddDto.java create mode 100644 damai-server-client/damai-program-client/src/main/java/com/damai/dto/SeatBatchRelateInfoAddDto.java diff --git a/damai-server-client/damai-program-client/src/main/java/com/damai/dto/SeatBatchAddDto.java b/damai-server-client/damai-program-client/src/main/java/com/damai/dto/SeatBatchAddDto.java new file mode 100644 index 00000000..7959d6bb --- /dev/null +++ b/damai-server-client/damai-program-client/src/main/java/com/damai/dto/SeatBatchAddDto.java @@ -0,0 +1,26 @@ +package com.damai.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 节目座位添加 dto + * @author: 阿宽不是程序员 + **/ +@Data +@ApiModel(value="SeatBatchAddDto", description ="节目座位批量添加") +public class SeatBatchAddDto { + + @ApiModelProperty(name ="programId", dataType ="Long", value ="节目表id",required = true) + @NotNull + private Long programId; + + @ApiModelProperty(name ="ticketCategoryId", dataType ="SeatBatchRelateInfoAddDto", value ="节目座位相关信息",required = true) + @NotNull + private List seatBatchRelateInfoAddDtoList; +} diff --git a/damai-server-client/damai-program-client/src/main/java/com/damai/dto/SeatBatchRelateInfoAddDto.java b/damai-server-client/damai-program-client/src/main/java/com/damai/dto/SeatBatchRelateInfoAddDto.java new file mode 100644 index 00000000..0a390c35 --- /dev/null +++ b/damai-server-client/damai-program-client/src/main/java/com/damai/dto/SeatBatchRelateInfoAddDto.java @@ -0,0 +1,31 @@ + +package com.damai.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 节目座位相关信息 dto + * @author: 阿宽不是程序员 + **/ +@Data +@ApiModel(value="SeatBatchRelateInfoAddDto", description ="节目座位相关信息批量添加") +public class SeatBatchRelateInfoAddDto { + + @ApiModelProperty(name ="ticketCategoryId", dataType ="Long", value ="节目票档id",required = true) + @NotNull + private Long ticketCategoryId; + + @ApiModelProperty(name ="price", dataType ="BigDecimal", value ="座位价格",required = true) + @NotNull + private BigDecimal price; + + @ApiModelProperty(name ="count", dataType ="Integer", value ="添加的座位数量",required = true) + @NotNull + private Integer count; +} diff --git a/damai-server/damai-customize-service/pom.xml b/damai-server/damai-customize-service/pom.xml index d361f1df..2ee480b2 100644 --- a/damai-server/damai-customize-service/pom.xml +++ b/damai-server/damai-customize-service/pom.xml @@ -125,9 +125,8 @@ ${jasypt.version} - com.example - damai-sentinel-common-general - ${revision} + com.alibaba.cloud + spring-cloud-starter-alibaba-sentinel com.alibaba.csp diff --git a/damai-server/damai-program-service/pom.xml b/damai-server/damai-program-service/pom.xml index 0540acc1..b195843c 100644 --- a/damai-server/damai-program-service/pom.xml +++ b/damai-server/damai-program-service/pom.xml @@ -161,6 +161,14 @@ snakeyaml ${snakeyaml.version} + + com.alibaba.cloud + spring-cloud-starter-alibaba-sentinel + + + com.alibaba.csp + sentinel-datasource-nacos + diff --git a/damai-server/damai-program-service/src/main/java/com/damai/controller/SeatController.java b/damai-server/damai-program-service/src/main/java/com/damai/controller/SeatController.java index 9269ae38..1d783273 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/controller/SeatController.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/controller/SeatController.java @@ -2,6 +2,7 @@ package com.damai.controller; import com.damai.common.ApiResponse; import com.damai.dto.SeatAddDto; +import com.damai.dto.SeatBatchAddDto; import com.damai.dto.SeatListDto; import com.damai.service.SeatService; import com.damai.vo.SeatRelateInfoVo; @@ -29,12 +30,18 @@ public class SeatController { private SeatService seatService; - @ApiOperation(value = "添加") + @ApiOperation(value = "单个座位添加") @PostMapping(value = "/add") public ApiResponse add(@Valid @RequestBody SeatAddDto seatAddDto) { return ApiResponse.ok(seatService.add(seatAddDto)); } + @ApiOperation(value = "批量座位添加") + @PostMapping(value = "/batch/add") + public ApiResponse batchAdd(@Valid @RequestBody SeatBatchAddDto seatBatchAddDto) { + return ApiResponse.ok(seatService.batchAdd(seatBatchAddDto)); + } + @ApiOperation(value = "查询座位相关信息") @PostMapping(value = "/relate/info") public ApiResponse relateInfo(@Valid @RequestBody SeatListDto seatListDto) { diff --git a/damai-server/damai-program-service/src/main/java/com/damai/entity/Seat.java b/damai-server/damai-program-service/src/main/java/com/damai/entity/Seat.java index de10bd2d..e7ba78e0 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/entity/Seat.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/entity/Seat.java @@ -1,5 +1,7 @@ package com.damai.entity; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.damai.data.BaseTableData; import lombok.Data; @@ -21,6 +23,7 @@ public class Seat extends BaseTableData implements Serializable { /** * 主键id */ + @TableId(value = "id", type = IdType.AUTO) private Long id; /** diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/SeatService.java b/damai-server/damai-program-service/src/main/java/com/damai/service/SeatService.java index 26957830..e4ecdece 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/SeatService.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/SeatService.java @@ -9,6 +9,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.damai.core.RedisKeyManage; import com.damai.dto.ProgramGetDto; import com.damai.dto.SeatAddDto; +import com.damai.dto.SeatBatchAddDto; +import com.damai.dto.SeatBatchRelateInfoAddDto; import com.damai.dto.SeatListDto; import com.damai.entity.ProgramShowTime; import com.damai.entity.Seat; @@ -25,7 +27,9 @@ import com.damai.vo.SeatRelateInfoVo; import com.damai.vo.SeatVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.Comparator; import java.util.List; import java.util.Map; @@ -151,4 +155,38 @@ public class SeatService extends ServiceImpl { seatRelateInfoVo.setSeatVoMap(seatVoMap); return seatRelateInfoVo; } + + @Transactional(rollbackFor = Exception.class) + public Boolean batchAdd(SeatBatchAddDto seatBatchAddDto) { + Long programId = seatBatchAddDto.getProgramId(); + List seatBatchRelateInfoAddDtoList = seatBatchAddDto.getSeatBatchRelateInfoAddDtoList(); + + + int rowIndex = 0; + for (SeatBatchRelateInfoAddDto seatBatchRelateInfoAddDto : seatBatchRelateInfoAddDtoList) { + Long ticketCategoryId = seatBatchRelateInfoAddDto.getTicketCategoryId(); + BigDecimal price = seatBatchRelateInfoAddDto.getPrice(); + Integer count = seatBatchRelateInfoAddDto.getCount(); + + int colCount = 10; + int rowCount = count / colCount; + + for (int i = 1;i<= rowCount;i++) { + rowIndex++; + for (int j = 1;j<=colCount;j++) { + Seat seat = new Seat(); + seat.setProgramId(programId); + seat.setTicketCategoryId(ticketCategoryId); + seat.setRowCode(rowIndex); + seat.setColCode(j); + seat.setSeatType(1); + seat.setPrice(price); + seat.setSellStatus(SellStatus.NO_SOLD.getCode()); + seatMapper.insert(seat); + } + } + } + + return true; + } } diff --git a/damai-spring-cloud-framework/pom.xml b/damai-spring-cloud-framework/pom.xml index 24faa840..eaab94a8 100644 --- a/damai-spring-cloud-framework/pom.xml +++ b/damai-spring-cloud-framework/pom.xml @@ -18,7 +18,6 @@ damai-job-async damai-service-component damai-service-common - damai-sentinel-general damai-service-lossless damai-service-hystrix damai-service-initialize -- Gitee From d811165c08fdbe26de42d80989833dff0fdeb6b3 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1091900093@qq.com> Date: Thu, 21 Mar 2024 22:21:47 +0800 Subject: [PATCH 71/74] =?UTF-8?q?=E6=94=AF=E4=BB=98=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/damai/dto/PayBillDto.java | 24 ++++++ .../java/com/damai/dto/TradeCheckDto.java | 3 +- .../src/main/java/com/damai/vo/PayBillVo.java | 85 +++++++++++++++++++ .../com/damai/controller/PayController.java | 8 ++ .../java/com/damai/service/PayService.java | 13 +++ 5 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 damai-server-client/damai-pay-client/src/main/java/com/damai/dto/PayBillDto.java create mode 100644 damai-server-client/damai-pay-client/src/main/java/com/damai/vo/PayBillVo.java diff --git a/damai-server-client/damai-pay-client/src/main/java/com/damai/dto/PayBillDto.java b/damai-server-client/damai-pay-client/src/main/java/com/damai/dto/PayBillDto.java new file mode 100644 index 00000000..cb94cdd5 --- /dev/null +++ b/damai-server-client/damai-pay-client/src/main/java/com/damai/dto/PayBillDto.java @@ -0,0 +1,24 @@ +package com.damai.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 账单 dto + * @author: 阿宽不是程序员 + **/ +@Data +@ApiModel(value="PayDto", description ="支付") +public class PayBillDto implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(name ="orderNumber", dataType ="Long", value ="订单号") + @NotNull + private String orderNumber; +} diff --git a/damai-server-client/damai-pay-client/src/main/java/com/damai/dto/TradeCheckDto.java b/damai-server-client/damai-pay-client/src/main/java/com/damai/dto/TradeCheckDto.java index 8bf09579..2010a713 100644 --- a/damai-server-client/damai-pay-client/src/main/java/com/damai/dto/TradeCheckDto.java +++ b/damai-server-client/damai-pay-client/src/main/java/com/damai/dto/TradeCheckDto.java @@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; +import java.io.Serializable; /** * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 @@ -13,7 +14,7 @@ import javax.validation.constraints.NotBlank; **/ @Data @ApiModel(value="TradeCheckDto", description ="交易状态入参") -public class TradeCheckDto { +public class TradeCheckDto implements Serializable { @ApiModelProperty(name ="outTradeNo", dataType ="String", value ="商户订单号", required = true) @NotBlank diff --git a/damai-server-client/damai-pay-client/src/main/java/com/damai/vo/PayBillVo.java b/damai-server-client/damai-pay-client/src/main/java/com/damai/vo/PayBillVo.java new file mode 100644 index 00000000..43235f44 --- /dev/null +++ b/damai-server-client/damai-pay-client/src/main/java/com/damai/vo/PayBillVo.java @@ -0,0 +1,85 @@ +package com.damai.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料 + * @description: 支付账单 实体 + * @author: 阿宽不是程序员 + **/ +@Data +public class PayBillVo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ApiModelProperty(name ="id", dataType ="Long", value ="主键id") + private Long id; + + /** + * 支付流水号 + */ + @ApiModelProperty(name ="payNumber", dataType ="String", value ="支付流水号") + private String payNumber; + + /** + * 商户订单号 + */ + @ApiModelProperty(name ="outOrderNo", dataType ="String", value ="商户订单号") + private String outOrderNo; + + /** + * 支付渠道 + */ + @ApiModelProperty(name ="payChannel", dataType ="String", value ="支付渠道") + private String payChannel; + + /** + * 支付环境 + */ + @ApiModelProperty(name ="payScene", dataType ="String", value ="支付环境") + private String payScene; + + /** + * 订单标题 + */ + @ApiModelProperty(name ="subject", dataType ="String", value ="订单标题") + private String subject; + + /** + * 三方交易凭证号 + */ + @ApiModelProperty(name ="tradeNumber", dataType ="String", value ="三方交易凭证号") + private String tradeNumber; + + /** + * 支付金额 + */ + @ApiModelProperty(name ="payAmount", dataType ="String", value ="支付金额") + private BigDecimal payAmount; + + /** + * 支付种类 + * */ + @ApiModelProperty(name ="payBillType", dataType ="String", value ="支付种类") + private Integer payBillType; + + /** + * 支付状态 + */ + @ApiModelProperty(name ="payBillStatus", dataType ="String", value ="支付状态") + private Integer payBillStatus; + + /** + * 支付时间 + */ + @ApiModelProperty(name ="payTime", dataType ="String", value ="支付时间") + private Date payTime; +} diff --git a/damai-server/damai-pay-service/src/main/java/com/damai/controller/PayController.java b/damai-server/damai-pay-service/src/main/java/com/damai/controller/PayController.java index 1ac16277..447f64ff 100644 --- a/damai-server/damai-pay-service/src/main/java/com/damai/controller/PayController.java +++ b/damai-server/damai-pay-service/src/main/java/com/damai/controller/PayController.java @@ -2,10 +2,12 @@ package com.damai.controller; import com.damai.common.ApiResponse; import com.damai.dto.NotifyDto; +import com.damai.dto.PayBillDto; import com.damai.dto.PayDto; import com.damai.dto.TradeCheckDto; import com.damai.service.PayService; import com.damai.vo.NotifyVo; +import com.damai.vo.PayBillVo; import com.damai.vo.TradeCheckVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -47,4 +49,10 @@ public class PayController { public ApiResponse tradeCheck(@Valid @RequestBody TradeCheckDto tradeCheckDto) { return ApiResponse.ok(payService.tradeCheck(tradeCheckDto)); } + + @ApiOperation(value = "账单详情查询") + @PostMapping(value = "/detail") + public ApiResponse detail(@Valid @RequestBody PayBillDto payBillDto) { + return ApiResponse.ok(payService.detail(payBillDto)); + } } diff --git a/damai-server/damai-pay-service/src/main/java/com/damai/service/PayService.java b/damai-server/damai-pay-service/src/main/java/com/damai/service/PayService.java index 1147a958..5452d3b0 100644 --- a/damai-server/damai-pay-service/src/main/java/com/damai/service/PayService.java +++ b/damai-server/damai-pay-service/src/main/java/com/damai/service/PayService.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.damai.dto.NotifyDto; +import com.damai.dto.PayBillDto; import com.damai.dto.PayDto; import com.damai.dto.TradeCheckDto; import com.damai.entity.PayBill; @@ -21,6 +22,7 @@ import com.damai.pay.TradeResult; import com.damai.servicelock.annotion.ServiceLock; import com.damai.util.DateUtils; import com.damai.vo.NotifyVo; +import com.damai.vo.PayBillVo; import com.damai.vo.TradeCheckVo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -177,4 +179,15 @@ public class PayService { } return tradeCheckVo; } + + public PayBillVo detail(PayBillDto payBillDto) { + PayBillVo payBillVo = new PayBillVo(); + LambdaQueryWrapper payBillLambdaQueryWrapper = + Wrappers.lambdaQuery(PayBill.class).eq(PayBill::getOutOrderNo, payBillDto.getOrderNumber()); + PayBill payBill = payBillMapper.selectOne(payBillLambdaQueryWrapper); + if (Objects.nonNull(payBill)) { + BeanUtil.copyProperties(payBill,payBillVo); + } + return payBillVo; + } } -- Gitee From beeabbcda124014ff60cf3e34efdeb5fffa108ab Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Fri, 22 Mar 2024 14:40:37 +0800 Subject: [PATCH 72/74] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/bootstrap.yml | 4 ++-- .../src/main/resources/bootstrap.yml | 4 ++-- .../src/main/resources/bootstrap.yml | 4 ++-- .../damai-job-service/src/main/resources/bootstrap.yml | 2 +- .../damai-order-service/src/main/resources/bootstrap.yml | 4 ++-- .../src/main/resources/shardingsphere-order.yaml | 8 ++++---- .../damai-pay-service/src/main/resources/bootstrap.yml | 4 ++-- .../src/main/resources/shardingsphere-pay.yaml | 8 ++++---- .../src/main/resources/bootstrap.yml | 4 ++-- .../src/main/resources/shardingsphere-program.yaml | 8 ++++---- .../damai-single-service/src/main/resources/bootstrap.yml | 4 ++-- .../src/main/resources/shardingsphere-single.yaml | 4 ++-- .../damai-user-service/src/main/resources/bootstrap.yml | 4 ++-- .../src/main/resources/shardingsphere-user.yaml | 8 ++++---- 14 files changed, 35 insertions(+), 35 deletions(-) diff --git a/damai-server/damai-base-data-service/src/main/resources/bootstrap.yml b/damai-server/damai-base-data-service/src/main/resources/bootstrap.yml index 02a63aee..c669edf1 100644 --- a/damai-server/damai-base-data-service/src/main/resources/bootstrap.yml +++ b/damai-server/damai-base-data-service/src/main/resources/bootstrap.yml @@ -10,11 +10,11 @@ spring: cloud: nacos: discovery: - server-addr: 62.234.31.217:8848 + server-addr: 127.0.0.1:8848 username: nacos password: nacos config: - server-addr: 62.234.31.217:8848 + server-addr: 127.0.0.1:8848 file-extension: yaml shared-configs: - data-id: common.yaml diff --git a/damai-server/damai-customize-service/src/main/resources/bootstrap.yml b/damai-server/damai-customize-service/src/main/resources/bootstrap.yml index 8e499671..76de7b28 100644 --- a/damai-server/damai-customize-service/src/main/resources/bootstrap.yml +++ b/damai-server/damai-customize-service/src/main/resources/bootstrap.yml @@ -10,11 +10,11 @@ spring: cloud: nacos: discovery: - server-addr: 62.234.31.217:8848 + server-addr: 127.0.0.1:8848 username: nacos password: nacos config: - server-addr: 62.234.31.217:8848 + server-addr: 127.0.0.1:8848 file-extension: yaml shared-configs: - data-id: common.yaml diff --git a/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml b/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml index e7d8ebd4..56894d63 100644 --- a/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml +++ b/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml @@ -9,11 +9,11 @@ spring: cloud: nacos: discovery: - server-addr: 62.234.31.217:8848 + server-addr: 127.0.0.1:8848 username: nacos password: nacos config: - server-addr: 62.234.31.217:8848 + server-addr: 127.0.0.1:8848 file-extension: yaml shared-configs: - data-id: common.yaml diff --git a/damai-server/damai-job-service/src/main/resources/bootstrap.yml b/damai-server/damai-job-service/src/main/resources/bootstrap.yml index de54e049..5724c176 100644 --- a/damai-server/damai-job-service/src/main/resources/bootstrap.yml +++ b/damai-server/damai-job-service/src/main/resources/bootstrap.yml @@ -12,7 +12,7 @@ spring: discovery: server-addr: www.cookframe.com:8848 config: - server-addr: 62.234.31.217:8848 + server-addr: 127.0.0.1:8848 file-extension: yaml shared-configs: - data-id: common.yaml diff --git a/damai-server/damai-order-service/src/main/resources/bootstrap.yml b/damai-server/damai-order-service/src/main/resources/bootstrap.yml index 77de864b..8b7b7ce6 100644 --- a/damai-server/damai-order-service/src/main/resources/bootstrap.yml +++ b/damai-server/damai-order-service/src/main/resources/bootstrap.yml @@ -10,11 +10,11 @@ spring: cloud: nacos: discovery: - server-addr: 62.234.31.217:8848 + server-addr: 127.0.0.1:8848 username: nacos password: nacos config: - server-addr: 62.234.31.217:8848 + server-addr: 127.0.0.1:8848 file-extension: yaml shared-configs: - data-id: common.yaml diff --git a/damai-server/damai-order-service/src/main/resources/shardingsphere-order.yaml b/damai-server/damai-order-service/src/main/resources/shardingsphere-order.yaml index 078f9938..8b8609f0 100644 --- a/damai-server/damai-order-service/src/main/resources/shardingsphere-order.yaml +++ b/damai-server/damai-order-service/src/main/resources/shardingsphere-order.yaml @@ -2,15 +2,15 @@ dataSources: ds_0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver - jdbcUrl: jdbc:mysql://www.cookframe.com:3306/damai_order_0?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&autoReconnect=true + jdbcUrl: jdbc:mysql://127.0.0.1:3306/damai_order_0?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&autoReconnect=true username: root - password: qaz321qwe! + password: root ds_1: dataSourceClassName: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver - jdbcUrl: jdbc:mysql://www.cookframe.com:3306/damai_order_1?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&autoReconnect=true + jdbcUrl: jdbc:mysql://127.0.0.1:3306/damai_order_1?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&autoReconnect=true username: root - password: qaz321qwe! + password: root rules: - !SHARDING diff --git a/damai-server/damai-pay-service/src/main/resources/bootstrap.yml b/damai-server/damai-pay-service/src/main/resources/bootstrap.yml index cc4cf9e5..ad75cd29 100644 --- a/damai-server/damai-pay-service/src/main/resources/bootstrap.yml +++ b/damai-server/damai-pay-service/src/main/resources/bootstrap.yml @@ -10,11 +10,11 @@ spring: cloud: nacos: discovery: - server-addr: 62.234.31.217:8848 + server-addr: 127.0.0.1:8848 username: nacos password: nacos config: - server-addr: 62.234.31.217:8848 + server-addr: 127.0.0.1:8848 file-extension: yaml shared-configs: - data-id: common.yaml diff --git a/damai-server/damai-pay-service/src/main/resources/shardingsphere-pay.yaml b/damai-server/damai-pay-service/src/main/resources/shardingsphere-pay.yaml index 7bfbc000..81950512 100644 --- a/damai-server/damai-pay-service/src/main/resources/shardingsphere-pay.yaml +++ b/damai-server/damai-pay-service/src/main/resources/shardingsphere-pay.yaml @@ -2,16 +2,16 @@ dataSources: ds_0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver - jdbcUrl: jdbc:mysql://www.cookframe.com:3306/damai_pay_0?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai + jdbcUrl: jdbc:mysql://127.0.0.1:3306/damai_pay_0?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai username: root - password: qaz321qwe! + password: root ds_1: dataSourceClassName: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver - jdbcUrl: jdbc:mysql://www.cookframe.com:3306/damai_pay_1?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai + jdbcUrl: jdbc:mysql://127.0.0.1:3306/damai_pay_1?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai username: root - password: qaz321qwe! + password: root rules: # 分库分表规则 diff --git a/damai-server/damai-program-service/src/main/resources/bootstrap.yml b/damai-server/damai-program-service/src/main/resources/bootstrap.yml index 94a269cd..09b6d221 100644 --- a/damai-server/damai-program-service/src/main/resources/bootstrap.yml +++ b/damai-server/damai-program-service/src/main/resources/bootstrap.yml @@ -8,11 +8,11 @@ spring: cloud: nacos: discovery: - server-addr: 62.234.31.217:8848 + server-addr: 127.0.0.1:8848 username: nacos password: nacos config: - server-addr: 62.234.31.217:8848 + server-addr: 127.0.0.1:8848 file-extension: yaml shared-configs: - data-id: common.yaml diff --git a/damai-server/damai-program-service/src/main/resources/shardingsphere-program.yaml b/damai-server/damai-program-service/src/main/resources/shardingsphere-program.yaml index 1c4fadc3..b7f1a881 100644 --- a/damai-server/damai-program-service/src/main/resources/shardingsphere-program.yaml +++ b/damai-server/damai-program-service/src/main/resources/shardingsphere-program.yaml @@ -2,16 +2,16 @@ dataSources: ds_0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver - jdbcUrl: jdbc:mysql://www.cookframe.com:3306/damai_program_0?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&autoReconnect=true + jdbcUrl: jdbc:mysql://127.0.0.1:3306/damai_program_0?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&autoReconnect=true username: root - password: qaz321qwe! + password: root ds_1: dataSourceClassName: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver - jdbcUrl: jdbc:mysql://www.cookframe.com:3306/damai_program_1?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&autoReconnect=true + jdbcUrl: jdbc:mysql://127.0.0.1:3306:3306/damai_program_1?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&autoReconnect=true username: root - password: qaz321qwe! + password: root rules: - !SHARDING diff --git a/damai-server/damai-single-service/src/main/resources/bootstrap.yml b/damai-server/damai-single-service/src/main/resources/bootstrap.yml index bbf4ff95..c1c37d8d 100644 --- a/damai-server/damai-single-service/src/main/resources/bootstrap.yml +++ b/damai-server/damai-single-service/src/main/resources/bootstrap.yml @@ -8,11 +8,11 @@ spring: cloud: nacos: discovery: - server-addr: 62.234.31.217:8848 + server-addr: 127.0.0.1:8848 username: nacos password: nacos config: - server-addr: 62.234.31.217:8848 + server-addr: 127.0.0.1:8848 file-extension: yaml shared-configs: - data-id: common.yaml diff --git a/damai-server/damai-single-service/src/main/resources/shardingsphere-single.yaml b/damai-server/damai-single-service/src/main/resources/shardingsphere-single.yaml index 7af3001f..e5b41f27 100644 --- a/damai-server/damai-single-service/src/main/resources/shardingsphere-single.yaml +++ b/damai-server/damai-single-service/src/main/resources/shardingsphere-single.yaml @@ -2,9 +2,9 @@ dataSources: ds: dataSourceClassName: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver - jdbcUrl: jdbc:mysql://82.157.255.105:3306/damai?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai + jdbcUrl: jdbc:mysql://127.0.0.1:3306/damai?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai username: root - password: qaz321qwe! + password: root rules: # 分库分表规则 diff --git a/damai-server/damai-user-service/src/main/resources/bootstrap.yml b/damai-server/damai-user-service/src/main/resources/bootstrap.yml index 8767d913..38b81f4d 100644 --- a/damai-server/damai-user-service/src/main/resources/bootstrap.yml +++ b/damai-server/damai-user-service/src/main/resources/bootstrap.yml @@ -8,11 +8,11 @@ spring: cloud: nacos: discovery: - server-addr: 62.234.31.217:8848 + server-addr: 127.0.0.1:8848 username: nacos password: nacos config: - server-addr: 62.234.31.217:8848 + server-addr: 127.0.0.1:8848 file-extension: yaml shared-configs: - data-id: common.yaml diff --git a/damai-server/damai-user-service/src/main/resources/shardingsphere-user.yaml b/damai-server/damai-user-service/src/main/resources/shardingsphere-user.yaml index 992ba6e2..23f45bfb 100644 --- a/damai-server/damai-user-service/src/main/resources/shardingsphere-user.yaml +++ b/damai-server/damai-user-service/src/main/resources/shardingsphere-user.yaml @@ -2,15 +2,15 @@ dataSources: ds_0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver - jdbcUrl: jdbc:mysql://www.cookframe.com:3306/damai_user_0?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai + jdbcUrl: jdbc:mysql://127.0.0.1:3306/damai_user_0?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai username: root - password: qaz321qwe! + password: root ds_1: dataSourceClassName: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver - jdbcUrl: jdbc:mysql://www.cookframe.com:3306/damai_user_1?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai + jdbcUrl: jdbc:mysql://127.0.0.1:3306/damai_user_1?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai username: root - password: qaz321qwe! + password: root rules: - !SHARDING -- Gitee From 2346d81f823c3f249868f8b368fffa24e61cdeb1 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Fri, 22 Mar 2024 17:48:39 +0800 Subject: [PATCH 73/74] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application.yml | 7 +- .../src/main/resources/application.yml | 94 ++++++++++ .../src/main/resources/bootstrap.yml | 23 --- .../src/main/resources/application.yml | 102 +++++++++++ .../src/main/resources/bootstrap.yml | 23 --- .../src/main/resources/application.yml | 163 ++++++++++++++++++ .../src/main/resources/bootstrap.yml | 22 --- .../src/main/resources/bootstrap.yml | 2 +- .../src/main/resources/application.yml | 91 ++++++++++ .../src/main/resources/bootstrap.yml | 23 --- .../src/main/resources/application.yml | 91 ++++++++++ .../src/main/resources/bootstrap.yml | 23 --- ...java => ProgramUserExistCheckHandler.java} | 2 +- .../src/main/resources/application.yml | 115 ++++++++++++ .../src/main/resources/bootstrap.yml | 21 --- .../src/main/resources/application.yml | 146 ++++++++++++++++ .../src/main/resources/bootstrap.yml | 21 --- .../src/main/resources/application.yml | 112 ++++++++++++ .../src/main/resources/bootstrap.yml | 22 --- sql/dababase.sql | 16 ++ sql/procedure_insert_pay.sql | 31 ---- sql/procedure_insert_test.sql | 26 --- sql/table.sql | 121 ------------- 23 files changed, 935 insertions(+), 362 deletions(-) create mode 100644 damai-server/damai-base-data-service/src/main/resources/application.yml delete mode 100644 damai-server/damai-base-data-service/src/main/resources/bootstrap.yml create mode 100644 damai-server/damai-customize-service/src/main/resources/application.yml delete mode 100644 damai-server/damai-customize-service/src/main/resources/bootstrap.yml create mode 100644 damai-server/damai-gateway-service/src/main/resources/application.yml delete mode 100644 damai-server/damai-gateway-service/src/main/resources/bootstrap.yml create mode 100644 damai-server/damai-order-service/src/main/resources/application.yml delete mode 100644 damai-server/damai-order-service/src/main/resources/bootstrap.yml create mode 100644 damai-server/damai-pay-service/src/main/resources/application.yml delete mode 100644 damai-server/damai-pay-service/src/main/resources/bootstrap.yml rename damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/{UserExistCheckHandler.java => ProgramUserExistCheckHandler.java} (97%) create mode 100644 damai-server/damai-program-service/src/main/resources/application.yml delete mode 100644 damai-server/damai-program-service/src/main/resources/bootstrap.yml create mode 100644 damai-server/damai-single-service/src/main/resources/application.yml delete mode 100644 damai-server/damai-single-service/src/main/resources/bootstrap.yml create mode 100644 damai-server/damai-user-service/src/main/resources/application.yml delete mode 100644 damai-server/damai-user-service/src/main/resources/bootstrap.yml create mode 100644 sql/dababase.sql delete mode 100644 sql/procedure_insert_pay.sql delete mode 100644 sql/procedure_insert_test.sql delete mode 100644 sql/table.sql diff --git a/damai-server/damai-admin-service/src/main/resources/application.yml b/damai-server/damai-admin-service/src/main/resources/application.yml index f635c2d8..857a7810 100644 --- a/damai-server/damai-admin-service/src/main/resources/application.yml +++ b/damai-server/damai-admin-service/src/main/resources/application.yml @@ -9,10 +9,9 @@ spring: cloud: nacos: discovery: - server-addr: www.cookframe.com:8848 - # 标识 - metadata: - mark: true + server-addr: 127.0.0.1:8848 + username: nacos + password: nacos security: user: name: admin diff --git a/damai-server/damai-base-data-service/src/main/resources/application.yml b/damai-server/damai-base-data-service/src/main/resources/application.yml new file mode 100644 index 00000000..80ff3c21 --- /dev/null +++ b/damai-server/damai-base-data-service/src/main/resources/application.yml @@ -0,0 +1,94 @@ +#服务端口 +server: + port: 6083 +# 应用名称 +spring: + application: + name: ${prefix.distinction.name:damai}-base-data-service + main: + allow-bean-definition-overriding: true + mvc: + pathmatch: + matching-strategy: ant_path_matcher + servlet: + load-on-startup: 1 + jackson: + time-zone: GMT+8 + date-format: yyyy-MM-dd HH:mm:ss + generator: + WRITE_NUMBERS_AS_STRINGS: true + datasource: + type: com.zaxxer.hikari.HikariDataSource + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3306/damai_base_data?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai + username: root + password: root + redis: + database: 0 + host: 127.0.0.1 + port: 6379 + timeout: 3000 + cloud: + nacos: + discovery: + server-addr: 127.0.0.1:8848 + username: nacos + password: nacos +mybatis-plus: + mapper-locations: classpath:mapper/*.xml + global-config: + db-config: + logic-delete-field: status + logic-delete-value: 0 + logic-not-delete-value: 1 + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + local-cache-scope: statement +feign: + sentinel: + enabled: false + hystrix: + enabled: true + httpclient: + enabled: false + okhttp: + enabled: true + compression: + request: + enabled: true + mime-types: text/xml,application/xml,application/json + min-request-size: 512 + response: + enabled: true +hystrix: + command: + default: + execution: + timeout: + enabled: true + isolation: + thread: + timeoutInMilliseconds: 10000 + semaphore: + maxConcurrentRequests: 99999 +ribbon: + ReadTimeout: 60000 + ConnectTimeout: 60000 + MaxAutoRetries: 0 + MaxAutoRetriesNextServer: 1 +management: + endpoints: + web: + exposure: + include: '*' + health: + show-details: always + security: + enabled: false + health: + elasticsearch: + enabled: false +jasypt: + encryptor: + password: bgtjkjl!%^sdc + algorithm: PBEWithMD5AndDES diff --git a/damai-server/damai-base-data-service/src/main/resources/bootstrap.yml b/damai-server/damai-base-data-service/src/main/resources/bootstrap.yml deleted file mode 100644 index c669edf1..00000000 --- a/damai-server/damai-base-data-service/src/main/resources/bootstrap.yml +++ /dev/null @@ -1,23 +0,0 @@ -#服务端口 -server: - port: 6083 -# 应用名称 -spring: - application: - name: ${prefix.distinction.name:damai}-base-data-service - main: - allow-bean-definition-overriding: true - cloud: - nacos: - discovery: - server-addr: 127.0.0.1:8848 - username: nacos - password: nacos - config: - server-addr: 127.0.0.1:8848 - file-extension: yaml - shared-configs: - - data-id: common.yaml - refresh: true - username: nacos - password: nacos diff --git a/damai-server/damai-customize-service/src/main/resources/application.yml b/damai-server/damai-customize-service/src/main/resources/application.yml new file mode 100644 index 00000000..87eae042 --- /dev/null +++ b/damai-server/damai-customize-service/src/main/resources/application.yml @@ -0,0 +1,102 @@ +#服务端口 +server: + port: 6084 +# 应用名称 +spring: + application: + name: ${prefix.distinction.name:damai}-customize-service + main: + allow-bean-definition-overriding: true + mvc: + pathmatch: + matching-strategy: ant_path_matcher + servlet: + load-on-startup: 1 + jackson: + time-zone: GMT+8 + date-format: yyyy-MM-dd HH:mm:ss + generator: + WRITE_NUMBERS_AS_STRINGS: true + datasource: + type: com.zaxxer.hikari.HikariDataSource + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3306/damai_customize?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai + username: root + password: root + redis: + database: 0 + host: 127.0.0.1 + port: 6379 + timeout: 3000 + cloud: + nacos: + discovery: + server-addr: 127.0.0.1:8848 + username: nacos + password: nacos +kafka: + consumer: + servers: 127.0.0.1:9092 + autoCommit: true + autoCommitIntervalMs: 2000 + autoOffsetReset: latest + groupId: api_data + topic: save_api_data +mybatis-plus: + mapper-locations: classpath:mapper/*.xml + global-config: + db-config: + logic-delete-field: status + logic-delete-value: 0 + logic-not-delete-value: 1 + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + local-cache-scope: statement +feign: + sentinel: + enabled: false + hystrix: + enabled: true + httpclient: + enabled: false + okhttp: + enabled: true + compression: + request: + enabled: true + mime-types: text/xml,application/xml,application/json + min-request-size: 512 + response: + enabled: true +hystrix: + command: + default: + execution: + timeout: + enabled: true + isolation: + thread: + timeoutInMilliseconds: 10000 + semaphore: + maxConcurrentRequests: 99999 +ribbon: + ReadTimeout: 60000 + ConnectTimeout: 60000 + MaxAutoRetries: 0 + MaxAutoRetriesNextServer: 1 +management: + endpoints: + web: + exposure: + include: '*' + health: + show-details: always + security: + enabled: false + health: + elasticsearch: + enabled: false +jasypt: + encryptor: + password: bgtjkjl!%^sdc + algorithm: PBEWithMD5AndDES \ No newline at end of file diff --git a/damai-server/damai-customize-service/src/main/resources/bootstrap.yml b/damai-server/damai-customize-service/src/main/resources/bootstrap.yml deleted file mode 100644 index 76de7b28..00000000 --- a/damai-server/damai-customize-service/src/main/resources/bootstrap.yml +++ /dev/null @@ -1,23 +0,0 @@ -#服务端口 -server: - port: 6084 -# 应用名称 -spring: - application: - name: ${prefix.distinction.name:damai}-customize-service - main: - allow-bean-definition-overriding: true - cloud: - nacos: - discovery: - server-addr: 127.0.0.1:8848 - username: nacos - password: nacos - config: - server-addr: 127.0.0.1:8848 - file-extension: yaml - shared-configs: - - data-id: common.yaml - refresh: true - username: nacos - password: nacos diff --git a/damai-server/damai-gateway-service/src/main/resources/application.yml b/damai-server/damai-gateway-service/src/main/resources/application.yml new file mode 100644 index 00000000..b3c04527 --- /dev/null +++ b/damai-server/damai-gateway-service/src/main/resources/application.yml @@ -0,0 +1,163 @@ +#服务端口 +server: + port: 6085 +# 应用名称 +spring: + application: + name: ${prefix.distinction.name:damai}-gateway-service + main: + allow-bean-definition-overriding: true + redis: + database: 0 + host: 127.0.0.1 + port: 6379 + timeout: 3000 + cloud: + nacos: + discovery: + server-addr: 127.0.0.1:8848 + username: nacos + password: nacos + sentinel: + eager: true + transport: + port: 8768 + dashboard: 127.0.0.1:8082 + datasource: + degrade: + nacos: + server-addr: 127.0.0.1:8848 + dataId: ${spring.application.name}-degrade-rules + groupId: SENTINEL_GROUP + dataType: json + rule-type: degrade + flow: + nacos: + server-addr: 127.0.0.1:8848 + dataId: ${spring.application.name}-flow-rules + groupId: SENTINEL_GROUP + dataType: json + rule-type: flow + gateway: + enabled: true + discovery: + locator: + enabled: true + routes: + - id: ${prefix.distinction.name:damai}-base-data-service + uri: lb://${prefix.distinction.name:damai}-base-data-service + predicates: + - Path=/damai/basedata/** + filters: + - StripPrefix=2 + metadata: + title: 基础数据服务 + + - id: ${prefix.distinction.name:damai}-customize-service + uri: lb://${prefix.distinction.name:damai}-customize-service + predicates: + - Path=/damai/customize/** + filters: + - StripPrefix=2 + metadata: + title: 定制化服务 + + - id: ${prefix.distinction.name:damai}-job-service + uri: lb://${prefix.distinction.name:damai}-job-service + predicates: + - Path=/damai/job/** + filters: + - StripPrefix=2 + metadata: + title: 任务执行服务 + + - id: ${prefix.distinction.name:damai}-order-service + uri: lb://${prefix.distinction.name:damai}-order-service + predicates: + - Path=/damai/order/** + filters: + - StripPrefix=2 + metadata: + title: 订单服务 + + - id: ${prefix.distinction.name:damai}-pay-service + uri: lb://${prefix.distinction.name:damai}-pay-service + predicates: + - Path=/damai/pay/** + filters: + - StripPrefix=2 + metadata: + title: 支付服务 + + - id: ${prefix.distinction.name:damai}-program-service + uri: lb://${prefix.distinction.name:damai}-program-service + predicates: + - Path=/damai/program/** + filters: + - StripPrefix=2 + metadata: + title: 节目服务 + + - id: ${prefix.distinction.name:damai}-user-service + uri: lb://${prefix.distinction.name:damai}-user-service + predicates: + - Path=/damai/user/** + filters: + - StripPrefix=2 + metadata: + title: 用户服务 +api: + limit: + paths: /**/customize/test/test +kafka: + producer: + servers: 127.0.0.1:9092 + topic: save_api_data +feign: + sentinel: + enabled: false + hystrix: + enabled: true + httpclient: + enabled: false + okhttp: + enabled: true + compression: + request: + enabled: true + mime-types: text/xml,application/xml,application/json + min-request-size: 512 + response: + enabled: true +hystrix: + command: + default: + execution: + timeout: + enabled: true + isolation: + thread: + timeoutInMilliseconds: 10000 + semaphore: + maxConcurrentRequests: 99999 +ribbon: + ReadTimeout: 60000 + ConnectTimeout: 60000 + MaxAutoRetries: 0 + MaxAutoRetriesNextServer: 1 +management: + endpoints: + web: + exposure: + include: '*' + health: + show-details: always + security: + enabled: false + health: + elasticsearch: + enabled: false +jasypt: + encryptor: + password: bgtjkjl!%^sdc + algorithm: PBEWithMD5AndDES \ No newline at end of file diff --git a/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml b/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml deleted file mode 100644 index 56894d63..00000000 --- a/damai-server/damai-gateway-service/src/main/resources/bootstrap.yml +++ /dev/null @@ -1,22 +0,0 @@ -#服务端口 -server: - port: 6085 -# 应用名称 -spring: - application: - name: ${prefix.distinction.name:damai}-gateway-service - #name: ${prefix.distinction.name:damai}-gateway-single-service - cloud: - nacos: - discovery: - server-addr: 127.0.0.1:8848 - username: nacos - password: nacos - config: - server-addr: 127.0.0.1:8848 - file-extension: yaml - shared-configs: - - data-id: common.yaml - refresh: true - username: nacos - password: nacos \ No newline at end of file diff --git a/damai-server/damai-job-service/src/main/resources/bootstrap.yml b/damai-server/damai-job-service/src/main/resources/bootstrap.yml index 5724c176..23cde144 100644 --- a/damai-server/damai-job-service/src/main/resources/bootstrap.yml +++ b/damai-server/damai-job-service/src/main/resources/bootstrap.yml @@ -10,7 +10,7 @@ spring: cloud: nacos: discovery: - server-addr: www.cookframe.com:8848 + server-addr: 127.0.0.1:8848 config: server-addr: 127.0.0.1:8848 file-extension: yaml diff --git a/damai-server/damai-order-service/src/main/resources/application.yml b/damai-server/damai-order-service/src/main/resources/application.yml new file mode 100644 index 00000000..08bed3bc --- /dev/null +++ b/damai-server/damai-order-service/src/main/resources/application.yml @@ -0,0 +1,91 @@ +#服务端口 +server: + port: 8081 +# 应用名称 +spring: + application: + name: ${prefix.distinction.name:damai}-order-service + main: + allow-bean-definition-overriding: true + mvc: + pathmatch: + matching-strategy: ant_path_matcher + servlet: + load-on-startup: 1 + jackson: + time-zone: GMT+8 + date-format: yyyy-MM-dd HH:mm:ss + generator: + WRITE_NUMBERS_AS_STRINGS: true + datasource: + driver-class-name: org.apache.shardingsphere.driver.ShardingSphereDriver + url: jdbc:shardingsphere:classpath:shardingsphere-order.yaml + redis: + database: 0 + host: 127.0.0.1 + port: 6379 + timeout: 3000 + cloud: + nacos: + discovery: + server-addr: 127.0.0.1:8848 + username: nacos + password: nacos +mybatis-plus: + mapper-locations: classpath:mapper/*.xml + global-config: + db-config: + logic-delete-field: status + logic-delete-value: 0 + logic-not-delete-value: 1 + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + local-cache-scope: statement +feign: + sentinel: + enabled: false + hystrix: + enabled: true + httpclient: + enabled: false + okhttp: + enabled: true + compression: + request: + enabled: true + mime-types: text/xml,application/xml,application/json + min-request-size: 512 + response: + enabled: true +hystrix: + command: + default: + execution: + timeout: + enabled: true + isolation: + thread: + timeoutInMilliseconds: 10000 + semaphore: + maxConcurrentRequests: 99999 +ribbon: + ReadTimeout: 60000 + ConnectTimeout: 60000 + MaxAutoRetries: 0 + MaxAutoRetriesNextServer: 1 +management: + endpoints: + web: + exposure: + include: '*' + health: + show-details: always + security: + enabled: false + health: + elasticsearch: + enabled: false +jasypt: + encryptor: + password: bgtjkjl!%^sdc + algorithm: PBEWithMD5AndDES \ No newline at end of file diff --git a/damai-server/damai-order-service/src/main/resources/bootstrap.yml b/damai-server/damai-order-service/src/main/resources/bootstrap.yml deleted file mode 100644 index 8b7b7ce6..00000000 --- a/damai-server/damai-order-service/src/main/resources/bootstrap.yml +++ /dev/null @@ -1,23 +0,0 @@ -#服务端口 -server: - port: 8081 -# 应用名称 -spring: - application: - name: ${prefix.distinction.name:damai}-order-service - main: - allow-bean-definition-overriding: true - cloud: - nacos: - discovery: - server-addr: 127.0.0.1:8848 - username: nacos - password: nacos - config: - server-addr: 127.0.0.1:8848 - file-extension: yaml - shared-configs: - - data-id: common.yaml - refresh: true - username: nacos - password: nacos diff --git a/damai-server/damai-pay-service/src/main/resources/application.yml b/damai-server/damai-pay-service/src/main/resources/application.yml new file mode 100644 index 00000000..620ff014 --- /dev/null +++ b/damai-server/damai-pay-service/src/main/resources/application.yml @@ -0,0 +1,91 @@ +#服务端口 +server: + port: 6087 +# 应用名称 +spring: + application: + name: ${prefix.distinction.name:damai}-pay-service + main: + allow-bean-definition-overriding: true + mvc: + pathmatch: + matching-strategy: ant_path_matcher + servlet: + load-on-startup: 1 + jackson: + time-zone: GMT+8 + date-format: yyyy-MM-dd HH:mm:ss + generator: + WRITE_NUMBERS_AS_STRINGS: true + datasource: + driver-class-name: org.apache.shardingsphere.driver.ShardingSphereDriver + url: jdbc:shardingsphere:classpath:shardingsphere-pay.yaml + redis: + database: 0 + host: 127.0.0.1 + port: 6379 + timeout: 3000 + cloud: + nacos: + discovery: + server-addr: 127.0.0.1:8848 + username: nacos + password: nacos +mybatis-plus: + mapper-locations: classpath:mapper/*.xml + global-config: + db-config: + logic-delete-field: status + logic-delete-value: 0 + logic-not-delete-value: 1 + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + local-cache-scope: statement +feign: + sentinel: + enabled: false + hystrix: + enabled: true + httpclient: + enabled: false + okhttp: + enabled: true + compression: + request: + enabled: true + mime-types: text/xml,application/xml,application/json + min-request-size: 512 + response: + enabled: true +hystrix: + command: + default: + execution: + timeout: + enabled: true + isolation: + thread: + timeoutInMilliseconds: 10000 + semaphore: + maxConcurrentRequests: 99999 +ribbon: + ReadTimeout: 60000 + ConnectTimeout: 60000 + MaxAutoRetries: 0 + MaxAutoRetriesNextServer: 1 +management: + endpoints: + web: + exposure: + include: '*' + health: + show-details: always + security: + enabled: false + health: + elasticsearch: + enabled: false +jasypt: + encryptor: + password: bgtjkjl!%^sdc + algorithm: PBEWithMD5AndDES \ No newline at end of file diff --git a/damai-server/damai-pay-service/src/main/resources/bootstrap.yml b/damai-server/damai-pay-service/src/main/resources/bootstrap.yml deleted file mode 100644 index ad75cd29..00000000 --- a/damai-server/damai-pay-service/src/main/resources/bootstrap.yml +++ /dev/null @@ -1,23 +0,0 @@ -#服务端口 -server: - port: 6087 -# 应用名称 -spring: - application: - name: ${prefix.distinction.name:damai}-pay-service - main: - allow-bean-definition-overriding: true - cloud: - nacos: - discovery: - server-addr: 127.0.0.1:8848 - username: nacos - password: nacos - config: - server-addr: 127.0.0.1:8848 - file-extension: yaml - shared-configs: - - data-id: common.yaml - refresh: true - username: nacos - password: nacos diff --git a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/UserExistCheckHandler.java b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramUserExistCheckHandler.java similarity index 97% rename from damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/UserExistCheckHandler.java rename to damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramUserExistCheckHandler.java index b51c9728..5e1cfb17 100644 --- a/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/UserExistCheckHandler.java +++ b/damai-server/damai-program-service/src/main/java/com/damai/service/composite/impl/ProgramUserExistCheckHandler.java @@ -29,7 +29,7 @@ import java.util.stream.Collectors; **/ @Slf4j @Component -public class UserExistCheckHandler extends AbstractProgramCheckHandler { +public class ProgramUserExistCheckHandler extends AbstractProgramCheckHandler { @Autowired private UserClient userClient; diff --git a/damai-server/damai-program-service/src/main/resources/application.yml b/damai-server/damai-program-service/src/main/resources/application.yml new file mode 100644 index 00000000..d76a694d --- /dev/null +++ b/damai-server/damai-program-service/src/main/resources/application.yml @@ -0,0 +1,115 @@ +#服务端口 +server: + port: 6086 +# 应用名称 +spring: + application: + name: ${prefix.distinction.name:damai}-program-service + main: + allow-bean-definition-overriding: true + mvc: + pathmatch: + matching-strategy: ant_path_matcher + servlet: + load-on-startup: 1 + jackson: + time-zone: GMT+8 + date-format: yyyy-MM-dd HH:mm:ss + generator: + WRITE_NUMBERS_AS_STRINGS: true + datasource: + driver-class-name: org.apache.shardingsphere.driver.ShardingSphereDriver + url: jdbc:shardingsphere:classpath:shardingsphere-program.yaml + redis: + database: 0 + host: 127.0.0.1 + port: 6379 + timeout: 3000 + cloud: + nacos: + discovery: + server-addr: 127.0.0.1:8848 + username: nacos + password: nacos + sentinel: + transport: + port: 8719 + dashboard: 127.0.0.1:8082 + datasource: + degrade: + nacos: + server-addr: 127.0.0.1:8848 + dataId: ${spring.application.name}-degrade-rules + groupId: SENTINEL_GROUP + dataType: json + rule-type: degrade + flow: + nacos: + server-addr: 127.0.0.1:8848 + dataId: ${spring.application.name}-flow-rules + groupId: SENTINEL_GROUP + dataType: json + rule-type: flow + eager: true +mybatis-plus: + mapper-locations: classpath:mapper/*.xml + global-config: + db-config: + logic-delete-field: status + logic-delete-value: 0 + logic-not-delete-value: 1 + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + local-cache-scope: statement +feign: + sentinel: + enabled: false + hystrix: + enabled: true + httpclient: + enabled: false + okhttp: + enabled: true + compression: + request: + enabled: true + mime-types: text/xml,application/xml,application/json + min-request-size: 512 + response: + enabled: true +hystrix: + command: + default: + execution: + timeout: + enabled: true + isolation: + thread: + timeoutInMilliseconds: 10000 + semaphore: + maxConcurrentRequests: 99999 +ribbon: + ReadTimeout: 60000 + ConnectTimeout: 60000 + MaxAutoRetries: 0 + MaxAutoRetriesNextServer: 1 +management: + endpoints: + web: + exposure: + include: '*' + health: + show-details: always + security: + enabled: false + health: + elasticsearch: + enabled: false +jasypt: + encryptor: + password: bgtjkjl!%^sdc + algorithm: PBEWithMD5AndDES +elasticsearch: + ip: 127.0.0.1:9200 + userName: elastic + passWord: elastic \ No newline at end of file diff --git a/damai-server/damai-program-service/src/main/resources/bootstrap.yml b/damai-server/damai-program-service/src/main/resources/bootstrap.yml deleted file mode 100644 index 09b6d221..00000000 --- a/damai-server/damai-program-service/src/main/resources/bootstrap.yml +++ /dev/null @@ -1,21 +0,0 @@ -server: - port: 6086 -spring: - application: - name: ${prefix.distinction.name:damai}-program-service - main: - allow-bean-definition-overriding: true - cloud: - nacos: - discovery: - server-addr: 127.0.0.1:8848 - username: nacos - password: nacos - config: - server-addr: 127.0.0.1:8848 - file-extension: yaml - shared-configs: - - data-id: common.yaml - refresh: true - username: nacos - password: nacos \ No newline at end of file diff --git a/damai-server/damai-single-service/src/main/resources/application.yml b/damai-server/damai-single-service/src/main/resources/application.yml new file mode 100644 index 00000000..d9acf600 --- /dev/null +++ b/damai-server/damai-single-service/src/main/resources/application.yml @@ -0,0 +1,146 @@ +#服务端口 +server: + port: 6070 +# 应用名称 +spring: + application: + name: ${prefix.distinction.name:damai}-single-service + main: + allow-bean-definition-overriding: true + mvc: + pathmatch: + matching-strategy: ant_path_matcher + servlet: + load-on-startup: 1 + jackson: + time-zone: GMT+8 + date-format: yyyy-MM-dd HH:mm:ss + generator: + WRITE_NUMBERS_AS_STRINGS: true + datasource: + driver-class-name: org.apache.shardingsphere.driver.ShardingSphereDriver + url: jdbc:shardingsphere:classpath:shardingsphere-single.yaml + redis: + database: 0 + host: 127.0.0.1 + port: 6379 + timeout: 3000 + cloud: + nacos: + discovery: + server-addr: 127.0.0.1:8848 + username: nacos + password: nacos + sentinel: + transport: + port: 8719 + dashboard: 127.0.0.1:8082 + datasource: + degrade: + nacos: + server-addr: 127.0.0.1:8848 + dataId: ${spring.application.name}-degrade-rules + groupId: SENTINEL_GROUP + dataType: json + rule-type: degrade + flow: + nacos: + server-addr: 127.0.0.1:8848 + dataId: ${spring.application.name}-flow-rules + groupId: SENTINEL_GROUP + dataType: json + rule-type: flow + eager: true +aj: + captcha: + cache-type: redis + type: default + water-mark: \u6211\u7684\u6C34\u5370 + slip-offset: 5 + aes-status: true + interference-options: 2 + font-style: 1 + font-size: 25 + history-data-clear-enable: false + req-frequency-limit-enable: false + req-get-lock-limit: 5 + req-get-lock-seconds: 360 + req-get-minute-limit: 30 + req-check-minute-limit: 30 +kafka: + producer: + servers: 127.0.0.1:9092 + topic: save_api_data + consumer: + servers: 127.0.0.1:9092 + autoCommit: true + autoCommitIntervalMs: 2000 + autoOffsetReset: latest + groupId: api_data + topic: save_api_data +elasticsearch: + ip: 127.0.0.1:9200 + userName: elastic + passWord: elastic +bloom-filter: + name: userRegister + expectedInsertions: 1000 + falseProbability: 0.01 +mybatis-plus: + mapper-locations: classpath*:mapper/**/*.xml + global-config: + db-config: + logic-delete-field: status + logic-delete-value: 0 + logic-not-delete-value: 1 + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + local-cache-scope: statement +feign: + sentinel: + enabled: false + hystrix: + enabled: true + httpclient: + enabled: false + okhttp: + enabled: true + compression: + request: + enabled: true + mime-types: text/xml,application/xml,application/json + min-request-size: 512 + response: + enabled: true +hystrix: + command: + default: + execution: + timeout: + enabled: true + isolation: + thread: + timeoutInMilliseconds: 10000 + semaphore: + maxConcurrentRequests: 99999 +ribbon: + ReadTimeout: 60000 + ConnectTimeout: 60000 + MaxAutoRetries: 0 + MaxAutoRetriesNextServer: 1 +management: + endpoints: + web: + exposure: + include: '*' + health: + show-details: always + security: + enabled: false + health: + elasticsearch: + enabled: false +jasypt: + encryptor: + password: bgtjkjl!%^sdc + algorithm: PBEWithMD5AndDES \ No newline at end of file diff --git a/damai-server/damai-single-service/src/main/resources/bootstrap.yml b/damai-server/damai-single-service/src/main/resources/bootstrap.yml deleted file mode 100644 index c1c37d8d..00000000 --- a/damai-server/damai-single-service/src/main/resources/bootstrap.yml +++ /dev/null @@ -1,21 +0,0 @@ -#服务端口 -server: - port: 6070 -# 应用名称 -spring: - application: - name: ${prefix.distinction.name:damai}-single-service - cloud: - nacos: - discovery: - server-addr: 127.0.0.1:8848 - username: nacos - password: nacos - config: - server-addr: 127.0.0.1:8848 - file-extension: yaml - shared-configs: - - data-id: common.yaml - refresh: true - username: nacos - password: nacos \ No newline at end of file diff --git a/damai-server/damai-user-service/src/main/resources/application.yml b/damai-server/damai-user-service/src/main/resources/application.yml new file mode 100644 index 00000000..5efce8cf --- /dev/null +++ b/damai-server/damai-user-service/src/main/resources/application.yml @@ -0,0 +1,112 @@ +#服务端口 +server: + port: 6082 +# 应用名称 +spring: + application: + name: ${prefix.distinction.name:damai}-user-service + main: + allow-bean-definition-overriding: true + mvc: + pathmatch: + matching-strategy: ant_path_matcher + servlet: + load-on-startup: 1 + jackson: + time-zone: GMT+8 + date-format: yyyy-MM-dd HH:mm:ss + generator: + WRITE_NUMBERS_AS_STRINGS: true + datasource: + driver-class-name: org.apache.shardingsphere.driver.ShardingSphereDriver + url: jdbc:shardingsphere:classpath:shardingsphere-user.yaml + redis: + database: 0 + host: 127.0.0.1 + port: 6379 + timeout: 3000 + cloud: + nacos: + discovery: + server-addr: 127.0.0.1:8848 + username: nacos + password: nacos +bloom-filter: + name: userRegister + expectedInsertions: 1000 + falseProbability: 0.01 +aj: + captcha: + cache-type: redis + type: default + water-mark: \u6211\u7684\u6C34\u5370 + slip-offset: 5 + aes-status: true + interference-options: 2 + font-style: 1 + font-size: 25 + history-data-clear-enable: false + req-frequency-limit-enable: false + req-get-lock-limit: 5 + req-get-lock-seconds: 360 + req-get-minute-limit: 30 + req-check-minute-limit: 30 +mybatis-plus: + mapper-locations: classpath:mapper/*.xml + global-config: + db-config: + logic-delete-field: status + logic-delete-value: 0 + logic-not-delete-value: 1 + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + local-cache-scope: statement +feign: + sentinel: + enabled: false + hystrix: + enabled: true + httpclient: + enabled: false + okhttp: + enabled: true + compression: + request: + enabled: true + mime-types: text/xml,application/xml,application/json + min-request-size: 512 + response: + enabled: true +hystrix: + command: + default: + execution: + timeout: + enabled: true + isolation: + thread: + timeoutInMilliseconds: 10000 + semaphore: + maxConcurrentRequests: 99999 +ribbon: + ReadTimeout: 60000 + ConnectTimeout: 60000 + MaxAutoRetries: 0 + MaxAutoRetriesNextServer: 1 +management: + endpoints: + web: + exposure: + include: '*' + health: + show-details: always + security: + enabled: false + health: + elasticsearch: + enabled: false +jasypt: + encryptor: + password: bgtjkjl!%^sdc + algorithm: PBEWithMD5AndDES + \ No newline at end of file diff --git a/damai-server/damai-user-service/src/main/resources/bootstrap.yml b/damai-server/damai-user-service/src/main/resources/bootstrap.yml deleted file mode 100644 index 38b81f4d..00000000 --- a/damai-server/damai-user-service/src/main/resources/bootstrap.yml +++ /dev/null @@ -1,22 +0,0 @@ -#服务端口 -server: - port: 6082 -# 应用名称 -spring: - application: - name: ${prefix.distinction.name:damai}-user-service - cloud: - nacos: - discovery: - server-addr: 127.0.0.1:8848 - username: nacos - password: nacos - config: - server-addr: 127.0.0.1:8848 - file-extension: yaml - shared-configs: - - data-id: common.yaml - refresh: true - username: nacos - password: nacos - \ No newline at end of file diff --git a/sql/dababase.sql b/sql/dababase.sql new file mode 100644 index 00000000..7f7e98ec --- /dev/null +++ b/sql/dababase.sql @@ -0,0 +1,16 @@ +-- 创建数据库 +create database if not exists damai character set utf8mb4; +create database if not exists damai_base_data character set utf8mb4; +create database if not exists damai_customize character set utf8mb4; +create database if not exists damai_order_0 character set utf8mb4; +create database if not exists damai_order_1 character set utf8mb4; +create database if not exists damai_order character set utf8mb4; +create database if not exists damai_pay_0 character set utf8mb4; +create database if not exists damai_pay_1 character set utf8mb4; +create database if not exists damai_pay character set utf8mb4; +create database if not exists damai_program_0 character set utf8mb4; +create database if not exists damai_program_1 character set utf8mb4; +create database if not exists damai_program character set utf8mb4; +create database if not exists damai_user_0 character set utf8mb4; +create database if not exists damai_user_1 character set utf8mb4; +create database if not exists damai_user character set utf8mb4; \ No newline at end of file diff --git a/sql/procedure_insert_pay.sql b/sql/procedure_insert_pay.sql deleted file mode 100644 index c51c8485..00000000 --- a/sql/procedure_insert_pay.sql +++ /dev/null @@ -1,31 +0,0 @@ -DELIMITER // -CREATE DEFINER=`root`@`localhost` PROCEDURE `toolkit`.`insert_pay`() -BEGIN - DECLARE paramter_user_id VARCHAR(32); - DECLARE paramter_id int; - DECLARE i INT DEFAULT 5; - - WHILE i <= 9000 DO - SET paramter_user_id = CONCAT(i, "12345"); - - SET paramter_id = i; - - -INSERT INTO `pay` ( - id, user_id, type, status, amount, origin, pay_time, department_id, create_time, refund_mark -) -VALUES(paramter_id, - paramter_user_id, - 1, - 2, - round(rand() * 100, 0), - 1, - now(), - paramter_id, - now(), - '测试备注' - ); -SET i=i+1; -END WHILE; -end // -DELIMITER ; \ No newline at end of file diff --git a/sql/procedure_insert_test.sql b/sql/procedure_insert_test.sql deleted file mode 100644 index 9eda8670..00000000 --- a/sql/procedure_insert_test.sql +++ /dev/null @@ -1,26 +0,0 @@ -DELIMITER // -CREATE DEFINER=`root`@`localhost` PROCEDURE `toolkit`.`insert_test`() -BEGIN - DECLARE paramter_id int; - DECLARE i INT DEFAULT 5; - - WHILE i <= 15 DO - SET paramter_id = i; - - -INSERT INTO `test` ( - id, column1, column2, column3, column4, column5, column6, number -) -VALUES(paramter_id, - paramter_id, - paramter_id, - paramter_id, - CONCAT(i, "_4"), - CONCAT(i, "_5"), - CONCAT(i, "_6"), - paramter_id - ); -SET i=i+1; -END WHILE; -end // -DELIMITER ; \ No newline at end of file diff --git a/sql/table.sql b/sql/table.sql deleted file mode 100644 index d1c3ef6d..00000000 --- a/sql/table.sql +++ /dev/null @@ -1,121 +0,0 @@ -CREATE DATABASE `toolkit`; --- toolkit.channel_data definition - -CREATE TABLE `channel_data` ( - `id` varchar(50) NOT NULL COMMENT 'id', - `name` varchar(50) DEFAULT NULL COMMENT '名称', - `code` varchar(50) DEFAULT NULL COMMENT '编码', - `introduce` varchar(500) DEFAULT NULL COMMENT '介绍描述', - `create_time` datetime DEFAULT NULL COMMENT '创建时间', - `status` int(1) DEFAULT '1' COMMENT '状态 1:启用 -1:禁用', - `public_key` text COMMENT 'rsa公钥', - `secret_key` text COMMENT 'rsa密码', - `aes_key` text COMMENT 'aes秘钥', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='渠道基础数据信息'; - - --- toolkit.department definition - -CREATE TABLE `department` ( - `id` varchar(50) NOT NULL COMMENT 'id', - `name` varchar(50) DEFAULT NULL COMMENT '名称', - `type_code` varchar(50) DEFAULT NULL COMMENT '分类编码', - `create_time` datetime DEFAULT NULL COMMENT '创建时间', - `status` int(1) DEFAULT '1' COMMENT '状态 1:启用 -1:禁用', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门信息'; - - --- toolkit.pay definition - -CREATE TABLE `pay` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '[ID]', - `user_id` varchar(32) DEFAULT NULL COMMENT '[用户ID]', - `type` int(2) DEFAULT NULL COMMENT '[支付方式]1.支付宝 2.微信', - `status` int(1) DEFAULT NULL COMMENT '[状态]1:待支付 2:已支付 3:支付失败', - `amount` decimal(15,4) DEFAULT NULL COMMENT '[支付总金额]', - `origin` int(1) DEFAULT NULL COMMENT '[支付来源]1:安卓 2:iPhone 3:pc', - `pay_time` datetime DEFAULT NULL COMMENT '[支付时间]', - `department_id` varchar(32) DEFAULT NULL COMMENT '[部门id]', - `create_time` datetime DEFAULT NULL COMMENT '[创建时间]', - `refund_status` int(1) DEFAULT '1' COMMENT '[退款状态]1.不退款 2.应退款 3.退款成功 -1.退款失败', - `refund_amount` decimal(15,4) DEFAULT NULL COMMENT '[退款金额]', - `refund_time` datetime DEFAULT NULL COMMENT '[退款时间]', - `refund_mark` text COMMENT '[退款原因]', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='[支付]'; - - --- toolkit.product definition - -CREATE TABLE `product` ( - `id` varchar(50) NOT NULL COMMENT 'id', - `name` varchar(32) DEFAULT NULL COMMENT '[产品名字]', - `price` decimal(16,6) DEFAULT NULL COMMENT '[产品单价]', - `stock` int(11) DEFAULT NULL COMMENT '[库存数量]', - `status` int(11) DEFAULT '0' COMMENT '[状态 -1:已删除 0:正常]', - `create_time` datetime DEFAULT NULL COMMENT '创建时间', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='产品表'; - - --- toolkit.product_order definition - -CREATE TABLE `product_order` ( - `id` varchar(50) NOT NULL COMMENT 'id', - `product_id` varchar(50) NOT NULL COMMENT '[产品id]', - `product_name` varchar(32) DEFAULT NULL COMMENT '[产品名字]', - `product_price` decimal(16,6) DEFAULT NULL COMMENT '[产品单价]', - `product_amount` int(11) DEFAULT NULL COMMENT '[产品数量]', - `product_total_price` decimal(16,6) DEFAULT NULL COMMENT '[产品总价]', - `order_id` varchar(50) NOT NULL COMMENT '[订单id]', - `status` int(11) DEFAULT '0' COMMENT '[状态 -1:已删除 0:正常]', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='产品订单关联表'; - - --- toolkit.ps_order definition - -CREATE TABLE `ps_order` ( - `id` varchar(50) NOT NULL COMMENT 'id', - `pay_order_id` varchar(32) DEFAULT NULL COMMENT '[支付单ID]ID值来自<支付单表>', - `pay_amount` decimal(16,6) NOT NULL COMMENT '[缴费金额]', - `pay_channel_type` int(11) DEFAULT NULL COMMENT '[支付方式1.支付宝 2.微信]', - `pay_time` datetime DEFAULT NULL COMMENT '[支付完成时间]', - `status` int(11) DEFAULT '0' COMMENT '[状态 -1:已删除 0:待支付 1:正在支付 2:支付完成 3:超时取消 4:手动取消]', - `create_time` datetime DEFAULT NULL COMMENT '[创建时间]', - `user_id` varchar(32) DEFAULT NULL COMMENT '[用户id]', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单表'; - - --- toolkit.test definition - -CREATE TABLE `test` ( - `id` bigint(11) NOT NULL, - `column1` int(11) DEFAULT NULL, - `column2` int(11) DEFAULT NULL, - `column3` int(11) DEFAULT NULL, - `column4` varchar(255) DEFAULT NULL, - `column5` varchar(255) DEFAULT NULL, - `column6` varchar(255) DEFAULT NULL, - `number` int(11) DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `idx_column1_2_3` (`column1`,`column2`,`column3`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - - --- toolkit.`user` definition - -CREATE TABLE `user` ( - `id` varchar(50) NOT NULL, - `name` varchar(255) DEFAULT NULL, - `password` varchar(255) DEFAULT NULL, - `age` int(11) DEFAULT NULL, - `status` int(1) NOT NULL DEFAULT '1', - `create_time` datetime DEFAULT NULL COMMENT '[创建时间]', - `mobile` varchar(14) DEFAULT NULL COMMENT '手机号', - `edit_time` datetime DEFAULT NULL COMMENT '编辑时间', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; \ No newline at end of file -- Gitee From ff67c3fb2b5b0c0a5e2c41ba100fd8507d6be53e Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Fri, 22 Mar 2024 17:53:34 +0800 Subject: [PATCH 74/74] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/shardingsphere-program.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/damai-server/damai-program-service/src/main/resources/shardingsphere-program.yaml b/damai-server/damai-program-service/src/main/resources/shardingsphere-program.yaml index b7f1a881..3d50d1d1 100644 --- a/damai-server/damai-program-service/src/main/resources/shardingsphere-program.yaml +++ b/damai-server/damai-program-service/src/main/resources/shardingsphere-program.yaml @@ -9,7 +9,7 @@ dataSources: ds_1: dataSourceClassName: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver - jdbcUrl: jdbc:mysql://127.0.0.1:3306:3306/damai_program_1?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&autoReconnect=true + jdbcUrl: jdbc:mysql://127.0.0.1:3306/damai_program_1?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&autoReconnect=true username: root password: root -- Gitee