123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- package model
- import (
- "sparrow/pkg/models"
- "time"
- "github.com/jinzhu/gorm"
- )
- // Device devices data
- type Device struct {
- db *gorm.DB
- }
- // Init device
- //TODO:增加产品ID查询,目前的查询都没有指定产品ID的查询
- func (a *Device) Init(db *gorm.DB) *Device {
- a.db = db
- return a
- }
- // GetDeviceCount 获取vendorid下的设备激活总数
- func (a *Device) GetDeviceCount(vendorid string) (count int, err error) {
- device := &models.Device{
- VendorID: vendorid,
- }
- err = a.db.Model(device).Where(device).Count(&count).Error
- return
- }
- // GetActiveNumberOfDate 获取某一天的设备激活数量
- func (a *Device) GetActiveNumberOfDate(vendorid string, datetime string) (count int, err error) {
- device := &models.Device{
- VendorID: vendorid,
- }
- err = a.db.Model(device).
- Where("vendor_id = ? and DATE_FORMAT(created_at, '%Y-%m-%d') = ?",
- vendorid, datetime).
- Count(&count).
- Error
- return
- }
- // GetLivelyCountOfDate 获取某一天的设备活跃数据
- func (a *Device) GetLivelyCountOfDate(vendorid string, datetime string) (count int, err error) {
- device := &models.Device{
- VendorID: vendorid,
- }
- err = a.db.Model(device).
- Where("vendor_id = ? and DATE_FORMAT(updated_at, '%Y-%m-%d') = ?",
- vendorid, datetime).Count(&count).Error
- return
- }
- // // GetActiveOf7Days 设备近7日的激活数据
- // func (a *Device) GetActiveOf7Days(vendorid int) (datas []models.DeviceChartData, err error) {
- // err = a.db.Model(&models.Device{}).
- // Select("DATE_FORMAT(created_at,'%Y-%m-%d') as dt, count(id) as count").
- // Where("DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(created_at) and vendor_id = ?",
- // vendorid).
- // Group("dt").Order("dt").Scan(&datas).Error
- // if err != nil {
- // return
- // }
- // return
- // }
- // // GetActiveOf14Days 设备近14日的激活数据
- // func (a *Device) GetActiveOf14Days(vendorid int) (datas []models.DeviceChartData, err error) {
- // err = a.db.Model(&models.Device{}).
- // Select("DATE_FORMAT(created_at,'%Y-%m-%d') as dt, count(id) as count").
- // Where("DATE_SUB(CURDATE(), INTERVAL 14 DAY) <= date(created_at) and vendor_id = ?",
- // vendorid).
- // Group("dt").Order("dt").Scan(&datas).Error
- // if err != nil {
- // return
- // }
- // return
- // }
- // // GetActiveOf30Days 设备近30日的激活数据
- // func (a *Device) GetActiveOf30Days(vendorid int) (datas []models.DeviceChartData, err error) {
- // err = a.db.Model(&models.Device{}).
- // Select("DATE_FORMAT(created_at,'%Y-%m-%d') as dt, count(id) as count").
- // Where("DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(created_at) and vendor_id = ?",
- // vendorid).
- // Group("dt").Order("dt").Scan(&datas).Error
- // if err != nil {
- // return
- // }
- // return
- // }
- // GetActiveOfNumDays 查询几日内的激活趋势数据
- // days参数为7则查询7日的数据
- func (a *Device) GetActiveOfNumDays(vendorid string, days int) ([]map[string]interface{}, error) {
- i := 1
- datas := make([]map[string]interface{}, 0)
- for i <= days {
- day := i - days
- i = i + 1
- datetime := time.Now().AddDate(0, 0, day).Format("2006-01-02")
- count, err := a.GetActiveNumberOfDate(vendorid, datetime)
- if err != nil {
- return nil, err
- }
- data := make(map[string]interface{})
- data[datetime] = count
- datas = append(datas, data)
- }
- return datas, nil
- }
- // GetLivelyOfNumDays 获取设备N日内活跃趋势数据
- func (a *Device) GetLivelyOfNumDays(vendorid string, days int) ([]map[string]interface{}, error) {
- i := 1
- datas := make([]map[string]interface{}, 0)
- for i <= days {
- day := i - days
- i = i + 1
- datetime := time.Now().AddDate(0, 0, day).Format("2006-01-02")
- count, err := a.GetLivelyCountOfDate(vendorid, datetime)
- if err != nil {
- return nil, err
- }
- data := make(map[string]interface{})
- data[datetime] = count
- datas = append(datas, data)
- }
- return datas, nil
- }
- // GetDevices 获取厂商已经激活的设备列表
- func (a *Device) GetDevices(vendorid string, proid, pi, ps int, deviceid string) (datas []models.Device, total int, err error) {
- tx := a.db.Where("vendor_id = ?", vendorid)
- if proid != 0 {
- tx = tx.Where("product_id = ?", proid)
- }
- if deviceid != "" {
- tx = tx.Where("device_identifier = ?", deviceid)
- }
- err = tx.Limit(ps).Offset((pi - 1) * ps).Find(&datas).Error
- tx.Model(&models.Device{}).Count(&total)
- return
- }
- //GetDevicesByVenderId 获取用户设备
- func (a *Device) GetDevicesByVenderId(vendorid string) (datas []models.Device, err error) {
- a.db.Where("vendor_id = ?", vendorid).Find(&datas)
- return
- }
|