From decbebb4de7ad3952caee92714e6d198f4b57b65 Mon Sep 17 00:00:00 2001 From: Kris Date: Sat, 3 Jan 2026 21:11:36 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90feta=E3=80=91=20=E9=99=90=E6=B5=81?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E8=A1=A8=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IDataiIntegrationRateLimitService.java | 36 +++++++++++-------- .../integration/task/RateLimitResetTask.java | 14 ++++++++ 2 files changed, 35 insertions(+), 15 deletions(-) diff --git a/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/service/IDataiIntegrationRateLimitService.java b/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/service/IDataiIntegrationRateLimitService.java index 23869628..f3a2f8da 100644 --- a/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/service/IDataiIntegrationRateLimitService.java +++ b/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/service/IDataiIntegrationRateLimitService.java @@ -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 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); } diff --git a/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/task/RateLimitResetTask.java b/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/task/RateLimitResetTask.java index f10b6327..cd29bca4 100644 --- a/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/task/RateLimitResetTask.java +++ b/datai-scenes/datai-scene-salesforce/datai-salesforce-integration/src/main/java/com/datai/integration/task/RateLimitResetTask.java @@ -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 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++; }