diff --git a/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/constants/FileConstants.java b/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/constants/FileConstants.java
index ef961e658..af77233b8 100644
--- a/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/constants/FileConstants.java
+++ b/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/constants/FileConstants.java
@@ -82,4 +82,16 @@ public interface FileConstants {
*/
String DEFAULT_AVATAR_FILE_OBJ_NAME = "defaultAvatar.png";
+ //-------------------------------缓存相关-------------------------------
+
+ /**
+ * 文件信息缓存的前缀
+ */
+ String FILE_INFO_CACHE_NAME_PREFIX = "FILE_INFO:";
+
+ /**
+ * 文件信息缓存的过期时间
+ */
+ Long FILE_CACHE_TIMEOUT_SECONDS = 3600L * 24 * 2;
+
}
diff --git a/kernel-d-file/file-business/pom.xml b/kernel-d-file/file-business/pom.xml
index acaf1892b..a9ceaf690 100644
--- a/kernel-d-file/file-business/pom.xml
+++ b/kernel-d-file/file-business/pom.xml
@@ -61,6 +61,20 @@
spring-boot-starter-web
+
+
+ com.javaguns.roses
+ cache-sdk-memory
+ ${roses.version}
+ true
+
+
+ com.javaguns.roses
+ cache-sdk-redis
+ ${roses.version}
+ true
+
+
diff --git a/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/cache/FileInfoMemoryCache.java b/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/cache/FileInfoMemoryCache.java
new file mode 100644
index 000000000..6d728e171
--- /dev/null
+++ b/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/cache/FileInfoMemoryCache.java
@@ -0,0 +1,27 @@
+package cn.stylefeng.roses.kernel.file.modular.cache;
+
+import cn.hutool.cache.impl.TimedCache;
+import cn.stylefeng.roses.kernel.cache.memory.AbstractMemoryCacheOperator;
+import cn.stylefeng.roses.kernel.file.api.constants.FileConstants;
+import cn.stylefeng.roses.kernel.file.api.pojo.response.SysFileInfoResponse;
+
+/**
+ * 文件信息的内存缓存
+ *
+ * key是文件id,value是SysFileInfoResponse
+ *
+ * @author fengshuonan
+ * @since 2025/1/14 16:58
+ */
+public class FileInfoMemoryCache extends AbstractMemoryCacheOperator {
+
+ public FileInfoMemoryCache(TimedCache timedCache) {
+ super(timedCache);
+ }
+
+ @Override
+ public String getCommonKeyPrefix() {
+ return FileConstants.FILE_INFO_CACHE_NAME_PREFIX;
+ }
+
+}
\ No newline at end of file
diff --git a/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/cache/FileInfoRedisCache.java b/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/cache/FileInfoRedisCache.java
new file mode 100644
index 000000000..094281213
--- /dev/null
+++ b/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/cache/FileInfoRedisCache.java
@@ -0,0 +1,27 @@
+package cn.stylefeng.roses.kernel.file.modular.cache;
+
+import cn.stylefeng.roses.kernel.cache.redis.AbstractRedisCacheOperator;
+import cn.stylefeng.roses.kernel.file.api.constants.FileConstants;
+import cn.stylefeng.roses.kernel.file.api.pojo.response.SysFileInfoResponse;
+import org.springframework.data.redis.core.RedisTemplate;
+
+/**
+ * 文件信息的Redis缓存
+ *
+ * key是文件id,value是SysFileInfoResponse
+ *
+ * @author fengshuonan
+ * @since 2025/1/14 16:58
+ */
+public class FileInfoRedisCache extends AbstractRedisCacheOperator {
+
+ public FileInfoRedisCache(RedisTemplate redisTemplate) {
+ super(redisTemplate);
+ }
+
+ @Override
+ public String getCommonKeyPrefix() {
+ return FileConstants.FILE_INFO_CACHE_NAME_PREFIX;
+ }
+
+}
diff --git a/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/impl/SysFileInfoServiceImpl.java b/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/impl/SysFileInfoServiceImpl.java
index 8aaed1161..0b31d8073 100644
--- a/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/impl/SysFileInfoServiceImpl.java
+++ b/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/impl/SysFileInfoServiceImpl.java
@@ -33,6 +33,7 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.digest.MD5;
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
+import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi;
import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
@@ -100,6 +101,9 @@ public class SysFileInfoServiceImpl extends ServiceImpl fileInfoCache;
+
@Override
public SysFileInfoResponse getFileInfoResult(Long fileId) {
diff --git a/kernel-d-file/file-spring-boot-starter/pom.xml b/kernel-d-file/file-spring-boot-starter/pom.xml
index c65336b96..c6071f6b6 100644
--- a/kernel-d-file/file-spring-boot-starter/pom.xml
+++ b/kernel-d-file/file-spring-boot-starter/pom.xml
@@ -31,6 +31,20 @@
${roses.version}
+
+
+ com.javaguns.roses
+ cache-sdk-memory
+ ${roses.version}
+ true
+
+
+ com.javaguns.roses
+ cache-sdk-redis
+ ${roses.version}
+ true
+
+
diff --git a/kernel-d-file/file-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/file/starter/cache/FileMemoryCacheAutoConfiguration.java b/kernel-d-file/file-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/file/starter/cache/FileMemoryCacheAutoConfiguration.java
new file mode 100644
index 000000000..241b7b9b4
--- /dev/null
+++ b/kernel-d-file/file-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/file/starter/cache/FileMemoryCacheAutoConfiguration.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright [2020-2030] [https://www.stylefeng.cn]
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Guns源码头部的版权声明。
+ * 3.请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 6.若您的项目无法满足以上几点,可申请商业授权
+ */
+package cn.stylefeng.roses.kernel.file.starter.cache;
+
+import cn.hutool.cache.CacheUtil;
+import cn.hutool.cache.impl.TimedCache;
+import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi;
+import cn.stylefeng.roses.kernel.file.api.constants.FileConstants;
+import cn.stylefeng.roses.kernel.file.api.pojo.response.SysFileInfoResponse;
+import cn.stylefeng.roses.kernel.file.modular.cache.FileInfoMemoryCache;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 文件相关的缓存
+ *
+ * @author fengshuonan
+ * @since 2025/1/14 17:03
+ */
+@Configuration
+@ConditionalOnMissingClass("org.springframework.data.redis.connection.RedisConnectionFactory")
+public class FileMemoryCacheAutoConfiguration {
+
+ /**
+ * 文件相关的信息缓存
+ *
+ * @author fengshuonan
+ * @since 2025/1/14 17:04
+ */
+ @Bean
+ public CacheOperatorApi fileInfoCache() {
+ TimedCache cache = CacheUtil.newTimedCache(1000 * FileConstants.FILE_CACHE_TIMEOUT_SECONDS);
+ return new FileInfoMemoryCache(cache);
+ }
+
+}
diff --git a/kernel-d-file/file-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/file/starter/cache/FileRedisCacheAutoConfiguration.java b/kernel-d-file/file-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/file/starter/cache/FileRedisCacheAutoConfiguration.java
new file mode 100644
index 000000000..746252413
--- /dev/null
+++ b/kernel-d-file/file-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/file/starter/cache/FileRedisCacheAutoConfiguration.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright [2020-2030] [https://www.stylefeng.cn]
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Guns源码头部的版权声明。
+ * 3.请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 6.若您的项目无法满足以上几点,可申请商业授权
+ */
+package cn.stylefeng.roses.kernel.file.starter.cache;
+
+import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi;
+import cn.stylefeng.roses.kernel.cache.redis.util.CreateRedisTemplateUtil;
+import cn.stylefeng.roses.kernel.file.api.pojo.response.SysFileInfoResponse;
+import cn.stylefeng.roses.kernel.file.modular.cache.FileInfoRedisCache;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+
+/**
+ * 文件信息的缓存
+ *
+ * @author fengshuonan
+ * @since 2025/1/14 17:23
+ */
+@Configuration
+@ConditionalOnClass(name = "org.springframework.data.redis.connection.RedisConnectionFactory")
+public class FileRedisCacheAutoConfiguration {
+
+ /**
+ * 文件信息的Redis缓存
+ *
+ * @author fengshuonan
+ * @since 2025/1/14 17:25
+ */
+ @Bean
+ public CacheOperatorApi fileInfoCache(RedisConnectionFactory redisConnectionFactory) {
+ RedisTemplate redisTemplate = CreateRedisTemplateUtil.createObject(redisConnectionFactory);
+ return new FileInfoRedisCache(redisTemplate);
+ }
+
+}
diff --git a/kernel-d-file/file-spring-boot-starter/src/main/resources/META-INF/spring.factories b/kernel-d-file/file-spring-boot-starter/src/main/resources/META-INF/spring.factories
index 9dd8e8ec7..0e9acd7bf 100644
--- a/kernel-d-file/file-spring-boot-starter/src/main/resources/META-INF/spring.factories
+++ b/kernel-d-file/file-spring-boot-starter/src/main/resources/META-INF/spring.factories
@@ -1,2 +1,4 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
- cn.stylefeng.roses.kernel.file.starter.ProjectFileAutoConfiguration
\ No newline at end of file
+ cn.stylefeng.roses.kernel.file.starter.ProjectFileAutoConfiguration,\
+ cn.stylefeng.roses.kernel.file.starter.cache.FileRedisCacheAutoConfiguration,\
+ cn.stylefeng.roses.kernel.file.starter.cache.FileMemoryCacheAutoConfiguration
\ No newline at end of file