liuxiaolong
2020-09-02 3e9cf4df58f5d8266e606fff63cb9da1105a4dcf
fix night push,push to manager if car left
2个文件已修改
56 ■■■■ 已修改文件
controllers/car.go 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/msgPush.go 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/car.go
@@ -103,7 +103,7 @@
func nightPush(){
    message := fmt.Sprintf("%s 请尽快驶出停车场", time.Now().Format("2006-01-02 15:04:05"))
    b, e, aliasArr := service.NightPush("育英中学停车", message)
    b, e, aliasArr,carOwnNames := service.NightPush("育英中学停车", message)
    //记录推送日志
    logE := models.Log{
        Id: uuid.NewV4().String(),
@@ -119,22 +119,10 @@
    logE.Insert()
    fmt.Println("b:", b,"e:",e, "message:", message)
    //如果有成功给过夜车的车主推送通知,则将具体的车主信息推送给管理员
    if b {
    //将具体的车主信息推送给管理员
    if carOwnNames != nil && len(carOwnNames) >0 {
        //获取车主姓名
        var leftUserNames []string
        carSv := service.NewCarService()
        hikPersons := carSv.GetHikPersonList()
        hikPersonM := make(map[string]string)
        for _,hikP := range hikPersons {
            hikPersonM[hikP.PhoneNo] = hikP.PersonName
        }
        for _, pushedPhone := range aliasArr {
            if name,in := hikPersonM[pushedPhone]; in {
                leftUserNames = append(leftUserNames, name)
            }
        }
        nameStr := strings.Join(leftUserNames, " ")
        nameStr := strings.Join(carOwnNames, " ")
        managerMsg := fmt.Sprintf("%s 未驶离车主: %s", time.Now().Format("2006-01-02 15:04:05"), nameStr)
        mb,me, managerArr := service.Push2Manager("育英中学停车", nameStr)
        mLogE := models.Log{
@@ -150,7 +138,6 @@
        }
        mLogE.Insert()
        fmt.Println("mb:", mb, "me:", me, "message:", managerMsg)
    }
}
service/msgPush.go
@@ -424,8 +424,9 @@
    return false, errors.New("推送失败")
}
func NightPush(title string, msg string) (bool, error, []string) {
func NightPush(title string, msg string) (bool, error, []string, []string) {
    var aliasArr []string
    var carOwners []string
    pushUserM := make(map[string]string)
    var userE models.User
@@ -436,24 +437,36 @@
        }
    }
    if len(pushUserM) == 0 {
        return false, errors.New("len(pushUserM) == 0"), aliasArr
        return false, errors.New("len(pushUserM) == 0"), aliasArr, carOwners
    }
    carPersonM := make(map[string]string)
    csv := NewCarService()
    carPersons := csv.GetVehicleListByPerson("")
    if carPersons != nil {
        for _, cp := range carPersons {
            carPersonM[cp.PlateNo] = cp.PersonId
            cnPlateNo := preDealPlateNo(cp.PlateNo)
            if cnPlateNo != "" {
                carPersonM[cnPlateNo] = cp.PersonId
            }
        }
    }
    hikPersonMap := csv.GetHikPersonMap()
    spaceNos := csv.FindSpaceNo("")
    var uc models.UserClient
    for _,sn := range spaceNos {
        if sn.State == 1 && sn.PlateNo != "" { //已经把车停到停车场的车主,不再推送消息
            if personId,ok := carPersonM[sn.PlateNo];ok {
                if phoneNum,ok := pushUserM[personId]; ok { //此人已注册到系统,并且车不在停车库内
                    if uc.Exist(phoneNum) {
                        aliasArr = append(aliasArr, phoneNum)
        if sn.State == 1 { //车尚在停车场的车牌
            inCnPlateNo := preDealPlateNo(sn.PlateNo)
            if inCnPlateNo != "" {
                if personId,ok := carPersonM[inCnPlateNo];ok {
                    if phoneNum,ok := pushUserM[personId]; ok {
                        if uc.Exist(phoneNum) {
                            aliasArr = append(aliasArr, phoneNum)
                        }
                    }
                    if v,ex := hikPersonMap[personId]; ex {
                        carOwners = append(carOwners, v.PersonName)
                    }
                }
            }
@@ -462,17 +475,17 @@
    if len(aliasArr) == 0 {
        fmt.Println("没有推送目标,aliasArr is empty")
        return false, errors.New("没有推送目标,aliasArr is empty"), aliasArr
        return false, errors.New("没有推送目标,aliasArr is empty"), aliasArr, carOwners
    }
    cResult, taskId, ce := createPushMsg(title, msg)
    if !cResult {
        fmt.Println("createPushMsg taskId:", taskId, "err:", ce)
        return false, errors.New("创建推送前置消息失败"), aliasArr
        return false, errors.New("创建推送前置消息失败"), aliasArr, carOwners
    }
    b,e := doPush(taskId, aliasArr)
    return b,e, aliasArr
    return b,e, aliasArr, carOwners
}
//如果夜间有给车库内的车主推送“请尽快驶离”的消息,则告知管理员 有哪些车尚停在车库内