package aiplazadata import ( "91porn-server/app/service/vidhelpser" "91porn-server/common" "91porn-server/models/v/aiplazamod" "91porn-server/models/v/collectmod" "91porn-server/models/v/likemod" "91porn-server/models/v/vidmod" "go.mongodb.org/mongo-driver/bson/primitive" "sync" ) // FormatAppDataList 格式化app列表数据 func FormatAppDataList(origin []aiplazamod.AiPlaza) (res []*aiplazamod.AiPlazaInfo) { res = make([]*aiplazamod.AiPlazaInfo, len(origin)) if len(origin) == 0 { return } // 获取用户数据 uids := []uint64{} for _, item := range origin { uids = append(uids, item.Uid) } userMap := vidhelpser.GetSimpleUserMapNoUID(uids) // 组装返回数据 for i, item := range origin { res[i] = FormatAppSimpleData(item, userMap) } return } // FormatAppSimpleData 格式化app数据 func FormatAppSimpleData(item aiplazamod.AiPlaza, userMap map[uint64]*vidmod.Publisher) (res *aiplazamod.AiPlazaInfo) { if item.ID.IsZero() { return } // 组装返回数据 res = &aiplazamod.AiPlazaInfo{ ID: item.ID, Type: item.Type, Template: item.Template, Uid: item.Uid, Title: item.Title, OriginalImage: item.OriginalImage, OriginalVideo: item.OriginalVideo, OriginalVideoCover: item.OriginalVideoCover, OriginContent: item.OriginContent, GenerateImage: item.GenerateImage, GenerateVideo: item.GenerateVideo, GenerateVideoCover: item.GenerateVideoCover, Status: item.Status, Reason: item.Reason, SortCode: item.SortCode, LikeCount: item.LikeCount, CollectCount: item.CollectCount, CommentCount: item.CommentCount, ViewCount: item.ViewCount, ReviewAt: item.ReviewAt, CreatedAt: item.CreatedAt, UpdatedAt: item.UpdatedAt, } if userMap != nil { user, ok := userMap[item.Uid] if ok && user != nil { res.Name = user.Name res.Gender = user.Gender res.Portrait = user.Portrait } } return } // FormatAppData 格式化app列表数据 func FormatAppData(uid uint64, item aiplazamod.AiPlaza) (res *aiplazamod.AiPlazaInfo) { if item.ID.IsZero() { return } userMap := vidhelpser.GetSimpleUserMapNoUID([]uint64{item.Uid}) // 获取是否点赞,收藏数据 dataStatus := GetDataStatus(uid, []primitive.ObjectID{item.ID}) // 组装返回数据 res = &aiplazamod.AiPlazaInfo{ ID: item.ID, Type: item.Type, Template: item.Template, Uid: item.Uid, Title: item.Title, OriginalImage: item.OriginalImage, OriginalVideo: item.OriginalVideo, OriginalVideoCover: item.OriginalVideoCover, OriginContent: item.OriginContent, GenerateImage: item.GenerateImage, GenerateVideo: item.GenerateVideo, GenerateVideoCover: item.GenerateVideoCover, Status: item.Status, Reason: item.Reason, SortCode: item.SortCode, ReviewAt: item.ReviewAt, CreatedAt: item.CreatedAt, UpdatedAt: item.UpdatedAt, } if userMap != nil { user, ok := userMap[item.Uid] if ok && user != nil { res.Name = user.Name res.Gender = user.Gender res.Portrait = user.Portrait } } if dataStatus != nil { res.HasLiked = dataStatus[item.ID].HasLiked res.HasCollected = dataStatus[item.ID].HasCollected } return } // DataStatus 数据状态 type DataStatus struct { //已点赞 HasLiked bool `json:"hasLiked" bson:"hasLiked"` //已收藏 HasCollected bool `json:"hasCollected" bson:"hasCollected"` } // GetDataStatus 获取数据状态信息 func GetDataStatus(uid uint64, objIds []primitive.ObjectID) map[primitive.ObjectID]DataStatus { mLike := make(map[primitive.ObjectID]bool) mCollect := make(map[primitive.ObjectID]bool) var wg sync.WaitGroup wg.Add(2) common.Go(func() { defer wg.Done() mLike, _ = likemod.IsLikeVideos(uid, objIds) }) common.Go(func() { defer wg.Done() mCollect, _ = collectmod.IsCollectVideos(uid, objIds) }) wg.Wait() m := make(map[primitive.ObjectID]DataStatus) for _, v := range objIds { info := DataStatus{ HasLiked: mLike[v], HasCollected: mCollect[v], } m[v] = info } return m }