feat(可回溯): 可回溯

修改分页查询
This commit is contained in:
BrandWang
2023-03-27 16:08:26 +08:00
parent c4bf41ba7b
commit bf9ed7f096
4 changed files with 22 additions and 13 deletions
@@ -28,4 +28,8 @@ public class Order {
private String fileId; private String fileId;
private String fileUrl; private String fileUrl;
private long createAt; private long createAt;
@BsonIgnore
private int page;
@BsonIgnore
private int pageSize;
} }
@@ -8,6 +8,6 @@ import java.util.List;
public class OrderList { public class OrderList {
private int page; private int page;
private int pageSize; private int pageSize;
private int total; private long total;
private List<Order> list; private List<Order> list;
} }
@@ -1,15 +1,15 @@
package com.wabestway.recall.repository; package com.wabestway.recall.repository;
import com.wabestway.recall.model.Order; import com.wabestway.recall.model.Order;
import org.springframework.data.domain.Example; import org.springframework.data.domain.*;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.repository.ReactiveMongoRepository; import org.springframework.data.mongodb.repository.ReactiveMongoRepository;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
public interface OrderRepository extends ReactiveMongoRepository<Order, String> { public interface OrderRepository extends ReactiveMongoRepository<Order, String> {
Mono<Order> findByOrderId(String orderId); Mono<Order> findByOrderId(String orderId);
Mono<Order> findByTraceId(String traceId); Mono<Order> findByTraceId(String traceId);
Mono<Page<Order>> findAll(Example<Order> example, Pageable pageable);
} }
@@ -32,21 +32,26 @@ public class OrderController {
@PostMapping("/list") @PostMapping("/list")
public Mono<ResObj> list(@RequestBody Order order) { public Mono<ResObj> list(@RequestBody Order order) {
PageRequest pageRequest = PageRequest.of(0, 1); OrderList resList = new OrderList();
PageRequest pageRequest = PageRequest.of(order.getPage(), order.getPageSize());
ExampleMatcher matcher = ExampleMatcher.matching() ExampleMatcher matcher = ExampleMatcher.matching()
.withIgnoreNullValues().withIgnorePaths("createAt", "last"); .withIgnoreNullValues().withIgnorePaths("createAt", "last");
Example<Order> ep = Example.of(order, matcher); Example<Order> ep = Example.of(order, matcher);
Sort s = Sort.by("createAt"); Sort s = Sort.by("createAt");
// Mono<List<Integer>> listMono = flux.collectList(); Mono<Page<Order>> pres = orderRepository.findAll(ep, pageRequest);
// listMono.subscribe(list -> System.out.println(list)); return pres.flatMap(p -> {
Flux<Order> flux = orderRepository.findAll(ep, s).skip(pageRequest.getOffset()).limitRate(pageRequest.getPageSize()); resList.setTotal(p.getTotalElements());
OrderList resList = new OrderList(); resList.setList(p.getContent());
Mono<List<Order>> listMono = flux.collectList();
return listMono.flatMap(list -> {
resList.setList(list);
return Mono.just(ResObj.ok(resList)); return Mono.just(ResObj.ok(resList));
}); });
// Flux<Order> flux = orderRepository.findAll(ep, s).skip(pageRequest.getOffset()).limitRate(pageRequest.getPageSize());
//
// Mono<List<Order>> listMono = flux.collectList();
// return listMono.flatMap(list -> {
// resList.setList(list);
// return Mono.just(ResObj.ok(resList));
// });
} }
@PostMapping("/info/{orderId}") @PostMapping("/info/{orderId}")