47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
package vidtotal
|
|
|
|
import (
|
|
"91porn-server/common/timeutil/timerange"
|
|
"91porn-server/models/s/statvidmod"
|
|
"91porn-server/models/s/statvidtotalmod"
|
|
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
)
|
|
|
|
type ObjectID = primitive.ObjectID
|
|
|
|
type TimeRange = timerange.TimeRange
|
|
|
|
type VideoTotalIncDoc = statvidtotalmod.IncDoc
|
|
|
|
type VideoTotalIncDocMap = statvidtotalmod.IncDocMap
|
|
|
|
type RecordAtGTEAndLTMatch = statvidmod.RecordAtGTEAndLTMatch
|
|
|
|
func getVideoTotalIncDocMap(timeRange TimeRange) (VideoTotalIncDocMap, error) {
|
|
recordAtGTEAndLTMatch := RecordAtGTEAndLTMatch{GTE: &timeRange.Head, LT: &timeRange.Tail}
|
|
groupList, err := statvidmod.SumByRecordAt(recordAtGTEAndLTMatch)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
m := toVideoTotalIncDocMap(groupList)
|
|
return m, nil
|
|
}
|
|
|
|
func toVideoTotalIncDocMap(groupList []statvidmod.SumGroup) VideoTotalIncDocMap {
|
|
m := make(VideoTotalIncDocMap, len(groupList))
|
|
for _, v := range groupList {
|
|
_, ok := m[v.Vid]
|
|
if !ok {
|
|
m[v.Vid] = &VideoTotalIncDoc{}
|
|
}
|
|
doc := m[v.Vid]
|
|
doc.Income = v.Income
|
|
doc.PayCount = v.PayCount
|
|
doc.PlayCount = v.PlayCount
|
|
doc.PayPlayCount = v.PayPlayCount
|
|
doc.Tax = v.Tax
|
|
}
|
|
return m
|
|
}
|