yinbangzhong
2024-06-20 a5429b8a83e1b4a48c2a3b9b0b475f08a114837c
models/audio.go
@@ -5,6 +5,7 @@
   "gorm.io/gorm"
   "speechAnalysis/constvar"
   "speechAnalysis/pkg/mysqlx"
   "strings"
   "time"
)
@@ -14,24 +15,35 @@
      gorm.Model
      Name             string               `gorm:"index;type:varchar(255);not null;default:'';comment:音频名称" json:"name"`            // 音频名称
      Size             int64                `gorm:"type:int;not null;default:0;comment:文件大小" json:"size"`                            // 音频大小
      FilePath         string               `gorm:"type:varchar(255);not null;default:'';comment:音频名称" json:"-"`                     //音频路径                                               // 音频路径
      FilePath         string               `gorm:"type:varchar(255);not null;default:'';comment:音频路径" json:"-"`                     //音频路径
      TxtFilePath      string               `gorm:"type:varchar(255);not null;default:'';comment:txt路径" json:"-"`                    //txt路径
      AudioStatus      constvar.AudioStatus `gorm:"type:tinyint;not null;default:0;comment:状态" json:"audioStatus"`                   // 音频状态
      LocomotiveNumber string               `gorm:"index;type:varchar(255);not null;default:'';comment:机车号" json:"locomotiveNumber"` // 机车号
      TrainNumber      string               `gorm:"index;type:varchar(255);not null;default:'';comment:车次" json:"trainNumber"`       // 车次
      DriverNumber     string               `gorm:"index;type:varchar(255);not null;default:'';comment:司机号" json:"driverNumber"`     // 司机号
      StationNumber    string               `gorm:"index;type:varchar(255);not null;default:'';comment:车站号" json:"stationNumber"`    // 车站号
      Station          string               `gorm:"index;type:varchar(255);not null;default:'';comment:车站号" json:"station"`          // 车站
      RouteNumber      string               `gorm:"index;type:varchar(255);not null;default:'';comment:交路号" json:"routeNumber"`      // 交路号
      KilometerMarker  string               `gorm:"index;type:varchar(255);not null;default:'';comment:公里标" json:"kilometerMarker"`  // 公里标
      OccurrenceAt     time.Time            `json:"-"`
      OccurrenceTime   string               `json:"occurrenceTime" gorm:"-"`
      IsFollowed       constvar.BoolType    `gorm:"type:tinyint;not null;default:2;comment:是否关注"` //是否关注 1关注 2未关注
      IsFollowed       constvar.BoolType    `gorm:"type:tinyint;not null;default:2;comment:是否关注"`                        //是否关注 1关注 2未关注
      Score            float64              `json:"score"`                                                               // 置信度
      Words            []string             `json:"words" gorm:"-"`                                                      //匹配到的文字数组
      Tags             string               `json:"-" gorm:"type:varchar(255);not null;default:'';comment:匹配到的文字,用逗号拼接"` //匹配到的文字
      AudioText        string               `json:"audioText" gorm:"-"`                                                  //解析出的文本
   }
   AudioSearch struct {
      Audio
      Order    string
      PageNum  int
      PageSize int
      Orm      *gorm.DB
      Keyword  string
      Order      string
      PageNum    int
      PageSize   int
      Orm        *gorm.DB
      Keyword    string
      IDs        []uint
      BeginTime  time.Time
      EndTime    time.Time
      StatusList []constvar.AudioStatus
   }
)
@@ -45,8 +57,12 @@
   } else {
      slf.OccurrenceTime = slf.OccurrenceAt.Format("2006-01-02 15:04:05")
   }
   if slf.Tags != "" {
      slf.Words = strings.Split(slf.Tags, ",")
   }
   return
}
func NewAudioSearch() *AudioSearch {
   return &AudioSearch{Orm: mysqlx.GetDB()}
}
@@ -71,6 +87,11 @@
   return slf
}
func (slf *AudioSearch) SetIDs(ids []uint) *AudioSearch {
   slf.IDs = ids
   return slf
}
func (slf *AudioSearch) SetKeyword(kw string) *AudioSearch {
   slf.Keyword = kw
   return slf
@@ -78,6 +99,11 @@
func (slf *AudioSearch) SetName(name string) *AudioSearch {
   slf.Name = name
   return slf
}
func (slf *AudioSearch) SetAudioStatusList(statusList []constvar.AudioStatus) *AudioSearch {
   slf.StatusList = statusList
   return slf
}
@@ -93,8 +119,23 @@
   slf.DriverNumber = name
   return slf
}
func (slf *AudioSearch) SetStationNumber(name string) *AudioSearch {
   slf.StationNumber = name
func (slf *AudioSearch) SetStation(name string) *AudioSearch {
   slf.Station = name
   return slf
}
func (slf *AudioSearch) SetBeginTime(time time.Time) *AudioSearch {
   slf.BeginTime = time
   return slf
}
func (slf *AudioSearch) SetEndTime(time time.Time) *AudioSearch {
   slf.EndTime = time
   return slf
}
func (slf *AudioSearch) SetIsFollowed(isFollowed constvar.BoolType) *AudioSearch {
   slf.IsFollowed = isFollowed
   return slf
}
@@ -111,7 +152,7 @@
   if slf.Keyword != "" {
      kw := "%" + slf.Keyword + "%"
      db = db.Where("name like ? or locomotive_number like ? or train_number like ? or driver_number like ? or station_number like ?", kw, kw, kw, kw, kw)
      db = db.Where("name like ? or locomotive_number like ? or train_number like ? or driver_number like ? or station like ?", kw, kw, kw, kw, kw)
   }
   if slf.Name != "" {
@@ -130,8 +171,28 @@
      db = db.Where("driver_number like ?", slf.DriverNumber)
   }
   if slf.StationNumber != "" {
      db = db.Where("station_number like ?", slf.StationNumber)
   if slf.Station != "" {
      db = db.Where("station like ?", slf.Station)
   }
   if len(slf.IDs) > 0 {
      db = db.Where("id in ?", slf.IDs)
   }
   if !slf.BeginTime.IsZero() {
      db = db.Where("occurrence_at >= ?", slf.BeginTime)
   }
   if !slf.EndTime.IsZero() {
      db = db.Where("occurrence_at <= ?", slf.EndTime)
   }
   if slf.IsFollowed != 0 {
      db = db.Where("is_followed = ?", slf.IsFollowed)
   }
   if len(slf.StatusList) != 0 {
      db = db.Where("audio_status in ?", slf.StatusList)
   }
   return db
@@ -196,7 +257,7 @@
func (slf *AudioSearch) Delete() error {
   var db = slf.build()
   if err := db.Unscoped().Delete(&Audio{}).Error; err != nil {
   if err := db.Delete(&Audio{}).Error; err != nil {
      return err
   }
@@ -223,7 +284,7 @@
      db      = slf.build()
   )
   if err := db.Count(&total).Error; err != nil {
   if err := db.Where("deleted_at IS NULL").Count(&total).Error; err != nil {
      return records, int(total), fmt.Errorf("find count err: %v", err)
   }
   if slf.PageNum*slf.PageSize > 0 {
@@ -260,7 +321,7 @@
      db      = slf.Orm.Table(slf.TableName()).Where(query, args...)
   )
   if err := db.Count(&total).Error; err != nil {
   if err := db.Where("deleted_at IS NULL").Count(&total).Error; err != nil {
      return records, total, fmt.Errorf("find by query count err: %v", err)
   }
   if slf.PageNum*slf.PageSize > 0 {