From 0357939d4ab2a10ae3678e2285d012c713c26963 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期四, 16 五月 2024 16:08:18 +0800
Subject: [PATCH] 解析结果匹配文字库并保存

---
 service/process.go |   25 +++++++++++++++++++++++--
 1 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/service/process.go b/service/process.go
index 1d1595a..29eb5f3 100644
--- a/service/process.go
+++ b/service/process.go
@@ -13,6 +13,7 @@
 	"speechAnalysis/constvar"
 	"speechAnalysis/models"
 	"speechAnalysis/pkg/logx"
+	"strings"
 )
 
 // Response 缁撴瀯浣撶敤浜庡瓨鍌ㄥ搷搴斾綋鐨勫唴瀹�
@@ -110,15 +111,18 @@
 			return
 		}
 		logx.Infof("AnalysisAudio result: %v", resp)
+		words := GetWordFromText(resp.Result, audio)
+
 		err = models.WithTransaction(func(db *gorm.DB) error {
-			err = models.NewAudioSearch().SetID(audioId).UpdateByMap(map[string]interface{}{
+			err = models.NewAudioSearch().SetOrm(db).SetID(audioId).UpdateByMap(map[string]interface{}{
 				"audio_status": constvar.AudioStatusFinish,
 				"score":        resp.Score,
+				"tags":         strings.Join(words, ","),
 			})
 			if err != nil {
 				return err
 			}
-			err = models.NewAudioTextSearch().Save(&models.AudioText{
+			err = models.NewAudioTextSearch().SetOrm(db).Save(&models.AudioText{
 				AudioID:   audio.ID,
 				AudioText: resp.Result,
 			})
@@ -126,9 +130,26 @@
 		})
 		if err != nil {
 			logx.Infof("AnalysisAudio success but update record failed: %v", err)
+			_ = models.NewAudioSearch().SetID(audioId).UpdateByMap(map[string]interface{}{"audio_status": constvar.AudioStatusFailed})
 			return
 		}
 	}()
 
 	return nil
 }
+
+func GetWordFromText(text string, audio *models.Audio) (words []string) {
+	if audio == nil {
+		return nil
+	}
+	wordRecords, err := models.NewWordSearch().SetLocomotiveNumber(audio.LocomotiveNumber).FindNotTotal()
+	if err != nil || len(wordRecords) == 0 {
+		return nil
+	}
+	for _, v := range wordRecords {
+		if strings.Contains(text, v.Content) {
+			words = append(words, v.Content)
+		}
+	}
+	return words
+}

--
Gitblit v1.8.0