vipTask.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package task
  2. import (
  3. "go.mongodb.org/mongo-driver/bson"
  4. "log"
  5. "mongodb"
  6. "order"
  7. cm "qfw/util"
  8. "time"
  9. "util"
  10. )
  11. func VipStateTask() {
  12. defer cm.Catch()
  13. log.Println("定时任务,开始更新vip状态")
  14. sess := util.MQFW.GetMgoConn()
  15. for {
  16. if sess != nil {
  17. defer util.MQFW.DestoryMongoConn(sess)
  18. break
  19. }
  20. time.Sleep(time.Minute)
  21. sess = util.MQFW.GetMgoConn()
  22. }
  23. nowTime := time.Now().Format(cm.Date_Short_Layout)
  24. t2, _ := time.ParseInLocation(cm.Date_Short_Layout, nowTime, time.Local)
  25. startTime := t2.Unix()
  26. entTime := t2.AddDate(0, 0, 1).Unix()
  27. it := sess.DB("qfw").C("user").Find(map[string]interface{}{
  28. "i_appid": 2,
  29. "i_vip_status": -2,
  30. "l_vip_starttime": map[string]interface{}{
  31. "$gte": startTime,
  32. "$lt": entTime,
  33. },
  34. }).Select(map[string]interface{}{"i_vip_status": 1, "l_vip_starttime": 1, "i_vip_expire_tip": 1}).Iter()
  35. for m := make(map[string]interface{}); it.Next(&m); {
  36. _id := mongodb.BsonIdToSId(m["_id"])
  37. log.Println("更新超级订阅状态 userId ", _id)
  38. vipStartTime := cm.Int64All(m["l_vip_starttime"])
  39. vipStatus := cm.IntAll(m["i_vip_status"])
  40. if vipStartTime >= startTime && vipStartTime < entTime && vipStatus == -2 {
  41. set := map[string]interface{}{
  42. "i_vip_status": cm.If(false, -2, 2), //1试用 2正式
  43. }
  44. isOk := util.MQFW.UpdateById("user", _id, bson.M{
  45. "$set": set,
  46. })
  47. if isOk {
  48. go func() {
  49. order.MergeKws(_id)
  50. order.ClearBigVipUserPower(_id)
  51. }()
  52. }
  53. }
  54. m = make(map[string]interface{})
  55. }
  56. log.Println("定时任务,更新vip状态结束...")
  57. }