记录go开发中遇到的问题之~封装分页的公共方法

    最新我们用grpc 微服务对系统升级,在我们需求中很多需要分页的数据,所以,我就封装了一个分页的工具类,记录下来,以便日后复用 ,我们都知道  分页最重要的是两个参数 currentPage(当前页),pageSize(每页数量),有这个两个数,我们就可以计算出来剩下的一些参数.超级简单

//由于采用的是grpc的proto传递参数,所以里面有些int转int32格式的代码,实际应用根据自己项目来改变
func BasePage(currPage int32, pageSize int32, count int32) map[string]int32 {
	var previouspage int    //当前页对应的上一页地址
	var lastpage int        //当前页对应的下一页地址
	currentPage := int(currPage)
	pageSizeNum := int(pageSize)
	countNum := int(count)
	//生成分页总数 totalpages
	totalpages := int(math.Ceil(float64(countNum) / float64(pageSizeNum))) //分页总数
	if currentPage > totalpages {
		currentPage = totalpages
	}
	if currentPage <= 0 {
		currentPage = 1
	}
		previouspage = int(math.Max(float64(1), float64(currentPage-1)))
		lastpage = currentPage + 1
	pageMap := make(map[string]int32)
	pageMap["totalpages"] = int32(totalpages) //总页数
	pageMap["previouspage"] = int32(previouspage)   //当前页数的前一页
	pageMap["lastPage"] = int32(lastpage)     //当前页数的后一页
	pageMap["currPage"] = int32(currentPage)  //当前页数
	pageMap["pageSize"] = int32(pageSizeNum)  //每页数量
	pageMap["count"] = int32(countNum)        //总数量
	return pageMap
}

    参数说明: 

        currPage : 前端传递过来

        pageSize : 前端传递过来

        count  : 自己根据自己需求数据库查询出来的数据总数

   调用:

记录go开发中遇到的问题之~封装分页的公共方法_第1张图片

    ok 完事!

 

你可能感兴趣的:(GO开发问题记录,go分页工具类,golang)