From 99dfb011ee863e37ad3100dbe7f67c3e602d1962 Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Wed, 3 Mar 2021 12:50:31 +0800 Subject: [PATCH 01/18] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/message/service/impl/MessageServiceImpl.java | 4 ++-- .../java/yi/master/coretest/message/test/MessageAutoTest.java | 3 ++- src/main/webapp/js/globalConstant.js | 2 +- src/main/webapp/resource/advanced/interfaceProbe.js | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/yi/master/business/message/service/impl/MessageServiceImpl.java b/src/main/java/yi/master/business/message/service/impl/MessageServiceImpl.java index cb2661b..7d7ba3c 100644 --- a/src/main/java/yi/master/business/message/service/impl/MessageServiceImpl.java +++ b/src/main/java/yi/master/business/message/service/impl/MessageServiceImpl.java @@ -47,9 +47,9 @@ public class MessageServiceImpl extends BaseServiceImpl implements Mess MessageScene messageScene = new MessageScene(); messageScene.setMessage(message); messageScene.setProjectInfo(message.getProjectInfo()); - messageScene.setSceneName("默认场景"); + messageScene.setSceneName("正常场景"); messageScene.setSystems(message.getSystems()); - messageScene.setMark("这是自动创建的测试场景"); + messageScene.setMark("这是自动创建的正常测试场景"); messageSceneService.save(messageScene, true, null); } diff --git a/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java b/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java index d5fb554..aaeaa27 100644 --- a/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java +++ b/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java @@ -29,6 +29,7 @@ import yi.master.constant.MessageKeys; import yi.master.constant.SystemConsts; import yi.master.coretest.message.parse.MessageParse; import yi.master.coretest.message.process.MessageProcess; +import yi.master.coretest.message.protocol.HTTPTestClient; import yi.master.coretest.message.protocol.TestClient; import yi.master.coretest.message.protocol.entity.ClientTestResponseObject; import yi.master.exception.YiException; @@ -303,7 +304,7 @@ public class MessageAutoTest { //是否使用新的测试客户端来进行测试 if (testScene.isNewClient()) { - procotolClient = (DefaultHttpClient) testScene.getTestClient().getTestClient(); + procotolClient = (DefaultHttpClient) HTTPTestClient.getInstance().getTestClient(); } //需要异步执行的场景 diff --git a/src/main/webapp/js/globalConstant.js b/src/main/webapp/js/globalConstant.js index f823a2e..fb002b2 100644 --- a/src/main/webapp/js/globalConstant.js +++ b/src/main/webapp/js/globalConstant.js @@ -335,7 +335,7 @@ var REQUEST_URL = { DEL: "ptr-del", GET:"ptr-get", LIST: "ptr-list", - ANALYZE: "ptr-anaylzeView", + ANALYZE: "ptr-analyseView", SUMMARIZED: "ptr-summarizedView", DETAILS_LIST_ALL: "ptr-detailsList" }, diff --git a/src/main/webapp/resource/advanced/interfaceProbe.js b/src/main/webapp/resource/advanced/interfaceProbe.js index 4e3d6f4..dd9aa9f 100644 --- a/src/main/webapp/resource/advanced/interfaceProbe.js +++ b/src/main/webapp/resource/advanced/interfaceProbe.js @@ -482,7 +482,7 @@ var eventList = { }); }, "#choose-probe-scene":function () { - layer_show("选择探测接口场景", "chooseMessageScene.html?callbackFun=c", null, null, 2); + layer_show("选择探测接口场景", "chooseMessageScene.html?callbackFun=chooseScene", null, null, 2); }, "#add-object":function(){ publish.renderParams.editPage.modeFlag = 0; -- Gitee From 7e2de6ecfa33a79bae8a6031971cd323095fd25b Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Wed, 3 Mar 2021 15:17:48 +0800 Subject: [PATCH 02/18] =?UTF-8?q?=E7=BB=86=E8=8A=82=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/MessageServiceImpl.java | 4 +- .../testconfig/bean/GlobalVariable.java | 13 +++-- .../message/test/MessageAutoTest.java | 3 +- .../java/yi/master/util/PracticalUtils.java | 19 +++++++- src/main/webapp/js/globalConstant.js | 2 +- .../resource/advanced/interfaceProbe.js | 5 +- src/main/webapp/resource/message/autoTask.js | 15 ------ src/main/webapp/resource/message/message.js | 2 +- src/main/webapp/resource/message/report.js | 2 +- .../webapp/resource/message/reportView.js | 2 +- .../resource/template/customTemplate.htm | 47 ++++++++++--------- yi_20190801.sql | 2 +- 12 files changed, 64 insertions(+), 52 deletions(-) diff --git a/src/main/java/yi/master/business/message/service/impl/MessageServiceImpl.java b/src/main/java/yi/master/business/message/service/impl/MessageServiceImpl.java index cb2661b..7d7ba3c 100644 --- a/src/main/java/yi/master/business/message/service/impl/MessageServiceImpl.java +++ b/src/main/java/yi/master/business/message/service/impl/MessageServiceImpl.java @@ -47,9 +47,9 @@ public class MessageServiceImpl extends BaseServiceImpl implements Mess MessageScene messageScene = new MessageScene(); messageScene.setMessage(message); messageScene.setProjectInfo(message.getProjectInfo()); - messageScene.setSceneName("默认场景"); + messageScene.setSceneName("正常场景"); messageScene.setSystems(message.getSystems()); - messageScene.setMark("这是自动创建的测试场景"); + messageScene.setMark("这是自动创建的正常测试场景"); messageSceneService.save(messageScene, true, null); } diff --git a/src/main/java/yi/master/business/testconfig/bean/GlobalVariable.java b/src/main/java/yi/master/business/testconfig/bean/GlobalVariable.java index 5cfb5ff..fbc93bf 100644 --- a/src/main/java/yi/master/business/testconfig/bean/GlobalVariable.java +++ b/src/main/java/yi/master/business/testconfig/bean/GlobalVariable.java @@ -351,10 +351,17 @@ public class GlobalVariable implements Serializable { && !forceCreate) { return this.lastCreateValue; } - int min = Integer.parseInt(maps.get(GlobalVariableConstant.RANDOM_MIN_NUM_ATTRIBUTE_NAME)); - int max = Integer.parseInt(maps.get(GlobalVariableConstant.RANDOM_MAX_NUM_ATTRIBUTE_NAME)); - this.lastCreateValue = String.valueOf(PracticalUtils.getRandomNum(max, min)); + long min = 0; + long max = 0; + try { + max = Long.valueOf(maps.get(GlobalVariableConstant.RANDOM_MAX_NUM_ATTRIBUTE_NAME)); + min = Long.valueOf(maps.get(GlobalVariableConstant.RANDOM_MIN_NUM_ATTRIBUTE_NAME)); + } catch (NumberFormatException e) { + throw new RuntimeException("参数非数字类型"); + } + + this.lastCreateValue = String.valueOf(PracticalUtils.getRandomLongNum(max, min)); update(); return this.lastCreateValue; } diff --git a/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java b/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java index d5fb554..75656be 100644 --- a/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java +++ b/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java @@ -29,6 +29,7 @@ import yi.master.constant.MessageKeys; import yi.master.constant.SystemConsts; import yi.master.coretest.message.parse.MessageParse; import yi.master.coretest.message.process.MessageProcess; +import yi.master.coretest.message.protocol.HTTPTestClient; import yi.master.coretest.message.protocol.TestClient; import yi.master.coretest.message.protocol.entity.ClientTestResponseObject; import yi.master.exception.YiException; @@ -303,7 +304,7 @@ public class MessageAutoTest { //是否使用新的测试客户端来进行测试 if (testScene.isNewClient()) { - procotolClient = (DefaultHttpClient) testScene.getTestClient().getTestClient(); + procotolClient = (DefaultHttpClient) HTTPTestClient.getInstance().getTestClient(); } //需要异步执行的场景 diff --git a/src/main/java/yi/master/util/PracticalUtils.java b/src/main/java/yi/master/util/PracticalUtils.java index ca46713..2d2536a 100644 --- a/src/main/java/yi/master/util/PracticalUtils.java +++ b/src/main/java/yi/master/util/PracticalUtils.java @@ -2,6 +2,7 @@ package yi.master.util; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.ReUtil; import cn.hutool.core.util.StrUtil; import net.sf.json.JSONObject; @@ -614,7 +615,23 @@ public class PracticalUtils { return ran.nextInt(max) % (max - min + 1) + min; } - /** + + /** + * 获取随机数 + * + * @param max + * 最大值 + * @param min + * 最小值 + * @return + */ + public static long getRandomLongNum(long max, long min) { + return RandomUtil.randomLong(min, max); + } + + + + /** * 替换报文入参中的全局变量 * * @param msg diff --git a/src/main/webapp/js/globalConstant.js b/src/main/webapp/js/globalConstant.js index e674919..129472f 100644 --- a/src/main/webapp/js/globalConstant.js +++ b/src/main/webapp/js/globalConstant.js @@ -335,7 +335,7 @@ var REQUEST_URL = { DEL: "ptr-del", GET:"ptr-get", LIST: "ptr-list", - ANALYZE: "ptr-anaylzeView", + ANALYZE: "ptr-analyseView", SUMMARIZED: "ptr-summarizedView", DETAILS_LIST_ALL: "ptr-detailsList" }, diff --git a/src/main/webapp/resource/advanced/interfaceProbe.js b/src/main/webapp/resource/advanced/interfaceProbe.js index 4e3d6f4..d30b4f1 100644 --- a/src/main/webapp/resource/advanced/interfaceProbe.js +++ b/src/main/webapp/resource/advanced/interfaceProbe.js @@ -4,7 +4,7 @@ var validateConfig = {//配置选项验证规则 "config.intervalTime":{ required:true, digits:true, - range:[60, 86400] + range:[30, 86400] }, "config.maxCallTime":{ number:true, @@ -428,7 +428,6 @@ var eventList = { var data = table.row( $(this).parents('tr') ).data(); layer_show(data.scene.interfaceName + "-探测任务配置", templates["interface-probe-setting-config"](data.config), 860, 600, 1, function(layero, index) { - $("#addHeaderFlag").val(data.config.addHeaderFlag); $("#notifyType").val(data.config.notifyType); $("#notifyLevel").val(data.config.notifyLevel); $("#probeId").val(data.probeId); @@ -482,7 +481,7 @@ var eventList = { }); }, "#choose-probe-scene":function () { - layer_show("选择探测接口场景", "chooseMessageScene.html?callbackFun=c", null, null, 2); + layer_show("选择探测接口场景", "chooseMessageScene.html?callbackFun=chooseScene", null, null, 2); }, "#add-object":function(){ publish.renderParams.editPage.modeFlag = 0; diff --git a/src/main/webapp/resource/message/autoTask.js b/src/main/webapp/resource/message/autoTask.js index 16f0fdf..818752a 100644 --- a/src/main/webapp/resource/message/autoTask.js +++ b/src/main/webapp/resource/message/autoTask.js @@ -107,21 +107,6 @@ var templateParams = { }] }] }, - { - required:true, - reminder: "暂不可用", - label:"短信通知", - select:[{ - name:"smsNotify", - option:[{ - value:"0", - text:"否" - },{ - value:"1", - text:"是" - }] - }] - }, { name:"status", value:"1" diff --git a/src/main/webapp/resource/message/message.js b/src/main/webapp/resource/message/message.js index fa837bc..3751f90 100644 --- a/src/main/webapp/resource/message/message.js +++ b/src/main/webapp/resource/message/message.js @@ -190,7 +190,7 @@ var templateParams = { { add: true, reminder:"创建此报文时同时创建一个默认的测试场景和测试数据。", - label:"创建默认场景", + label:"创建正常场景", select:[{ name:"createDefaultScene", option:[{ diff --git a/src/main/webapp/resource/message/report.js b/src/main/webapp/resource/message/report.js index b7d6f42..ef1a85e 100644 --- a/src/main/webapp/resource/message/report.js +++ b/src/main/webapp/resource/message/report.js @@ -1,6 +1,6 @@ var templateParams = { - tableTheads:["测试集", "场景数", "成功数", "失败数", "异常数", "进度", "开始时间", "结束时间", "测试人" ,"备注", "操作"], + tableTheads:["测试报告", "场景数", "成功数", "失败数", "异常数", "进度", "开始时间", "结束时间", "测试人" ,"备注", "操作"], btnTools:[{ type:"danger", size:"M", diff --git a/src/main/webapp/resource/message/reportView.js b/src/main/webapp/resource/message/reportView.js index cb4caa2..681a394 100644 --- a/src/main/webapp/resource/message/reportView.js +++ b/src/main/webapp/resource/message/reportView.js @@ -87,7 +87,7 @@ var mySetting = { $("#testDate").append(data.desc.testDate); var $selectSystems = $("#business-system-views"); $.each(data.desc.systems, function(i, name){ - $selectSystems.append(''); + $selectSystems.append(''); }); resultData = data.data; diff --git a/src/main/webapp/resource/template/customTemplate.htm b/src/main/webapp/resource/template/customTemplate.htm index 5e7b020..577e82b 100644 --- a/src/main/webapp/resource/template/customTemplate.htm +++ b/src/main/webapp/resource/template/customTemplate.htm @@ -187,7 +187,7 @@ {{setName}} {{sceneNum}} {{complexSceneNum}} - 选择 + 执行测试 {{/each}} @@ -202,7 +202,7 @@
- +
@@ -223,17 +223,17 @@
-
- -
- - - -
-
+ + + + + + + + + + +
@@ -242,8 +242,7 @@ - - +
@@ -273,12 +272,12 @@
-
- -
- -
-
+ + + + + +
@@ -466,7 +465,11 @@
diff --git a/yi_20190801.sql b/yi_20190801.sql index 07093b1..0871263 100644 --- a/yi_20190801.sql +++ b/yi_20190801.sql @@ -648,7 +648,7 @@ INSERT INTO `at_operation_interface` (`op_id`, `op_name`, `call_name`, `is_paren (1088, '初始化性能测试任务', 'ptc-initTest', 'false', NULL, '包括初始化配置、加载配置文件、预加载请求报文等', '0', 1084), (1089, '开始执行性能测试任务', 'ptc-actionTest', 'false', NULL, '初始化正常的测试任务才能被执行', '0', 1084), (1090, '查看性能测试的数据视图', 'ptc-viewTest', 'false', NULL, '', '0', 1084), - (1091, '从测试结果中获取视图数据', 'ptr-anaylzeView', 'false', NULL, '', '0', 1078), + (1091, '从测试结果中获取视图数据', 'ptr-analyseView', 'false', NULL, '', '0', 1078), (1092, '汇总测试结果到excel下载', 'ptr-summarizedView', 'false', NULL, '', '0', 1078), (1093, '邮件推送离线报告', 'report-sendMail', 'false', NULL, '', '0', 9), (1094, '本地化-山西', 'web', 'true', NULL, '', '0', 1048), -- Gitee From d7f5b3dc8decfa0851df5270ded0eaaebfebb028 Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Wed, 3 Mar 2021 16:52:19 +0800 Subject: [PATCH 03/18] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=B1=A0=E7=BA=A7=E8=81=94=E5=88=A0=E9=99=A4=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../message/bean/MessageScene.hbm.xml | 7 +++++++ .../business/message/bean/MessageScene.java | 19 +++++++++++++++++-- .../business/testconfig/bean/DataPool.hbm.xml | 6 ++++++ .../business/testconfig/bean/DataPool.java | 15 +++++++++++++++ .../testconfig/bean/PoolDataItem.hbm.xml | 6 ++++++ .../testconfig/bean/PoolDataItem.java | 16 ++++++++++++++++ 6 files changed, 67 insertions(+), 2 deletions(-) diff --git a/src/main/java/yi/master/business/message/bean/MessageScene.hbm.xml b/src/main/java/yi/master/business/message/bean/MessageScene.hbm.xml index 823d0fd..7f0714a 100644 --- a/src/main/java/yi/master/business/message/bean/MessageScene.hbm.xml +++ b/src/main/java/yi/master/business/message/bean/MessageScene.hbm.xml @@ -69,6 +69,13 @@ + + + + + + + diff --git a/src/main/java/yi/master/business/message/bean/MessageScene.java b/src/main/java/yi/master/business/message/bean/MessageScene.java index 604deec..1589ed7 100644 --- a/src/main/java/yi/master/business/message/bean/MessageScene.java +++ b/src/main/java/yi/master/business/message/bean/MessageScene.java @@ -10,6 +10,7 @@ import yi.master.business.advanced.bean.PerformanceTestConfig; import yi.master.business.message.service.TestDataService; import yi.master.business.system.bean.ProjectInfo; import yi.master.business.testconfig.bean.BusinessSystem; +import yi.master.business.testconfig.bean.PoolDataItem; import yi.master.constant.MessageKeys; import yi.master.util.FrameworkUtil; import yi.master.util.PracticalUtils; @@ -91,6 +92,11 @@ public class MessageScene implements Serializable, Cloneable { * 验证规则 */ private Set rules = new HashSet(); + + /** + * 关联的数据池类别 + */ + private Set dataItems = new HashSet<>(); private String validateMethodStr; @@ -98,8 +104,8 @@ public class MessageScene implements Serializable, Cloneable { * 请求路径,他的优先级高于报文和接口中配置的 */ private String requestUrl; - - @FieldNameMapper(fieldPath="size(testDatas)", ifSearch=false) + + @FieldNameMapper(fieldPath="size(testDatas)", ifSearch=false) private Integer testDataNum = getTestDataNum(); @FieldNameMapper(fieldPath="size(rules)", ifSearch=false) @@ -394,6 +400,15 @@ public class MessageScene implements Serializable, Cloneable { this.sceneName = sceneName; } + @JSON(serialize = false) + public Set getDataItems() { + return dataItems; + } + + public void setDataItems(Set dataItems) { + this.dataItems = dataItems; + } + public String getMark() { if (this.mark == null) { return ""; diff --git a/src/main/java/yi/master/business/testconfig/bean/DataPool.hbm.xml b/src/main/java/yi/master/business/testconfig/bean/DataPool.hbm.xml index 0a1cec4..75cf3e4 100644 --- a/src/main/java/yi/master/business/testconfig/bean/DataPool.hbm.xml +++ b/src/main/java/yi/master/business/testconfig/bean/DataPool.hbm.xml @@ -31,6 +31,12 @@ + + + + + + diff --git a/src/main/java/yi/master/business/testconfig/bean/DataPool.java b/src/main/java/yi/master/business/testconfig/bean/DataPool.java index 9e2b988..c0dcf81 100644 --- a/src/main/java/yi/master/business/testconfig/bean/DataPool.java +++ b/src/main/java/yi/master/business/testconfig/bean/DataPool.java @@ -49,6 +49,11 @@ public class DataPool implements Serializable { */ private Set dataNames = new HashSet<>(); + /** + * 关联测试配置 + */ + private Set testConfigs = new HashSet<>(); + /** * 所属项目 */ @@ -67,6 +72,16 @@ public class DataPool implements Serializable { public DataPool() { } + + @JSON(serialize = false) + public Set getTestConfigs() { + return testConfigs; + } + + public void setTestConfigs(Set testConfigs) { + this.testConfigs = testConfigs; + } + public Integer getNameCount() { return this.dataNames.size(); } diff --git a/src/main/java/yi/master/business/testconfig/bean/PoolDataItem.hbm.xml b/src/main/java/yi/master/business/testconfig/bean/PoolDataItem.hbm.xml index c58e8c7..6afa1c7 100644 --- a/src/main/java/yi/master/business/testconfig/bean/PoolDataItem.hbm.xml +++ b/src/main/java/yi/master/business/testconfig/bean/PoolDataItem.hbm.xml @@ -46,5 +46,11 @@ + + + + + + diff --git a/src/main/java/yi/master/business/testconfig/bean/PoolDataItem.java b/src/main/java/yi/master/business/testconfig/bean/PoolDataItem.java index 78f4cfb..dcd9767 100644 --- a/src/main/java/yi/master/business/testconfig/bean/PoolDataItem.java +++ b/src/main/java/yi/master/business/testconfig/bean/PoolDataItem.java @@ -3,6 +3,7 @@ package yi.master.business.testconfig.bean; import org.apache.struts2.json.annotations.JSON; import yi.master.annotation.FieldNameMapper; import yi.master.business.message.bean.MessageScene; +import yi.master.business.message.bean.TestResult; import yi.master.business.user.bean.User; import java.io.Serializable; @@ -86,9 +87,24 @@ public class PoolDataItem implements Serializable { */ private String responseDataJsonPath; + /** + * 关联结果集 + */ + private Set results = new HashSet<>(); + public PoolDataItem() { } + + @JSON(serialize = false) + public Set getResults() { + return results; + } + + public void setResults(Set results) { + this.results = results; + } + public PoolDataItem(Integer itemId) { this.itemId = itemId; } -- Gitee From da71ec10acc5e84ee8649fa21322f96804ca26ab Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Wed, 3 Mar 2021 16:59:56 +0800 Subject: [PATCH 04/18] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BC=BA=E9=99=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yi/master/business/testconfig/action/PoolDataItemAction.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/yi/master/business/testconfig/action/PoolDataItemAction.java b/src/main/java/yi/master/business/testconfig/action/PoolDataItemAction.java index f56ae13..2d7fc2e 100644 --- a/src/main/java/yi/master/business/testconfig/action/PoolDataItemAction.java +++ b/src/main/java/yi/master/business/testconfig/action/PoolDataItemAction.java @@ -195,6 +195,7 @@ public class PoolDataItemAction extends BaseAction { poolDataItem.setUser(FrameworkUtil.getLoginUser()); poolDataItem.setCreateTime(new Timestamp(System.currentTimeMillis())); poolDataItem.setDataPool(new DataPool(poolId)); + poolDataItem.setBeforeUseAutoUpdate(SystemConsts.DefaultBooleanIdentify.TRUE.getNumber()); poolDataItem.setName(name); poolDataItem.setMark(name); poolDataItemService.save(poolDataItem); -- Gitee From 7ba5307c7797eb92628aac81f15df9cb459d947c Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Thu, 4 Mar 2021 16:41:13 +0800 Subject: [PATCH 05/18] =?UTF-8?q?HTTP=E5=AE=A2=E6=88=B7=E7=AB=AF=E6=B1=A0?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../message/protocol/HTTPTestClient.java | 70 ++++++++++--------- .../webapp/libs/h-ui.admin/js/H-ui.admin.js | 2 +- .../webapp/libs/h-ui.admin/skin/blue/skin.css | 2 +- 3 files changed, 38 insertions(+), 36 deletions(-) diff --git a/src/main/java/yi/master/coretest/message/protocol/HTTPTestClient.java b/src/main/java/yi/master/coretest/message/protocol/HTTPTestClient.java index 1abaf71..b18db0e 100644 --- a/src/main/java/yi/master/coretest/message/protocol/HTTPTestClient.java +++ b/src/main/java/yi/master/coretest/message/protocol/HTTPTestClient.java @@ -76,7 +76,7 @@ public class HTTPTestClient extends TestClient { private static final String DEFAULT_HTTP_METHOD = HttpMethod.POST.name(); /**可同时存在的最大httpclient数量*/ - private static final int MAX_DEFAULT_HTTP_CLIENT_COUNT = 200; + private static final int MAX_DEFAULT_HTTP_CLIENT_COUNT = 2; /**活跃客户端池*/ private static final List activeClientPool = new ArrayList(); /**可用客户端池*/ @@ -99,30 +99,32 @@ public class HTTPTestClient extends TestClient { * @return */ private static DefaultHttpClient getHttpClient () { - synchronized(lock) { - //可用客户端不足 - if (availableClientPool.size() < 1) { - if (activeClientPool.size() >= MAX_DEFAULT_HTTP_CLIENT_COUNT) { - //等待释放 - while (availableClientPool.size() < 1) { - try { - lock.wait(800); - } catch (InterruptedException e) { - LOGGER.warn("InterruptedException", e); - } - } - } else { - //新建客户端 - DefaultHttpClient newClient = getNewHttpClient(); - activeClientPool.add(newClient); - return newClient; - } - } - DefaultHttpClient client = availableClientPool.get(0); - client.getCookieStore().clear(); - availableClientPool.remove(client); - return client; - } +// synchronized(lock) { +// //可用客户端不足 +// if (availableClientPool.size() < 1) { +// if (activeClientPool.size() >= MAX_DEFAULT_HTTP_CLIENT_COUNT) { +// //等待释放 +// while (availableClientPool.size() < 1) { +// LOGGER.info("等待释放HTTPClient请求客户端!"); +// try { +// lock.wait(800); +// } catch (InterruptedException e) { +// LOGGER.warn("InterruptedException", e); +// } +// } +// } else { +// //新建客户端 +// DefaultHttpClient newClient = getNewHttpClient(); +// activeClientPool.add(newClient); +// return newClient; +// } +// } +// DefaultHttpClient client = availableClientPool.get(0); +// client.getCookieStore().clear(); +// availableClientPool.remove(client); +// return client; +// } + return getNewHttpClient(); } private static DefaultHttpClient getNewHttpClient () { @@ -187,7 +189,7 @@ public class HTTPTestClient extends TestClient { DefaultHttpClient client = null; if (httpclient == null) { - client = defaultClient; + client = getNewHttpClient(); } else { client = (DefaultHttpClient) httpclient; } @@ -365,19 +367,19 @@ public class HTTPTestClient extends TestClient { returnMap.setUseTime(useTime); // 清除代理设置 - if (proxyClient != null) { - clearProxy(proxyClient); - putBackTestClient(proxyClient); - } +// if (proxyClient != null) { +// clearProxy(proxyClient); +// putBackTestClient(proxyClient); +// } return returnMap; } @Override public void putBackTestClient(Object procotolClient) { - - if (procotolClient != null && procotolClient instanceof DefaultHttpClient) { - availableClientPool.add((DefaultHttpClient) procotolClient); - } +// if (procotolClient != null && procotolClient instanceof DefaultHttpClient) { +// availableClientPool.add((DefaultHttpClient) procotolClient); +// } + procotolClient = null; } diff --git a/src/main/webapp/libs/h-ui.admin/js/H-ui.admin.js b/src/main/webapp/libs/h-ui.admin/js/H-ui.admin.js index 41c3f0c..a9760d8 100644 --- a/src/main/webapp/libs/h-ui.admin/js/H-ui.admin.js +++ b/src/main/webapp/libs/h-ui.admin/js/H-ui.admin.js @@ -42,7 +42,7 @@ function getskincookie(){ var v = getCookie("Huiskin"); var hrefStr=$("#skin").attr("href"); if(v==null||v==""){ - v="default"; + v="blue"; } if(hrefStr!=undefined){ var hrefRes=hrefStr.substring(0,hrefStr.lastIndexOf('skin/'))+'skin/'+v+'/skin.css'; diff --git a/src/main/webapp/libs/h-ui.admin/skin/blue/skin.css b/src/main/webapp/libs/h-ui.admin/skin/blue/skin.css index c428e3d..5f6a1a0 100644 --- a/src/main/webapp/libs/h-ui.admin/skin/blue/skin.css +++ b/src/main/webapp/libs/h-ui.admin/skin/blue/skin.css @@ -2,7 +2,7 @@ /* 蓝色 */ /*全站默认字体颜色*/ a{color:#333}a:hover,a:focus,.maincolor,.maincolor a{color:#06c} -.navbar{ background:#2d6dcc}/*顶部导航*/ +.navbar{ background:#409eff;}/*顶部导航*/ .navbar-logo,.navbar-logo-m,.navbar-slogan,.navbar-userbar{color:#fff}/*logo 及 用户信息文字颜色*/ .navbar-logo:hover,.navbar-logo-m:hover{color:#fff;text-decoration: none} -- Gitee From 90f79e7114dbb9034d1f011e70680a896990b3b3 Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Thu, 4 Mar 2021 16:45:16 +0800 Subject: [PATCH 06/18] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E6=8E=A2=E6=B5=8Bbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yi/master/coretest/task/probe/ProbeTaskJobAction.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/yi/master/coretest/task/probe/ProbeTaskJobAction.java b/src/main/java/yi/master/coretest/task/probe/ProbeTaskJobAction.java index c4fc420..3968d0b 100644 --- a/src/main/java/yi/master/coretest/task/probe/ProbeTaskJobAction.java +++ b/src/main/java/yi/master/coretest/task/probe/ProbeTaskJobAction.java @@ -72,16 +72,17 @@ public class ProbeTaskJobAction implements Job { Timestamp lastCallTime = null; TestResult result = null; if (resultId == null) { - //变更状态为“执行出错” + //变更状态为"执行出错" task.setStatus(InterfaceProbeStatus.EXECUTE_ERROR.getStatus()); } else { result = testResultService.get(resultId); task.setMark(""); + lastCallTime = result.getOpTime(); + task.setStatus(InterfaceProbeStatus.RUNNING.getStatus()); //变更状态为“缺少数据” if (result.getQualityLevel() == 0) { task.setStatus(InterfaceProbeStatus.NO_DATA.getStatus()); } - lastCallTime = result.getOpTime(); } task.setLastCallTime(lastCallTime == null ? new Timestamp(System.currentTimeMillis()) : lastCallTime); -- Gitee From 78ef7dde97c75bc7600e11223b11015d29769db4 Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Thu, 4 Mar 2021 17:05:54 +0800 Subject: [PATCH 07/18] =?UTF-8?q?=E8=B0=83=E7=94=A8=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E6=95=B0=E6=8D=AE=E6=B1=A0/=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E5=85=AC=E5=85=B1=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coretest/message/test/MessageAutoTest.java | 14 ++++++++++---- src/main/java/yi/master/util/PracticalUtils.java | 3 ++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java b/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java index 75656be..3299006 100644 --- a/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java +++ b/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java @@ -895,9 +895,7 @@ public class MessageAutoTest { } //替换入参报文中的测试集公共变量 - if (MapUtil.isNotEmpty(config.getPublicDataObject())) { - requestMessage = PracticalUtils.replaceSetPublicVariable(requestMessage, config.getPublicDataObject()); - } + requestMessage = PracticalUtils.replaceSetPublicVariable(requestMessage, config.getPublicDataObject()); //处理请求URL中的全局变量 requestUrl = PracticalUtils.replaceGlobalVariable(requestUrl, globalVariableService); @@ -913,8 +911,16 @@ public class MessageAutoTest { testScene.setParseUtil(parseUtil); testScene.setBusinessSystem(system); testScene.setConfig(config); + //提前在此处替换调用参数中的全局变量,防止在异步线程中调用时出现一些不可预期的错误 - testScene.setCallParameter(PracticalUtils.jsonToMap(PracticalUtils.replaceGlobalVariable(msg.getCallParameter(), null))); + // 替换全局变量 + String callParams = PracticalUtils.replaceGlobalVariable(msg.getCallParameter(), null); + // 替换数据池 + callParams = PracticalUtils.replacePoolData(callParams, testScene.getPoolData()); + // 替换测试集公共变量 + callParams = PracticalUtils.replaceSetPublicVariable(callParams, config.getPublicDataObject()); + testScene.setCallParameter(PracticalUtils.jsonToMap(callParams)); + testObjects.add(testScene); } } diff --git a/src/main/java/yi/master/util/PracticalUtils.java b/src/main/java/yi/master/util/PracticalUtils.java index 2d2536a..839d6a2 100644 --- a/src/main/java/yi/master/util/PracticalUtils.java +++ b/src/main/java/yi/master/util/PracticalUtils.java @@ -1,6 +1,7 @@ package yi.master.util; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.ReUtil; @@ -678,7 +679,7 @@ public class PracticalUtils { * @return {@link String} */ public static String replacePoolData (String msg, Map values) { - if (StringUtils.isBlank(msg)) { + if (StringUtils.isBlank(msg) || MapUtil.isEmpty(values)) { return msg; } -- Gitee From 021e04bc9a919a885737d4f64c66a8ecff76310e Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Thu, 4 Mar 2021 17:32:13 +0800 Subject: [PATCH 08/18] =?UTF-8?q?=E6=8A=A5=E5=91=8A=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E9=A1=B9=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/webapp/reportHtml/offlineReportTemplateNew.xml | 6 +++--- src/main/webapp/resource/message/reportView.html | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/webapp/reportHtml/offlineReportTemplateNew.xml b/src/main/webapp/reportHtml/offlineReportTemplateNew.xml index a80f3b1..1fb060e 100644 --- a/src/main/webapp/reportHtml/offlineReportTemplateNew.xml +++ b/src/main/webapp/reportHtml/offlineReportTemplateNew.xml @@ -103,7 +103,7 @@ - +
@@ -138,7 +138,7 @@
@@ -298,7 +298,7 @@ var mySetting = { $("#testDate").append(object.desc.testDate); var $selectSystems = $("#business-system-views"); $.each(object.desc.systems, function(i, name){ - $selectSystems.append(''); + $selectSystems.append(''); }); resultData = object.data; diff --git a/src/main/webapp/resource/message/reportView.html b/src/main/webapp/resource/message/reportView.html index 3675988..5a735ea 100644 --- a/src/main/webapp/resource/message/reportView.html +++ b/src/main/webapp/resource/message/reportView.html @@ -94,7 +94,7 @@ - +
-- Gitee From 49c3081de3e8ba965da767f6011ae88137ac61b6 Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Thu, 4 Mar 2021 18:27:06 +0800 Subject: [PATCH 09/18] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=BB=93=E6=9E=9C?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=B1=95=E7=A4=BA=E7=BB=84=E5=90=88=E5=9C=BA?= =?UTF-8?q?=E6=99=AF=E7=9A=84=E7=BB=93=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../message/action/TestResultAction.java | 11 +++-- .../message/test/MessageAutoTest.java | 1 + src/main/webapp/resource/message/result.js | 49 ++++++------------- 3 files changed, 23 insertions(+), 38 deletions(-) diff --git a/src/main/java/yi/master/business/message/action/TestResultAction.java b/src/main/java/yi/master/business/message/action/TestResultAction.java index ecf7186..cabceef 100644 --- a/src/main/java/yi/master/business/message/action/TestResultAction.java +++ b/src/main/java/yi/master/business/message/action/TestResultAction.java @@ -1,12 +1,8 @@ package yi.master.business.message.action; -import java.util.ArrayList; -import java.util.List; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; - import yi.master.business.advanced.bean.InterfaceProbe; import yi.master.business.advanced.service.InterfaceProbeService; import yi.master.business.base.action.BaseAction; @@ -14,6 +10,9 @@ import yi.master.business.message.bean.TestResult; import yi.master.business.message.service.TestResultService; import yi.master.business.reportform.AnalyzeUtil; +import java.util.ArrayList; +import java.util.List; + /** * 接口自动化
* 测试结果详情Action @@ -49,7 +48,7 @@ public class TestResultAction extends BaseAction { List conditions = new ArrayList(); if (reportId != null && model.getRunStatus() != null) { - conditions.add("protocolType!='FIXED'"); + //conditions.add("protocolType!='FIXED'"); conditions.add("testReport.reportId=" + reportId); if (!"all".equalsIgnoreCase(model.getRunStatus())) { conditions.add("runStatus='" + model.getRunStatus() + "'"); @@ -65,6 +64,8 @@ public class TestResultAction extends BaseAction { return this.filterCondition; } + + public String getCount() { setData(AnalyzeUtil.analyzeProbeResultSynopsisView(interfacePorbeService.listProbeBeforeResultInfo(7))); diff --git a/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java b/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java index 3299006..bf519d0 100644 --- a/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java +++ b/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java @@ -288,6 +288,7 @@ public class MessageAutoTest { Boolean allSuccessFlag = null; //组合场景测试备注 StringBuilder complexMark = new StringBuilder(); + complexMark.append("这是一个组合场景。\n"); //该组合场景测试上下文保存的变量 Map saveVariables = new HashMap(); diff --git a/src/main/webapp/resource/message/result.js b/src/main/webapp/resource/message/result.js index 1d219db..d8f3db9 100644 --- a/src/main/webapp/resource/message/result.js +++ b/src/main/webapp/resource/message/result.js @@ -11,7 +11,7 @@ var templateParams = { iconFont:"", name:"统计视图" }], - tableTheads:["接口", "结果", "状态码", "耗时ms", "测试时间", "备注","详情"] + tableTheads:["接口/组合场景", "结果", "状态码", "耗时ms", "测试时间", "备注","详情"] }; var columnsSetting = [ @@ -22,9 +22,8 @@ var columnsSetting = [ }}, { "data":"messageInfo", - "className":"ellipsis probe-scene-name", + "className":"ellipsis", "render":function(data, type, full, meta){ - data = (data.split(","))[0]; return '' + data + ''; } @@ -125,38 +124,22 @@ var eventList = { }, '.show-result-detail':function() { var data = table.row( $(this).parents('tr') ).data(); + if (data.protocolType == 'FIXED') { + if (data.complexSceneResults == null || data.complexSceneResults.length < 1) { + layer.msg('该组合场景没有测试结果', {icon: 0, time: 1800}); + return false; + } + layer_show( '组合场景-测试结果 点击查看对应详情', templates["complex-scene-results-view"]({results:data.complexSceneResults}), 600, 300, 1, function(layero, index){ + layero.find('.result-view').bind('click', function(){ + renderResultViewPage(data.complexSceneResults[$(this).attr("data-id")]); + }); + }, function(index, layero) { + layero.find('.result-view').unbind('click'); + }, null); + return false; + } renderResultViewPage(data); - - // var color = ""; - // var flag = ""; - // if (data.runStatus == "0") { - // color = "success"; - // flag = "SUCCESS"; - // } else if (data.runStatus == "1"){ - // color = "danger"; - // flag = "FAIL"; - // } else { - // color = "default"; - // flag = "STOP"; - // } - // var resultData = { - // requestMessage:(data.requestMessage == "null") ? "" : data.requestMessage, - // requestUrl:data.requestUrl, - // businessSystemName:data.businessSystemName, - // color:color, - // flag:flag, - // useTime:data.useTime, - // statusCode:data.statusCode, - // responseMessage:(data.responseMessage != "null") ? data.responseMessage : "", - // mark:data.mark - // }; - // - // layer_show('测试结果', templates["scene-test-result"](resultData), null, null, 1, null, null, null, { - // shade: 0.35, - // shadeClose:true, - // skin: 'layui-layer-rim', //加上边框 - // }) } }; -- Gitee From ec96c45f14e51801635add6ebf8a504936e11785 Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Thu, 4 Mar 2021 18:38:30 +0800 Subject: [PATCH 10/18] =?UTF-8?q?createMessage=E6=8E=A5=E5=8F=A3=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E8=A7=A3=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/yi/master/coretest/message/parse/JSONMessageParse.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/yi/master/coretest/message/parse/JSONMessageParse.java b/src/main/java/yi/master/coretest/message/parse/JSONMessageParse.java index 1dcb46d..04ac716 100644 --- a/src/main/java/yi/master/coretest/message/parse/JSONMessageParse.java +++ b/src/main/java/yi/master/coretest/message/parse/JSONMessageParse.java @@ -275,7 +275,7 @@ public class JSONMessageParse extends MessageParse { } JSONObject parentNode = nodes.getJSONObject(node.getString("parentId")); String parentType = null; - if (parentNode != null) { + if (parentNode != null && !parentNode.isNullObject()) { parentType = parentNode.getString("type").toUpperCase(); } -- Gitee From b27464f39a278df4d232cf82b1cf48b279a4ede7 Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Fri, 5 Mar 2021 08:50:49 +0800 Subject: [PATCH 11/18] =?UTF-8?q?=E5=A4=96=E9=83=A8=E8=B7=B3=E8=BD=AC?= =?UTF-8?q?=E7=99=BB=E9=99=86=E6=97=B6=E7=9A=84=E9=97=AE=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/webapp/welcome.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/webapp/welcome.js b/src/main/webapp/welcome.js index 3e0eb45..948956e 100644 --- a/src/main/webapp/welcome.js +++ b/src/main/webapp/welcome.js @@ -30,7 +30,14 @@ $(document).ready(function(){ if (json.returnCode == RETURN_CODE.SUCCESS) { top.currentUserPermissionList = json.data; } else { - layer.alert('获取用户权限信息出错,请重新登陆!'); + setTimeout(function () { + $.get(REQUEST_URL.ROLE.GET_USER_PERMISSION_LIST, function (json) { + if (json.returnCode == RETURN_CODE.SUCCESS) { + top.currentUserPermissionList = json.data; + } + }); + }, 500); + //layer.alert('获取用户权限信息出错,请重新登陆!'); } }); -- Gitee From 1059c5a3edf4ad2acfe3b2d174a3af582bee9797 Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Fri, 5 Mar 2021 09:05:35 +0800 Subject: [PATCH 12/18] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8D=87=E7=BA=A7sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/update/1.1.3 | 11 +++++++++++ yi_20190801.sql | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/resources/update/1.1.3 b/src/main/resources/update/1.1.3 index 5a8320a..0c280a8 100644 --- a/src/main/resources/update/1.1.3 +++ b/src/main/resources/update/1.1.3 @@ -1,4 +1,15 @@ SET FOREIGN_KEY_CHECKS=0; ALTER TABLE `at_message` ADD COLUMN `body_to_query` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '0' COMMENT 'body体内容转query参数' AFTER `project_id`; INSERT INTO `at_global_setting`(`setting_id`, `setting_name`, `default_value`, `setting_value`, `mark`) VALUES (26, 'messageCallHomeUrl', '0', '0', '接口自动化内部请求地址'); +UPDATE `at_operation_interface` SET `op_name` = '从测试结果中获取视图数据', `call_name` = 'ptr-analyseView', `is_parent` = 'false', `op_type` = NULL, `mark` = '', `status` = '0', `parent_op_id` = 1078, `permission_mark` = NULL, `page_name` = NULL WHERE `op_id` = 1091; +INSERT INTO `at_role_power`(`role_id`, `op_id`) VALUES (1, 1132); +INSERT INTO `at_role_power`(`role_id`, `op_id`) VALUES (1, 1133); +INSERT INTO `at_role_power`(`role_id`, `op_id`) VALUES (1, 1135); +INSERT INTO `at_role_power`(`role_id`, `op_id`) VALUES (1, 1136); +INSERT INTO `at_role_power`(`role_id`, `op_id`) VALUES (1, 1137); +INSERT INTO `at_role_power`(`role_id`, `op_id`) VALUES (1, 1138); +INSERT INTO `at_role_power`(`role_id`, `op_id`) VALUES (1, 21140); +INSERT INTO `at_role_power`(`role_id`, `op_id`) VALUES (1, 21141); +INSERT INTO `at_role_power`(`role_id`, `op_id`) VALUES (1, 21142); +INSERT INTO `at_role_power`(`role_id`, `op_id`) VALUES (1, 21143); SET FOREIGN_KEY_CHECKS=1; \ No newline at end of file diff --git a/yi_20190801.sql b/yi_20190801.sql index 0871263..07093b1 100644 --- a/yi_20190801.sql +++ b/yi_20190801.sql @@ -648,7 +648,7 @@ INSERT INTO `at_operation_interface` (`op_id`, `op_name`, `call_name`, `is_paren (1088, '初始化性能测试任务', 'ptc-initTest', 'false', NULL, '包括初始化配置、加载配置文件、预加载请求报文等', '0', 1084), (1089, '开始执行性能测试任务', 'ptc-actionTest', 'false', NULL, '初始化正常的测试任务才能被执行', '0', 1084), (1090, '查看性能测试的数据视图', 'ptc-viewTest', 'false', NULL, '', '0', 1084), - (1091, '从测试结果中获取视图数据', 'ptr-analyseView', 'false', NULL, '', '0', 1078), + (1091, '从测试结果中获取视图数据', 'ptr-anaylzeView', 'false', NULL, '', '0', 1078), (1092, '汇总测试结果到excel下载', 'ptr-summarizedView', 'false', NULL, '', '0', 1078), (1093, '邮件推送离线报告', 'report-sendMail', 'false', NULL, '', '0', 9), (1094, '本地化-山西', 'web', 'true', NULL, '', '0', 1048), -- Gitee From 511b633954b394b96beffcc01523a3a350338c22 Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Fri, 5 Mar 2021 14:37:42 +0800 Subject: [PATCH 13/18] =?UTF-8?q?sql-init=E8=84=9A=E6=9C=AC=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yi_20190801.sql | 41 +---------------------------------------- 1 file changed, 1 insertion(+), 40 deletions(-) diff --git a/yi_20190801.sql b/yi_20190801.sql index 07093b1..2ce10f1 100644 --- a/yi_20190801.sql +++ b/yi_20190801.sql @@ -720,46 +720,7 @@ DELETE FROM `at_parameter`; INSERT INTO `at_parameter` (`parameter_id`, `parameter_identify`, `parameter_name`, `default_value`, `path`, `type`, `attributes`, `mark`, `interface_id`) VALUES (1, '', '', '', '', 'Object', NULL, NULL, NULL), (2, '', '', '', '', 'Array_array', NULL, NULL, NULL), - (3, '', '', '', '', 'Array_map', NULL, NULL, NULL), - (2393, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), - (2394, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), - (2395, '28 10045099000001200001013675181286~1;', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (2396, '28 10094099000001300001013675181286~1;', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (2397, '2f 20801099000001400001013675181286~1~201611;', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (2398, '28 10033099000001500001013675181286~1;', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (2399, '28 10037099000001600001013675181286~1;', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (2400, '28 10076099000001700001013675181286~1;', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (2401, '28 20014099000001800001013675181286~1;', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (2402, '28 20022099000001900001013675181286~1;', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (2403, '28 20027099000002000001013675181286~1;', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (2404, '28 20046099000002100001013675181286~1;', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (2405, '28 20125099000002200001013675181286~1;', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (2406, '28 20126099000002300001013675181286~1;', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (2407, '28 20342099000002400001013675181286~1;', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (2408, '28 20401099000002500001013675181286~1;', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (2409, '28 20604099000002600001013675181286~1;', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (2410, '28 20888099000002700001013675181286~1;', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (2411, '{\r\n"ROOT":{\r\n"ROUTE_NO":"13505501356",\r\n"CHANNEL_TYPE":"31a",\r\n"PHONE_NO":"13505501356",\r\n"LOGIN_NO":"Y18600TCH"\r\n}\r\n}', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (2768, '10008;13675181286~100866~1;', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (2769, '10008;13675181286~100866~1;', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (2770, '5002;13675181286~14;', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (2771, '5004;13675181286~14;', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (3110, '\r\n\r\n \r\n \r\n 01\r\n 15851740243\r\n 69\r\n UMMPBIP3A20120161027103750293250\r\n 392c4ff582984c9b9474016e6a8e3dbd\r\n ]]>\r\n \r\n', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (3115, '\n\n \n \n \n 01\n 15851740243\n 69\n UMMPBIP3A20120161027103750293250\n 392c4ff582984c9b9474016e6a8e3dbd\n ]]> \n\n', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (3362, 'sdadasdasda', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (3363, 'sdadasdasda', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (3397, '{\n"code":200,\n"errorMsg":""\n"id":987,\n"name":"xuwangcheng",\n"age":28,\n"profession":"性能测试工程师",\n"salary":2587\n}', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (3398, '{\n"code":200,\n"errorMsg":""\n"id":987,\n"name":"xuwangcheng",\n"age":28,\n"profession":"性能测试工程师",\n"salary":2587\n}', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (3399, '{\n"code":200,\n"errorMsg":""\n"id":987,\n"name":"xuwangcheng",\n"age":28,\n"profession":"性能测试工程师",\n"salary":2587\n}', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (3421, '31231', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (3422, '', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (3423, '', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (3424, '', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (3425, '', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (3426, '', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (3427, ' ', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (3428, '{\r\n}', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL), - (3429, '{\r\n}', 'name', 'defaultValue', 'path', 'String', NULL, NULL, NULL); + (3, '', '', '', '', 'Array_map', NULL, NULL, NULL); /*!40000 ALTER TABLE `at_parameter` ENABLE KEYS */; -- 导出 表 yi.at_performance_test_config 结构 -- Gitee From dcf579830f938e5e04b5210861654bb9e488a5d6 Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Fri, 5 Mar 2021 14:45:24 +0800 Subject: [PATCH 14/18] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E9=9B=86=E8=BF=90?= =?UTF-8?q?=E8=A1=8C=E6=97=B6=E9=85=8D=E7=BD=AE=E6=98=BE=E7=A4=BA=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E8=A7=A3=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/webapp/resource/message/setScene.js | 2 +- .../resource/template/customTemplate.htm | 19 +------------------ 2 files changed, 2 insertions(+), 19 deletions(-) diff --git a/src/main/webapp/resource/message/setScene.js b/src/main/webapp/resource/message/setScene.js index f5658a5..4459494 100644 --- a/src/main/webapp/resource/message/setScene.js +++ b/src/main/webapp/resource/message/setScene.js @@ -468,7 +468,7 @@ function changeTestData () { function viewRunSettingConfig () { layer_show(currentSetInfo.setName + "-运行时配置", templates["set-setting-config"](currentSetInfo.config), '800', '640', 1, function() { - //resetOptions(); + $("#runType").val(currentSetInfo.config.runType); }); } diff --git a/src/main/webapp/resource/template/customTemplate.htm b/src/main/webapp/resource/template/customTemplate.htm index 577e82b..b3ee547 100644 --- a/src/main/webapp/resource/template/customTemplate.htm +++ b/src/main/webapp/resource/template/customTemplate.htm @@ -614,20 +614,9 @@
- +
- - - - - - - - - - -
@@ -670,12 +659,6 @@
- - - - - -
-- Gitee From 885b12589afbcbc6bbbb9d1c8762f256f223ab6c Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Fri, 5 Mar 2021 14:49:00 +0800 Subject: [PATCH 15/18] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E9=9B=86=E8=BF=90?= =?UTF-8?q?=E8=A1=8C=E6=97=B6=E9=85=8D=E7=BD=AE-=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=B1=A0=E7=B1=BB=E5=88=AB=E5=8F=AA=E8=83=BD=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E4=B8=80=E4=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/webapp/resource/message/setScene.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/webapp/resource/message/setScene.js b/src/main/webapp/resource/message/setScene.js index 4459494..60d1a14 100644 --- a/src/main/webapp/resource/message/setScene.js +++ b/src/main/webapp/resource/message/setScene.js @@ -209,7 +209,7 @@ var eventList = { $.get(REQUEST_URL.POOL_DATA_ITEM.LIST_ALL, {poolId: poolId},function(json) { if (json.returnCode == 0) { layerMultipleChoose({ - title:"请选择数据池类别(可多选)", + title:"请选择数据池类别(只能选择一个)", customData:{//自定义数据,Array数组对象 enable:true, data:json.data, @@ -219,6 +219,7 @@ var eventList = { choosedValues:$("#poolItemIds").val().split(','),//已被选择的数据合集 closeLayer:true,//是否在确认之后自动关闭窗口 minChooseCount:1, + maxChooseCount:1, confirmCallback:function (chooseValues, chooseObjects, index) { $("#choose-pool-item-ids").siblings('p').remove(); $.each(chooseObjects, function (i, n) { -- Gitee From 44257bec92d409d01e0695a34edf26d9b053ba38 Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Fri, 5 Mar 2021 14:52:55 +0800 Subject: [PATCH 16/18] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=8E=AF=E5=A2=83=E4=B8=8D=E6=98=AF=E5=BF=85?= =?UTF-8?q?=E5=A1=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/webapp/resource/message/testData.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/webapp/resource/message/testData.js b/src/main/webapp/resource/message/testData.js index 9a18030..b515896 100644 --- a/src/main/webapp/resource/message/testData.js +++ b/src/main/webapp/resource/message/testData.js @@ -52,7 +52,7 @@ var templateParams = { }, { label:"可用于的测试环境", - required:true, + reminder: "不选择默认适用于所有测试环境", input:[{ name:"systems", hidden:true @@ -364,9 +364,9 @@ var mySetting = { } }} }, - systems:{ - required:true - } + // systems:{ + // required:true + // } }, beforeInit:function(df){ $("#messageScene\\.messageSceneId").val(messageSceneId); -- Gitee From 8604747bdd3e0a9c3216f82690251588f768a82a Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Mon, 8 Mar 2021 16:01:46 +0800 Subject: [PATCH 17/18] =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../message/action/InterfaceInfoAction.java | 44 +++++++++++++++---- .../business/message/bean/InterfaceInfo.java | 17 ++++++- .../business/message/bean/Parameter.java | 22 +++++++--- .../service/ComplexParameterService.java | 20 +++++++++ .../message/service/InterfaceInfoService.java | 12 +++++ .../impl/ComplexParameterServiceImpl.java | 22 +++++++++- .../impl/InterfaceInfoServiceImpl.java | 44 +++++++++++++++++++ src/main/webapp/index.js | 1 + src/main/webapp/js/globalConstant.js | 3 +- src/main/webapp/resource/message/interface.js | 29 ++++++++++++ .../template/interface-batchAddParameter.htm | 31 +++++++++++++ 11 files changed, 228 insertions(+), 17 deletions(-) create mode 100644 src/main/webapp/resource/template/interface-batchAddParameter.htm diff --git a/src/main/java/yi/master/business/message/action/InterfaceInfoAction.java b/src/main/java/yi/master/business/message/action/InterfaceInfoAction.java index b274138..4babe46 100644 --- a/src/main/java/yi/master/business/message/action/InterfaceInfoAction.java +++ b/src/main/java/yi/master/business/message/action/InterfaceInfoAction.java @@ -1,5 +1,6 @@ package yi.master.business.message.action; +import cn.hutool.core.util.StrUtil; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.commons.lang.StringUtils; @@ -8,14 +9,8 @@ import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import yi.master.business.base.action.BaseAction; import yi.master.business.base.dto.ParseMessageToNodesOutDTO; -import yi.master.business.message.bean.InterfaceInfo; -import yi.master.business.message.bean.Message; -import yi.master.business.message.bean.MessageScene; -import yi.master.business.message.bean.TestData; -import yi.master.business.message.service.InterfaceInfoService; -import yi.master.business.message.service.MessageSceneService; -import yi.master.business.message.service.MessageService; -import yi.master.business.message.service.TestDataService; +import yi.master.business.message.bean.*; +import yi.master.business.message.service.*; import yi.master.business.testconfig.bean.BusinessSystem; import yi.master.business.testconfig.service.BusinessSystemService; import yi.master.business.user.bean.User; @@ -55,6 +50,10 @@ public class InterfaceInfoAction extends BaseAction { private TestDataService testDataService; @Autowired private MessageSceneService messageSceneService; + @Autowired + private ParameterService parameterService; + @Autowired + private ComplexParameterService complexParameterService; private String path; @@ -67,6 +66,8 @@ public class InterfaceInfoAction extends BaseAction { private String updateSystems; private Integer systemId; + + private Boolean batchUpdateMessage; @Autowired public void setInterfaceInfoService(InterfaceInfoService interfaceInfoService) { @@ -90,6 +91,26 @@ public class InterfaceInfoAction extends BaseAction { } + /** + * 批量新增更新参数 + * @author xuwangcheng + * @date 2021/3/5 16:31 + * @param + * @return {@link String} + */ + public String batchUpdateParam(){ + if (StringUtils.isBlank(ids)) { + throw new YiException("接口ID不能为空"); + } + Parameter updateParam = model.getUpdateParam(); + if (updateParam == null || StrUtil.isBlank(updateParam.getParameterIdentify()) || StrUtil.isBlank(updateParam.getType())) { + throw new YiException(AppErrorCode.MISS_PARAM); + } + interfaceInfoService.batchInsertParam(updateParam, ids, batchUpdateMessage); + + return SUCCESS; + } + /** * 获取参数jsonTree数据 * @return @@ -265,7 +286,12 @@ public class InterfaceInfoAction extends BaseAction { return SUCCESS; } - public void setMessageId(Integer messageId) { + + public void setBatchUpdateMessage(Boolean batchUpdateMessage) { + this.batchUpdateMessage = batchUpdateMessage; + } + + public void setMessageId(Integer messageId) { this.messageId = messageId; } diff --git a/src/main/java/yi/master/business/message/bean/InterfaceInfo.java b/src/main/java/yi/master/business/message/bean/InterfaceInfo.java index 726ad3a..3bb48ce 100644 --- a/src/main/java/yi/master/business/message/bean/InterfaceInfo.java +++ b/src/main/java/yi/master/business/message/bean/InterfaceInfo.java @@ -150,6 +150,11 @@ public class InterfaceInfo implements Serializable,Cloneable { */ private String MessageType; /**************************/ + + /** + * 批量更新参数接受 + */ + private Parameter updateParam; /** default constructor */ public InterfaceInfo() { @@ -164,7 +169,17 @@ public class InterfaceInfo implements Serializable,Cloneable { } return null; } - + + + public void setUpdateParam(Parameter updateParam) { + this.updateParam = updateParam; + } + + @JSON(serialize = false) + public Parameter getUpdateParam() { + return updateParam; + } + public Set getSystems() { return systems; } diff --git a/src/main/java/yi/master/business/message/bean/Parameter.java b/src/main/java/yi/master/business/message/bean/Parameter.java index 54be029..f1b6cc9 100644 --- a/src/main/java/yi/master/business/message/bean/Parameter.java +++ b/src/main/java/yi/master/business/message/bean/Parameter.java @@ -1,13 +1,12 @@ package yi.master.business.message.bean; +import org.apache.struts2.json.annotations.JSON; +import yi.master.constant.MessageKeys; + import java.io.Serializable; import java.util.HashSet; import java.util.Set; -import org.apache.struts2.json.annotations.JSON; - -import yi.master.constant.MessageKeys; - /** * 接口自动化 @@ -17,7 +16,7 @@ import yi.master.constant.MessageKeys; * @version 1.0.0.0,2017.2.13 */ -public class Parameter implements Serializable { +public class Parameter implements Serializable,Cloneable { private static final long serialVersionUID = 1L; @@ -278,4 +277,17 @@ public class Parameter implements Serializable { return true; } + @Override + public Parameter clone() { + Parameter parameter = new Parameter(); + parameter.setAttributes(this.attributes); + parameter.setPath(this.path); + parameter.setType(this.type); + parameter.setDefaultValue(this.defaultValue); + parameter.setMark(this.mark); + parameter.setParameterIdentify(this.parameterIdentify); + parameter.setParameterName(this.parameterName); + + return parameter; + } } \ No newline at end of file diff --git a/src/main/java/yi/master/business/message/service/ComplexParameterService.java b/src/main/java/yi/master/business/message/service/ComplexParameterService.java index 74deb42..a4126c9 100644 --- a/src/main/java/yi/master/business/message/service/ComplexParameterService.java +++ b/src/main/java/yi/master/business/message/service/ComplexParameterService.java @@ -3,6 +3,26 @@ package yi.master.business.message.service; import yi.master.business.base.service.BaseService; import yi.master.business.message.bean.ComplexParameter; +import java.util.List; + public interface ComplexParameterService extends BaseService { + /** + * 查询ids + * @author xuwangcheng + * @date 2021/3/8 8:49 + * @param parameterId parameterId + * @return {@link List} + */ + List listIds(Integer parameterId); + + /** + * 直接插入 + * @author xuwangcheng + * @date 2021/3/8 9:15 + * @param parameterId parameterId + * @param parentId parentId + * @return {@link boolean} + */ + void insert(Integer parameterId, Integer parentId); } diff --git a/src/main/java/yi/master/business/message/service/InterfaceInfoService.java b/src/main/java/yi/master/business/message/service/InterfaceInfoService.java index 011ede3..73d410a 100644 --- a/src/main/java/yi/master/business/message/service/InterfaceInfoService.java +++ b/src/main/java/yi/master/business/message/service/InterfaceInfoService.java @@ -2,6 +2,7 @@ package yi.master.business.message.service; import yi.master.business.base.service.BaseService; import yi.master.business.message.bean.InterfaceInfo; +import yi.master.business.message.bean.Parameter; import java.util.List; @@ -43,4 +44,15 @@ public interface InterfaceInfoService extends BaseService { * @return */ void copyInterfaceInfo (InterfaceInfo interfaceInfo, List copyParams); + + /** + * 批量往接口中插入参数 + * @author xuwangcheng + * @date 2021/3/8 9:28 + * @param parameter parameter + * @param ids ids + * @param updateMessage updateMessage 是否将新增的参数更新到接口下的报文中去 + * @return + */ + void batchInsertParam(Parameter parameter, String ids, boolean updateMessage); } diff --git a/src/main/java/yi/master/business/message/service/impl/ComplexParameterServiceImpl.java b/src/main/java/yi/master/business/message/service/impl/ComplexParameterServiceImpl.java index 1c9abb0..f28dc3a 100644 --- a/src/main/java/yi/master/business/message/service/impl/ComplexParameterServiceImpl.java +++ b/src/main/java/yi/master/business/message/service/impl/ComplexParameterServiceImpl.java @@ -2,12 +2,14 @@ package yi.master.business.message.service.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; - import yi.master.business.base.service.impl.BaseServiceImpl; import yi.master.business.message.bean.ComplexParameter; import yi.master.business.message.dao.ComplexParameterDao; import yi.master.business.message.service.ComplexParameterService; +import java.util.ArrayList; +import java.util.List; + @Service("complexParameterService") public class ComplexParameterServiceImpl extends BaseServiceImpl implements ComplexParameterService { @@ -19,4 +21,22 @@ public class ComplexParameterServiceImpl extends BaseServiceImpl listIds(Integer parameterId) { + List parameters = complexParameterDao.findAll("selfParameter.parameterId=" + parameterId); + List ids = new ArrayList<>(); + parameters.stream().forEach(param -> { + ids.add(param.getId()); + }); + + return ids; + } + + @Override + public void insert(Integer parameterId, Integer parentId) { + String sql = "insert into at_complex_parameter values(null, :parameterId, :parentId, null)"; + complexParameterDao.getSession().createSQLQuery(sql).setInteger("parameterId", parameterId) + .setInteger("parentId", parentId).executeUpdate(); + } } diff --git a/src/main/java/yi/master/business/message/service/impl/InterfaceInfoServiceImpl.java b/src/main/java/yi/master/business/message/service/impl/InterfaceInfoServiceImpl.java index c414a02..974320a 100644 --- a/src/main/java/yi/master/business/message/service/impl/InterfaceInfoServiceImpl.java +++ b/src/main/java/yi/master/business/message/service/impl/InterfaceInfoServiceImpl.java @@ -1,14 +1,21 @@ package yi.master.business.message.service.impl; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import yi.master.business.base.service.impl.BaseServiceImpl; import yi.master.business.message.bean.InterfaceInfo; +import yi.master.business.message.bean.Message; +import yi.master.business.message.bean.Parameter; import yi.master.business.message.dao.InterfaceInfoDao; +import yi.master.business.message.service.ComplexParameterService; import yi.master.business.message.service.InterfaceInfoService; import yi.master.business.message.service.MessageService; +import yi.master.business.message.service.ParameterService; +import yi.master.constant.MessageKeys; import java.util.List; +import java.util.Set; /** * 接口信息Service实现 @@ -21,6 +28,10 @@ public class InterfaceInfoServiceImpl extends BaseServiceImpl imp private InterfaceInfoDao interfaceInfoDao; @Autowired private MessageService messageService; + @Autowired + private ParameterService parameterService; + @Autowired + private ComplexParameterService complexParameterService; @Autowired public void setInterfaceInfoDao(InterfaceInfoDao interfaceInfoDao) { @@ -52,4 +63,37 @@ public class InterfaceInfoServiceImpl extends BaseServiceImpl imp public void copyInterfaceInfo(InterfaceInfo interfaceInfo, List copyParams) { //todo 接口复制,包括接口信息和参数信息,报文信息 } + + @Override + public void batchInsertParam(Parameter parameter, String ids, boolean updateMessage) { + parameter.setPath(MessageKeys.MESSAGE_PARAMETER_DEFAULT_ROOT_PATH + (StringUtils.isBlank(parameter.getPath()) ? "" : ("." + parameter.getPath()))); + List interfaceInfos = findAll("all".equalsIgnoreCase(ids) ? "1 = 1" : "interfaceId in (" + ids + ")"); + for (InterfaceInfo info:interfaceInfos) { + // 父节点ID是否存在? + Integer parentParameterId = Parameter.getParentId(parameter.getPath(), info.getParameters()); + if (parentParameterId == null) { + continue; + } + Parameter insertParameter = parameter.clone(); + insertParameter.setInterfaceInfo(info); + insertParameter.setParameterId(parameterService.save(insertParameter)); + + // 插入报文的节点信息 + if (updateMessage) { + // 根节点 + if (parentParameterId == 0) { + Set messages = info.getMessages(); + for (Message msg:messages) { + complexParameterService.insert(insertParameter.getParameterId(), msg.getComplexParameter().getId()); + } + } else { + List parentIds = complexParameterService.listIds(parentParameterId); + for (Integer id:parentIds) { + complexParameterService.insert(insertParameter.getParameterId(), id); + } + } + } + + } + } } diff --git a/src/main/webapp/index.js b/src/main/webapp/index.js index 8b517f9..5467ab5 100644 --- a/src/main/webapp/index.js +++ b/src/main/webapp/index.js @@ -55,6 +55,7 @@ $(document).ready(function() { "messageScene-test", "messageScene-validateFullJson", "messageScene-validateKeyword", + "interface-batchAddParameter", "role-power", "showDataPoolUseSample", "viewWindow"]); diff --git a/src/main/webapp/js/globalConstant.js b/src/main/webapp/js/globalConstant.js index 129472f..0aa94c2 100644 --- a/src/main/webapp/js/globalConstant.js +++ b/src/main/webapp/js/globalConstant.js @@ -59,7 +59,8 @@ var REQUEST_URL = { IMPORT_FROM_EXCEL: "interface-importFromExcel", EXPORT_DOCUMENT_EXCEL: "interface-exportInterfaceDocument", GET_PARAMETERS_JSON_TREE: "interface-getParametersJsonTree", - UPDATE_CHILDREN_BUSINESS_SYSTEMS: "interface-updateChildrenBusinessSystems" + UPDATE_CHILDREN_BUSINESS_SYSTEMS: "interface-updateChildrenBusinessSystems", + BATCH_UPDATE_PARAM: "interface-batchUpdateParam" }, //报文 MESSAGE: { diff --git a/src/main/webapp/resource/message/interface.js b/src/main/webapp/resource/message/interface.js index a970cfd..90ecfe0 100644 --- a/src/main/webapp/resource/message/interface.js +++ b/src/main/webapp/resource/message/interface.js @@ -21,6 +21,10 @@ var templateParams = { { name: '更新测试环境', id: 'batch-update-system' + }, + { + name: '新增接口参数', + id: 'batch-insert-parameter' } ] },{ @@ -330,6 +334,31 @@ var columnsSetting = [ ]; var eventList = { + "#batch-insert-parameter":function () { + layer_show("批量新增参数", htmls['interface-batchAddParameter'], 777, 575, 1, function (layero, index) { + $(layero).find('#confirm-batch-add').click(function () { + let msg = $('#batch-add-param-json').val(); + if (!strIsNotEmpty(msg)) { + layer.msg('请输入完整再提交!', {icon: 0, time:1800}); + return; + } + if (!isJSON(msg)) { + layer.msg('提交报文格式有误!', {icon: 0, time:1800}); + return; + } + loading(true, "正在更新..."); + $.post(REQUEST_URL.INTERFACE.BATCH_UPDATE_PARAM, JSON.parse(msg), function (json) { + loading(false); + if (json.returnCode == 0) { + layer.msg('批量新增成功', {icon: 1, time:1800}) + refreshTable(); + } else { + layer.alert(json.msg, {icon:5}); + } + }); + }); + }); + }, ".show-interface-messages":function(){ var data = table.row( $(this).parents('tr') ).data(); $(this).attr("data-title", data.interfaceName + "-" + data.interfaceCnName + " " + "报文管理"); diff --git a/src/main/webapp/resource/template/interface-batchAddParameter.htm b/src/main/webapp/resource/template/interface-batchAddParameter.htm new file mode 100644 index 0000000..6c5c15c --- /dev/null +++ b/src/main/webapp/resource/template/interface-batchAddParameter.htm @@ -0,0 +1,31 @@ +
+ + +

通过以下指定的JSON报文来批量新增多个或者全部接口下的参数信息,并可以将更新到关联的报文信息

+

+ ids: 要更新的接口ID集合,多个以逗号分隔,传入all|All表示更新到全部的接口下 必填
+ batchUpdateMessage: 是否同步更新参数到接口下的所有报文信息中 必填
+ updateParam.attributes: 参数的节点属性,key=value形式,多个;号分隔
+ updateParam.path: 参数的节点路径,不包括自己的节点名,根节点则为空
+ updateParam.type: 参数的类型,支持String,Number等 必填
+ updateParam.defaultValue: 参数的默认值
+ updateParam.mark: 参数的备注
+ updateParam.parameterIdentify: 参数的标识 必填
+ updateParam.parameterName: 参数的名称,一般为中文释义 +

+
+ +
\ No newline at end of file -- Gitee From afdf5197dae7c63f3e99c1480133e6c58db124f8 Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Mon, 8 Mar 2021 16:07:48 +0800 Subject: [PATCH 18/18] =?UTF-8?q?SQL=E8=84=9A=E6=9C=AC=E5=92=8C=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/update/1.1.3 | 10 ---------- update.md | 2 ++ 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/main/resources/update/1.1.3 b/src/main/resources/update/1.1.3 index 0c280a8..4ace50f 100644 --- a/src/main/resources/update/1.1.3 +++ b/src/main/resources/update/1.1.3 @@ -2,14 +2,4 @@ SET FOREIGN_KEY_CHECKS=0; ALTER TABLE `at_message` ADD COLUMN `body_to_query` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '0' COMMENT 'body体内容转query参数' AFTER `project_id`; INSERT INTO `at_global_setting`(`setting_id`, `setting_name`, `default_value`, `setting_value`, `mark`) VALUES (26, 'messageCallHomeUrl', '0', '0', '接口自动化内部请求地址'); UPDATE `at_operation_interface` SET `op_name` = '从测试结果中获取视图数据', `call_name` = 'ptr-analyseView', `is_parent` = 'false', `op_type` = NULL, `mark` = '', `status` = '0', `parent_op_id` = 1078, `permission_mark` = NULL, `page_name` = NULL WHERE `op_id` = 1091; -INSERT INTO `at_role_power`(`role_id`, `op_id`) VALUES (1, 1132); -INSERT INTO `at_role_power`(`role_id`, `op_id`) VALUES (1, 1133); -INSERT INTO `at_role_power`(`role_id`, `op_id`) VALUES (1, 1135); -INSERT INTO `at_role_power`(`role_id`, `op_id`) VALUES (1, 1136); -INSERT INTO `at_role_power`(`role_id`, `op_id`) VALUES (1, 1137); -INSERT INTO `at_role_power`(`role_id`, `op_id`) VALUES (1, 1138); -INSERT INTO `at_role_power`(`role_id`, `op_id`) VALUES (1, 21140); -INSERT INTO `at_role_power`(`role_id`, `op_id`) VALUES (1, 21141); -INSERT INTO `at_role_power`(`role_id`, `op_id`) VALUES (1, 21142); -INSERT INTO `at_role_power`(`role_id`, `op_id`) VALUES (1, 21143); SET FOREIGN_KEY_CHECKS=1; \ No newline at end of file diff --git a/update.md b/update.md index d21d102..1503f73 100644 --- a/update.md +++ b/update.md @@ -3,6 +3,8 @@ - 增加全局变量动态组合接口类型,通过组合场景去获取变量参数; - 修复测试时获取不到用户的全局配置的问题; - 报文增加BodyToQuery选项,方便在Post请求时管理Query参数; +- 增加批量增加接口参数的快捷操作; +- 优化页面的一些展示内容。 ### v1.1.2 #### 2021.01.30 -- Gitee