新增最大页数限制

This commit is contained in:
mxd 2022-03-07 20:39:57 +08:00
parent 4c63fbdd3e
commit cc290474c7
3 changed files with 26 additions and 8 deletions

View File

@ -111,8 +111,8 @@ public class MagicModuleConfiguration {
@ConditionalOnMissingBean(PageProvider.class)
public PageProvider pageProvider() {
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());
}
/**

View File

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

View File

@ -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.pageSize = pageSize;
this.defaultPageSize = defaultPageSize;
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 pageSize = NumberUtils.toLong(Objects.toString(context.eval(this.pageSize), null), this.defaultPageSize);
if(maxPageSize > 0){
pageSize = Math.min(pageSize, this.maxPageSize);
}
// 计算limit以及offset
return new Page(pageSize, (page - 1) * pageSize);