【feta】 限流日志表增加日志
This commit is contained in:
parent
547b2c6436
commit
decbebb4de
@ -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);
|
||||
}
|
||||
|
||||
@ -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++;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user