From 649b262b570d1c463e927a99eb1ede611da31344 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期一, 13 五月 2024 11:04:05 +0800
Subject: [PATCH] 批量处理接口,删除接口,批量删除接口

---
 controllers/audio.go |  130 ++++++++++++++++++++++++++++---------------
 1 files changed, 84 insertions(+), 46 deletions(-)

diff --git a/controllers/audio.go b/controllers/audio.go
index afd995d..9ea4502 100644
--- a/controllers/audio.go
+++ b/controllers/audio.go
@@ -5,7 +5,6 @@
 	"github.com/gin-gonic/gin"
 	"gorm.io/gorm"
 	"path"
-	"speechAnalysis/conf"
 	"speechAnalysis/constvar"
 	"speechAnalysis/extend/code"
 	"speechAnalysis/extend/util"
@@ -144,54 +143,93 @@
 		return
 	}
 
-	audio, err := models.NewAudioSearch().SetID(params.ID).First()
-
+	err := service.Process(params.ID)
 	if err != nil {
-		util.ResponseFormat(c, code.RequestParamError, "鏌ユ壘闊抽澶辫触")
+		util.ResponseFormat(c, code.InternalError, err.Error())
 		return
 	}
-
-	if audio.AudioStatus != constvar.AudioStatusUploadOk && audio.AudioStatus != constvar.AudioStatusFailed {
-		util.ResponseFormat(c, code.RequestParamError, "鐘舵�佷笉姝g‘")
-		return
-	}
-
-	err = models.NewAudioSearch().SetID(params.ID).UpdateByMap(map[string]interface{}{"audio_status": constvar.AudioStatusProcessing})
-	if err != nil {
-		util.ResponseFormat(c, code.RequestParamError, "澶勭悊澶辫触")
-		return
-	}
-
-	go func() {
-		resp, err := service.AnalysisAudio(audio.FilePath, conf.AanlysisConf.Url)
-		if err != nil {
-			logx.Errorf("err when AnalysisAudio:%v", err)
-			_ = models.NewAudioSearch().SetID(params.ID).UpdateByMap(map[string]interface{}{"audio_status": constvar.AudioStatusFailed})
-			return
-		}
-		if resp.Code != 0 {
-			logx.Errorf("AnalysisAudio error return:%v", resp)
-			_ = models.NewAudioSearch().SetID(params.ID).UpdateByMap(map[string]interface{}{"audio_status": constvar.AudioStatusFailed})
-			return
-		}
-		logx.Infof("AnalysisAudio result: %v", resp)
-		err = models.WithTransaction(func(db *gorm.DB) error {
-			err = models.NewAudioSearch().SetID(params.ID).UpdateByMap(map[string]interface{}{"audio_status": constvar.AudioStatusFinish})
-			if err != nil {
-				return err
-			}
-			err = models.NewAudioTextSearch().Save(&models.AudioText{
-				AudioID:   audio.ID,
-				AudioText: resp.Result,
-				Score:     resp.Score,
-			})
-			return err
-		})
-		if err != nil {
-			logx.Infof("AnalysisAudio success but update record failed: %v", err)
-			return
-		}
-	}()
 
 	util.ResponseFormat(c, code.UpdateSuccess, "鎴愬姛")
 }
+
+// BatchProcess
+// @Tags      闊抽
+// @Summary   鎵归噺澶勭悊闊抽
+// @Produce   application/json
+// @Param     object  body request.BatchProcessAudio true  "闊抽淇℃伅"
+// @Success   200 {object} util.Response "鎴愬姛"
+// @Router    /api-sa/v1/audio/batchProcess [post]
+func (slf AudioCtl) BatchProcess(c *gin.Context) {
+	var params request.BatchProcessAudio
+	if err := c.ShouldBind(&params); err != nil {
+		util.ResponseFormat(c, code.RequestParamError, err.Error())
+		return
+	}
+
+	var failedNumber int
+	for _, audioID := range params.IDs {
+		err := service.Process(audioID)
+		if err != nil {
+			logx.Errorf("%v锛岀紪鍙�: %v", err.Error(), audioID)
+			failedNumber++
+			continue
+		}
+	}
+
+	if failedNumber == 0 {
+		util.ResponseFormat(c, code.UpdateSuccess, "鎴愬姛")
+		return
+	} else if failedNumber < len(params.IDs) {
+		util.ResponseFormat(c, code.RequestParamError, "閮ㄥ垎澶勭悊澶辫触")
+		return
+	} else {
+		util.ResponseFormat(c, code.RequestParamError, "鍏ㄩ儴澶勭悊澶辫触")
+		return
+	}
+}
+
+// Delete
+// @Tags      闊抽
+// @Summary   鍒犻櫎闊抽
+// @Produce   application/json
+// @Param     object  body request.ProcessAudio true  "闊抽淇℃伅"
+// @Success   200 {object} util.Response "鎴愬姛"
+// @Router    /api-sa/v1/audio/delete [post]
+func (slf AudioCtl) Delete(c *gin.Context) {
+	var params request.ProcessAudio
+	if err := c.ShouldBind(&params); err != nil {
+		util.ResponseFormat(c, code.RequestParamError, err.Error())
+		return
+	}
+
+	err := service.DeleteAudio(params.ID)
+	if err != nil {
+		util.ResponseFormat(c, code.InternalError, err.Error())
+		return
+	}
+
+	util.ResponseFormat(c, code.DeleteSuccess, "鎴愬姛")
+}
+
+// BatchDelete
+// @Tags      闊抽
+// @Summary   鎵归噺鍒犻櫎闊抽
+// @Produce   application/json
+// @Param     object  body request.BatchProcessAudio true  "闊抽淇℃伅"
+// @Success   200 {object} util.Response "鎴愬姛"
+// @Router    /api-sa/v1/audio/batchDelete [post]
+func (slf AudioCtl) BatchDelete(c *gin.Context) {
+	var params request.BatchProcessAudio
+	if err := c.ShouldBind(&params); err != nil {
+		util.ResponseFormat(c, code.RequestParamError, err.Error())
+		return
+	}
+
+	err := service.BatchDeleteAudio(params.IDs)
+	if err != nil {
+		util.ResponseFormat(c, code.InternalError, err.Error())
+		return
+	}
+
+	util.ResponseFormat(c, code.DeleteSuccess, "鎴愬姛")
+}

--
Gitblit v1.8.0