157 lines
4.5 KiB
Go
157 lines
4.5 KiB
Go
package cloud
|
||
|
||
import (
|
||
"encoding/json"
|
||
"fmt"
|
||
|
||
"myschools.me/suguo/hikvision/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"
|
||
)
|
||
|
||
type GroupAddReq struct {
|
||
GroupName string `json:"groupName"` //组名称
|
||
GroupNo string `json:"groupNo"` //组编号
|
||
ParentNo string `json:"parentNo"` //父节点组编号
|
||
}
|
||
|
||
// 该接口用于通过编号来新增组。最多支持3000个组,最多支持5层嵌套。
|
||
func GroupAdd(access_token *string, req *GroupAddReq) (*model.BaseOperationRes, error) {
|
||
|
||
resp, err := hikvisionRequest(access_token, "POST", GROUP_ADD, req)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var result *model.BaseOperationRes
|
||
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
|
||
}
|
||
|
||
type GroupUpdateReq struct {
|
||
GroupName string `json:"groupName"` //组名称
|
||
GroupNo string `json:"groupNo"` //组编号
|
||
}
|
||
|
||
// 该接口用于通过组编号来删除组。组下面挂有下级节点或者设备的不可以删除,需清空后进行删除。
|
||
func GroupUpdate(access_token *string, req *GroupUpdateReq) (*model.BaseOperationRes, error) {
|
||
|
||
resp, err := hikvisionRequest(access_token, "POST", GROUP_UPDATE, req)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var result *model.BaseOperationRes
|
||
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(access_token *string, groupNo string) (*model.BaseOperationRes, error) {
|
||
|
||
resp, err := hikvisionRequest(access_token, "POST", fmt.Sprintf("%s?groupNo=%s", GROUP_REMOVE, groupNo), nil)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var result *model.BaseOperationRes
|
||
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
|
||
}
|
||
|
||
type GroupGetRes struct {
|
||
Code int `json:"code"`
|
||
Data Group `json:"data"`
|
||
Message string `json:"message"`
|
||
}
|
||
|
||
type Group struct {
|
||
GroupId string `json:"groupId"` //组ID
|
||
GroupName string `json:"groupName"` //组名称
|
||
GroupNo string `json:"groupNo"` //组编号
|
||
ParentId string `json:"parentId"` //父ID
|
||
}
|
||
|
||
// 该接口用于通过组编号获取组的详细信息
|
||
func CloudGetGroup(access_token *string, groupNo string) (*Group, error) {
|
||
|
||
resp, err := hikvisionRequest(access_token, "GET", fmt.Sprintf("%s?groupNo=%s", GROUP_DETAIL, groupNo), nil)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var result *GroupGetRes
|
||
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
|
||
}
|
||
|
||
type Groups struct {
|
||
Code int `json:"code"`
|
||
Data []Group `json:"data"`
|
||
Message string `json:"message"`
|
||
}
|
||
|
||
// 该接口用于获取所有组。
|
||
func GroupGetAll(access_token *string) ([]Group, error) {
|
||
|
||
resp, err := hikvisionRequest(access_token, "GET", GROUP_LISTALL, nil)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var result *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(access_token *string, groupNo string) ([]Group, error) {
|
||
|
||
resp, err := hikvisionRequest(access_token, "GET", fmt.Sprintf("%s?parentNo=%s", GROUP_CHILD_LIST, groupNo), nil)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var result *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
|
||
}
|