351 lines
11 KiB
Go
351 lines
11 KiB
Go
package iot
|
||
|
||
import (
|
||
"encoding/json"
|
||
"fmt"
|
||
|
||
"myschools.me/suguo/hikvision/iot/model"
|
||
)
|
||
|
||
// 权限组新增
|
||
func PermissionGroupCreate(groupname string) (*model.PermissionGroupCreateRes, error) {
|
||
req := &struct {
|
||
GroupName string `json:"groupName"`
|
||
}{
|
||
GroupName: groupname,
|
||
}
|
||
|
||
resp, err := hikvisionRequest("POST", "/api/v1/open/accessControl/permissionGroups/create", req)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var result = &model.PermissionGroupCreateRes{}
|
||
if err := json.Unmarshal(resp, &result); err != nil {
|
||
return nil, err
|
||
}
|
||
return result, nil
|
||
}
|
||
|
||
// 权限组更新
|
||
func PermissionGroupUpdate(groupid, groupname string) (*model.Hikvision, error) {
|
||
req := &struct {
|
||
GroupID string `json:"groupId"`
|
||
GroupName string `json:"groupName"`
|
||
}{
|
||
GroupID: groupid,
|
||
GroupName: groupname,
|
||
}
|
||
|
||
resp, err := hikvisionRequest("POST", "/api/v1/open/accessControl/permissionGroups/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 PermissionGroupDelete(groupid string) (*model.PermissionDeleteRes, error) {
|
||
|
||
resp, err := hikvisionRequest("POST", fmt.Sprintf("/api/v1/open/accessControl/permissionGroups/delete?groupId=%s", groupid), nil)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var result = &model.PermissionDeleteRes{}
|
||
if err := json.Unmarshal(resp, &result); err != nil {
|
||
return nil, err
|
||
}
|
||
return result, nil
|
||
}
|
||
|
||
// 获取权限组列表
|
||
func PermissionGroupList(pageno, pagesize int) (*model.PermissionGroupList, error) {
|
||
|
||
req := &struct {
|
||
PageNo int `json:"pageNo"`
|
||
PageSize int `json:"pageSize"`
|
||
}{
|
||
PageNo: pageno,
|
||
PageSize: pagesize,
|
||
}
|
||
|
||
resp, err := hikvisionRequest("POST", "/api/v1/open/accessControl/permissionGroups/actions/page", req)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var result = &model.PermissionGroupList{}
|
||
if err := json.Unmarshal(resp, &result); err != nil {
|
||
return nil, err
|
||
}
|
||
return result, nil
|
||
}
|
||
|
||
// 权限组绑定人员
|
||
func PermissionGroupAddPersons(req *model.PermissionGroupAddPersons) (*model.Hikvision, error) {
|
||
|
||
resp, err := hikvisionRequest("POST", "/api/v1/open/accessControl/permissionGroups/actions/addPersons", 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 PermissionGroupRemovePersons(groupid string, employeeNos []string) (*model.PermissionDeleteRes, error) {
|
||
req := &struct {
|
||
GroupId string `json:"groupId"`
|
||
EmployeeNos []string `json:"employeeNos"`
|
||
}{
|
||
GroupId: groupid,
|
||
EmployeeNos: employeeNos,
|
||
}
|
||
resp, err := hikvisionRequest("POST", "/api/v1/open/accessControl/permissionGroups/actions/removePersons", req)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var result = &model.PermissionDeleteRes{}
|
||
if err := json.Unmarshal(resp, &result); err != nil {
|
||
return nil, err
|
||
}
|
||
return result, nil
|
||
}
|
||
|
||
// 权限组获取人员编号列表
|
||
func PermissionGroupGetEmployeeNos(pageNo, pageSize int, groupId string) (*model.PermissionGroupGetEmployeeNos, error) {
|
||
req := &struct {
|
||
PageNo int `json:"pageNo"`
|
||
PageSize int `json:"pageSize"`
|
||
GroupId string `json:"groupId"`
|
||
}{
|
||
PageNo: pageNo,
|
||
PageSize: pageSize,
|
||
GroupId: groupId,
|
||
}
|
||
resp, err := hikvisionRequest("POST", "/api/v1/open/accessControl/permissionGroups/actions/getEmployeeNos", req)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var result = &model.PermissionGroupGetEmployeeNos{}
|
||
if err := json.Unmarshal(resp, &result); err != nil {
|
||
return nil, err
|
||
}
|
||
return result, nil
|
||
}
|
||
|
||
// 权限组绑定设备
|
||
func PermissionGroupAddDevice(groupId string, checkCapability bool, deviceSerials []string, autoIssue bool) (*model.Hikvision, error) {
|
||
req := &struct {
|
||
GroupId string `json:"groupId"`
|
||
CheckCapability bool `json:"checkCapability"` //绑定时校验是否有能力集。该配置建议开启,用于过滤没有能力集的设备并告知开发者。
|
||
DeviceSerials []string `json:"deviceSerials"`
|
||
AutoIssue bool `json:"autoIssue"` //是否自动下发,true或者不填默认调用本接口后自动下发权限组,false为手动下发(需要调用根据权限组下发接口下发)
|
||
}{
|
||
GroupId: groupId,
|
||
CheckCapability: checkCapability,
|
||
DeviceSerials: deviceSerials,
|
||
AutoIssue: autoIssue,
|
||
}
|
||
resp, err := hikvisionRequest("POST", "/api/v1/open/accessControl/permissionGroups/actions/addDevices", 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 PermissionGroupRemoveDevice(groupId string, deviceSerials []string) (*model.PermissionDeleteRes, error) {
|
||
req := &struct {
|
||
GroupId string `json:"groupId"`
|
||
DeviceSerials []string `json:"deviceSerials"`
|
||
}{
|
||
GroupId: groupId,
|
||
DeviceSerials: deviceSerials,
|
||
}
|
||
resp, err := hikvisionRequest("POST", "/api/v1/open/accessControl/permissionGroups/actions/removeDevices", req)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var result = &model.PermissionDeleteRes{}
|
||
if err := json.Unmarshal(resp, &result); err != nil {
|
||
return nil, err
|
||
}
|
||
return result, nil
|
||
}
|
||
|
||
// 权限组获取设备序列号列表
|
||
func PermissionGroupGetDeviceSerials(pageNo, pageSize int, groupId string) (*model.PermissionGroupGetDeviceSerials, error) {
|
||
req := &struct {
|
||
PageNo int `json:"pageNo"`
|
||
PageSize int `json:"pageSize"`
|
||
GroupId string `json:"groupId"`
|
||
}{
|
||
PageNo: pageNo,
|
||
PageSize: pageSize,
|
||
GroupId: groupId,
|
||
}
|
||
resp, err := hikvisionRequest("POST", "/api/v1/open/accessControl/permissionGroups/actions/getDeviceSerials", req)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var result = &model.PermissionGroupGetDeviceSerials{}
|
||
if err := json.Unmarshal(resp, &result); err != nil {
|
||
return nil, err
|
||
}
|
||
return result, nil
|
||
}
|
||
|
||
// 人员权限信息查询
|
||
func PermissionGroupGetPersonPermission(employeeNo, groupId string) (*model.PermissionPersonPermissionRes, error) {
|
||
|
||
resp, err := hikvisionRequest("GET", fmt.Sprintf("/api/v1/open/accessControl/personPermission/get?employeeNo=%s&groupId=%s", employeeNo, groupId), nil)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var result = &model.PermissionPersonPermissionRes{}
|
||
if err := json.Unmarshal(resp, &result); err != nil {
|
||
return nil, err
|
||
}
|
||
return result, nil
|
||
}
|
||
|
||
/*-----------------------------------*/
|
||
|
||
// 根据权限组下发权限
|
||
func PermissionAllotsIssuedByGroup(groupId string) (*model.PermissionDeleteRes, error) {
|
||
req := &struct {
|
||
GroupId string `json:"groupId"`
|
||
}{
|
||
GroupId: groupId,
|
||
}
|
||
resp, err := hikvisionRequest("POST", "/api/v1/open/accessControl/allots/actions/issuedByGroup", req)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var result = &model.PermissionDeleteRes{}
|
||
if err := json.Unmarshal(resp, &result); err != nil {
|
||
return nil, err
|
||
}
|
||
return result, nil
|
||
}
|
||
|
||
// 查询下发失败记录
|
||
func PermissionAllotsSearchStatus(pageNo, pageSize int, groupId, deviceSerial, employeeNo, statisticsId string) (*model.PermissionAllotsSearchStatus, error) {
|
||
req := &struct {
|
||
PageNo int `json:"pageNo"` //必填
|
||
PageSize int `json:"pageSize"` //必填
|
||
GroupId string `json:"groupId"`
|
||
DeviceSerial string `json:"deviceSerial"`
|
||
EmployeeNo string `json:"employeeNo"`
|
||
StatisticsId string `json:"statisticsId"`
|
||
}{
|
||
PageNo: pageNo,
|
||
PageSize: pageSize,
|
||
GroupId: groupId,
|
||
DeviceSerial: deviceSerial,
|
||
EmployeeNo: employeeNo,
|
||
StatisticsId: statisticsId,
|
||
}
|
||
resp, err := hikvisionRequest("POST", "/api/v1/open/accessControl/allots/actions/searchStatus", req)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var result = &model.PermissionAllotsSearchStatus{}
|
||
if err := json.Unmarshal(resp, &result); err != nil {
|
||
return nil, err
|
||
}
|
||
return result, nil
|
||
}
|
||
|
||
// 下发所有失败人员
|
||
//
|
||
// 将所有权限组下发失败的权限重新下发到权限组关联的设备中;请勿对该接口设置很频繁的定时任务!!!
|
||
func PermissionAllotsIssuedAllGroups() (*model.Hikvision, error) {
|
||
|
||
resp, err := hikvisionRequest("POST", "/api/v1/open/accessControl/allots/actions/issuedAllGroups", 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 PermissionAllotsClearDeviceAllAuth(deviceSerial string) (*model.Hikvision, error) {
|
||
|
||
resp, err := hikvisionRequest("GET", fmt.Sprintf("%s?deviceSerial=%s", "/api/v1/open/accessControl/allots/actions/clearDeviceAllAuth", deviceSerial), 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 PermissionAllotsGetCapability(deviceSerial string) (*model.Hikvision, error) {
|
||
|
||
resp, err := hikvisionRequest("GET", fmt.Sprintf("%s?deviceSerial=%s", "/api/v1/open/accessControl/allots/actions/getCapability", deviceSerial), 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 PermissionGroupUpdatePersonPermission(req *model.PermissionPersonPermissionUpdate) (*model.Hikvision, error) {
|
||
|
||
resp, err := hikvisionRequest("POST", "/api/v1/open/accessControl/personPermission/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
|
||
}
|
||
|
||
// 人员同步下发
|
||
// 单个人员下发到单个设备,用户在人员绑定权限组时设置不自动下发(autoIssue=false),再调用同步下发接口下发人员权限。
|
||
func PermissionAllotsSyncIssued(deviceSerial, employeeNo string) (*model.Hikvision, error) {
|
||
req := &struct {
|
||
DeviceSerial string `json:"deviceSerial"`
|
||
EmployeeNo string `json:"employeeNo"`
|
||
}{
|
||
DeviceSerial: deviceSerial,
|
||
EmployeeNo: employeeNo,
|
||
}
|
||
resp, err := hikvisionRequest("POST", fmt.Sprintf("%s?deviceSerial=%s", "/api/v1/open/accessControl/allots/actions/syncIssued", deviceSerial), 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
|
||
}
|