From 8cce08d1d96384edbd2d362173ffa98ca933ef13 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期一, 28 十一月 2022 14:06:42 +0800 Subject: [PATCH] 1 --- src/main/java/com/lf/server/service/data/DownloadService.java | 73 +++++++++++++++++++++++++++++++++++- 1 files changed, 70 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/lf/server/service/data/DownloadService.java b/src/main/java/com/lf/server/service/data/DownloadService.java index fee2ab5..5a4741b 100644 --- a/src/main/java/com/lf/server/service/data/DownloadService.java +++ b/src/main/java/com/lf/server/service/data/DownloadService.java @@ -2,16 +2,20 @@ import com.lf.server.entity.ctrl.DownloadReqEntity; import com.lf.server.entity.data.DownloadEntity; -import com.lf.server.helper.PathHelper; -import com.lf.server.helper.RsaHelper; -import com.lf.server.helper.StringHelper; +import com.lf.server.entity.data.MetaFileEntity; +import com.lf.server.entity.sys.UserEntity; +import com.lf.server.helper.*; import com.lf.server.mapper.data.DownloadMapper; +import net.lingala.zip4j.ZipFile; +import net.lingala.zip4j.model.ZipParameters; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.File; +import java.util.ArrayList; +import java.util.Date; import java.util.List; /** @@ -147,4 +151,67 @@ return null; } } + + /** + * 鎵撳寘鏂囦欢 + * + * @param ue 鐢ㄦ埛瀹炰綋 + * @param list 鍏冩暟鎹枃浠堕泦鍚� + * @param pwd 瀵嗙爜 + * @return 涓嬭浇鏂囦欢GUID + */ + public String zipFiles(UserEntity ue, List<MetaFileEntity> list, String pwd) { + rmRepeatMetaFiles(list); + + String downloadPath = pathHelper.getDownloadFullPath(); + String zipName = StringHelper.YMDHMS2_FORMAT.format(new Date()) + ".zip"; + String zipFile = downloadPath + File.separator + zipName; + + ZipFile zip = Zip4jHelper.createZipFile(zipFile, pwd); + ZipParameters params = Zip4jHelper.getZipParams(); + + addMetaFiles(zip, params, list); + + return null; + } + + /** + * 绉婚櫎閲嶅鐨勫厓鏁版嵁鏂囦欢 + */ + private void rmRepeatMetaFiles(List<MetaFileEntity> list) { + List<String> guidList = new ArrayList<>(); + + int i = 0; + while (i < list.size()) { + MetaFileEntity entity = list.get(i); + if (guidList.contains(entity.getGuid())) { + list.remove(i); + continue; + } + + guidList.add(entity.getGuid()); + i++; + } + } + + /** + * 娣诲姞鍏冩暟鎹枃浠惰嚦Zip鍖� + */ + private void addMetaFiles(ZipFile zip, ZipParameters params, List<MetaFileEntity> list) { + String uploadPath = pathHelper.getConfig().getUploadPath(); + for (MetaFileEntity entity : list) { + String filePath = uploadPath + File.separator + entity.getPath(); + File file = new File(filePath); + File newFile = new File(filePath.replace(entity.getGuid(), entity.getName())); + + try { + file.renameTo(newFile); + zip.addFile(newFile, params); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + } finally { + newFile.renameTo(file); + } + } + } } -- Gitblit v1.9.3