diff --git a/src/main/java/im/zhaojun/common/service/AbstractFileService.java b/src/main/java/im/zhaojun/common/service/AbstractFileService.java index 6be9e59..d38428c 100644 --- a/src/main/java/im/zhaojun/common/service/AbstractFileService.java +++ b/src/main/java/im/zhaojun/common/service/AbstractFileService.java @@ -42,6 +42,8 @@ public abstract class AbstractFileService extends FileCacheService implements Fi protected boolean isInitialized = false; + protected String basePath; + @Resource private SystemConfigService systemConfigService; diff --git a/src/main/java/im/zhaojun/common/service/AbstractS3FileService.java b/src/main/java/im/zhaojun/common/service/AbstractS3FileService.java index 683f260..b55e084 100644 --- a/src/main/java/im/zhaojun/common/service/AbstractS3FileService.java +++ b/src/main/java/im/zhaojun/common/service/AbstractS3FileService.java @@ -29,8 +29,6 @@ public abstract class AbstractS3FileService extends AbstractFileService { protected String path; - protected String basePath; - protected String bucketName; protected String domain; @@ -58,7 +56,7 @@ public abstract class AbstractS3FileService extends AbstractFileService { */ public List s3FileList(String path) { path = StringUtils.removeFirstSeparator(path); - String fullPath = StringUtils.removeFirstSeparator(getFullPath()); + String fullPath = StringUtils.removeFirstSeparator(StringUtils.getFullPath(basePath, path)); List fileItemList = new ArrayList<>(); ObjectListing objectListing = s3Client.listObjects(new ListObjectsRequest(bucketName, fullPath, "", "/", 1000)); @@ -112,16 +110,6 @@ public abstract class AbstractS3FileService extends AbstractFileService { return URLUtil.decode(defaultUrl); } - /** - * 获取 basePath + path 的全路径地址. - * @return basePath + path 的全路径地址. - */ - public String getFullPath() { - String basePath = ObjectUtil.defaultIfNull(this.basePath, ""); - String path = ObjectUtil.defaultIfNull(this.path, ""); - return StringUtils.removeDuplicateSeparator(basePath + "/" + path); - } - @Override public FileItemDTO getFileItem(String path) { List list = fileList(path); diff --git a/src/main/java/im/zhaojun/common/util/StringUtils.java b/src/main/java/im/zhaojun/common/util/StringUtils.java index d498112..c59595a 100644 --- a/src/main/java/im/zhaojun/common/util/StringUtils.java +++ b/src/main/java/im/zhaojun/common/util/StringUtils.java @@ -1,5 +1,7 @@ package im.zhaojun.common.util; +import cn.hutool.core.util.ObjectUtil; + /** * @author zhaojun */ @@ -88,4 +90,14 @@ public class StringUtils { public static boolean isNotNullOrEmpty(String s) { return !isNullOrEmpty(s); } + + /** + * 获取 basePath + path 的全路径地址. + * @return basePath + path 的全路径地址. + */ + public static String getFullPath(String basePath, String path) { + basePath = ObjectUtil.defaultIfNull(basePath, ""); + path = ObjectUtil.defaultIfNull(path, ""); + return StringUtils.removeDuplicateSeparator(basePath + "/" + path); + } } diff --git a/src/main/java/im/zhaojun/onedrive/china/service/OneDriveServiceChinaImpl.java b/src/main/java/im/zhaojun/onedrive/china/service/OneDriveServiceChinaImpl.java index a0112f1..f5a19d4 100644 --- a/src/main/java/im/zhaojun/onedrive/china/service/OneDriveServiceChinaImpl.java +++ b/src/main/java/im/zhaojun/onedrive/china/service/OneDriveServiceChinaImpl.java @@ -40,6 +40,7 @@ public class OneDriveServiceChinaImpl extends AbstractFileService implements Fil storageConfigService.selectStorageConfigMapByKey(getStorageTypeEnum()); String accessToken = stringStorageConfigMap.get(StorageConfigConstant.ACCESS_TOKEN_KEY).getValue(); String refreshToken = stringStorageConfigMap.get(StorageConfigConstant.REFRESH_TOKEN_KEY).getValue(); + super.basePath = stringStorageConfigMap.get(StorageConfigConstant.BASE_PATH).getValue(); if (StringUtils.isEmpty(accessToken) || StringUtils.isEmpty(refreshToken)) { log.debug("初始化存储策略 [{}] 失败: 参数不完整", getStorageTypeEnum().getDescription()); @@ -55,7 +56,7 @@ public class OneDriveServiceChinaImpl extends AbstractFileService implements Fil @Override public List fileList(String path) { - return oneDriveChinaService.list(path); + return oneDriveChinaService.list(basePath, path); } @Override diff --git a/src/main/java/im/zhaojun/onedrive/common/service/AbstractOneDriveService.java b/src/main/java/im/zhaojun/onedrive/common/service/AbstractOneDriveService.java index d00a250..f926edf 100644 --- a/src/main/java/im/zhaojun/onedrive/common/service/AbstractOneDriveService.java +++ b/src/main/java/im/zhaojun/onedrive/common/service/AbstractOneDriveService.java @@ -83,7 +83,10 @@ public abstract class AbstractOneDriveService { return oneDriveRestTemplate.getForObject(DRIVER_INFO_URL, String.class); } - public List list(String path) { + public List list(String basePath, String path) { + path = StringUtils.removeFirstSeparator(path); + String fullPath = StringUtils.getFullPath(basePath, path); + List result = new ArrayList<>(); String nextLink = null; @@ -93,14 +96,14 @@ public abstract class AbstractOneDriveService { if (nextLink != null) { requestUrl = nextLink; - }else if ("/".equalsIgnoreCase(path)) { + }else if ("/".equalsIgnoreCase(fullPath) || "".equalsIgnoreCase(fullPath)) { requestUrl = DRIVER_ROOT_URL; } else { requestUrl = DRIVER_ITEMS_URL; } - path = StringUtils.removeLastSeparator(path); + fullPath = StringUtils.removeLastSeparator(fullPath); - ResponseEntity responseEntity = oneDriveRestTemplate.getForEntity(requestUrl, String.class, getGraphEndPoint(), path); + ResponseEntity responseEntity = oneDriveRestTemplate.getForEntity(requestUrl, String.class, getGraphEndPoint(), fullPath); String body = responseEntity.getBody(); JSONObject root = JSON.parseObject(body); diff --git a/src/main/java/im/zhaojun/onedrive/international/service/OneDriveServiceImpl.java b/src/main/java/im/zhaojun/onedrive/international/service/OneDriveServiceImpl.java index 179a652..f622ce4 100644 --- a/src/main/java/im/zhaojun/onedrive/international/service/OneDriveServiceImpl.java +++ b/src/main/java/im/zhaojun/onedrive/international/service/OneDriveServiceImpl.java @@ -40,6 +40,7 @@ public class OneDriveServiceImpl extends AbstractFileService implements FileServ storageConfigService.selectStorageConfigMapByKey(getStorageTypeEnum()); String accessToken = stringStorageConfigMap.get(StorageConfigConstant.ACCESS_TOKEN_KEY).getValue(); String refreshToken = stringStorageConfigMap.get(StorageConfigConstant.REFRESH_TOKEN_KEY).getValue(); + super.basePath = stringStorageConfigMap.get(StorageConfigConstant.BASE_PATH).getValue(); if (StringUtils.isEmpty(accessToken) || StringUtils.isEmpty(refreshToken)) { log.debug("初始化存储策略 [{}] 失败: 参数不完整", getStorageTypeEnum().getDescription()); @@ -55,7 +56,7 @@ public class OneDriveServiceImpl extends AbstractFileService implements FileServ @Override public List fileList(String path) { - return oneDriveService.list(path); + return oneDriveService.list(basePath, path); } @Override diff --git a/src/main/resources/db/data.sql b/src/main/resources/db/data.sql index 97ae570..a4b8b88 100644 --- a/src/main/resources/db/data.sql +++ b/src/main/resources/db/data.sql @@ -51,7 +51,7 @@ INSERT INTO STORAGE_CONFIG (`ID`, `k`, `TITLE`, `TYPE`) VALUES (37, 'endPoint', INSERT INTO STORAGE_CONFIG (`ID`, `k`, `TITLE`, `TYPE`) VALUES (38, 'base-path', '基路径', 'qiniu'); INSERT INTO STORAGE_CONFIG (`ID`, `k`, `TITLE`, `TYPE`) VALUES (39, 'base-path', '基路径', 'aliyun'); INSERT INTO STORAGE_CONFIG (`ID`, `k`, `TITLE`, `TYPE`) VALUES (40, 'base-path', '基路径', 'huawei'); -INSERT INTO STORAGE_CONFIG (`ID`, `k`, `TITLE`, `TYPE`) VALUES (41, 'ftp', '基路径', 'ftp'); +INSERT INTO STORAGE_CONFIG (`ID`, `k`, `TITLE`, `TYPE`) VALUES (41, 'base-path', '基路径', 'ftp'); INSERT INTO STORAGE_CONFIG (`ID`, `k`, `TITLE`, `TYPE`) VALUES (42, 'accessToken', '访问令牌', 'onedrive'); INSERT INTO STORAGE_CONFIG (`ID`, `k`, `TITLE`, `TYPE`) VALUES (43, 'refreshToken', '刷新令牌', 'onedrive'); INSERT INTO STORAGE_CONFIG (`ID`, `k`, `TITLE`, `TYPE`) VALUES (44, 'accessToken', '访问令牌', 'onedrive-china'); @@ -63,4 +63,6 @@ INSERT INTO STORAGE_CONFIG (`ID`, `k`, `TITLE`, `TYPE`) VALUES (49, 'bucket-name INSERT INTO STORAGE_CONFIG (`ID`, `k`, `TITLE`, `TYPE`) VALUES (50, 'base-path', '基路径', 's3'); INSERT INTO STORAGE_CONFIG (`ID`, `k`, `TITLE`, `TYPE`) VALUES (51, 'domain', '加速域名', 's3'); INSERT INTO STORAGE_CONFIG (`ID`, `k`, `TITLE`, `TYPE`) VALUES (52, 'pathStyle', '域名风格', 's3'); -INSERT INTO STORAGE_CONFIG (`ID`, `k`, `TITLE`, `TYPE`) VALUES (53, 'isPrivate', '是否是私有空间', 's3'); \ No newline at end of file +INSERT INTO STORAGE_CONFIG (`ID`, `k`, `TITLE`, `TYPE`) VALUES (53, 'isPrivate', '是否是私有空间', 's3'); +INSERT INTO STORAGE_CONFIG (`ID`, `k`, `TITLE`, `TYPE`) VALUES (54, 'base-path', '基路径', 'onedrive'); +INSERT INTO STORAGE_CONFIG (`ID`, `k`, `TITLE`, `TYPE`) VALUES (55, 'base-path', '基路径', 'onedrive-china'); \ No newline at end of file