44 lines
1.0 KiB
Go
44 lines
1.0 KiB
Go
package response
|
|
|
|
// PageData
|
|
// @description: 分页数据通用结构体
|
|
type PageData[T any] struct {
|
|
Current int `json:"current"` // 当前页码
|
|
Size int `json:"size"` // 每页数量
|
|
Total int64 `json:"total"` // 总数
|
|
TotalPage int `json:"totalPage"` // 总页数
|
|
Records T `json:"records"` // 返回数据
|
|
}
|
|
|
|
// NewPageData
|
|
// @description: 创建分页数据
|
|
// @param records any 数据列表
|
|
// @param total int64 总数
|
|
// @param current int 页码
|
|
// @param size int 页数量
|
|
// @return data PageData[any] 分页数据
|
|
func NewPageData(records any, total int64, current, size int) (data PageData[any]) {
|
|
// 处理一下页码、页数量
|
|
if current == -1 {
|
|
current = 1
|
|
size = int(total)
|
|
}
|
|
// 计算总页码
|
|
totalPage := 0
|
|
if total > 0 {
|
|
upPage := 0
|
|
if int(total)%size > 0 {
|
|
upPage = 1
|
|
}
|
|
totalPage = (int(total) / size) + upPage
|
|
}
|
|
data = PageData[any]{
|
|
Current: current,
|
|
Size: size,
|
|
Total: total,
|
|
TotalPage: totalPage,
|
|
Records: records,
|
|
}
|
|
return
|
|
}
|