132 lines
4.1 KiB
Go
132 lines
4.1 KiB
Go
package api
|
|
|
|
import (
|
|
"easyaudioencode/internal/core/audioencode"
|
|
"fmt"
|
|
"git.lnton.com/lnton/pkg/reason"
|
|
"github.com/gin-gonic/gin"
|
|
"strconv"
|
|
)
|
|
|
|
func (a AudioEncodeAPI) findAudioTask(c *gin.Context, in *audioencode.FindAudioTaskInput) (any, error) {
|
|
items, total, err := a.core.FindAudioTask(c.Request.Context(), in)
|
|
rows := make([]map[string]interface{}, 0)
|
|
|
|
for _, item := range items {
|
|
//row := structs.Map(item)
|
|
row := make(map[string]interface{})
|
|
|
|
row["audio_id"] = item.AudioID
|
|
row["audio_name"] = item.AudioName
|
|
row["channel_id"] = item.ChannelID
|
|
row["channel_name"] = item.ChannelName
|
|
row["size"] = item.Size
|
|
row["duration"] = item.Duration
|
|
row["id"] = item.ID
|
|
row["mode"] = item.Mode
|
|
row["created_at"] = item.CreatedAt
|
|
row["updated_at"] = item.UpdatedAt
|
|
row["task_status"] = item.TaskStatus
|
|
row["error_msg"] = item.ErrorMsg
|
|
task, errs := a.transcodeCore.GetTaskInfo(item.ID)
|
|
if errs == nil {
|
|
row["task_status"] = task.Status
|
|
row["end_time"] = task.EndTime
|
|
row["create_time"] = task.CreateTime
|
|
row["start_time"] = task.StartTime
|
|
} else {
|
|
if item.TaskStatus == 1 || item.TaskStatus == 0 {
|
|
row["task_status"] = 2
|
|
}
|
|
}
|
|
rows = append(rows, row)
|
|
}
|
|
|
|
return gin.H{"items": rows, "total": total}, err
|
|
}
|
|
|
|
func (a AudioEncodeAPI) addAudioTask(c *gin.Context, in *audioencode.AddAudioTaskInput) (any, error) {
|
|
if len(in.Items) == 0 {
|
|
return nil, reason.ErrServer.SetMsg(fmt.Sprintf(`add audioencode Items is empty`))
|
|
}
|
|
var outputList []audioencode.AddErrorOutput
|
|
for _, item := range in.Items {
|
|
audioInfo, err := a.core.GetAudioEncode(c.Request.Context(), item.AudioID)
|
|
if err != nil {
|
|
list := audioencode.AddErrorOutput{
|
|
AudioID: item.AudioID,
|
|
ChannelID: item.ChannelID,
|
|
ErrorMsg: fmt.Sprintf(`find audioencode [%d] err [%s]`, item.AudioID, err.Error()),
|
|
ChannelName: item.ChannelName,
|
|
}
|
|
outputList = append(outputList, list)
|
|
continue
|
|
}
|
|
inAdd := &audioencode.AddAudioTask{
|
|
AudioID: item.AudioID,
|
|
ChannelID: item.ChannelID,
|
|
ChannelName: item.ChannelName,
|
|
Size: audioInfo.Size,
|
|
Duration: audioInfo.Duration,
|
|
AudioName: audioInfo.Name,
|
|
Mode: audioInfo.Mode,
|
|
}
|
|
info, err := a.core.AddAudioTask(c.Request.Context(), inAdd)
|
|
if err != nil {
|
|
list := audioencode.AddErrorOutput{
|
|
AudioID: item.AudioID,
|
|
ChannelID: item.ChannelID,
|
|
ErrorMsg: fmt.Sprintf(`find audioencode [%d] err [%s]`, item.AudioID, err.Error()),
|
|
ChannelName: item.ChannelName,
|
|
}
|
|
outputList = append(outputList, list)
|
|
continue
|
|
}
|
|
|
|
err = a.transcodeCore.AddTask(info.ID, info.ChannelID, audioInfo.EncodeUrl, audioInfo.Duration)
|
|
if err != nil {
|
|
list := audioencode.AddErrorOutput{
|
|
AudioID: item.AudioID,
|
|
ChannelID: item.ChannelID,
|
|
ErrorMsg: fmt.Sprintf(`find audioencode [%d] err [%s]`, item.AudioID, err.Error()),
|
|
ChannelName: item.ChannelName,
|
|
}
|
|
outputList = append(outputList, list)
|
|
continue
|
|
}
|
|
}
|
|
if len(outputList) == 0 {
|
|
return gin.H{"data": "ok", "msg": "下发成功"}, nil
|
|
}
|
|
return gin.H{"data": outputList, "msg": "下发失败通道!"}, nil
|
|
}
|
|
|
|
func (a AudioEncodeAPI) cancelAudioTask(c *gin.Context, _ *struct{}) (any, error) {
|
|
ID, _ := strconv.Atoi(c.Param("id"))
|
|
err := a.transcodeCore.CancelTask(ID)
|
|
if err != nil {
|
|
return nil, reason.ErrServer.SetMsg(fmt.Sprintf(`add CancelTask err [%s]`, err.Error()))
|
|
}
|
|
return gin.H{"data": "OK!"}, err
|
|
}
|
|
|
|
func (a AudioEncodeAPI) delAudioTask(c *gin.Context, _ *struct{}) (any, error) {
|
|
ID, _ := strconv.Atoi(c.Param("id"))
|
|
_, err := a.core.DelAudioTask(c.Request.Context(), ID)
|
|
if err != nil {
|
|
return nil, reason.ErrServer.SetMsg(fmt.Sprintf(`del audioencode [%d] err [%s]`, ID, err.Error()))
|
|
}
|
|
return gin.H{"data": "OK!"}, err
|
|
}
|
|
|
|
func (a AudioEncodeAPI) delAudioTaskAll(c *gin.Context, in *audioencode.DelAudioTaskInput) (any, error) {
|
|
if len(in.IDs) == 0 {
|
|
return nil, reason.ErrServer.SetMsg(fmt.Sprintf(`del audioencode ids is empty`))
|
|
}
|
|
_, err := a.core.DelAudioTaskAll(c.Request.Context(), in.IDs)
|
|
if err != nil {
|
|
return nil, reason.ErrServer.SetMsg(fmt.Sprintf(`del audioencode [%d] err [%s]`, in.IDs, err.Error()))
|
|
}
|
|
return gin.H{"data": "OK!"}, err
|
|
}
|