This commit is contained in:
2025-11-06 10:39:04 +08:00
parent 43cc987d67
commit a830c75bf1
3 changed files with 441 additions and 11 deletions

View File

@@ -223,19 +223,34 @@ public class TencentDocServiceImpl implements ITencentDocService {
@Override
public JSONObject readSheetData(String accessToken, String fileId, String sheetId, String range) {
try {
log.info("Service层 - 开始读取表格数据: fileId={}, sheetId={}, range={}", fileId, sheetId, range);
// 获取用户信息包含Open-Id
// 官方响应格式:{ "ret": 0, "msg": "Succeed", "data": { "openID": "xxx", ... } }
log.debug("正在获取用户信息...");
JSONObject userInfo = TencentDocApiUtil.getUserInfo(accessToken);
JSONObject data = userInfo.getJSONObject("data");
if (data == null) {
throw new RuntimeException("无法获取用户数据请检查Access Token是否有效");
}
String openId = data.getString("openID"); // 注意:官方返回的字段名是 openID大写ID
if (openId == null || openId.isEmpty()) {
throw new RuntimeException("无法获取Open-Id请检查Access Token是否有效");
log.debug("用户信息响应: {}", userInfo != null ? userInfo.toJSONString() : "null");
if (userInfo == null) {
throw new RuntimeException("getUserInfo 返回 nullAccess Token 可能无效");
}
return TencentDocApiUtil.readSheetData(
JSONObject data = userInfo.getJSONObject("data");
if (data == null) {
log.error("用户信息响应中没有 data 字段,完整响应: {}", userInfo.toJSONString());
throw new RuntimeException("无法获取用户数据请检查Access Token是否有效。响应: " + userInfo.toJSONString());
}
String openId = data.getString("openID"); // 注意:官方返回的字段名是 openID大写ID
if (openId == null || openId.isEmpty()) {
log.error("data 对象中没有 openID 字段data内容: {}", data.toJSONString());
throw new RuntimeException("无法获取Open-Id请检查Access Token是否有效。data: " + data.toJSONString());
}
log.info("成功获取 Open ID: {}", openId);
log.info("准备调用API - appId: {}, apiBaseUrl: {}", tencentDocConfig.getAppId(), tencentDocConfig.getApiBaseUrl());
JSONObject result = TencentDocApiUtil.readSheetData(
accessToken,
tencentDocConfig.getAppId(),
openId,
@@ -244,8 +259,12 @@ public class TencentDocServiceImpl implements ITencentDocService {
range,
tencentDocConfig.getApiBaseUrl()
);
log.info("API调用成功返回结果: {}", result != null ? result.toJSONString() : "null");
return result;
} catch (Exception e) {
log.error("读取表格数据失败", e);
log.error("读取表格数据失败 - fileId: {}, sheetId: {}, range: {}", fileId, sheetId, range, e);
throw new RuntimeException("读取表格数据失败: " + e.getMessage(), e);
}
}