mirror of
https://gitee.com/shuto-github/intranet_app_manager.git
synced 2026-08-11 00:00:11 +08:00
优化部份逻辑
This commit is contained in:
@@ -27,8 +27,6 @@ public class AppController {
|
||||
|
||||
@Resource
|
||||
private AppService appService;
|
||||
@Resource
|
||||
private PathManager pathManager;
|
||||
|
||||
@RequiresAuthentication
|
||||
@GetMapping("/apps")
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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<String, String> extra, User user) throws Exception {
|
||||
Package aPackage = ParserClient.parse(filePath);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取证书路径
|
||||
*
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -36,6 +36,7 @@ public class PackageViewModel {
|
||||
private List<String> 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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user