|
@@ -10,6 +10,7 @@ import (
|
|
|
"qfw/util/mongodb"
|
|
|
qrpc "qfw/util/rpc"
|
|
|
"strings"
|
|
|
+ "sync"
|
|
|
"time"
|
|
|
|
|
|
"github.com/donnie4w/go-logger/logger"
|
|
@@ -23,22 +24,28 @@ var (
|
|
|
)
|
|
|
|
|
|
//开始推送未匹配到数据推送
|
|
|
-func (n *NothingJob) PushNothing() {
|
|
|
+func (n *NothingJob) PushNothing(ratetype int) {
|
|
|
user := []map[string]interface{}{}
|
|
|
query := map[string]interface{}{
|
|
|
"i_vip_status": map[string]interface{}{
|
|
|
"$in": []int{1, 2},
|
|
|
},
|
|
|
- "s_m_openid": "o043a5hr4gD9e1Yy8DSNjy9BX3U4",
|
|
|
+ // "s_m_openid": "o043a5hr4gD9e1Yy8DSNjy9BX3U4",
|
|
|
}
|
|
|
all := mongodb.Find("user", query, nil, `{"_id":1,"s_nickname":1,"o_vipjy":1,"a_jpushid":1,"s_jpushid":1,"s_opushid":1,"s_m_openid":1,"s_appponetype":1,"i_applystatus":1}`, false, 0, 0)
|
|
|
t, _ := time.ParseInLocation("2006-01-02", time.Now().Format("2006-01-02"), time.Local)
|
|
|
for _, v := range *all {
|
|
|
log.Println(v)
|
|
|
+ continue
|
|
|
ratemode := util.IntAll(v["o_vipjy"].(map[string]interface{})["i_ratemode"])
|
|
|
userid := util.BsonIdToSId(v["_id"])
|
|
|
day1, day2 := n.ComputTime(ratemode, t)
|
|
|
if n.isNoInfo(userid, day1, day2) {
|
|
|
+ if ratetype == 1 {
|
|
|
+ if ratemode != 1 {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
if ratemode == 3 && !(strings.ToLower(time.Now().Weekday().String()) == strings.ToLower(Config.VipPushWeek)) {
|
|
|
continue
|
|
|
}
|
|
@@ -54,38 +61,50 @@ func (n *NothingJob) PushNothing() {
|
|
|
}
|
|
|
|
|
|
func (n *NothingJob) StartPush(user []map[string]interface{}) {
|
|
|
+ pushPool := make(chan bool, Config.PushPoolSize)
|
|
|
+ pushWait := &sync.WaitGroup{}
|
|
|
for _, v := range user {
|
|
|
- vipjy := v["o_vipjy"].(map[string]interface{})
|
|
|
- userid := util.BsonIdToSId(v["_id"])
|
|
|
- //APP推送
|
|
|
- if util.IntAll(vipjy["i_apppush"]) == 1 {
|
|
|
- logger.Info("推送任务 -未匹配到数据- 开始app推送", userid)
|
|
|
- isPushOk := putil.SendApp(map[string]interface{}{
|
|
|
- "phoneType": v["s_appponetype"],
|
|
|
- "descript": "亲爱的VIP订阅用户,",
|
|
|
- "descriptAppend": "根据您当前的订阅,无法精准的为您推送新的增量信息,建议您对订阅设置进行修改,剑鱼标讯期待更好的为您服务。",
|
|
|
- "type": "message",
|
|
|
- "userId": userid,
|
|
|
- "url": "/jyapp/vipsubscribe/toSubVipSetPage",
|
|
|
- "otherPushId": v["s_opushid"],
|
|
|
- "jgPushId": v["s_jpushid"], //极光-推送id
|
|
|
- })
|
|
|
- logger.Info("推送任务 未匹配到数据 app推送结束", isPushOk, userid)
|
|
|
- }
|
|
|
- //微信推送
|
|
|
- log.Println(util.IntAll(v["i_applystatus"]) == 1, util.IntAll(vipjy["i_wxpush"]) == 1)
|
|
|
- if util.IntAll(v["i_applystatus"]) == 1 && util.IntAll(vipjy["i_wxpush"]) == 1 {
|
|
|
- //推送微信
|
|
|
- isPushOk := n.SendWeixin(util.ObjToString(v["s_m_openid"]))
|
|
|
- logger.Info("推送任务 未匹配到数据 app推送结束", isPushOk, userid)
|
|
|
- }
|
|
|
- //邮件推送
|
|
|
- if util.IntAll(vipjy["i_mailpush"]) == 1 {
|
|
|
- logger.Info("推送任务 未匹配到数据 开始邮箱推送", userid)
|
|
|
- isPushOk := n.sendMail(util.ObjToString(vipjy["s_email"]), Config.NothingTitle, Config.NothingBody, nil)
|
|
|
- logger.Info("推送任务 未匹配到数据 邮箱推送结束", isPushOk, userid)
|
|
|
- }
|
|
|
+ pushPool <- true
|
|
|
+ pushWait.Add(1)
|
|
|
+ go func(v map[string]interface{}) {
|
|
|
+ defer util.Catch()
|
|
|
+ defer func() {
|
|
|
+ <-pushPool
|
|
|
+ pushWait.Done()
|
|
|
+ }()
|
|
|
+ vipjy := v["o_vipjy"].(map[string]interface{})
|
|
|
+ userid := util.BsonIdToSId(v["_id"])
|
|
|
+ //APP推送
|
|
|
+ if util.IntAll(vipjy["i_apppush"]) == 1 {
|
|
|
+ logger.Info("推送任务 -未匹配到数据- 开始app推送", userid)
|
|
|
+ isPushOk := putil.SendApp(map[string]interface{}{
|
|
|
+ "phoneType": v["s_appponetype"],
|
|
|
+ "descript": "亲爱的VIP订阅用户,",
|
|
|
+ "descriptAppend": "根据您当前的订阅,无法精准的为您推送新的增量信息,建议您对订阅设置进行修改,剑鱼标讯期待更好的为您服务。",
|
|
|
+ "type": "message",
|
|
|
+ "userId": userid,
|
|
|
+ "url": "/jyapp/vipsubscribe/toSubVipSetPage",
|
|
|
+ "otherPushId": v["s_opushid"],
|
|
|
+ "jgPushId": v["s_jpushid"], //极光-推送id
|
|
|
+ })
|
|
|
+ logger.Info("推送任务 未匹配到数据 app推送结束", isPushOk, userid)
|
|
|
+ }
|
|
|
+ //微信推送
|
|
|
+ log.Println(util.IntAll(v["i_applystatus"]) == 1, util.IntAll(vipjy["i_wxpush"]) == 1)
|
|
|
+ if util.IntAll(v["i_applystatus"]) == 1 && util.IntAll(vipjy["i_wxpush"]) == 1 {
|
|
|
+ //推送微信
|
|
|
+ isPushOk := n.SendWeixin(util.ObjToString(v["s_m_openid"]))
|
|
|
+ logger.Info("推送任务 未匹配到数据 app推送结束", isPushOk, userid)
|
|
|
+ }
|
|
|
+ //邮件推送
|
|
|
+ if util.IntAll(vipjy["i_mailpush"]) == 1 {
|
|
|
+ logger.Info("推送任务 未匹配到数据 开始邮箱推送", userid)
|
|
|
+ isPushOk := n.sendMail(util.ObjToString(vipjy["s_email"]), Config.NothingTitle, Config.NothingBody, nil)
|
|
|
+ logger.Info("推送任务 未匹配到数据 邮箱推送结束", isPushOk, userid)
|
|
|
+ }
|
|
|
+ }(v)
|
|
|
}
|
|
|
+ pushWait.Wait()
|
|
|
}
|
|
|
|
|
|
//推送微信
|
|
@@ -166,10 +185,14 @@ func (n *NothingJob) ComputTime(i int, t time.Time) (int64, int64) {
|
|
|
var day_1 int64
|
|
|
var day_2 int64
|
|
|
switch i {
|
|
|
- case 1, 2:
|
|
|
+ case 1:
|
|
|
t = t.Add(time.Hour * 8)
|
|
|
day_1 = t.Unix()
|
|
|
day_2 = t.AddDate(0, 0, -1).Unix()
|
|
|
+ case 2:
|
|
|
+ t = t.Add(time.Hour * 9)
|
|
|
+ day_1 = t.Unix()
|
|
|
+ day_2 = t.AddDate(0, 0, -1).Unix()
|
|
|
case 3:
|
|
|
t = t.Add(time.Hour * 9)
|
|
|
day_1 = t.Unix()
|