From ef4003ddd514c88af0684c3702c6e5cfffa5f90b Mon Sep 17 00:00:00 2001 From: liuxiaolong <liuxiaolong@aiotlink.com> Date: 星期二, 11 八月 2020 17:00:19 +0800 Subject: [PATCH] fix isMime and push by alias add limit 200 by unipush api --- service/msgPush.go | 109 ++++++++++++++++++++++++++---------------------------- 1 files changed, 53 insertions(+), 56 deletions(-) diff --git a/service/msgPush.go b/service/msgPush.go index a089fb6..a74701f 100644 --- a/service/msgPush.go +++ b/service/msgPush.go @@ -238,32 +238,37 @@ } } 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) } @@ -274,6 +279,44 @@ 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 @@ -318,7 +361,6 @@ } else { fmt.Println("鎺ㄩ�佺粨鏋�:", result) } - return false, errors.New("鎺ㄩ�佸け璐�") } @@ -337,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 { @@ -366,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