@@ -0,0 +1,63 @@
|
||||
package payvidlgser
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"91porn-server/models/l/payvidlgmod"
|
||||
"91porn-server/models/v/usermod"
|
||||
"91porn-server/models/v/vidmod"
|
||||
)
|
||||
|
||||
// VideoCoinIncomeAggregateTopN
|
||||
func VideoCoinIncomeAggregateTopN(topN int, start, end time.Time) (ret VideoCoinIncomeAggregateTopNStat, err error) {
|
||||
list, err := payvidlgmod.VideoCoinIncomeAggregateTopN(topN, start, end)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
listLen := len(list)
|
||||
videoIDs := make([]payvidlgmod.ObjectID, listLen)
|
||||
for i, v := range list {
|
||||
videoIDs[i] = v.VID
|
||||
}
|
||||
videos, err := vidmod.GetVideoListByIDsNoStatus(videoIDs)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
videoMap := make(map[payvidlgmod.ObjectID]vidmod.VideoModel)
|
||||
for _, video := range videos {
|
||||
videoMap[video.ID] = *video
|
||||
}
|
||||
listDetail := make([]VideoCoinIncomeAggregateInfo, listLen)
|
||||
publisherIDs := make([]uint64, 0, listLen)
|
||||
for i, v := range list {
|
||||
listDetail[i] = VideoCoinIncomeAggregateInfo{
|
||||
ID: v.VID,
|
||||
Total: v.Total,
|
||||
Count: v.Count,
|
||||
CreatedAt: videoMap[v.VID].CreatedAt,
|
||||
PublisherID: videoMap[v.VID].PublisherID,
|
||||
Title: videoMap[v.VID].Title,
|
||||
Coins: videoMap[v.VID].Coins,
|
||||
}
|
||||
if videoMap[v.VID].PublisherID != 0 {
|
||||
publisherIDs = append(publisherIDs, videoMap[v.VID].PublisherID)
|
||||
}
|
||||
}
|
||||
userMap, err := usermod.GetUsersBaseInfoMap(publisherIDs)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
for _, v := range listDetail {
|
||||
user, ok := userMap[v.PublisherID]
|
||||
if ok {
|
||||
v.PublisherName = user.Name
|
||||
}
|
||||
}
|
||||
gross, err := payvidlgmod.VideoCoinIncomeGross(start, end)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ret.Gross = gross
|
||||
ret.List = listDetail
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user