You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

67 lines
1.1 KiB

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,
}
}