| | |
| | | "sort" |
| | | "strconv" |
| | | "strings" |
| | | "time" |
| | | ) |
| | | type CarService struct { |
| | | hikUtil *reqUtil.HikHttpUtil |
| | |
| | | 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 { |
| | |
| | | } |
| | | } |
| | | |
| | | 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 { |
| | |
| | | } |
| | | } |
| | | |
| | | 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, |
| | |
| | | return resultList |
| | | } |
| | | |
| | | //1.白天管理员能看到所有人的车,包括vip车辆 |
| | | //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) { //是vip车辆 |
| | | 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) { //是vip车辆 |
| | | return false |
| | | } |
| | | } |
| | | |
| | | return true |
| | | } |
| | | |
| | |
| | | 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 |
| | |
| | | fmt.Println("unmarshal spaceNos err:",err) |
| | | return nil |
| | | } |
| | | vipPlateNoArr := getVipPlateNoArr() |
| | | for _,s := range spaceList { |
| | | pi := models.PosInfo { |
| | | SpaceNo: s.SpaceNo, |
| | |
| | | } 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 { |
| | |
| | | //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:]) |
| | | |
| | |
| | | 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 |
| | |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | } |