权限分组完成

This commit is contained in:
wyh 2023-11-23 10:50:23 +08:00
parent 72a13a3a49
commit 7fb7d49934
4 changed files with 436 additions and 94 deletions

View File

@ -28,3 +28,73 @@ type PermissionGroupList struct {
Rows []PermissionGroup `json:"rows"`
} `json:"data"`
}
type PermissionGroupAddPersons struct {
GroupId string `json:"groupId"`
EmployeeNos []string `json:"employeeNos"`
AutoIssue bool `json:"autoIssue"` //是否自动下发
Permissions []PermissionGroupAddPersonsData `json:"permissions"` //人员权限信息列表,如果人员绑定权限组时未指定门禁权限信息,则默认使用人员信息中的门禁权限信息;若人员信息中也没有门禁权限信息,则按默认值下发
}
type PermissionGroupAddPersonsData struct {
EmployeeNo string `json:"employeeNo"`
PersonPhone string `json:"personPhone"`
FloorNo int `json:"floorNo"`
RoomNo int `json:"roomNo"`
ValidBeginTime string `json:"validBeginTime"`
ValidEndTime string `json:"validEndTime"`
PlanTemplateNos []int `json:"planTemplateNos"`
DynamicCode string `json:"dynamicCode"`
MaxOpenDoorTime int `json:"maxOpenDoorTime"`
BelongGroup int `json:"belongGroup"`
CallNumbers []string `json:"callNumbers"`
FloorNumbers []int `json:"floorNumbers"`
LocalUIRight int `json:"localUIRight"`
AuthCode string `json:"authCode"`
}
type PermissionGroupGetEmployeeNos struct {
Hikvision
Data struct {
PageNo int `json:"pageNo"`
PageSize int `json:"pageSize"`
Total int `json:"total"`
Rows []struct {
EmployeeNo string `json:"employeeNo"`
} `json:"rows"`
} `json:"data"`
}
type PermissionGroupGetDeviceSerials struct {
Hikvision
Data struct {
PageNo int `json:"pageNo"`
PageSize int `json:"pageSize"`
Total int `json:"total"`
Rows []struct {
DeviceSerial string `json:"deviceSerial"`
HasCapability bool `json:"hasCapability"`
} `json:"rows"`
} `json:"data"`
}
type PermissionGroupGetPersonPermission struct {
Hikvision
Data struct {
PhoneNo string `json:"phoneNo"`
PersonType string `json:"personType"`
FloorNo int `json:"floorNo"`
RoomNo int `json:"roomNo"`
ValidBeginTime string `json:"validBeginTime"`
ValidEndTime string `json:"validEndTime"`
PlanTemplateNos []int `json:"planTemplateNos"`
MaxOpenDoorTime int `json:"maxOpenDoorTime"`
DynamicCode string `json:"dynamicCode"`
BelongGroup string `json:"belongGroup"`
CreateTime string `json:"createTime"`
LocalUIRight int `json:"localUIRight"`
CallNumbers []string `json:"callNumbers"`
FloorNumbers []int `json:"floorNumbers"`
AuthCode string `json:"authCode"`
} `json:"data"`
}

View File

@ -3,7 +3,16 @@ package model
type PersonCreateData struct {
Hikvision
Data struct {
Person
EmployeeNo string `json:"employeeNo"`
PersonName string `json:"personName"`
PersonPhone string `json:"personPhone"`
FaceUrl string `json:"faceUrl"`
PersonType string `json:"personType"`
FloorNo int `json:"floorNo"`
RoomNo int `json:"roomNo"`
ValidBeginTime string `json:"validBeginTime"`
ValidEndTime string `json:"validEndTime"`
PlanTemplateNos []int `json:"planTemplateNos"`
DynamicCode string `json:"dynamicCode"`
MaxOpenDoorTime int `json:"maxOpenDoorTime"`
CallNumbers []string `json:"callNumbers"`

View File

@ -4,10 +4,230 @@ import (
"fmt"
"log"
"testing"
"myschools.me/suguo/hikvision/iot/model"
)
func TestOauth(t *testing.T) {
// detail, err := DeviceDetail("AF8534579")
// result, err := PermissionGroupCreate("第一个权限组")
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(result)
// r2, err := PermissionGroupCreate("第二个权限组")
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r2)
// r3, err := PermissionGroupList(1, 20)
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println("list ", r3)
// r1, err := PermissionGroupUpdate(result.Data.GroupId, "第一个修改过权限组")
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r1)
// r4, err := PermissionGroupDelete(r2.Data.GroupId)
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r4)
// r5, err := PermissionGroupList(1, 20)
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println("list ", r5)
r7, err := PersonCreate("666", "GBVFDAF", "18357062933", "", true)
if err != nil {
log.Fatal(err)
return
}
fmt.Println(r7)
groupid := "4b9e7ab1068d45269b1acb6c8b50d855"
r6, err := PermissionGroupAddPersons(&model.PermissionGroupAddPersons{
GroupId: groupid,
EmployeeNos: []string{"666"},
AutoIssue: true,
Permissions: []model.PermissionGroupAddPersonsData{
{
EmployeeNo: "666",
PersonPhone: "18357062933",
FloorNo: 33,
RoomNo: 1,
ValidBeginTime: "2023-11-23T00:00:59+08:00",
ValidEndTime: "2023-11-23T00:00:59+08:00",
PlanTemplateNos: []int{1},
DynamicCode: "123456",
MaxOpenDoorTime: 10,
BelongGroup: 2,
CallNumbers: []string{"1-1-1-101"},
FloorNumbers: []int{1, 3},
LocalUIRight: 1,
AuthCode: "123456",
},
},
})
if err != nil {
log.Fatal(err)
return
}
fmt.Println("list ", r6)
r8, err := PermissionGroupGetEmployeeNos(1, 20, groupid)
if err != nil {
log.Fatal(err)
return
}
fmt.Println(r8)
// r9, err := PermissionGroupRemovePersons(groupid, []string{"333"})
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r9)
// r10, err := PermissionGroupGetEmployeeNos(1, 20, groupid)
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r10)
// r10, err := PermissionGroupAddDevice(groupid, true, []string{"AF8534579"}, true)
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r10)
// r11, err := PermissionGroupGetDeviceSerials(1, 20, groupid)
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r11)
// r12, err := PermissionGroupRemoveDevice(groupid, []string{"AF8534579"})
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r12)
// r13, err := PermissionGroupGetDeviceSerials(1, 20, groupid)
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r13)
r14, err := PermissionGroupGetPersonPermission("666", groupid)
if err != nil {
log.Fatal(err)
return
}
fmt.Println(r14)
}
/*
// result, err := PLANWEEKCreateOrUpdate("222", true, []model.PlanWeek{
// {
// Week: "Monday",
// TimeSegment: []model.PlanPort{
// {
// Index: 1,
// Enable: true,
// BeginTime: "08:00:00",
// EndTime: "10:30:00",
// },
// },
// },
// })
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(result)
// r1, err := PLANWEEKGetAll(1, 20)
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r1)
// r2, err := PLANWEEKDelete("111")
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r2)
// r3, err := PLANWEEKGetAll(1, 20)
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r3)
*/
/*
// result, err := PLANHolidayCreateOrUpdate("555", true, "2023-11-22", "2023-11-25", []model.PlanPort{
// {
// Index: 1,
// Enable: true,
// BeginTime: "08:00:00",
// EndTime: "10:30:00",
// },
// })
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(result)
// r1, err := PLANHolidayGetAll(1, 20)
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r1)
// r2, err := PLANHolidayDelete("555")
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r2)
// r3, err := PLANHolidayGetAll(1, 20)
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r3)
*/
/*
// detail, err := DeviceDetail("AF8534579")
// if err != nil {
// log.Fatal(err)
// return
@ -21,7 +241,7 @@ func TestOauth(t *testing.T) {
// }
// fmt.Println(detail)
devid := "f65a8b5c05db49388efa04426047de48"
// devid := "f65a8b5c05db49388efa04426047de48"
// fmt.Println(devid)
// result, err := PlanWeekConfigSet("userRight", devid, 1, "222")
@ -122,20 +342,20 @@ func TestOauth(t *testing.T) {
// }
// fmt.Println(r9)
r10, err := PlanGlobalConfigClear(devid, true, true, true, true)
if err != nil {
log.Fatal(err)
return
}
// r10, err := PlanGlobalConfigClear(devid, true, true, true, true)
// if err != nil {
// log.Fatal(err)
// return
// }
fmt.Println(r10)
// fmt.Println(r10)
detail, err := PLANWeekTempleteGetAll(1, 20)
if err != nil {
log.Fatal(err)
return
}
fmt.Println(detail)
// detail, err := PLANWeekTempleteGetAll(1, 20)
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(detail)
// result, err := PlanWeekConfigGet("userRight", devid, 1)
// if err != nil {
@ -150,83 +370,4 @@ func TestOauth(t *testing.T) {
// return
// }
// fmt.Println(r4)
}
/*
// result, err := PLANWEEKCreateOrUpdate("222", true, []model.PlanWeek{
// {
// Week: "Monday",
// TimeSegment: []model.PlanPort{
// {
// Index: 1,
// Enable: true,
// BeginTime: "08:00:00",
// EndTime: "10:30:00",
// },
// },
// },
// })
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(result)
// r1, err := PLANWEEKGetAll(1, 20)
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r1)
// r2, err := PLANWEEKDelete("111")
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r2)
// r3, err := PLANWEEKGetAll(1, 20)
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r3)
*/
/*
// result, err := PLANHolidayCreateOrUpdate("555", true, "2023-11-22", "2023-11-25", []model.PlanPort{
// {
// Index: 1,
// Enable: true,
// BeginTime: "08:00:00",
// EndTime: "10:30:00",
// },
// })
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(result)
// r1, err := PLANHolidayGetAll(1, 20)
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r1)
// r2, err := PLANHolidayDelete("555")
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r2)
// r3, err := PLANHolidayGetAll(1, 20)
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r3)
*/

View File

@ -99,15 +99,137 @@ func PermissionGroupList(pageno, pagesize int) (*model.PermissionGroupList, erro
}
// 权限组绑定人员
func PermissionGroupAddPersons(req *model.PermissionGroupAddPersons) (*model.Hikvision, error) {
resp, err := hikvisionRequest("POST", permission_group_addperson, 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.PermissionGroupDeleteRes, error) {
req := &struct {
GroupId string `json:"groupId"`
EmployeeNos []string `json:"employeeNos"`
}{
GroupId: groupid,
EmployeeNos: employeeNos,
}
resp, err := hikvisionRequest("POST", permission_group_removePersons, req)
if err != nil {
return nil, err
}
var result = &model.PermissionGroupDeleteRes{}
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", permission_group_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", permission_group_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.PermissionGroupDeleteRes, error) {
req := &struct {
GroupId string `json:"groupId"`
DeviceSerials []string `json:"deviceSerials"`
}{
GroupId: groupId,
DeviceSerials: deviceSerials,
}
resp, err := hikvisionRequest("POST", permission_group_removeDevices, req)
if err != nil {
return nil, err
}
var result = &model.PermissionGroupDeleteRes{}
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", permission_group_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.PermissionGroupGetPersonPermission, error) {
resp, err := hikvisionRequest("GET", fmt.Sprintf("%s?employeeNo=%s&groupId=%s", permission_group_personPermission, employeeNo, groupId), nil)
if err != nil {
return nil, err
}
var result = &model.PermissionGroupGetPersonPermission{}
if err := json.Unmarshal(resp, &result); err != nil {
return nil, err
}
return result, nil
}