liuxiaolong
2021-05-17 f3a497f4e7ebe5611ccfb4c3a6e9657ad706bc15
修改GetAllCamerasAndGroupsByDevID,一次返回所有的摄像机和资源分组
2个文件已修改
39 ■■■■■ 已修改文件
entites.go 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
gb28181Api.go 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
entites.go
@@ -80,12 +80,13 @@
//CamerasInOnePage 一页的摄像机信息
type CamerasInOnePage struct {
    GbResult
    TotalSize   int          `json:"totalsize"`   //(数字)   设备总数  (下同)
    OnePageSize int          `json:"onepagesize"` //(数字)   每页大小  (下同)
    TotalPage   int          `json:"totalpage"`   //(数字)   总分页数  (下同)
    PageNO      int          `json:"pageno"`      //(数字)   当前第几页(下同)
    Count       int          `json:"count"`       //(数字)   当前有几条数据(下同)
    Data        []CameraInfo `json:"data"`        //设备信息,参照“1.设备管理”定义
    TotalSize   int                  `json:"totalsize"`   //(数字)   设备总数  (下同)
    OnePageSize int                  `json:"onepagesize"` //(数字)   每页大小  (下同)
    TotalPage   int                  `json:"totalpage"`   //(数字)   总分页数  (下同)
    PageNO      int                  `json:"pageno"`      //(数字)   当前第几页(下同)
    Count       int                  `json:"count"`       //(数字)   当前有几条数据(下同)
    Data        []CameraInfo         `json:"data"`        //设备信息,参照“1.设备管理”定义
    Groups         []DomainUnit         `json:"groups"`      //资源组信息,resType=2
}
//DomainUnit 设备的行政区域 (设备是平台才会去获取行政区域-中间三位编码为200)
gb28181Api.go
@@ -144,7 +144,7 @@
//pageNo (数字)   指定获取第几页,第一次为1,返回总页数,总条数等,再根据这些信息去再次查询,直到取完全部
//srcType (字符串) "all"-表示获取设备的所有资源  "node"-父节点下的第一级资源
//注意:根据"restype"字段,忽略资源组,只保留通道资源------"restype":(数字)1-通道资源 2-资源组
func (api Gb28181Api) getCamsByDevAndPage(devID string, srcType string, pageNo int) (CamerasInOnePage, bool) {
func (api Gb28181Api) getCamsAndGroupsByDevAndPage(devID string, srcType string, pageNo int) (CamerasInOnePage, bool) {
    url := BASIC_URL + DATA_URL_PREFIX + "/get_all_channel/" + devID + "/" + srcType + "/" + strconv.Itoa(pageNo)
    client := NewClient()
@@ -168,6 +168,14 @@
    if len(camerasPerPage.Data) > 0 {
        for i := 0; i < len(camerasPerPage.Data); i++ {
            if camerasPerPage.Data[i].ResType == 2 {
                di := camerasPerPage.Data[i]
                camerasPerPage.Groups = append(camerasPerPage.Groups, DomainUnit{
                    DevPubID: di.DevPubID,
                    ResType: 2,
                    PublicID: di.PublicID,
                    Name: di.Name,
                    ParentID: di.ParentID,
                })
                camerasPerPage.Data = append(camerasPerPage.Data[:i], camerasPerPage.Data[i+1:]...)
                i--
            }
@@ -179,25 +187,27 @@
//GetAllCamerasByDevID 获取全部下级设备的摄像机列表
//devID  (字符串)  注册的设备的20位id
func (api Gb28181Api) GetAllCamerasByDevID(devID string) ([]CameraInfo, bool) {
func (api Gb28181Api) GetAllCamerasAndGroupsByDevID(devID string) ([]CameraInfo, []DomainUnit, bool) {
    var cameraSlice []CameraInfo
    camerasPerPage, flag := api.getCamsByDevAndPage(devID, "all", 1)
    var groups         []DomainUnit
    camerasPerPage, flag := api.getCamsAndGroupsByDevAndPage(devID, "all", 1)
    if !flag {
        log.Println("GetCamsByDevAndPage Error, deviceSlice is nil")
        return cameraSlice, false
        return cameraSlice, groups, false
    }
    cameraSlice = camerasPerPage.Data
    groups = camerasPerPage.Groups
    for i := 1; i < camerasPerPage.TotalPage; i++ {
        camerasPerPage, flag := api.getCamsByDevAndPage(devID, "all", i+1)
        camerasPerPage, flag := api.getCamsAndGroupsByDevAndPage(devID, "all", i+1)
        if !flag {
            log.Println("GetCamsByDevAndPage Error! devID:" + devID + ",type:all,pageno:" + strconv.Itoa(i+1) + " ,cameraSlice is not completed")
            return cameraSlice, false
            return cameraSlice, groups, false
        }
        cameraSlice = append(cameraSlice, camerasPerPage.Data...)
        groups = append(groups, camerasPerPage.Groups...)
    }
    return cameraSlice, true
    return cameraSlice, groups, true
}
//GetAllDomainUnit get all domainunit 获取所有行政区域