|
|
@@ -5,7 +5,6 @@ import (
|
|
|
"github.com/gin-gonic/gin"
|
|
|
"gorm.io/gorm"
|
|
|
"path"
|
|
|
- "speechAnalysis/conf"
|
|
|
"speechAnalysis/constvar"
|
|
|
"speechAnalysis/extend/code"
|
|
|
"speechAnalysis/extend/util"
|
|
|
@@ -144,54 +143,93 @@ func (slf AudioCtl) Process(c *gin.Context) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- audio, err := models.NewAudioSearch().SetID(params.ID).First()
|
|
|
-
|
|
|
+ err := service.Process(params.ID)
|
|
|
if err != nil {
|
|
|
- util.ResponseFormat(c, code.RequestParamError, "查找音频失败")
|
|
|
+ util.ResponseFormat(c, code.InternalError, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ util.ResponseFormat(c, code.UpdateSuccess, "成功")
|
|
|
+}
|
|
|
+
|
|
|
+// BatchProcess
|
|
|
+// @Tags 音频
|
|
|
+// @Summary 批量处理音频
|
|
|
+// @Produce application/json
|
|
|
+// @Param object body request.BatchProcessAudio true "音频信息"
|
|
|
+// @Success 200 {object} util.Response "成功"
|
|
|
+// @Router /api-sa/v1/audio/batchProcess [post]
|
|
|
+func (slf AudioCtl) BatchProcess(c *gin.Context) {
|
|
|
+ var params request.BatchProcessAudio
|
|
|
+ if err := c.ShouldBind(¶ms); err != nil {
|
|
|
+ util.ResponseFormat(c, code.RequestParamError, err.Error())
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- if audio.AudioStatus != constvar.AudioStatusUploadOk && audio.AudioStatus != constvar.AudioStatusFailed {
|
|
|
- util.ResponseFormat(c, code.RequestParamError, "状态不正确")
|
|
|
+ var failedNumber int
|
|
|
+ for _, audioID := range params.IDs {
|
|
|
+ err := service.Process(audioID)
|
|
|
+ if err != nil {
|
|
|
+ logx.Errorf("%v,编号: %v", err.Error(), audioID)
|
|
|
+ failedNumber++
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if failedNumber == 0 {
|
|
|
+ util.ResponseFormat(c, code.UpdateSuccess, "成功")
|
|
|
+ return
|
|
|
+ } else if failedNumber < len(params.IDs) {
|
|
|
+ util.ResponseFormat(c, code.RequestParamError, "部分处理失败")
|
|
|
+ return
|
|
|
+ } else {
|
|
|
+ util.ResponseFormat(c, code.RequestParamError, "全部处理失败")
|
|
|
+ return
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// Delete
|
|
|
+// @Tags 音频
|
|
|
+// @Summary 删除音频
|
|
|
+// @Produce application/json
|
|
|
+// @Param object body request.ProcessAudio true "音频信息"
|
|
|
+// @Success 200 {object} util.Response "成功"
|
|
|
+// @Router /api-sa/v1/audio/delete [post]
|
|
|
+func (slf AudioCtl) Delete(c *gin.Context) {
|
|
|
+ var params request.ProcessAudio
|
|
|
+ if err := c.ShouldBind(¶ms); err != nil {
|
|
|
+ util.ResponseFormat(c, code.RequestParamError, err.Error())
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- err = models.NewAudioSearch().SetID(params.ID).UpdateByMap(map[string]interface{}{"audio_status": constvar.AudioStatusProcessing})
|
|
|
+ err := service.DeleteAudio(params.ID)
|
|
|
if err != nil {
|
|
|
- util.ResponseFormat(c, code.RequestParamError, "处理失败")
|
|
|
+ util.ResponseFormat(c, code.InternalError, err.Error())
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- go func() {
|
|
|
- resp, err := service.AnalysisAudio(audio.FilePath, conf.AanlysisConf.Url)
|
|
|
- if err != nil {
|
|
|
- logx.Errorf("err when AnalysisAudio:%v", err)
|
|
|
- _ = models.NewAudioSearch().SetID(params.ID).UpdateByMap(map[string]interface{}{"audio_status": constvar.AudioStatusFailed})
|
|
|
- return
|
|
|
- }
|
|
|
- if resp.Code != 0 {
|
|
|
- logx.Errorf("AnalysisAudio error return:%v", resp)
|
|
|
- _ = models.NewAudioSearch().SetID(params.ID).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(params.ID).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
|
|
|
- }
|
|
|
- }()
|
|
|
+ util.ResponseFormat(c, code.DeleteSuccess, "成功")
|
|
|
+}
|
|
|
|
|
|
- util.ResponseFormat(c, code.UpdateSuccess, "成功")
|
|
|
+// BatchDelete
|
|
|
+// @Tags 音频
|
|
|
+// @Summary 批量删除音频
|
|
|
+// @Produce application/json
|
|
|
+// @Param object body request.BatchProcessAudio true "音频信息"
|
|
|
+// @Success 200 {object} util.Response "成功"
|
|
|
+// @Router /api-sa/v1/audio/batchDelete [post]
|
|
|
+func (slf AudioCtl) BatchDelete(c *gin.Context) {
|
|
|
+ var params request.BatchProcessAudio
|
|
|
+ if err := c.ShouldBind(¶ms); err != nil {
|
|
|
+ util.ResponseFormat(c, code.RequestParamError, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ err := service.BatchDeleteAudio(params.IDs)
|
|
|
+ if err != nil {
|
|
|
+ util.ResponseFormat(c, code.InternalError, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ util.ResponseFormat(c, code.DeleteSuccess, "成功")
|
|
|
}
|