From b87fe01f55193a00da39368a4a7e0879463d6700 Mon Sep 17 00:00:00 2001 From: hudingrong <1649576115@qq.com> Date: Wed, 24 Apr 2024 17:30:56 +0800 Subject: [PATCH] 2024-04-024-rule-stock --- data/log/log_error.log | 56 +---------- .../main/java/cn/bugstack/Application.java | 2 + .../mybatis/mapper/strategy_award_mapper.xml | 5 + .../valobj/StrategyAwardRuleModelVO.java | 5 - .../model/valobj/StrategyAwardStockKeyVO.java | 26 +++++ .../repository/IStrategyRepository.java | 35 ++++++- .../{rule => }/AbstractRaffleStrategy.java | 4 +- .../domain/strategy/service/IRaffleStock.java | 28 ++++++ .../service/armory/IStrategyDispatch.java | 9 ++ .../service/armory/StrategyArmory.java | 99 ++++++++++++++----- .../service/raffle/DefaultRaffleStrategy.java | 25 +++-- .../service/rule/tree/ILogicTreeNode.java | 2 +- .../engine/impl/DecisionTreeEngine.java | 2 +- .../rule/tree/impl/RuleLockLogicTreeNode.java | 23 ++++- .../tree/impl/RuleLuckAwardLogicTreeNode.java | 18 +++- .../tree/impl/RuleStockLogicTreeNode.java | 2 +- .../persistent/dao/IStrategyAwardDao.java | 6 ++ .../persistent/redis/IRedisService.java | 10 ++ ...RedisService.java => RedissonService.java} | 12 ++- .../repository/StrategyRepository.java | 55 ++++++++++- .../trigger/job/UpdateAwardStockJob.java | 36 +++++++ .../cn/bugstack/types/common/Constants.java | 3 + 22 files changed, 351 insertions(+), 112 deletions(-) create mode 100644 xfg-frame-archetype-lite-domain/src/main/java/cn/bugstack/domain/strategy/model/valobj/StrategyAwardStockKeyVO.java rename xfg-frame-archetype-lite-domain/src/main/java/cn/bugstack/domain/strategy/service/{rule => }/AbstractRaffleStrategy.java (98%) create mode 100644 xfg-frame-archetype-lite-domain/src/main/java/cn/bugstack/domain/strategy/service/IRaffleStock.java rename xfg-frame-archetype-lite-infrastructure/src/main/java/cn/bugstack/infrastructure/persistent/redis/{RedisService.java => RedissonService.java} (93%) create mode 100644 xfg-frame-archetype-lite-trigger/src/main/java/cn/bugstack/trigger/job/UpdateAwardStockJob.java diff --git a/data/log/log_error.log b/data/log/log_error.log index b4535bd..3597126 100644 --- a/data/log/log_error.log +++ b/data/log/log_error.log @@ -1,58 +1,4 @@ -24-04-05.17:42:28.254 [RMI TCP Connection(16)-2.0.0.1] WARN HealthEndpointSupport - Health contributor org.springframework.boot.actuate.jdbc.DataSourceHealthIndicator (db) took 53954ms to respond -24-04-05.17:42:39.038 [redisson-netty-2-2] WARN RedisReactiveHealthIndicator - Redis health check failed -org.springframework.data.redis.RedisSystemException: NOAUTH Authentication required.. channel: [id: 0x2c1446a4, L:/192.168.30.92:64003 - R:120.78.91.227/120.78.91.227:6379] data: CommandData [promise=java.util.concurrent.CompletableFuture@331b138c[Not completed, 1 dependents], command=(INFO), params=[server], codec=org.redisson.client.codec.StringCodec]; nested exception is org.redisson.client.RedisAuthRequiredException: NOAUTH Authentication required.. channel: [id: 0x2c1446a4, L:/192.168.30.92:64003 - R:120.78.91.227/120.78.91.227:6379] data: CommandData [promise=java.util.concurrent.CompletableFuture@331b138c[Not completed, 1 dependents], command=(INFO), params=[server], codec=org.redisson.client.codec.StringCodec] - at org.redisson.spring.data.connection.RedissonBaseReactive.lambda$read$5(RedissonBaseReactive.java:91) - at reactor.core.publisher.Mono.lambda$onErrorMap$31(Mono.java:3811) - at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:94) - at reactor.core.publisher.MonoNext$NextSubscriber.onError(MonoNext.java:93) - at reactor.core.publisher.FluxCreate$BaseSink.error(FluxCreate.java:474) - at reactor.core.publisher.FluxCreate$BufferAsyncSink.drain(FluxCreate.java:802) - at reactor.core.publisher.FluxCreate$BufferAsyncSink.error(FluxCreate.java:747) - at reactor.core.publisher.FluxCreate$SerializedFluxSink.drainLoop(FluxCreate.java:237) - at reactor.core.publisher.FluxCreate$SerializedFluxSink.drain(FluxCreate.java:213) - at reactor.core.publisher.FluxCreate$SerializedFluxSink.error(FluxCreate.java:189) - at org.redisson.reactive.CommandReactiveService.lambda$reactive$1(CommandReactiveService.java:60) - at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:774) - at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:750) - at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:488) - at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1990) - at org.redisson.command.RedisExecutor.handleError(RedisExecutor.java:583) - at org.redisson.command.RedisExecutor.handleResult(RedisExecutor.java:565) - at org.redisson.command.RedisExecutor.checkAttemptPromise(RedisExecutor.java:553) - at org.redisson.command.RedisExecutor.lambda$execute$5(RedisExecutor.java:195) - at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:774) - at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:750) - at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:488) - at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1990) - at org.redisson.client.protocol.CommandData.tryFailure(CommandData.java:87) - at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:368) - at org.redisson.client.handler.CommandDecoder.decodeCommand(CommandDecoder.java:205) - at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:144) - at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:120) - at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529) - at io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:366) - at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290) - at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) - at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) - at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) - at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) - at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) - at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) - at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) - at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) - at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) - at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) - at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) - at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) - at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) - at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) - at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) - at java.lang.Thread.run(Thread.java:748) -Caused by: org.redisson.client.RedisAuthRequiredException: NOAUTH Authentication required.. channel: [id: 0x2c1446a4, L:/192.168.30.92:64003 - R:120.78.91.227/120.78.91.227:6379] data: CommandData [promise=java.util.concurrent.CompletableFuture@331b138c[Not completed, 1 dependents], command=(INFO), params=[server], codec=org.redisson.client.codec.StringCodec] - ... 23 common frames omitted -24-04-05.17:42:39.145 [RMI TCP Connection(16)-2.0.0.1] WARN HealthEndpointSupport - Health contributor org.springframework.boot.actuate.autoconfigure.health.HealthEndpointConfiguration$AdaptedReactiveHealthContributors$1 (redis) took 10845ms to respond -24-04-05.18:05:52.824 [HikariPool-1 housekeeper] WARN HikariPool - HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=4m57s651ms233µs). -24-04-05.18:51:19.253 [redisson-netty-2-22] ERROR rejectedExecution - Failed to submit a listener notification task. Event loop shut down? +24-04-24.16:20:46.983 [redisson-netty-2-22] ERROR rejectedExecution - Failed to submit a listener notification task. Event loop shut down? java.util.concurrent.RejectedExecutionException: event executor terminated at io.netty.util.concurrent.SingleThreadEventExecutor.reject(SingleThreadEventExecutor.java:934) at io.netty.util.concurrent.SingleThreadEventExecutor.offerTask(SingleThreadEventExecutor.java:351) diff --git a/xfg-frame-archetype-lite-app/src/main/java/cn/bugstack/Application.java b/xfg-frame-archetype-lite-app/src/main/java/cn/bugstack/Application.java index 178667e..37beaba 100644 --- a/xfg-frame-archetype-lite-app/src/main/java/cn/bugstack/Application.java +++ b/xfg-frame-archetype-lite-app/src/main/java/cn/bugstack/Application.java @@ -3,9 +3,11 @@ package cn.bugstack; import org.springframework.beans.factory.annotation.Configurable; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @Configurable +@EnableScheduling public class Application { public static void main(String[] args){ diff --git a/xfg-frame-archetype-lite-app/src/main/resources/mybatis/mapper/strategy_award_mapper.xml b/xfg-frame-archetype-lite-app/src/main/resources/mybatis/mapper/strategy_award_mapper.xml index 003960e..ea88adb 100644 --- a/xfg-frame-archetype-lite-app/src/main/resources/mybatis/mapper/strategy_award_mapper.xml +++ b/xfg-frame-archetype-lite-app/src/main/resources/mybatis/mapper/strategy_award_mapper.xml @@ -16,6 +16,11 @@ + + update strategy_award + set award_count_surplus = award_count_surplus - 1 + where strategy_id = #{strategyId} and award_id = #{awardId} and award_count_surplus > 0 +