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

View File

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