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(¶ms); 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(¶ms); 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(¶ms); 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