liuxiaolong
2020-09-22 1cb224fb1769112729050024b17d7569d0302d9a
service/carService.go
@@ -10,6 +10,7 @@
   "sort"
   "strconv"
   "strings"
   "time"
)
type CarService struct {
   hikUtil *reqUtil.HikHttpUtil
@@ -144,7 +145,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 +165,49 @@
         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
                  }
               }
            }
         }
         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)
                  }
               }
            }
         }
         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 +238,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,6 +259,38 @@
            if len(spaceList) > 0 { //当前有停留车
               personMap := sv.GetHikPersonMap()
               vehicleMap := sv.GetHikVehicleMap()
               curLoginManagerPhone := ""
               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
                        }
                     }
                  }
               }
               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)
                        }
                     }
                  }
               }
               for _,sp := range spaceList {
                  if sp.State == 1 {
                     su := SpaceUser{
@@ -247,7 +319,15 @@
                     } else {
                        su.PlateNo = "无车牌"
                     }
                     resultList = append(resultList, su)
                     if isSuper {
                        resultList = append(resultList, su)
                     } else {
                        if isSpaceShow(vipPlateNoArr, su.PlateNo) {
                           resultList = append(resultList, su)
                        }
                     }
                  }
               }
            }
@@ -259,6 +339,21 @@
   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
         }
      }
   }
   return true
}
func (sv *CarService) FindSpaceNo(userId string) models.PosResult {
   resultList := make(models.PosResult,0)
   var myPlateNosMap = make(map[string]string)