mysql_controllers.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package controllers
  2. import (
  3. "context"
  4. "fwh-toolbox-server/logger"
  5. "fwh-toolbox-server/models/fwh_pro/query"
  6. "log"
  7. "time"
  8. "gorm.io/gen"
  9. "gorm.io/gen/field"
  10. )
  11. type SiteListFilter struct {
  12. ID []string
  13. Version []string
  14. ActiveStatus []int32
  15. ActiveTime []time.Time // 仅有两个值时有效
  16. LocalActiveTime []time.Time // 仅有两个值时有效
  17. FhpSn []string
  18. Country []string
  19. Province []string
  20. City []string
  21. }
  22. func GetSiteList(ctx context.Context, filter SiteListFilter, offset int, limit int) {
  23. Q := query.IotGateway
  24. q := Q.WithContext(ctx)
  25. if offset >= 0 {
  26. q = q.Offset(limit)
  27. }
  28. if limit >= 0 {
  29. q = q.Limit(limit)
  30. }
  31. // 必须显示项,可动态添加
  32. selectList := []field.Expr{Q.ID, Q.Version, Q.FhpSn, Q.ElecnetStatus, Q.Country, Q.Province, Q.City, Q.FinancierName}
  33. // 查询指定字段
  34. q = q.Select(selectList...)
  35. var condition []gen.Condition
  36. if len(filter.ID) > 0 {
  37. condition = append(condition, Q.ID.In(filter.ID...))
  38. }
  39. if len(filter.Version) > 0 {
  40. condition = append(condition, Q.Version.In(filter.Version...))
  41. }
  42. if len(filter.ActiveStatus) > 0 {
  43. condition = append(condition, Q.ActiveStatus.In(filter.ActiveStatus...))
  44. }
  45. if len(filter.ActiveTime) == 2 {
  46. condition = append(condition, Q.ActiveTime.Between(filter.ActiveTime[0], filter.ActiveTime[1]))
  47. }
  48. if len(filter.LocalActiveTime) == 2 {
  49. condition = append(condition, Q.LocalActiveTime.Between(filter.LocalActiveTime[0], filter.LocalActiveTime[1]))
  50. }
  51. // 查找aPower SN
  52. for i := 0; i < len(filter.FhpSn); i++ {
  53. condition = append(condition, Q.FhpSn.Like("%"+filter.FhpSn[i]+"%"))
  54. }
  55. if len(filter.Country) > 0 {
  56. condition = append(condition, Q.Country.In(filter.Country...))
  57. }
  58. if len(filter.Province) > 0 {
  59. condition = append(condition, Q.Province.In(filter.Province...))
  60. }
  61. if len(filter.City) > 0 {
  62. condition = append(condition, Q.City.In(filter.City...))
  63. }
  64. // 过滤条件
  65. siteList, err := q.Where(condition...).Find()
  66. if err != nil {
  67. log.Fatal("Failed to query: ", err)
  68. return
  69. }
  70. // 打印查询到的数据
  71. for _, site := range siteList {
  72. logger.Std.Printf("ID: %s, Name: %s\n", site.ID, site.Name)
  73. }
  74. return
  75. }