【feta】 限流日志表增加日志

This commit is contained in:
Kris 2026-01-03 21:11:36 +08:00
parent 547b2c6436
commit decbebb4de
2 changed files with 35 additions and 15 deletions

View File

@ -5,6 +5,7 @@ import com.datai.integration.model.domain.DataiIntegrationRateLimit;
/** /**
* API限流监控Service接口 * API限流监控Service接口
* 提供API限流配置的增删改查功能用于管理API调用频率限制
* *
* @author datai * @author datai
* @date 2025-12-24 * @date 2025-12-24
@ -12,50 +13,55 @@ import com.datai.integration.model.domain.DataiIntegrationRateLimit;
public interface IDataiIntegrationRateLimitService public interface IDataiIntegrationRateLimitService
{ {
/** /**
* 查询API限流监控 * 根据主键ID查询API限流监控配置
* *
* @param id API限流监控主键 * @param id API限流监控主键
* @return API限流监控 * @return API限流监控配置对象
*/ */
public DataiIntegrationRateLimit selectDataiIntegrationRateLimitById(Long id); public DataiIntegrationRateLimit selectDataiIntegrationRateLimitById(Long id);
/** /**
* 查询API限流监控列表 * 根据条件查询API限流监控配置列表
* 支持多条件组合查询如限流类型API名称等
* *
* @param dataiIntegrationRateLimit API限流监控 * @param dataiIntegrationRateLimit 查询条件对象
* @return API限流监控集合 * @return API限流监控配置集合
*/ */
public List<DataiIntegrationRateLimit> selectDataiIntegrationRateLimitList(DataiIntegrationRateLimit dataiIntegrationRateLimit); public List<DataiIntegrationRateLimit> selectDataiIntegrationRateLimitList(DataiIntegrationRateLimit dataiIntegrationRateLimit);
/** /**
* 新增API限流监控 * 新增API限流监控配置
* 创建新的限流规则包括限流类型最大限制值重置时间等
* *
* @param dataiIntegrationRateLimit API限流监控 * @param dataiIntegrationRateLimit API限流监控配置对象
* @return 结果 * @return 影响的行数
*/ */
public int insertDataiIntegrationRateLimit(DataiIntegrationRateLimit dataiIntegrationRateLimit); public int insertDataiIntegrationRateLimit(DataiIntegrationRateLimit dataiIntegrationRateLimit);
/** /**
* 修改API限流监控 * 修改API限流监控配置
* 更新现有的限流规则包括使用量剩余值重置时间等
* *
* @param dataiIntegrationRateLimit API限流监控 * @param dataiIntegrationRateLimit API限流监控配置对象
* @return 结果 * @return 影响的行数
*/ */
public int updateDataiIntegrationRateLimit(DataiIntegrationRateLimit dataiIntegrationRateLimit); public int updateDataiIntegrationRateLimit(DataiIntegrationRateLimit dataiIntegrationRateLimit);
/** /**
* 批量删除API限流监控 * 批量删除API限流监控配置
* 根据主键ID数组批量删除多条限流配置记录
* *
* @param ids 需要删除的API限流监控主键集合 * @param ids 需要删除的API限流监控主键集合
* @return 结果 * @return 影响的行数
*/ */
public int deleteDataiIntegrationRateLimitByIds(Long[] ids); public int deleteDataiIntegrationRateLimitByIds(Long[] ids);
/** /**
* 删除API限流监控信息 * 根据主键ID删除API限流监控配置
* 删除单条限流配置记录
* *
* @param id API限流监控主键 * @param id API限流监控主键
* @return 结果 * @return 影响的行数
*/ */
public int deleteDataiIntegrationRateLimitById(Long id); public int deleteDataiIntegrationRateLimitById(Long id);
} }

View File

@ -9,6 +9,10 @@ import org.springframework.stereotype.Component;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
/**
* 每日限流重置任务
* 负责重置所有每日限流配置的使用量剩余值和重置时间
*/
@Slf4j @Slf4j
@Component("rateLimitResetTask") @Component("rateLimitResetTask")
public class RateLimitResetTask { public class RateLimitResetTask {
@ -16,25 +20,35 @@ public class RateLimitResetTask {
@Autowired @Autowired
private IDataiIntegrationRateLimitService rateLimitService; private IDataiIntegrationRateLimitService rateLimitService;
/**
* 重置每日限流
* 将所有每日限流配置的使用量重置为0剩余值重置为最大限制值并更新下一次重置时间
*/
public void resetDailyRateLimits() { public void resetDailyRateLimits() {
try { try {
log.info("开始执行每日限流重置任务"); log.info("开始执行每日限流重置任务");
// 查询所有每日限流配置
DataiIntegrationRateLimit query = new DataiIntegrationRateLimit(); DataiIntegrationRateLimit query = new DataiIntegrationRateLimit();
query.setLimitType("Daily"); query.setLimitType("Daily");
List<DataiIntegrationRateLimit> rateLimits = rateLimitService.selectDataiIntegrationRateLimitList(query); List<DataiIntegrationRateLimit> rateLimits = rateLimitService.selectDataiIntegrationRateLimitList(query);
int resetCount = 0; int resetCount = 0;
for (DataiIntegrationRateLimit rateLimit : rateLimits) { for (DataiIntegrationRateLimit rateLimit : rateLimits) {
// 如果当前被阻止则解除阻止状态
if (rateLimit.getIsBlocked() != null && rateLimit.getIsBlocked()) { if (rateLimit.getIsBlocked() != null && rateLimit.getIsBlocked()) {
rateLimit.setIsBlocked(false); rateLimit.setIsBlocked(false);
} }
// 重置使用量为0
rateLimit.setCurrentUsage(0); rateLimit.setCurrentUsage(0);
// 重置剩余值为最大限制值
Integer maxLimit = rateLimit.getMaxLimit() != null ? rateLimit.getMaxLimit() : 0; Integer maxLimit = rateLimit.getMaxLimit() != null ? rateLimit.getMaxLimit() : 0;
rateLimit.setRemainingVal(maxLimit); rateLimit.setRemainingVal(maxLimit);
// 更新重置时间为明天0点
rateLimit.setResetTime(LocalDateTime.now().plusDays(1).withHour(0).withMinute(0).withSecond(0)); rateLimit.setResetTime(LocalDateTime.now().plusDays(1).withHour(0).withMinute(0).withSecond(0));
// 更新数据库
rateLimitService.updateDataiIntegrationRateLimit(rateLimit); rateLimitService.updateDataiIntegrationRateLimit(rateLimit);
resetCount++; resetCount++;
} }