d5f1f86dfa846ee85dba741849a3f41cc7820950..37f69af50f54e1a15cbfbf8d652fb1042618fb78
2020-09-01 liuxiaolong
add user isAdmin
37f69a 对比 | 目录
2020-09-01 liuxiaolong
add find spaceUser
2b4f2d 对比 | 目录
6个文件已修改
146 ■■■■■ 已修改文件
conf/app.conf 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/car.go 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
routers/router.go 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/carService.go 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/userService.go 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vo/user.go 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
conf/app.conf
@@ -21,4 +21,4 @@
pushLowerLimit = 5
initPushLeft = 88
testPushPhones = 18601263339
nightManagerPhones = 18601263339
nightManagerPhones = 15210613764
controllers/car.go
@@ -266,6 +266,18 @@
    c.ServeJSON()
}
// @router /spaceUser [get]
func (c *CarController) SpaceUser() {
    sv := service.NewCarService()
    spaceUser := sv.FindHikSpaceUser()
    c.Data["json"] = code.Code{
        Success: true,
        Status: http.StatusOK,
        Data: spaceUser,
    }
    c.ServeJSON()
}
// @router /pushLog [get]
func (c *CarController) PushLog() {
    st := c.GetString("startTime")
routers/router.go
@@ -63,4 +63,5 @@
    beego.Router(preApi+"/car/pushLog", &controllers.CarController{}, "*:PushLog")
    beego.Router(preApi+"/car/spaceInfo", &controllers.CarController{}, "*:SpaceInfo")
    beego.Router(preApi+"/car/spaceUser", &controllers.CarController{}, "*:SpaceUser")
}
service/carService.go
@@ -7,6 +7,7 @@
    "encoding/json"
    "fmt"
    "github.com/astaxie/beego"
    "sort"
    "strconv"
    "strings"
)
@@ -175,6 +176,87 @@
    return nil
}
type SpaceUser struct {
    SpaceNo     string             `json:"spaceNo"`
    PlateNo     string             `json:"plateNo"`
    Username     string             `json:"username"`
    PhoneNum     string             `json:"phoneNum"`
    CarType     string             `json:"carType"`
}
type SpaceUserArr []SpaceUser
func (arr SpaceUserArr) Len()int {
    return len(arr)
}
func (arr SpaceUserArr) Swap(i,j int) {
    arr[i],arr[j] = arr[j],arr[i]
}
func (arr SpaceUserArr) Less(i,j int) bool {
    sn1,_ := strconv.Atoi(arr[i].SpaceNo)
    sn2,_ := strconv.Atoi(arr[j].SpaceNo)
    return sn1 < sn2
}
func (sv *CarService) FindHikSpaceUser() SpaceUserArr {
    resultList := make(SpaceUserArr, 0)
    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)
        } else {
            var spaceList []SpaceNo
            err = json.Unmarshal(rb, &spaceList)
            if err != nil {
                fmt.Println("unmarshal spaceNos err:", err)
            } else {
                if len(spaceList) > 0 { //当前有停留车
                    personMap := sv.GetHikPersonMap()
                    vehicleMap := sv.GetHikVehicleMap()
                    for _,sp := range spaceList {
                        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.PlateNo = "无车牌"
                        }
                        resultList = append(resultList, su)
                    }
                }
            }
        }
    }
    sort.Sort(resultList)
    return resultList
}
func (sv *CarService) FindSpaceNo(userId string) models.PosResult {
    resultList := make(models.PosResult,0)
    var myPlateNosMap = make(map[string]string)
@@ -312,6 +394,37 @@
    PersonId                         string                 `json:"personId"`
}
//以人员id为key
func (sv *CarService) GetHikPersonMap() map[string]HikPerson {
    m := make(map[string]HikPerson)
    personList := sv.GetHikPersonList()
    if personList != nil {
        for _,p := range personList {
            m[p.PersonId] = p
        }
    }
    return m
}
//以车牌号为Key
func (sv *CarService) GetHikVehicleMap() map[string] HikVehicle {
    m := make(map[string]HikVehicle)
    carPersons := sv.GetVehicleListByPerson("")
    if carPersons != nil {
        for _,veh := range carPersons {
            if veh.PlateNo != "" {
                r := []rune(veh.PlateNo)
                ncStr := string(r[1:]) //把第一位汉字剔除掉
                newK := strings.ReplaceAll(ncStr, "D", "*")
                newK = strings.ReplaceAll(newK, "0", "*")
                m[newK] = veh
            }
        }
    }
    return m
}
func (sv *CarService) GetHikPersonList() []HikPerson {
    url := "/artemis/api/resource/v2/person/personList"
    pageSize := 1000
service/userService.go
@@ -7,7 +7,9 @@
    "errors"
    "fmt"
    "github.com/aliyun/alibaba-cloud-sdk-go/services/dysmsapi"
    "github.com/astaxie/beego"
    "github.com/satori/go.uuid"
    "strings"
    "sync"
    "time"
)
@@ -82,6 +84,7 @@
                    UserId: u.Id,
                    PhoneNum: phoneNum,
                    PlateNos: plateNos,
                    IsAdmin: isAdmin(phoneNum),
                }, nil
            } else {
                fmt.Println("u.Insert err:", e)
@@ -127,6 +130,7 @@
                UserId: tmpUser.Id,
                PhoneNum: phoneNum,
                PlateNos: plateNos,
                IsAdmin: isAdmin(phoneNum),
            }, nil
        }
    } else {
@@ -134,6 +138,18 @@
    }
}
func isAdmin(phoneNum string) bool {
    managers := beego.AppConfig.String("nightManagerPhones")
    arr := strings.Split(managers, ",")
    for _,s := range arr {
        if s == phoneNum {
            return true
        }
    }
    return false
}
func (sv *UserService) AddPlateNo(userId, plateNo string) bool {
    var uc models.UserCar
    if uc.Exist(userId, plateNo) {
vo/user.go
@@ -5,4 +5,6 @@
    PhoneNum     string         `json:"phoneNum"`
    TrueName     string         `json:"trueName"`
    PlateNos    []string     `json:"plateNos"`
    IsAdmin     bool         `json:"isAdmin"` //是否是管理员
}