package data import ( "errors" "strconv" "github.com/gin-gonic/gin" ) // 状态枚举 type Status int32 const ( StatusNone Status = 0 StatusOk Status = 1 StatusProcessing Status = 2 StatusDeleted Status = 3 StatusFailed Status = 4 ) var ( ErrorNotExists = errors.New("not exists") ) func PageCalc(page, size int) (offset, limit int) { if page <= 0 { page = 1 } switch { case size > 1000: size = 1000 case size <= 0: size = 20 } offset = (page - 1) * size return offset, size } type Page struct { Page, PageSize int SortBy string Asc bool Offset, Limit int } func PageArgs(ctx *gin.Context) Page { page, _ := strconv.Atoi(ctx.Query("page")) pageSize, _ := strconv.Atoi(ctx.Query("pageSize")) sortBy := ctx.Query("sortBy") asc, _ := strconv.Atoi(ctx.Query("asc")) if page <= 0 { page = 1 } if pageSize <= 0 || pageSize > 1000 { pageSize = 20 } offset, limit := PageCalc(page, pageSize) return Page{ Page: page, PageSize: pageSize, SortBy: sortBy, Asc: asc == 1, Offset: offset, Limit: limit, } }