diff --git a/backend/src/main/java/io/metersphere/api/service/ApiAutomationService.java b/backend/src/main/java/io/metersphere/api/service/ApiAutomationService.java index 4964958aef..3de0a658c2 100644 --- a/backend/src/main/java/io/metersphere/api/service/ApiAutomationService.java +++ b/backend/src/main/java/io/metersphere/api/service/ApiAutomationService.java @@ -62,8 +62,6 @@ public class ApiAutomationService { @Resource private ApiScenarioMapper apiScenarioMapper; @Resource - private ApiDefinitionService apiDefinitionService; - @Resource private ExtApiScenarioMapper extApiScenarioMapper; @Resource private TestPlanApiScenarioMapper testPlanApiScenarioMapper; @@ -103,13 +101,13 @@ public class ApiAutomationService { if (setDefultOrders) { request.setOrders(ServiceUtils.getDefaultOrder(request.getOrders())); } - if(StringUtils.isNotEmpty(request.getExecuteStatus())){ - Map> statusFilter = new HashMap<>(); + if (StringUtils.isNotEmpty(request.getExecuteStatus())) { + Map> statusFilter = new HashMap<>(); List list = new ArrayList<>(); list.add("Prepare"); list.add("Underway"); list.add("Completed"); - statusFilter.put("status",list); + statusFilter.put("status", list); request.setFilters(statusFilter); } if (checkThisWeekData) { @@ -174,7 +172,7 @@ public class ApiAutomationService { apiScenarioMapper.insert(scenario); List bodyUploadIds = request.getBodyUploadIds(); - apiDefinitionService.createBodyFiles(bodyUploadIds, bodyFiles); + FileUtils.createBodyFiles(bodyUploadIds, bodyFiles); return scenario; } @@ -190,7 +188,7 @@ public class ApiAutomationService { public void update(SaveApiScenarioRequest request, List bodyFiles) { checkNameExist(request); List bodyUploadIds = request.getBodyUploadIds(); - apiDefinitionService.createBodyFiles(bodyUploadIds, bodyFiles); + FileUtils.createBodyFiles(bodyUploadIds, bodyFiles); final ApiScenarioWithBLOBs scenario = new ApiScenarioWithBLOBs(); scenario.setId(request.getId()); @@ -480,8 +478,8 @@ public class ApiAutomationService { public void checkScenarioIsRunnng(List ids) { List lastReportStatusByIds = apiReportService.selectLastReportByIds(ids); for (ApiScenarioReport report : lastReportStatusByIds) { - if(StringUtils.equals(report.getStatus(),APITestStatus.Running.name())){ - MSException.throwException(report.getName()+" Is Running!"); + if (StringUtils.equals(report.getStatus(), APITestStatus.Running.name())) { + MSException.throwException(report.getName() + " Is Running!"); } } } @@ -518,7 +516,7 @@ public class ApiAutomationService { */ public String debugRun(RunDefinitionRequest request, List bodyFiles) { List bodyUploadIds = new ArrayList<>(request.getBodyUploadIds()); - apiDefinitionService.createBodyFiles(bodyUploadIds, bodyFiles); + FileUtils.createBodyFiles(bodyUploadIds, bodyFiles); EnvironmentConfig envConfig = null; if (request.getEnvironmentId() != null) { ApiTestEnvironmentWithBLOBs environment = environmentService.get(request.getEnvironmentId()); diff --git a/backend/src/main/java/io/metersphere/api/service/ApiDefinitionService.java b/backend/src/main/java/io/metersphere/api/service/ApiDefinitionService.java index 66143cb04d..cbc9e31407 100644 --- a/backend/src/main/java/io/metersphere/api/service/ApiDefinitionService.java +++ b/backend/src/main/java/io/metersphere/api/service/ApiDefinitionService.java @@ -131,7 +131,7 @@ public class ApiDefinitionService { public void create(SaveApiDefinitionRequest request, List bodyFiles) { List bodyUploadIds = new ArrayList<>(request.getBodyUploadIds()); createTest(request); - createBodyFiles(bodyUploadIds, bodyFiles); + FileUtils.createBodyFiles(bodyUploadIds, bodyFiles); } public void update(SaveApiDefinitionRequest request, List bodyFiles) { @@ -141,27 +141,7 @@ public class ApiDefinitionService { List bodyUploadIds = request.getBodyUploadIds(); request.setBodyUploadIds(null); updateTest(request); - createBodyFiles(bodyUploadIds, bodyFiles); - } - - public void createBodyFiles(List bodyUploadIds, List bodyFiles) { - if (CollectionUtils.isNotEmpty(bodyUploadIds) && CollectionUtils.isNotEmpty(bodyFiles)) { - File testDir = new File(BODY_FILE_DIR); - if (!testDir.exists()) { - testDir.mkdirs(); - } - for (int i = 0; i < bodyUploadIds.size(); i++) { - MultipartFile item = bodyFiles.get(i); - File file = new File(BODY_FILE_DIR + "/" + bodyUploadIds.get(i) + "_" + item.getOriginalFilename()); - try (InputStream in = item.getInputStream(); OutputStream out = new FileOutputStream(file)) { - file.createNewFile(); - FileUtil.copyStream(in, out); - } catch (IOException e) { - LogUtil.error(e); - MSException.throwException(Translator.get("upload_fail")); - } - } - } + FileUtils.createBodyFiles(bodyUploadIds, bodyFiles); } public void delete(String apiId) { @@ -356,10 +336,10 @@ public class ApiDefinitionService { return request; } - /** - * 导入是插件或者postman时创建用例 - * postman考虑是否有前置脚本 - */ + /** + * 导入是插件或者postman时创建用例 + * postman考虑是否有前置脚本 + */ private void importApiCase(ApiDefinitionWithBLOBs apiDefinition, ApiTestCaseMapper apiTestCaseMapper, ApiTestImportRequest apiTestImportRequest, Boolean isInsert) { try { @@ -404,7 +384,7 @@ public class ApiDefinitionService { */ public String run(RunDefinitionRequest request, List bodyFiles) { List bodyUploadIds = new ArrayList<>(request.getBodyUploadIds()); - createBodyFiles(bodyUploadIds, bodyFiles); + FileUtils.createBodyFiles(bodyUploadIds, bodyFiles); HashTree hashTree = request.getTestElement().generateHashTree(); String runMode = ApiRunMode.DEFINITION.name(); @@ -541,7 +521,7 @@ public class ApiDefinitionService { public void editApiByParam(ApiBatchRequest request) { List ids = request.getIds(); if (request.isSelectAllDate()) { - ids = this.getAllApiIdsByFontedSelect(request.getFilters(), request.getName(), request.getModuleIds(), request.getProjectId(), request.getUnSelectIds(),request.getProtocol()); + ids = this.getAllApiIdsByFontedSelect(request.getFilters(), request.getName(), request.getModuleIds(), request.getProjectId(), request.getUnSelectIds(), request.getProtocol()); } //name在这里只是查询参数 request.setName(null); @@ -605,14 +585,14 @@ public class ApiDefinitionService { public void deleteByParams(ApiDefinitionBatchProcessingRequest request) { List apiIds = request.getDataIds(); if (request.isSelectAllDate()) { - apiIds = this.getAllApiIdsByFontedSelect(request.getFilters(), request.getName(), request.getModuleIds(), request.getProjectId(), request.getUnSelectIds(),request.getProtocol()); + apiIds = this.getAllApiIdsByFontedSelect(request.getFilters(), request.getName(), request.getModuleIds(), request.getProjectId(), request.getUnSelectIds(), request.getProtocol()); } ApiDefinitionExample example = new ApiDefinitionExample(); example.createCriteria().andIdIn(apiIds); apiDefinitionMapper.deleteByExample(example); } - private List getAllApiIdsByFontedSelect(Map> filters, String name, List moduleIds, String projectId, List unSelectIds,String protocol) { + private List getAllApiIdsByFontedSelect(Map> filters, String name, List moduleIds, String projectId, List unSelectIds, String protocol) { ApiDefinitionRequest request = new ApiDefinitionRequest(); request.setFilters(filters); request.setName(name); @@ -632,7 +612,7 @@ public class ApiDefinitionService { public void removeToGcByParams(ApiDefinitionBatchProcessingRequest request) { List apiIds = request.getDataIds(); if (request.isSelectAllDate()) { - apiIds = this.getAllApiIdsByFontedSelect(request.getFilters(), request.getName(), request.getModuleIds(), request.getProjectId(), request.getUnSelectIds(),request.getProtocol()); + apiIds = this.getAllApiIdsByFontedSelect(request.getFilters(), request.getName(), request.getModuleIds(), request.getProjectId(), request.getUnSelectIds(), request.getProtocol()); } extApiDefinitionMapper.removeToGc(apiIds); } diff --git a/backend/src/main/java/io/metersphere/api/service/ApiTestCaseService.java b/backend/src/main/java/io/metersphere/api/service/ApiTestCaseService.java index 6ccaf75c36..b9e00e9c01 100644 --- a/backend/src/main/java/io/metersphere/api/service/ApiTestCaseService.java +++ b/backend/src/main/java/io/metersphere/api/service/ApiTestCaseService.java @@ -38,7 +38,7 @@ import org.apache.jorphan.collections.ListedHashTree; import org.aspectj.util.FileUtil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; +import org.apache.commons.collections.CollectionUtils; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; @@ -72,7 +72,7 @@ public class ApiTestCaseService { @Resource private ApiDefinitionExecResultMapper apiDefinitionExecResultMapper; @Resource - TestPlanApiCaseMapper testPlanApiCaseMapper; + private TestPlanApiCaseMapper testPlanApiCaseMapper; private static final String BODY_FILE_DIR = "/opt/metersphere/data/body"; @@ -136,7 +136,7 @@ public class ApiTestCaseService { public ApiTestCase create(SaveApiTestCaseRequest request, List bodyFiles) { List bodyUploadIds = new ArrayList<>(request.getBodyUploadIds()); ApiTestCase test = createTest(request); - createBodyFiles(test, bodyUploadIds, bodyFiles); + FileUtils.createBodyFiles(bodyUploadIds, bodyFiles); return test; } @@ -152,31 +152,10 @@ public class ApiTestCaseService { List bodyUploadIds = new ArrayList<>(request.getBodyUploadIds()); request.setBodyUploadIds(null); ApiTestCase test = updateTest(request); - createBodyFiles(test, bodyUploadIds, bodyFiles); + FileUtils.createBodyFiles(bodyUploadIds, bodyFiles); return test; } - private void createBodyFiles(ApiTestCase test, List bodyUploadIds, List bodyFiles) { - if (bodyUploadIds.size() > 0) { - String dir = BODY_FILE_DIR + "/" + test.getId(); - File testDir = new File(dir); - if (!testDir.exists()) { - testDir.mkdirs(); - } - for (int i = 0; i < bodyUploadIds.size(); i++) { - MultipartFile item = bodyFiles.get(i); - File file = new File(testDir + "/" + bodyUploadIds.get(i) + "_" + item.getOriginalFilename()); - try (InputStream in = item.getInputStream(); OutputStream out = new FileOutputStream(file)) { - file.createNewFile(); - FileUtil.copyStream(in, out); - } catch (IOException e) { - LogUtil.error(e); - MSException.throwException(Translator.get("upload_fail")); - } - } - } - } - public void delete(String testId) { extTestPlanTestCaseMapper.deleteByTestCaseID(testId); deleteFileByTestId(testId); @@ -279,19 +258,14 @@ public class ApiTestCaseService { } } - private void saveFile(String testId, MultipartFile file) { - final FileMetadata fileMetadata = fileService.saveFile(file); - ApiTestFile apiTestFile = new ApiTestFile(); - apiTestFile.setTestId(testId); - apiTestFile.setFileId(fileMetadata.getId()); - apiTestFileMapper.insert(apiTestFile); - } private void deleteFileByTestId(String testId) { ApiTestFileExample ApiTestFileExample = new ApiTestFileExample(); ApiTestFileExample.createCriteria().andTestIdEqualTo(testId); final List ApiTestFiles = apiTestFileMapper.selectByExample(ApiTestFileExample); - apiTestFileMapper.deleteByExample(ApiTestFileExample); + if (CollectionUtils.isNotEmpty(ApiTestFiles)) { + apiTestFileMapper.deleteByExample(ApiTestFileExample); + } if (!CollectionUtils.isEmpty(ApiTestFiles)) { final List fileIds = ApiTestFiles.stream().map(ApiTestFile::getFileId).collect(Collectors.toList()); diff --git a/backend/src/main/java/io/metersphere/commons/utils/FileUtils.java b/backend/src/main/java/io/metersphere/commons/utils/FileUtils.java new file mode 100644 index 0000000000..01830daeab --- /dev/null +++ b/backend/src/main/java/io/metersphere/commons/utils/FileUtils.java @@ -0,0 +1,34 @@ +package io.metersphere.commons.utils; + +import io.metersphere.commons.exception.MSException; +import io.metersphere.i18n.Translator; +import org.apache.commons.collections.CollectionUtils; +import org.aspectj.util.FileUtil; +import org.springframework.web.multipart.MultipartFile; + +import java.io.*; +import java.util.List; + +public class FileUtils { + private static final String BODY_FILE_DIR = "/opt/metersphere/data/body"; + + public static void createBodyFiles(List bodyUploadIds, List bodyFiles) { + if (CollectionUtils.isNotEmpty(bodyUploadIds) && CollectionUtils.isNotEmpty(bodyFiles)) { + File testDir = new File(BODY_FILE_DIR); + if (!testDir.exists()) { + testDir.mkdirs(); + } + for (int i = 0; i < bodyUploadIds.size(); i++) { + MultipartFile item = bodyFiles.get(i); + File file = new File(BODY_FILE_DIR + "/" + bodyUploadIds.get(i) + "_" + item.getOriginalFilename()); + try (InputStream in = item.getInputStream(); OutputStream out = new FileOutputStream(file)) { + file.createNewFile(); + FileUtil.copyStream(in, out); + } catch (IOException e) { + LogUtil.error(e); + MSException.throwException(Translator.get("upload_fail")); + } + } + } + } +}