63 lines
1.3 KiB
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
|
|
}
|