Browse Source

新增最大页数限制

mxd 3 years ago
parent
commit
cc290474c7

+ 2 - 2
magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicModuleConfiguration.java

@@ -111,8 +111,8 @@ public class MagicModuleConfiguration {
 	@ConditionalOnMissingBean(PageProvider.class)
 	@ConditionalOnMissingBean(PageProvider.class)
 	public PageProvider pageProvider() {
 	public PageProvider pageProvider() {
 		Page pageConfig = properties.getPage();
 		Page pageConfig = properties.getPage();
-		logger.info("未找到分页实现,采用默认分页实现,分页配置:(页码={},页大小={},默认首页={},默认页大小={})", pageConfig.getPage(), pageConfig.getSize(), pageConfig.getDefaultPage(), pageConfig.getDefaultSize());
-		return new DefaultPageProvider(pageConfig.getPage(), pageConfig.getSize(), pageConfig.getDefaultPage(), pageConfig.getDefaultSize());
+		logger.info("未找到分页实现,采用默认分页实现,分页配置:(页码={},页大小={},默认首页={},默认页大小={},最大页大小={})", pageConfig.getPage(), pageConfig.getSize(), pageConfig.getDefaultPage(), pageConfig.getDefaultSize(), pageConfig.getMaxPageSize());
+		return new DefaultPageProvider(pageConfig.getPage(), pageConfig.getSize(), pageConfig.getDefaultPage(), pageConfig.getDefaultSize(), pageConfig.getMaxPageSize());
 	}
 	}
 
 
 	/**
 	/**

+ 13 - 0
magic-api/src/main/java/org/ssssssss/magicapi/core/config/Page.java

@@ -27,6 +27,11 @@ public class Page {
 	 */
 	 */
 	private long defaultSize = 10;
 	private long defaultSize = 10;
 
 
+	/**
+	 * 最大页大小, -1 为不限制
+	 */
+	private long maxPageSize = -1;
+
 	public String getPage() {
 	public String getPage() {
 		return page;
 		return page;
 	}
 	}
@@ -58,4 +63,12 @@ public class Page {
 	public void setDefaultSize(long defaultSize) {
 	public void setDefaultSize(long defaultSize) {
 		this.defaultSize = defaultSize;
 		this.defaultSize = defaultSize;
 	}
 	}
+
+	public long getMaxPageSize() {
+		return maxPageSize;
+	}
+
+	public void setMaxPageSize(long maxPageSize) {
+		this.maxPageSize = maxPageSize;
+	}
 }
 }

+ 11 - 6
magic-api/src/main/java/org/ssssssss/magicapi/modules/db/provider/DefaultPageProvider.java

@@ -24,22 +24,24 @@ public class DefaultPageProvider implements PageProvider {
 	/**
 	/**
 	 * 默认分页大小
 	 * 默认分页大小
 	 */
 	 */
-	private long defaultPageSize = 10;
+	private final long defaultPageSize;
 
 
 	/**
 	/**
 	 * 默认页数
 	 * 默认页数
 	 */
 	 */
-	private long defaultPage = 1;
+	private final long defaultPage;
 
 
-	public DefaultPageProvider(String pageName, String pageSize) {
-		this(pageName, pageSize, 1, 10);
-	}
+	/**
+	 * 最大页数
+	 */
+	private final long maxPageSize;
 
 
-	public DefaultPageProvider(String pageName, String pageSize, long defaultPage, long defaultPageSize) {
+	public DefaultPageProvider(String pageName, String pageSize, long defaultPage, long defaultPageSize, long maxPageSize) {
 		this.pageName = pageName;
 		this.pageName = pageName;
 		this.pageSize = pageSize;
 		this.pageSize = pageSize;
 		this.defaultPageSize = defaultPageSize;
 		this.defaultPageSize = defaultPageSize;
 		this.defaultPage = defaultPage;
 		this.defaultPage = defaultPage;
+		this.maxPageSize = maxPageSize;
 	}
 	}
 
 
 
 
@@ -48,6 +50,9 @@ public class DefaultPageProvider implements PageProvider {
 		// 改为从脚本中获取
 		// 改为从脚本中获取
 		long page = NumberUtils.toLong(Objects.toString(context.eval(this.pageName), null), this.defaultPage);
 		long page = NumberUtils.toLong(Objects.toString(context.eval(this.pageName), null), this.defaultPage);
 		long pageSize = NumberUtils.toLong(Objects.toString(context.eval(this.pageSize), null), this.defaultPageSize);
 		long pageSize = NumberUtils.toLong(Objects.toString(context.eval(this.pageSize), null), this.defaultPageSize);
+		if(maxPageSize > 0){
+			pageSize = Math.min(pageSize, this.maxPageSize);
+		}
 		// 计算limit以及offset
 		// 计算limit以及offset
 		return new Page(pageSize, (page - 1) * pageSize);
 		return new Page(pageSize, (page - 1) * pageSize);