package com.qianwen.core.mp.resolver; import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.qianwen.core.tool.utils.ObjectUtil; import com.qianwen.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; /* loaded from: blade-starter-mybatis-9.3.0.0-SNAPSHOT.jar:org/springblade/core/mp/resolver/PageArgumentResolver.class */ public class PageArgumentResolver implements HandlerMethodArgumentResolver { private static final String ORDER_ASC = "asc"; public boolean supportsParameter(MethodParameter parameter) { return Page.class.equals(parameter.getParameterType()); } public Object resolveArgument(@NonNull MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest request, WebDataBinderFactory binderFactory) { 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)) { String[] split = param.split(","); OrderItem orderItem = new OrderItem(); orderItem.setColumn(StringUtil.cleanIdentifier(split[0])); orderItem.setAsc(isOrderAsc(split)); page.addOrder(new OrderItem[]{orderItem}); } } return page; } private static boolean isOrderAsc(String[] split) { if (split.length < 2) { return false; } return ORDER_ASC.equalsIgnoreCase(split[1]); } }