Эх сурвалжийг харах

Merge branch 'feature/eta_1.6.9' into debug

hsun 1 жил өмнө
parent
commit
3d956ba4fe

+ 17 - 23
controllers/speech_recognition/speech_recognition.go

@@ -346,31 +346,23 @@ func (this *SpeechRecognitionController) Save() {
 				return
 			}
 		}
-		speechItem.FileName = req.FileName
-		speechItem.ModifyTime = time.Now().Local()
-		updateCols := []string{speech_recognition.SpeechRecognitionCols.FileName, speech_recognition.SpeechRecognitionCols.ModifyTime}
-		if e = speechItem.Update(updateCols); e != nil {
-			br.Msg = "操作失败"
-			br.ErrMsg = "更新转写文件名称失败, Err: " + e.Error()
-			return
-		}
 	}
 
-	// 批量修改内容
-	contentOb := new(speech_recognition.SpeechRecognitionContent)
-	if e = contentOb.BatchUpdateContents(req.Contents); e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "批量修改内容失败, Err: " + e.Error()
-		return
+	// 取前几段作为摘要保存
+	var abstractNum int
+	var abstract string
+	for _, v := range req.Contents {
+		if abstractNum < 5 {
+			abstractNum += 1
+			abstract += v.Content
+		}
 	}
+	speechItem.FileName = req.FileName
+	speechItem.Abstract = abstract
+	speechItem.ModifyTime = time.Now().Local()
+	speechCols := []string{speech_recognition.SpeechRecognitionCols.FileName, speech_recognition.SpeechRecognitionCols.Abstract, speech_recognition.SpeechRecognitionCols.ModifyTime}
 
-	// 更新标签
-	mappingOb := new(speech_recognition.SpeechRecognitionTagMapping)
-	if e = mappingOb.ClearMappingBySpeechId(req.SpeechRecognitionId); e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "清除语音识别标签失败, Err: " + e.Error()
-		return
-	}
+	// 标签
 	tagMappings := make([]*speech_recognition.SpeechRecognitionTagMapping, 0)
 	for _, v := range req.TagIds {
 		tagMappings = append(tagMappings, &speech_recognition.SpeechRecognitionTagMapping{
@@ -378,9 +370,11 @@ func (this *SpeechRecognitionController) Save() {
 			TagId:               v,
 		})
 	}
-	if e = mappingOb.CreateMulti(tagMappings); e != nil {
+
+	// 保存修改
+	if e = speechOb.SpeechSave(speechItem, speechCols, req.Contents, tagMappings); e != nil {
 		br.Msg = "操作失败"
-		br.ErrMsg = "批量新增语音识别标签失败, Err: " + e.Error()
+		br.ErrMsg = "语音识别保存失败, Err: " + e.Error()
 		return
 	}
 

+ 2 - 2
controllers/speech_recognition/speech_recognition_menu.go

@@ -390,9 +390,9 @@ func (this *SpeechRecognitionMenuController) List() {
 	speeches := make([]*speech_recognition.SpeechRecognition, 0)
 	{
 		speechOb := new(speech_recognition.SpeechRecognition)
-		cond := fmt.Sprintf(` AND %s = ?`, speech_recognition.SpeechRecognitionCols.MenuId)
+		cond := fmt.Sprintf(` AND %s = ? AND %s = ?`, speech_recognition.SpeechRecognitionCols.MenuId, speech_recognition.SpeechRecognitionCols.State)
 		pars := make([]interface{}, 0)
-		pars = append(pars, parentId)
+		pars = append(pars, parentId, speech_recognition.SpeechRecognitionStateSuccess)
 		list, e := speechOb.GetItemsByCondition(cond, pars, []string{}, fmt.Sprintf("%s ASC, %s DESC", speech_recognition.SpeechRecognitionCols.Sort, speech_recognition.SpeechRecognitionCols.CreateTime))
 		if e != nil {
 			br.Msg = "获取失败"

+ 66 - 0
models/speech_recognition/speech_recognition.go

@@ -493,3 +493,69 @@ func (m *SpeechRecognition) GetFirstByMenuId(menuId int) (item *SpeechRecognitio
 type SpeechRecognitionConvertCheckNameReq struct {
 	FileName string `description:"文件名称"`
 }
+
+// SpeechSave 更新内容、摘要及标签
+func (m *SpeechRecognition) SpeechSave(speechItem *SpeechRecognition, speechCols []string, contents []SpeechRecognitionSaveContentReq, tagMappings []*SpeechRecognitionTagMapping) (err error) {
+	if speechItem == nil {
+		err = fmt.Errorf("speech nil")
+		return
+	}
+	o := orm.NewOrm()
+	tx, e := o.Begin()
+	if e != nil {
+		err = fmt.Errorf("transaction begin err: %s", e.Error())
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = tx.Rollback()
+			return
+		}
+		_ = tx.Commit()
+	}()
+
+	// 转写文件
+	if len(speechCols) > 0 {
+		_, e = tx.Update(speechItem, speechCols...)
+		if e != nil {
+			err = fmt.Errorf("update speech err: %s", e.Error())
+			return
+		}
+	}
+
+	// 转写内容
+	if len(contents) > 0 {
+		sql := fmt.Sprintf(`UPDATE %s SET %s = ?, %s = 1, %s = NOW() WHERE %s = ?`, "speech_recognition_content", SpeechRecognitionContentCols.Content, SpeechRecognitionContentCols.IsUpdate, SpeechRecognitionContentCols.ModifyTime, SpeechRecognitionContentCols.SpeechRecognitionContentId)
+		p, e := tx.Raw(sql).Prepare()
+		if e != nil {
+			err = fmt.Errorf("update prepare err: %s", e.Error())
+			return
+		}
+		defer func() {
+			_ = p.Close()
+		}()
+		for _, v := range contents {
+			_, e = p.Exec(v.Content, v.SpeechRecognitionContentId)
+			if e != nil {
+				err = fmt.Errorf("update exec err: %s", e.Error())
+				return
+			}
+		}
+	}
+
+	// 标签
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ?`, "speech_recognition_tag_mapping", SpeechRecognitionTagMappingCols.SpeechRecognitionId)
+	_, e = tx.Raw(sql, speechItem.SpeechRecognitionId).Exec()
+	if e != nil {
+		err = fmt.Errorf("remove tag mappings err: %s", e.Error())
+		return
+	}
+	if len(tagMappings) > 0 {
+		_, e = tx.InsertMulti(len(tagMappings), tagMappings)
+		if e != nil {
+			err = fmt.Errorf("insert tag mappings err: %s", e.Error())
+			return
+		}
+	}
+	return
+}