fix isMime and push by alias add limit 200 by unipush api
| | |
| | | return nil |
| | | } |
| | | for _,s := range spaceList { |
| | | isMine := false |
| | | if _,exist := myPlateNosMap[s.PlateNos]; exist { |
| | | isMine = true |
| | | } |
| | | |
| | | pi := models.PosInfo { |
| | | SpaceNo: s.SpaceNo, |
| | | PosNo: "", |
| | | State: s.State, |
| | | IsMine: isMine, |
| | | } |
| | | if s.PlateNo != "" { |
| | | pi.PlateNo = s.PlateNo |
| | | } else if s.PlateNos != "" { |
| | | pi.PlateNo = s.PlateNos |
| | | } |
| | | isMine := false |
| | | if _,exist := myPlateNosMap[pi.PlateNo]; exist { |
| | | isMine = true |
| | | } |
| | | pi.IsMine = isMine |
| | | if v,ok := models.SpaceNo2Pos[s.SpaceNo];ok { |
| | | pi.PosNo = v |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | if len(aliasArr) == 0 { |
| | | lenAS := len(aliasArr) |
| | | if lenAS == 0 { |
| | | return true, errors.New("aliasArr is empty") |
| | | } else { |
| | | fmt.Println("PushByAlias arr:", aliasArr) |
| | |
| | | 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 |
| | |
| | | } else { |
| | | fmt.Println("推送结果:", result) |
| | | } |
| | | |
| | | return false, errors.New("推送失败") |
| | | } |
| | | |
| | |
| | | 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) { |