132 lines
3.3 KiB
Go
132 lines
3.3 KiB
Go
package iot
|
||
|
||
import (
|
||
"encoding/json"
|
||
"fmt"
|
||
|
||
"myschools.me/suguo/hikvision/iot/model"
|
||
)
|
||
|
||
/*
|
||
基础服务能力 > 设备管理 > 设备分组管理
|
||
*/
|
||
|
||
const (
|
||
/*设备分组管理*/
|
||
group_base = "/api/v1/open/basic/groups"
|
||
group_create = group_base + "/create"
|
||
group_remove = group_base + "/delete"
|
||
group_update = group_base + "/update"
|
||
group_detail = group_base + "/get"
|
||
group_listall = group_base + "/actions/listAll"
|
||
group_child_list = group_base + "/actions/childrenList"
|
||
)
|
||
|
||
// 该接口用于通过编号来新增组。最多支持3000个组,最多支持5层嵌套。
|
||
func GroupCreate(groupname, groupno, parentno string) (*model.Hikvision, error) {
|
||
|
||
req := &struct {
|
||
GroupName string `json:"groupName"` //组名称
|
||
GroupNo string `json:"groupNo"` //组编号
|
||
ParentNo string `json:"parentNo"` //父节点组编号
|
||
}{
|
||
GroupName: groupname,
|
||
GroupNo: groupno,
|
||
ParentNo: parentno,
|
||
}
|
||
|
||
resp, err := hikvisionRequest("POST", group_create, req)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var result *model.Hikvision
|
||
if err := json.Unmarshal(resp, &result); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return result, nil
|
||
}
|
||
|
||
// 该接口用于通过组编号来删除组。组下面挂有下级节点或者设备的不可以删除,需清空后进行删除。
|
||
func GroupUpdate(groupname, groupno string) (*model.Hikvision, error) {
|
||
|
||
req := &struct {
|
||
GroupName string `json:"groupName"` //组名称
|
||
GroupNo string `json:"groupNo"` //组编号
|
||
}{
|
||
GroupName: groupname,
|
||
GroupNo: groupno,
|
||
}
|
||
|
||
resp, err := hikvisionRequest("POST", group_update, req)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var result *model.Hikvision
|
||
if err := json.Unmarshal(resp, &result); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return result, nil
|
||
}
|
||
|
||
// 该接口用于通过组编号来删除组。组下面挂有下级节点或者设备的不可以删除,需清空后进行删除。
|
||
func GroupRemove(groupNo string) (*model.Hikvision, error) {
|
||
|
||
resp, err := hikvisionRequest("POST", fmt.Sprintf("%s?groupNo=%s", group_remove, groupNo), nil)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var result *model.Hikvision
|
||
if err := json.Unmarshal(resp, &result); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return result, nil
|
||
}
|
||
|
||
// 该接口用于通过组编号获取组的详细信息
|
||
func GroupDetail(groupNo string) (*model.GroupRes, error) {
|
||
|
||
resp, err := hikvisionRequest("GET", fmt.Sprintf("%s?groupNo=%s", group_detail, groupNo), nil)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var result = &model.GroupRes{}
|
||
if err := json.Unmarshal(resp, &result); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return result, nil
|
||
}
|
||
|
||
// 该接口用于获取所有组。
|
||
func GroupGetAll() ([]model.Group, error) {
|
||
|
||
resp, err := hikvisionRequest("GET", group_listall, nil)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var result *model.Groups
|
||
if err := json.Unmarshal(resp, &result); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return result.Data, nil
|
||
}
|
||
|
||
// 该接口用于通过组编号查找某组的下级节点。如果父节点为空,则查询根节点。
|
||
func GroupChildList(groupNo string) ([]model.Group, error) {
|
||
|
||
resp, err := hikvisionRequest("GET", fmt.Sprintf("%s?parentNo=%s", group_child_list, groupNo), nil)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var result *model.Groups
|
||
if err := json.Unmarshal(resp, &result); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return result.Data, nil
|
||
}
|