154 lines
4.2 KiB
Go
Executable File
154 lines
4.2 KiB
Go
Executable File
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
|
|
}
|