page_util.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package utils
  2. import (
  3. "github.com/xormplus/xorm"
  4. "fmt"
  5. "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
  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. stplkey := fmt.Sprintf("%s_%s_select_gen.stpl",controllername, apiname)
  12. result, err := engine.SqlTemplateClient(stplkey, &paramMap).Query().List()
  13. if err != nil{
  14. fmt.Println(err)
  15. return nil, err
  16. }
  17. stplkey = fmt.Sprintf("%s_%s_count_gen.stpl", tableName)
  18. cresult, err := engine.SqlTemplateClient(stplkey, &paramMap).Query().List()
  19. if err != nil{
  20. fmt.Println(err)
  21. return nil, err
  22. }
  23. records := cresult[0]["records"].(int64)
  24. var totalSize int64 = 0
  25. if records%int64(rows) == 0 {
  26. totalSize = records / int64(rows)
  27. }else{
  28. totalSize = records / int64(rows + 1)
  29. }
  30. presult := models.PageResult{}
  31. presult.PageNum = (page)
  32. presult.PageSize = (rows)
  33. presult.Content = result
  34. presult.TotalSize = totalSize
  35. return &presult, nil
  36. }