package busmodels import ( "device-manage/app/admin/models" orm "device-manage/common/global" "strconv" ) // 设备升级记录 //1. 只记录成功的升级记录,失败的忽略 //2. 设备升级先检查当前设备是否有当前推送应用的升级记录,决定是否继续推送 //3. 记录的关键值在于 uid ,uid唯一, uid在升级文件中也是唯一的,以此来查询升级记录. type BusUpgradeRecord struct { RecordId int `json:"recordId" gorm:"primary_key;AUTO_INCREMENT"` DeviceSn string `json:"deviceSn" gorm:"size:128;"` FileName string `json:"fileName" gorm:"size:128;"` GroupId int `json:"groupId"` Uid string `json:"uid" gorm:"size:128;"` Size string `json:"size" gorm:"size:128;"` VersionName string `json:"versionName" gorm:"size:128;"` CreateBy string `json:"createBy" gorm:"size:128;"` UpdateBy string `json:"updateBy" gorm:"size:128;"` BaseModel } type QueryUpgradeRecordParams struct { FileName string `json:"fileName" gorm:"size:128;"` DeviceSn string `json:"deviceSn" gorm:"size:128;"` PageSize int `json:"pageSize"` PageIndex int `json:"pageIndex"` Gids []int `json:"gids"` } func (BusUpgradeRecord) TableName() string { return "bus_upgrade_record" } //根据uid 查询设备推送的唯一记录 func (e *BusUpgradeRecord) GetUpgradeRecord() (record BusUpgradeRecord, err error) { table := orm.Eloquent.Table(e.TableName()) if e.DeviceSn != "" { table = table.Where("device_sn = ?", e.DeviceSn) } if e.Uid != "" { table = table.Where("uid = ?", e.Uid) } if err = table.First(&record).Error; err != nil { return record, err } return record, nil } func (e *BusUpgradeRecord) GetPage(pageSize int, pageIndex int, gids []int) ([]BusUpgradeRecord, int, error) { var doc []BusUpgradeRecord table := orm.Eloquent.Table(e.TableName()) if e.FileName != "" { table = table.Where("file_name like ?", "%"+e.FileName+"%") } if e.DeviceSn != "" { table = table.Where("device_sn like ?", "%"+e.DeviceSn+"%") } if len(gids) > 0 { table = table.Where("group_id in (?)", gids) } var count int64 if err := table.Order("record_id desc").Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil { return nil, 0, err } for k, v := range doc { user := models.SysUser{} id, _ := strconv.Atoi(v.CreateBy) if err := orm.Eloquent.Table("sys_user").Where("user_id = ?", id).Find(&user).Error; err == nil { doc[k].CreateBy = user.Username } id, _ = strconv.Atoi(v.UpdateBy) user2 := models.SysUser{} if err := orm.Eloquent.Table("sys_user").Where("user_id = ?", id).Find(&user2).Error; err == nil { doc[k].UpdateBy = user2.Username } } return doc, int(count), nil } func (e *BusUpgradeRecord) Insert() (id int, err error) { //添加数据 var upgradeFile BusUpgradeFile var dev BusDevice upgradeFileTable := orm.Eloquent.Table("bus_upgrade_file") if e.Uid == "" { return } if err = upgradeFileTable.Where("uid = ?", e.Uid).Find(&upgradeFile).Error; err != nil { return } dev.DeviceSn = e.DeviceSn if dev, err = dev.GetDeviceByDeviceSn(); err != nil { return } e.Size = upgradeFile.Size e.FileName = upgradeFile.FileName e.GroupId = dev.GroupId e.VersionName = upgradeFile.VersionName if err = orm.Eloquent.Table(e.TableName()).Create(&e).Error; err != nil { return } id = e.RecordId return } //delelte log func (e *BusUpgradeRecord) Delete(id int) (success bool, err error) { if err = orm.Eloquent.Table(e.TableName()).Where("record_id = ?", id).Delete(&BusUpgradeRecord{}).Error; err != nil { success = false return } success = true return } func (e *BusUpgradeRecord) BatchDelete(id []int) (Result bool, err error) { if err = orm.Eloquent.Table(e.TableName()).Where("record_id in (?)", id).Delete(&BusUpgradeRecord{}).Error; err != nil { return } Result = true return }