fix: 下载修改

This commit is contained in:
zlg
2024-07-18 13:50:35 +08:00
parent b439cbe2c7
commit 32f258ca42
3 changed files with 18 additions and 11 deletions

View File

@@ -3,7 +3,10 @@ package com.schisandra.oss.application.controller;
import cn.hutool.core.util.ZipUtil;
import cn.hutool.extra.spring.SpringUtil;
import com.alibaba.fastjson.JSON;
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import com.google.common.base.Preconditions;
import com.mybatisflex.annotation.RelationOneToMany;
import com.schisandra.oss.application.convert.SchisandraOssMinioDTOConverter;
import com.schisandra.oss.application.convert.SchisandraOssQiniuDTOConverter;
import com.schisandra.oss.application.dto.SchisandraOssMinioDTO;
@@ -12,6 +15,7 @@ import com.schisandra.oss.application.oss.constant.OssConstant;
import com.schisandra.oss.application.oss.core.minio.MinioOssClient;
import com.schisandra.oss.application.oss.core.minio.MinioOssConfiguration;
import com.schisandra.oss.common.entity.Result;
import com.schisandra.oss.common.utils.CaffeineUtil;
import com.schisandra.oss.domain.bo.SchisandraOssAliBO;
import com.schisandra.oss.domain.bo.SchisandraOssMinioBO;
import com.schisandra.oss.domain.redis.RedisUtil;
@@ -28,6 +32,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
@@ -39,6 +44,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
/**
* controller
@@ -59,6 +65,8 @@ public class SchisandraOssMinioController {
@Resource
RedisUtil redisUtil;
@Resource
CaffeineUtil caffeineUtil;
/**
* 根据id返回单条配置信息
@@ -193,15 +201,15 @@ public class SchisandraOssMinioController {
String[] path = new String[list.size()];
InputStream[] inputStreams = new InputStream[list.size()];
path = list.keySet().toArray(path);
inputStreams = list.values().toArray(inputStreams);
//记录用户下载
Date date = new Date();
AtomicInteger count = new AtomicInteger(0);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = dateFormat.format(date);
list.keySet().forEach(name -> {
try {
byte[] bytes = StreamUtils.copyToByteArray(list.get(name));
list.get(name).reset();
inputStreams[count.get()] = new ByteArrayInputStream(bytes);
String key = redisUtil.buildKey(USER_OSS_PREFIX, "download", formattedDate, userId, name);
HashMap<Object, Object> map = new HashMap<>();
map.put("fileName", name);
@@ -228,6 +236,11 @@ public class SchisandraOssMinioController {
Preconditions.checkNotNull(bucket, "不能为空");
Preconditions.checkNotNull(userId, "不能为空");
Preconditions.checkNotNull(filePath, "不能为空");
int index=filePath.lastIndexOf("/");
String fileName = filePath.substring(index + 1);
System.out.println(caffeineUtil.caffeineUtil().getIfPresent("MinioListDir" + userId + bucket + fileName));
caffeineUtil.caffeineUtil().invalidate("MinioListDir" + userId + bucket + fileName);
MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO + userId);
bean.getMinioOssConfig().setBucketName(bucket);
bean.delete(filePath);

View File

@@ -163,30 +163,24 @@ public class MinioOssClient implements StandardOssClient {
}
public HashMap<String,InputStream> getTargetDir(List<String> listObjectsArgs) throws Exception {
HashMap<String,InputStream> list = new HashMap<>();
List<WorkerWrapper> wrappers=new ArrayList<>();
listObjectsArgs.forEach(args -> {
minioClient.listObjects(
ListObjectsArgs.builder().prefix(args).bucket(getBucket()).recursive(true).build()).forEach(r -> {
OssInfo info = new OssInfo();
try {
WorkerWrapper wrapper1 = new WorkerWrapper.Builder<String, InputStream>().worker((String dirName, Map<String, WorkerWrapper> allWrappers) -> {
try {
list.put(dirName,getMinioObject(getBucket(), dirName));
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
return null;
}).param(r.get().objectName()).id(r.get().versionId()).callback((boolean success, String param,WorkResult<InputStream> re)->{
}).param(args).id(args).callback((boolean success, String param,WorkResult<InputStream> re)->{
}).build();
wrappers.add(wrapper1);
} catch (Exception e) {
e.printStackTrace();
}
});
});
Async.beginWork(3500L,new ThreadPoolExecutor(10, 100, 5L,
TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>()), wrappers);
return list;

View File

@@ -102,7 +102,7 @@
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>3.1.8</version>
<version>2.9.3</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>