zhangxinlei1996 5 жил өмнө
parent
commit
1a4819cace

+ 56 - 33
src/jfw/modules/pushsubscribe/src/push/job/nothingjob.go

@@ -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()

+ 8 - 0
src/jfw/modules/pushsubscribe/src/push/job/timetask.go

@@ -37,6 +37,14 @@ func (t *TimeTask) push() {
 	go t.crontab(Config.OncePushTime, func() {
 		Jobs.Push.Execute(2)
 	})
+	//每天九点推送ratetime=2,3,4的无消息用户
+	go t.crontab(Config.OncePushTime, func() {
+		Jobs.NothingPush.PushNothing(0)
+	})
+	//每天八点推送实时推送的
+	go t.crontab(Config.FreePushTime, func() {
+		Jobs.NothingPush.PushNothing(1)
+	})
 }
 
 func (t *TimeTask) crontab(tm string, f func()) {

+ 1 - 1
src/jfw/modules/pushsubscribe/src/push/main.go

@@ -59,7 +59,7 @@ func main() {
 		Jobs.ProjectPush.Execute()
 		return
 	} else if *modle == 5 {
-		Jobs.NothingPush.PushNothing()
+		Jobs.NothingPush.PushNothing(*taskType) //t:1推送八点的 0推送九点
 		return
 	}
 	(&TimeTask{}).Run()