Files
service-common/utils/page.go

63 lines
1.3 KiB
Go

package utils
import (
"math"
"git.hlsq.asia/alex/proto/proto/rs/rscommon"
"gorm.io/gen/field"
)
func PageGetOffSet(page *rscommon.PageArgs) int {
if page == nil || page.PageSize <= 0 {
return 0
}
return int((page.PageIndex - 1) * page.PageSize)
}
func CalcTotalPage(totalCount, pageSize int32) int32 {
if pageSize <= 0 {
return 0
}
return int32(math.Ceil(float64(totalCount) / float64(pageSize)))
}
func BuildPageInfoReply(page *rscommon.PageArgs, totalCount int32) *rscommon.PageInfoReply {
if page == nil {
page = &rscommon.PageArgs{PageIndex: 1, PageSize: 10}
}
if page.PageSize <= 0 {
page.PageSize = 10
}
if page.PageIndex <= 0 {
page.PageIndex = 1
}
if totalCount <= 0 {
totalCount = 0
return &rscommon.PageInfoReply{
PageIndex: page.PageIndex,
PageSize: page.PageSize,
TotalCount: totalCount,
}
}
return &rscommon.PageInfoReply{
PageIndex: page.PageIndex,
PageSize: page.PageSize,
TotalCount: totalCount,
}
}
func GetOrderInfo(orderList []*rscommon.OrderInfo, getField func(field string) field.OrderExpr) []field.Expr {
orders := make([]field.Expr, 0, len(orderList))
for _, order := range orderList {
expr := getField(order.Field)
if expr != nil {
if order.Asc {
orders = append(orders, expr.Asc())
} else {
orders = append(orders, expr.Desc())
}
}
}
return orders
}