From 41fbf21128745935317d4e19df9ebc57eb94ef05 Mon Sep 17 00:00:00 2001 From: clay <20932067@zju.edu.cn> Date: Mon, 29 Apr 2024 22:07:31 +0800 Subject: [PATCH] =?UTF-8?q?fix=20:=20js=20=E6=89=A7=E8=A1=8C=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/code/engine/JavaScriptEngine.java | 22 +++++++++++++++---- .../fateverse/query/entity/vo/PortalVo.java | 2 ++ .../engine/impl/JavaEngineExecuteHandler.java | 3 +++ .../query/service/impl/PortalServiceImpl.java | 11 ++++++++-- 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/common/common-code/src/main/java/cn/fateverse/common/code/engine/JavaScriptEngine.java b/common/common-code/src/main/java/cn/fateverse/common/code/engine/JavaScriptEngine.java index 7809420..50ff47d 100644 --- a/common/common-code/src/main/java/cn/fateverse/common/code/engine/JavaScriptEngine.java +++ b/common/common-code/src/main/java/cn/fateverse/common/code/engine/JavaScriptEngine.java @@ -41,9 +41,15 @@ public class JavaScriptEngine { * @return 返回结构 */ public static Object execute(String script, String functionName, Object args) { - Value executeFunction = getFunction(functionName, script); - Value result = executeFunction.execute(JSON.toJSONString(args)); - return result.as(Object.class); + try { + Value executeFunction = getFunction(functionName, script); + Value javaObjectAsValue = Value.asValue(args); + Value result = executeFunction.execute(javaObjectAsValue); + return result.as(Object.class); + } catch (Exception e) { + remove(functionName); + throw new CustomException("运行失败!"); + } } @@ -68,7 +74,7 @@ public class JavaScriptEngine { Value result = executeFunction.execute(javaObjectAsValue); return result.as(Object.class); }); - }catch (CustomException e){ + } catch (CustomException e) { EngineResult result = new EngineResult(); result.setSuccess(Boolean.FALSE); result.setConsole(e.getMessage()); @@ -90,4 +96,12 @@ public class JavaScriptEngine { } + private static void remove(String functionName) { + SegmentLock.lock(functionName, () -> { + functionMap.remove(functionName); + return null; + }); + } + + } diff --git a/custom-query/custom-query-biz/src/main/java/cn/fateverse/query/entity/vo/PortalVo.java b/custom-query/custom-query-biz/src/main/java/cn/fateverse/query/entity/vo/PortalVo.java index 4b94fcb..c3348d9 100644 --- a/custom-query/custom-query-biz/src/main/java/cn/fateverse/query/entity/vo/PortalVo.java +++ b/custom-query/custom-query-biz/src/main/java/cn/fateverse/query/entity/vo/PortalVo.java @@ -36,6 +36,8 @@ public class PortalVo extends SimplePortalVo { */ private Boolean page; + private String url; + /** * 条件映射 */ diff --git a/custom-query/custom-query-biz/src/main/java/cn/fateverse/query/handler/engine/impl/JavaEngineExecuteHandler.java b/custom-query/custom-query-biz/src/main/java/cn/fateverse/query/handler/engine/impl/JavaEngineExecuteHandler.java index 1d09ef7..81b6816 100644 --- a/custom-query/custom-query-biz/src/main/java/cn/fateverse/query/handler/engine/impl/JavaEngineExecuteHandler.java +++ b/custom-query/custom-query-biz/src/main/java/cn/fateverse/query/handler/engine/impl/JavaEngineExecuteHandler.java @@ -41,6 +41,9 @@ public class JavaEngineExecuteHandler implements EngineExecuteHandler { @Override public EngineResult mockExecute(DataAdapter dataAdapter, Object data) { + if (!DataAdapterType.JAVA.equals(dataAdapter.getType())) { + return null; + } return javaCodeEngine.mockExecute(dataAdapter.getExecuteCode(), getClassName(dataAdapter), "execute", new Object[]{data}); } diff --git a/custom-query/custom-query-biz/src/main/java/cn/fateverse/query/service/impl/PortalServiceImpl.java b/custom-query/custom-query-biz/src/main/java/cn/fateverse/query/service/impl/PortalServiceImpl.java index 5aa2834..3335652 100644 --- a/custom-query/custom-query-biz/src/main/java/cn/fateverse/query/service/impl/PortalServiceImpl.java +++ b/custom-query/custom-query-biz/src/main/java/cn/fateverse/query/service/impl/PortalServiceImpl.java @@ -129,7 +129,14 @@ public class PortalServiceImpl implements PortalService { } if (PortalEnum.LOCAL.equals(portal.getType())) { UniQuery uniQuery = queryMapper.selectById(portal.getQueryId()); - portalVo.setQueryType(uniQuery.getType()); + if (!ObjectUtils.isEmpty(uniQuery)) { + portalVo.setQueryType(uniQuery.getType()); + } + } else { + PortalInterface portalInterface = portalInterfaceMapper.selectById(portal.getInterfaceId()); + if (!ObjectUtils.isEmpty(portalInterface)) { + portalVo.setUrl(portalInterface.getUrl()); + } } if (portal.getCreateDataAdapter()) { DataAdapter dataAdapter = adapterMapper.selectById(portal.getAdapterId()); @@ -249,7 +256,7 @@ public class PortalServiceImpl implements PortalService { } if (PortalEnum.EXTERNAL.equals(portal.getType())) { createPortalInterface(portalDto, portal); - }else { + } else { UniQuery uniQuery = queryMapper.selectById(portal.getQueryId()); if (ObjectUtils.isEmpty(uniQuery)) { throw new CustomException("未找到对应的查询接口!");