service_pagelist.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package cron
  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/cron_task"
  6. )
  7. type SearchData struct {
  8. Page int // 第几页
  9. PageSize int // 每页显示条数
  10. Name string // 任务名称
  11. Protocol int32 // 执行方式
  12. IsUsed int32 // 是否启用
  13. }
  14. func (s *service) PageList(ctx core.Context, searchData *SearchData) (listData []*cron_task.CronTask, 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 := cron_task.NewQueryBuilder()
  25. if searchData.Name != "" {
  26. qb.WhereName(mysql.EqualPredicate, searchData.Name)
  27. }
  28. if searchData.Protocol != 0 {
  29. qb.WhereProtocol(mysql.EqualPredicate, searchData.Protocol)
  30. }
  31. if searchData.IsUsed != 0 {
  32. qb.WhereIsUsed(mysql.EqualPredicate, searchData.IsUsed)
  33. }
  34. listData, err = qb.
  35. Limit(pageSize).
  36. Offset(offset).
  37. OrderById(false).
  38. QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext()))
  39. if err != nil {
  40. return nil, err
  41. }
  42. return
  43. }