Commit 2ae7be4d by zhangxingmin

push

parent 35a8bfc3
...@@ -25,7 +25,7 @@ public class ApiPdfController implements ApiPdfFeignClient { ...@@ -25,7 +25,7 @@ public class ApiPdfController implements ApiPdfFeignClient {
private ApiPdfService apiPdfService; private ApiPdfService apiPdfService;
/** /**
* 根据文件模板填充数据生成PDF * 根据文件模板填充数据生成PDF ****
* @param request * @param request
* @return * @return
*/ */
......
...@@ -58,16 +58,25 @@ public class ApiExcelServiceImpl implements ApiExcelService { ...@@ -58,16 +58,25 @@ public class ApiExcelServiceImpl implements ApiExcelService {
// 根据项目ID获取服务商信息 // 根据项目ID获取服务商信息
OssProvider provider = ossProviderService.getProviderByProjectId(request.getProjectBizId()); OssProvider provider = ossProviderService.getProviderByProjectId(request.getProjectBizId());
if (provider == null) { if (provider == null) {
log.error("未找到项目对应的OSS服务商,projectBizId={}", request.getProjectBizId()); throw new BusinessException("未找到项目对应的OSS提供商,projectBizId=" + request.getProjectBizId());
return Result.fail("未找到对应的OSS服务商配置"); }
OSS ossClient = null;
try {
ossClient = ossClientFactory.createOssClient(provider);
String url = appointmentExcelService.exportAppointment(request.getData(),
request.getTemplateType(),
request.getAppointmentBizId(),
ossClient,provider);
response.setUrl(url);
return Result.success(response);
}catch (Exception e) {
log.error("导出excel-预约信息异常:{}",e.getMessage());
throw new BusinessException("导出excel-预约信息异常");
}finally {
if (ossClient != null) {
ossClient.shutdown();
}
} }
OSS tempClient = ossClientFactory.createOssClient(provider);
String url = appointmentExcelService.exportAppointment(request.getData(),
request.getTemplateType(),
request.getAppointmentBizId(),
request.getProjectBizId());
response.setUrl(url);
return Result.success(response);
} }
/** /**
......
package com.yd.oss.api.service.impl; package com.yd.oss.api.service.impl;
import com.aliyun.oss.OSS;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.oss.api.service.ApiMaterialService; import com.yd.oss.api.service.ApiMaterialService;
import com.yd.oss.feign.dto.ApiMaterialDto; import com.yd.oss.feign.dto.ApiMaterialDto;
...@@ -7,11 +9,14 @@ import com.yd.oss.feign.request.ApiMaterialDownloadRequest; ...@@ -7,11 +9,14 @@ import com.yd.oss.feign.request.ApiMaterialDownloadRequest;
import com.yd.oss.feign.request.ApiMaterialListRequest; import com.yd.oss.feign.request.ApiMaterialListRequest;
import com.yd.oss.feign.response.ApiMaterialDownloadResponse; import com.yd.oss.feign.response.ApiMaterialDownloadResponse;
import com.yd.oss.feign.response.ApiMaterialListResponse; import com.yd.oss.feign.response.ApiMaterialListResponse;
import com.yd.oss.service.config.OssClientFactory;
import com.yd.oss.service.dto.MaterialDto; import com.yd.oss.service.dto.MaterialDto;
import com.yd.oss.service.model.Material; import com.yd.oss.service.model.Material;
import com.yd.oss.service.model.OssProvider;
import com.yd.oss.service.model.RelObjectMaterial; import com.yd.oss.service.model.RelObjectMaterial;
import com.yd.oss.service.service.CompressedFileService; import com.yd.oss.service.service.CompressedFileService;
import com.yd.oss.service.service.IMaterialService; import com.yd.oss.service.service.IMaterialService;
import com.yd.oss.service.service.IOssProviderService;
import com.yd.oss.service.service.IRelObjectMaterialService; import com.yd.oss.service.service.IRelObjectMaterialService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -35,6 +40,12 @@ public class ApiMaterialServiceImpl implements ApiMaterialService { ...@@ -35,6 +40,12 @@ public class ApiMaterialServiceImpl implements ApiMaterialService {
@Autowired @Autowired
private IRelObjectMaterialService iRelObjectMaterialService; private IRelObjectMaterialService iRelObjectMaterialService;
@Autowired
private IOssProviderService ossProviderService;
@Autowired
private OssClientFactory ossClientFactory;
/** /**
* 列表查询-材料基础信息 * 列表查询-材料基础信息
* @param request * @param request
...@@ -61,18 +72,21 @@ public class ApiMaterialServiceImpl implements ApiMaterialService { ...@@ -61,18 +72,21 @@ public class ApiMaterialServiceImpl implements ApiMaterialService {
*/ */
@Override @Override
public Result<ApiMaterialDownloadResponse> downloadCompressedFile(ApiMaterialDownloadRequest request) { public Result<ApiMaterialDownloadResponse> downloadCompressedFile(ApiMaterialDownloadRequest request) {
// if (StringUtils.isNotBlank(request.getObjectBizId())) { // 获取提供商
// List<ApiMaterialDto> apiMaterialDtoList = new ArrayList<>(); OssProvider provider = ossProviderService.getProviderByProjectId(request.getProjectBizId());
// List<RelObjectMaterial> relObjectMaterialList = iRelObjectMaterialService.queryList(request.getObjectBizId()); if (provider == null) {
// if (!CollectionUtils.isEmpty(relObjectMaterialList)) { throw new BusinessException("未找到项目对应的OSS提供商,projectBizId=" + request.getProjectBizId());
// List<String> materialBizIdList = relObjectMaterialList.stream().map(RelObjectMaterial::getMaterialBizId).collect(Collectors.toList()); }
//
// for (RelObjectMaterial relObjectMaterial : relObjectMaterialList) { OSS ossClient = null;
// try {
// } ossClient = ossClientFactory.createOssClient(provider);
// } return compressedFileService.downloadCompressedFile(request,ossClient,provider);
// } } finally {
return compressedFileService.downloadCompressedFile(request); if (ossClient != null) {
ossClient.shutdown();
}
}
} }
......
package com.yd.oss.api.service.impl; package com.yd.oss.api.service.impl;
import com.aliyun.oss.OSS;
import com.yd.common.exception.BusinessException; import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.oss.api.service.ApiPdfService; import com.yd.oss.api.service.ApiPdfService;
import com.yd.oss.feign.request.ApiGeneratePdfRequest; import com.yd.oss.feign.request.ApiGeneratePdfRequest;
import com.yd.oss.feign.response.ApiGeneratePdfResponse; import com.yd.oss.feign.response.ApiGeneratePdfResponse;
import com.yd.oss.service.config.OssClientFactory;
import com.yd.oss.service.model.OssProvider;
import com.yd.oss.service.service.IOssProviderService;
import com.yd.oss.service.service.PdfService; import com.yd.oss.service.service.PdfService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -18,6 +22,12 @@ public class ApiPdfServiceImpl implements ApiPdfService { ...@@ -18,6 +22,12 @@ public class ApiPdfServiceImpl implements ApiPdfService {
@Autowired @Autowired
private PdfService pdfService; private PdfService pdfService;
@Autowired
private IOssProviderService ossProviderService;
@Autowired
private OssClientFactory ossClientFactory;
/** /**
* 根据文件模板填充数据生成PDF * 根据文件模板填充数据生成PDF
* @param request * @param request
...@@ -26,13 +36,29 @@ public class ApiPdfServiceImpl implements ApiPdfService { ...@@ -26,13 +36,29 @@ public class ApiPdfServiceImpl implements ApiPdfService {
@Override @Override
public Result<ApiGeneratePdfResponse> generatePDF(ApiGeneratePdfRequest request) { public Result<ApiGeneratePdfResponse> generatePDF(ApiGeneratePdfRequest request) {
ApiGeneratePdfResponse response = new ApiGeneratePdfResponse(); ApiGeneratePdfResponse response = new ApiGeneratePdfResponse();
// 根据项目ID获取OSS提供商
OssProvider provider = ossProviderService.getProviderByProjectId(request.getProjectBizId());
if (provider == null) {
throw new BusinessException("未找到项目对应的OSS提供商,projectBizId=" + request.getProjectBizId());
}
OSS ossClient = null;
try { try {
String url = pdfService.generatePDF(request.getDataObject(),request.getObjectId(),request.getTemplateType(),request.getCustomFileName()); //根据提供商创建OSS
ossClient = ossClientFactory.createOssClient(provider);
String url = pdfService.generatePDF(request.getDataObject(),
request.getObjectId(),
request.getTemplateType(),
request.getCustomFileName(),
provider,ossClient);
response.setUrl(url); response.setUrl(url);
return Result.success(response); return Result.success(response);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
throw new BusinessException("生成PDF异常"); throw new BusinessException("生成PDF异常");
}finally {
if (ossClient != null) {
ossClient.shutdown();
}
} }
} }
} }
...@@ -24,4 +24,9 @@ public class ApiGeneratePdfRequest<T> { ...@@ -24,4 +24,9 @@ public class ApiGeneratePdfRequest<T> {
* 自定义文件名(有值用自定义文件名上传,无值用默认生成的规则文件名) * 自定义文件名(有值用自定义文件名上传,无值用默认生成的规则文件名)
*/ */
private String customFileName; private String customFileName;
/**
* 项目ID
*/
private String projectBizId;
} }
...@@ -8,6 +8,11 @@ import java.util.List; ...@@ -8,6 +8,11 @@ import java.util.List;
public class ApiMaterialDownloadRequest { public class ApiMaterialDownloadRequest {
/** /**
* 项目ID
*/
private String projectBizId;
/**
* 对象名(包名) * 对象名(包名)
*/ */
private String objectName; private String objectName;
......
package com.yd.oss.service.service; package com.yd.oss.service.service;
import com.aliyun.oss.OSS;
import com.yd.oss.service.model.OssProvider;
import java.util.Map; import java.util.Map;
public interface AppointmentExcelService { public interface AppointmentExcelService {
...@@ -7,5 +10,5 @@ public interface AppointmentExcelService { ...@@ -7,5 +10,5 @@ public interface AppointmentExcelService {
String exportAppointment(Map<String, Object> data, String exportAppointment(Map<String, Object> data,
String templateType, String templateType,
String appointmentBizId, String appointmentBizId,
String projectBizId); OSS ossClient, OssProvider provider);
} }
package com.yd.oss.service.service; package com.yd.oss.service.service;
import com.aliyun.oss.OSS;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.oss.feign.request.ApiMaterialDownloadRequest; import com.yd.oss.feign.request.ApiMaterialDownloadRequest;
import com.yd.oss.feign.response.ApiMaterialDownloadResponse; import com.yd.oss.feign.response.ApiMaterialDownloadResponse;
import com.yd.oss.service.model.OssProvider;
public interface CompressedFileService { public interface CompressedFileService {
Result<ApiMaterialDownloadResponse> downloadCompressedFile(ApiMaterialDownloadRequest request); Result<ApiMaterialDownloadResponse> downloadCompressedFile(ApiMaterialDownloadRequest request, OSS ossClient, OssProvider provider);
} }
package com.yd.oss.service.service; package com.yd.oss.service.service;
import com.aliyun.oss.OSS;
import com.yd.oss.service.model.OssProvider;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Workbook;
import java.io.File; import java.io.File;
...@@ -7,7 +9,7 @@ import java.io.IOException; ...@@ -7,7 +9,7 @@ import java.io.IOException;
public interface ExcelService { public interface ExcelService {
File downloadTemplateToTempFile(String ossObjectKey) throws IOException; File downloadTemplateToTempFile(String ossObjectKey, OSS ossClient, OssProvider provider) throws IOException;
File saveWorkbookToTempFile(Workbook workbook) throws IOException; File saveWorkbookToTempFile(Workbook workbook) throws IOException;
} }
...@@ -78,9 +78,9 @@ public interface OssService { ...@@ -78,9 +78,9 @@ public interface OssService {
// 获取上传结果(包含文件信息和访问URL) // 获取上传结果(包含文件信息和访问URL)
UploadResult getUploadResult(String fileKey, Duration expiration); UploadResult getUploadResult(String fileKey, Duration expiration);
String upload(byte[] content, String fileName); String upload(byte[] content, String fileName,OSS ossClient, OssProvider provider);
String upload(InputStream inputStream, String fileName); // String upload(InputStream inputStream, String fileName);
// 批量上传文件 // 批量上传文件
com.yd.oss.feign.response.ApiBatchUploadResponse batchUploadFiles( com.yd.oss.feign.response.ApiBatchUploadResponse batchUploadFiles(
......
package com.yd.oss.service.service; package com.yd.oss.service.service;
import com.aliyun.oss.OSS;
import com.yd.oss.service.model.OssProvider;
import java.io.IOException; import java.io.IOException;
public interface PdfService<T> { public interface PdfService<T> {
String generatePDF(T dataObject,String objectId, String templateType,String customFileName) throws IOException; String generatePDF(T dataObject, String objectId, String templateType, String customFileName, OssProvider provider, OSS ossClient) throws IOException;
} }
...@@ -618,13 +618,13 @@ public class AliYunOssServiceImpl implements OssService { ...@@ -618,13 +618,13 @@ public class AliYunOssServiceImpl implements OssService {
} }
/** /**
* 上传字节数组并设置公共读(示例方法) * 上传字节数组并设置公共读
*/ */
public String upload(byte[] content, String fileName) { public String upload(byte[] content, String fileName,OSS ossClient, OssProvider provider) {
OssProvider defaultProvider = getDefaultProvider(); OssProvider defaultProvider = getDefaultProvider();
OSS ossClient = null; // OSS ossClient = null;
try { try {
ossClient = ossClientFactory.createOssClient(defaultProvider); // ossClient = ossClientFactory.createOssClient(defaultProvider);
String objectName = "appointment/excel/" + UUID.randomUUID() + "/" + fileName; String objectName = "appointment/excel/" + UUID.randomUUID() + "/" + fileName;
PutObjectRequest putObjectRequest = new PutObjectRequest( PutObjectRequest putObjectRequest = new PutObjectRequest(
defaultProvider.getBucketName(), objectName, new ByteArrayInputStream(content)); defaultProvider.getBucketName(), objectName, new ByteArrayInputStream(content));
...@@ -641,23 +641,23 @@ public class AliYunOssServiceImpl implements OssService { ...@@ -641,23 +641,23 @@ public class AliYunOssServiceImpl implements OssService {
/** /**
* 上传输入流并设置公共读 * 上传输入流并设置公共读
*/ */
public String upload(InputStream inputStream, String fileName) { // public String upload(InputStream inputStream, String fileName) {
OssProvider defaultProvider = getDefaultProvider(); // OssProvider defaultProvider = getDefaultProvider();
OSS ossClient = null; // OSS ossClient = null;
try { // try {
ossClient = ossClientFactory.createOssClient(defaultProvider); // ossClient = ossClientFactory.createOssClient(defaultProvider);
String objectName = "appointment/excel/" + UUID.randomUUID() + "/" + fileName; // String objectName = "appointment/excel/" + UUID.randomUUID() + "/" + fileName;
PutObjectRequest putObjectRequest = new PutObjectRequest( // PutObjectRequest putObjectRequest = new PutObjectRequest(
defaultProvider.getBucketName(), objectName, inputStream); // defaultProvider.getBucketName(), objectName, inputStream);
ossClient.putObject(putObjectRequest); // ossClient.putObject(putObjectRequest);
ossClient.setObjectAcl(defaultProvider.getBucketName(), objectName, CannedAccessControlList.PublicRead); // ossClient.setObjectAcl(defaultProvider.getBucketName(), objectName, CannedAccessControlList.PublicRead);
return "https://" + defaultProvider.getBucketName() + "." + defaultProvider.getEndpoint() + "/" + objectName; // return "https://" + defaultProvider.getBucketName() + "." + defaultProvider.getEndpoint() + "/" + objectName;
} finally { // } finally {
if (ossClient != null) { // if (ossClient != null) {
ossClient.shutdown(); // ossClient.shutdown();
} // }
} // }
} // }
/** /**
* 批量上传文件 * 批量上传文件
......
...@@ -2,9 +2,11 @@ package com.yd.oss.service.service.impl; ...@@ -2,9 +2,11 @@ package com.yd.oss.service.service.impl;
import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
import com.aliyun.oss.OSS;
import com.yd.common.utils.CommonUtil; import com.yd.common.utils.CommonUtil;
import com.yd.common.utils.DateUtil; import com.yd.common.utils.DateUtil;
import com.yd.oss.service.dto.FileProdDto; import com.yd.oss.service.dto.FileProdDto;
import com.yd.oss.service.model.OssProvider;
import com.yd.oss.service.service.AppointmentExcelService; import com.yd.oss.service.service.AppointmentExcelService;
import com.yd.oss.service.service.ExcelService; import com.yd.oss.service.service.ExcelService;
import com.yd.oss.service.service.IFileTemplateService; import com.yd.oss.service.service.IFileTemplateService;
...@@ -40,13 +42,13 @@ public class AppointmentExcelServiceImpl implements AppointmentExcelService { ...@@ -40,13 +42,13 @@ public class AppointmentExcelServiceImpl implements AppointmentExcelService {
* @param fileName * @param fileName
* @return * @return
*/ */
public String exportAndUploadToOss(Map<String, Object> data, String ossObjectKey, String fileName,String projectBizId) { public String exportAndUploadToOss(Map<String, Object> data, String ossObjectKey, String fileName,OSS ossClient, OssProvider provider) {
File tempFile = null; File tempFile = null;
File processedFile = null; File processedFile = null;
try { try {
// 1. 从OSS下载模板到临时文件 // 1. 从OSS下载模板到临时文件
tempFile = excelService.downloadTemplateToTempFile(ossObjectKey); tempFile = excelService.downloadTemplateToTempFile(ossObjectKey,ossClient,provider);
// 2. 使用临时文件路径创建TemplateExportParams // 2. 使用临时文件路径创建TemplateExportParams
TemplateExportParams params = new TemplateExportParams(tempFile.getAbsolutePath()); TemplateExportParams params = new TemplateExportParams(tempFile.getAbsolutePath());
...@@ -69,7 +71,7 @@ public class AppointmentExcelServiceImpl implements AppointmentExcelService { ...@@ -69,7 +71,7 @@ public class AppointmentExcelServiceImpl implements AppointmentExcelService {
byte[] excelBytes = outputStream.toByteArray(); byte[] excelBytes = outputStream.toByteArray();
// 7. 上传到OSS // 7. 上传到OSS
String ossUrl = ossService.upload(excelBytes, fileName); String ossUrl = ossService.upload(excelBytes, fileName,ossClient,provider);
// 8. 关闭资源 // 8. 关闭资源
outputStream.close(); outputStream.close();
...@@ -302,12 +304,12 @@ public class AppointmentExcelServiceImpl implements AppointmentExcelService { ...@@ -302,12 +304,12 @@ public class AppointmentExcelServiceImpl implements AppointmentExcelService {
public String exportAppointment(Map<String, Object> data, public String exportAppointment(Map<String, Object> data,
String templateType, String templateType,
String appointmentBizId, String appointmentBizId,
String projectBizId) { OSS ossClient, OssProvider provider) {
// 获取模板信息 // 获取模板信息
FileProdDto fileProdDto = iFileTemplateService.getFileProd("", templateType); FileProdDto fileProdDto = iFileTemplateService.getFileProd("", templateType);
// 生成文件名 // 生成文件名
String fileName = "预约信息_" + appointmentBizId + "_" + System.currentTimeMillis() + ".xlsx"; String fileName = "预约信息_" + appointmentBizId + "_" + System.currentTimeMillis() + ".xlsx";
// 导出并上传到OSS // 导出并上传到OSS
return exportAndUploadToOss(data, fileProdDto.getFileKey(), fileName,projectBizId); return exportAndUploadToOss(data, fileProdDto.getFileKey(), fileName,ossClient,provider);
} }
} }
package com.yd.oss.service.service.impl; package com.yd.oss.service.service.impl;
import com.aliyun.oss.OSS;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.oss.feign.dto.ApiMaterialDto; import com.yd.oss.feign.dto.ApiMaterialDto;
import com.yd.oss.feign.request.ApiMaterialDownloadRequest; import com.yd.oss.feign.request.ApiMaterialDownloadRequest;
import com.yd.oss.feign.response.ApiMaterialDownloadResponse; import com.yd.oss.feign.response.ApiMaterialDownloadResponse;
import com.yd.oss.service.model.OssProvider;
import com.yd.oss.service.service.CompressedFileService; import com.yd.oss.service.service.CompressedFileService;
import com.yd.oss.service.service.OssService; import com.yd.oss.service.service.OssService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -30,11 +32,11 @@ public class CompressedFileServiceImpl implements CompressedFileService { ...@@ -30,11 +32,11 @@ public class CompressedFileServiceImpl implements CompressedFileService {
@Autowired @Autowired
private OssService ossService; private OssService ossService;
@Autowired // @Autowired
private String defaultBucket; // 注入默认存储桶 // private String defaultBucket; // 注入默认存储桶
//
@Autowired // @Autowired
private String defaultEndpoint; // 注入默认服务端点 // private String defaultEndpoint; // 注入默认服务端点
/** /**
...@@ -43,7 +45,7 @@ public class CompressedFileServiceImpl implements CompressedFileService { ...@@ -43,7 +45,7 @@ public class CompressedFileServiceImpl implements CompressedFileService {
* @return * @return
*/ */
@Override @Override
public Result<ApiMaterialDownloadResponse> downloadCompressedFile(ApiMaterialDownloadRequest request) { public Result<ApiMaterialDownloadResponse> downloadCompressedFile(ApiMaterialDownloadRequest request, OSS ossClient, OssProvider provider) {
try { try {
// 验证请求参数 // 验证请求参数
if (request == null || CollectionUtils.isEmpty(request.getApiMaterialDtoList())) { if (request == null || CollectionUtils.isEmpty(request.getApiMaterialDtoList())) {
...@@ -71,7 +73,7 @@ public class CompressedFileServiceImpl implements CompressedFileService { ...@@ -71,7 +73,7 @@ public class CompressedFileServiceImpl implements CompressedFileService {
String fileUrl = materialDto.getFileUrlList().get(i); String fileUrl = materialDto.getFileUrlList().get(i);
try { try {
// 下载文件并添加到压缩包 // 下载文件并添加到压缩包
boolean success = addFileToZip(zos, fileUrl, folderName, i + 1); boolean success = addFileToZip(zos, fileUrl, folderName, i + 1,ossClient,provider);
if (success) { if (success) {
successFileCount++; successFileCount++;
} }
...@@ -96,7 +98,7 @@ public class CompressedFileServiceImpl implements CompressedFileService { ...@@ -96,7 +98,7 @@ public class CompressedFileServiceImpl implements CompressedFileService {
successFileCount, tempZipFile.length()); successFileCount, tempZipFile.length());
// 上传压缩包到OSS // 上传压缩包到OSS
String ossUrl = uploadZipToOss(tempZipFile, request.getObjectName()); String ossUrl = uploadZipToOss(tempZipFile, request.getObjectName(),ossClient,provider);
// 构建响应 // 构建响应
ApiMaterialDownloadResponse response = new ApiMaterialDownloadResponse(); ApiMaterialDownloadResponse response = new ApiMaterialDownloadResponse();
...@@ -153,7 +155,7 @@ public class CompressedFileServiceImpl implements CompressedFileService { ...@@ -153,7 +155,7 @@ public class CompressedFileServiceImpl implements CompressedFileService {
/** /**
* 下载文件并添加到压缩包 * 下载文件并添加到压缩包
*/ */
private boolean addFileToZip(ZipOutputStream zos, String fileUrl, String folderName, int fileIndex) throws Exception { private boolean addFileToZip(ZipOutputStream zos, String fileUrl, String folderName, int fileIndex,OSS ossClient,OssProvider provider) throws Exception {
// 从URL中提取文件名 // 从URL中提取文件名
String fileName = extractFileNameFromUrl(fileUrl, fileIndex); String fileName = extractFileNameFromUrl(fileUrl, fileIndex);
...@@ -161,7 +163,7 @@ public class CompressedFileServiceImpl implements CompressedFileService { ...@@ -161,7 +163,7 @@ public class CompressedFileServiceImpl implements CompressedFileService {
String zipEntryName = folderName + "/" + fileName; String zipEntryName = folderName + "/" + fileName;
// 从OSS下载文件 // 从OSS下载文件
InputStream fileInputStream = downloadFileFromUrl(fileUrl); InputStream fileInputStream = downloadFileFromUrl(fileUrl,ossClient,provider);
if (fileInputStream == null) { if (fileInputStream == null) {
throw new IOException("无法下载文件: " + fileUrl); throw new IOException("无法下载文件: " + fileUrl);
} }
...@@ -258,10 +260,10 @@ public class CompressedFileServiceImpl implements CompressedFileService { ...@@ -258,10 +260,10 @@ public class CompressedFileServiceImpl implements CompressedFileService {
/** /**
* 从URL下载文件 * 从URL下载文件
*/ */
private InputStream downloadFileFromUrl(String fileUrl) { private InputStream downloadFileFromUrl(String fileUrl,OSS ossClient,OssProvider provider) {
try { try {
// 方法1: 尝试从OSS下载(如果URL是我们OSS的) // 方法1: 尝试从OSS下载(如果URL是我们OSS的)
String fileKey = extractFileKeyFromUrl(fileUrl); String fileKey = extractFileKeyFromUrl(fileUrl,ossClient,provider);
if (StringUtils.hasText(fileKey)) { if (StringUtils.hasText(fileKey)) {
log.debug("从OSS下载文件,fileKey: {}", fileKey); log.debug("从OSS下载文件,fileKey: {}", fileKey);
return ossService.downloadFile(fileKey); return ossService.downloadFile(fileKey);
...@@ -280,7 +282,7 @@ public class CompressedFileServiceImpl implements CompressedFileService { ...@@ -280,7 +282,7 @@ public class CompressedFileServiceImpl implements CompressedFileService {
/** /**
* 从完整URL中提取OSS文件key * 从完整URL中提取OSS文件key
*/ */
private String extractFileKeyFromUrl(String fileUrl) { private String extractFileKeyFromUrl(String fileUrl,OSS ossClient,OssProvider provider) {
if (!StringUtils.hasText(fileUrl)) { if (!StringUtils.hasText(fileUrl)) {
return null; return null;
} }
...@@ -297,10 +299,10 @@ public class CompressedFileServiceImpl implements CompressedFileService { ...@@ -297,10 +299,10 @@ public class CompressedFileServiceImpl implements CompressedFileService {
} }
// 从配置获取endpoint // 从配置获取endpoint
String endpoint = defaultEndpoint; String endpoint = provider.getEndpoint();
// 查找bucket.endpoint组合 // 查找bucket.endpoint组合
String bucketEndpoint = defaultBucket + "." + endpoint; String bucketEndpoint = provider.getBucketName() + "." + endpoint;
int bucketEndpointIndex = url.indexOf(bucketEndpoint); int bucketEndpointIndex = url.indexOf(bucketEndpoint);
if (bucketEndpointIndex >= 0) { if (bucketEndpointIndex >= 0) {
...@@ -368,7 +370,7 @@ public class CompressedFileServiceImpl implements CompressedFileService { ...@@ -368,7 +370,7 @@ public class CompressedFileServiceImpl implements CompressedFileService {
/** /**
* 上传压缩包到OSS * 上传压缩包到OSS
*/ */
private String uploadZipToOss(File zipFile, String objectName) throws Exception { private String uploadZipToOss(File zipFile, String objectName,OSS ossClient, OssProvider provider) throws Exception {
if (!zipFile.exists() || zipFile.length() == 0) { if (!zipFile.exists() || zipFile.length() == 0) {
throw new IOException("压缩文件不存在或为空"); throw new IOException("压缩文件不存在或为空");
} }
......
...@@ -2,6 +2,7 @@ package com.yd.oss.service.service.impl; ...@@ -2,6 +2,7 @@ package com.yd.oss.service.service.impl;
import com.aliyun.oss.OSS; import com.aliyun.oss.OSS;
import com.aliyun.oss.model.OSSObject; import com.aliyun.oss.model.OSSObject;
import com.yd.oss.service.model.OssProvider;
import com.yd.oss.service.service.ExcelService; import com.yd.oss.service.service.ExcelService;
import com.yd.oss.service.service.OssService; import com.yd.oss.service.service.OssService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -27,11 +28,11 @@ public class ExcelServiceImpl implements ExcelService { ...@@ -27,11 +28,11 @@ public class ExcelServiceImpl implements ExcelService {
@Resource @Resource
private OssService ossService; private OssService ossService;
@Autowired // @Autowired
private OSS ossClient; // 注入OSS客户端 // private OSS ossClient; // 注入OSS客户端
@Autowired // @Autowired
private String defaultBucket; // 注入默认存储桶 // private String defaultBucket; // 注入默认存储桶
/** /**
* 从OSS下载模板到临时文件 * 从OSS下载模板到临时文件
...@@ -40,13 +41,13 @@ public class ExcelServiceImpl implements ExcelService { ...@@ -40,13 +41,13 @@ public class ExcelServiceImpl implements ExcelService {
* @throws IOException * @throws IOException
*/ */
@Override @Override
public File downloadTemplateToTempFile(String ossObjectKey) throws IOException { public File downloadTemplateToTempFile(String ossObjectKey,OSS ossClient, OssProvider provider) throws IOException {
// 创建临时文件 // 创建临时文件
Path tempPath = Files.createTempFile("template", ".xlsx"); Path tempPath = Files.createTempFile("template", ".xlsx");
File tempFile = tempPath.toFile(); File tempFile = tempPath.toFile();
tempFile.deleteOnExit(); // JVM退出时删除 tempFile.deleteOnExit(); // JVM退出时删除
try (OSSObject ossObject = ossClient.getObject(defaultBucket, ossObjectKey); try (OSSObject ossObject = ossClient.getObject(provider.getBucketName(), ossObjectKey);
InputStream inputStream = ossObject.getObjectContent(); InputStream inputStream = ossObject.getObjectContent();
FileOutputStream outputStream = new FileOutputStream(tempFile)) { FileOutputStream outputStream = new FileOutputStream(tempFile)) {
......
...@@ -6,6 +6,7 @@ import com.aliyun.oss.model.GeneratePresignedUrlRequest; ...@@ -6,6 +6,7 @@ import com.aliyun.oss.model.GeneratePresignedUrlRequest;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.yd.oss.service.dto.FileProdDto; import com.yd.oss.service.dto.FileProdDto;
import com.yd.oss.service.model.OssProvider;
import com.yd.oss.service.service.*; import com.yd.oss.service.service.*;
import com.yd.oss.service.utils.PdfUtil; import com.yd.oss.service.utils.PdfUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -38,8 +39,8 @@ public class PdfServiceImpl<T> implements PdfService<T> { ...@@ -38,8 +39,8 @@ public class PdfServiceImpl<T> implements PdfService<T> {
@Autowired @Autowired
private FieldValueProvider<T> fieldValueProvider; private FieldValueProvider<T> fieldValueProvider;
@Autowired // @Autowired
private OSS ossClient; // 注入OSS客户端 // private OSS ossClient; // 注入OSS客户端
/** /**
* 根据入参的数据和文件模板的JSON字段映射构建生成PDF * 根据入参的数据和文件模板的JSON字段映射构建生成PDF
...@@ -50,7 +51,7 @@ public class PdfServiceImpl<T> implements PdfService<T> { ...@@ -50,7 +51,7 @@ public class PdfServiceImpl<T> implements PdfService<T> {
* @return * @return
* @throws IOException * @throws IOException
*/ */
public String generatePDF(T dataObject, String objectId, String templateType,String customFileName) throws IOException { public String generatePDF(T dataObject, String objectId, String templateType, String customFileName, OssProvider provider, OSS ossClient) throws IOException {
// 获取模板信息 // 获取模板信息
FileProdDto fileProdDto = iFileTemplateService.getFileProd("", templateType); FileProdDto fileProdDto = iFileTemplateService.getFileProd("", templateType);
...@@ -77,10 +78,10 @@ public class PdfServiceImpl<T> implements PdfService<T> { ...@@ -77,10 +78,10 @@ public class PdfServiceImpl<T> implements PdfService<T> {
objectName = "insurance_schedules/" + objectId + "_" + System.currentTimeMillis() + ".pdf"; objectName = "insurance_schedules/" + objectId + "_" + System.currentTimeMillis() + ".pdf";
} }
uploadToOSS(tempPdfFile, fileProdDto.getBucketName(), objectName); uploadToOSS(tempPdfFile, fileProdDto.getBucketName(), objectName,provider,ossClient);
// 生成访问URL // 生成访问URL
return generatePresignedUrl(fileProdDto.getBucketName(), objectName); return generatePresignedUrl(fileProdDto.getBucketName(), objectName,provider,ossClient);
} finally { } finally {
// 清理临时文件 // 清理临时文件
...@@ -328,7 +329,7 @@ public class PdfServiceImpl<T> implements PdfService<T> { ...@@ -328,7 +329,7 @@ public class PdfServiceImpl<T> implements PdfService<T> {
* @param objectName * @param objectName
* @throws IOException * @throws IOException
*/ */
private void uploadToOSS(File file, String bucketName, String objectName) throws IOException { private void uploadToOSS(File file, String bucketName, String objectName,OssProvider provider, OSS ossClient) throws IOException {
ossClient.putObject(bucketName, objectName, new FileInputStream(file)); ossClient.putObject(bucketName, objectName, new FileInputStream(file));
} }
...@@ -338,7 +339,7 @@ public class PdfServiceImpl<T> implements PdfService<T> { ...@@ -338,7 +339,7 @@ public class PdfServiceImpl<T> implements PdfService<T> {
* @param objectName * @param objectName
* @return * @return
*/ */
private String generatePresignedUrl(String bucketName, String objectName) { private String generatePresignedUrl(String bucketName, String objectName,OssProvider provider, OSS ossClient) {
Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000); Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000);
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET); GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET);
request.setExpiration(expiration); request.setExpiration(expiration);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment