Files
TaskPool/internal/utils/pagination.go
T
2025-12-20 09:30:16 +08:00

46 lines
929 B
Go

package utils
import (
"strconv"
"baihu/internal/constant"
"github.com/gin-gonic/gin"
)
// Pagination 分页参数
type Pagination struct {
Page int
PageSize int
}
// ParsePagination 从请求中解析分页参数
func ParsePagination(c *gin.Context) Pagination {
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", strconv.Itoa(constant.DefaultPageSize)))
if page < 1 {
page = 1
}
if pageSize < 1 || pageSize > 100 {
pageSize = constant.DefaultPageSize
}
return Pagination{Page: page, PageSize: pageSize}
}
// Offset 计算偏移量
func (p Pagination) Offset() int {
return (p.Page - 1) * p.PageSize
}
// PaginatedResponse 分页响应
func PaginatedResponse(c *gin.Context, data interface{}, total int64, p Pagination) {
Success(c, gin.H{
"data": data,
"total": total,
"page": p.Page,
"page_size": p.PageSize,
})
}