From c837917be3c65429f497a2788cc7d671b3353e45 Mon Sep 17 00:00:00 2001 From: Leo Date: Thu, 15 Jan 2026 21:07:53 +0800 Subject: [PATCH] 1 --- .../controller/jarvis/WPS365Controller.java | 24 ++++++++++----- .../service/impl/WPS365OAuthServiceImpl.java | 29 +++++++++++++++++-- 2 files changed, 44 insertions(+), 9 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/jarvis/WPS365Controller.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/jarvis/WPS365Controller.java index 7ac7b8d..ee03e3b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/jarvis/WPS365Controller.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/jarvis/WPS365Controller.java @@ -112,15 +112,22 @@ public class WPS365Controller extends BaseController { @GetMapping("/tokenStatus") public AjaxResult getTokenStatus(@RequestParam(required = false) String userId) { try { - // 如果没有提供userId,可以尝试从当前登录用户获取 - // 这里暂时需要前端传入userId,后续可以集成到认证系统中 - if (userId == null || userId.trim().isEmpty()) { - return AjaxResult.error("userId不能为空"); + WPS365TokenInfo tokenInfo = null; + + // 如果提供了userId,查询指定用户的token + if (userId != null && !userId.trim().isEmpty()) { + tokenInfo = wps365OAuthServiceImpl.getTokenByUserId(userId); + } else { + // 如果没有提供userId,尝试查找所有token(通常只有一个) + // 这里使用getCurrentToken方法,它会尝试查找可用的token + tokenInfo = wps365OAuthService.getCurrentToken(); } - - WPS365TokenInfo tokenInfo = wps365OAuthServiceImpl.getTokenByUserId(userId); + if (tokenInfo == null) { - return AjaxResult.success("未授权", false); + JSONObject result = new JSONObject(); + result.put("hasToken", false); + result.put("isValid", false); + return AjaxResult.success("未授权", result); } boolean isValid = wps365OAuthService.isTokenValid(tokenInfo); @@ -129,6 +136,9 @@ public class WPS365Controller extends BaseController { result.put("isValid", isValid); result.put("userId", tokenInfo.getUserId()); result.put("expired", tokenInfo.isExpired()); + if (tokenInfo.getExpiresIn() != null) { + result.put("expiresIn", tokenInfo.getExpiresIn()); + } return AjaxResult.success("获取Token状态成功", result); } catch (Exception e) { diff --git a/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/WPS365OAuthServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/WPS365OAuthServiceImpl.java index 30d9068..6986749 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/WPS365OAuthServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/WPS365OAuthServiceImpl.java @@ -261,8 +261,33 @@ public class WPS365OAuthServiceImpl implements IWPS365OAuthService { @Override public WPS365TokenInfo getCurrentToken() { - // 这里需要根据实际业务获取当前用户ID - // 暂时返回null,需要在Controller中处理用户ID获取逻辑 + // 尝试查找所有WPS365 token(通常只有一个) + // 使用Redis的keys命令查找所有匹配的token key + try { + String pattern = TOKEN_KEY_PREFIX + "*"; + // 注意:keys命令在生产环境可能性能较差,但这里token数量通常很少 + java.util.Collection keys = redisCache.keys(pattern); + if (keys != null && !keys.isEmpty()) { + // 返回第一个找到的有效token + for (String key : keys) { + WPS365TokenInfo tokenInfo = redisCache.getCacheObject(key); + if (tokenInfo != null && isTokenValid(tokenInfo)) { + log.debug("找到有效的WPS365 token: {}", key); + return tokenInfo; + } + } + // 如果没有有效的token,返回第一个(即使过期) + for (String key : keys) { + WPS365TokenInfo tokenInfo = redisCache.getCacheObject(key); + if (tokenInfo != null) { + log.debug("找到WPS365 token(可能已过期): {}", key); + return tokenInfo; + } + } + } + } catch (Exception e) { + log.warn("查找WPS365 token失败", e); + } return null; }