From f8bffb3ae6854fbcf6f78ed953bf73e33fadc8a9 Mon Sep 17 00:00:00 2001 From: 潘志宝 <979469083@qq.com> Date: 星期一, 28 四月 2025 14:52:48 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java | 72 +++++++++++++++++++++++++++++++++++- 1 files changed, 70 insertions(+), 2 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 f141bdf..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; /** @@ -84,6 +84,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) { @@ -347,7 +415,7 @@ String jarSavePath = pkgJar(dirPath.getAbsolutePath()); //备份jar文件,用于后续运行 String jarBakPath = mpkTenantBakFilePath + File.separator + MdkConstant.JAR + File.separator + entity.getPyName() + ".jar"; - FileUtil.mkParentDirs(dllBakPath); + FileUtil.mkParentDirs(jarBakPath); FileUtil.copy(jarSavePath, jarBakPath, true); // 打zip包 String zipPath = mpkTenantBakFilePath + File.separator + zipFileName; -- Gitblit v1.9.3