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 }