GAAS 广汽安道拓GFrame金属件MOM项目
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.

52 lines
1.0 KiB

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