最新我們用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 : 自己根據自己需求數據庫查詢出來的數據總數
調用:
ok 完事!