From ba311be50745f2e4e011d9d3a4907a7d8a09c679 Mon Sep 17 00:00:00 2001 From: wanggeng888 <450292408@qq.com> Date: Tue, 20 Apr 2021 12:32:15 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=B7=AF=E7=94=B1=E5=85=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=8C=E6=96=B0=E5=A2=9E=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wgink/gateway/dao/route/IRouteDao.java | 3 - .../gateway/handler/route/RouteHandler.java | 59 ++++++++++++++++--- .../java/ink/wgink/gateway/pojo/BasePOJO.java | 1 + .../ink/wgink/gateway/pojo/ListSearch.java | 21 +++++++ .../{AllRoutes.java => RouteRouter.java} | 23 ++++---- 5 files changed, 87 insertions(+), 20 deletions(-) create mode 100644 src/main/java/ink/wgink/gateway/pojo/ListSearch.java rename src/main/java/ink/wgink/gateway/router/{AllRoutes.java => RouteRouter.java} (58%) diff --git a/src/main/java/ink/wgink/gateway/dao/route/IRouteDao.java b/src/main/java/ink/wgink/gateway/dao/route/IRouteDao.java index dcb58cc..a875dd4 100644 --- a/src/main/java/ink/wgink/gateway/dao/route/IRouteDao.java +++ b/src/main/java/ink/wgink/gateway/dao/route/IRouteDao.java @@ -21,7 +21,4 @@ public interface IRouteDao extends ReactiveMongoRepository { String COLLECTION_NAME = "sys_route"; - @Query("db."+ COLLECTION_NAME+ ".find") - Mono list(String uuid); - } diff --git a/src/main/java/ink/wgink/gateway/handler/route/RouteHandler.java b/src/main/java/ink/wgink/gateway/handler/route/RouteHandler.java index 63d9585..eecee27 100644 --- a/src/main/java/ink/wgink/gateway/handler/route/RouteHandler.java +++ b/src/main/java/ink/wgink/gateway/handler/route/RouteHandler.java @@ -2,15 +2,20 @@ package ink.wgink.gateway.handler.route; import ink.wgink.gateway.dao.route.IRouteDao; import ink.wgink.gateway.handler.BaseHandler; +import ink.wgink.gateway.pojo.ListSearch; import ink.wgink.gateway.pojo.route.Route; +import org.springframework.data.domain.Example; +import org.springframework.data.domain.ExampleMatcher; import org.springframework.http.MediaType; import org.springframework.stereotype.Component; +import org.springframework.web.reactive.function.server.RouterFunction; import org.springframework.web.reactive.function.server.ServerRequest; import org.springframework.web.reactive.function.server.ServerResponse; import reactor.core.publisher.Mono; import java.util.Arrays; import java.util.List; +import java.util.Optional; /** * When you feel like quitting. Think about why you started @@ -54,7 +59,9 @@ public class RouteHandler extends BaseHandler { public Mono delete(ServerRequest serverRequest) { String ids = serverRequest.pathVariable("ids"); List idList = Arrays.asList(ids.split(",")); - return Mono.from(routeDao.findAllById(idList).flatMap(route -> routeDao.delete(route))).then(ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).build()).switchIfEmpty(ServerResponse.notFound().build()); + return routeDao.findAllById(idList).flatMap( + route -> routeDao.delete(route) + ).then(ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).build()); } /** @@ -66,11 +73,16 @@ public class RouteHandler extends BaseHandler { public Mono update(ServerRequest serverRequest) { String id = serverRequest.pathVariable("id"); Mono routeMono = serverRequest.bodyToMono(Route.class); - return routeDao.findById(id).then(routeMono.flatMap(route -> { - route.setUuid(id); - setUpdate(route); - return routeDao.save(route); - })).then(ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).build()).switchIfEmpty(ServerResponse.notFound().build()); + return routeDao.findById(id).flatMap( + route -> routeMono.flatMap(r -> { + route.setSystem(r.getSystem()); + route.setSummary(r.getSummary()); + route.setPath(r.getPath()); + route.setUri(r.getUri()); + setUpdate(route); + return routeDao.save(route); + }).then(ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).build()) + ).switchIfEmpty(ServerResponse.notFound().build()); } /** @@ -83,6 +95,37 @@ public class RouteHandler extends BaseHandler { return ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).body(routeDao.findAll(), Route.class); } + /** + * 列表分页 + * + * @param serverRequest + * @return + */ + public Mono listPage(ServerRequest serverRequest) { + Optional page = serverRequest.queryParam("page"); + int currentPage = 1; + if (page.isPresent()) { + currentPage = Integer.parseInt(page.get()); + } + int totalSize = 5; + Optional size = serverRequest.queryParam("size"); + if (size.isPresent()) { + totalSize = Integer.parseInt(size.get()); + } + Optional keyword = serverRequest.queryParam("keyword"); + Route route = new Route(); + ExampleMatcher exampleMatcher = ExampleMatcher.matchingAny(); + Example example = Example.of(route, exampleMatcher); + if (keyword.isPresent()) { + route.setSystem(keyword.get()); + route.setSummary(keyword.get()); + exampleMatcher + .withMatcher("system", ExampleMatcher.GenericPropertyMatcher::contains) + .withMatcher("summary", ExampleMatcher.GenericPropertyMatcher::contains); + } + return ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).body(routeDao.findAll().skip((currentPage - 1) * totalSize).take(totalSize), Route.class); + } + /** * 列表 * @@ -91,7 +134,9 @@ public class RouteHandler extends BaseHandler { */ public Mono get(ServerRequest serverRequest) { String id = serverRequest.pathVariable("id"); - return ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).body(routeDao.findById(id), Route.class).switchIfEmpty(ServerResponse.notFound().build()); + return routeDao.findById(id).flatMap( + route -> ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).body(Mono.just(route), Route.class) + ).switchIfEmpty(ServerResponse.notFound().build()); } } diff --git a/src/main/java/ink/wgink/gateway/pojo/BasePOJO.java b/src/main/java/ink/wgink/gateway/pojo/BasePOJO.java index 5072fb8..3c17f87 100644 --- a/src/main/java/ink/wgink/gateway/pojo/BasePOJO.java +++ b/src/main/java/ink/wgink/gateway/pojo/BasePOJO.java @@ -1,6 +1,7 @@ package ink.wgink.gateway.pojo; import lombok.Data; +import lombok.ToString; import org.springframework.data.annotation.Id; /** diff --git a/src/main/java/ink/wgink/gateway/pojo/ListSearch.java b/src/main/java/ink/wgink/gateway/pojo/ListSearch.java new file mode 100644 index 0000000..f4d29fd --- /dev/null +++ b/src/main/java/ink/wgink/gateway/pojo/ListSearch.java @@ -0,0 +1,21 @@ +package ink.wgink.gateway.pojo; + +import lombok.Data; +import lombok.ToString; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: Search + * @Description: 搜索 + * @Author: wanggeng + * @Date: 2021/4/20 12:06 下午 + * @Version: 1.0 + */ +@Data +public class ListSearch { + + private String keywords; + +} diff --git a/src/main/java/ink/wgink/gateway/router/AllRoutes.java b/src/main/java/ink/wgink/gateway/router/RouteRouter.java similarity index 58% rename from src/main/java/ink/wgink/gateway/router/AllRoutes.java rename to src/main/java/ink/wgink/gateway/router/RouteRouter.java index e15d562..47c3424 100644 --- a/src/main/java/ink/wgink/gateway/router/AllRoutes.java +++ b/src/main/java/ink/wgink/gateway/router/RouteRouter.java @@ -3,21 +3,23 @@ package ink.wgink.gateway.router; import ink.wgink.gateway.handler.route.RouteHandler; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; -import org.springframework.web.reactive.function.server.*; +import org.springframework.web.reactive.function.server.RequestPredicates; +import org.springframework.web.reactive.function.server.RouterFunction; +import org.springframework.web.reactive.function.server.RouterFunctions; +import org.springframework.web.reactive.function.server.ServerResponse; /** * When you feel like quitting. Think about why you started * 当你想要放弃的时候,想想当初你为何开始 * - * @ClassName: AllRoutes - * @Description: 总路由 - * @Author: WangGeng - * @Date: 2021/4/19 22:57 + * @ClassName: RouteRouter + * @Description: 路由管理 + * @Author: wanggeng + * @Date: 2021/4/20 10:19 上午 * @Version: 1.0 - **/ + */ @Component -public class AllRoutes { - +public class RouteRouter { /** * 路由管理 * @@ -25,14 +27,15 @@ public class AllRoutes { * @return */ @Bean - public RouterFunction routeRouter(RouteHandler routeHandler) { + public RouterFunction routeRouterFunction(RouteHandler routeHandler) { // 嵌套 - return RouterFunctions.nest(RequestPredicates.path("/route"), + return RouterFunctions.nest(RequestPredicates.path("/wg/route"), RouterFunctions .route(RequestPredicates.POST("/save"), routeHandler::save) .andRoute(RequestPredicates.DELETE("/delete/{ids}"), routeHandler::delete) .andRoute(RequestPredicates.PUT("/update/{id}"), routeHandler::update) .andRoute(RequestPredicates.GET("/list"), routeHandler::list) + .andRoute(RequestPredicates.GET("/listpage"), routeHandler::listPage) .andRoute(RequestPredicates.GET("get/{id}"), routeHandler::get) ); }