From 4ddfd502023662f6d25c4be416d88751e206d91a Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期二, 25 十月 2022 09:45:30 +0800
Subject: [PATCH] 1

---
 src/main/java/com/lf/server/service/all/PermsService.java |   84 +++++++++++++++++++++++++++++++++++++----
 1 files changed, 75 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/lf/server/service/all/PermsService.java b/src/main/java/com/lf/server/service/all/PermsService.java
index 682ed80..046e8b2 100644
--- a/src/main/java/com/lf/server/service/all/PermsService.java
+++ b/src/main/java/com/lf/server/service/all/PermsService.java
@@ -1,14 +1,13 @@
 package com.lf.server.service.all;
 
-import com.lf.server.entity.all.MenusAuthEntity;
-import com.lf.server.entity.all.PermsAuthEntity;
-import com.lf.server.entity.all.ResAuthEntity;
+import com.lf.server.entity.all.*;
 import com.lf.server.helper.StringHelper;
 import com.lf.server.mapper.all.PermsMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 
 /**
  * 鎺堟潈鏈嶅姟
@@ -19,13 +18,27 @@
     @Autowired
     PermsMapper permsMapper;
 
+    @Autowired
+    RedisService redisService;
+
     @Override
     public List<ResAuthEntity> selectRes(String uid) {
         if (StringHelper.isEmpty(uid)) {
             return null;
         }
 
-        return permsMapper.selectRes(uid);
+        String key = RedisCacheKey.permsResKey(uid);
+        Object obj = redisService.get(key);
+        if (obj instanceof List<?>) {
+            return (List<ResAuthEntity>) obj;
+        }
+
+        List<ResAuthEntity> list = permsMapper.selectRes(uid);
+        if (list != null && list.size() > 0) {
+            redisService.put(key, list, SettingData.CACHE_EXPIRE, TimeUnit.MINUTES);
+        }
+
+        return list;
     }
 
     @Override
@@ -34,24 +47,77 @@
             return null;
         }
 
-        return permsMapper.selectMenus(uid);
+        String key = RedisCacheKey.permsMenusKey(uid);
+        Object obj = redisService.get(key);
+        if (obj instanceof List<?>) {
+            return (List<MenusAuthEntity>) obj;
+        }
+
+        List<MenusAuthEntity> list = permsMapper.selectMenus(uid);
+        if (list != null && list.size() > 0) {
+            redisService.put(key, list, SettingData.CACHE_EXPIRE, TimeUnit.MINUTES);
+        }
+
+        return list;
     }
 
     @Override
-    public List<PermsAuthEntity> selectPerms(String uid) {
+    public List<String> selectPerms(String uid) {
         if (StringHelper.isEmpty(uid)) {
             return null;
         }
 
-        return permsMapper.selectPerms(uid);
+        String key = RedisCacheKey.permsPermsKey(uid);
+        Object obj = redisService.get(key);
+        if (obj instanceof List<?>) {
+            return (List<String>) obj;
+        }
+
+        List<String> list = permsMapper.selectPerms(uid);
+        if (list != null && list.size() > 0) {
+            redisService.put(key, list, SettingData.CACHE_EXPIRE, TimeUnit.MINUTES);
+        }
+
+        return list;
     }
 
     @Override
-    public List<String> selectPerms2(String uid) {
+    public List<PermsAuthEntity> selectPermsEntity(String uid) {
         if (StringHelper.isEmpty(uid)) {
             return null;
         }
 
-        return permsMapper.selectPerms2(uid);
+        String key = RedisCacheKey.permsPermsEntityKey(uid);
+        Object obj = redisService.get(key);
+        if (obj instanceof List<?>) {
+            return (List<PermsAuthEntity>) obj;
+        }
+
+        List<PermsAuthEntity> list = permsMapper.selectPermsEntity(uid);
+        if (list != null && list.size() > 0) {
+            redisService.put(key, list, SettingData.CACHE_EXPIRE, TimeUnit.MINUTES);
+        }
+
+        return list;
+    }
+
+    public void clearResCache() {
+        clearCache(RedisCacheKey.permsResKey(""));
+    }
+
+    public void clearPermsCache() {
+        clearCache(RedisCacheKey.permsMenusKey(""));
+        clearCache(RedisCacheKey.permsPermsKey(""));
+        clearCache(RedisCacheKey.permsPermsEntityKey(""));
+    }
+
+    public void clearAllCache() {
+        clearCache(RedisCacheKey.permsRootKey());
+    }
+
+    protected void clearCache(String key) {
+        if (redisService.hasKey(key)) {
+            redisService.clearKeys(key);
+        }
     }
 }

--
Gitblit v1.9.3