From cf33feb7d004eaaea2264918352b362dbd5d242b Mon Sep 17 00:00:00 2001 From: wanghu Date: Mon, 17 Aug 2026 10:39:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=BB=E9=99=A4login=20=E7=9A=84=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/api/LoginUserController.java | 12 ----- .../controller/api/UserController.java | 1 - .../service/com/ComSchTreeService.java | 46 +++++++++++++------ .../bschclassmanage/utils/RedisConstants.java | 4 ++ 4 files changed, 35 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/yunhai/bschclassmanage/controller/api/LoginUserController.java b/src/main/java/com/yunhai/bschclassmanage/controller/api/LoginUserController.java index c2b57e7..3a88afd 100644 --- a/src/main/java/com/yunhai/bschclassmanage/controller/api/LoginUserController.java +++ b/src/main/java/com/yunhai/bschclassmanage/controller/api/LoginUserController.java @@ -21,18 +21,6 @@ import java.util.List; @CrossOrigin(originPatterns = {"*"}, allowCredentials = "true") public class LoginUserController { - - @GetMapping("GetUserMod") - public List getUserMod() { - return YschBaseOpenApi.getUserModule(UserContext.getUserId(),UserContext.getSchId()); - } - - @GetMapping("GetUserInfo") - public UserContext.UserInfo getUserInfo() { - return UserContext.getCurrentUser(); - } - - @GetMapping("Logout") protected void logout(HttpServletRequest request) { HttpSession session = request.getSession(); diff --git a/src/main/java/com/yunhai/bschclassmanage/controller/api/UserController.java b/src/main/java/com/yunhai/bschclassmanage/controller/api/UserController.java index 09683b3..341bd82 100644 --- a/src/main/java/com/yunhai/bschclassmanage/controller/api/UserController.java +++ b/src/main/java/com/yunhai/bschclassmanage/controller/api/UserController.java @@ -21,7 +21,6 @@ import java.util.List; @CrossOrigin(originPatterns = {"*"}, allowCredentials = "true") public class UserController { - @GetMapping("getUserMod") public List getUserMod() { return YschBaseOpenApi.getUserModule(UserContext.getUserId(),UserContext.getSchId()); diff --git a/src/main/java/com/yunhai/bschclassmanage/service/com/ComSchTreeService.java b/src/main/java/com/yunhai/bschclassmanage/service/com/ComSchTreeService.java index eb5a3cb..390ec62 100644 --- a/src/main/java/com/yunhai/bschclassmanage/service/com/ComSchTreeService.java +++ b/src/main/java/com/yunhai/bschclassmanage/service/com/ComSchTreeService.java @@ -179,22 +179,38 @@ public class ComSchTreeService implements IComSchTreeService { } } - // public List getGroupTree() { - - // return YschBaseOpenApi.getGroupTree(); - -// String cacheKey = "bsch.classmanage.group_tree"; -// // 直接从Redis获取JSON字符串 -// String json = redisUtil.get(cacheKey, String.class); -// // 解析为树结构 -// List treeList = OtherUtil.jsonParseArrayTree(json, BoaGroup.class); -// // 过滤并处理:type=2的节点停止递归 -// return filterTreeByType(treeList, NodeType.SCHOOL.getId()); - //} - public List getGroupTree() { - BoaGroup group = YschBaseOpenApi.getGroupTree(); - return Collections.singletonList(group); + List treeList = getCacheSysGroupTree(); + // 过滤并处理:type=2的节点停止递归 + return filterTreeByType(treeList, NodeType.SCHOOL.getId()); + } + + public List getCacheSysGroupTree() { + String cacheKey= RedisConstants.SYSTEM_GROUP_TREE; + List cached = redisUtil.getList(cacheKey, BoaGroup.class); + if (cached != null && !cached.isEmpty()) { + return cached; + } + + // 2. 加锁防止缓存击穿 + 双重检查 + synchronized (this) { + cached = redisUtil.getList(cacheKey, BoaGroup.class); + if (cached != null && !cached.isEmpty()) { + return cached; + } + + // 3. 从数据库查询 + BoaGroup group = YschBaseOpenApi.getGroupTree(); + List list=Collections.singletonList(group); + + // 4. 仅缓存非空结果;空结果不缓存,防止空缓存污染(穿透风险可忽略) + if (!list.isEmpty()) { + redisUtil.set(cacheKey, list, RedisConstants.CACHE_EXPIRE_1M); + } + return list; + } + + } public List getSchoolList() { diff --git a/src/main/java/com/yunhai/bschclassmanage/utils/RedisConstants.java b/src/main/java/com/yunhai/bschclassmanage/utils/RedisConstants.java index 18d2333..08a0ff7 100644 --- a/src/main/java/com/yunhai/bschclassmanage/utils/RedisConstants.java +++ b/src/main/java/com/yunhai/bschclassmanage/utils/RedisConstants.java @@ -6,6 +6,8 @@ public class RedisConstants { //-----------------------------过期时间-------------------------- + public static final long CACHE_EXPIRE_1M = 60 * 1000; + public static final long CACHE_EXPIRE_5M = 5 * 60 * 1000; public static final long CACHE_EXPIRE_10M = 10 * 60 * 1000; @@ -22,6 +24,8 @@ public class RedisConstants { //-------------------------------系统--------------------------------------- + public static final String SYSTEM_GROUP_TREE = CachePrefix+ ".system_group_tree"; + //系统年级 public static final String SYSTEM_GRAGE =CachePrefix+ ".system_grdae";