Files
huangguo_server/skd/job/stat/video/method.go
T
rootandClaude Opus 5 8679200f41 Initial commit
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:57:10 +08:00

131 lines
3.0 KiB
Go

package video
import (
"time"
"91porn-server/common/timeutil/timerange"
"91porn-server/models/l/payvidlgmod"
"91porn-server/models/l/playlgmod"
"91porn-server/models/s/statvidmod"
"go.mongodb.org/mongo-driver/bson/primitive"
)
type ObjectID = primitive.ObjectID
type TimeRange = timerange.TimeRange
type VideoStatIncDoc = statvidmod.VideoStatIncDoc
type VideoStatSetDoc = statvidmod.VideoStatSetDoc
type VideoStatDoc = statvidmod.VideoStatDoc
type VideoStatDocMap = statvidmod.VideoStatDocMap //ObjectID->VideoStatDoc
// fillPayCoin
func fillPayCoin(timeRange TimeRange, docMap *VideoStatDocMap) error {
incomeMap, err := payvidlgmod.PayCoinMapByTime(timeRange.Head, timeRange.Tail)
if err != nil {
return err
}
docM := *docMap
for vid, v := range incomeMap {
if _, existed := docM[vid]; !existed {
docM[vid] = &VideoStatDoc{}
}
val := v
docM[vid].Income = &val
}
return nil
}
// fillPayCount
func fillPayCount(timeRange TimeRange, docMap *VideoStatDocMap) error {
payCountMap, err := payvidlgmod.PayCountMapByTime(timeRange.Head, timeRange.Tail)
if err != nil {
return err
}
docM := *docMap
for vid, v := range payCountMap {
if _, existed := docM[vid]; !existed {
docM[vid] = &VideoStatDoc{}
}
val := v
docM[vid].PayCount = &val
}
return nil
}
// fillPlayCount
func fillPlayCount(timeRange TimeRange, docMap *VideoStatDocMap) error {
playCountMap, err := playlgmod.PlayCountMapByTime(timeRange.Head, timeRange.Tail, []int{0, 1, 2}) //0,免费 1付费 2.试看
if err != nil {
return err
}
docM := *docMap
for vid, v := range playCountMap {
if _, existed := docM[vid]; !existed {
docM[vid] = &VideoStatDoc{}
}
val := v
docM[vid].PlayCount = &val
}
return nil
}
// fillPayPlayCount
func fillPayPlayCount(timeRange TimeRange, docMap *VideoStatDocMap) error {
payPlayCountMap, err := playlgmod.PlayCountMapByTime(timeRange.Head, timeRange.Tail, []int{1}) //0,免费 1付费 2.试看
if err != nil {
return err
}
docM := *docMap
for vid, v := range payPlayCountMap {
if _, existed := docM[vid]; !existed {
docM[vid] = &VideoStatDoc{}
}
val := v
docM[vid].PayPlayCount = &val
}
return nil
}
func fillTax(timeRange TimeRange, docMap *VideoStatDocMap) error {
payPlayCountMap, err := payvidlgmod.TaxAmountMapByTime(timeRange.Head, timeRange.Tail) //0,免费 1付费 2.试看
if err != nil {
return err
}
docM := *docMap
for vid, v := range payPlayCountMap {
if _, existed := docM[vid]; !existed {
docM[vid] = &VideoStatDoc{}
}
val := v
docM[vid].Tax = &val
}
return nil
}
// fillStatDocMap
func fillStatDocMap(sumDate time.Time, timeRange TimeRange, docMap *VideoStatDocMap) error {
//收入
if err := fillPayCoin(timeRange, docMap); err != nil {
return err
}
//购买次数
if err := fillPayCount(timeRange, docMap); err != nil {
return err
}
//视屏播放次数
if err := fillPlayCount(timeRange, docMap); err != nil {
return err
}
//付费视屏播放次数
if err := fillPayPlayCount(timeRange, docMap); err != nil {
return err
}
//税
return fillTax(timeRange, docMap)
}