48 lines
862 B
Go
48 lines
862 B
Go
package utils
|
||
|
||
import "gorm.io/gorm"
|
||
|
||
// Page
|
||
// @description: 分页组件
|
||
// @param current
|
||
// @param size
|
||
// @return func(db *gorm.DB) *gorm.DB
|
||
func Page(current, size int) func(db *gorm.DB) *gorm.DB {
|
||
// 如果页码是-1,就不分页
|
||
if current == -1 {
|
||
return func(db *gorm.DB) *gorm.DB {
|
||
return db
|
||
}
|
||
}
|
||
// 分页
|
||
return func(db *gorm.DB) *gorm.DB {
|
||
if current == 0 {
|
||
current = 1
|
||
}
|
||
if size < 1 {
|
||
size = 10
|
||
}
|
||
// 计算偏移量
|
||
offset := (current - 1) * size
|
||
// 返回组装结果
|
||
return db.Offset(offset).Limit(size)
|
||
}
|
||
}
|
||
|
||
// GenTotalPage
|
||
// @description: 计算页码数
|
||
// @param count
|
||
// @param size
|
||
// @return int
|
||
func GenTotalPage(count int64, size int) int {
|
||
totalPage := 0
|
||
if count > 0 {
|
||
upPage := 0
|
||
if int(count)%size > 0 {
|
||
upPage = 1
|
||
}
|
||
totalPage = (int(count) / size) + upPage
|
||
}
|
||
return totalPage
|
||
}
|