首先在models文件夹新建pager.go
新建一个结构体,计算总页数与偏移
package models
import "math"
type Pager struct {
Count int64 `json:"count"`
CurrentPage int64 `json:"current_page"`
Data interface{} `json:"data"`
PageSize int64 `json:"page_size"`
TotalPages int64 `json:"total_pages"`
}
func PageCount(count int64, pageSize int64, page int64) (totalPage int64, offset int64, currentPage int64) {
pageCount := int64(math.Ceil(float64(count) / float64(pageSize)))
if page > pageCount {
page = pageCount
}
return pageCount, pageSize * (page - 1), page
}
应用:
func (p *Project) GetProjectList(pageSize int64, page int64) (status bool, pager Pager) {
var data []Project
o := orm.NewOrm()
count, err := o.QueryTable(&p).Count()
if err != nil {
logs.Error(err)
return false, Pager{}
}
totalPage, offset, currentPage := PageCount(count, pageSize, page)
_, err = o.QueryTable(&p).Limit(pageSize, offset).All(&data)
return true, Pager{
Count: count,
CurrentPage: currentPage,
Data: data,
PageSize: pageSize,
TotalPages: totalPage,
}
}