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
+