feat: update

This commit is contained in:
Rogee
2025-05-23 20:07:34 +08:00
parent 9b38699764
commit 57cb0a750b
53 changed files with 741 additions and 982 deletions

View File

@@ -6,11 +6,10 @@ import (
"time"
"quyun/app/jobs"
"quyun/app/models"
"quyun/app/model"
"quyun/app/requests"
"quyun/database/conds"
"quyun/database/fields"
"quyun/database/schemas/public/model"
"quyun/providers/ali"
"quyun/providers/job"
"quyun/providers/wepay"
@@ -46,7 +45,7 @@ func (ctl *posts) List(ctx fiber.Ctx, pagination *requests.Pagination, query *Li
conds.Post_Like(query.Keyword),
}
pager, err := models.Posts.List(ctx.Context(), pagination, conds...)
pager, err := model.PostsModel.List(ctx.Context(), pagination, conds...)
if err != nil {
log.WithError(err).Errorf("post list err: %v", err)
return nil, err
@@ -54,13 +53,13 @@ func (ctl *posts) List(ctx fiber.Ctx, pagination *requests.Pagination, query *Li
postIds := lo.Map(pager.Items.([]model.Posts), func(item model.Posts, _ int) int64 { return item.ID })
if len(postIds) > 0 {
userBoughtIds, err := models.Users.BatchCheckHasBought(ctx.Context(), user.ID, postIds)
userBoughtIds, err := model.UsersModel.BatchCheckHasBought(ctx.Context(), user.ID, postIds)
if err != nil {
log.WithError(err).Errorf("BatchCheckHasBought err: %v", err)
}
items := lo.FilterMap(pager.Items.([]model.Posts), func(item model.Posts, _ int) (PostItem, bool) {
medias, err := models.Posts.GetMediaByIds(ctx.Context(), item.HeadImages.Data)
medias, err := model.PostsModel.GetMediaByIds(ctx.Context(), item.HeadImages.Data)
if err != nil {
log.Errorf("GetMediaByIds err: %v", err)
return PostItem{}, false
@@ -119,18 +118,18 @@ type PostItem struct {
func (ctl *posts) Show(ctx fiber.Ctx, id int64, user *model.Users) (*PostItem, error) {
log.Infof("Fetching post with ID: %d", id)
post, err := models.Posts.GetByID(ctx.Context(), id, conds.Post_NotDeleted(), conds.Post_Status(fields.PostStatusPublished))
post, err := model.PostsModel.GetByID(ctx.Context(), id, conds.Post_NotDeleted(), conds.Post_Status(fields.PostStatusPublished))
if err != nil {
log.WithError(err).Errorf("GetByID err: %v", err)
return nil, err
}
bought, err := models.Users.HasBought(ctx.Context(), user.ID, post.ID)
bought, err := model.UsersModel.HasBought(ctx.Context(), user.ID, post.ID)
if err != nil {
return nil, err
}
medias, err := models.Posts.GetMediaByIds(ctx.Context(), post.HeadImages.Data)
medias, err := model.PostsModel.GetMediaByIds(ctx.Context(), post.HeadImages.Data)
if err != nil {
return nil, err
}
@@ -174,22 +173,22 @@ func (ctl *posts) Play(ctx fiber.Ctx, id int64, user *model.Users) (*PlayUrl, er
// }, nil
preview := false
bought, err := models.Users.HasBought(ctx.Context(), user.ID, id)
bought, err := model.UsersModel.HasBought(ctx.Context(), user.ID, id)
if !bought || err != nil {
preview = true
}
log.Infof("Fetching play URL for post ID: %d", id)
post, err := models.Posts.GetByID(ctx.Context(), id)
post, err := model.PostsModel.GetByID(ctx.Context(), id)
if err != nil {
log.WithError(err).Errorf("GetByID err: %v", err)
return nil, err
}
go models.Posts.IncrViewCount(ctx.Context(), post.ID)
go model.PostsModel.IncrViewCount(ctx.Context(), post.ID)
for _, asset := range post.Assets.Data {
if asset.Type == "video/mp4" && asset.Metas != nil && asset.Metas.Short == preview {
media, err := models.Medias.GetByID(ctx.Context(), asset.Media)
media, err := model.MediasModel.GetByID(ctx.Context(), asset.Media)
if err != nil {
log.WithError(err).Errorf("medias GetByID err: %v", err)
return nil, err
@@ -223,7 +222,7 @@ func (ctl *posts) Mine(ctx fiber.Ctx, pagination *requests.Pagination, query *Li
conds.Post_Status(fields.PostStatusPublished),
conds.Post_Like(query.Keyword),
}
pager, err := models.Users.PostList(ctx.Context(), user.ID, pagination, conds...)
pager, err := model.UsersModel.PostList(ctx.Context(), user.ID, pagination, conds...)
if err != nil {
log.WithError(err).Errorf("post list err: %v", err)
return nil, err
@@ -232,7 +231,7 @@ func (ctl *posts) Mine(ctx fiber.Ctx, pagination *requests.Pagination, query *Li
postIds := lo.Map(pager.Items.([]model.Posts), func(item model.Posts, _ int) int64 { return item.ID })
if len(postIds) > 0 {
items := lo.FilterMap(pager.Items.([]model.Posts), func(item model.Posts, _ int) (PostItem, bool) {
medias, err := models.Posts.GetMediaByIds(ctx.Context(), item.HeadImages.Data)
medias, err := model.PostsModel.GetMediaByIds(ctx.Context(), item.HeadImages.Data)
if err != nil {
log.Errorf("GetMediaByIds err: %v", err)
return PostItem{}, false
@@ -271,7 +270,7 @@ func (ctl *posts) Mine(ctx fiber.Ctx, pagination *requests.Pagination, query *Li
// @Bind id path
// @Bind user local
func (ctl *posts) Buy(ctx fiber.Ctx, id int64, user *model.Users) (*wechat.JSAPIPayParams, error) {
bought, err := models.Users.HasBought(ctx.Context(), user.ID, id)
bought, err := model.UsersModel.HasBought(ctx.Context(), user.ID, id)
if err != nil {
return nil, errors.New("查询购买失败")
}
@@ -280,19 +279,19 @@ func (ctl *posts) Buy(ctx fiber.Ctx, id int64, user *model.Users) (*wechat.JSAPI
return nil, errors.New("已经购买过了")
}
post, err := models.Posts.GetByID(ctx.Context(), id)
post, err := model.PostsModel.GetByID(ctx.Context(), id)
if err != nil {
return nil, errors.Wrapf(err, " failed to get post: %d", id)
}
payPrice := post.Price * int64(post.Discount) / 100
order, err := models.Orders.Create(ctx.Context(), user.ID, post.ID)
order, err := model.OrdersModel.Create(ctx.Context(), user.ID, post.ID)
if err != nil {
return nil, errors.Wrap(err, "订单创建失败")
}
if user.Balance >= payPrice {
if err := models.Orders.SetMeta(ctx.Context(), order.ID, func(om fields.OrderMeta) fields.OrderMeta {
if err := model.OrdersModel.SetMeta(ctx.Context(), order.ID, func(om fields.OrderMeta) fields.OrderMeta {
om.CostBalance = payPrice
return om
}); err != nil {
@@ -310,7 +309,7 @@ func (ctl *posts) Buy(ctx fiber.Ctx, id int64, user *model.Users) (*wechat.JSAPI
}
payPrice = payPrice - user.Balance
if err := models.Orders.SetMeta(ctx.Context(), order.ID, func(om fields.OrderMeta) fields.OrderMeta {
if err := model.OrdersModel.SetMeta(ctx.Context(), order.ID, func(om fields.OrderMeta) fields.OrderMeta {
om.CostBalance = user.Balance
return om
}); err != nil {