package com.gkhy.safePlatform.specialWork.service.impl;
|
|
import cn.hutool.core.lang.Snowflake;
|
import cn.hutool.core.util.IdUtil;
|
import com.gkhy.safePlatform.commons.config.file.MinioConfig;
|
import com.gkhy.safePlatform.commons.enums.E;
|
import com.gkhy.safePlatform.commons.enums.ResultCodes;
|
import com.gkhy.safePlatform.commons.exception.AusinessException;
|
import com.gkhy.safePlatform.commons.utils.StringUtils;
|
import com.gkhy.safePlatform.commons.utils.UUIDUtil;
|
import com.gkhy.safePlatform.commons.vo.ResultVO;
|
import com.gkhy.safePlatform.specialWork.service.SpecialWorkMinoService;
|
|
import io.minio.GetPresignedObjectUrlArgs;
|
import io.minio.MinioClient;
|
import io.minio.RemoveObjectArgs;
|
import io.minio.RemoveObjectsArgs;
|
import io.minio.errors.*;
|
import io.minio.http.Method;
|
import io.minio.messages.DeleteObject;
|
import org.jetbrains.annotations.NotNull;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Service;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
|
|
@Service
|
public class SpecialWorkMinoServiceImpl implements SpecialWorkMinoService {
|
|
private Logger logger = LoggerFactory.getLogger(this.getClass());
|
|
@Autowired
|
private MinioClient minioClient;
|
|
@Autowired
|
private MinioConfig minioConfig;
|
|
@Value("${specailworkmino.floders.specialwork}")
|
private String minioFloders;
|
|
/**
|
* 获取对象上传路径
|
*/
|
@Override
|
public ResultVO getPresignUrl(String suffixName){
|
|
String uuid= UUIDUtil.initUUID();
|
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmssSSS");
|
String objName = formatter.format(new Date())+"-"+uuid+"."+suffixName;
|
String url = null;
|
Map<String,String> resMap = new HashMap<>();
|
resMap.put("fileName",objName);
|
try {
|
Map<String, String> reqParams = new HashMap<>();
|
reqParams.put("response-content-type", "application/json");
|
url = minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder()
|
.method(Method.PUT)
|
.bucket(minioConfig.getBucketName())
|
.object(minioFloders+objName)
|
.expiry(60*2)
|
.extraQueryParams(reqParams)
|
.build());
|
resMap.put("uploadUrl",url);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return new ResultVO<>(ResultCodes.OK,resMap);
|
}
|
|
/**
|
* @description 获取文件下载地址
|
*/
|
@Override
|
public ResultVO viewFile(String fileName){
|
String url = null;
|
try {
|
url = minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder()
|
.method(Method.GET)
|
.bucket(minioConfig.getBucketName())
|
.object(minioFloders+fileName)
|
.expiry(60*5).build());
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
url = minioConfig.getUrlPrefix() + url.substring((url.indexOf("//") + 2)).substring(url.substring((url.indexOf("//") + 2)).indexOf(
|
"/"));
|
return new ResultVO(ResultCodes.OK,url);
|
}
|
|
/**
|
* @description 删除文件
|
*/
|
@Override
|
public ResultVO deleteFile(String fileName) {
|
try {
|
minioClient.removeObject(RemoveObjectArgs.builder()
|
.bucket(minioConfig.getBucketName())
|
.object(minioFloders+fileName)
|
.build());
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return new ResultVO<>(ResultCodes.OK);
|
}
|
|
/**
|
* 批量获取文件
|
*/
|
public String viewFiles(String fileNames){
|
|
StringBuffer stringBuffer = new StringBuffer();
|
if(StringUtils.isNotBlank(fileNames)){
|
String[] str = fileNames.split(",");
|
for (int i = 0; i < str.length; i++) {
|
String url = null;
|
try {
|
url = minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder()
|
.method(Method.GET)
|
.bucket(minioConfig.getBucketName())
|
.object(minioFloders+str[i])
|
.expiry(60*5).build());
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
url = minioConfig.getUrlPrefix() + url.substring((url.indexOf("//") + 2)).substring(url.substring((url.indexOf("//") + 2)).indexOf(
|
"/"));
|
stringBuffer.append(url).append(",");
|
}
|
stringBuffer.deleteCharAt(stringBuffer.length() - 1);
|
|
}
|
return stringBuffer.toString();
|
}
|
|
}
|