From 1cb224fb1769112729050024b17d7569d0302d9a Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期二, 22 九月 2020 20:43:59 +0800
Subject: [PATCH] spaceInfo and spaceUser add vip except

---
 conf/app.conf         |    5 +-
 service/carService.go |  103 +++++++++++++++++++++++++++++++++++++++++++++++++--
 controllers/car.go    |    6 ++-
 3 files changed, 106 insertions(+), 8 deletions(-)

diff --git a/conf/app.conf b/conf/app.conf
index e7b3f32..51ff4e8 100644
--- a/conf/app.conf
+++ b/conf/app.conf
@@ -22,5 +22,6 @@
 initPushLeft = 88
 pushOpen = false
 testPushPhones = 18601263339
-nightManagerPhones = 15210613764,19821586309,13611298216,13693616515
-nightVipPlateNos = 浜琇AK619,浜琋K00M0,浜琈R5102,浜琀94985
\ No newline at end of file
+nightManagerPhones = 13611298216,13693616515
+nightVipPlateNos = 浜琇AK619,浜琋K00M0,浜琈R5102,浜琀94985
+superManagerPhones = 15210613764,19821586309
\ No newline at end of file
diff --git a/controllers/car.go b/controllers/car.go
index 7b65575..9cccaff 100644
--- a/controllers/car.go
+++ b/controllers/car.go
@@ -284,8 +284,9 @@
 }
 // @router /spaceInfo [get]
 func (c *CarController) SpaceInfo() {
+	userId := c.GetString("userId")
 	sv := service.NewCarService()
-	spaceInfo := sv.FindHikSpaceInfo()
+	spaceInfo := sv.FindHikSpaceInfo(userId)
 	c.Data["json"] = code.Code{
 		Success: true,
 		Status: http.StatusOK,
@@ -296,8 +297,9 @@
 
 // @router /spaceUser [get]
 func (c *CarController) SpaceUser() {
+	userId := c.GetString("userId")
 	sv := service.NewCarService()
-	spaceUser := sv.FindHikSpaceUser()
+	spaceUser := sv.FindHikSpaceUser(userId)
 	c.Data["json"] = code.Code{
 		Success: true,
 		Status: http.StatusOK,
diff --git a/service/carService.go b/service/carService.go
index 5d79f47..6d6d340 100644
--- a/service/carService.go
+++ b/service/carService.go
@@ -10,6 +10,7 @@
 	"sort"
 	"strconv"
 	"strings"
+	"time"
 )
 type CarService struct {
 	hikUtil *reqUtil.HikHttpUtil
@@ -144,7 +145,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 +165,49 @@
 			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
+						}
+					}
+				}
+			}
+
+			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)
+						}
+					}
+				}
+			}
+
 			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 +238,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,6 +259,38 @@
 				if len(spaceList) > 0 { //褰撳墠鏈夊仠鐣欒溅
 					personMap := sv.GetHikPersonMap()
 					vehicleMap := sv.GetHikVehicleMap()
+					curLoginManagerPhone := ""
+					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
+								}
+							}
+						}
+					}
+
+					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)
+								}
+							}
+						}
+					}
+
 					for _,sp := range spaceList {
 						if sp.State == 1 {
 							su := SpaceUser{
@@ -247,7 +319,15 @@
 							} else {
 								su.PlateNo = "鏃犺溅鐗�"
 							}
-							resultList = append(resultList, su)
+
+							if isSuper {
+								resultList = append(resultList, su)
+							} else {
+								if isSpaceShow(vipPlateNoArr, su.PlateNo) {
+									resultList = append(resultList, su)
+								}
+							}
+
 						}
 					}
 				}
@@ -259,6 +339,21 @@
 	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
+			}
+		}
+	}
+	return true
+}
+
 func (sv *CarService) FindSpaceNo(userId string) models.PosResult {
 	resultList := make(models.PosResult,0)
 	var myPlateNosMap = make(map[string]string)

--
Gitblit v1.8.0