package com.artfess.file.attachmentService; import com.artfess.base.attachment.Attachment; import com.artfess.base.attachment.AttachmentService; import com.artfess.base.util.AppUtil; import com.artfess.base.util.BeanUtils; import com.artfess.base.util.StringUtil; import com.artfess.file.config.HwObsSetting; import com.artfess.file.config.MinioSetting; import com.artfess.file.model.FileStorage; import com.artfess.file.params.FlowUploadPropertiesStorageDTO; import com.artfess.file.persistence.manager.FileStorageManager; import com.artfess.file.persistence.manager.FlowUploadPropertiesManager; import com.artfess.file.util.HuaweiyunOssUtil; import org.springframework.stereotype.Service; import java.io.InputStream; import java.io.OutputStream; import java.nio.file.Paths; /** * @program: edp * @Date: 2021/3/22 16:19 * @Author: llj * @Description: */ @Service public class HuaweiyunObsAttachmentServiceImpl implements AttachmentService { @Override public String getStoreType() { return "huaweiObs"; } private HwObsSetting initMinioSettings(Attachment attachment, String propertiesId) { HwObsSetting ossSettings = AppUtil.getBean(HwObsSetting.class); if (StringUtil.isNotEmpty(propertiesId)) { FileStorageManager fileStorageManager = AppUtil.getBean(FileStorageManager.class); FileStorage fileStorage = fileStorageManager.get(propertiesId); if (BeanUtils.isNotEmpty(fileStorage)) { ossSettings.setAk(fileStorage.getUserName()); ossSettings.setSk(fileStorage.getPassword()); ossSettings.setEndpoint(fileStorage.getEndpoint()); ossSettings.setBucketName(fileStorage.getLocation()); attachment.setEntryptName(fileStorage.getEncryptName() == 0 ? false : true); } }else{ FlowUploadPropertiesManager uploadPropertiesManager = AppUtil.getBean(FlowUploadPropertiesManager.class); FlowUploadPropertiesStorageDTO uploadProperties = uploadPropertiesManager.getById(propertiesId); if (BeanUtils.isNotEmpty(uploadProperties)) { ossSettings.setAk(uploadProperties.getAccessKeyId()); ossSettings.setSk(uploadProperties.getAccessKeySecret()); ossSettings.setEndpoint(uploadProperties.getEndpoint()); ossSettings.setBucketName(uploadProperties.getLocation()); attachment.setEntryptName(uploadProperties.getEncryptName() == 0 ? false : true); } } HuaweiyunOssUtil.setAk(ossSettings.getAk()); HuaweiyunOssUtil.setSk(ossSettings.getSk()); HuaweiyunOssUtil.setEndpoint(ossSettings.getEndpoint()); HuaweiyunOssUtil.setBucketName(ossSettings.getBucketName()); return ossSettings; } @Override public void remove(Attachment attachment, String propertiesId) throws Exception { String fileParentPath = ""; String filePath = attachment.getFilePath(); if (StringUtil.isNotEmpty(filePath)) { fileParentPath = Paths.get(filePath).getParent().toString(); fileParentPath = fileParentPath.replaceAll("\\\\", "/"); if (fileParentPath.startsWith("/")) { fileParentPath = fileParentPath.substring(1); } } String fileName = fileParentPath + "/" + attachment.getId() + "." + attachment.getExtensionName(); initMinioSettings(attachment,propertiesId); HuaweiyunOssUtil.deleteFile(fileName); } @Override public void upload(Attachment attachment, InputStream inputStream, String propertiesId) throws Exception { String fileParentPath = ""; String filePath = attachment.getFilePath(); if (StringUtil.isNotEmpty(filePath)) { fileParentPath = Paths.get(filePath).getParent().toString(); fileParentPath = fileParentPath.replaceAll("\\\\", "/"); if (fileParentPath.startsWith("/")) { fileParentPath = fileParentPath.substring(1); } } String fileName = fileParentPath + "/" + attachment.getId() + "." + attachment.getExtensionName(); initMinioSettings(attachment,propertiesId); HuaweiyunOssUtil.uploadFile(fileName, inputStream); } @Override public void download(Attachment attachment, OutputStream outStream, String propertiesId) throws Exception { String fileParentPath = ""; String filePath = attachment.getFilePath(); if (StringUtil.isNotEmpty(filePath)) { fileParentPath = Paths.get(filePath).getParent().toString(); fileParentPath = fileParentPath.replaceAll("\\\\", "/"); if (fileParentPath.startsWith("/")) { fileParentPath = fileParentPath.substring(1); } } String fileName = fileParentPath + "/" + attachment.getId() + "." + attachment.getExtensionName(); initMinioSettings(attachment,propertiesId); HuaweiyunOssUtil.Download(fileName, outStream); } @Override public boolean chekckFile(Attachment attachment, String propertiesId) throws Exception { initMinioSettings(attachment,propertiesId); boolean b = HuaweiyunOssUtil.chekckFile(attachment.getFileName()); return b; } @Override public byte[] getFileBytes(Attachment sysFile) throws Exception { return new byte[0]; } @Override public String getUrl(Attachment attachment) { return null; } @Override public String initMultiPartUpload(Attachment attachment) { return null; } @Override public String getChunkUrl(Attachment attachment, Integer partNumber, String uploadId) { return null; } @Override public boolean mergeMultipartUpload(Attachment attachment, String uploadId, int realyPartNumber) { return false; } }