liuxiaolong
2020-08-17 62f5b98dc2c8084bcab1cf91edf7923d84b56c1c
service/carService.go
@@ -25,14 +25,14 @@
func (sv *CarService) Statistic() (*models.CarStatistic, bool) {
   m := models.CarStatistic{
      TotalPermPlace: 0,
      Left:           0,
      TotalPlace: 0,
      Left:       0,
   }
   remainList := sv.getRemainSpaceNum("")
   if remainList != nil {
      for _,r:=range remainList {
         m.TotalPermPlace += r.TotalPermPlace
         m.TotalPlace += r.TotalPlace
         m.Left += r.LeftPlace
      }
      return &m, true
@@ -142,14 +142,48 @@
   SpaceType             string       `json:"spaceType"`
}
func (sv *CarService) FindHikSpaceInfo() []SpaceNo {
   url := "/artemis/api/pms/v1/parkingSpace/spaceNo"
   reqBody := map[string]interface{} {
      "pageNo": 1,
      "pageSize": 1000,
   }
   pageResult := sv.getHikPageResult(url, reqBody)
   if pageResult != nil {
      rb, err := json.Marshal(pageResult.List)
      if err != nil {
         fmt.Println("marshal pageResult.List err:", err)
         return nil
      }
      var spaceList []SpaceNo
      err = json.Unmarshal(rb, &spaceList)
      if err != nil {
         fmt.Println("unmarshal spaceNos err:", err)
         return nil
      } else {
         var resultArr []SpaceNo
         for _,si := range spaceList {
            if si.State == 1 { //有车
               resultArr = append(resultArr, si)
            }
         }
         return resultArr
      }
   }
   return nil
}
func (sv *CarService) FindSpaceNo(userId string) models.PosResult {
   resultList := make(models.PosResult,0)
   var myPlateNosMap = make(map[string]string)
   vehicles := sv.GetVehicleListByPerson(userId)
   if vehicles != nil {
      for _,veh := range vehicles {
         myPlateNosMap[veh.PlateNo] = veh.PlateNo
         //myPlateNos = append(myPlateNos, veh.PlateNo)
   if userId !="" {
      vehicles := sv.GetVehicleListByPerson(userId)
      if vehicles != nil {
         for _,veh := range vehicles {
            myPlateNosMap[veh.PlateNo] = veh.PlateNo
            //myPlateNos = append(myPlateNos, veh.PlateNo)
         }
      }
   }
@@ -177,21 +211,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
         }
@@ -300,6 +335,34 @@
   return list
}
func SyncHikPerson() int {
   syncCount := 0
   sv := NewCarService()
   hikPersons := sv.GetHikPersonList()
   if hikPersons != nil && len(hikPersons) >0 {
      var u models.User
      idMap := u.GetAllMap()
      hikPM := make(map[string]string)
      for _,hp := range hikPersons {
         hikPM[hp.PersonId] = hp.PhoneNo
         if sp,ok := idMap[hp.PersonId];ok {
            if sp.PhoneNum != hp.PhoneNo {
               u.UpdatePhoneNum(hp.PhoneNo, hp.PersonId)
               syncCount++
            }
         }
      }
      for k,_ := range idMap {
         if _,in := hikPM[k];!in {
            u.Delete(k)
            syncCount++
         }
      }
   }
   return syncCount
}
func (sv *CarService) getHikPageResult(url string, reqBody map[string]interface{}) *vo.HikPageResult {
   fmt.Println(url, reqBody)
   result := sv.hikUtil.Post(url, reqBody)
@@ -347,11 +410,14 @@
   url := "/artemis/api/resource/v2/vehicle/advance/vehicleList"
   reqBody := map[string]interface{} {
      "pageNo": 1,
      "pageSize": 100,
      "personIds": personId,
      "pageSize": 1000,
   }
   if personId != "" {
      reqBody["personIds"] = personId
   }
   pageResult := sv.getHikPageResult(url, reqBody)
   if pageResult ==nil {
      fmt.Println("GetVehicleListByPerson pageResult is nil")
      return nil
   }
@@ -360,6 +426,8 @@
      var list []HikVehicle
      if err = json.Unmarshal(b, &list);err == nil {
         return list
      } else {
         fmt.Println("unmarshal err:", err)
      }
   }