記錄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  : 自己根據自己需求數據庫查詢出來的數據總數

   調用:

    ok 完事!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章