migrate controllers
Some checks failed
build quyun / Build (push) Failing after 1m30s

This commit is contained in:
2025-12-19 23:33:02 +08:00
parent 557a641f41
commit 49072ddd79
37 changed files with 1944 additions and 69 deletions

View File

@@ -5,6 +5,10 @@ import (
"fmt"
"time"
"quyun/v2/app/services"
"quyun/v2/database/models"
"quyun/v2/pkg/fields"
"github.com/pkg/errors"
. "github.com/riverqueue/river"
log "github.com/sirupsen/logrus"
@@ -41,7 +45,7 @@ func (w *BalancePayNotifyWorker) Work(ctx context.Context, job *Job[BalancePayNo
log.Infof("[Start] Working on job with strings: %+v", job.Args)
defer log.Infof("[End] Finished %s", job.Args.Kind())
order, err := model.OrdersModel().GetByOrderNo(context.Background(), job.Args.OrderNo)
order, err := services.Orders.GetByOrderNO(ctx, job.Args.OrderNo)
if err != nil {
log.Errorf("GetByOrderNo error:%v", err)
return err
@@ -52,7 +56,7 @@ func (w *BalancePayNotifyWorker) Work(ctx context.Context, job *Job[BalancePayNo
return JobCancel(fmt.Errorf("Order already paid, currently status: %d", order.Status))
}
user, err := model.UsersModel().GetByID(context.Background(), order.UserID)
user, err := services.Users.FindByID(ctx, order.UserID)
if err != nil {
log.Errorf("GetByID error:%v", err)
return errors.Wrap(err, "get user error")
@@ -63,7 +67,7 @@ func (w *BalancePayNotifyWorker) Work(ctx context.Context, job *Job[BalancePayNo
order.PaymentMethod = "balance"
order.Status = fields.OrderStatusCompleted
meta := order.Meta.Data
meta := order.Meta.Data()
if user.Balance-meta.CostBalance < 0 {
log.Errorf("User %d balance is not enough, current balance: %d, cost: %d", user.ID, user.Balance, payPrice)
@@ -73,28 +77,29 @@ func (w *BalancePayNotifyWorker) Work(ctx context.Context, job *Job[BalancePayNo
}
log.Infof("Updated order details: %+v", order)
tx, err := model.Transaction(ctx)
tx := models.Q.Begin()
if err != nil {
return errors.Wrap(err, "Transaction error")
}
defer tx.Rollback()
// update user balance
err = user.SetBalance(ctx, user.Balance-payPrice)
err = services.Users.DescBalance(ctx, user.ID, payPrice)
if err != nil {
log.WithError(err).Error("SetBalance error")
return JobCancel(errors.Wrap(err, "set user balance failed"))
}
if err := user.BuyPosts(context.Background(), order.PostID, order.Price); err != nil {
if err := services.Users.BuyPosts(context.Background(), user.ID, order.PostID, order.Price); err != nil {
log.Errorf("BuyPosts error:%v", err)
return errors.Wrap(err, "BuyPosts error")
}
if err := order.Update(context.Background()); err != nil {
if _, err := order.Update(ctx); err != nil {
log.Errorf("Update order error:%v", err)
return errors.Wrap(err, "Update order error")
}
if err := tx.Commit(); err != nil {
log.Errorf("Commit error:%v", err)
return errors.Wrap(err, "Commit error")

View File

@@ -6,16 +6,14 @@ import (
"path/filepath"
"time"
"quyun/v2/app/model"
"quyun/v2/app/services"
"quyun/v2/providers/ali"
"quyun/v2/providers/app"
"quyun/v2/providers/job"
. "github.com/riverqueue/river"
log "github.com/sirupsen/logrus"
_ "go.ipao.vip/atom"
"go.ipao.vip/atom/contracts"
_ "go.ipao.vip/atom/contracts"
)
var _ contracts.JobArgs = (*DownloadFromAliOSS)(nil)
@@ -55,7 +53,7 @@ func (w *DownloadFromAliOSSWorker) Work(ctx context.Context, job *Job[DownloadFr
log.Infof("[Start] Working on job with strings: %+v", job.Args)
defer log.Infof("[End] Finished %s", job.Args.Kind())
media, err := model.MediasModel().GetByHash(ctx, job.Args.MediaHash)
media, err := services.Medias.GetByHash(ctx, job.Args.MediaHash)
if err != nil {
log.Errorf("Error getting media by ID: %v", err)
return JobCancel(err)

View File

@@ -5,7 +5,6 @@ import (
"testing"
"quyun/v2/app/commands/testx"
"quyun/v2/app/model"
"quyun/v2/providers/ali"
"quyun/v2/providers/app"
"quyun/v2/providers/job"
@@ -34,7 +33,7 @@ type DownloadFromAliOSSSuite struct {
}
func Test_DownloadFromAliOSS(t *testing.T) {
providers := testx.Default().With(Provide, model.Provide)
providers := testx.Default().With(Provide)
testx.Serve(providers, t, func(p DownloadFromAliOSSSuiteInjectParams) {
suite.Run(t, &DownloadFromAliOSSSuite{DownloadFromAliOSSSuiteInjectParams: p})

View File

@@ -4,6 +4,9 @@ import (
"context"
"time"
"quyun/v2/app/services"
"quyun/v2/database/models"
"quyun/v2/pkg/fields"
"quyun/v2/pkg/utils"
"quyun/v2/providers/ali"
"quyun/v2/providers/app"
@@ -15,6 +18,7 @@ import (
log "github.com/sirupsen/logrus"
_ "go.ipao.vip/atom"
"go.ipao.vip/atom/contracts"
"go.ipao.vip/gen/types"
)
var _ contracts.JobArgs = (*PublishDraftPosts)(nil)
@@ -54,33 +58,33 @@ func (w *PublishDraftPostsWorker) Work(ctx context.Context, job *Job[PublishDraf
log.Infof("[Start] Working on job with strings: %+v", job.Args)
defer log.Infof("[End] Finished %s", job.Args.Kind())
media, err := model.MediasModel().GetByHash(ctx, job.Args.MediaHash)
media, err := services.Medias.GetByHash(ctx, job.Args.MediaHash)
if err != nil {
log.Errorf("Error getting media by ID: %v", err)
return JobCancel(err)
}
relationMedias, err := model.MediasModel().GetRelations(ctx, media.Hash)
relationMedias, err := services.Medias.GetRelations(ctx, media.Hash)
if err != nil {
log.Errorf("Error getting relation medias: %v", err)
return JobCancel(err)
}
assets := lo.FilterMap(relationMedias, func(media *model.Medias, _ int) (fields.MediaAsset, bool) {
assets := lo.FilterMap(relationMedias, func(media *models.Media, _ int) (fields.MediaAsset, bool) {
return fields.MediaAsset{
Type: media.MimeType,
Media: media.ID,
Metas: &media.Metas.Data,
Metas: lo.ToPtr(media.Metas.Data()),
}, media.MimeType != "image/jpeg"
})
assets = append(assets, fields.MediaAsset{
Type: media.MimeType,
Media: media.ID,
Metas: &media.Metas.Data,
Metas: lo.ToPtr(media.Metas.Data()),
})
// publish a draft posts
post := &model.Posts{
post := &models.Post{
Status: fields.PostStatusDraft,
Title: utils.FormatTitle(media.Name),
Description: "",
@@ -89,9 +93,9 @@ func (w *PublishDraftPostsWorker) Work(ctx context.Context, job *Job[PublishDraf
Discount: 100,
Views: 0,
Likes: 0,
Tags: fields.Json[[]string]{},
Assets: fields.ToJson(assets),
HeadImages: fields.ToJson(lo.FilterMap(relationMedias, func(media *model.Medias, _ int) (int64, bool) {
Tags: types.NewJSONType([]string{}),
Assets: types.NewJSONType(assets),
HeadImages: types.NewJSONType(lo.FilterMap(relationMedias, func(media *models.Media, _ int) (int64, bool) {
return media.ID, media.MimeType == "image/jpeg"
})),
}

View File

@@ -5,8 +5,8 @@ import (
"path/filepath"
"time"
"quyun/v2/app/model"
"quyun/v2/database/fields"
"quyun/v2/app/services"
"quyun/v2/pkg/fields"
"quyun/v2/pkg/utils"
"quyun/v2/providers/app"
"quyun/v2/providers/job"
@@ -54,7 +54,7 @@ func (w *VideoCutWorker) Work(ctx context.Context, job *Job[VideoCut]) error {
log.Infof("[Start] Working on job with strings: %+v", job.Args)
defer log.Infof("[End] Finished %s", job.Args.Kind())
media, err := model.MediasModel().GetByHash(ctx, job.Args.MediaHash)
media, err := services.Medias.GetByHash(ctx, job.Args.MediaHash)
if err != nil {
log.Errorf("Error getting media by ID: %v", err)
return JobCancel(err)
@@ -81,7 +81,7 @@ func (w *VideoCutWorker) Work(ctx context.Context, job *Job[VideoCut]) error {
Short: false,
Duration: duration,
}
if err := model.MediasModel().UpdateMetas(ctx, media.ID, metas); err != nil {
if err := services.Medias.UpdateMetas(ctx, media.ID, metas); err != nil {
log.Errorf("Error updating media metas: %v", err)
return errors.Wrap(err, "update media metas")
}

View File

@@ -6,8 +6,9 @@ import (
"path/filepath"
"time"
"quyun/v2/app/model"
"quyun/v2/database/fields"
"quyun/v2/app/services"
"quyun/v2/database/models"
"quyun/v2/pkg/fields"
"quyun/v2/pkg/utils"
"quyun/v2/providers/ali"
"quyun/v2/providers/app"
@@ -18,6 +19,7 @@ import (
log "github.com/sirupsen/logrus"
_ "go.ipao.vip/atom"
"go.ipao.vip/atom/contracts"
"go.ipao.vip/gen/types"
)
var _ contracts.JobArgs = (*VideoExtractHeadImage)(nil)
@@ -57,7 +59,7 @@ func (w *VideoExtractHeadImageWorker) Work(ctx context.Context, job *Job[VideoEx
log.Infof("[Start] Working on job with strings: %+v", job.Args)
defer log.Infof("[End] Finished %s", job.Args.Kind())
media, err := model.MediasModel().GetByHash(ctx, job.Args.MediaHash)
media, err := services.Medias.GetByHash(ctx, job.Args.MediaHash)
if err != nil {
log.Errorf("Error getting media by ID: %v", err)
return JobCancel(err)
@@ -88,13 +90,13 @@ func (w *VideoExtractHeadImageWorker) Work(ctx context.Context, job *Job[VideoEx
name := "[展示图]" + media.Name + ".jpg"
// create a new media record for the image
imageMedia := &model.Medias{
imageMedia := &models.Media{
Name: name,
MimeType: "image/jpeg",
Size: fileSize,
Path: w.oss.GetSavePath(filename),
Hash: fileMd5,
Metas: fields.ToJson(fields.MediaMetas{
Metas: types.NewJSONType(fields.MediaMetas{
ParentHash: media.Hash,
}),
}

View File

@@ -5,8 +5,9 @@ import (
"path/filepath"
"time"
"quyun/v2/app/model"
"quyun/v2/database/fields"
"quyun/v2/app/services"
"quyun/v2/database/models"
"quyun/v2/pkg/fields"
"quyun/v2/pkg/utils"
"quyun/v2/providers/ali"
"quyun/v2/providers/app"
@@ -17,6 +18,7 @@ import (
log "github.com/sirupsen/logrus"
_ "go.ipao.vip/atom"
"go.ipao.vip/atom/contracts"
"go.ipao.vip/gen/types"
)
var _ contracts.JobArgs = (*VideoStoreShort)(nil)
@@ -57,7 +59,7 @@ func (w *VideoStoreShortWorker) Work(ctx context.Context, job *Job[VideoStoreSho
log.Infof("[Start] Working on job with strings: %+v", job.Args)
defer log.Infof("[End] Finished %s", job.Args.Kind())
media, err := model.MediasModel().GetByHash(ctx, job.Args.MediaHash)
media, err := services.Medias.GetByHash(ctx, job.Args.MediaHash)
if err != nil {
log.Errorf("Error getting media by ID: %v", err)
return JobCancel(err)
@@ -90,13 +92,13 @@ func (w *VideoStoreShortWorker) Work(ctx context.Context, job *Job[VideoStoreSho
log.Infof("got file size %s %d", job.Args.FilePath, fileSize)
// save to db and relate to master
mediaModel := &model.Medias{
mediaModel := &models.Media{
Name: "[试听] " + media.Name,
MimeType: media.MimeType,
Size: fileSize,
Path: filePath,
Hash: fileMd5,
Metas: fields.ToJson(fields.MediaMetas{
Metas: types.NewJSONType(fields.MediaMetas{
ParentHash: media.Hash,
Short: true,
Duration: duration,