From 27f1012d2fecda7bcc3d9f44c5dd4c10a7cf38a4 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期二, 18 八月 2020 12:13:54 +0800
Subject: [PATCH] add log

---
 service/carService.go |  127 +++++++++++++++++++++++++++++++++++++-----
 1 files changed, 112 insertions(+), 15 deletions(-)

diff --git a/service/carService.go b/service/carService.go
index 4727b3e..9a2c6a1 100644
--- a/service/carService.go
+++ b/service/carService.go
@@ -8,6 +8,7 @@
 	"fmt"
 	"github.com/astaxie/beego"
 	"strconv"
+	"strings"
 )
 type CarService struct {
 	hikUtil *reqUtil.HikHttpUtil
@@ -25,14 +26,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 +143,51 @@
 	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 {
+				if veh.PlateNo != "" {
+					ncStr := veh.PlateNo[1:] //鎶婄涓�浣嶆眽瀛楀墧闄ゆ帀
+					myPlateNosMap[ncStr] = ncStr
+				}
+				//myPlateNosMap[veh.PlateNo] = veh.PlateNo
+			}
 		}
 	}
 
@@ -177,21 +215,17 @@
 			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
 			}
+			pi.IsMine = isMyPlateNo(myPlateNosMap, pi.PlateNo)
 			if v,ok := models.SpaceNo2Pos[s.SpaceNo];ok {
 				pi.PosNo = v
 			}
@@ -212,6 +246,36 @@
 	}
 
 	return resultList
+}
+
+//鍒ゆ柇鏄笉鏄嚜宸辩殑杞︾墝鍙�
+//1.鐩墠鏈夎璇嗗埆鐨勯棶棰橈紝浼氭妸D璇嗗埆鎴�0,D鍜�0涓嶅垎
+//2.姹夊瓧璇瘑鍒殑鍑犵巼姣旇緝楂�
+func isMyPlateNo(plateNoM map[string]string, targetPlateNo string) bool {
+	if targetPlateNo == "浜琋34809"{
+		fmt.Println("isMyPlateNo plateNoM:", plateNoM)
+	}
+	if targetPlateNo != "" {
+		nctPlateNo := targetPlateNo[1:]
+		if _,exist := plateNoM[nctPlateNo];exist {
+			return true
+		} else {
+			match := false
+			for k,_ := range plateNoM {
+				newK := strings.ReplaceAll(k, "D", "*")
+				newK = strings.ReplaceAll(newK, "0", "*")
+
+				tt := strings.ReplaceAll(targetPlateNo,"D", "*")
+				tt = strings.ReplaceAll(tt,"0", "*")
+				if newK == tt {
+					match = true
+					break
+				}
+			}
+			return match
+		}
+	}
+	return false
 }
 
 func (sv *CarService) BindCarSpace() bool {
@@ -300,6 +364,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 +439,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 +455,8 @@
 		var list []HikVehicle
 		if err = json.Unmarshal(b, &list);err == nil {
 			return list
+		} else {
+			fmt.Println("unmarshal err:", err)
 		}
 	}
 

--
Gitblit v1.8.0