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.
71 lines
1.2 KiB
71 lines
1.2 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")) |
|
|
|
return PageArgs0(page, pageSize, sortBy, asc == 1) |
|
} |
|
|
|
func PageArgs0(page, pageSize int, sortBy string, asc bool) Page { |
|
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, |
|
Offset: offset, |
|
Limit: limit, |
|
} |
|
}
|
|
|