fix
liuxiaolong
2020-10-10 447e03afc0c6cefe4793ffdf64128dc2dd7f7dee
service/carService.go
@@ -144,7 +144,7 @@
   SpaceType             string       `json:"spaceType"`
}
func (sv *CarService) FindHikSpaceInfo() []SpaceNo {
func (sv *CarService) FindHikSpaceInfo(userId string) []SpaceNo {
   url := "/artemis/api/pms/v1/parkingSpace/spaceNo"
   reqBody := map[string]interface{} {
@@ -164,10 +164,38 @@
         fmt.Println("unmarshal spaceNos err:", err)
         return nil
      } else {
         curLoginManagerPhone := ""
         personMap := sv.GetHikPersonMap()
         if userId != "" {
            if mm,ok := personMap[userId];ok {
               curLoginManagerPhone = mm.PhoneNo
            }
         }
         isSuper := false
         if curLoginManagerPhone != "" {
            superPhoneArr := strings.Split(beego.AppConfig.String("superManagerPhones"), ",")
            if superPhoneArr != nil {
               for _,sp := range superPhoneArr {
                  if sp == curLoginManagerPhone { //是超级管理员
                     isSuper = true
                     break
                  }
               }
            }
         }
         vipPlateNoArr := getVipPlateNoArr()
         var resultArr []SpaceNo
         for _,si := range spaceList {
            if si.State == 1 { //有车
               resultArr = append(resultArr, si)
               if isSuper {
                  resultArr = append(resultArr, si)
               } else {
                  if isSpaceShow(vipPlateNoArr, si.PlateNo) {
                     resultArr = append(resultArr, si)
                  }
               }
            }
         }
         return resultArr
@@ -198,7 +226,7 @@
   return sn1 < sn2
}
func (sv *CarService) FindHikSpaceUser() SpaceUserArr {
func (sv *CarService) FindHikSpaceUser(userId string) SpaceUserArr {
   resultList := make(SpaceUserArr, 0)
   url := "/artemis/api/pms/v1/parkingSpace/spaceNo"
   reqBody := map[string]interface{} {
@@ -219,34 +247,65 @@
            if len(spaceList) > 0 { //当前有停留车
               personMap := sv.GetHikPersonMap()
               vehicleMap := sv.GetHikVehicleMap()
               for _,sp := range spaceList {
                  su := SpaceUser{
                     SpaceNo: sp.SpaceNo,
                     PlateNo: sp.PlateNo,
               curLoginManagerPhone := ""
               if userId != "" {
                  if mm,ok := personMap[userId];ok {
                     curLoginManagerPhone = mm.PhoneNo
                  }
                  if sp.PlateNo != "" {
                     r := []rune(sp.PlateNo)
                     ncStr := string(r[1:]) //把第一位汉字剔除掉
                     newK := strings.ReplaceAll(ncStr, "D", "*")
                     newK = strings.ReplaceAll(newK, "0", "*")
                     personId := ""
                     if v,exist := vehicleMap[newK]; exist {
                        personId = v.PersonId
               }
               isSuper := false
               if curLoginManagerPhone != "" {
                  superPhoneArr := strings.Split(beego.AppConfig.String("superManagerPhones"), ",")
                  if superPhoneArr != nil {
                     for _,sp := range superPhoneArr {
                        if sp == curLoginManagerPhone { //是超级管理员
                           isSuper = true
                           break
                        }
                     }
                  }
               }
                     if personId != "" {
                        su.CarType = "备案车"
                        if person, in := personMap[personId]; in {
                           su.Username = person.PersonName
                           su.PhoneNum = person.PhoneNo
               vipPlateNoArr := getVipPlateNoArr()
               for _,sp := range spaceList {
                  if sp.State == 1 {
                     su := SpaceUser{
                        SpaceNo: sp.SpaceNo,
                        PlateNo: sp.PlateNo,
                     }
                     if sp.PlateNo != "" {
                        r := []rune(sp.PlateNo)
                        ncStr := string(r[1:]) //把第一位汉字剔除掉
                        newK := strings.ReplaceAll(ncStr, "D", "*")
                        newK = strings.ReplaceAll(newK, "0", "*")
                        personId := ""
                        if v,exist := vehicleMap[newK]; exist {
                           personId = v.PersonId
                        }
                        if personId != "" {
                           su.CarType = "备案车"
                           if person, in := personMap[personId]; in {
                              su.Username = person.PersonName
                              su.PhoneNum = person.PhoneNo
                           }
                        } else {
                           su.CarType = "临时车"
                        }
                     } else {
                        su.CarType = "临时车"
                        su.PlateNo = "无车牌"
                     }
                  } else {
                     su.PlateNo = "无车牌"
                     if isSuper {
                        resultList = append(resultList, su)
                     } else {
                        if isSpaceShow(vipPlateNoArr, su.PlateNo) {
                           resultList = append(resultList, su)
                        }
                     }
                  }
                  resultList = append(resultList, su)
               }
            }
         }
@@ -255,6 +314,34 @@
   sort.Sort(resultList)
   return resultList
}
func getVipPlateNoArr() []string {
   var vipPlateNoArr []string
   vipArr := strings.Split(beego.AppConfig.String("nightVipPlateNos"), ",")
   if vipArr != nil && len(vipArr) >0 {
      for _,po := range vipArr {
         if po != "" {
            cnPo := preDealPlateNo(po)
            if cnPo != "" {
               vipPlateNoArr = append(vipPlateNoArr, cnPo)
            }
         }
      }
   }
   return vipPlateNoArr
}
//白天和夜晚管理员都看不到vip车辆
func isSpaceShow(vipPlateNoArr []string, spacePto string) bool {
   if vipPlateNoArr != nil && len(vipPlateNoArr) >0 {
      targetPto := preDealPlateNo(spacePto)
      if isVipCar(targetPto, vipPlateNoArr) { //是vip车辆
         return false
      }
   }
   return true
}
func (sv *CarService) FindSpaceNo(userId string) models.PosResult {
@@ -297,6 +384,7 @@
         fmt.Println("unmarshal spaceNos err:",err)
         return nil
      }
      vipPlateNoArr := getVipPlateNoArr()
      for _,s := range spaceList {
         pi := models.PosInfo {
            SpaceNo: s.SpaceNo,
@@ -312,7 +400,13 @@
         if v,ok := models.SpaceNo2Pos[s.SpaceNo];ok {
            pi.PosNo = v
         }
         resultList = append(resultList, pi)
         if isSpaceShow(vipPlateNoArr, pi.PlateNo) {
            resultList = append(resultList, pi)
         } else {
            pi.State = 0
            pi.PlateNo = ""
            resultList = append(resultList, pi)
         }
      }
   }
   if len(resultList) == 0 {