diff --git a/src/main/java/run/halo/app/controller/admin/api/OptionController.java b/src/main/java/run/halo/app/controller/admin/api/OptionController.java index 09730f8fc..54a0cc458 100644 --- a/src/main/java/run/halo/app/controller/admin/api/OptionController.java +++ b/src/main/java/run/halo/app/controller/admin/api/OptionController.java @@ -1,6 +1,7 @@ package run.halo.app.controller.admin.api; import io.swagger.annotations.ApiOperation; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import run.halo.app.model.dto.OptionDTO; import run.halo.app.model.params.OptionParam; @@ -38,12 +39,17 @@ public class OptionController { @GetMapping("map_view") @ApiOperation("Lists all options with map view") - public Map listAllWithMapView() { - return optionService.listOptions(); + public Map listAllWithMapView(@RequestParam(value = "key", required = false) List keys) { + if (CollectionUtils.isEmpty(keys)) { + return optionService.listOptions(); + } + + return optionService.listOptions(keys); } @GetMapping("map_keys") @ApiOperation("List all of options by keys") + @Deprecated public Map listByKeysWithMapView(@RequestParam(value = "keys") String keys) { return optionService.listByKeys(keys); } diff --git a/src/main/java/run/halo/app/service/OptionService.java b/src/main/java/run/halo/app/service/OptionService.java index 34c08edf6..8da5d3f4b 100755 --- a/src/main/java/run/halo/app/service/OptionService.java +++ b/src/main/java/run/halo/app/service/OptionService.java @@ -73,6 +73,9 @@ public interface OptionService extends CrudService { @NonNull Map listOptions(); + @NonNull + Map listOptions(List keys); + /** * List by keys * @@ -80,6 +83,7 @@ public interface OptionService extends CrudService { * @return Map */ @NonNull + @Deprecated Map listByKeys(String params); /** diff --git a/src/main/java/run/halo/app/service/impl/OptionServiceImpl.java b/src/main/java/run/halo/app/service/impl/OptionServiceImpl.java index 43bc6af3b..d50f1be7b 100644 --- a/src/main/java/run/halo/app/service/impl/OptionServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/OptionServiceImpl.java @@ -178,6 +178,23 @@ public class OptionServiceImpl extends AbstractCrudService impl }); } + @Override + public Map listOptions(List keys) { + if (CollectionUtils.isEmpty(keys)) { + return Collections.emptyMap(); + } + + Map optionMap = listOptions(); + + Map result = new HashMap<>(keys.size()); + + keys.stream() + .filter(optionMap::containsKey) + .forEach(key -> result.put(key, optionMap.get(key))); + + return result; + } + @Override public Map listByKeys(String params) { Assert.notNull(params, "Keys must not be null");