Initial commit

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 13:57:10 +08:00
co-authored by Claude Opus 5
commit 8679200f41
1897 changed files with 257900 additions and 0 deletions
+63
View File
@@ -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
}
+23
View File
@@ -0,0 +1,23 @@
package payvidlgser
import (
"time"
"91porn-server/models/l/payvidlgmod"
)
type VideoCoinIncomeAggregateInfo struct {
ID payvidlgmod.ObjectID `json:"id"` //video id
Total int64 `json:"total" copier:"-"` //视频总金币
Count int64 `json:"count" copier:"-"` //视频购买总次数
CreatedAt time.Time `json:"created_at"` //视频入库时间
PublisherID uint64 `json:"publisher_id"` //视频发布者id
PublisherName string `json:"publisher_name"` //视频发布者名称
Title string `json:"title"` //视频标题
Coins int64 `json:"coins"` //视频定价
}
type VideoCoinIncomeAggregateTopNStat struct {
List []VideoCoinIncomeAggregateInfo `json:"list"` //总金币排名前N的视频详细信息
Gross int64 `json:"gross"` //时间段内所有视频金币总收入
}