From 79eb651e12706bb472bfdccaa1463ee3b5795402 Mon Sep 17 00:00:00 2001 From: Leo Date: Wed, 4 Feb 2026 16:49:13 +0800 Subject: [PATCH] 1 --- doc/WPS365获取文件列表-测试说明.md | 5 +++ .../controller/jarvis/WPS365Controller.java | 7 ++++ .../service/impl/WPS365ApiServiceImpl.java | 34 ++++++++++++------- 3 files changed, 33 insertions(+), 13 deletions(-) diff --git a/doc/WPS365获取文件列表-测试说明.md b/doc/WPS365获取文件列表-测试说明.md index 958da21..baa103f 100644 --- a/doc/WPS365获取文件列表-测试说明.md +++ b/doc/WPS365获取文件列表-测试说明.md @@ -1,5 +1,10 @@ # WPS365 获取文件列表 - 测试说明 +## 关于接口与文档 + +- **用户信息接口**:官方文档(open.wps.cn 用户授权流程)只写“通过 access_token 获取用户信息”,**未给出具体 URL**。项目中曾用 `/api/v1/user/info`,该地址会 404。已改为依次尝试 `v7/user`、`v7/userinfo`、`userinfo`、`user/info`;若均不可用则**降级返回**(不报 500,返回 token 中的 user_id 与占位信息)。若需完整用户信息,请以 [WPS 开放平台文档](https://open.wps.cn/documents) 为准确认正确路径后再改。 +- 其他 WPS 接口(文件列表、KSheet 等)请以 open.wps.cn 对应文档为准,发现路径不一致时以文档为准修改。 + ## 接口说明 - **后端接口**:`GET /jarvis/wps365/files` 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 24a0370..28d0902 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 @@ -210,6 +210,13 @@ public class WPS365Controller extends BaseController { } JSONObject userInfo = wps365ApiService.getUserInfo(tokenInfo.getAccessToken()); + if (userInfo == null) { + // WPS 未提供可用的“当前用户信息”接口或路径变更,降级返回 token 中的 user_id,避免 500 + userInfo = new JSONObject(); + userInfo.put("user_id", tokenInfo.getUserId()); + userInfo.put("name", "已授权用户"); + userInfo.put("email", "-"); + } return AjaxResult.success("获取用户信息成功", userInfo); } catch (Exception e) { log.error("获取用户信息失败", e); diff --git a/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/WPS365ApiServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/WPS365ApiServiceImpl.java index f64c98b..db05dfc 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/WPS365ApiServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/WPS365ApiServiceImpl.java @@ -28,20 +28,28 @@ public class WPS365ApiServiceImpl implements IWPS365ApiService { @Override public JSONObject getUserInfo(String accessToken) { - try { - // WPS365用户信息API: GET /api/v1/user/info - // 注意:如果此API不存在或需要不同的路径,请查看WPS365官方文档 - String url = wps365Config.getApiBaseUrl() + "/user/info"; - log.debug("调用用户信息API: {}", url); - JSONObject result = WPS365ApiUtil.httpRequest("GET", url, accessToken, null); - log.debug("用户信息API响应: {}", result); - return result; - } catch (Exception e) { - log.error("获取用户信息失败 - url: {}, error: {}", - wps365Config.getApiBaseUrl() + "/user/info", e.getMessage(), e); - // 不抛出异常,让调用方处理(使用降级方案) - throw new RuntimeException("获取用户信息失败: " + e.getMessage(), e); + // 官方文档(open.wps.cn 用户授权流程)仅写“通过 access_token 获取用户信息”,未给出具体路径; + // /api/v1/user/info 返回 404,以下按常见惯例尝试,若均不可用则返回 null,由 Controller 降级返回 + String[] urlsToTry = { + "https://openapi.wps.cn/v7/user", + "https://openapi.wps.cn/v7/userinfo", + wps365Config.getApiBaseUrl() + "/userinfo", + wps365Config.getApiBaseUrl() + "/user/info" + }; + for (String url : urlsToTry) { + try { + log.debug("尝试用户信息API: {}", url); + JSONObject result = WPS365ApiUtil.httpRequest("GET", url, accessToken, null); + if (result != null) { + log.debug("用户信息API成功 - url: {}", url); + return result; + } + } catch (Exception e) { + log.debug("用户信息API失败 - url: {}, error: {}", url, e.getMessage()); + } } + log.warn("所有用户信息接口均不可用,请以 open.wps.cn 文档为准确认正确路径"); + return null; } @Override