From 5a3ebbbb7cc28ccb73e7f3c437837ceb7b0c7d8a Mon Sep 17 00:00:00 2001 From: wangxinyu Date: Fri, 13 Dec 2024 17:42:12 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=9A=E5=91=98=E7=9C=8B=E5=8E=9F?= =?UTF-8?q?=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/consts/consts.go | 5 ++++ dbstruct/account.go | 7 ++++++ library/mediafiller/mediafiller.go | 29 +++++++++++++++++++++--- library/mediafiller/mediafillerhelper.go | 8 ++++++- 4 files changed, 45 insertions(+), 4 deletions(-) diff --git a/api/consts/consts.go b/api/consts/consts.go index 959919ec..e6425512 100644 --- a/api/consts/consts.go +++ b/api/consts/consts.go @@ -79,6 +79,11 @@ const ( Deleted = 1 //已删除 ) +const ( + PermanentMember = 1 // 会员 + NoPermanentMember = 0 // 非会员 +) + // 默认login初始化配置 const ( OriginalLoginMid = -1 diff --git a/dbstruct/account.go b/dbstruct/account.go index 198c621c..ea5ebc9d 100644 --- a/dbstruct/account.go +++ b/dbstruct/account.go @@ -88,6 +88,13 @@ func (p *Account) GetRole() int64 { return *p.Role } +func (p *Account) GetIsAMember() int64 { + if p == nil || p.IsAMember == nil { + return 0 + } + return *p.IsAMember +} + // StreamerAcct 用户结构 type StreamerAcct struct { Mid *int64 `json:"mid" bson:"_id"` // 用户表Id diff --git a/library/mediafiller/mediafiller.go b/library/mediafiller/mediafiller.go index c1d1bd29..9fd3656a 100644 --- a/library/mediafiller/mediafiller.go +++ b/library/mediafiller/mediafiller.go @@ -3,7 +3,9 @@ package mediafiller import ( "encoding/json" "math/rand" + accountproto "service/api/proto/account/proto" "service/api/proto/gateway/proto" + "service/app/mix/service/logic" "service/dbstruct" "service/library/logger" "time" @@ -20,7 +22,10 @@ func init() { rand.Seed(time.Now().Unix()) } -var defaultMediaFiller *MediaFiller +var ( + defaultMediaFiller *MediaFiller + _DefaultAccount *logic.Account +) type GetImageByIdsFunc func(ctx *gin.Context, ids []int64) ([]*dbstruct.Image, error) type GetVideoByIdsFunc func(ctx *gin.Context, ids []int64) ([]*dbstruct.Video, error) @@ -91,12 +96,21 @@ func FillEntity(ctx *gin.Context, entity MediaFillable) error { return err } + // 获取用户付费状态 + account, err := _DefaultAccount.OpListByMid(ctx, &accountproto.OpListByMidReq{ + Mid: &baseReq.Mid, + }) + if err != nil { + logger.Error("FillEntity mediafiller component opListByMid failed : %v", err) + return err + } + images := make([]*dbstruct.ToCImage, 0) videos := make([]*dbstruct.ToCVideo, 0) for _, imageId := range imageIds { if image, ok := imageMap[imageId]; ok { - images = append(images, transToCImage(image)) + images = append(images, transToCImage(image, account.GetIsAMember())) } } for _, videoId := range videoIds { @@ -151,13 +165,22 @@ func FillList(ctx *gin.Context, list []MediaFillable) error { return err } + // 获取用户付费状态 + account, err := _DefaultAccount.OpListByMid(ctx, &accountproto.OpListByMidReq{ + Mid: &baseReq.Mid, + }) + if err != nil { + logger.Error("FillEntity mediafiller component opListByMid failed : %v", err) + return err + } + for _, v := range list { images := make([]*dbstruct.ToCImage, 0) videos := make([]*dbstruct.ToCVideo, 0) for _, imageId := range v.GetImageIds() { if image, ok := imageMap[imageId]; ok { - images = append(images, transToCImage(image)) + images = append(images, transToCImage(image, account.GetIsAMember())) } } for _, videoId := range v.GetVideoIds() { diff --git a/library/mediafiller/mediafillerhelper.go b/library/mediafiller/mediafillerhelper.go index 667fec11..fda3839c 100644 --- a/library/mediafiller/mediafillerhelper.go +++ b/library/mediafiller/mediafillerhelper.go @@ -1,6 +1,7 @@ package mediafiller import ( + "service/api/consts" "service/dbstruct" "service/library/logger" @@ -42,7 +43,7 @@ func getVideoMapByIds(ctx *gin.Context, ids []int64) (map[int64]*dbstruct.Video, } // todo -func transToCImage(image *dbstruct.Image) *dbstruct.ToCImage { +func transToCImage(image *dbstruct.Image, isAMember int64) *dbstruct.ToCImage { if image == nil { return nil } @@ -50,6 +51,11 @@ func transToCImage(image *dbstruct.Image) *dbstruct.ToCImage { // 选择内存最小的图片 imgSrcId := image.SelectMinSizeOssId() + // 会员可以查看原图 + if isAMember == consts.PermanentMember { + imgSrcId = "" + } + return &dbstruct.ToCImage{ Id: image.Id, W: image.W,