From f64dd9f191dff341b4eb430d7bacc44a3db9a279 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期五, 04 三月 2022 10:12:45 +0800
Subject: [PATCH] fix nil

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

diff --git a/service/carService.go b/service/carService.go
index 6d6d340..7bd48e5 100644
--- a/service/carService.go
+++ b/service/carService.go
@@ -10,7 +10,6 @@
 	"sort"
 	"strconv"
 	"strings"
-	"time"
 )
 type CarService struct {
 	hikUtil *reqUtil.HikHttpUtil
@@ -31,12 +30,19 @@
 		TotalPlace: 0,
 		Left:       0,
 	}
-
-	remainList := sv.getRemainSpaceNum("")
-	if remainList != nil {
-		for _,r:=range remainList {
-			m.TotalPlace += r.TotalPlace
-			m.Left += r.LeftPlace
+	//20201117 淇敼缁熻鏂瑰紡锛屾寜鐓�  鍓╀綑杞︿綅鏁�=杞︿綅鎬绘暟-杞﹀簱鍐呭疄闄呭仠杞︽暟锛堥〉闈笂鏄剧ず鐨勶紝涓嶅惈vip杞﹁締鍗犱綅锛�
+	spaceInfo := sv.FindSpaceNo("")
+	if spaceInfo != nil {
+		m.TotalPlace = len(spaceInfo)
+		usedCount := 0
+		for _,si := range spaceInfo {
+			if si.State == 1 {
+				usedCount++
+			}
+		}
+		m.Left = m.TotalPlace-usedCount
+		if m.Left < 0 {
+			m.Left = 0
 		}
 		return &m, true
 	} else {
@@ -185,22 +191,11 @@
 				}
 			}
 
-			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)
-						}
-					}
-				}
-			}
+			vipPlateNoArr := getVipPlateNoArr()
 
 			var resultArr []SpaceNo
 			for _,si := range spaceList {
-				if si.State == 1 { //鏈夎溅
+				if si.State == 1 &&si.PlateNo != "" && si.PlateNo != "鏃犺溅鐗�" { //鏈夎溅
 					if isSuper {
 						resultArr = append(resultArr, si)
 					} else {
@@ -278,21 +273,10 @@
 						}
 					}
 
-					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)
-								}
-							}
-						}
-					}
+					vipPlateNoArr := getVipPlateNoArr()
 
 					for _,sp := range spaceList {
-						if sp.State == 1 {
+						if sp.State == 1 && sp.PlateNo != "" && sp.PlateNo != "鏃犺溅鐗�"{
 							su := SpaceUser{
 								SpaceNo: sp.SpaceNo,
 								PlateNo: sp.PlateNo,
@@ -339,18 +323,31 @@
 	return resultList
 }
 
-//1.鐧藉ぉ绠$悊鍛樿兘鐪嬪埌鎵�鏈変汉鐨勮溅锛屽寘鎷瑅ip杞﹁締
-//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) { //鏄痸ip杞﹁締
-				return false
+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
 }
 
@@ -361,7 +358,7 @@
 		vehicles := sv.GetVehicleListByPerson(userId)
 		if vehicles != nil {
 			for _,veh := range vehicles {
-				if veh.PlateNo != "" {
+				if veh.PlateNo != ""{
 					r := []rune(veh.PlateNo)
 					ncStr := string(r[1:]) //鎶婄涓�浣嶆眽瀛楀墧闄ゆ帀
 					myPlateNosMap[ncStr] = ncStr
@@ -394,6 +391,7 @@
 			fmt.Println("unmarshal spaceNos err:",err)
 			return nil
 		}
+		vipPlateNoArr := getVipPlateNoArr()
 		for _,s := range spaceList {
 			pi := models.PosInfo {
 				SpaceNo: s.SpaceNo,
@@ -405,11 +403,23 @@
 			} 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
-			}
-			resultList = append(resultList, pi)
+            if pi.PlateNo == "鏃犺溅鐗�" {
+				pi.State = 0
+				pi.PlateNo = ""
+				resultList = append(resultList, pi)
+            } else {
+			    pi.IsMine = isMyPlateNo(myPlateNosMap, pi.PlateNo)
+			    if v,ok := models.SpaceNo2Pos[s.SpaceNo];ok {
+				    pi.PosNo = v
+			    }
+		        if isSpaceShow(vipPlateNoArr, pi.PlateNo) {
+				    resultList = append(resultList, pi)
+			    } else {
+				    pi.State = 0
+				    pi.PlateNo = ""
+				    resultList = append(resultList, pi)
+			    }
+            }
 		}
 	}
 	if len(resultList) == 0 {
@@ -432,7 +442,7 @@
 //1.鐩墠鏈夎璇嗗埆鐨勯棶棰橈紝浼氭妸D璇嗗埆鎴�0,D鍜�0涓嶅垎
 //2.姹夊瓧璇瘑鍒殑鍑犵巼姣旇緝楂�
 func isMyPlateNo(plateNoM map[string]string, targetPlateNo string) bool {
-	if targetPlateNo != "" {
+	if targetPlateNo != "" && plateNoM != nil {
 		r := []rune(targetPlateNo)
 		nctPlateNo := string(r[1:])
 
@@ -605,7 +615,7 @@
 func (sv *CarService) getHikPageResult(url string, reqBody map[string]interface{}) *vo.HikPageResult {
 	fmt.Println(url, reqBody)
 	result := sv.hikUtil.Post(url, reqBody)
-	if result.Code == reqUtil.HikResult_Success {
+	if result != nil && result.Code == reqUtil.HikResult_Success {
 		b, err := json.Marshal(result.Data)
 		if err == nil {
 			var pageResult vo.HikPageResult
@@ -722,4 +732,4 @@
 	}
 
 	return nil
-}
\ No newline at end of file
+}

--
Gitblit v1.8.0