54 lines
1.3 KiB
Go
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
|
|
}
|