🔨 重构代码, 去除无效引用。

This commit is contained in:
zhaojun1998
2020-03-08 11:43:42 +08:00
parent de2f7e4b80
commit 430aee2b7f
16 changed files with 63 additions and 113 deletions

View File

@@ -1,12 +1,11 @@
package im.zhaojun.zfile.cache;
import cn.hutool.core.util.StrUtil;
import im.zhaojun.zfile.model.constant.ZFileConstant;
import im.zhaojun.zfile.model.dto.FileItemDTO;
import im.zhaojun.zfile.model.dto.SystemConfigDTO;
import im.zhaojun.zfile.service.SystemConfigService;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
@@ -23,9 +22,6 @@ public class ZFileCache {
public Date lastCacheAutoRefreshDate;
@Resource
private SystemConfigService systemConfigService;
public synchronized void put(String key, List<FileItemDTO> value) {
fileCache.put(key, value);
}
@@ -42,11 +38,17 @@ public class ZFileCache {
return fileCache.size();
}
public List<FileItemDTO> find(String key, boolean ignoreCase) {
public List<FileItemDTO> find(String key, boolean ignoreCase, boolean searchContainEncryptedFile) {
List<FileItemDTO> result = new ArrayList<>();
Collection<List<FileItemDTO>> values = fileCache.values();
for (List<FileItemDTO> fileItemList : values) {
// 如果开启了 "搜索包含加密文件" 选项, 则直接返回 true.
if (!searchContainEncryptedFile && isEncryptedFolder(fileItemList)) {
continue;
}
for (FileItemDTO fileItemDTO : fileItemList) {
boolean testResult;
@@ -91,4 +93,20 @@ public class ZFileCache {
public void setLastCacheAutoRefreshDate(Date lastCacheAutoRefreshDate) {
this.lastCacheAutoRefreshDate = lastCacheAutoRefreshDate;
}
/**
* 不是加密文件夹
* @param list 文件夹中的内容
* @return 返回此文件夹是否加密.
*/
private boolean isEncryptedFolder(List<FileItemDTO> list) {
// 遍历文件判断是否包含
for (FileItemDTO fileItemDTO : list) {
if (Objects.equals(ZFileConstant.PASSWORD_FILE_NAME, fileItemDTO.getName())) {
return true;
}
}
return false;
}
}

View File

@@ -1,7 +1,5 @@
package im.zhaojun.zfile.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpRequest;
import org.springframework.http.client.ClientHttpRequestExecution;
@@ -17,12 +15,9 @@ import java.util.Collections;
*/
public class ContentTypeTextToTextJson implements ClientHttpRequestInterceptor {
private static final Logger LOG = LoggerFactory.getLogger(ContentTypeTextToTextJson.class);
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution)
throws IOException {
URI uri = request.getURI();
ClientHttpResponse response = execution.execute(request, body);
HttpHeaders headers = response.getHeaders();
headers.put("Content-Type", Collections.singletonList("application/text"));

View File

@@ -1,10 +1,8 @@
package im.zhaojun.zfile.config;
import im.zhaojun.zfile.cache.ZFileCache;
import im.zhaojun.zfile.model.enums.StorageTypeEnum;
import im.zhaojun.zfile.service.base.AbstractBaseFileService;
import im.zhaojun.zfile.service.StorageConfigService;
import im.zhaojun.zfile.service.SystemConfigService;
import im.zhaojun.zfile.service.base.AbstractBaseFileService;
import im.zhaojun.zfile.service.impl.OneDriveChinaServiceImpl;
import im.zhaojun.zfile.service.impl.OneDriveServiceImpl;
import lombok.extern.slf4j.Slf4j;
@@ -24,12 +22,6 @@ import java.util.Objects;
@Slf4j
public class GlobalScheduleTask {
@Resource
private ZFileCache zFileCache;
@Resource
private StorageConfigService storageConfigService;
@Resource
private OneDriveServiceImpl oneDriveServiceImpl;

View File

@@ -3,27 +3,30 @@ package im.zhaojun.zfile.controller;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ZipUtil;
import im.zhaojun.zfile.config.StorageTypeFactory;
import im.zhaojun.zfile.model.entity.StorageConfig;
import im.zhaojun.zfile.model.support.SystemMonitorInfo;
import im.zhaojun.zfile.model.dto.ResultBean;
import im.zhaojun.zfile.model.dto.StorageStrategyDTO;
import im.zhaojun.zfile.model.dto.SystemConfigDTO;
import im.zhaojun.zfile.model.entity.StorageConfig;
import im.zhaojun.zfile.model.enums.StorageTypeEnum;
import im.zhaojun.zfile.service.base.AbstractBaseFileService;
import im.zhaojun.zfile.service.support.FileAsyncCacheService;
import im.zhaojun.zfile.model.support.SystemMonitorInfo;
import im.zhaojun.zfile.service.StorageConfigService;
import im.zhaojun.zfile.service.SystemConfigService;
import im.zhaojun.zfile.service.base.AbstractBaseFileService;
import im.zhaojun.zfile.service.support.FileAsyncCacheService;
import im.zhaojun.zfile.util.FileUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.*;
import java.util.concurrent.ScheduledExecutorService;
/**
* 后台管理
@@ -44,8 +47,6 @@ public class AdminController {
@Resource
private FileAsyncCacheService fileAsyncCacheService;
private ScheduledExecutorService scheduledExecutorService;
/**
* 获取系统配置
*/

View File

@@ -3,10 +3,10 @@ package im.zhaojun.zfile.controller;
import im.zhaojun.zfile.cache.ZFileCache;
import im.zhaojun.zfile.model.dto.CacheConfigDTO;
import im.zhaojun.zfile.model.dto.ResultBean;
import im.zhaojun.zfile.service.SystemConfigService;
import im.zhaojun.zfile.service.base.AbstractBaseFileService;
import im.zhaojun.zfile.service.support.FileAsyncCacheService;
import im.zhaojun.zfile.service.support.FileCacheService;
import im.zhaojun.zfile.service.SystemConfigService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -47,7 +47,6 @@ public class CacheController {
@GetMapping("/config")
public ResultBean cacheConfig() {
AbstractBaseFileService fileService = systemConfigService.getCurrentFileService();
CacheConfigDTO cacheConfigDTO = new CacheConfigDTO();
cacheConfigDTO.setEnableCache(systemConfigService.getEnableCache());
cacheConfigDTO.setCacheFinish(fileAsyncCacheService.isCacheFinish());

View File

@@ -4,8 +4,8 @@ import cn.hutool.core.util.URLUtil;
import im.zhaojun.zfile.model.constant.ZFileConstant;
import im.zhaojun.zfile.model.dto.FileItemDTO;
import im.zhaojun.zfile.model.enums.FileTypeEnum;
import im.zhaojun.zfile.service.base.AbstractBaseFileService;
import im.zhaojun.zfile.service.SystemConfigService;
import im.zhaojun.zfile.service.base.AbstractBaseFileService;
import org.springframework.stereotype.Controller;
import org.springframework.util.AntPathMatcher;
import org.springframework.web.bind.annotation.GetMapping;
@@ -13,7 +13,6 @@ import org.springframework.web.servlet.HandlerMapping;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.net.MalformedURLException;
import java.util.Objects;
/**

View File

@@ -27,11 +27,7 @@ public class FileListCacheAop {
@Resource
private SystemConfigService systemConfigService;
@Pointcut("execution(public * im.zhaojun.zfile.service.base.AbstractBaseFileService.fileList(..))")
public void pointcut() {
}
@Around(value = "pointcut()")
@Around(value = "execution(public * im.zhaojun.zfile.service.base.AbstractBaseFileService.fileList(..))")
public Object around(ProceedingJoinPoint point) throws Throwable {
List<FileItemDTO> result;

View File

@@ -23,8 +23,6 @@ public class ResultBean implements Serializable {
private Object data;
private int total;
private ResultBean() {
super();
}

View File

@@ -1,6 +1,5 @@
package im.zhaojun.zfile.model.dto;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;

View File

@@ -11,7 +11,6 @@ import im.zhaojun.zfile.model.entity.SystemConfig;
import im.zhaojun.zfile.model.enums.StorageTypeEnum;
import im.zhaojun.zfile.repository.SystemConfigRepository;
import im.zhaojun.zfile.service.base.AbstractBaseFileService;
import im.zhaojun.zfile.service.support.FileCacheService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -33,9 +32,6 @@ public class SystemConfigService {
@Resource
private SystemConfigRepository systemConfigRepository;
@Resource
private FileCacheService fileCacheService;
private Class<SystemConfigDTO> systemConfigClazz = SystemConfigDTO.class;
public SystemConfigDTO getSystemConfig() {

View File

@@ -2,13 +2,12 @@ package im.zhaojun.zfile.service.base;
import cn.hutool.core.util.BooleanUtil;
import im.zhaojun.zfile.cache.ZFileCache;
import im.zhaojun.zfile.service.support.FileAsyncCacheService;
import im.zhaojun.zfile.service.support.FileCacheService;
import im.zhaojun.zfile.service.SystemConfigService;
import im.zhaojun.zfile.model.constant.ZFileConstant;
import im.zhaojun.zfile.model.dto.FileItemDTO;
import im.zhaojun.zfile.model.dto.SystemConfigDTO;
import im.zhaojun.zfile.model.enums.StorageTypeEnum;
import im.zhaojun.zfile.service.SystemConfigService;
import im.zhaojun.zfile.service.support.FileAsyncCacheService;
import im.zhaojun.zfile.service.support.FileCacheService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.aop.framework.AopContext;
import org.springframework.beans.factory.annotation.Value;
@@ -16,7 +15,6 @@ import org.springframework.beans.factory.annotation.Value;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
/**
* @author zhaojun
@@ -24,8 +22,6 @@ import java.util.Objects;
@Slf4j
public abstract class AbstractBaseFileService extends FileCacheService implements BaseFileService {
private static final String SYSTEM_CONFIG_CACHE_PREFIX = "zfile-cache:";
@Value("${zfile.cache.timeout}")
protected Long timeout;
@@ -106,29 +102,11 @@ public abstract class AbstractBaseFileService extends FileCacheService implement
* @return 包含该文件名的所有文件或文件夹
*/
public List<FileItemDTO> search(String name) {
boolean searchIgnoreCase = systemConfigService.getSearchIgnoreCase();
return zFileCache.find(name, searchIgnoreCase);
}
/**
* 不是加密文件夹
* @param list 文件夹中的内容
* @return 返回此文件夹是否加密.
*/
private boolean isNotEncryptedFolder(List<FileItemDTO> list) {
// 如果开启了 "搜索包含加密文件" 选项, 则直接返回 true.
SystemConfigDTO systemConfig = systemConfigService.getSystemConfig();
if (BooleanUtil.isFalse(systemConfig.getSearchContainEncryptedFile())) {
return true;
}
// 遍历文件判断是否包含
for (FileItemDTO fileItemDTO : list) {
if (Objects.equals(ZFileConstant.PASSWORD_FILE_NAME, fileItemDTO.getName())) {
return false;
}
}
return true;
boolean searchIgnoreCase = BooleanUtil.isTrue(systemConfig.getSearchIgnoreCase());
boolean searchContainEncryptedFile = BooleanUtil.isTrue(systemConfig.getSearchContainEncryptedFile());
return zFileCache.find(name, searchIgnoreCase, searchContainEncryptedFile);
}
/**

View File

@@ -2,16 +2,20 @@ package im.zhaojun.zfile.service.impl;
import cn.hutool.core.util.URLUtil;
import cn.hutool.extra.ftp.Ftp;
import im.zhaojun.zfile.model.entity.StorageConfig;
import im.zhaojun.zfile.model.constant.StorageConfigConstant;
import im.zhaojun.zfile.model.dto.FileItemDTO;
import im.zhaojun.zfile.model.entity.StorageConfig;
import im.zhaojun.zfile.model.enums.FileTypeEnum;
import im.zhaojun.zfile.model.enums.StorageTypeEnum;
import im.zhaojun.zfile.service.StorageConfigService;
import im.zhaojun.zfile.service.base.AbstractBaseFileService;
import im.zhaojun.zfile.service.base.BaseFileService;
import im.zhaojun.zfile.service.StorageConfigService;
import im.zhaojun.zfile.util.StringUtils;
import org.apache.commons.net.ftp.*;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
@@ -127,20 +131,4 @@ public class FtpServiceImpl extends AbstractBaseFileService implements BaseFileS
fileItemDTO.setUrl(getDownloadUrl(path));
return fileItemDTO;
}
private void ifDisConnectionReConnection() {
FTPClient ftpClient = ftp.getClient();
try {
// 验证FTP服务器是否登录成功
int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.println("断开了连接, 已尝试重新连接.");
ftpClient.connect(host, Integer.parseInt(port));
ftpClient.login(username, password);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

View File

@@ -1,12 +1,11 @@
package im.zhaojun.zfile.service.impl;
import im.zhaojun.zfile.config.GlobalScheduleTask;
import im.zhaojun.zfile.model.entity.StorageConfig;
import im.zhaojun.zfile.model.constant.StorageConfigConstant;
import im.zhaojun.zfile.model.entity.StorageConfig;
import im.zhaojun.zfile.model.enums.StorageTypeEnum;
import im.zhaojun.zfile.service.base.BaseFileService;
import im.zhaojun.zfile.service.StorageConfigService;
import im.zhaojun.zfile.service.base.AbstractOneDriveServiceBase;
import im.zhaojun.zfile.service.base.BaseFileService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -22,9 +21,6 @@ import java.util.Map;
@Slf4j
public class OneDriveChinaServiceImpl extends AbstractOneDriveServiceBase implements BaseFileService {
@Resource
private GlobalScheduleTask globalScheduleTask;
@Resource
private StorageConfigService storageConfigService;

View File

@@ -1,12 +1,11 @@
package im.zhaojun.zfile.service.impl;
import im.zhaojun.zfile.config.GlobalScheduleTask;
import im.zhaojun.zfile.model.entity.StorageConfig;
import im.zhaojun.zfile.model.constant.StorageConfigConstant;
import im.zhaojun.zfile.model.entity.StorageConfig;
import im.zhaojun.zfile.model.enums.StorageTypeEnum;
import im.zhaojun.zfile.service.base.BaseFileService;
import im.zhaojun.zfile.service.StorageConfigService;
import im.zhaojun.zfile.service.base.AbstractOneDriveServiceBase;
import im.zhaojun.zfile.service.base.BaseFileService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -22,9 +21,6 @@ import java.util.Map;
@Slf4j
public class OneDriveServiceImpl extends AbstractOneDriveServiceBase implements BaseFileService {
@Resource
private GlobalScheduleTask globalScheduleTask;
@Resource
private StorageConfigService storageConfigService;

View File

@@ -1,11 +1,11 @@
package im.zhaojun.zfile.service.support;
import im.zhaojun.zfile.cache.ZFileCache;
import im.zhaojun.zfile.service.SystemConfigService;
import im.zhaojun.zfile.config.StorageTypeFactory;
import im.zhaojun.zfile.model.dto.FileItemDTO;
import im.zhaojun.zfile.model.enums.FileTypeEnum;
import im.zhaojun.zfile.model.enums.StorageTypeEnum;
import im.zhaojun.zfile.service.SystemConfigService;
import im.zhaojun.zfile.service.base.AbstractBaseFileService;
import im.zhaojun.zfile.service.base.BaseFileService;
import im.zhaojun.zfile.util.StringUtils;
@@ -15,7 +15,12 @@ import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
@@ -71,8 +76,6 @@ public class FileAsyncCacheService {
return;
}
Integer cacheDirectoryCount = 0;
log.info("缓存 {} 所有文件开始", storageStrategy.getDescription());
long startTime = System.currentTimeMillis();
try {

View File

@@ -3,7 +3,6 @@ package im.zhaojun.zfile.util;
import cn.hutool.core.net.NetUtil;
import im.zhaojun.zfile.exception.InitializeException;
import im.zhaojun.zfile.service.support.FileAsyncCacheService;
import im.zhaojun.zfile.service.SystemConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.context.ApplicationListener;
@@ -12,7 +11,7 @@ import org.springframework.lang.NonNull;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.*;
import java.util.LinkedHashSet;
/**
* 项目启动监听器, 当项目启动时, 遍历当前对象存储的所有内容, 添加到缓存中.
@@ -28,9 +27,6 @@ public class StartupListener implements ApplicationListener<ApplicationStartedEv
@Resource
private Environment environment;
@Resource
private SystemConfigService systemConfigService;
@Override
public void onApplicationEvent(@NonNull ApplicationStartedEvent event) {
printStartInfo();