liuxiaolong
2022-03-04 f64dd9f191dff341b4eb430d7bacc44a3db9a279
service/carService.go
@@ -10,7 +10,6 @@
   "sort"
   "strconv"
   "strings"
   "time"
)
type CarService struct {
   hikUtil *reqUtil.HikHttpUtil
@@ -31,12 +30,19 @@
      TotalPlace: 0,
      Left:       0,
   }
   remainList := sv.getRemainSpaceNum("")
   if remainList != nil {
      for _,r:=range remainList {
         m.TotalPlace += r.TotalPlace
         m.Left += r.LeftPlace
   //20201117 修改统计方式,按照  剩余车位数=车位总数-车库内实际停车数(页面上显示的,不含vip车辆占位)
   spaceInfo := sv.FindSpaceNo("")
   if spaceInfo != nil {
      m.TotalPlace = len(spaceInfo)
      usedCount := 0
      for _,si := range spaceInfo {
         if si.State == 1 {
            usedCount++
         }
      }
      m.Left = m.TotalPlace-usedCount
      if m.Left < 0 {
         m.Left = 0
      }
      return &m, true
   } else {
@@ -185,22 +191,11 @@
            }
         }
         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)
                  }
               }
            }
         }
         vipPlateNoArr := getVipPlateNoArr()
         var resultArr []SpaceNo
         for _,si := range spaceList {
            if si.State == 1 { //有车
            if si.State == 1 &&si.PlateNo != "" && si.PlateNo != "无车牌" { //有车
               if isSuper {
                  resultArr = append(resultArr, si)
               } else {
@@ -278,21 +273,10 @@
                  }
               }
               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)
                        }
                     }
                  }
               }
               vipPlateNoArr := getVipPlateNoArr()
               for _,sp := range spaceList {
                  if sp.State == 1 {
                  if sp.State == 1 && sp.PlateNo != "" && sp.PlateNo != "无车牌"{
                     su := SpaceUser{
                        SpaceNo: sp.SpaceNo,
                        PlateNo: sp.PlateNo,
@@ -339,18 +323,31 @@
   return resultList
}
//1.白天管理员能看到所有人的车,包括vip车辆
//2.夜晚管理员看不到vip车辆
func isSpaceShow(vipPlateNoArr []string, spacePto string) bool {
   hour := time.Now().Hour()
   if hour >= 22 || hour <= 7 {
      if vipPlateNoArr != nil && len(vipPlateNoArr) >0 {
         targetPto := preDealPlateNo(spacePto)
         if isVipCar(targetPto, vipPlateNoArr) { //是vip车辆
            return false
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
}
@@ -361,7 +358,7 @@
      vehicles := sv.GetVehicleListByPerson(userId)
      if vehicles != nil {
         for _,veh := range vehicles {
            if veh.PlateNo != "" {
            if veh.PlateNo != ""{
               r := []rune(veh.PlateNo)
               ncStr := string(r[1:]) //把第一位汉字剔除掉
               myPlateNosMap[ncStr] = ncStr
@@ -394,6 +391,7 @@
         fmt.Println("unmarshal spaceNos err:",err)
         return nil
      }
      vipPlateNoArr := getVipPlateNoArr()
      for _,s := range spaceList {
         pi := models.PosInfo {
            SpaceNo: s.SpaceNo,
@@ -405,11 +403,23 @@
         } else if s.PlateNos != "" {
            pi.PlateNo = s.PlateNos
         }
         pi.IsMine = isMyPlateNo(myPlateNosMap, pi.PlateNo)
         if v,ok := models.SpaceNo2Pos[s.SpaceNo];ok {
            pi.PosNo = v
         }
         resultList = append(resultList, pi)
            if pi.PlateNo == "无车牌" {
            pi.State = 0
            pi.PlateNo = ""
            resultList = append(resultList, pi)
            } else {
             pi.IsMine = isMyPlateNo(myPlateNosMap, pi.PlateNo)
             if v,ok := models.SpaceNo2Pos[s.SpaceNo];ok {
                pi.PosNo = v
             }
              if isSpaceShow(vipPlateNoArr, pi.PlateNo) {
                resultList = append(resultList, pi)
             } else {
                pi.State = 0
                pi.PlateNo = ""
                resultList = append(resultList, pi)
             }
            }
      }
   }
   if len(resultList) == 0 {
@@ -432,7 +442,7 @@
//1.目前有误识别的问题,会把D识别成0,D和0不分
//2.汉字误识别的几率比较高
func isMyPlateNo(plateNoM map[string]string, targetPlateNo string) bool {
   if targetPlateNo != "" {
   if targetPlateNo != "" && plateNoM != nil {
      r := []rune(targetPlateNo)
      nctPlateNo := string(r[1:])
@@ -605,7 +615,7 @@
func (sv *CarService) getHikPageResult(url string, reqBody map[string]interface{}) *vo.HikPageResult {
   fmt.Println(url, reqBody)
   result := sv.hikUtil.Post(url, reqBody)
   if result.Code == reqUtil.HikResult_Success {
   if result != nil && result.Code == reqUtil.HikResult_Success {
      b, err := json.Marshal(result.Data)
      if err == nil {
         var pageResult vo.HikPageResult
@@ -722,4 +732,4 @@
   }
   return nil
}
}