| | |
| | | "fmt" |
| | | "github.com/astaxie/beego" |
| | | "strconv" |
| | | "strings" |
| | | ) |
| | | type CarService struct { |
| | | hikUtil *reqUtil.HikHttpUtil |
| | |
| | | SpaceType string `json:"spaceType"` |
| | | } |
| | | |
| | | func (sv *CarService) FindHikSpaceInfo() []SpaceNo { |
| | | url := "/artemis/api/pms/v1/parkingSpace/spaceNo" |
| | | |
| | | reqBody := map[string]interface{} { |
| | | "pageNo": 1, |
| | | "pageSize": 1000, |
| | | } |
| | | pageResult := sv.getHikPageResult(url, reqBody) |
| | | if pageResult != nil { |
| | | rb, err := json.Marshal(pageResult.List) |
| | | if err != nil { |
| | | fmt.Println("marshal pageResult.List err:", err) |
| | | return nil |
| | | } |
| | | var spaceList []SpaceNo |
| | | err = json.Unmarshal(rb, &spaceList) |
| | | if err != nil { |
| | | fmt.Println("unmarshal spaceNos err:", err) |
| | | return nil |
| | | } else { |
| | | var resultArr []SpaceNo |
| | | for _,si := range spaceList { |
| | | if si.State == 1 { //有车 |
| | | resultArr = append(resultArr, si) |
| | | } |
| | | } |
| | | return resultArr |
| | | } |
| | | } |
| | | return nil |
| | | } |
| | | |
| | | func (sv *CarService) FindSpaceNo(userId string) models.PosResult { |
| | | resultList := make(models.PosResult,0) |
| | | var myPlateNosMap = make(map[string]string) |
| | |
| | | vehicles := sv.GetVehicleListByPerson(userId) |
| | | if vehicles != nil { |
| | | for _,veh := range vehicles { |
| | | myPlateNosMap[veh.PlateNo] = veh.PlateNo |
| | | //myPlateNos = append(myPlateNos, veh.PlateNo) |
| | | if veh.PlateNo != "" { |
| | | ncStr := veh.PlateNo[1:] //把第一位汉字剔除掉 |
| | | myPlateNosMap[ncStr] = ncStr |
| | | } |
| | | //myPlateNosMap[veh.PlateNo] = veh.PlateNo |
| | | } |
| | | } |
| | | } |
| | |
| | | return nil |
| | | } |
| | | for _,s := range spaceList { |
| | | isMine := false |
| | | if _,exist := myPlateNosMap[s.PlateNos]; exist { |
| | | isMine = true |
| | | } |
| | | pi := models.PosInfo { |
| | | SpaceNo: s.SpaceNo, |
| | | PosNo: "", |
| | | State: s.State, |
| | | IsMine: isMine, |
| | | } |
| | | if s.PlateNo != "" { |
| | | pi.PlateNo = s.PlateNo |
| | | } 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 |
| | | } |
| | |
| | | } |
| | | |
| | | return resultList |
| | | } |
| | | |
| | | //判断是不是自己的车牌号 |
| | | //1.目前有误识别的问题,会把D识别成0,D和0不分 |
| | | //2.汉字误识别的几率比较高 |
| | | func isMyPlateNo(plateNoM map[string]string, targetPlateNo string) bool { |
| | | if targetPlateNo == "京N34809"{ |
| | | fmt.Println("isMyPlateNo plateNoM:", plateNoM) |
| | | } |
| | | if targetPlateNo != "" { |
| | | nctPlateNo := targetPlateNo[1:] |
| | | if _,exist := plateNoM[nctPlateNo];exist { |
| | | return true |
| | | } else { |
| | | match := false |
| | | for k,_ := range plateNoM { |
| | | newK := strings.ReplaceAll(k, "D", "*") |
| | | newK = strings.ReplaceAll(newK, "0", "*") |
| | | |
| | | tt := strings.ReplaceAll(targetPlateNo,"D", "*") |
| | | tt = strings.ReplaceAll(tt,"0", "*") |
| | | if newK == tt { |
| | | match = true |
| | | break |
| | | } |
| | | } |
| | | return match |
| | | } |
| | | } |
| | | return false |
| | | } |
| | | |
| | | func (sv *CarService) BindCarSpace() bool { |
| | |
| | | return list |
| | | } |
| | | |
| | | func SyncHikPerson() { |
| | | func SyncHikPerson() int { |
| | | syncCount := 0 |
| | | sv := NewCarService() |
| | | hikPersons := sv.GetHikPersonList() |
| | | if hikPersons != nil { |
| | | if hikPersons != nil && len(hikPersons) >0 { |
| | | var u models.User |
| | | uMap := u.GetAllMapByPhone() |
| | | idMap := u.GetAllMap() |
| | | hikPM := make(map[string]string) |
| | | for _,hp := range hikPersons { |
| | | if sp,ok := uMap[hp.PhoneNo];ok { |
| | | if sp.Id != hp.PersonId { |
| | | u.SyncHikPersonId(hp.PhoneNo, hp.PersonId) |
| | | hikPM[hp.PersonId] = hp.PhoneNo |
| | | if sp,ok := idMap[hp.PersonId];ok { |
| | | if sp.PhoneNum != hp.PhoneNo { |
| | | u.UpdatePhoneNum(hp.PhoneNo, hp.PersonId) |
| | | syncCount++ |
| | | } |
| | | } |
| | | } |
| | | for k,_ := range idMap { |
| | | if _,in := hikPM[k];!in { |
| | | u.Delete(k) |
| | | syncCount++ |
| | | } |
| | | } |
| | | |
| | | } |
| | | return syncCount |
| | | } |
| | | |
| | | func (sv *CarService) getHikPageResult(url string, reqBody map[string]interface{}) *vo.HikPageResult { |
| | |
| | | reqBody := map[string]interface{} { |
| | | "pageNo": 1, |
| | | "pageSize": 1000, |
| | | "personIds": personId, |
| | | } |
| | | if personId != "" { |
| | | reqBody["personIds"] = personId |
| | | } |
| | | pageResult := sv.getHikPageResult(url, reqBody) |
| | | if pageResult ==nil { |
| | | fmt.Println("GetVehicleListByPerson pageResult is nil") |
| | | return nil |
| | | } |
| | | |
| | |
| | | var list []HikVehicle |
| | | if err = json.Unmarshal(b, &list);err == nil { |
| | | return list |
| | | } else { |
| | | fmt.Println("unmarshal err:", err) |
| | | } |
| | | } |
| | | |