From 1a53b90590d70be1b389f33ae81c47f0d5238d48 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期三, 12 八月 2020 10:18:06 +0800
Subject: [PATCH] add userClient

---
 service/msgPush.go |  115 ++++++++++++++++++++++++++++-----------------------------
 1 files changed, 57 insertions(+), 58 deletions(-)

diff --git a/service/msgPush.go b/service/msgPush.go
index f13e9a2..a74701f 100644
--- a/service/msgPush.go
+++ b/service/msgPush.go
@@ -238,40 +238,85 @@
 		}
 	}
 	if len(pushUserM) == 0 {
-		return true,nil
+		return true,errors.New("len(pushUserM) == 0")
 	}
-	carPersonM := make(map[string]string)
-	var csv CarService
+	carPersonM := make(map[string]string) //浠ヨ溅鐗屽彿涓簁ey锛寁alue鏄痟ik鐨刾ersonId
+	csv := NewCarService()
 	carPersons := csv.GetVehicleListByPerson("")
 	if carPersons != nil {
 		for _, cp := range carPersons {
 			carPersonM[cp.PlateNo] = cp.PersonId
 		}
 	}
+	delPersonIdM := make(map[string]string)
 	spaceNos := csv.FindSpaceNo("")
 	for _,sn := range spaceNos {
 		if sn.State == 1 && sn.PlateNo != "" { //宸茬粡鎶婅溅鍋滃埌鍋滆溅鍦虹殑杞︿富锛屼笉鍐嶆帹閫佹秷鎭�
-			if _,ok := carPersonM[sn.PlateNo];ok {
+			if pId,ok := carPersonM[sn.PlateNo];ok {
+				delPersonIdM[pId] = pId
 				delete(carPersonM, sn.PlateNo)
 			}
 		}
 	}
+	fmt.Println("len(carPersonM):", len(carPersonM), "len(pushUserM):", len(pushUserM))
 	for _,personId := range carPersonM {
 		if phoneNum,ok := pushUserM[personId]; ok { //姝や汉宸叉敞鍐屽埌绯荤粺,骞朵笖杞︿笉鍦ㄥ仠杞﹀簱鍐�
-			aliasArr = append(aliasArr, phoneNum)
+			if _,in := delPersonIdM[personId];!in {
+				aliasArr = append(aliasArr, phoneNum)
+			}
 		}
 	}
-	if len(aliasArr) == 0 {
-		fmt.Println("娌℃湁鎺ㄩ�佺洰鏍�,aliasArr is empty")
-		return true, nil
+	lenAS := len(aliasArr)
+	if  lenAS == 0 {
+		return true, errors.New("aliasArr is empty")
+	} else {
+		fmt.Println("PushByAlias arr:", aliasArr)
 	}
 
 	cResult, taskId, ce := createPushMsg(title, msg)
+	fmt.Println("createPushMsg taskId:", taskId, "cResult:",cResult, "err:", ce)
 	if !cResult {
-		fmt.Println("createPushMsg taskId:", taskId, "err:", ce)
 		return false, errors.New("鍒涘缓鎺ㄩ�佸墠缃秷鎭け璐�")
 	}
 
+	//alias 鍗曟鎺ㄩ�侀暱搴︿笂闄愭槸200
+	pushTime := 1
+	if lenAS > 200 {
+		pushTime = lenAS / 200
+		if lenAS % 200 >0 {
+			pushTime++
+		}
+	}
+
+	isSuccess := false
+	for i:=0;i<pushTime;i++ {
+		var curAliasArr []string
+		start := i*200
+		end := (i+1)*200 -1
+		if i<pushTime-1 {
+			curAliasArr = aliasArr[start:end]
+		} else {
+			//鍙栧墿浣欐墍鏈�
+			curAliasArr = aliasArr[start:]
+		}
+		if len(curAliasArr) >0 {
+			flag, e := doPush(taskId, curAliasArr)
+			if e != nil {
+				fmt.Println("doPush err:", e)
+			}
+			if flag {
+				isSuccess = true
+			}
+		}
+	}
+	if isSuccess {
+		return true, nil
+	}
+
+	return false, errors.New("鎺ㄩ�佸け璐�")
+}
+
+func doPush(taskId string, aliasArr []string) (bool,error) {
 	appId := beego.AppConfig.String("pushAppId")
 	baseUrl := beego.AppConfig.String("pushBaseUrl") + appId
 	retryTimes := 0
@@ -286,7 +331,7 @@
 			"alias": aliasArr,
 		},
 		"taskid": taskId,
-		"is_async": true,
+		"is_async": false,
 	}
 	header := map[string]string {
 		"token": token,
@@ -316,7 +361,6 @@
 	} else {
 		fmt.Println("鎺ㄩ�佺粨鏋�:", result)
 	}
-
 	return false, errors.New("鎺ㄩ�佸け璐�")
 }
 
@@ -335,7 +379,7 @@
 		return true,nil
 	}
 	carPersonM := make(map[string]string)
-	var csv CarService
+	csv := NewCarService()
 	carPersons := csv.GetVehicleListByPerson("")
 	if carPersons != nil {
 		for _, cp := range carPersons {
@@ -364,52 +408,7 @@
 		return false, errors.New("鍒涘缓鎺ㄩ�佸墠缃秷鎭け璐�")
 	}
 
-	appId := beego.AppConfig.String("pushAppId")
-	baseUrl := beego.AppConfig.String("pushBaseUrl") + appId
-	retryTimes := 0
-ReTry:
-	token := getCacheToken()
-	if token == "" {
-		return false, errors.New("token is nil")
-	}
-	url := baseUrl+"/push/list/alias"
-	reqBody := map[string]interface{} {
-		"audience":map[string]interface{}{
-			"alias": aliasArr,
-		},
-		"taskid": taskId,
-		"is_async": true,
-	}
-	header := map[string]string {
-		"token": token,
-	}
-	b, err := util.DoPostRequest(url, util.CONTENT_TYPE_UTF8_JSON, reqBody, nil, header)
-	if err !=nil {
-		fmt.Println("DoPost err:", err)
-		return false, err
-	}
-	var result PushResult
-	err = json.Unmarshal(b, &result)
-	if err != nil {
-		fmt.Println("unmarshal err:", err)
-		return false, err
-	}
-	if result.Code == 0 {
-		return true, nil
-	} else if result.Code == 10001 { //token杩囨湡
-		if retryTimes <=3 {
-			newToken, err := RefreshToken()
-			if err == nil {
-				updateToken(newToken)
-				retryTimes++
-				goto ReTry
-			}
-		}
-	} else {
-		fmt.Println("鎺ㄩ�佺粨鏋�:", result)
-	}
-
-	return false, errors.New("鎺ㄩ�佸け璐�")
+	return doPush(taskId, aliasArr)
 }
 
 func PushAll(title string, msg string) (bool,error) {

--
Gitblit v1.8.0