From 5caf7ae4a9451cfa9bf4160ec333e7ce4ec69c6d Mon Sep 17 00:00:00 2001
From: fengshuonan <sn93@qq.com>
Date: Fri, 14 Jul 2023 22:15:52 +0800
Subject: [PATCH] =?UTF-8?q?=E3=80=908.0=E3=80=91=E3=80=90sys=E3=80=91?=
 =?UTF-8?q?=E3=80=90user=E3=80=91=E6=9B=B4=E6=96=B0=E7=94=A8=E6=88=B7?=
 =?UTF-8?q?=E7=BC=93=E5=AD=98=E9=85=8D=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../UserMemoryCacheAutoConfiguration.java     | 60 +++++++++++++++++++
 .../user/UserRedisCacheAutoConfiguration.java | 60 +++++++++++++++++++
 2 files changed, 120 insertions(+)
 create mode 100644 kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/sys/starter/cache/user/UserMemoryCacheAutoConfiguration.java
 create mode 100644 kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/sys/starter/cache/user/UserRedisCacheAutoConfiguration.java

diff --git a/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/sys/starter/cache/user/UserMemoryCacheAutoConfiguration.java b/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/sys/starter/cache/user/UserMemoryCacheAutoConfiguration.java
new file mode 100644
index 000000000..12f9a50da
--- /dev/null
+++ b/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/sys/starter/cache/user/UserMemoryCacheAutoConfiguration.java
@@ -0,0 +1,60 @@
+/*
+ * 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.sys.starter.cache.user;
+
+import cn.hutool.cache.CacheUtil;
+import cn.hutool.cache.impl.TimedCache;
+import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi;
+import cn.stylefeng.roses.kernel.sys.modular.user.cache.userrole.UserRoleMemoryCache;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.List;
+
+/**
+ * 用户相关所有缓存
+ *
+ * @author fengshuonan
+ * @since 2023/7/14 22:13
+ */
+@Configuration
+@ConditionalOnMissingClass("org.springframework.data.redis.connection.RedisConnectionFactory")
+public class UserMemoryCacheAutoConfiguration {
+
+    /**
+     * 用户绑定角色的缓存
+     *
+     * @author fengshuonan
+     * @since 2023/7/14 22:14
+     */
+    @Bean
+    public CacheOperatorApi<List<Long>> userRoleCache() {
+        // 1小时过期
+        TimedCache<String, List<Long>> cache = CacheUtil.newTimedCache(1000 * 3600);
+        return new UserRoleMemoryCache(cache);
+    }
+
+}
diff --git a/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/sys/starter/cache/user/UserRedisCacheAutoConfiguration.java b/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/sys/starter/cache/user/UserRedisCacheAutoConfiguration.java
new file mode 100644
index 000000000..aa9d6c88c
--- /dev/null
+++ b/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/sys/starter/cache/user/UserRedisCacheAutoConfiguration.java
@@ -0,0 +1,60 @@
+/*
+ * 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.sys.starter.cache.user;
+
+import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi;
+import cn.stylefeng.roses.kernel.cache.redis.util.CreateRedisTemplateUtil;
+import cn.stylefeng.roses.kernel.sys.modular.user.cache.userrole.UserRoleRedisCache;
+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;
+
+import java.util.List;
+
+/**
+ * 用户相关所有缓存
+ *
+ * @author fengshuonan
+ * @since 2023/7/14 22:13
+ */
+@Configuration
+@ConditionalOnClass(name = "org.springframework.data.redis.connection.RedisConnectionFactory")
+public class UserRedisCacheAutoConfiguration {
+
+    /**
+     * 用户绑定角色的缓存
+     *
+     * @author fengshuonan
+     * @since 2023/7/14 22:15
+     */
+    @Bean
+    public CacheOperatorApi<List<Long>> userRoleCache(RedisConnectionFactory redisConnectionFactory) {
+        RedisTemplate<String, List<Long>> redisTemplate = CreateRedisTemplateUtil.createObject(redisConnectionFactory);
+        return new UserRoleRedisCache(redisTemplate);
+    }
+
+}