From 80b6cbfc9c861469146318d0b3dd5f8b8b525b8a Mon Sep 17 00:00:00 2001 From: xiejun <xiejun@vci-tech.com> Date: 星期五, 01 十一月 2024 15:11:19 +0800 Subject: [PATCH] Revert "集成获取mdm分发通用数据格式接口集成" --- Source/BladeX-Tool/blade-starter-mybatis/src/main/java/org/springblade/core/mp/resolver/PageArgumentResolver.java | 75 +++++++++++++++++++++++++++++++++++++ 1 files changed, 75 insertions(+), 0 deletions(-) diff --git a/Source/BladeX-Tool/blade-starter-mybatis/src/main/java/org/springblade/core/mp/resolver/PageArgumentResolver.java b/Source/BladeX-Tool/blade-starter-mybatis/src/main/java/org/springblade/core/mp/resolver/PageArgumentResolver.java new file mode 100644 index 0000000..0f173c6 --- /dev/null +++ b/Source/BladeX-Tool/blade-starter-mybatis/src/main/java/org/springblade/core/mp/resolver/PageArgumentResolver.java @@ -0,0 +1,75 @@ +package org.springblade.core.mp.resolver; + +import com.baomidou.mybatisplus.core.metadata.OrderItem; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.springblade.core.tool.utils.ObjectUtil; +import org.springblade.core.tool.utils.StringPool; +import org.springblade.core.tool.utils.StringUtil; +import org.springframework.core.MethodParameter; +import org.springframework.lang.NonNull; +import org.springframework.web.bind.support.WebDataBinderFactory; +import org.springframework.web.context.request.NativeWebRequest; +import org.springframework.web.method.support.HandlerMethodArgumentResolver; +import org.springframework.web.method.support.ModelAndViewContainer; + +/** + * 瑙e喅 Mybatis Plus page SQL娉ㄥ叆闂 + * + * @author L.cm + */ +public class PageArgumentResolver implements HandlerMethodArgumentResolver { + private static final String ORDER_ASC = "asc"; + + @Override + public boolean supportsParameter(MethodParameter parameter) { + return Page.class.equals(parameter.getParameterType()); + } + + /** + * page 鍙傛暟瑙f瀽 + * + * @param parameter MethodParameter + * @param mavContainer ModelAndViewContainer + * @param request NativeWebRequest + * @param binderFactory WebDataBinderFactory + * @return 妫�鏌ュ悗鏂扮殑page瀵硅薄 + */ + @Override + public Object resolveArgument(@NonNull MethodParameter parameter, ModelAndViewContainer mavContainer, + NativeWebRequest request, WebDataBinderFactory binderFactory) { + // 鍒嗛〉鍙傛暟 page: 0, size: 10, sort=id%2Cdesc + String pageParam = request.getParameter("page"); + String sizeParam = request.getParameter("size"); + String[] sortParam = request.getParameterValues("sort"); + Page<?> page = new Page<>(); + if (StringUtil.isNotBlank(pageParam)) { + page.setCurrent(Long.parseLong(pageParam)); + } + if (StringUtil.isNotBlank(sizeParam)) { + page.setSize(Long.parseLong(sizeParam)); + } + if (ObjectUtil.isEmpty(sortParam)) { + return page; + } + for (String param : sortParam) { + if (StringUtil.isBlank(param)) { + continue; + } + String[] split = param.split(StringPool.COMMA); + // 娓呯悊瀛楃涓� + OrderItem orderItem = new OrderItem(); + orderItem.setColumn(StringUtil.cleanIdentifier(split[0])); + orderItem.setAsc(isOrderAsc(split)); + page.addOrder(orderItem); + } + return page; + } + + private static boolean isOrderAsc(String[] split) { + // 榛樿 desc + if (split.length < 2) { + return false; + } + return ORDER_ASC.equalsIgnoreCase(split[1]); + } +} -- Gitblit v1.9.3