Pārlūkot izejas kodu

音频正在处理或者处理完成,不可删除

zhangqian 2 gadi atpakaļ
vecāks
revīzija
0a6e8be485
2 mainītis faili ar 44 papildinājumiem un 10 dzēšanām
  1. 26 2
      controllers/audio.go
  2. 18 8
      models/audio.go

+ 26 - 2
controllers/audio.go

@@ -322,7 +322,18 @@ func (slf AudioCtl) Delete(c *gin.Context) {
 		return
 	}
 
-	err := service.DeleteAudio(params.ID)
+	audio, err := models.NewAudioSearch().SetID(params.ID).First()
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "音频不存在")
+		return
+	}
+
+	if audio.AudioStatus == constvar.AudioStatusProcessing || audio.AudioStatus == constvar.AudioStatusFinish {
+		util.ResponseFormat(c, code.RequestParamError, "音频正在处理或者处理完成,不可删除")
+		return
+	}
+
+	err = service.DeleteAudio(params.ID)
 	if err != nil {
 		util.ResponseFormat(c, code.InternalError, err.Error())
 		return
@@ -345,7 +356,20 @@ func (slf AudioCtl) BatchDelete(c *gin.Context) {
 		return
 	}
 
-	err := service.BatchDeleteAudio(params.IDs)
+	audioList, err := models.NewAudioSearch().SetIDs(params.IDs).FindNotTotal()
+	if err != nil {
+		util.ResponseFormat(c, code.InternalError, "内部错误")
+		return
+	}
+
+	for _, audio := range audioList {
+		if audio.AudioStatus == constvar.AudioStatusProcessing || audio.AudioStatus == constvar.AudioStatusFinish {
+			util.ResponseFormat(c, code.RequestParamError, "音频正在处理或者处理完成,不可删除")
+			return
+		}
+	}
+
+	err = service.BatchDeleteAudio(params.IDs)
 	if err != nil {
 		util.ResponseFormat(c, code.InternalError, err.Error())
 		return

+ 18 - 8
models/audio.go

@@ -32,14 +32,15 @@ type (
 
 	AudioSearch struct {
 		Audio
-		Order     string
-		PageNum   int
-		PageSize  int
-		Orm       *gorm.DB
-		Keyword   string
-		IDs       []uint
-		BeginTime time.Time
-		EndTime   time.Time
+		Order      string
+		PageNum    int
+		PageSize   int
+		Orm        *gorm.DB
+		Keyword    string
+		IDs        []uint
+		BeginTime  time.Time
+		EndTime    time.Time
+		StatusList []constvar.AudioStatus
 	}
 )
 
@@ -98,6 +99,11 @@ func (slf *AudioSearch) SetName(name string) *AudioSearch {
 	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
@@ -182,6 +188,10 @@ func (slf *AudioSearch) build() *gorm.DB {
 		db = db.Where("is_followed = ?", slf.IsFollowed)
 	}
 
+	if len(slf.StatusList) != 0 {
+		db = db.Where("audio_status in ?", slf.StatusList)
+	}
+
 	return db
 }