package task import ( "go.mongodb.org/mongo-driver/bson" "log" "mongodb" "order" cm "qfw/util" "time" "util" ) func VipStateTask() { defer cm.Catch() log.Println("定时任务,开始更新vip状态") sess := util.MQFW.GetMgoConn() for { if sess != nil { defer util.MQFW.DestoryMongoConn(sess) break } time.Sleep(time.Minute) sess = util.MQFW.GetMgoConn() } nowTime := time.Now().Format(cm.Date_Short_Layout) t2, _ := time.ParseInLocation(cm.Date_Short_Layout, nowTime, time.Local) startTime := t2.Unix() entTime := t2.AddDate(0, 0, 1).Unix() it := sess.DB("qfw").C("user").Find(map[string]interface{}{ "i_appid": 2, "i_vip_status": -2, "l_vip_starttime": map[string]interface{}{ "$gte": startTime, "$lt": entTime, }, }).Select(map[string]interface{}{"i_vip_status": 1, "l_vip_starttime": 1, "i_vip_expire_tip": 1}).Iter() for m := make(map[string]interface{}); it.Next(&m); { _id := mongodb.BsonIdToSId(m["_id"]) log.Println("更新超级订阅状态 userId ", _id) vipStartTime := cm.Int64All(m["l_vip_starttime"]) vipStatus := cm.IntAll(m["i_vip_status"]) if vipStartTime >= startTime && vipStartTime < entTime && vipStatus == -2 { set := map[string]interface{}{ "i_vip_status": cm.If(false, -2, 2), //1试用 2正式 } isOk := util.MQFW.UpdateById("user", _id, bson.M{ "$set": set, }) if isOk { go func() { order.MergeKws(_id) order.ClearBigVipUserPower(_id) }() } } m = make(map[string]interface{}) } log.Println("定时任务,更新vip状态结束...") }