diff --git a/changelog.md b/changelog.md index d29718aa..6a09d005 100755 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,7 @@ ## 日常更新 +- 2025-07-22: 修复当objClass被代理后,获取不到interface BUG - 2025-06-15:新增帮助文档管理。有升级SQL,见:[sop-20250615.sql](./upgrade/sop-20250615.sql) - 2025-06-11:java-sdk添加文件下载示例 - 2025-06-01:OpenContext添加charset字段 diff --git a/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/register/ApiRegister.java b/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/register/ApiRegister.java index f48cbeaf..8d2e1b3d 100755 --- a/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/register/ApiRegister.java +++ b/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/register/ApiRegister.java @@ -99,7 +99,15 @@ public class ApiRegister { }*/ Set cache = new HashSet<>(); - Class[] interfaces = objClass.getInterfaces(); + Set> interfaceSet = new HashSet<>(); + Class current = objClass; + while (current != null) { + for (Class iface : current.getInterfaces()) { + interfaceSet.add(iface); + } + current = current.getSuperclass(); + } + Class[] interfaces = interfaceSet.toArray(new Class[0]); for (Class interfaceClass : interfaces) { for (Method method : interfaceClass.getMethods()) { Open open = method.getAnnotation(Open.class);