package responsex import "math" type Pagination struct { Page int64 `json:"page"` Size int64 `json:"size"` TotalPage int64 `json:"total_page"` TotalCount int64 `json:"total_count"` } // 计算DB分页偏移量 // page/size 小于等于 0 时取默认值(page=1,size=10),保证 offset/limit 永远合法 func GetOffset(page, size int) (offset int, limit int) { if page <= 0 { page = 1 } if size <= 0 { // 默认查10条 size = 10 } offset = (page - 1) * size limit = size return } // 计算响应分页 // size 小于等于 0 时不做除法,避免出现负数总页数 func GetPage(page, size, totalCount int64) Pagination { pa := Pagination{} var totalPage int64 if size > 0 { totalPage = int64(math.Ceil(float64(totalCount) / float64(size))) } pa.Page = page pa.Size = size pa.TotalPage = totalPage pa.TotalCount = totalCount return pa }