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]);
|
}
|
}
|