PageUtils.java 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. package com.ruoyi.common.utils;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import cn.hutool.http.HttpStatus;
  4. import com.baomidou.mybatisplus.core.metadata.OrderItem;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.ruoyi.common.core.domain.PageQuery;
  7. import com.ruoyi.common.core.page.PagePlus;
  8. import com.ruoyi.common.core.page.TableDataInfo;
  9. import com.ruoyi.common.utils.sql.SqlUtil;
  10. import lombok.AccessLevel;
  11. import lombok.NoArgsConstructor;
  12. import java.util.List;
  13. /**
  14. * 分页工具
  15. *
  16. * @author Lion Li
  17. */
  18. @NoArgsConstructor(access = AccessLevel.PRIVATE)
  19. public class PageUtils {
  20. /**
  21. * 当前记录起始索引
  22. */
  23. @Deprecated
  24. public static final String PAGE_NUM = "pageNum";
  25. /**
  26. * 每页显示记录数
  27. */
  28. @Deprecated
  29. public static final String PAGE_SIZE = "pageSize";
  30. /**
  31. * 排序列
  32. */
  33. @Deprecated
  34. public static final String ORDER_BY_COLUMN = "orderByColumn";
  35. /**
  36. * 排序的方向 "desc" 或者 "asc".
  37. */
  38. @Deprecated
  39. public static final String IS_ASC = "isAsc";
  40. /**
  41. * 当前记录起始索引 默认值
  42. */
  43. public static final int DEFAULT_PAGE_NUM = 1;
  44. /**
  45. * 每页显示记录数 默认值 默认查全部
  46. */
  47. public static final int DEFAULT_PAGE_SIZE = Integer.MAX_VALUE;
  48. /**
  49. * 构建 plus 分页对象
  50. *
  51. * @param <T> domain 实体
  52. * @param <K> vo 实体
  53. * @return 分页对象
  54. * @deprecated 3.6.0 删除 请使用 {@link PageUtils#buildPagePlus(PageQuery)}
  55. * 由于使用 Servlet 获取只能从 param 获取 灵活性降低 故将传参操作交给用户
  56. */
  57. @Deprecated
  58. public static <T, K> PagePlus<T, K> buildPagePlus() {
  59. Integer pageNum = ServletUtils.getParameterToInt(PAGE_NUM, DEFAULT_PAGE_NUM);
  60. Integer pageSize = ServletUtils.getParameterToInt(PAGE_SIZE, DEFAULT_PAGE_SIZE);
  61. String orderByColumn = ServletUtils.getParameter(ORDER_BY_COLUMN);
  62. String isAsc = ServletUtils.getParameter(IS_ASC);
  63. if (pageNum <= 0) {
  64. pageNum = DEFAULT_PAGE_NUM;
  65. }
  66. PagePlus<T, K> page = new PagePlus<>(pageNum, pageSize);
  67. OrderItem orderItem = buildOrderItem(orderByColumn, isAsc);
  68. if (ObjectUtil.isNotNull(orderItem)) {
  69. page.addOrder(orderItem);
  70. }
  71. return page;
  72. }
  73. public static <T, K> PagePlus<T, K> buildPagePlus(PageQuery pageQuery) {
  74. Integer pageNum = ObjectUtil.defaultIfNull(pageQuery.getPageNum(), DEFAULT_PAGE_NUM);
  75. Integer pageSize = ObjectUtil.defaultIfNull(pageQuery.getPageSize(), DEFAULT_PAGE_SIZE);
  76. String orderByColumn = pageQuery.getOrderByColumn();
  77. String isAsc = pageQuery.getIsAsc();
  78. if (pageNum <= 0) {
  79. pageNum = DEFAULT_PAGE_NUM;
  80. }
  81. PagePlus<T, K> page = new PagePlus<>(pageNum, pageSize);
  82. OrderItem orderItem = buildOrderItem(orderByColumn, isAsc);
  83. if (ObjectUtil.isNotNull(orderItem)) {
  84. page.addOrder(orderItem);
  85. }
  86. return page;
  87. }
  88. @Deprecated
  89. public static <T> Page<T> buildPage() {
  90. return buildPage(null, null);
  91. }
  92. /**
  93. * 构建 MP 普通分页对象
  94. *
  95. * @param <T> domain 实体
  96. * @return 分页对象
  97. * @deprecated 3.6.0 删除 请使用 {@link PageUtils#buildPage(PageQuery)}
  98. * 由于使用 Servlet 获取只能从 param 获取 灵活性降低 故将传参操作交给用户
  99. */
  100. @Deprecated
  101. public static <T> Page<T> buildPage(String defaultOrderByColumn, String defaultIsAsc) {
  102. Integer pageNum = ServletUtils.getParameterToInt(PAGE_NUM, DEFAULT_PAGE_NUM);
  103. Integer pageSize = ServletUtils.getParameterToInt(PAGE_SIZE, DEFAULT_PAGE_SIZE);
  104. String orderByColumn = ServletUtils.getParameter(ORDER_BY_COLUMN, defaultOrderByColumn);
  105. String isAsc = ServletUtils.getParameter(IS_ASC, defaultIsAsc);
  106. if (pageNum <= 0) {
  107. pageNum = DEFAULT_PAGE_NUM;
  108. }
  109. Page<T> page = new Page<>(pageNum, pageSize);
  110. OrderItem orderItem = buildOrderItem(orderByColumn, isAsc);
  111. if (ObjectUtil.isNotNull(orderItem)) {
  112. page.addOrder(orderItem);
  113. }
  114. return page;
  115. }
  116. public static <T> Page<T> buildPage(PageQuery pageQuery) {
  117. Integer pageNum = ObjectUtil.defaultIfNull(pageQuery.getPageNum(), DEFAULT_PAGE_NUM);
  118. Integer pageSize = ObjectUtil.defaultIfNull(pageQuery.getPageSize(), DEFAULT_PAGE_SIZE);
  119. String orderByColumn = pageQuery.getOrderByColumn();
  120. String isAsc = pageQuery.getIsAsc();
  121. if (pageNum <= 0) {
  122. pageNum = DEFAULT_PAGE_NUM;
  123. }
  124. Page<T> page = new Page<>(pageNum, pageSize);
  125. OrderItem orderItem = buildOrderItem(orderByColumn, isAsc);
  126. if (ObjectUtil.isNotNull(orderItem)) {
  127. page.addOrder(orderItem);
  128. }
  129. return page;
  130. }
  131. private static OrderItem buildOrderItem(String orderByColumn, String isAsc) {
  132. // 兼容前端排序类型
  133. if ("ascending".equals(isAsc)) {
  134. isAsc = "asc";
  135. } else if ("descending".equals(isAsc)) {
  136. isAsc = "desc";
  137. }
  138. if (StringUtils.isNotBlank(orderByColumn)) {
  139. String orderBy = SqlUtil.escapeOrderBySql(orderByColumn);
  140. orderBy = StringUtils.toUnderScoreCase(orderBy);
  141. if ("asc".equals(isAsc)) {
  142. return OrderItem.asc(orderBy);
  143. } else if ("desc".equals(isAsc)) {
  144. return OrderItem.desc(orderBy);
  145. }
  146. }
  147. return null;
  148. }
  149. public static <T, K> TableDataInfo<K> buildDataInfo(PagePlus<T, K> page) {
  150. TableDataInfo<K> rspData = new TableDataInfo<>();
  151. rspData.setCode(HttpStatus.HTTP_OK);
  152. rspData.setMsg("查询成功");
  153. rspData.setRows(page.getRecordsVo());
  154. rspData.setTotal(page.getTotal());
  155. return rspData;
  156. }
  157. public static <T> TableDataInfo<T> buildDataInfo(Page<T> page) {
  158. TableDataInfo<T> rspData = new TableDataInfo<>();
  159. rspData.setCode(HttpStatus.HTTP_OK);
  160. rspData.setMsg("查询成功");
  161. rspData.setRows(page.getRecords());
  162. rspData.setTotal(page.getTotal());
  163. return rspData;
  164. }
  165. public static <T> TableDataInfo<T> buildDataInfo(List<T> list) {
  166. TableDataInfo<T> rspData = new TableDataInfo<>();
  167. rspData.setCode(HttpStatus.HTTP_OK);
  168. rspData.setMsg("查询成功");
  169. rspData.setRows(list);
  170. rspData.setTotal(list.size());
  171. return rspData;
  172. }
  173. public static <T> TableDataInfo<T> buildDataInfo() {
  174. TableDataInfo<T> rspData = new TableDataInfo<>();
  175. rspData.setCode(HttpStatus.HTTP_OK);
  176. rspData.setMsg("查询成功");
  177. return rspData;
  178. }
  179. }