package com.xcong.excoin.common.utils; 
 | 
  
 | 
import com.xcong.excoin.common.entity.FebsConstant; 
 | 
import com.xcong.excoin.common.entity.QueryRequest; 
 | 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
 | 
import com.baomidou.mybatisplus.core.metadata.OrderItem; 
 | 
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
 | 
import org.apache.commons.lang3.StringUtils; 
 | 
  
 | 
/** 
 | 
 * 处理排序工具类 
 | 
 * 
 | 
 * @author MrBird 
 | 
 */ 
 | 
public class SortUtil { 
 | 
    /** 
 | 
     * 处理排序(分页情况下) for mybatis-plus 
 | 
     * 
 | 
     * @param request           QueryRequest 
 | 
     * @param page              Page 
 | 
     * @param defaultSort       默认排序的字段 
 | 
     * @param defaultOrder      默认排序规则 
 | 
     * @param camelToUnderscore 是否开启驼峰转下划线 
 | 
     */ 
 | 
    public static void handlePageSort(QueryRequest request, Page<?> page, String defaultSort, String defaultOrder, boolean camelToUnderscore) { 
 | 
        page.setCurrent(request.getPageNum()); 
 | 
        page.setSize(request.getPageSize()); 
 | 
        String sortField = request.getField(); 
 | 
        if (camelToUnderscore) { 
 | 
            sortField = FebsUtil.camelToUnderscore(sortField); 
 | 
            defaultSort = FebsUtil.camelToUnderscore(defaultSort); 
 | 
        } 
 | 
        if (StringUtils.isNotBlank(request.getField()) 
 | 
                && StringUtils.isNotBlank(request.getOrder()) 
 | 
                && !StringUtils.equalsIgnoreCase(request.getField(), "null") 
 | 
                && !StringUtils.equalsIgnoreCase(request.getOrder(), "null")) { 
 | 
            if (StringUtils.equals(request.getOrder(), FebsConstant.ORDER_DESC)) { 
 | 
                page.addOrder(OrderItem.desc(sortField)); 
 | 
            } else { 
 | 
                page.addOrder(OrderItem.asc(sortField)); 
 | 
            } 
 | 
        } else { 
 | 
            if (StringUtils.isNotBlank(defaultSort)) { 
 | 
                if (StringUtils.equals(defaultOrder, FebsConstant.ORDER_DESC)) { 
 | 
                    page.addOrder(OrderItem.desc(defaultSort)); 
 | 
                } else { 
 | 
                    page.addOrder(OrderItem.asc(defaultSort)); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 处理排序 for mybatis-plus 
 | 
     * 
 | 
     * @param request QueryRequest 
 | 
     * @param page    Page 
 | 
     */ 
 | 
    public static void handlePageSort(QueryRequest request, Page<?> page) { 
 | 
        handlePageSort(request, page, null, null, false); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 处理排序 for mybatis-plus 
 | 
     * 
 | 
     * @param request           QueryRequest 
 | 
     * @param page              Page 
 | 
     * @param camelToUnderscore 是否开启驼峰转下划线 
 | 
     */ 
 | 
    public static void handlePageSort(QueryRequest request, Page<?> page, boolean camelToUnderscore) { 
 | 
        handlePageSort(request, page, null, null, camelToUnderscore); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 处理排序 for mybatis-plus 
 | 
     * 
 | 
     * @param request           QueryRequest 
 | 
     * @param wrapper           wrapper 
 | 
     * @param defaultSort       默认排序的字段 
 | 
     * @param defaultOrder      默认排序规则 
 | 
     * @param camelToUnderscore 是否开启驼峰转下划线 
 | 
     */ 
 | 
    public static void handleWrapperSort(QueryRequest request, QueryWrapper<?> wrapper, String defaultSort, String defaultOrder, boolean camelToUnderscore) { 
 | 
        String sortField = request.getField(); 
 | 
        if (camelToUnderscore) { 
 | 
            sortField = FebsUtil.camelToUnderscore(sortField); 
 | 
            defaultSort = FebsUtil.camelToUnderscore(defaultSort); 
 | 
        } 
 | 
        if (StringUtils.isNotBlank(request.getField()) 
 | 
                && StringUtils.isNotBlank(request.getOrder()) 
 | 
                && !StringUtils.equalsIgnoreCase(request.getField(), "null") 
 | 
                && !StringUtils.equalsIgnoreCase(request.getOrder(), "null")) { 
 | 
            if (StringUtils.equals(request.getOrder(), FebsConstant.ORDER_DESC)) { 
 | 
                wrapper.orderByDesc(sortField); 
 | 
            } else { 
 | 
                wrapper.orderByAsc(sortField); 
 | 
            } 
 | 
        } else { 
 | 
            if (StringUtils.isNotBlank(defaultSort)) { 
 | 
                if (StringUtils.equals(defaultOrder, FebsConstant.ORDER_DESC)) { 
 | 
                    wrapper.orderByDesc(defaultSort); 
 | 
                } else { 
 | 
                    wrapper.orderByAsc(defaultSort); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 处理排序 for mybatis-plus 
 | 
     * 
 | 
     * @param request QueryRequest 
 | 
     * @param wrapper wrapper 
 | 
     */ 
 | 
    public static void handleWrapperSort(QueryRequest request, QueryWrapper<?> wrapper) { 
 | 
        handleWrapperSort(request, wrapper, null, null, false); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 处理排序 for mybatis-plus 
 | 
     * 
 | 
     * @param request           QueryRequest 
 | 
     * @param wrapper           wrapper 
 | 
     * @param camelToUnderscore 是否开启驼峰转下划线 
 | 
     */ 
 | 
    public static void handleWrapperSort(QueryRequest request, QueryWrapper<?> wrapper, boolean camelToUnderscore) { 
 | 
        handleWrapperSort(request, wrapper, null, null, camelToUnderscore); 
 | 
    } 
 | 
} 
 |