page_util.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package utils
  2. import (
  3. "fmt"
  4. "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
  5. "github.com/xormplus/xorm"
  6. )
  7. // 分页查询
  8. func PageSearch(engine *xorm.Engine, controllername string, apiname string, tableName string, paramMap map[string]interface{}) (*models.PageResult, error) {
  9. page := paramMap["page"].(int)
  10. rows := paramMap["rows"].(int)
  11. offset := (page - 1) * rows
  12. paramMap["offset"] = offset
  13. stplkey := fmt.Sprintf("%s_%s_select.tpl", controllername, apiname)
  14. result, err := engine.SqlTemplateClient(stplkey, &paramMap).Query().List()
  15. if err != nil {
  16. fmt.Println(err)
  17. return nil, err
  18. }
  19. stplkey = fmt.Sprintf("%s_%s_count.tpl", controllername, apiname)
  20. cresult, err := engine.SqlTemplateClient(stplkey, &paramMap).Query().List()
  21. if err != nil {
  22. fmt.Println(err)
  23. return nil, err
  24. }
  25. records := cresult[0]["records"].(int64)
  26. var totalPageSize int64 = 0
  27. if totalPageSize < int64(rows) {
  28. totalPageSize = 1
  29. } else if records%int64(rows) == 0 {
  30. totalPageSize = records / int64(rows)
  31. } else {
  32. totalPageSize = records / int64(rows+1)
  33. }
  34. presult := models.PageResult{}
  35. presult.Page = (page)
  36. presult.Rows = (rows)
  37. presult.Content = result
  38. presult.TotalSize = records
  39. presult.TotalPageSize = totalPageSize
  40. return &presult, nil
  41. }