说明:1、api预警切点增加当前接口请求次数,每天清零

2、待实现把超过阈值的接口添加到预警表中
pull/254/head
xjs 4 years ago
parent 60f76ee94a
commit a59963be41

@ -21,6 +21,9 @@ public class ApiRecord implements Serializable {
/** api地址 */ /** api地址 */
private String apiUrl; private String apiUrl;
/** api每天请求次数 */
private Long dayCount;
/** /**
* *
*/ */
@ -99,4 +102,12 @@ public class ApiRecord implements Serializable {
public void setRequestTime(Integer requestTime) { public void setRequestTime(Integer requestTime) {
this.requestTime = requestTime; this.requestTime = requestTime;
} }
public Long getDayCount() {
return dayCount;
}
public void setDayCount(Long dayCount) {
this.dayCount = dayCount;
}
} }

@ -69,8 +69,8 @@ module.exports = {
], ],
}, },
chainWebpack(config) { chainWebpack(config) {
config.plugins.delete('preload') // TODO: need test config.plugins.delete('preload')
config.plugins.delete('prefetch') // TODO: need test config.plugins.delete('prefetch')
// set svg-sprite-loader // set svg-sprite-loader
config.module config.module

@ -21,6 +21,7 @@ public class MyMetaObjectHandler implements MetaObjectHandler {
log.info("start insert fill ...."); log.info("start insert fill ....");
//this.setFieldValByName("createTime", new Date(), metaObject); //this.setFieldValByName("createTime", new Date(), metaObject);
this.strictInsertFill(metaObject, "createTime", Date.class,new Date()); // 起始版本 3.3.3(推荐) this.strictInsertFill(metaObject, "createTime", Date.class,new Date()); // 起始版本 3.3.3(推荐)
this.strictInsertFill(metaObject, "updateTime", Date.class,new Date());
} }
@Override @Override

@ -1,8 +1,10 @@
package com.xjs.utils; package com.xjs.utils;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*; import java.util.Date;
/** /**
* @author xiejs * @author xiejs
@ -17,4 +19,12 @@ class ChineseUtilTest {
System.out.println(b); 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);
}
} }

@ -1,6 +1,7 @@
package com.xjs.common.aop; package com.xjs.common.aop;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
import com.xjs.business.warning.RemoteWarningCRUDFeign; import com.xjs.business.warning.RemoteWarningCRUDFeign;
@ -20,6 +21,7 @@ import java.lang.annotation.Annotation;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
@ -142,12 +144,29 @@ public class ApiLogAspect {
if (CollUtil.isEmpty(data)) { if (CollUtil.isEmpty(data)) {
//设置初始请求次数 //设置初始请求次数
apiRecord.setTotalCount(1L); apiRecord.setTotalCount(1L);
apiRecord.setDayCount(1L);
remoteWarningCRUDFeign.saveApiRecord(apiRecord); remoteWarningCRUDFeign.saveApiRecord(apiRecord);
}else { }else {
ApiRecord haveApiRecord = data.get(0); ApiRecord haveApiRecord = data.get(0);
haveApiRecord.setRequestTime((int) between); haveApiRecord.setRequestTime((int) between);
haveApiRecord.setTotalCount(haveApiRecord.getTotalCount()+1L); 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); remoteWarningCRUDFeign.updateApiRecord(haveApiRecord);
//判断接口请求是否超过阈值
if (haveApiRecord.getDayCount() > haveApiRecord.getLimitCount()) {
//TODO 把记录添加到预警表中
}
} }
} }
} }

@ -55,6 +55,9 @@ public class ApiRecord implements Serializable {
@Excel(name = "api限制请求次数每天") @Excel(name = "api限制请求次数每天")
private Long limitCount; private Long limitCount;
@Excel(name = "api每天请求次数")
private Long dayCount;
@Excel(name = "创建时间", dateFormat = "yyyy-MM-dd HH:mm:ss") @Excel(name = "创建时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT) @TableField(fill = FieldFill.INSERT)
private Date createTime; private Date createTime;

Loading…
Cancel
Save