liuxiaolong
2020-08-11 ef4003ddd514c88af0684c3702c6e5cfffa5f90b
fix isMime and push by alias add limit 200 by unipush api
2个文件已修改
100 ■■■■ 已修改文件
service/carService.go 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/msgPush.go 89 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/carService.go
@@ -179,21 +179,22 @@
            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
            }
service/msgPush.go
@@ -266,7 +266,8 @@
            }
        }
    }
    if len(aliasArr) == 0 {
    lenAS := len(aliasArr)
    if  lenAS == 0 {
        return true, errors.New("aliasArr is empty")
    } else {
        fmt.Println("PushByAlias arr:", aliasArr)
@@ -278,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
@@ -322,7 +361,6 @@
    } else {
        fmt.Println("推送结果:", result)
    }
    return false, errors.New("推送失败")
}
@@ -370,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) {