service_pagelist.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package admin
  2. import (
  3. "github.com/xinliangnote/go-gin-api/internal/pkg/core"
  4. "github.com/xinliangnote/go-gin-api/internal/repository/mysql"
  5. "github.com/xinliangnote/go-gin-api/internal/repository/mysql/admin"
  6. )
  7. type SearchData struct {
  8. Page int // 第几页
  9. PageSize int // 每页显示条数
  10. Username string // 用户名
  11. Nickname string // 昵称
  12. Mobile string // 手机号
  13. }
  14. func (s *service) PageList(ctx core.Context, searchData *SearchData) (listData []*admin.Admin, err error) {
  15. page := searchData.Page
  16. if page == 0 {
  17. page = 1
  18. }
  19. pageSize := searchData.PageSize
  20. if pageSize == 0 {
  21. pageSize = 10
  22. }
  23. offset := (page - 1) * pageSize
  24. qb := admin.NewQueryBuilder()
  25. qb.WhereIsDeleted(mysql.EqualPredicate, -1)
  26. if searchData.Username != "" {
  27. qb.WhereUsername(mysql.EqualPredicate, searchData.Username)
  28. }
  29. if searchData.Nickname != "" {
  30. qb.WhereNickname(mysql.EqualPredicate, searchData.Nickname)
  31. }
  32. if searchData.Mobile != "" {
  33. qb.WhereMobile(mysql.EqualPredicate, searchData.Mobile)
  34. }
  35. listData, err = qb.
  36. Limit(pageSize).
  37. Offset(offset).
  38. OrderById(false).
  39. QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext()))
  40. if err != nil {
  41. return nil, err
  42. }
  43. return
  44. }