diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/event/PerSecondEvent.java b/ruoyi-common/src/main/java/com/ruoyi/common/event/PerSecondEvent.java new file mode 100644 index 0000000..5bbc282 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/event/PerSecondEvent.java @@ -0,0 +1,53 @@ +package com.ruoyi.common.event; + +import java.util.concurrent.atomic.AtomicInteger; + +import org.springframework.context.ApplicationEvent; + +/** + *
+ * - 每秒都会触发的事件
+ * Author : J.L.Zhou
+ * E-Mail : 2233875735@qq.com
+ * Tel : 151 1104 7708
+ * Date : 2022年12月27日 下午3:10:39
+ * Version : 1.0
+ * Copyright 2022 jlzhou.top Inc. All rights reserved.
+ * Warning: this content is only for internal circulation of the company.
+ *          It is forbidden to divulge it or use it for other commercial purposes.
+ * 
+ */ +public class PerSecondEvent extends ApplicationEvent { + + /** + * + */ + private static final long serialVersionUID = 1752655123185832181L; + private static AtomicInteger globalCount = new AtomicInteger(0); + private static final int MAX = 24*365*60*60; + + private int count; + + public PerSecondEvent() { + super(0); + if(globalCount.incrementAndGet()>MAX) { + globalCount.set(0); + } + count=globalCount.get(); + super.source= count; + } + + + public int getCount() { + return count; + } + + + @Override + public String toString() { + return " 每秒都会触发的事件: " + count; + } + + + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/runner/PerSecondRunner.java b/ruoyi-common/src/main/java/com/ruoyi/common/runner/PerSecondRunner.java new file mode 100644 index 0000000..26888cf --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/runner/PerSecondRunner.java @@ -0,0 +1,16 @@ +package com.ruoyi.common.runner; + +import com.ruoyi.common.event.PerSecondEvent; +import com.ruoyi.common.utils.spring.SpringUtils; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.Scheduled; + +@Configuration +public class PerSecondRunner { + + @Scheduled(fixedRate = 1000) + public void PerSecondRunner() { + SpringUtils.publishEvent(new PerSecondEvent()); + } + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DynConfigUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DynConfigUtils.java new file mode 100644 index 0000000..95f8e8f --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DynConfigUtils.java @@ -0,0 +1,26 @@ +package com.ruoyi.common.utils; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; + +public class DynConfigUtils { + + /** + * 将动态配置类转换为普通bean + * @param config 动态配置bean + * @return 普通bean + * @param + */ + public static T toBean(T config) { + return (T)BeanUtil.toBean(config, config.getClass()); + } + + /** + * 将普通bean非空属性设置到动态配置config中 + * @param bean 普通bean + * @param config 动态配置bean + */ + public static void setBean(Object bean, Object config) { + BeanUtil.copyProperties(bean,config, CopyOptions.create(config.getClass(),true)); + } +} diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/DynConfigApi.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/DynConfigApi.java index 446984b..7a9f007 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/DynConfigApi.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/DynConfigApi.java @@ -5,6 +5,7 @@ import cn.dev33.satoken.annotation.SaIgnore; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; import com.ruoyi.common.annotation.Dev; +import com.ruoyi.common.utils.DynConfigUtils; import com.ruoyi.demo.dynconfig.TestDynConfig; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; @@ -21,14 +22,16 @@ public class DynConfigApi { @GetMapping public Object get(){ // return config; //java中可以直接使用,但是不能JSON序列号,因为他是经过aop代理后的bean - return BeanUtil.toBean(config, TestDynConfig.class); +// return BeanUtil.toBean(config, TestDynConfig.class); + return DynConfigUtils.toBean(config); } @PostMapping public void set(@RequestBody TestDynConfig config){ // this.config=config;//不能直接赋值 - BeanUtil.copyProperties(config,this.config, CopyOptions.create(TestDynConfig.class,true));//使用属性copy的方法或setter(getter)完成 +// BeanUtil.copyProperties(config,this.config, CopyOptions.create(TestDynConfig.class,true));//使用属性copy的方法或setter(getter)完成 + DynConfigUtils.setBean(config,this.config); this.config.save();//主动异步保存(PS:属性的方法不会触发保存需要主动异步保存),执行set*,put*,add*,remove*方法后会自动异步保存 } } diff --git a/script/docker/nginx/html/favicon.ico b/script/docker/nginx/html/favicon.ico new file mode 100644 index 0000000..86d7bc6 Binary files /dev/null and b/script/docker/nginx/html/favicon.ico differ diff --git a/script/docker/nginx/html/index.html b/script/docker/nginx/html/index.html new file mode 100644 index 0000000..4aa35cc --- /dev/null +++ b/script/docker/nginx/html/index.html @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file