hikvision/iot/group-iot.go

148 lines
4.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package iot
import (
"encoding/json"
"fmt"
"myschools.me/suguo/hikvision/iot/model"
)
/*
基础服务能力 > 设备管理 > 设备分组管理
*/
const (
/*设备分组管理*/
GROUP_BASE = "https://api2.hik-cloud.com/api/v1/open/basic/groups"
GROUP_ADD = 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 GroupAdd(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_ADD, req)
if err != nil {
return nil, err
}
var result *model.Hikvision
if err := json.Unmarshal(resp, &result); err != nil {
return nil, err
}
if result.Code != 200 {
return nil, fmt.Errorf("result errcode:%d errmsg:%s", result.Code, result.Message)
}
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
}
if result.Code != 200 {
return nil, fmt.Errorf("result errcode:%d errmsg:%s", result.Code, result.Message)
}
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
}
if result.Code != 200 {
return nil, fmt.Errorf("result errcode:%d errmsg:%s", result.Code, result.Message)
}
return result, nil
}
// 该接口用于通过组编号获取组的详细信息
func GroupDetail(groupNo string) (*model.Group, error) {
resp, err := hikvisionRequest("GET", fmt.Sprintf("%s?groupNo=%s", GROUP_DETAIL, groupNo), nil)
if err != nil {
return nil, err
}
var result = &struct {
model.Hikvision
Data model.Group `json:"data"`
}{}
if err := json.Unmarshal(resp, &result); err != nil {
return nil, err
}
if result.Code != 200 {
return nil, fmt.Errorf("result errcode:%d errmsg:%s", result.Code, result.Message)
}
return &result.Data, 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
}
if result.Code != 200 {
return nil, fmt.Errorf("result errcode:%d errmsg:%s", result.Code, result.Message)
}
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
}
if result.Code != 200 {
return nil, fmt.Errorf("result errcode:%d errmsg:%s", result.Code, result.Message)
}
return result.Data, nil
}