package common const ( // DefaultPage default page DefaultPage = 1 // DefaultSize default page size DefaultSize = 10 ) type PageRequest struct { Page int `form:"page" json:"page"` // 页码 PageSize int `form:"page_size" json:"page_size" ` // 每页大小 OrderBy string `form:"order_by" json:"order_by"` // 排序字段 OrderByMode string `form:"order_by_mode" json:"order_by_mode"` // 排序方式 desc asc } func (p *PageRequest) Offset() int { return (p.getPage() - 1) * p.getPageSize() } func (p *PageRequest) Limit() int { return p.getPageSize() } func (p *PageRequest) GetOrderBy(dft string) string { if p.OrderBy != "" { return p.OrderBy } return dft } func (p *PageRequest) GetOrderByMode() string { if p.OrderByMode != "" { return p.OrderByMode } return "ASC" } func (p *PageRequest) getPage() int { if p.Page == 0 { return DefaultPage } return p.Page } func (p *PageRequest) getPageSize() int { if p.PageSize == 0 { return DefaultSize } return p.PageSize } func (p *PageRequest) getTotalPage(total int64) int64 { size := p.getPageSize() if total%int64(size) == 0 { return total / int64(size) } else { return total/int64(size) + 1 } } func (p *PageRequest) PageInfo(total int64) *PageInfo { return &PageInfo{ TotalNumber: total, PageSize: p.getPageSize(), Page: p.getPage(), TotalPage: p.getTotalPage(total), } } type PageInfo struct { TotalNumber int64 `json:"total_number"` // 数据总数 Page int `json:"page"` // 当前页码 PageSize int `json:"page_size"` // 每页大小 TotalPage int64 `json:"total_page"` // 总页码数 }