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 | 187 ++++++++++++++++++++++++++++++++++++---------- 1 files changed, 147 insertions(+), 40 deletions(-) diff --git a/service/carService.go b/service/carService.go index 3d3ca03..7bd48e5 100644 --- a/service/carService.go +++ b/service/carService.go @@ -30,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 { @@ -144,7 +151,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 +171,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 si.State == 1 &&si.PlateNo != "" && si.PlateNo != "鏃犺溅鐗�" { //鏈夎溅 + if isSuper { + resultArr = append(resultArr, si) + } else { + if isSpaceShow(vipPlateNoArr, si.PlateNo) { + resultArr = append(resultArr, si) + } + } } } return resultArr @@ -198,7 +233,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 +254,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 && sp.PlateNo != "" && sp.PlateNo != "鏃犺溅鐗�"{ + 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) } } } @@ -257,6 +323,34 @@ 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 { resultList := make(models.PosResult,0) var myPlateNosMap = make(map[string]string) @@ -264,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 @@ -297,6 +391,7 @@ fmt.Println("unmarshal spaceNos err:",err) return nil } + vipPlateNoArr := getVipPlateNoArr() for _,s := range spaceList { pi := models.PosInfo { SpaceNo: s.SpaceNo, @@ -308,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 { @@ -335,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:]) @@ -508,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 @@ -625,4 +732,4 @@ } return nil -} \ No newline at end of file +} -- Gitblit v1.8.0