Files
web_hgcg_server/web/skd/job/vipexpiry/job.go
T
2026-10-27 16:44:55 +08:00

46 lines
1.1 KiB
Go

package vipexpiry
import (
"context"
"time"
"videoweb/pub/common/log"
"videoweb/pub/models/usermod"
"videoweb/pub/pubdef"
"go.mongodb.org/mongo-driver/bson"
)
var isRunning = false
// ResetExpiredVip 将 CurrentVipExpire 已过期但 VipType 仍非 None 的用户批量重置为普通用户。
// 同时清空 ShowCard* 展示字段,保证 DB 数据与实际状态一致。
func ResetExpiredVip() {
if isRunning {
return
}
isRunning = true
defer func() { isRunning = false }()
ctx := context.Background()
now := time.Now()
filter := bson.M{
usermod.FN.User.VipType: bson.M{"$gt": pubdef.VipTypeNone},
usermod.FN.User.CurrentVipExpire: bson.M{"$lt": now},
}
update := bson.M{
"$set": bson.M{
usermod.FN.User.VipType: pubdef.VipTypeNone,
usermod.FN.User.ShowCardId: int64(0),
usermod.FN.User.ShowCardName: "",
usermod.FN.User.UpdatedAt: now,
},
}
if serr := usermod.UpdateManyUser(ctx, filter, update); serr != nil {
log.Error("vipexpiry:ResetExpiredVip UpdateManyUser failed", log.Any("err", serr))
return
}
log.Info("vipexpiry:ResetExpiredVip done")
}