diff --git a/data/log/log_error.log b/data/log/log_error.log
index b4535bdb346248efbbf9e3323e80dc8651b4585e..3597126392749dde9e1a5cc0f0af761146fbc7bb 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 178667efde613076d32fab56b844fd0d846e7c29..37beaba6c9cb543dc220827915d300b4f228b61e 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 003960ed379d681490b834d7f017613e1086b574..ea88adb684b4a7d4e1c2d846842fd3a2c9bde0bb 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
+