下载接口修改
This commit is contained in:
parent
d22f86658f
commit
f7e0f1efe0
@ -2,6 +2,7 @@ package cd.casic.ci.api;
|
|||||||
|
|
||||||
|
|
||||||
import cd.casic.ci.process.dto.req.target.*;
|
import cd.casic.ci.process.dto.req.target.*;
|
||||||
|
import cd.casic.ci.process.dto.resp.sftpFile.FileBase64DownloadResp;
|
||||||
import cd.casic.ci.process.dto.resp.target.TargetManagerResp;
|
import cd.casic.ci.process.dto.resp.target.TargetManagerResp;
|
||||||
import cd.casic.ci.process.dto.resp.target.TargetVersionResp;
|
import cd.casic.ci.process.dto.resp.target.TargetVersionResp;
|
||||||
import cd.casic.ci.process.process.dataObject.base.BaseIdReq;
|
import cd.casic.ci.process.process.dataObject.base.BaseIdReq;
|
||||||
@ -138,8 +139,8 @@ public class TargetController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping(path="/zipDownload")
|
@PostMapping(path="/zipDownload")
|
||||||
public void zipDownload(@RequestBody @Valid BaseIdReq req, HttpServletResponse response){
|
public CommonResult<FileBase64DownloadResp> zipDownload(@RequestBody @Valid BaseIdReq req, HttpServletResponse response){
|
||||||
targetManagerService.zipDownload(req,response);
|
return CommonResult.success(targetManagerService.zipDownload(req, response));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping(path = "/uploadFolder")
|
@PostMapping(path = "/uploadFolder")
|
||||||
|
@ -3,21 +3,17 @@ package cd.casic.ci.api;
|
|||||||
|
|
||||||
import cd.casic.ci.process.dto.req.testCase.TestCaseManagerQueryReq;
|
import cd.casic.ci.process.dto.req.testCase.TestCaseManagerQueryReq;
|
||||||
import cd.casic.ci.process.dto.req.testCase.TestCaseManagerReq;
|
import cd.casic.ci.process.dto.req.testCase.TestCaseManagerReq;
|
||||||
import cd.casic.ci.process.dto.resp.testCase.TestCaseManagerDownloadResp;
|
import cd.casic.ci.process.dto.resp.sftpFile.FileBase64DownloadResp;
|
||||||
import cd.casic.ci.process.dto.resp.testCase.TestCaseManagerResp;
|
import cd.casic.ci.process.dto.resp.testCase.TestCaseManagerResp;
|
||||||
import cd.casic.ci.process.process.dataObject.base.BaseIdReq;
|
import cd.casic.ci.process.process.dataObject.base.BaseIdReq;
|
||||||
import cd.casic.ci.process.process.service.testCase.TestCaseManagerService;
|
import cd.casic.ci.process.process.service.testCase.TestCaseManagerService;
|
||||||
import cd.casic.framework.commons.pojo.CommonResult;
|
import cd.casic.framework.commons.pojo.CommonResult;
|
||||||
import cd.casic.framework.commons.pojo.PageResult;
|
import cd.casic.framework.commons.pojo.PageResult;
|
||||||
import com.jcraft.jsch.JSchException;
|
|
||||||
import com.jcraft.jsch.SftpException;
|
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -86,7 +82,7 @@ public class TestCaseManagerController {
|
|||||||
return CommonResult.success(resp);
|
return CommonResult.success(resp);
|
||||||
}
|
}
|
||||||
@GetMapping("/downLoadById")
|
@GetMapping("/downLoadById")
|
||||||
public CommonResult<TestCaseManagerDownloadResp> downLoadByManagerId(@RequestParam String managerId){
|
public CommonResult<FileBase64DownloadResp> downLoadByManagerId(@RequestParam String managerId){
|
||||||
return CommonResult.success(testCaseManagerService.downLoadById(managerId));
|
return CommonResult.success(testCaseManagerService.downLoadById(managerId));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,9 @@
|
|||||||
|
package cd.casic.ci.process.dto.resp.sftpFile;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class FileBase64DownloadResp {
|
||||||
|
private String fileName;
|
||||||
|
private String file;
|
||||||
|
}
|
@ -1,9 +0,0 @@
|
|||||||
package cd.casic.ci.process.dto.resp.testCase;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
@Data
|
|
||||||
public class TestCaseManagerDownloadResp {
|
|
||||||
private String fileName;
|
|
||||||
private String file;
|
|
||||||
}
|
|
@ -4,6 +4,7 @@ package cd.casic.ci.process.process.service.sftpFile;
|
|||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import java.io.OutputStream;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -20,4 +21,5 @@ public interface SftpFileService{
|
|||||||
void downloadFile(String remoteFilePath, HttpServletResponse response);
|
void downloadFile(String remoteFilePath, HttpServletResponse response);
|
||||||
|
|
||||||
void downloadFilesAsZip(List<String> remoteFilePaths, String zipFileName, HttpServletResponse response);
|
void downloadFilesAsZip(List<String> remoteFilePaths, String zipFileName, HttpServletResponse response);
|
||||||
|
public void downloadFilesAsZip(List<String> remoteFilePaths, OutputStream outputStream);
|
||||||
}
|
}
|
||||||
|
@ -94,7 +94,32 @@ public class SftpFileServiceImpl implements SftpFileService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void downloadFilesAsZip(List<String> remoteFilePaths, OutputStream outputStream) {
|
||||||
|
try (SftpClientUtils client = new SftpClientUtils(fileUploadProperties.getRemoteHost(),
|
||||||
|
fileUploadProperties.getRemotePort(),
|
||||||
|
fileUploadProperties.getUsername(),
|
||||||
|
fileUploadProperties.getPassword(),
|
||||||
|
fileUploadProperties.getSshKeyPath())) {
|
||||||
|
|
||||||
|
try (ZipOutputStream zipOut = new ZipOutputStream(outputStream)) {
|
||||||
|
for (String remoteFilePath : remoteFilePaths) {
|
||||||
|
String fileName = remoteFilePath.substring(remoteFilePath.lastIndexOf("/") + 1);
|
||||||
|
try (InputStream in = client.downloadFileToStream(remoteFilePath)) {
|
||||||
|
zipOut.putNextEntry(new ZipEntry(fileName));
|
||||||
|
byte[] buffer = new byte[1024];
|
||||||
|
int bytesRead;
|
||||||
|
while ((bytesRead = in.read(buffer)) > 0) {
|
||||||
|
zipOut.write(buffer, 0, bytesRead);
|
||||||
|
}
|
||||||
|
zipOut.closeEntry();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException("批量下载并打包 ZIP 失败: " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private String saveTempFile(MultipartFile file) {
|
private String saveTempFile(MultipartFile file) {
|
||||||
try {
|
try {
|
||||||
|
@ -2,6 +2,7 @@ package cd.casic.ci.process.process.service.target;
|
|||||||
|
|
||||||
|
|
||||||
import cd.casic.ci.process.dto.req.target.*;
|
import cd.casic.ci.process.dto.req.target.*;
|
||||||
|
import cd.casic.ci.process.dto.resp.sftpFile.FileBase64DownloadResp;
|
||||||
import cd.casic.ci.process.dto.resp.target.TargetManagerResp;
|
import cd.casic.ci.process.dto.resp.target.TargetManagerResp;
|
||||||
import cd.casic.ci.process.process.dataObject.base.BaseIdReq;
|
import cd.casic.ci.process.process.dataObject.base.BaseIdReq;
|
||||||
import cd.casic.ci.process.process.dataObject.target.TargetManager;
|
import cd.casic.ci.process.process.dataObject.target.TargetManager;
|
||||||
@ -42,5 +43,5 @@ public interface TargetManagerService extends IService<TargetManager> {
|
|||||||
|
|
||||||
void fileDownload(@Valid BaseIdReq req, HttpServletResponse response);
|
void fileDownload(@Valid BaseIdReq req, HttpServletResponse response);
|
||||||
|
|
||||||
void zipDownload(@Valid BaseIdReq req, HttpServletResponse response);
|
FileBase64DownloadResp zipDownload(@Valid BaseIdReq req, HttpServletResponse response);
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package cd.casic.ci.process.process.service.target.impl;
|
|||||||
|
|
||||||
|
|
||||||
import cd.casic.ci.process.dto.req.target.*;
|
import cd.casic.ci.process.dto.req.target.*;
|
||||||
|
import cd.casic.ci.process.dto.resp.sftpFile.FileBase64DownloadResp;
|
||||||
import cd.casic.ci.process.dto.resp.target.TargetManagerResp;
|
import cd.casic.ci.process.dto.resp.target.TargetManagerResp;
|
||||||
import cd.casic.ci.process.dto.resp.target.TargetVersionResp;
|
import cd.casic.ci.process.dto.resp.target.TargetVersionResp;
|
||||||
import cd.casic.ci.process.process.converter.TargetConverter;
|
import cd.casic.ci.process.process.converter.TargetConverter;
|
||||||
@ -37,10 +38,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author HopeLi
|
* @author HopeLi
|
||||||
@ -296,7 +294,7 @@ public class TargetManagerServiceImpl extends ServiceImpl<TargetManagerDao, Targ
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void zipDownload(BaseIdReq req, HttpServletResponse response){
|
public FileBase64DownloadResp zipDownload(BaseIdReq req, HttpServletResponse response){
|
||||||
if (ObjectUtils.isEmpty(req.getId())){
|
if (ObjectUtils.isEmpty(req.getId())){
|
||||||
throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"目标管理id不能为空");
|
throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"目标管理id不能为空");
|
||||||
}
|
}
|
||||||
@ -315,7 +313,15 @@ public class TargetManagerServiceImpl extends ServiceImpl<TargetManagerDao, Targ
|
|||||||
}
|
}
|
||||||
|
|
||||||
List<String> filePathList = targetVersionList.stream().map(TargetVersion::getFilePath).toList();
|
List<String> filePathList = targetVersionList.stream().map(TargetVersion::getFilePath).toList();
|
||||||
sftpFileService.downloadFilesAsZip(filePathList,targetManager.getTargetName(),response);
|
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
||||||
|
String targetName = targetManager.getTargetName();
|
||||||
|
sftpFileService.downloadFilesAsZip(filePathList,bos);
|
||||||
|
byte[] byteArray = bos.toByteArray();
|
||||||
|
String file = Base64.getEncoder().encodeToString(byteArray);
|
||||||
|
FileBase64DownloadResp resp = new FileBase64DownloadResp();
|
||||||
|
resp.setFile(file);
|
||||||
|
resp.setFileName(targetName);
|
||||||
|
return resp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,17 +3,13 @@ package cd.casic.ci.process.process.service.testCase;
|
|||||||
|
|
||||||
import cd.casic.ci.process.dto.req.testCase.TestCaseManagerQueryReq;
|
import cd.casic.ci.process.dto.req.testCase.TestCaseManagerQueryReq;
|
||||||
import cd.casic.ci.process.dto.req.testCase.TestCaseManagerReq;
|
import cd.casic.ci.process.dto.req.testCase.TestCaseManagerReq;
|
||||||
import cd.casic.ci.process.dto.resp.testCase.TestCaseManagerDownloadResp;
|
import cd.casic.ci.process.dto.resp.sftpFile.FileBase64DownloadResp;
|
||||||
import cd.casic.ci.process.dto.resp.testCase.TestCaseManagerResp;
|
import cd.casic.ci.process.dto.resp.testCase.TestCaseManagerResp;
|
||||||
import cd.casic.ci.process.process.dataObject.testCase.TestCaseManager;
|
import cd.casic.ci.process.process.dataObject.testCase.TestCaseManager;
|
||||||
import cd.casic.framework.commons.pojo.PageResult;
|
import cd.casic.framework.commons.pojo.PageResult;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.jcraft.jsch.JSchException;
|
|
||||||
import com.jcraft.jsch.SftpException;
|
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -37,6 +33,6 @@ public interface TestCaseManagerService extends IService<TestCaseManager> {
|
|||||||
|
|
||||||
TestCaseManagerResp findById(String id);
|
TestCaseManagerResp findById(String id);
|
||||||
|
|
||||||
TestCaseManagerDownloadResp downLoadById(String id );
|
FileBase64DownloadResp downLoadById(String id );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ package cd.casic.ci.process.process.service.testCase.impl;
|
|||||||
import cd.casic.ci.process.dto.req.testCase.TestCaseManagerQueryReq;
|
import cd.casic.ci.process.dto.req.testCase.TestCaseManagerQueryReq;
|
||||||
import cd.casic.ci.process.dto.req.testCase.TestCaseManagerReq;
|
import cd.casic.ci.process.dto.req.testCase.TestCaseManagerReq;
|
||||||
import cd.casic.ci.process.dto.resp.testCase.TestCaseInfoResp;
|
import cd.casic.ci.process.dto.resp.testCase.TestCaseInfoResp;
|
||||||
import cd.casic.ci.process.dto.resp.testCase.TestCaseManagerDownloadResp;
|
import cd.casic.ci.process.dto.resp.sftpFile.FileBase64DownloadResp;
|
||||||
import cd.casic.ci.process.dto.resp.testCase.TestCaseManagerResp;
|
import cd.casic.ci.process.dto.resp.testCase.TestCaseManagerResp;
|
||||||
import cd.casic.ci.process.process.converter.TestCaseManagerConverter;
|
import cd.casic.ci.process.process.converter.TestCaseManagerConverter;
|
||||||
import cd.casic.ci.process.process.dao.testCase.TestCaseInfoDao;
|
import cd.casic.ci.process.process.dao.testCase.TestCaseInfoDao;
|
||||||
@ -26,7 +26,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.jcraft.jsch.*;
|
import com.jcraft.jsch.*;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@ -151,7 +150,7 @@ public class TestCaseManagerServiceImpl extends ServiceImpl<TestCaseManagerDao,
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TestCaseManagerDownloadResp downLoadById(String id) {
|
public FileBase64DownloadResp downLoadById(String id) {
|
||||||
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
||||||
try (ZipOutputStream zipOutputStream = new ZipOutputStream(bos)){
|
try (ZipOutputStream zipOutputStream = new ZipOutputStream(bos)){
|
||||||
JSch jsch = new JSch();
|
JSch jsch = new JSch();
|
||||||
@ -182,7 +181,7 @@ public class TestCaseManagerServiceImpl extends ServiceImpl<TestCaseManagerDao,
|
|||||||
}
|
}
|
||||||
byte[] byteArray = bos.toByteArray();
|
byte[] byteArray = bos.toByteArray();
|
||||||
String file = Base64.getEncoder().encodeToString(byteArray);
|
String file = Base64.getEncoder().encodeToString(byteArray);
|
||||||
TestCaseManagerDownloadResp testCaseManagerDownloadResp = new TestCaseManagerDownloadResp();
|
FileBase64DownloadResp testCaseManagerDownloadResp = new FileBase64DownloadResp();
|
||||||
testCaseManagerDownloadResp.setFile(file);
|
testCaseManagerDownloadResp.setFile(file);
|
||||||
testCaseManagerDownloadResp.setFileName("SEED.zip");
|
testCaseManagerDownloadResp.setFileName("SEED.zip");
|
||||||
return testCaseManagerDownloadResp;
|
return testCaseManagerDownloadResp;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user