From 6721293ba8402354ec826dd2b9b84c0089a4adf5 Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Tue, 13 Jul 2021 17:50:10 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.0.4=E3=80=91=E3=80=90demo=E3=80=91?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BB=B6=E6=97=B6=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../roses/kernel/demo/util/StartCalcUtil.java | 46 +++++++++++++++++++ .../DemoProfileSqlInterceptor.java | 7 +++ .../starter/GunsDemoAutoConfiguration.java | 7 +-- 3 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 kernel-s-demo/demo-api/src/main/java/cn/stylefeng/roses/kernel/demo/util/StartCalcUtil.java diff --git a/kernel-s-demo/demo-api/src/main/java/cn/stylefeng/roses/kernel/demo/util/StartCalcUtil.java b/kernel-s-demo/demo-api/src/main/java/cn/stylefeng/roses/kernel/demo/util/StartCalcUtil.java new file mode 100644 index 000000000..de1419b2d --- /dev/null +++ b/kernel-s-demo/demo-api/src/main/java/cn/stylefeng/roses/kernel/demo/util/StartCalcUtil.java @@ -0,0 +1,46 @@ +package cn.stylefeng.roses.kernel.demo.util; + +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; + +import java.util.Date; + +/** + * 开始时间的计时工具 + * + * @author fengshuonan + * @date 2021/7/13 17:34 + */ +public class StartCalcUtil { + + /** + * 项目开始启动时间 + */ + public static Date startDate = null; + + /** + * 项目启动时间预估 + */ + public static final long startInterValSeconds = 20; + + /** + * 初始化项目开始时间 + * + * @author fengshuonan + * @date 2021/7/13 17:42 + */ + public static void init(Date date) { + startDate = date; + } + + /** + * 计算是否项目已经启动 + * + * @author fengshuonan + * @date 2021/7/13 17:43 + */ + public static boolean calcEnable(Date date) { + return DateUtil.between(startDate, date, DateUnit.SECOND) > startInterValSeconds; + } + +} diff --git a/kernel-s-demo/demo-business/src/main/java/cn/stylefeng/roses/kernel/demo/interceptor/DemoProfileSqlInterceptor.java b/kernel-s-demo/demo-business/src/main/java/cn/stylefeng/roses/kernel/demo/interceptor/DemoProfileSqlInterceptor.java index f01ffccae..0af019f8e 100644 --- a/kernel-s-demo/demo-business/src/main/java/cn/stylefeng/roses/kernel/demo/interceptor/DemoProfileSqlInterceptor.java +++ b/kernel-s-demo/demo-business/src/main/java/cn/stylefeng/roses/kernel/demo/interceptor/DemoProfileSqlInterceptor.java @@ -28,6 +28,7 @@ import cn.stylefeng.roses.kernel.auth.api.expander.AuthConfigExpander; import cn.stylefeng.roses.kernel.demo.exception.DemoException; import cn.stylefeng.roses.kernel.demo.exception.enums.DemoExceptionEnum; import cn.stylefeng.roses.kernel.demo.expander.DemoConfigExpander; +import cn.stylefeng.roses.kernel.demo.util.StartCalcUtil; import cn.stylefeng.roses.kernel.rule.util.HttpServletUtil; import com.baomidou.mybatisplus.core.toolkit.PluginUtils; import org.apache.ibatis.executor.statement.StatementHandler; @@ -42,6 +43,7 @@ import org.apache.ibatis.reflection.SystemMetaObject; import org.springframework.util.AntPathMatcher; import java.sql.Connection; +import java.util.Date; /** * 演示环境的sql过滤器,只放开select语句,其他语句都不放过 @@ -60,6 +62,11 @@ public class DemoProfileSqlInterceptor implements Interceptor { return invocation.proceed(); } + // 如果是演示环境,并且项目还没起来,则直接放过sql + if (DemoConfigExpander.getDemoEnvFlag() && !StartCalcUtil.calcEnable(new Date())) { + return invocation.proceed(); + } + StatementHandler statementHandler = PluginUtils.realTarget(invocation.getTarget()); MetaObject metaStatementHandler = SystemMetaObject.forObject(statementHandler); MappedStatement mappedStatement = (MappedStatement) metaStatementHandler.getValue("delegate.mappedStatement"); diff --git a/kernel-s-demo/demo-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/demo/starter/GunsDemoAutoConfiguration.java b/kernel-s-demo/demo-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/demo/starter/GunsDemoAutoConfiguration.java index 05f331bbc..501e8e05f 100644 --- a/kernel-s-demo/demo-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/demo/starter/GunsDemoAutoConfiguration.java +++ b/kernel-s-demo/demo-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/demo/starter/GunsDemoAutoConfiguration.java @@ -25,11 +25,12 @@ package cn.stylefeng.roses.kernel.demo.starter; import cn.stylefeng.roses.kernel.demo.interceptor.DemoProfileSqlInterceptor; -import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; -import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import cn.stylefeng.roses.kernel.demo.util.StartCalcUtil; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import java.util.Date; + /** * 演示环境的自动配置 * @@ -37,7 +38,6 @@ import org.springframework.context.annotation.Configuration; * @date 2020/12/1 21:51 */ @Configuration -@AutoConfigureAfter(MybatisPlusAutoConfiguration.class) public class GunsDemoAutoConfiguration { /** @@ -48,6 +48,7 @@ public class GunsDemoAutoConfiguration { */ @Bean public DemoProfileSqlInterceptor demoProfileSqlInterceptor() { + StartCalcUtil.init(new Date()); return new DemoProfileSqlInterceptor(); }