| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- package common
- import (
- "strconv"
- "github.com/gin-gonic/gin"
- )
- type PageInfo struct {
- Page int `json:"page"` // page num 页码
- PageSize int `json:"page_size"` // page size 页大小
- Total int `json:"total"` // 总条数,后设置
- Items any `json:"items"` // 数据,后设置
- }
- func (p *PageInfo) GetStartIdx() int {
- return (p.Page - 1) * p.PageSize
- }
- func (p *PageInfo) GetEndIdx() int {
- return p.Page * p.PageSize
- }
- func (p *PageInfo) GetPageSize() int {
- return p.PageSize
- }
- func (p *PageInfo) GetPage() int {
- return p.Page
- }
- func (p *PageInfo) SetTotal(total int) {
- p.Total = total
- }
- func (p *PageInfo) SetItems(items any) {
- p.Items = items
- }
- func GetPageQuery(c *gin.Context) *PageInfo {
- pageInfo := &PageInfo{}
- // 手动获取并处理每个参数
- if page, err := strconv.Atoi(c.Query("page")); err == nil {
- pageInfo.Page = page
- }
- if pageSize, err := strconv.Atoi(c.Query("page_size")); err == nil {
- pageInfo.PageSize = pageSize
- }
- if pageInfo.Page < 1 {
- // 兼容
- page, _ := strconv.Atoi(c.Query("p"))
- if page != 0 {
- pageInfo.Page = page
- } else {
- pageInfo.Page = 1
- }
- }
- if pageInfo.PageSize == 0 {
- // 兼容
- pageSize, _ := strconv.Atoi(c.Query("ps"))
- if pageSize != 0 {
- pageInfo.PageSize = pageSize
- }
- if pageInfo.PageSize == 0 {
- pageSize, _ = strconv.Atoi(c.Query("size")) // token page
- if pageSize != 0 {
- pageInfo.PageSize = pageSize
- }
- }
- if pageInfo.PageSize == 0 {
- pageInfo.PageSize = ItemsPerPage
- }
- }
- if pageInfo.PageSize > 100 {
- pageInfo.PageSize = 100
- }
- return pageInfo
- }
|