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