From f023cdc41243754b0e79dc172149839a214c2f3e Mon Sep 17 00:00:00 2001 From: dengzedong <dengzedong@email> Date: 星期四, 24 四月 2025 17:18:34 +0800 Subject: [PATCH] 删除多余备份pyd文件 --- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java | 70 ++++++++++++++++++++++++++++++++++ 1 files changed, 69 insertions(+), 1 deletions(-) diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java index 0c592b3..51535f1 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java @@ -41,12 +41,12 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; +import javax.annotation.PostConstruct; import java.io.File; import java.io.IOException; import java.net.URLClassLoader; import java.nio.file.Files; import java.util.*; -import java.util.function.Function; import java.util.stream.Collectors; /** @@ -85,6 +85,74 @@ @Value("${mpk.bak-resources}") private String mpkResources; + @Value("${mpk.delete-bak-file-cache}") + private Boolean isDeleteBakFile; + + @PostConstruct + void init() { + if (isDeleteBakFile) { + //删除无用备份pyd文件 + try { + deleteBakFile(); + } catch (Exception e) { + log.error("删除多余备份pyd文件失败",e); + } + } + } + + + private void deleteBakFile() { + // 租户目录下的无用pyd + File bakDir = new File(mpkBakFilePath); + if (bakDir.exists() && bakDir.isDirectory()) { + File[] tenantDirs = bakDir.listFiles(dir -> dir.isDirectory() && !dir.getName().equals(MdkConstant.PROJECT_PUBLISH) && !dir.getName().equals(MdkConstant.PROJECT_UNPUBLISH) && dir.getName().matches("^[1-9]\\d*$")); + + if (tenantDirs != null && !CollectionUtils.isEmpty(Arrays.asList(tenantDirs))) { + for (File tenantDir : tenantDirs) { + File[] pydFiles = tenantDir.listFiles(file -> file.isFile() && file.getName().endsWith(".pyd")); + if (pydFiles == null || CollectionUtils.isEmpty(Arrays.asList(pydFiles))) { + continue; + } + TenantContextHolder.setTenantId(Long.valueOf(tenantDir.getName())); + List<MpkFileEntity> fileEntityList = baseDao.selectList(new QueryWrapper<>()); + List<String> filePathList = fileEntityList.stream().map(MpkFileEntity::getFilePath).collect(Collectors.toList()); + for (File pydFile : pydFiles) { + if (!filePathList.contains(pydFile.getAbsolutePath())) { + log.info("删除多余备份pyd文件:" + pydFile.getAbsoluteFile()); + pydFile.delete(); + } + } + } + } + } +// +// +// // 环境变量MDK_PKGS下pyd文件 +// String mdkPkgs = System.getenv("MDK_PKGS"); +// File pkgsDir = new File(mdkPkgs); +// List<File> pydFiles = getPydFiles(pkgsDir); + + } + + private List<File> getPydFiles(File pkgsDir) { + List<File> result = new ArrayList<>(); + if (pkgsDir.exists() && pkgsDir.isDirectory()) { + File[] files = pkgsDir.listFiles(); + if (files != null) { + for (File file : files) { + if (file.isDirectory()) { + // 递归调用获取子目录下的 .pyd 文件 + result.addAll(getPydFiles(file)); + } else if (file.isFile() && file.getName().endsWith(".pyd")) { + result.add(file); + } + } + } + } + return result; + } + + @Override public PageData<MpkFileDTO> page(Map<String, Object> params) { IPage<MpkFileEntity> page = baseDao.selectPage( -- Gitblit v1.9.3