From 46130b15fc2dcd04e299318d1d231c48bac15413 Mon Sep 17 00:00:00 2001 From: Leufolium Date: Wed, 11 Sep 2024 11:27:39 +0800 Subject: [PATCH] by Robin at 20240911; --- app/mix/service/utilservice.go | 27 +++++++++++++++++++++++++++ library/mediafiller/mediafiller.go | 19 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/app/mix/service/utilservice.go b/app/mix/service/utilservice.go index ce7f1fbe..ad355e56 100644 --- a/app/mix/service/utilservice.go +++ b/app/mix/service/utilservice.go @@ -1688,6 +1688,33 @@ func (s *Service) utilGetZonePreviews(ctx *gin.Context, zid int64) (previews *db } } + if len(imageIds) == 0 { + vzmlist := make([]*dbstruct.ZoneMoment, 0) + vzmlist, err = _DefaultZoneMoment.OpListByZid(ctx, &zonemomentproto.OpListByZidReq{ + Zid: goproto.Int64(zid), + MType: goproto.Int64(consts.MediaTypeVideo), + CType: goproto.Int64(consts.ZoneMomentCType_Free), + Status: goproto.Int64(consts.ZoneMoment_Public), + Limit: 4, + }) + if err != nil { + logger.Error("_DefaultZoneMoment OpListByZid fail, req: %v, err: %v", err) + return + } + + objectMediaNum := 1 // 单个空间服务总共5个媒体类 + mediaFillableList := make([]mediafiller.MediaFillable, len(vzmlist)*objectMediaNum) + for i, vo := range vzmlist { + mediaFillableList[objectMediaNum*i+0] = vo.MediaComp + } + + imageIds, err = mediafiller.GetCoverIds(ctx, mediaFillableList) + if err != nil { + logger.Error("GetCoverIds fail, req: %v, err: %v", err) + return + } + } + previews = &dbstruct.MediaComponent{ ImageIds: util.Int64Slice(imageIds), } diff --git a/library/mediafiller/mediafiller.go b/library/mediafiller/mediafiller.go index fcdf4891..9c2d8d3f 100644 --- a/library/mediafiller/mediafiller.go +++ b/library/mediafiller/mediafiller.go @@ -221,3 +221,22 @@ func FillListInternal(ctx *gin.Context, list []MediaFillable) error { return nil } + +func GetCoverIds(ctx *gin.Context, list []MediaFillable) ([]int64, error) { + coverIds := make([]int64, 0) + videoIds := make([]int64, 0) + for _, v := range list { + videoIds = append(videoIds, v.GetVideoIds()...) + } + videoMap, err := getVideoMapByIds(ctx, videoIds) + if err != nil { + logger.Error("mediafiller component getVideoMapByIds failed : %v", err) + return make([]int64, 0), err + } + + // 获取视频封面 + for _, v := range videoMap { + coverIds = append(coverIds, v.CoverId) + } + return coverIds, nil +} -- 2.41.0