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