苏州瑞玛APS项目web后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1.2 KiB

3 years ago
  1. package grmi
  2. import (
  3. "strconv"
  4. )
  5. const (
  6. PageSize = "pageSize"
  7. _PageSize = "_pageSize"
  8. PageNumber = "pageNumber"
  9. _PageNumber = "_pageNumber"
  10. )
  11. type Paging struct {
  12. Number int64
  13. Size int64
  14. }
  15. func NewPaging() *Paging {
  16. return &Paging{Number: 1, Size: 10}
  17. }
  18. func (self *Paging) Offset() int64 {
  19. return (self.Number - 1) * self.Size
  20. }
  21. func (self *Paging) Fill(urlParameters map[string]string) bool {
  22. size, hasSzie := getPageSize(urlParameters)
  23. number, hasNumber := getPageIndex(urlParameters)
  24. if hasSzie || hasNumber {
  25. self.Size = size
  26. self.Number = number
  27. return true
  28. }
  29. return false
  30. }
  31. func getValue(urlParameters map[string]string, names []string, defaultValue int64) (int64, bool) {
  32. for _, name := range names {
  33. if urlParameter, ok := urlParameters[name]; ok {
  34. value, err := strconv.ParseInt(urlParameter, 10, 64)
  35. if err == nil {
  36. return value, true
  37. }
  38. }
  39. }
  40. return defaultValue, false
  41. }
  42. func getPageIndex(urlParameters map[string]string) (int64, bool) {
  43. return getValue(urlParameters, []string{_PageNumber, PageNumber}, 1)
  44. }
  45. func getPageSize(urlParameters map[string]string) (int64, bool) {
  46. return getValue(urlParameters, []string{_PageSize, PageSize}, 1)
  47. }