page.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package common
  2. const (
  3. defaultPageSize = 10
  4. )
  5. type PageRequest struct {
  6. Page int `json:"page"`
  7. PageSize int `json:"page_size"`
  8. }
  9. type PageResponse struct {
  10. Page int `json:"page"`
  11. PageSize int `json:"page_size"`
  12. TotalCount int64 `json:"total_count"`
  13. }
  14. type Paginator struct {
  15. Page int
  16. PageSize int
  17. LimitStart int
  18. }
  19. // 根据分页请求,获取分页结果
  20. func (this PageRequest) GetPaginator() Paginator {
  21. return getPaginator(this.Page, this.PageSize)
  22. }
  23. func getPaginator(page int, pageSize int) Paginator {
  24. paginator := Paginator{}
  25. if pageSize == 0 {
  26. paginator.PageSize = defaultPageSize
  27. } else {
  28. paginator.PageSize = pageSize
  29. }
  30. if page == 0 {
  31. paginator.Page = 1
  32. paginator.LimitStart = 0
  33. } else {
  34. paginator.Page = page
  35. paginator.LimitStart = (paginator.Page - 1) * paginator.PageSize
  36. }
  37. return paginator
  38. }
  39. // 根据分页结果,获取分页响应
  40. func (this Paginator) GetPageResponse(count int64) PageResponse {
  41. return PageResponse{
  42. Page: this.Page,
  43. PageSize: this.PageSize,
  44. TotalCount: count,
  45. }
  46. }