From a5429b8a83e1b4a48c2a3b9b0b475f08a114837c Mon Sep 17 00:00:00 2001
From: yinbangzhong <zhongbangyin@126.com>
Date: 星期四, 20 六月 2024 09:11:57 +0800
Subject: [PATCH] download file by attach model

---
 models/audio.go |   83 +++++++++++++++++++++++++++++++++--------
 1 files changed, 67 insertions(+), 16 deletions(-)

diff --git a/models/audio.go b/models/audio.go
index 313f379..4ef34a6 100644
--- a/models/audio.go
+++ b/models/audio.go
@@ -5,6 +5,7 @@
 	"gorm.io/gorm"
 	"speechAnalysis/constvar"
 	"speechAnalysis/pkg/mysqlx"
+	"strings"
 	"time"
 )
 
@@ -14,25 +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:"-"`                                                  //瑙f瀽鍑虹殑鏂囨湰
 	}
 
 	AudioSearch struct {
 		Audio
-		Order    string
-		PageNum  int
-		PageSize int
-		Orm      *gorm.DB
-		Keyword  string
-		IDs      []uint
+		Order      string
+		PageNum    int
+		PageSize   int
+		Orm        *gorm.DB
+		Keyword    string
+		IDs        []uint
+		BeginTime  time.Time
+		EndTime    time.Time
+		StatusList []constvar.AudioStatus
 	}
 )
 
@@ -46,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()}
 }
@@ -87,6 +102,11 @@
 	return slf
 }
 
+func (slf *AudioSearch) SetAudioStatusList(statusList []constvar.AudioStatus) *AudioSearch {
+	slf.StatusList = statusList
+	return slf
+}
+
 func (slf *AudioSearch) SetLocomotiveNumber(name string) *AudioSearch {
 	slf.LocomotiveNumber = name
 	return slf
@@ -99,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
 }
 
@@ -117,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 != "" {
@@ -136,12 +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
@@ -233,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 {
@@ -270,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 {

--
Gitblit v1.8.0