mirror of
https://github.com/hs-web/hsweb-framework.git
synced 2026-06-20 09:52:14 +08:00
fix: 修复QueryHelper指定firstPageIndex失效问题
This commit is contained in:
@@ -211,7 +211,7 @@ public class DefaultQueryHelper implements QueryHelper {
|
||||
if (param == null) {
|
||||
return fetchPaged(0, 25);
|
||||
}
|
||||
return fetchPaged(param.getPageIndex(), param.getPageSize());
|
||||
return fetchPaged(param);
|
||||
}
|
||||
|
||||
private SqlRequest createPagingSql(SqlRequest request, int pageIndex, int pageSize) {
|
||||
@@ -228,9 +228,12 @@ public class DefaultQueryHelper implements QueryHelper {
|
||||
|
||||
@Override
|
||||
public Mono<PagerResult<R>> fetchPaged(int pageIndex, int pageSize) {
|
||||
QueryParamEntity param = this.param == null
|
||||
? new QueryParamEntity().doPaging(pageIndex, pageSize)
|
||||
: this.param.clone().doPaging(pageIndex,pageSize);
|
||||
return fetchPaged(this.param == null
|
||||
? new QueryParamEntity().doPaging(pageIndex, pageSize)
|
||||
: this.param.clone().<QueryParamEntity>doPaging(pageIndex, pageSize));
|
||||
}
|
||||
|
||||
public Mono<PagerResult<R>> fetchPaged(QueryParamEntity param) {
|
||||
|
||||
SqlRequest listSql = analyzer.refactor(param, args);
|
||||
|
||||
@@ -238,7 +241,7 @@ public class DefaultQueryHelper implements QueryHelper {
|
||||
|
||||
if (param.getTotal() != null) {
|
||||
return sqlExecutor
|
||||
.select(createPagingSql(listSql, pageIndex, pageSize), this).map(mapper)
|
||||
.select(createPagingSql(listSql, param.getPageIndex(), param.getPageSize()), this).map(mapper)
|
||||
.collectList()
|
||||
.map(list -> PagerResult.of(param.getTotal(), list, param))
|
||||
.contextWrite(logContext);
|
||||
@@ -262,11 +265,11 @@ public class DefaultQueryHelper implements QueryHelper {
|
||||
.select(countSql, countWrapper)
|
||||
.single(0)
|
||||
.<PagerResult<R>>flatMap(total -> {
|
||||
if (total == 0) {
|
||||
return Mono.just(PagerResult.of(0, new ArrayList<>(), param.clone()));
|
||||
}
|
||||
QueryParamEntity copy = param.clone();
|
||||
copy.rePaging(total);
|
||||
if (total == 0) {
|
||||
return Mono.just(PagerResult.of(0, new ArrayList<>(), copy));
|
||||
}
|
||||
return sqlExecutor
|
||||
.select(createPagingSql(listSql, copy.getPageIndex(), copy.getPageSize()), this)
|
||||
.map(mapper)
|
||||
@@ -559,17 +562,23 @@ public class DefaultQueryHelper implements QueryHelper {
|
||||
@Override
|
||||
public Mono<PagerResult<R>> fetchPaged() {
|
||||
if (param != null) {
|
||||
return fetchPaged(param.getPageIndex(), param.getPageSize());
|
||||
return fetchPaged(param);
|
||||
}
|
||||
return fetchPaged(0, 25);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mono<PagerResult<R>> fetchPaged(int pageIndex, int pageSize) {
|
||||
return fetchPaged(param != null
|
||||
? param.clone().doPaging(pageIndex, pageSize)
|
||||
: new QueryParamEntity().<QueryParamEntity>doPaging(pageIndex, pageSize));
|
||||
}
|
||||
|
||||
if (param != null && param.getTotal() != null) {
|
||||
private Mono<PagerResult<R>> fetchPaged(QueryParamEntity param) {
|
||||
|
||||
if (param.getTotal() != null) {
|
||||
return createQuery()
|
||||
.paging(pageIndex, pageSize)
|
||||
.paging(param.getPageIndex(), param.getPageSize())
|
||||
.fetch(this)
|
||||
.reactive()
|
||||
.as(resultHandler)
|
||||
@@ -578,29 +587,27 @@ public class DefaultQueryHelper implements QueryHelper {
|
||||
.contextWrite(logContext);
|
||||
}
|
||||
|
||||
if (param != null && param.isParallelPager()) {
|
||||
if (param.isParallelPager()) {
|
||||
return Mono.zip(count(),
|
||||
createQuery()
|
||||
.paging(pageIndex, pageSize)
|
||||
.paging(param.getPageIndex(), param.getPageSize())
|
||||
.fetch(this)
|
||||
.reactive()
|
||||
.as(resultHandler)
|
||||
.collectList(),
|
||||
(total, list) -> PagerResult.of(total, list, param.clone().doPaging(pageIndex, pageSize)))
|
||||
(total, list) -> PagerResult.of(total, list, param))
|
||||
.contextWrite(logContext);
|
||||
}
|
||||
|
||||
QueryParamEntity copy = param != null
|
||||
? param.clone().doPaging(pageIndex, pageSize)
|
||||
: new QueryParamEntity().doPaging(pageIndex, pageSize);
|
||||
|
||||
return this
|
||||
.count()
|
||||
.flatMap(i -> {
|
||||
QueryParamEntity copy = param.clone();
|
||||
copy.rePaging(i);
|
||||
if (i == 0) {
|
||||
return Mono.just(PagerResult.of(0, new ArrayList<>(), copy));
|
||||
}
|
||||
copy.rePaging(i);
|
||||
return createQuery()
|
||||
.paging(copy.getPageIndex(), copy.getPageSize())
|
||||
.fetch(this)
|
||||
|
||||
@@ -74,7 +74,7 @@ class DefaultQueryHelperTest {
|
||||
.where(dsl -> dsl
|
||||
.is("a.name", "inner")
|
||||
.is("age", 31))
|
||||
.fetchPaged(0,10)
|
||||
.fetchPaged(0, 10)
|
||||
.doOnNext(v -> System.out.println(JSON.toJSONString(v, SerializerFeature.PrettyFormat)))
|
||||
.as(StepVerifier::create)
|
||||
.expectNextCount(1)
|
||||
@@ -152,6 +152,35 @@ class DefaultQueryHelperTest {
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCustomFirstPageIndex() {
|
||||
DefaultQueryHelper helper = new DefaultQueryHelper(database);
|
||||
QueryParamEntity e = new QueryParamEntity();
|
||||
e.setFirstPageIndex(1);
|
||||
e.setPageIndex(2);
|
||||
|
||||
{
|
||||
helper.select(TestInfo.class)
|
||||
.from(TestEntity.class)
|
||||
.where(e)
|
||||
.fetchPaged()
|
||||
.doOnNext(info -> System.out.println(JSON.toJSONString(info, SerializerFeature.PrettyFormat)))
|
||||
.as(StepVerifier::create)
|
||||
.expectNextMatches(p -> p.getPageIndex() == 1)
|
||||
.verifyComplete();
|
||||
}
|
||||
|
||||
{
|
||||
helper.select("select * from s_test")
|
||||
.where(e)
|
||||
.fetchPaged()
|
||||
.doOnNext(info -> System.out.println(JSON.toJSONString(info, SerializerFeature.PrettyFormat)))
|
||||
.as(StepVerifier::create)
|
||||
.expectNextMatches(p -> p.getPageIndex() == 1)
|
||||
.verifyComplete();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
|
||||
@@ -199,7 +228,7 @@ class DefaultQueryHelperTest {
|
||||
// )
|
||||
.orderByAsc(TestEntity::getAge)
|
||||
.orderByDesc(EventTestEntity::getAge)
|
||||
.fetchPaged(0,10)
|
||||
.fetchPaged(0, 10)
|
||||
.doOnNext(info -> System.out.println(JSON.toJSONString(info, SerializerFeature.PrettyFormat)))
|
||||
.as(StepVerifier::create)
|
||||
.expectNextCount(1)
|
||||
|
||||
Reference in New Issue
Block a user