package busmodels import ( "device-manage/app/admin/models" orm "device-manage/common/global" "strconv" ) // 外键关联群组groupId,群组删除,日志记录删除,但是日志文件还在,,目前不知如何处理,删除群组同时检查删除相应日志 ?但是这样处理感觉不太好. type BusDeviceLog struct { LogId int `json:"logId" gorm:"primary_key;AUTO_INCREMENT"` DeviceSn string `json:"deviceSn" gorm:"size:128;"` GroupId int `json:"groupId"` //BusGroup BusGroup `gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NULL;"` LogName string `json:"logName" gorm:"size:128;"` Uid string `json:"uid" gorm:"size:128;"` Size string `json:"size" gorm:"size:128;"` CreateBy string `json:"createBy" gorm:"size:128;"` UpdateBy string `json:"updateBy" gorm:"size:128;"` BaseModel //BusGroup BusGroup `gorm:"ForeignKey:GroupId;` } type QueryLogParams struct { LogName string `json:"logName" gorm:"size:128;"` DeviceSn string `json:"deviceSn" gorm:"size:128;"` PageSize int `json:"pageSize"` PageIndex int `json:"pageIndex"` Gids []int `json:"gids"` } func (BusDeviceLog) TableName() string { return "bus_device_log" } func (e *BusDeviceLog) Get() (BusDeviceLog, error) { var doc BusDeviceLog table := orm.Eloquent.Table(e.TableName()) if e.DeviceSn != "" { table = table.Where("device_sn = ?", e.DeviceSn) } if err := table.First(&doc).Error; err != nil { return doc, err } return doc, nil } func (e *BusDeviceLog) GetPage(pageSize int, pageIndex int, gids []int) ([]BusDeviceLog, int, error) { var doc []BusDeviceLog table := orm.Eloquent.Table(e.TableName()) if e.LogName != "" { table = table.Where("log_name like ?", "%"+e.LogName+"%") } 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("log_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 *BusDeviceLog) GetSingleDevicePage(pageSize int, pageIndex int) ([]BusDeviceLog, int, error) { var doc []BusDeviceLog table := orm.Eloquent.Table(e.TableName()) if e.DeviceSn != "" { table = table.Where("device_sn like ?", "%"+e.DeviceSn+"%") } var count int64 if err := table.Order("log_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 *BusDeviceLog) Insert() (id int, err error) { //添加数据 if err = orm.Eloquent.Table(e.TableName()).Create(&e).Error; err != nil { return } id = e.LogId return } //delelte log func (e *BusDeviceLog) Delete(id int) (success bool, err error) { if err = orm.Eloquent.Table(e.TableName()).Where("log_id = ?", id).Delete(&BusDeviceLog{}).Error; err != nil { success = false return } success = true return } func (e *BusDeviceLog) BatchDelete(id []int) (Result bool, err error) { if err = orm.Eloquent.Table(e.TableName()).Where("log_id in (?)", id).Delete(&BusDeviceLog{}).Error; err != nil { return } Result = true return } func (e *BusDeviceLog) GetLogInfo() (busDeviceLog BusDeviceLog, err error) { if err = orm.Eloquent.Table(e.TableName()).Where("uid in (?)", e.Uid).Find(&busDeviceLog).Error; err != nil { return busDeviceLog, err } return }