| | |
| | | "gorm.io/gorm" |
| | | "speechAnalysis/constvar" |
| | | "speechAnalysis/pkg/mysqlx" |
| | | "strings" |
| | | "time" |
| | | ) |
| | | |
| | |
| | | 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 |
| | | } |
| | | ) |
| | | |
| | |
| | | } 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()} |
| | | } |
| | |
| | | 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 |
| | |
| | | |
| | | 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 |
| | | } |
| | | |
| | |
| | | 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 |
| | | } |
| | | |
| | |
| | | |
| | | 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 != "" { |
| | |
| | | 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 |
| | |
| | | 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 |
| | | } |
| | | |
| | |
| | | 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 { |
| | |
| | | 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 { |