diff --git a/backend/app/http/admin/uploads.go b/backend/app/http/admin/uploads.go index abfd882..8ac89d6 100644 --- a/backend/app/http/admin/uploads.go +++ b/backend/app/http/admin/uploads.go @@ -5,14 +5,17 @@ import ( "fmt" "path/filepath" + "quyun/app/jobs" "quyun/app/models" "quyun/database/schemas/public/model" "quyun/providers/ali" "quyun/providers/app" + "quyun/providers/job" "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss" "github.com/go-jet/jet/v2/qrm" "github.com/gofiber/fiber/v3" + log "github.com/sirupsen/logrus" ) const UPLOAD_PATH = "quyun" @@ -21,6 +24,7 @@ const UPLOAD_PATH = "quyun" type uploads struct { app *app.Config oss *ali.OSSClient + job *job.Job } type PreCheckResp struct { @@ -70,5 +74,15 @@ func (up *uploads) PostUploadedAction(ctx fiber.Ctx, body *PostUploadedForm) err Hash: body.Md5, Path: filepath.Join(UPLOAD_PATH, body.Md5+filepath.Ext(body.OriginalName)), } - return models.Medias.Create(ctx.Context(), m) + if err := models.Medias.Create(ctx.Context(), m); err != nil { + return err + } + + if m.MimeType == "video/mp4" { + if err := up.job.Add(&jobs.DownloadFromAliOSS{MediaID: m.ID}); err != nil { + log.WithError(err).WithField("media", m).Errorf("add job failed") + } + } + + return nil }