| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- package controllers
- import (
- "context"
- "fwh-toolbox-server/logger"
- "fwh-toolbox-server/models/fwh_pro/query"
- "log"
- "time"
- "gorm.io/gen"
- "gorm.io/gen/field"
- )
- type SiteListFilter struct {
- ID []string
- Version []string
- ActiveStatus []int32
- ActiveTime []time.Time // 仅有两个值时有效
- LocalActiveTime []time.Time // 仅有两个值时有效
- FhpSn []string
- Country []string
- Province []string
- City []string
- }
- func GetSiteList(ctx context.Context, filter SiteListFilter, offset int, limit int) {
- Q := query.IotGateway
- q := Q.WithContext(ctx)
- if offset >= 0 {
- q = q.Offset(limit)
- }
- if limit >= 0 {
- q = q.Limit(limit)
- }
- // 必须显示项,可动态添加
- selectList := []field.Expr{Q.ID, Q.Version, Q.FhpSn, Q.ElecnetStatus, Q.Country, Q.Province, Q.City, Q.FinancierName}
- // 查询指定字段
- q = q.Select(selectList...)
- var condition []gen.Condition
- if len(filter.ID) > 0 {
- condition = append(condition, Q.ID.In(filter.ID...))
- }
- if len(filter.Version) > 0 {
- condition = append(condition, Q.Version.In(filter.Version...))
- }
- if len(filter.ActiveStatus) > 0 {
- condition = append(condition, Q.ActiveStatus.In(filter.ActiveStatus...))
- }
- if len(filter.ActiveTime) == 2 {
- condition = append(condition, Q.ActiveTime.Between(filter.ActiveTime[0], filter.ActiveTime[1]))
- }
- if len(filter.LocalActiveTime) == 2 {
- condition = append(condition, Q.LocalActiveTime.Between(filter.LocalActiveTime[0], filter.LocalActiveTime[1]))
- }
- // 查找aPower SN
- for i := 0; i < len(filter.FhpSn); i++ {
- condition = append(condition, Q.FhpSn.Like("%"+filter.FhpSn[i]+"%"))
- }
- if len(filter.Country) > 0 {
- condition = append(condition, Q.Country.In(filter.Country...))
- }
- if len(filter.Province) > 0 {
- condition = append(condition, Q.Province.In(filter.Province...))
- }
- if len(filter.City) > 0 {
- condition = append(condition, Q.City.In(filter.City...))
- }
- // 过滤条件
- siteList, err := q.Where(condition...).Find()
- if err != nil {
- log.Fatal("Failed to query: ", err)
- return
- }
- // 打印查询到的数据
- for _, site := range siteList {
- logger.Std.Printf("ID: %s, Name: %s\n", site.ID, site.Name)
- }
- return
- }
|