输入与输出
前端:antd-pro,后端:go
查看列表页-查询表格的url,发现模拟数据的url及响应如下:
输入:
api?currentPage=2&pageSize=10
输出:
{
"list": [
{
"key": 0,
"title": "一个任务名称 0",
"owner": "曲丽丽",
"description": "这是一段描述",
"updatedAt": "2017-06-30T16:00:00.000Z",
"createdAt": "2017-06-30T16:00:00.000Z",
},
"pagination": {
"total": 46,
"pageSize": 10,
"current": 2
}
}
效果

代码
package helper
import (
"errors"
"math"
)
type Pagination struct {
Current int64 //当前页
Pagesize int64 //每页条数
Total int64 //总条数
PageCount int64 //总页数
Nums []int64 //分页序数
NumsCount int64 //总页序数
}
/*
arg1:当前页
arg2:显示条数
arg3:总条数
return1:*Pagination
return2:error
示例:
func (this *TestController) Paging() {
current, _ := this.GetInt64("current")
pageSize, _ := this.GetInt64("pageSize")
this.Data["pagination"] = Paginator(current, pageSize, 365)
this.serverJson()
}
*/
func Paginator(current, pagesize, total int64) (*Pagination, error) {
if total < 0 {
return nil, errors.New("Error: invalid total num, total must >=0 ")
}
if current < 1 {
current = 1
}
if pagesize < 1 {
pagesize = 10
}
page_count := math.Ceil(float64(total) / float64(pagesize))
pagination := new(Pagination)
pagination.Current = current
pagination.Pagesize = pagesize
pagination.Total = total
pagination.PageCount = int64(page_count)
pagination.NumsCount = 7
pagination.setNums()
return pagination, nil
}
func (this *Pagination) setNums() {
this.Nums = []int64{}
if this.PageCount == 0 {
return
}
half := math.Floor(float64(this.NumsCount) / float64(2))
begin := this.Current - int64(half)
if begin < 1 {
begin = 1
}
end := begin + this.NumsCount - 1
if end >= this.PageCount {
begin = this.PageCount - this.NumsCount + 1
if begin < 1 {
begin = 1
}
end = this.PageCount
}
for i := begin; i <= end; i++ {
this.Nums = append(this.Nums, i)
}
}
网友评论