package manage import ( "fmt" "strconv" "vamicro/iotData-service/model" "vamicro/iotData-service/serializer" ) type ListDeviceService struct { BatteryStart string `form:"batteryStart" json:"batteryStart"` //电量左区间 BatteryEnd string `form:"batteryEnd" json:"batteryEnd"` //电量👉区间 SN string `form:"sn" json:"sn"` //设备编码 Page int `form:"page" json:"page"` //页码 PageSize int `form:"pageSize" json:"pageSize"` //分页大小 } func (service *ListDeviceService) List() serializer.Response { devices := []model.Device{} var total int64 code := 200 db := model.DB.Table("devices") if service.SN != "" { obj := model.DrawZone{} err := obj.FindByName(service.SN) if err == nil { return serializer.Response{ Status: 200, Msg: "zone", Data: obj, } } else { fmt.Println("find zone error:::", err) } db = db.Where("sn like ?", "%"+service.SN+"%") } start, _ := strconv.Atoi(service.BatteryStart) end, _ := strconv.Atoi(service.BatteryEnd) if service.BatteryStart != "" && service.BatteryEnd != "" { db = db.Where("battery BETWEEN ? AND ?", start, end) } else if service.BatteryStart != "" { db = db.Where("battery >= ?", start) } else if service.BatteryEnd != "" { db = db.Where("battery <= ?", end) } if err := db.Count(&total).Error; err != nil { code = 30001 return serializer.Response{ Status: code, Msg: "数据库错误 count", Error: err.Error(), } } if service.PageSize == 0 && service.Page == 0 { if err := db.Find(&devices).Error; err != nil { code = 30001 return serializer.Response{ Status: code, Msg: "数据库错误", Error: err.Error(), } } } else { if err := db.Limit(service.PageSize).Offset((service.Page - 1) * service.PageSize).Find(&devices).Error; err != nil { code = 30001 return serializer.Response{ Status: code, Msg: "数据库错误", Error: err.Error(), } } } return serializer.BuildListResponse(serializer.BuildDevicesRsp(devices), uint(total)) }