52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
package vid
|
|
|
|
import (
|
|
"time"
|
|
|
|
"91porn-server/common/constant/redisconst"
|
|
"91porn-server/common/timeutil/timerange"
|
|
"91porn-server/models/s/statrecordmod"
|
|
"91porn-server/models/v/vidmod"
|
|
"91porn-server/skd/skdg"
|
|
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
"go.mongodb.org/mongo-driver/mongo"
|
|
)
|
|
|
|
func incPageView(syncTime time.Time) error {
|
|
now := syncTime
|
|
recentMinute := timerange.RecentMinute(now, statrecordmod.FiveMinuteScale)
|
|
key := redisconst.VidPageViewListKey(recentMinute.Unix())
|
|
count, err := skdg.Redis.LCount(key)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if count == 0 {
|
|
return nil
|
|
}
|
|
strList, err := skdg.Redis.LRange(key, 0, count-1)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
dmap := make(map[string]int64)
|
|
for i := range strList {
|
|
dmap[strList[i]]++
|
|
}
|
|
models := make([]mongo.WriteModel, 0, len(dmap))
|
|
for k, v := range dmap {
|
|
_id, err1 := primitive.ObjectIDFromHex(k)
|
|
if err1 != nil {
|
|
continue
|
|
}
|
|
filter := bson.M{"_id": _id}
|
|
update := bson.M{"$inc": bson.M{"pageViewCount": v}}
|
|
models = append(models, mongo.NewUpdateOneModel().SetFilter(filter).SetUpdate(update))
|
|
}
|
|
if err = vidmod.Bulk(models); err != nil {
|
|
return err
|
|
}
|
|
_, _ = skdg.Redis.Del(key)
|
|
return nil
|
|
}
|