分页函数(这个分页函数不具有通用性) rollPage:展示分页的个数 totalRows:总记录 currentPage:每页显示记录数 urlPrefix:url链接前缀 urlParams:url键值对参数
(rollPage, totalRows, listRows, currentPage int, urlPrefix string, urlSuffix string, urlParams ...interface{})
| 644 | // urlPrefix:url链接前缀 |
| 645 | // urlParams:url键值对参数 |
| 646 | func NewPaginations(rollPage, totalRows, listRows, currentPage int, urlPrefix string, urlSuffix string, urlParams ...interface{}) html1.HTML { |
| 647 | var ( |
| 648 | htmlPage, path string |
| 649 | pages []int |
| 650 | params []string |
| 651 | ) |
| 652 | //总页数 |
| 653 | totalPage := totalRows / listRows |
| 654 | if totalRows%listRows > 0 { |
| 655 | totalPage += 1 |
| 656 | } |
| 657 | //只有1页的时候,不分页 |
| 658 | if totalPage < 2 { |
| 659 | return "" |
| 660 | } |
| 661 | paramsLen := len(urlParams) |
| 662 | if paramsLen > 0 { |
| 663 | if paramsLen%2 > 0 { |
| 664 | paramsLen = paramsLen - 1 |
| 665 | } |
| 666 | for i := 0; i < paramsLen; { |
| 667 | key := strings.TrimSpace(fmt.Sprintf("%v", urlParams[i])) |
| 668 | val := strings.TrimSpace(fmt.Sprintf("%v", urlParams[i+1])) |
| 669 | //键存在,同时值不为0也不为空 |
| 670 | if len(key) > 0 && len(val) > 0 && val != "0" { |
| 671 | params = append(params, key, val) |
| 672 | } |
| 673 | i = i + 2 |
| 674 | } |
| 675 | } |
| 676 | |
| 677 | path = strings.Trim(urlPrefix, "/") |
| 678 | if len(params) > 0 { |
| 679 | path = path + "/" + strings.Trim(strings.Join(params, "/"), "/") |
| 680 | } |
| 681 | //最后再处理一次“/”,是为了防止urlPrifix参数为空时,出现多余的“/” |
| 682 | path = "/" + strings.Trim(path, "/") |
| 683 | |
| 684 | if currentPage > totalPage { |
| 685 | currentPage = totalPage |
| 686 | } |
| 687 | if currentPage < 1 { |
| 688 | currentPage = 1 |
| 689 | } |
| 690 | index := 0 |
| 691 | rp := rollPage * 2 |
| 692 | for i := rp; i > 0; i-- { |
| 693 | p := currentPage + rollPage - i |
| 694 | if p > 0 && p <= totalPage { |
| 695 | |
| 696 | pages = append(pages, p) |
| 697 | } |
| 698 | } |
| 699 | for k, v := range pages { |
| 700 | if v == currentPage { |
| 701 | index = k |
| 702 | } |
| 703 | } |
no test coverage detected