liuxiaolong
2020-08-06 dbc843d0b37f786fb816131bcc7ebca86dbe72e9
service/carService.go
@@ -7,6 +7,7 @@
   "encoding/json"
   "fmt"
   "github.com/astaxie/beego"
   "strconv"
)
type CarService struct {
   hikUtil *reqUtil.HikHttpUtil
@@ -150,26 +151,35 @@
   SpaceType             string       `json:"spaceType"`
}
func (sv *CarService) FindSpaceNo() models.PosResult {
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)
      }
   }
   //bindCars := strings.Join(myPlateNos, ",")
   //先查车库唯一标识
   parkList := sv.getHikParkList() //先查有几个停车场
   if parkList != nil {
   //parkList := sv.getHikParkList() //先查有几个停车场
   //if parkList != nil {
      url := "/artemis/api/pms/v1/parkingSpace/spaceNo"
      for _,p := range parkList {
      //for _,p := range parkList {
         reqBody := map[string]interface{} {
            "parkSyscode": p.ParkIndexCode,//停车库唯一标识
            //"parkSyscode": p.ParkIndexCode,//停车库唯一标识
            //"state": 1, //车位状态,0:空闲,1:停车
            //"bindCars": bindCars,
            "pageNo": 1,
            "pageSize": 1000,
         }
         result := sv.hikUtil.Post(url, reqBody)
         fmt.Println("findSpaceNo result:", result)
         if result.Code == reqUtil.HikResult_Success {
            rb, err := json.Marshal(result.Data)
         pageResult := sv.getHikPageResult(url, reqBody)
         fmt.Println("findSpaceNo pageResult:", pageResult)
         if pageResult != nil {
            rb, err := json.Marshal(pageResult.List)
            if err != nil {
               fmt.Println("hik find spaceNo err:",err)
               fmt.Println("marshal pageResult.List err:",err)
               return nil
            }
            var spaceList []SpaceNo
@@ -179,11 +189,16 @@
               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,
                  PlateNo: s.PlateNos,
                  IsMine: isMine,
               }
               if v,ok := models.SpaceNo2Pos[s.SpaceNo];ok {
                  pi.PosNo = v
@@ -191,6 +206,18 @@
               resultList = append(resultList, pi)
            }
         }
      //}
   //}
   if len(resultList) == 0 {
      for i:=1;i<91;i++ {
         pi := models.PosInfo {
            SpaceNo: strconv.Itoa(i),
            PosNo: "",
            State: 1,
            PlateNo: "",
            IsMine: false,
         }
         resultList = append(resultList, pi)
      }
   }
@@ -209,19 +236,19 @@
}
type HikPerson struct {
   PersonId          string                   `json:"personId"`
   PersonName          string                   `json:"personName"`
   Gender             int                   `json:"gender"`
   Phone             string                   `json:"phone"`
   JobNo            string                   `json:"jobNo"`
   OrgIndexCode       string                   `json:"orgIndexCode"`
   CertificateType    string                   `json:"certificateCode"`
   CertificateNo       string                   `json:"certificateNo"`
   CreateTime          string                   `json:"createTime"`
   UpdateTime          string                   `json:"updateTime"`
   OrgPath          string                   `json:"orgPath"`
   OrgPathName       string                   `json:"orgPathName"`
   PersonPhone       []HikPersonPhoto         `json:"personPhoto"`
   PersonId                    string              `json:"personId"`
   PersonName                  string              `json:"personName"`
   Gender                      int                 `json:"gender"`
   PhoneNo                     string              `json:"phoneNo"`
   JobNo                       string              `json:"jobNo"`
   OrgIndexCode                string              `json:"orgIndexCode"`
   CertificateType             string              `json:"certificateCode"`
   CertificateNo               string              `json:"certificateNo"`
   CreateTime                  string              `json:"createTime"`
   UpdateTime                  string              `json:"updateTime"`
   OrgPath                     string              `json:"orgPath"`
   OrgPathName                 string              `json:"orgPathName"`
   PersonPhone                 []HikPersonPhoto    `json:"personPhoto"`
}
type HikPersonPhoto struct {
@@ -239,7 +266,6 @@
      "pageSize": pageSize,
   }
   pageResult := sv.getHikPageResult(url, reqBody)
   fmt.Println("pageResult:", pageResult)
   if pageResult == nil {
      return nil
   }
@@ -281,7 +307,7 @@
      }
   }
   return nil
   return list
}
func (sv *CarService) getHikPageResult(url string, reqBody map[string]interface{}) *vo.HikPageResult {
@@ -300,7 +326,7 @@
         fmt.Println("marshal result.Data err:", err)
      }
   } else {
      fmt.Println("result.Code:", result.Code)
      fmt.Println("result:", result)
   }
   return nil
}
@@ -334,17 +360,69 @@
      "pageSize": 100,
      "personIds": personId,
   }
   fmt.Println(url, reqBody)
   result := sv.hikUtil.Post(url, reqBody)
   fmt.Println("getVehicleList result:", result)
   if result.Code == reqUtil.HikResult_Success {
      b, err := json.Marshal(result.Data)
      if err == nil {
         var list []HikVehicle
         if err = json.Unmarshal(b, &list);err == nil {
            return list
         }
   pageResult := sv.getHikPageResult(url, reqBody)
   if pageResult ==nil {
      return nil
   }
   b, err := json.Marshal(pageResult.List)
   if err == nil {
      var list []HikVehicle
      if err = json.Unmarshal(b, &list);err == nil {
         return list
      }
   }
   return nil
}
//过车记录
type CrossRecord struct {
   CrossRecordSyscode          string        `json:"crossRecordSyscode"`
   parkSyscode                 string        `json:"parkSyscode"`
   ParkName                    string        `json:"parkName"`
   EntranceSyscode             string        `json:"entranceSyscode"`
   EntranceName                string        `json:"entranceName"`
   RoadwaySyscode              string        `json:"roadwaySyscode"`
   RoadwayName                 string        `json:"roadwayName"`
   VehicleOut                  int           `json:"vehicleOut"`
   ReleaseMode                 int           `json:"releaseMode"`
   ReleaseResult               int           `json:"releaseResult"`
   ReleaseWay                  int           `json:"releaseWay"`
   ReleaseReason               int           `json:"releaseReason"`
   PlateNo                     string        `json:"plateNo"`
   CardNo                      string        `json:"cardNo"`
   //VehicleColor              int             `json:"vehicleColor"`
   //VehicleType               int             `json:"vehicleType"`
   //PlateColor                int             `json:"plateColor"`
   //PlateType                 int             `json:"plateType"`
   //CarCategory               string          `json:"carCategory"`
   //CarCategoryName           string          `json:"carCategoryName"`
   VehiclePicUri               string        `json:"vehiclePicUri"`
   PlateNoPicUri               string        `json:"plateNoPicUri"`
   FacePicUri                  string        `json:"facePicUri"`
   AswSyscode                  string        `json:"aswSyscode"`
   CrossTime                   string        `json:"crossTime"`
   CreateTime                  string        `json:"createTime"`
}
func (sv *CarService) CrossRecords() []CrossRecord {
   url := "/artemis/api/pms/v1/crossRecords/page"
   reqBody := map[string]interface{} {
      "pageNo": 1,
      "pageSize": 100,
   }
   pageResult := sv.getHikPageResult(url, reqBody)
   if pageResult ==nil {
      return nil
   }
   b, err := json.Marshal(pageResult.List)
   if err == nil {
      var list []CrossRecord
      if err = json.Unmarshal(b, &list);err == nil {
         return list
      }
   }
   return nil
}