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