Files
rootandClaude Opus 5 8679200f41 Initial commit
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:57:10 +08:00

54 lines
1.3 KiB
Go

package rank
import (
"time"
"91porn-server/common/log"
"91porn-server/common/timeutil/timerange"
"91porn-server/models/s/hotstatmod"
"91porn-server/models/v/vidmod"
"go.mongodb.org/mongo-driver/bson/primitive"
)
// RunStat 统计实时排行榜
func RunStat() {
log.Info("rank stat running...")
defer log.Info("rank stat finished...")
now := time.Now()
sumDate := timerange.LocDayRange(now).Head
infos, err := vidmod.GetTotalNewsList()
if err != nil {
return
}
mNow := calNowHot(infos)
mYesterday, err := hotstatmod.GetYesterdayHotValue(sumDate)
if err != nil {
return
}
mLastWeek, err := hotstatmod.GetLastWeekHotValue(sumDate)
if err != nil {
return
}
mLastMonth, _ := hotstatmod.GetLastMonthHotValue(sumDate)
mDayli := make(map[primitive.ObjectID]int)
mWeek := make(map[primitive.ObjectID]int)
mMonth := make(map[primitive.ObjectID]int)
for vid, v := range mNow {
mDayli[vid] = v - mYesterday[vid]
mWeek[vid] = v - mLastWeek[vid]
mMonth[vid] = v - mLastMonth[vid]
}
//入库
_ = hotstatmod.UpdateInsertHotValue(sumDate, mDayli, mWeek, mMonth, mNow)
}
func calNowHot(infos []*vidmod.VideoModel) map[primitive.ObjectID]int {
mNow := make(map[primitive.ObjectID]int)
for _, v := range infos {
value := 1*v.FakePlayCount + 4*v.FakeLikeCount + 2*v.FakeCommentCount + v.FakeShareCount
mNow[v.ID] = value
}
return mNow
}