From 580e484dd0b562e1b01e74e7e9fd64e19b3fa90c Mon Sep 17 00:00:00 2001 From: yys <47@gamerwa.com> Date: Fri, 17 Apr 2026 16:31:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=EF=BC=8Credis=20key=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E6=94=BE=E5=9C=A8RedisKey=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/common/constant/RedisKey.java | 15 +++++++++++++++ .../com/ruoyi/framework/config/RedisConfig.java | 16 ++++++++++++++++ .../impl/AiVideoReportDataServiceImpl.java | 3 ++- 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 web-api/ruoyi-common/src/main/java/com/ruoyi/common/constant/RedisKey.java diff --git a/web-api/ruoyi-common/src/main/java/com/ruoyi/common/constant/RedisKey.java b/web-api/ruoyi-common/src/main/java/com/ruoyi/common/constant/RedisKey.java new file mode 100644 index 0000000..a9ab047 --- /dev/null +++ b/web-api/ruoyi-common/src/main/java/com/ruoyi/common/constant/RedisKey.java @@ -0,0 +1,15 @@ +package com.ruoyi.common.constant; + +/** + * Redis / Spring Cache 名称等常量(与 {@code @Cacheable(cacheNames = ...)}、RedisCacheConfiguration 一致) + */ +public final class RedisKey { + + private RedisKey() { + } + + /** + * Spring Cache 名:部门近七日汇总({@code @Cacheable} 与 TTL 配置须同名) + */ + public static final String CACHE_DEPT_SUMMARY = "dept_summary"; +} diff --git a/web-api/ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedisConfig.java b/web-api/ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedisConfig.java index f5bd47c..9445ca7 100644 --- a/web-api/ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedisConfig.java +++ b/web-api/ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedisConfig.java @@ -1,14 +1,19 @@ package com.ruoyi.framework.config; +import java.time.Duration; + import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; +import com.ruoyi.common.constant.RedisKey; +import org.springframework.boot.autoconfigure.cache.RedisCacheManagerBuilderCustomizer; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.cache.RedisCacheConfiguration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.script.DefaultRedisScript; @@ -23,6 +28,17 @@ import org.springframework.data.redis.serializer.StringRedisSerializer; @Configuration @EnableCaching public class RedisConfig extends CachingConfigurerSupport { + + /** + * 部门汇总等缓存单独 TTL(与 {@link RedisKey#CACHE_DEPT_SUMMARY} 对应) + */ + @Bean + public RedisCacheManagerBuilderCustomizer deptSummaryCacheTtlCustomizer() { + return builder -> builder.withCacheConfiguration( + RedisKey.CACHE_DEPT_SUMMARY, + RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofMinutes(5))); + } + @Bean @SuppressWarnings(value = {"unchecked", "rawtypes"}) public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) { diff --git a/web-api/ruoyi-system/src/main/java/com/ruoyi/ai/service/impl/AiVideoReportDataServiceImpl.java b/web-api/ruoyi-system/src/main/java/com/ruoyi/ai/service/impl/AiVideoReportDataServiceImpl.java index 35fe9fb..8a957b1 100644 --- a/web-api/ruoyi-system/src/main/java/com/ruoyi/ai/service/impl/AiVideoReportDataServiceImpl.java +++ b/web-api/ruoyi-system/src/main/java/com/ruoyi/ai/service/impl/AiVideoReportDataServiceImpl.java @@ -3,6 +3,7 @@ package com.ruoyi.ai.service.impl; import com.ruoyi.ai.domain.AiVideoReportData; import com.ruoyi.ai.mapper.AiVideoReportDataMapper; import com.ruoyi.ai.service.IAiVideoReportDataService; +import com.ruoyi.common.constant.RedisKey; import com.ruoyi.common.core.dto.DeptSummaryDTO; import com.ruoyi.common.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -41,7 +42,7 @@ public class AiVideoReportDataServiceImpl implements IAiVideoReportDataService { * 部门近七日汇总数据 */ @Override - @Cacheable(cacheNames = "dept_summary", key = "#deptId") + @Cacheable(cacheNames = RedisKey.CACHE_DEPT_SUMMARY, key = "#deptId") public DeptSummaryDTO getSevenDayDeptSummaryData(Long deptId) { Date endTime = new Date(); // 获取今天的0点,再减去7天