From 51bcc0a9bcd34a061274a6b9bc0db22b4fb0c8ea Mon Sep 17 00:00:00 2001 From: wxg0103 <727495428@qq.com> Date: Wed, 6 Jul 2022 19:44:02 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E6=8E=A5=E5=8F=A3=E6=B5=8B=E8=AF=95):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8Dswagger=E5=AE=9A=E6=97=B6=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E8=A6=86=E7=9B=96=E6=A8=A1=E5=BC=8F=E4=B8=8D=E7=94=9F=E6=95=88?= =?UTF-8?q?=E7=9A=84=E7=BC=BA=E9=99=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --bug=1014696 --user=王孝刚 【接口测试】swagger 定时同步导入,覆盖模式没生效 https://www.tapd.cn/55049933/s/1196530 --- .../base/domain/SwaggerUrlProject.java | 2 + .../base/domain/SwaggerUrlProjectExample.java | 60 ++ .../base/mapper/SwaggerUrlProjectMapper.xml | 574 +++++++++--------- .../controller/request/ScheduleRequest.java | 2 + .../job/sechedule/SwaggerUrlImportJob.java | 15 +- .../automation/scenario/ApiScenarioList.vue | 4 +- .../components/import/ApiSchedule.vue | 2 +- .../components/list/ApiCaseSimpleList.vue | 4 +- .../definition/components/list/ApiList.vue | 4 +- 9 files changed, 382 insertions(+), 285 deletions(-) diff --git a/backend/src/main/java/io/metersphere/base/domain/SwaggerUrlProject.java b/backend/src/main/java/io/metersphere/base/domain/SwaggerUrlProject.java index 82bdf9865d..f339a254b5 100644 --- a/backend/src/main/java/io/metersphere/base/domain/SwaggerUrlProject.java +++ b/backend/src/main/java/io/metersphere/base/domain/SwaggerUrlProject.java @@ -17,6 +17,8 @@ public class SwaggerUrlProject implements Serializable { private String modeId; + private Boolean coverModule; + private String config; private static final long serialVersionUID = 1L; diff --git a/backend/src/main/java/io/metersphere/base/domain/SwaggerUrlProjectExample.java b/backend/src/main/java/io/metersphere/base/domain/SwaggerUrlProjectExample.java index a2e92e7a4f..8760f8c89d 100644 --- a/backend/src/main/java/io/metersphere/base/domain/SwaggerUrlProjectExample.java +++ b/backend/src/main/java/io/metersphere/base/domain/SwaggerUrlProjectExample.java @@ -523,6 +523,66 @@ public class SwaggerUrlProjectExample { addCriterion("mode_id not between", value1, value2, "modeId"); return (Criteria) this; } + + public Criteria andCoverModuleIsNull() { + addCriterion("cover_module is null"); + return (Criteria) this; + } + + public Criteria andCoverModuleIsNotNull() { + addCriterion("cover_module is not null"); + return (Criteria) this; + } + + public Criteria andCoverModuleEqualTo(Boolean value) { + addCriterion("cover_module =", value, "coverModule"); + return (Criteria) this; + } + + public Criteria andCoverModuleNotEqualTo(Boolean value) { + addCriterion("cover_module <>", value, "coverModule"); + return (Criteria) this; + } + + public Criteria andCoverModuleGreaterThan(Boolean value) { + addCriterion("cover_module >", value, "coverModule"); + return (Criteria) this; + } + + public Criteria andCoverModuleGreaterThanOrEqualTo(Boolean value) { + addCriterion("cover_module >=", value, "coverModule"); + return (Criteria) this; + } + + public Criteria andCoverModuleLessThan(Boolean value) { + addCriterion("cover_module <", value, "coverModule"); + return (Criteria) this; + } + + public Criteria andCoverModuleLessThanOrEqualTo(Boolean value) { + addCriterion("cover_module <=", value, "coverModule"); + return (Criteria) this; + } + + public Criteria andCoverModuleIn(List values) { + addCriterion("cover_module in", values, "coverModule"); + return (Criteria) this; + } + + public Criteria andCoverModuleNotIn(List values) { + addCriterion("cover_module not in", values, "coverModule"); + return (Criteria) this; + } + + public Criteria andCoverModuleBetween(Boolean value1, Boolean value2) { + addCriterion("cover_module between", value1, value2, "coverModule"); + return (Criteria) this; + } + + public Criteria andCoverModuleNotBetween(Boolean value1, Boolean value2) { + addCriterion("cover_module not between", value1, value2, "coverModule"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { diff --git a/backend/src/main/java/io/metersphere/base/mapper/SwaggerUrlProjectMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/SwaggerUrlProjectMapper.xml index 2db45dd488..d34dd3f2a5 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/SwaggerUrlProjectMapper.xml +++ b/backend/src/main/java/io/metersphere/base/mapper/SwaggerUrlProjectMapper.xml @@ -1,287 +1,311 @@ - - - - - - - - - - - - - - - - - - - - and ${criterion.condition} - - - and ${criterion.condition} #{criterion.value} - - - and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} - - - and ${criterion.condition} - - #{listItem} - - - + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + - - - - - - - - - - - - - - and ${criterion.condition} - - - and ${criterion.condition} #{criterion.value} - - - and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} - - - and ${criterion.condition} - - #{listItem} - - - + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + - + + + + id + , project_id, swagger_url, module_id, module_path, mode_id, cover_module + + + config + + - select - - distinct - - - , - - from swagger_url_project - - - - - order by ${orderByClause} - - - - - - delete from swagger_url_project - where id = #{id,jdbcType=VARCHAR} - - - delete from swagger_url_project - - - - - - insert into swagger_url_project (id, project_id, swagger_url, - module_id, module_path, mode_id, - config) - values (#{id,jdbcType=VARCHAR}, #{projectId,jdbcType=VARCHAR}, #{swaggerUrl,jdbcType=VARCHAR}, - #{moduleId,jdbcType=VARCHAR}, #{modulePath,jdbcType=VARCHAR}, #{modeId,jdbcType=VARCHAR}, - #{config,jdbcType=LONGVARCHAR}) - - - insert into swagger_url_project - - - id, - - - project_id, - - - swagger_url, - - - module_id, - - - module_path, - - - mode_id, - - - config, - - - - - #{id,jdbcType=VARCHAR}, - - - #{projectId,jdbcType=VARCHAR}, - - - #{swaggerUrl,jdbcType=VARCHAR}, - - - #{moduleId,jdbcType=VARCHAR}, - - - #{modulePath,jdbcType=VARCHAR}, - - - #{modeId,jdbcType=VARCHAR}, - - - #{config,jdbcType=LONGVARCHAR}, - - - - - - update swagger_url_project - - - id = #{record.id,jdbcType=VARCHAR}, - - + + , + + from swagger_url_project + + + + + order by ${orderByClause} + + + + + + delete + from swagger_url_project + where id = #{id,jdbcType=VARCHAR} + + + delete from swagger_url_project + + + + + + insert into swagger_url_project (id, project_id, swagger_url, + module_id, module_path, mode_id, + cover_module, config) + values (#{id,jdbcType=VARCHAR}, #{projectId,jdbcType=VARCHAR}, #{swaggerUrl,jdbcType=VARCHAR}, + #{moduleId,jdbcType=VARCHAR}, #{modulePath,jdbcType=VARCHAR}, #{modeId,jdbcType=VARCHAR}, + #{coverModule,jdbcType=BIT}, #{config,jdbcType=LONGVARCHAR}) + + + insert into swagger_url_project + + + id, + + + project_id, + + + swagger_url, + + + module_id, + + + module_path, + + + mode_id, + + + cover_module, + + + config, + + + + + #{id,jdbcType=VARCHAR}, + + + #{projectId,jdbcType=VARCHAR}, + + + #{swaggerUrl,jdbcType=VARCHAR}, + + + #{moduleId,jdbcType=VARCHAR}, + + + #{modulePath,jdbcType=VARCHAR}, + + + #{modeId,jdbcType=VARCHAR}, + + + #{coverModule,jdbcType=BIT}, + + + #{config,jdbcType=LONGVARCHAR}, + + + + + + update swagger_url_project + + + id = #{record.id,jdbcType=VARCHAR}, + + + project_id = #{record.projectId,jdbcType=VARCHAR}, + + + swagger_url = #{record.swaggerUrl,jdbcType=VARCHAR}, + + + module_id = #{record.moduleId,jdbcType=VARCHAR}, + + + module_path = #{record.modulePath,jdbcType=VARCHAR}, + + + mode_id = #{record.modeId,jdbcType=VARCHAR}, + + + cover_module = #{record.coverModule,jdbcType=BIT}, + + + config = #{record.config,jdbcType=LONGVARCHAR}, + + + + + + + + update swagger_url_project + set id = #{record.id,jdbcType=VARCHAR}, project_id = #{record.projectId,jdbcType=VARCHAR}, - - swagger_url = #{record.swaggerUrl,jdbcType=VARCHAR}, - - module_id = #{record.moduleId,jdbcType=VARCHAR}, - - module_path = #{record.modulePath,jdbcType=VARCHAR}, - - mode_id = #{record.modeId,jdbcType=VARCHAR}, - - - config = #{record.config,jdbcType=LONGVARCHAR}, - - - - - - - - update swagger_url_project - set id = #{record.id,jdbcType=VARCHAR}, - project_id = #{record.projectId,jdbcType=VARCHAR}, - swagger_url = #{record.swaggerUrl,jdbcType=VARCHAR}, - module_id = #{record.moduleId,jdbcType=VARCHAR}, - module_path = #{record.modulePath,jdbcType=VARCHAR}, - mode_id = #{record.modeId,jdbcType=VARCHAR}, - config = #{record.config,jdbcType=LONGVARCHAR} - - - - - - update swagger_url_project - set id = #{record.id,jdbcType=VARCHAR}, - project_id = #{record.projectId,jdbcType=VARCHAR}, - swagger_url = #{record.swaggerUrl,jdbcType=VARCHAR}, - module_id = #{record.moduleId,jdbcType=VARCHAR}, - module_path = #{record.modulePath,jdbcType=VARCHAR}, - mode_id = #{record.modeId,jdbcType=VARCHAR} - - - - - - update swagger_url_project - - - project_id = #{projectId,jdbcType=VARCHAR}, - - - swagger_url = #{swaggerUrl,jdbcType=VARCHAR}, - - - module_id = #{moduleId,jdbcType=VARCHAR}, - - - module_path = #{modulePath,jdbcType=VARCHAR}, - - - mode_id = #{modeId,jdbcType=VARCHAR}, - - - config = #{config,jdbcType=LONGVARCHAR}, - - - where id = #{id,jdbcType=VARCHAR} - - - update swagger_url_project - set project_id = #{projectId,jdbcType=VARCHAR}, - swagger_url = #{swaggerUrl,jdbcType=VARCHAR}, - module_id = #{moduleId,jdbcType=VARCHAR}, - module_path = #{modulePath,jdbcType=VARCHAR}, - mode_id = #{modeId,jdbcType=VARCHAR}, - config = #{config,jdbcType=LONGVARCHAR} - where id = #{id,jdbcType=VARCHAR} - - - update swagger_url_project - set project_id = #{projectId,jdbcType=VARCHAR}, - swagger_url = #{swaggerUrl,jdbcType=VARCHAR}, - module_id = #{moduleId,jdbcType=VARCHAR}, - module_path = #{modulePath,jdbcType=VARCHAR}, - mode_id = #{modeId,jdbcType=VARCHAR} - where id = #{id,jdbcType=VARCHAR} - + cover_module = #{record.coverModule,jdbcType=BIT}, + config = #{record.config,jdbcType=LONGVARCHAR} + + + + + + update swagger_url_project + set id = #{record.id,jdbcType=VARCHAR}, + project_id = #{record.projectId,jdbcType=VARCHAR}, + swagger_url = #{record.swaggerUrl,jdbcType=VARCHAR}, + module_id = #{record.moduleId,jdbcType=VARCHAR}, + module_path = #{record.modulePath,jdbcType=VARCHAR}, + mode_id = #{record.modeId,jdbcType=VARCHAR}, + cover_module = #{record.coverModule,jdbcType=BIT} + + + + + + update swagger_url_project + + + project_id = #{projectId,jdbcType=VARCHAR}, + + + swagger_url = #{swaggerUrl,jdbcType=VARCHAR}, + + + module_id = #{moduleId,jdbcType=VARCHAR}, + + + module_path = #{modulePath,jdbcType=VARCHAR}, + + + mode_id = #{modeId,jdbcType=VARCHAR}, + + + cover_module = #{coverModule,jdbcType=BIT}, + + + config = #{config,jdbcType=LONGVARCHAR}, + + + where id = #{id,jdbcType=VARCHAR} + + + update swagger_url_project + set project_id = #{projectId,jdbcType=VARCHAR}, + swagger_url = #{swaggerUrl,jdbcType=VARCHAR}, + module_id = #{moduleId,jdbcType=VARCHAR}, + module_path = #{modulePath,jdbcType=VARCHAR}, + mode_id = #{modeId,jdbcType=VARCHAR}, + cover_module = #{coverModule,jdbcType=BIT}, + config = #{config,jdbcType=LONGVARCHAR} + where id = #{id,jdbcType=VARCHAR} + + + update swagger_url_project + set project_id = #{projectId,jdbcType=VARCHAR}, + swagger_url = #{swaggerUrl,jdbcType=VARCHAR}, + module_id = #{moduleId,jdbcType=VARCHAR}, + module_path = #{modulePath,jdbcType=VARCHAR}, + mode_id = #{modeId,jdbcType=VARCHAR}, + cover_module = #{coverModule,jdbcType=BIT} + where id = #{id,jdbcType=VARCHAR} + \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/controller/request/ScheduleRequest.java b/backend/src/main/java/io/metersphere/controller/request/ScheduleRequest.java index 6dd3360e1a..76f604cfac 100644 --- a/backend/src/main/java/io/metersphere/controller/request/ScheduleRequest.java +++ b/backend/src/main/java/io/metersphere/controller/request/ScheduleRequest.java @@ -5,6 +5,7 @@ import io.metersphere.api.dto.scenario.KeyValue; import io.metersphere.base.domain.Schedule; import lombok.Getter; import lombok.Setter; + import java.util.List; /** @@ -35,5 +36,6 @@ public class ScheduleRequest extends Schedule { private List headers; private List arguments; private MsAuthManager authManager; + private Boolean coverModule = false; } diff --git a/backend/src/main/java/io/metersphere/job/sechedule/SwaggerUrlImportJob.java b/backend/src/main/java/io/metersphere/job/sechedule/SwaggerUrlImportJob.java index 5a75ad1221..c36ef531d3 100644 --- a/backend/src/main/java/io/metersphere/job/sechedule/SwaggerUrlImportJob.java +++ b/backend/src/main/java/io/metersphere/job/sechedule/SwaggerUrlImportJob.java @@ -16,13 +16,14 @@ import org.quartz.JobDataMap; import org.quartz.JobExecutionContext; import org.quartz.JobKey; import org.quartz.TriggerKey; + import java.util.List; public class SwaggerUrlImportJob extends MsScheduleJob { private ApiDefinitionService apiDefinitionService; public SwaggerUrlImportJob() { - apiDefinitionService = CommonBeanFactory.getBean(ApiDefinitionService.class); + apiDefinitionService = CommonBeanFactory.getBean(ApiDefinitionService.class); } @Override @@ -37,6 +38,8 @@ public class SwaggerUrlImportJob extends MsScheduleJob { request.setProjectId(swaggerUrlProject.getProjectId()); request.setSwaggerUrl(swaggerUrlProject.getSwaggerUrl()); request.setModuleId(swaggerUrlProject.getModuleId()); + request.setModeId(swaggerUrlProject.getModeId()); + request.setCoverModule(swaggerUrlProject.getCoverModule()); request.setPlatform("Swagger2"); request.setUserId(jobDataMap.getString("userId")); request.setType("schedule"); @@ -53,20 +56,20 @@ public class SwaggerUrlImportJob extends MsScheduleJob { return new TriggerKey(resourceId, ScheduleGroup.SWAGGER_IMPORT.name()); } - public void setAuthInfo(String config, ApiTestImportRequest request){ + public void setAuthInfo(String config, ApiTestImportRequest request) { // 获取鉴权设置 - if(StringUtils.isNotBlank(config)){ + if (StringUtils.isNotBlank(config)) { JSONObject configObj = JSON.parseObject(config, Feature.DisableSpecialKeyDetect); List headers = JSONObject.parseArray(configObj.getString("headers"), KeyValue.class); - if(CollectionUtils.isNotEmpty(headers)){ + if (CollectionUtils.isNotEmpty(headers)) { request.setHeaders(headers); } List arguments = JSONObject.parseArray(configObj.getString("arguments"), KeyValue.class); - if(CollectionUtils.isNotEmpty(arguments)){ + if (CollectionUtils.isNotEmpty(arguments)) { request.setArguments(arguments); } MsAuthManager msAuthManager = JSONObject.parseObject(configObj.getString("authManager"), MsAuthManager.class); - if(msAuthManager != null){ + if (msAuthManager != null) { request.setAuthManager(msAuthManager); } } diff --git a/frontend/src/business/components/api/automation/scenario/ApiScenarioList.vue b/frontend/src/business/components/api/automation/scenario/ApiScenarioList.vue index e3b47fb11a..3189fcd208 100644 --- a/frontend/src/business/components/api/automation/scenario/ApiScenarioList.vue +++ b/frontend/src/business/components/api/automation/scenario/ApiScenarioList.vue @@ -761,7 +761,9 @@ export default { } }); this.$emit('getTrashCase'); - this.$refs.scenarioTable.clearSelection(); + if (this.$refs.scenarioTable) { + this.$refs.scenarioTable.clearSelection(); + } }); } }, diff --git a/frontend/src/business/components/api/definition/components/import/ApiSchedule.vue b/frontend/src/business/components/api/definition/components/import/ApiSchedule.vue index 78625834c6..b70b4ffbf9 100644 --- a/frontend/src/business/components/api/definition/components/import/ApiSchedule.vue +++ b/frontend/src/business/components/api/definition/components/import/ApiSchedule.vue @@ -205,7 +205,7 @@ export default { }, formData: { swaggerUrl: '', - modeId: this.$t('commons.not_cover'), + modeId: 'incrementalMerge', moduleId: '', rule: '', coverModule: false diff --git a/frontend/src/business/components/api/definition/components/list/ApiCaseSimpleList.vue b/frontend/src/business/components/api/definition/components/list/ApiCaseSimpleList.vue index e924ac321f..e6f8dd22a3 100644 --- a/frontend/src/business/components/api/definition/components/list/ApiCaseSimpleList.vue +++ b/frontend/src/business/components/api/definition/components/list/ApiCaseSimpleList.vue @@ -717,7 +717,9 @@ export default { } }); } - this.$refs.caseTable.clearSelection(); + if (this.$refs.caseTable) { + this.$refs.caseTable.clearSelection(); + } }, setRunning(id) { this.tableData.forEach(item => { diff --git a/frontend/src/business/components/api/definition/components/list/ApiList.vue b/frontend/src/business/components/api/definition/components/list/ApiList.vue index 8200cabf95..a3ee902252 100644 --- a/frontend/src/business/components/api/definition/components/list/ApiList.vue +++ b/frontend/src/business/components/api/definition/components/list/ApiList.vue @@ -640,7 +640,9 @@ export default { item.caseTotal = parseInt(item.caseTotal); }); this.$emit('getTrashApi'); - this.$refs.table.clearSelection(); + if (this.$refs.table) { + this.$refs.table.clearSelection(); + } }); } if (this.needRefreshModule()) {