From cace96726d1e9a3dee35eefd135330a7ddc2d700 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期一, 10 七月 2023 14:58:43 +0800
Subject: [PATCH] 1

---
 src/main/java/com/moon/server/service/all/RedisService.java |   12 ++++-
 src/main/java/com/moon/server/mapper/all/PermsMapper.java   |    8 ++++
 src/main/resources/mapper/all/PermsMapper.xml               |   14 +++++++
 src/main/java/com/moon/server/entity/all/RedisCacheKey.java |    7 +++
 src/main/java/com/moon/server/service/all/PermsService.java |   23 +++++++++--
 src/main/java/com/moon/server/service/sys/TokenService.java |    8 +---
 src/main/java/com/moon/server/interceptor/ProxyFilter.java  |   10 ++++-
 7 files changed, 67 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/moon/server/entity/all/RedisCacheKey.java b/src/main/java/com/moon/server/entity/all/RedisCacheKey.java
index 37b017b..befb8fe 100644
--- a/src/main/java/com/moon/server/entity/all/RedisCacheKey.java
+++ b/src/main/java/com/moon/server/entity/all/RedisCacheKey.java
@@ -41,6 +41,13 @@
     }
 
     /**
+     * 璧勬簮鍒楄〃鎺堟潈閿�
+     */
+    public static String permsResListKey(String key) {
+        return "perms:resList:" + key;
+    }
+
+    /**
      * 鑿滃崟鎺堟潈閿�
      */
     public static String permsMenusKey(String key) {
diff --git a/src/main/java/com/moon/server/interceptor/ProxyFilter.java b/src/main/java/com/moon/server/interceptor/ProxyFilter.java
index 7fffc0c..e6e7164 100644
--- a/src/main/java/com/moon/server/interceptor/ProxyFilter.java
+++ b/src/main/java/com/moon/server/interceptor/ProxyFilter.java
@@ -1,10 +1,12 @@
 package com.moon.server.interceptor;
 
+import com.moon.server.entity.all.ResAuthEntity;
 import com.moon.server.entity.all.StaticData;
 import com.moon.server.entity.sys.TokenEntity;
 import com.moon.server.entity.sys.UserEntity;
 import com.moon.server.helper.StringHelper;
 import com.moon.server.helper.WebHelper;
+import com.moon.server.service.all.PermsService;
 import com.moon.server.service.all.SysService;
 import com.moon.server.service.sys.ResLogService;
 
@@ -24,6 +26,9 @@
 public class ProxyFilter implements Filter {
     @Resource
     private SysService sysService;
+
+    @Resource
+    private PermsService permsService;
 
     @Resource
     private ResLogService resLogService;
@@ -150,8 +155,9 @@
         return te.getIp().equals(ip);
     }
 
-    private boolean checkPerms(int resId){
-
+    private boolean checkPerms(UserEntity ue, int resId){
+        String uid = StaticData.ADMIN.equals(ue.getUid()) ? null : ue.getUid();
+        List<ResAuthEntity> rs = permsService.selectRes(uid);
 
         return true;
     }
diff --git a/src/main/java/com/moon/server/mapper/all/PermsMapper.java b/src/main/java/com/moon/server/mapper/all/PermsMapper.java
index 2d112f1..8528302 100644
--- a/src/main/java/com/moon/server/mapper/all/PermsMapper.java
+++ b/src/main/java/com/moon/server/mapper/all/PermsMapper.java
@@ -25,6 +25,14 @@
     public List<ResAuthEntity> selectRes(String uid);
 
     /**
+     * 鏍规嵁鐢ㄦ埛Uid鏌ヨ璧勬簮鍒楄〃
+     *
+     * @param uid
+     * @return
+     */
+    public List<Integer> selectResList(String uid);
+
+    /**
      * 鏍规嵁鐢ㄦ埛Uid鏌ヨ鑿滃崟鎺堟潈
      *
      * @param uid
diff --git a/src/main/java/com/moon/server/service/all/PermsService.java b/src/main/java/com/moon/server/service/all/PermsService.java
index af884db..c8f089b 100644
--- a/src/main/java/com/moon/server/service/all/PermsService.java
+++ b/src/main/java/com/moon/server/service/all/PermsService.java
@@ -38,6 +38,22 @@
     }
 
     @Override
+    public List<Integer> selectResList(String uid) {
+        String key = RedisCacheKey.permsResListKey(uid);
+        Object obj = redisService.get(key);
+        if (obj instanceof List<?>) {
+            return (List<Integer>) obj;
+        }
+
+        List<Integer> list = permsMapper.selectResList(uid);
+        if (list != null && list.size() > 0) {
+            redisService.put(key, list, SettingData.CACHE_EXPIRE, TimeUnit.MINUTES);
+        }
+
+        return list;
+    }
+
+    @Override
     public List<MenusAuthEntity> selectMenus(String uid) {
         String key = RedisCacheKey.permsMenusKey(uid);
         Object obj = redisService.get(key);
@@ -97,15 +113,14 @@
 
     public void clearResCache() {
         redisService.clearKeys(RedisCacheKey.permsResKey(""));
+        redisService.clearKeys(RedisCacheKey.permsResListKey(""));
     }
 
     public void clearPermsCache() {
-        redisService.clearKeys(RedisCacheKey.permsMenusKey(""));
-        redisService.clearKeys(RedisCacheKey.permsPermsKey(""));
-        redisService.clearKeys(RedisCacheKey.permsPermsEntityKey(""));
+        redisService.clearKeys(RedisCacheKey.permsRootKey());
     }
 
     public void clearAllCache() {
-        redisService.clearKeys(RedisCacheKey.permsRootKey());
+        redisService.clearAll();
     }
 }
diff --git a/src/main/java/com/moon/server/service/all/RedisService.java b/src/main/java/com/moon/server/service/all/RedisService.java
index 9216e48..a07b4c4 100644
--- a/src/main/java/com/moon/server/service/all/RedisService.java
+++ b/src/main/java/com/moon/server/service/all/RedisService.java
@@ -73,7 +73,9 @@
      * @param key 閿�
      */
     public void delete(String key) {
-        redisTemplate.delete(key);
+        if (hasKey(key)) {
+            redisTemplate.delete(key);
+        }
     }
 
     /**
@@ -83,7 +85,9 @@
      */
     public void clearKeys(String subKeyString) {
         Set<String> keys = redisTemplate.keys(subKeyString + "*");
-        redisTemplate.delete(keys);
+        if (null != keys && keys.size() > 0) {
+            redisTemplate.delete(keys);
+        }
     }
 
     /**
@@ -91,6 +95,8 @@
      */
     public void clearAll() {
         Set<String> keys = redisTemplate.keys("*");
-        redisTemplate.delete(keys);
+        if (null != keys && keys.size() > 0) {
+            redisTemplate.delete(keys);
+        }
     }
 }
diff --git a/src/main/java/com/moon/server/service/sys/TokenService.java b/src/main/java/com/moon/server/service/sys/TokenService.java
index f2fb977..44cdf3d 100644
--- a/src/main/java/com/moon/server/service/sys/TokenService.java
+++ b/src/main/java/com/moon/server/service/sys/TokenService.java
@@ -158,13 +158,9 @@
 
         // 娓呴櫎缂撳瓨
         String tokenKey = RedisCacheKey.signTokenKey(token);
-        if (redisService.hasKey(tokenKey)) {
-            redisService.delete(tokenKey);
-        }
+        redisService.delete(tokenKey);
         String userKey = RedisCacheKey.signUserKey(te.getToken());
-        if (redisService.hasKey(userKey)) {
-            redisService.delete(userKey);
-        }
+        redisService.delete(userKey);
 
         // db锛岃缃护鐗岃繃鏈�
         te.setUpdateUser(ue.getId());
diff --git a/src/main/resources/mapper/all/PermsMapper.xml b/src/main/resources/mapper/all/PermsMapper.xml
index a073f3d..5def3cf 100644
--- a/src/main/resources/mapper/all/PermsMapper.xml
+++ b/src/main/resources/mapper/all/PermsMapper.xml
@@ -15,6 +15,20 @@
         order by d.id
     </select>
 
+    <select id="selectResList" resultType="java.lang.Integer">
+        select distinct d.id
+        from lf.sys_user a
+        inner join lf.sys_role_user b on a.id = b.userid
+        inner join lf.sys_role_res c on b.roleid = c.roleid
+        inner join lf.sys_res d on c.resid = d.id
+        <where>
+            <if test="uid != null">
+                a.uid = #{uid}
+            </if>
+        </where>
+        order by d.id
+    </select>
+
     <select id="selectMenus" resultType="com.moon.server.entity.all.MenusAuthEntity">
         select distinct e.id,e.pid,e.cn_name,e.en_name,e.url,e.perms,e.type,e.css,e.icon,e.level,e.order_num,e.is_show
         from lf.sys_user a

--
Gitblit v1.9.3