| package cc.mrbird.febs.common.utils; | 
|   | 
| import cc.mrbird.febs.common.entity.FebsConstant; | 
| import cc.mrbird.febs.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); | 
|     } | 
| } |