From a59963be4124fbbbc35088eaa2f9039beef18c10 Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Sat, 1 Jan 2022 18:41:12 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=B4=E6=98=8E=EF=BC=9A1=E3=80=81api?= =?UTF-8?q?=E9=A2=84=E8=AD=A6=E5=88=87=E7=82=B9=E5=A2=9E=E5=8A=A0=E5=BD=93?= =?UTF-8?q?=E5=89=8D=E6=8E=A5=E5=8F=A3=E8=AF=B7=E6=B1=82=E6=AC=A1=E6=95=B0?= =?UTF-8?q?=EF=BC=8C=E6=AF=8F=E5=A4=A9=E6=B8=85=E9=9B=B6=20=20=20=20=20=20?= =?UTF-8?q?2=E3=80=81=E5=BE=85=E5=AE=9E=E7=8E=B0=E6=8A=8A=E8=B6=85?= =?UTF-8?q?=E8=BF=87=E9=98=88=E5=80=BC=E7=9A=84=E6=8E=A5=E5=8F=A3=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=88=B0=E9=A2=84=E8=AD=A6=E8=A1=A8=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/warning/domain/ApiRecord.java | 11 +++++++++++ ruoyi-ui/vue.config.js | 4 ++-- .../com/xjs/handler/MyMetaObjectHandler.java | 1 + .../java/com/xjs/utils/ChineseUtilTest.java | 12 +++++++++++- .../java/com/xjs/common/aop/ApiLogAspect.java | 19 +++++++++++++++++++ .../main/java/com/xjs/domain/ApiRecord.java | 3 +++ 6 files changed, 47 insertions(+), 3 deletions(-) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/warning/domain/ApiRecord.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/warning/domain/ApiRecord.java index 09cb06e0..cc55753b 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/warning/domain/ApiRecord.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/warning/domain/ApiRecord.java @@ -21,6 +21,9 @@ public class ApiRecord implements Serializable { /** api地址 */ private String apiUrl; + /** api每天请求次数 */ + private Long dayCount; + /** * 请求耗费时间 */ @@ -99,4 +102,12 @@ public class ApiRecord implements Serializable { public void setRequestTime(Integer requestTime) { this.requestTime = requestTime; } + + public Long getDayCount() { + return dayCount; + } + + public void setDayCount(Long dayCount) { + this.dayCount = dayCount; + } } diff --git a/ruoyi-ui/vue.config.js b/ruoyi-ui/vue.config.js index 293c79c9..465c9d16 100644 --- a/ruoyi-ui/vue.config.js +++ b/ruoyi-ui/vue.config.js @@ -69,8 +69,8 @@ module.exports = { ], }, chainWebpack(config) { - config.plugins.delete('preload') // TODO: need test - config.plugins.delete('prefetch') // TODO: need test + config.plugins.delete('preload') + config.plugins.delete('prefetch') // set svg-sprite-loader config.module diff --git a/xjs-business/xjs-business-common/src/main/java/com/xjs/handler/MyMetaObjectHandler.java b/xjs-business/xjs-business-common/src/main/java/com/xjs/handler/MyMetaObjectHandler.java index c5697492..b92c402c 100644 --- a/xjs-business/xjs-business-common/src/main/java/com/xjs/handler/MyMetaObjectHandler.java +++ b/xjs-business/xjs-business-common/src/main/java/com/xjs/handler/MyMetaObjectHandler.java @@ -21,6 +21,7 @@ public class MyMetaObjectHandler implements MetaObjectHandler { log.info("start insert fill ...."); //this.setFieldValByName("createTime", new Date(), metaObject); this.strictInsertFill(metaObject, "createTime", Date.class,new Date()); // 起始版本 3.3.3(推荐) + this.strictInsertFill(metaObject, "updateTime", Date.class,new Date()); } @Override diff --git a/xjs-business/xjs-business-common/src/test/java/com/xjs/utils/ChineseUtilTest.java b/xjs-business/xjs-business-common/src/test/java/com/xjs/utils/ChineseUtilTest.java index 0ec162b6..3bd7d29c 100644 --- a/xjs-business/xjs-business-common/src/test/java/com/xjs/utils/ChineseUtilTest.java +++ b/xjs-business/xjs-business-common/src/test/java/com/xjs/utils/ChineseUtilTest.java @@ -1,8 +1,10 @@ package com.xjs.utils; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; +import java.util.Date; /** * @author xiejs @@ -17,4 +19,12 @@ class ChineseUtilTest { System.out.println(b); } + + @Test + public void test2() { + long between = DateUtil + .between(new Date(), DateUtil.parseDate("2021-12-31 23:59:59").toJdkDate(), DateUnit.DAY); + System.out.println(between); + } + } \ No newline at end of file diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/aop/ApiLogAspect.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/aop/ApiLogAspect.java index f153b9c5..493d7e49 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/aop/ApiLogAspect.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/aop/ApiLogAspect.java @@ -1,6 +1,7 @@ package com.xjs.common.aop; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import com.ruoyi.common.core.domain.R; import com.xjs.business.warning.RemoteWarningCRUDFeign; @@ -20,6 +21,7 @@ import java.lang.annotation.Annotation; import java.lang.reflect.Method; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; +import java.util.Date; import java.util.List; import java.util.Optional; @@ -142,12 +144,29 @@ public class ApiLogAspect { if (CollUtil.isEmpty(data)) { //设置初始请求次数 apiRecord.setTotalCount(1L); + apiRecord.setDayCount(1L); remoteWarningCRUDFeign.saveApiRecord(apiRecord); }else { ApiRecord haveApiRecord = data.get(0); + haveApiRecord.setRequestTime((int) between); haveApiRecord.setTotalCount(haveApiRecord.getTotalCount()+1L); + //统计当前的请求次数,隔天清零 + haveApiRecord.setDayCount(haveApiRecord.getDayCount()+1L); + Date updateTime = haveApiRecord.getUpdateTime(); + //当前时间和最后一次修改时间间隔天数(超过1 就清零) + long compareTime = DateUtil.between(new Date(), updateTime, DateUnit.DAY); + if (compareTime > 0) { + haveApiRecord.setDayCount(0L); + } remoteWarningCRUDFeign.updateApiRecord(haveApiRecord); + //判断接口请求是否超过阈值 + if (haveApiRecord.getDayCount() > haveApiRecord.getLimitCount()) { + //TODO 把记录添加到预警表中 + + + } + } } } diff --git a/xjs-business/xjs-business-warning/src/main/java/com/xjs/domain/ApiRecord.java b/xjs-business/xjs-business-warning/src/main/java/com/xjs/domain/ApiRecord.java index 7851cb74..07a25e9f 100644 --- a/xjs-business/xjs-business-warning/src/main/java/com/xjs/domain/ApiRecord.java +++ b/xjs-business/xjs-business-warning/src/main/java/com/xjs/domain/ApiRecord.java @@ -55,6 +55,9 @@ public class ApiRecord implements Serializable { @Excel(name = "api限制请求次数每天") private Long limitCount; + @Excel(name = "api每天请求次数") + private Long dayCount; + @Excel(name = "创建时间", dateFormat = "yyyy-MM-dd HH:mm:ss") @TableField(fill = FieldFill.INSERT) private Date createTime;