From c94ba2d7c39d0448056d25ae2cd88a00f84e5043 Mon Sep 17 00:00:00 2001 From: yizhaorong <243653385@qq.com> Date: Thu, 11 Jun 2020 07:20:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E4=BB=BD=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/yzr/controller/AppController.java | 2 - .../org/yzr/controller/PackageController.java | 6 +- src/main/java/org/yzr/service/AppService.java | 26 +--- .../java/org/yzr/service/PackageService.java | 41 +++--- .../java/org/yzr/utils/file/PathManager.java | 120 ------------------ .../java/org/yzr/utils/parser/APKParser.java | 8 +- .../java/org/yzr/vo/PackageViewModel.java | 6 + 7 files changed, 37 insertions(+), 172 deletions(-) diff --git a/src/main/java/org/yzr/controller/AppController.java b/src/main/java/org/yzr/controller/AppController.java index 1a9d571..90d837e 100644 --- a/src/main/java/org/yzr/controller/AppController.java +++ b/src/main/java/org/yzr/controller/AppController.java @@ -27,8 +27,6 @@ public class AppController { @Resource private AppService appService; - @Resource - private PathManager pathManager; @RequiresAuthentication @GetMapping("/apps") diff --git a/src/main/java/org/yzr/controller/PackageController.java b/src/main/java/org/yzr/controller/PackageController.java index 04db762..d1b4caf 100644 --- a/src/main/java/org/yzr/controller/PackageController.java +++ b/src/main/java/org/yzr/controller/PackageController.java @@ -34,6 +34,7 @@ import org.yzr.vo.PackageViewModel; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.HashMap; @@ -47,8 +48,6 @@ public class PackageController { @Resource private PackageService packageService; @Resource - private PathManager pathManager; - @Resource private UserService userService; @Resource private StorageUtil storageUtil; @@ -231,7 +230,8 @@ public class PackageController { PackageViewModel viewModel = this.packageService.findById(id, request); if (viewModel != null) { response.setContentType("image/png"); - QRCodeUtil.encode(viewModel.getPreviewURL()).withSize(250, 250).writeTo(response.getOutputStream()); + InputStream inputStream = storageUtil.loadAsResource(viewModel.getIconKey()).getInputStream(); + QRCodeUtil.encode(viewModel.getPreviewURL()).withSize(250, 250).withIcon(inputStream).writeTo(response.getOutputStream()); } } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/org/yzr/service/AppService.java b/src/main/java/org/yzr/service/AppService.java index 627c10c..9a74b5f 100644 --- a/src/main/java/org/yzr/service/AppService.java +++ b/src/main/java/org/yzr/service/AppService.java @@ -2,13 +2,11 @@ package org.yzr.service; import org.apache.commons.io.FileUtils; -import org.apache.commons.io.FilenameUtils; import org.jetbrains.annotations.NotNull; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.yzr.dao.AppDao; import org.yzr.dao.PackageDao; -import org.yzr.dao.StorageDao; import org.yzr.dao.UserDao; import org.yzr.model.App; import org.yzr.model.Package; @@ -27,7 +25,10 @@ import javax.transaction.Transactional; import java.io.File; import java.io.FileInputStream; import java.io.IOException; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; @Service public class AppService { @@ -38,11 +39,9 @@ public class AppService { @Resource private PackageDao packageDao; @Resource - private PathManager pathManager; - @Resource - private StorageDao storageDao; - @Resource private StorageUtil storageUtil; + @Resource + private PackageService packageService; @Transactional public App save(App app, User user) { @@ -125,20 +124,9 @@ public class AppService { App app = this.appDao.findById(id).get(); if (app != null) { app.getPackageList().forEach(aPackage -> { - Storage iconFile = aPackage.getIconFile(); - this.storageUtil.delete(iconFile.getKey()); - this.storageDao.deleteById(iconFile.getId()); - Storage sourceFile = aPackage.getSourceFile(); - this.storageUtil.delete(sourceFile.getKey()); - this.storageDao.deleteById(sourceFile.getId()); - this.packageDao.deleteById(aPackage.getId()); + this.packageService.deletePackage(aPackage); }); this.appDao.deleteById(id); - - - // 消除整个 APP 目录 - String path = PathManager.getAppPath(app); - PathManager.deleteDirectory(path); } } diff --git a/src/main/java/org/yzr/service/PackageService.java b/src/main/java/org/yzr/service/PackageService.java index 6161081..1283b30 100644 --- a/src/main/java/org/yzr/service/PackageService.java +++ b/src/main/java/org/yzr/service/PackageService.java @@ -1,33 +1,23 @@ package org.yzr.service; -import org.apache.commons.io.FileUtils; -import org.apache.commons.io.FilenameUtils; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.yzr.dao.AppDao; import org.yzr.dao.PackageDao; +import org.yzr.dao.StorageDao; import org.yzr.dao.UserDao; -import org.yzr.model.App; import org.yzr.model.Package; import org.yzr.model.Storage; import org.yzr.model.User; import org.yzr.storage.StorageUtil; -import org.yzr.utils.CharUtil; -import org.yzr.utils.file.FileType; import org.yzr.utils.file.PathManager; -import org.yzr.utils.image.ImageUtils; import org.yzr.utils.parser.ParserClient; import org.yzr.vo.PackageViewModel; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.transaction.Transactional; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStream; import java.util.Map; -import java.util.UUID; @Service public class PackageService { @@ -35,13 +25,9 @@ public class PackageService { @Resource private PackageDao packageDao; @Resource - private PathManager pathManager; - @Resource - private UserDao userDao; - @Resource - private AppDao appDao; - @Resource private StorageUtil storageUtil; + @Resource + private StorageDao storageDao; @Transactional public Package save(Package aPackage) { @@ -67,13 +53,22 @@ public class PackageService { @Transactional public void deleteById(String id) { Package aPackage = this.packageDao.findById(id).get(); - if (aPackage != null) { - this.packageDao.deleteById(id); - String path = PathManager.getFullPath(aPackage); - PathManager.deleteDirectory(path); - } - + deletePackage(aPackage); } + + @Transactional + public void deletePackage(Package aPackage) { + if (aPackage != null) { + Storage iconFile = aPackage.getIconFile(); + this.storageUtil.delete(iconFile.getKey()); + this.storageDao.deleteById(iconFile.getId()); + Storage sourceFile = aPackage.getSourceFile(); + this.storageUtil.delete(sourceFile.getKey()); + this.storageDao.deleteById(sourceFile.getId()); + this.packageDao.deleteById(aPackage.getId()); + } + } + @Transactional public Package save(String filePath, Map extra, User user) throws Exception { Package aPackage = ParserClient.parse(filePath); diff --git a/src/main/java/org/yzr/utils/file/PathManager.java b/src/main/java/org/yzr/utils/file/PathManager.java index 2570093..7dafac2 100644 --- a/src/main/java/org/yzr/utils/file/PathManager.java +++ b/src/main/java/org/yzr/utils/file/PathManager.java @@ -1,25 +1,12 @@ package org.yzr.utils.file; import org.apache.commons.io.FileUtils; -import org.springframework.core.env.Environment; -import org.springframework.stereotype.Component; -import org.springframework.util.ResourceUtils; -import org.yzr.model.App; -import org.yzr.model.Package; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.io.File; -import java.net.InetAddress; import java.util.UUID; -@Component public class PathManager { - - @Resource - private Environment environment; - private String httpsBaseURL; - private String httpBaseURL; private String host; private String scheme = "http"; @@ -38,24 +25,6 @@ public class PathManager { return this.scheme + "://" + this.host; } - /** - * 获取图标的临时路径 - * - * @param aPackage - * @return - */ - public static String getTempIconPath(Package aPackage) { - if (aPackage == null) return null; - StringBuilder path = new StringBuilder(); - path.append(FileUtils.getTempDirectoryPath()).append(File.separator).append(aPackage.getPlatform()); - path.append(File.separator).append(aPackage.getBundleID()); - // 如果目录不存在,创建目录 - File dir = new File(path.toString()); - if (!dir.exists()) dir.mkdirs(); - path.append(File.separator).append(aPackage.getCreateTime()).append(".png"); - return path.toString(); - } - /** * 获取临时文件路径 * @param ext 扩展名 @@ -72,95 +41,6 @@ public class PathManager { return path.toString(); } - /** - * 获取上传路径 - * - * @return - */ - public static String getUploadPath() { - try { - //获取跟目录 - File path = new File(ResourceUtils.getURL("classpath:").getPath()); - if (!path.exists()) path = new File(""); - - //如果上传目录为/static/upload/,则可以如下获取: - File upload = new File(path.getAbsolutePath(), "static/upload/"); - if (!upload.exists()) upload.mkdirs(); - return upload.getPath(); - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - - /** - * 获取 APP 路径 - * - * @param app - * @return - */ - public static String getAppPath(App app) { - return getUploadPath() + File.separator + app.getPlatform() + File.separator + app.getBundleID() + File.separator; - } - - /** - * 获取包的完整路径 - * - * @param aPackage - * @return - */ - public static String getFullPath(Package aPackage) { - return getUploadPath() + File.separator + getRelativePath(aPackage); - } - - /** - * 获取包的相对路径 - * - * @param aPackage - * @return - */ - public static String getRelativePath(Package aPackage) { - if (aPackage == null) return null; - StringBuilder path = new StringBuilder(); - path.append(aPackage.getPlatform()).append(File.separator); - path.append(aPackage.getApp().getOwner().getId()).append(File.separator); - path.append(aPackage.getBundleID()).append(File.separator); - path.append(aPackage.getCreateTime()).append(File.separator); - return path.toString(); - } - - /** - * 清除目录 - * - * @param path - */ - public static void deleteDirectory(String path) { - File dir = new File(path); - if (dir.exists()) { - try { - FileUtils.deleteDirectory(dir); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - /** - * 获取包所在路径 - * - * @param aPackage - * @param isHttps - * @return - */ - public String getPackageResourceURL(Package aPackage, boolean isHttps) { -// getBaseURL() + "/fetch/" + aPackage.getSourceFile().getKey(); -// String baseURL = getBaseURL(isHttps); -// String resourceURL = baseURL + aPackage.getPlatform() + "/" + aPackage.getBundleID() -// + "/" + aPackage.getCreateTime() + "/"; -// return resourceURL; - return null; - } - /** * 获取证书路径 * diff --git a/src/main/java/org/yzr/utils/parser/APKParser.java b/src/main/java/org/yzr/utils/parser/APKParser.java index 899b89a..cd65ebb 100644 --- a/src/main/java/org/yzr/utils/parser/APKParser.java +++ b/src/main/java/org/yzr/utils/parser/APKParser.java @@ -39,14 +39,12 @@ public class APKParser implements PackageParser { aPackage.setCreateTime(System.currentTimeMillis()); int iconCount = apkFile.getAllIcons().size(); if (iconCount > 0) { - IconFace icon = apkFile.getAllIcons().get(iconCount - 1); - String iconPath = PathManager.getTempIconPath(aPackage); + String iconPath = PathManager.getTempFilePath("png"); File iconFile = new File(iconPath); + IconFace icon = apkFile.getAllIcons().get(iconCount - 1); FileUtils.writeByteArrayToFile(iconFile, icon.getData()); - String sourceIconPath = PathManager.getTempFilePath("png"); - PNGConverter.convert(iconPath, sourceIconPath); Storage iconStorage = new Storage(); - iconStorage.setUrl(sourceIconPath); + iconStorage.setUrl(iconPath); aPackage.setIconFile(iconStorage); } apkFile.close(); diff --git a/src/main/java/org/yzr/vo/PackageViewModel.java b/src/main/java/org/yzr/vo/PackageViewModel.java index 51b26b0..412d46b 100644 --- a/src/main/java/org/yzr/vo/PackageViewModel.java +++ b/src/main/java/org/yzr/vo/PackageViewModel.java @@ -36,6 +36,7 @@ public class PackageViewModel { private List devices; private int deviceCount; private String message; + private String iconKey; public PackageViewModel(Package aPackage, HttpServletRequest request) { String httpURL = PathManager.request(request).getBaseURL(); @@ -48,6 +49,7 @@ public class PackageViewModel { this.name = aPackage.getName(); this.createTime = aPackage.getCreateTime(); this.buildVersion = aPackage.getBuildVersion(); + this.iconKey = aPackage.getIconFile().getKey(); this.displaySize = String.format("%.2f MB", aPackage.getSize() / (1.0F * FileUtils.ONE_MB)); Date updateTime = new Date(this.createTime); String displayTime = (new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(updateTime); @@ -174,4 +176,8 @@ public class PackageViewModel { public String getMessage() { return message; } + + public String getIconKey() { + return iconKey; + } }