From 9cb1a4989b412a8a0d5d6745e6302e54c41dfebf Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 21 五月 2024 11:49:09 +0800
Subject: [PATCH] 修复统计条数没过滤软删除的问题

---
 service/process.go |   29 ++++++++++++++++++++++++++---
 1 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/service/process.go b/service/process.go
index 50bf7eb..29eb5f3 100644
--- a/service/process.go
+++ b/service/process.go
@@ -13,6 +13,7 @@
 	"speechAnalysis/constvar"
 	"speechAnalysis/models"
 	"speechAnalysis/pkg/logx"
+	"strings"
 )
 
 // Response 缁撴瀯浣撶敤浜庡瓨鍌ㄥ搷搴斾綋鐨勫唴瀹�
@@ -110,23 +111,45 @@
 			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{}{"audio_status": constvar.AudioStatusFinish})
+			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,
-				Score:     resp.Score,
 			})
 			return err
 		})
 		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