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;