From 0a6e8be485f41fcbf6c362663138ce86ccdd02f1 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期三, 22 五月 2024 19:47:19 +0800
Subject: [PATCH] 音频正在处理或者处理完成,不可删除

---
 models/audio.go      |   26 ++++++++++++++++++--------
 controllers/audio.go |   28 ++++++++++++++++++++++++++--
 2 files changed, 44 insertions(+), 10 deletions(-)

diff --git a/controllers/audio.go b/controllers/audio.go
index 2924c9b..5d035d8 100644
--- a/controllers/audio.go
+++ b/controllers/audio.go
@@ -322,7 +322,18 @@
 		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, "闊抽姝e湪澶勭悊鎴栬�呭鐞嗗畬鎴愶紝涓嶅彲鍒犻櫎")
+		return
+	}
+
+	err = service.DeleteAudio(params.ID)
 	if err != nil {
 		util.ResponseFormat(c, code.InternalError, err.Error())
 		return
@@ -345,7 +356,20 @@
 		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, "闊抽姝e湪澶勭悊鎴栬�呭鐞嗗畬鎴愶紝涓嶅彲鍒犻櫎")
+			return
+		}
+	}
+
+	err = service.BatchDeleteAudio(params.IDs)
 	if err != nil {
 		util.ResponseFormat(c, code.InternalError, err.Error())
 		return
diff --git a/models/audio.go b/models/audio.go
index 96f52a2..f46be7c 100644
--- a/models/audio.go
+++ b/models/audio.go
@@ -32,14 +32,15 @@
 
 	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
 	}
 )
 
@@ -95,6 +96,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
 }
 
@@ -182,6 +188,10 @@
 		db = db.Where("is_followed = ?", slf.IsFollowed)
 	}
 
+	if len(slf.StatusList) != 0 {
+		db = db.Where("audio_status in ?", slf.StatusList)
+	}
+
 	return db
 }
 

--
Gitblit v1.8.0