From 447e03afc0c6cefe4793ffdf64128dc2dd7f7dee Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期六, 10 十月 2020 19:38:18 +0800
Subject: [PATCH] fix

---
 service/carService.go |  144 +++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 119 insertions(+), 25 deletions(-)

diff --git a/service/carService.go b/service/carService.go
index 3d3ca03..c0bf785 100644
--- a/service/carService.go
+++ b/service/carService.go
@@ -144,7 +144,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 +164,38 @@
 			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
+						}
+					}
+				}
+			}
+
+			vipPlateNoArr := getVipPlateNoArr()
+
 			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 +226,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,34 +247,65 @@
 				if len(spaceList) > 0 { //褰撳墠鏈夊仠鐣欒溅
 					personMap := sv.GetHikPersonMap()
 					vehicleMap := sv.GetHikVehicleMap()
-					for _,sp := range spaceList {
-						su := SpaceUser{
-							SpaceNo: sp.SpaceNo,
-							PlateNo: sp.PlateNo,
+					curLoginManagerPhone := ""
+					if userId != "" {
+						if mm,ok := personMap[userId];ok {
+							curLoginManagerPhone = mm.PhoneNo
 						}
-						if sp.PlateNo != "" {
-							r := []rune(sp.PlateNo)
-							ncStr := string(r[1:]) //鎶婄涓�浣嶆眽瀛楀墧闄ゆ帀
-							newK := strings.ReplaceAll(ncStr, "D", "*")
-							newK = strings.ReplaceAll(newK, "0", "*")
-							personId := ""
-							if v,exist := vehicleMap[newK]; exist {
-								personId = v.PersonId
+					}
+					isSuper := false
+					if curLoginManagerPhone != "" {
+						superPhoneArr := strings.Split(beego.AppConfig.String("superManagerPhones"), ",")
+						if superPhoneArr != nil {
+							for _,sp := range superPhoneArr {
+								if sp == curLoginManagerPhone { //鏄秴绾х鐞嗗憳
+									isSuper = true
+									break
+								}
 							}
+						}
+					}
 
-							if personId != "" {
-								su.CarType = "澶囨杞�"
-								if person, in := personMap[personId]; in {
-									su.Username = person.PersonName
-									su.PhoneNum = person.PhoneNo
+					vipPlateNoArr := getVipPlateNoArr()
+
+					for _,sp := range spaceList {
+						if sp.State == 1 {
+							su := SpaceUser{
+								SpaceNo: sp.SpaceNo,
+								PlateNo: sp.PlateNo,
+							}
+							if sp.PlateNo != "" {
+								r := []rune(sp.PlateNo)
+								ncStr := string(r[1:]) //鎶婄涓�浣嶆眽瀛楀墧闄ゆ帀
+								newK := strings.ReplaceAll(ncStr, "D", "*")
+								newK = strings.ReplaceAll(newK, "0", "*")
+								personId := ""
+								if v,exist := vehicleMap[newK]; exist {
+									personId = v.PersonId
+								}
+
+								if personId != "" {
+									su.CarType = "澶囨杞�"
+									if person, in := personMap[personId]; in {
+										su.Username = person.PersonName
+										su.PhoneNum = person.PhoneNo
+									}
+								} else {
+									su.CarType = "涓存椂杞�"
 								}
 							} else {
-								su.CarType = "涓存椂杞�"
+								su.PlateNo = "鏃犺溅鐗�"
 							}
-						} else {
-							su.PlateNo = "鏃犺溅鐗�"
+
+							if isSuper {
+								resultList = append(resultList, su)
+							} else {
+								if isSpaceShow(vipPlateNoArr, su.PlateNo) {
+									resultList = append(resultList, su)
+								}
+							}
+
 						}
-						resultList = append(resultList, su)
 					}
 				}
 			}
@@ -255,6 +314,34 @@
 
 	sort.Sort(resultList)
 	return resultList
+}
+
+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) { //鏄痸ip杞﹁締
+			return false
+		}
+	}
+
+	return true
 }
 
 func (sv *CarService) FindSpaceNo(userId string) models.PosResult {
@@ -297,6 +384,7 @@
 			fmt.Println("unmarshal spaceNos err:",err)
 			return nil
 		}
+		vipPlateNoArr := getVipPlateNoArr()
 		for _,s := range spaceList {
 			pi := models.PosInfo {
 				SpaceNo: s.SpaceNo,
@@ -312,7 +400,13 @@
 			if v,ok := models.SpaceNo2Pos[s.SpaceNo];ok {
 				pi.PosNo = v
 			}
-			resultList = append(resultList, pi)
+			if isSpaceShow(vipPlateNoArr, pi.PlateNo) {
+				resultList = append(resultList, pi)
+			} else {
+				pi.State = 0
+				pi.PlateNo = ""
+				resultList = append(resultList, pi)
+			}
 		}
 	}
 	if len(resultList) == 0 {

--
Gitblit v1.8.0