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