From 5c08ed607ad0cc604a4b55ab2d87a733ab00754c Mon Sep 17 00:00:00 2001 From: anian Date: Sun, 19 Jul 2026 01:22:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=90=9C=E7=B4=A2=E5=BC=95?= =?UTF-8?q?=E6=93=8E=E6=94=B6=E5=BD=95=E4=B8=8D=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 9 ++++++++ gradle.properties | 2 +- .../java/run/halo/moments/ModelConst.java | 2 -- .../search/MomentHaloDocumentsProvider.java | 23 +++++++++++++------ 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 97869d3..419e376 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,12 @@ +# anian-plugin-moments + +> 基于原作者v1.13.1代码修改 + +#### v1.13.1-1 +1. 修复搜索引擎收录不全 + + + # plugin-moments Halo 2.0 的瞬间管理插件,提供一个轻量级的内容发布功能,支持发布图文、视频、音频等内容。 diff --git a/gradle.properties b/gradle.properties index 6845d83..db9a0d8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version=1.0.1-SNAPSHOT +version=1.13.1-1 diff --git a/src/main/java/run/halo/moments/ModelConst.java b/src/main/java/run/halo/moments/ModelConst.java index b56f126..215e153 100644 --- a/src/main/java/run/halo/moments/ModelConst.java +++ b/src/main/java/run/halo/moments/ModelConst.java @@ -9,6 +9,4 @@ package run.halo.moments; public enum ModelConst { ; public static final String TEMPLATE_ID = "_templateId"; - public static final Integer DEFAULT_PAGE_SIZE = 10; - public static final Integer SEARCH_DEFAULT_PAGE_SIZE = 200; } diff --git a/src/main/java/run/halo/moments/search/MomentHaloDocumentsProvider.java b/src/main/java/run/halo/moments/search/MomentHaloDocumentsProvider.java index 233f325..012a5a4 100644 --- a/src/main/java/run/halo/moments/search/MomentHaloDocumentsProvider.java +++ b/src/main/java/run/halo/moments/search/MomentHaloDocumentsProvider.java @@ -1,17 +1,18 @@ package run.halo.moments.search; -import static run.halo.moments.ModelConst.SEARCH_DEFAULT_PAGE_SIZE; +import static run.halo.app.extension.index.query.QueryFactory.equal; +import static run.halo.app.extension.index.query.QueryFactory.isNull; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Component; import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; import run.halo.app.extension.ListOptions; import run.halo.app.extension.ListResult; import run.halo.app.extension.PageRequest; import run.halo.app.extension.PageRequestImpl; import run.halo.app.extension.ReactiveExtensionClient; -import run.halo.app.extension.index.query.QueryFactory; import run.halo.app.extension.router.selector.FieldSelector; import run.halo.app.search.HaloDocument; import run.halo.app.search.HaloDocumentsProvider; @@ -26,6 +27,8 @@ public class MomentHaloDocumentsProvider implements HaloDocumentsProvider { public static final String MOMENT_DOCUMENT_TYPE = "moment.moment.halo.run"; + private static final int PAGE_SIZE = 200; + private final ReactiveExtensionClient client; private final DocumentConverter converter; @@ -33,14 +36,16 @@ public class MomentHaloDocumentsProvider implements HaloDocumentsProvider { @Override public Flux fetchAll() { var options = new ListOptions(); - var notDeleted = QueryFactory.isNull("metadata.deletionTimestamp"); - var approved = QueryFactory.equal("spec.approved", "true"); + var notDeleted = isNull("metadata.deletionTimestamp"); + var approved = equal("spec.approved", Boolean.TRUE.toString()); options.setFieldSelector(FieldSelector.of(notDeleted).andQuery(approved)); var pageRequest = createPageRequest(); // make sure the moments are approved and not deleted. return client.listBy(Moment.class, options, pageRequest) - .map(ListResult::getItems) - .flatMapMany(Flux::fromIterable) + .expand(result -> result.hasNext() + ? client.listBy(Moment.class, options, nextPage(result, pageRequest.getSort())) + : Mono.empty()) + .flatMap(result -> Flux.fromIterable(result.getItems())) .flatMap(converter::convert); } @@ -50,7 +55,11 @@ public class MomentHaloDocumentsProvider implements HaloDocumentsProvider { } private PageRequest createPageRequest() { - return PageRequestImpl.of(1, SEARCH_DEFAULT_PAGE_SIZE, + return PageRequestImpl.of(1, PAGE_SIZE, Sort.by("metadata.creationTimestamp", "metadata.name")); } + + private static PageRequest nextPage(ListResult result, Sort sort) { + return PageRequestImpl.of(result.getPage() + 1, result.getSize(), sort); + } }