From 669b413ff0570aee100316811be7532c1f6e6d36 Mon Sep 17 00:00:00 2001 From: zhaojun1998 Date: Fri, 24 Jan 2020 17:13:49 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E4=BC=98=E5=8C=96=E5=AD=98?= =?UTF-8?q?=E5=82=A8=E7=AD=96=E7=95=A5=E5=8A=9F=E8=83=BD,=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=98=AF=E5=90=A6=E5=88=9D=E5=A7=8B=E5=8C=96=E6=88=90?= =?UTF-8?q?=E5=8A=9F=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/controller/AdminController.java | 29 +++++++++++++++++-- .../common/model/dto/StorageStrategyDTO.java | 21 ++++++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 src/main/java/im/zhaojun/common/model/dto/StorageStrategyDTO.java diff --git a/src/main/java/im/zhaojun/common/controller/AdminController.java b/src/main/java/im/zhaojun/common/controller/AdminController.java index 03f65ea..8c20d5f 100644 --- a/src/main/java/im/zhaojun/common/controller/AdminController.java +++ b/src/main/java/im/zhaojun/common/controller/AdminController.java @@ -1,7 +1,9 @@ package im.zhaojun.common.controller; +import im.zhaojun.common.config.StorageTypeFactory; import im.zhaojun.common.model.StorageConfig; import im.zhaojun.common.model.dto.ResultBean; +import im.zhaojun.common.model.dto.StorageStrategyDTO; import im.zhaojun.common.model.dto.SystemConfigDTO; import im.zhaojun.common.model.enums.StorageTypeEnum; import im.zhaojun.common.service.AbstractFileService; @@ -17,6 +19,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; @@ -88,6 +91,18 @@ public class AdminController { return ResultBean.success(storageConfigList); } + @GetMapping("/support-strategy") + public ResultBean supportStrategy() { + List result = new ArrayList<>(); + StorageTypeEnum[] values = StorageTypeEnum.values(); + for (StorageTypeEnum value : values) { + AbstractFileService storageTypeService = StorageTypeFactory.getStorageTypeService(value); + result.add(new StorageStrategyDTO(value.getKey(), + value.getDescription(), + storageTypeService.getIsInitialized())); + } + return ResultBean.successData(result); + } /** * 保存存储策略 @@ -98,6 +113,7 @@ public class AdminController { */ @PostMapping("/storage-strategy") public ResultBean save(@RequestParam Map storageStrategyConfig, StorageTypeEnum storageStrategy) throws Exception { + // 保存设置. List storageConfigList = storageConfigService.selectStorageConfigByType(storageStrategy); for (StorageConfig storageConfig : storageConfigList) { String key = storageConfig.getKey(); @@ -106,6 +122,11 @@ public class AdminController { } storageConfigService.updateStorageConfig(storageConfigList); + // 获取当前修改的存储策略 Service, 尝试调用初始化. + AbstractFileService updateStorageStrategyService = StorageTypeFactory.getStorageTypeService(storageStrategy); + updateStorageStrategyService.init(); + + // 如果修改的为当前启用的缓存, 则重新进行缓存. StorageTypeEnum currentStorageStrategy = systemConfigService.getCurrentStorageStrategy(); if (Objects.equals(storageStrategy, currentStorageStrategy)) { if (log.isDebugEnabled()) { @@ -114,11 +135,15 @@ public class AdminController { AbstractFileService fileService = systemConfigService.getCurrentFileService(); fileService.clearFileCache(); - fileService.init(); fileAsyncCacheService.cacheGlobalFile(); } - return ResultBean.success(); + // 返回是否初始化成功. + if (updateStorageStrategyService.getIsInitialized()) { + return ResultBean.success(); + } else { + return ResultBean.error("保存成功, 但尝试初始化异常, 请检查设置."); + } } /** diff --git a/src/main/java/im/zhaojun/common/model/dto/StorageStrategyDTO.java b/src/main/java/im/zhaojun/common/model/dto/StorageStrategyDTO.java new file mode 100644 index 0000000..f2789b4 --- /dev/null +++ b/src/main/java/im/zhaojun/common/model/dto/StorageStrategyDTO.java @@ -0,0 +1,21 @@ +package im.zhaojun.common.model.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author Zhao Jun + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class StorageStrategyDTO { + + private String key; + + private String description; + + private boolean available; + +}