From 649b262b570d1c463e927a99eb1ede611da31344 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期一, 13 五月 2024 11:04:05 +0800 Subject: [PATCH] 批量处理接口,删除接口,批量删除接口 --- service/process.go | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 56 insertions(+), 0 deletions(-) diff --git a/service/process.go b/service/process.go index c9413c0..50bf7eb 100644 --- a/service/process.go +++ b/service/process.go @@ -3,10 +3,16 @@ import ( "bytes" "encoding/json" + "errors" + "gorm.io/gorm" "io" "mime/multipart" "net/http" "os" + "speechAnalysis/conf" + "speechAnalysis/constvar" + "speechAnalysis/models" + "speechAnalysis/pkg/logx" ) // Response 缁撴瀯浣撶敤浜庡瓨鍌ㄥ搷搴斾綋鐨勫唴瀹� @@ -74,3 +80,53 @@ return } + +func Process(audioId uint) (err error) { + audio, err := models.NewAudioSearch().SetID(audioId).First() + + if err != nil { + return errors.New("鏌ユ壘闊抽澶辫触") + } + + if audio.AudioStatus != constvar.AudioStatusUploadOk && audio.AudioStatus != constvar.AudioStatusFailed { + return errors.New("鐘舵�佷笉姝g‘") + } + + err = models.NewAudioSearch().SetID(audioId).UpdateByMap(map[string]interface{}{"audio_status": constvar.AudioStatusProcessing}) + if err != nil { + return errors.New("DB閿欒") + } + + go func() { + resp, err := AnalysisAudio(audio.FilePath, conf.AanlysisConf.Url) + if err != nil { + logx.Errorf("err when AnalysisAudio:%v", err) + _ = models.NewAudioSearch().SetID(audioId).UpdateByMap(map[string]interface{}{"audio_status": constvar.AudioStatusFailed}) + return + } + if resp.Code != 0 { + logx.Errorf("AnalysisAudio error return:%v", resp) + _ = models.NewAudioSearch().SetID(audioId).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(audioId).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 + } + }() + + return nil +} -- Gitblit v1.8.0