人员数据采集-远程采集

This commit is contained in:
wyh 2023-11-23 16:41:43 +08:00
parent 5aeff6b0d3
commit 005a421d72
4 changed files with 272 additions and 8 deletions

149
iot/capture-iot.go Normal file
View File

@ -0,0 +1,149 @@
package iot
import (
"encoding/json"
"fmt"
"myschools.me/suguo/hikvision/iot/model"
)
const (
capture_rule = "/api/v1/open/collectors/remote/rules"
capture_idcard = "/api/v1/open/collectors/remote/identities/actions/get"
capture_card = "/api/v1/open/collectors/remote/cards/actions/get"
capture_fingerprint = "/api/v1/open/collectors/remote/fingerprints/actions/get"
capture_face = "/api/v1/open/collectors/remote/faces/actions/get"
capture_face_process = "/api/v1/open/collectors/remote/faces/actions/getProgress"
)
// 采集规则配置
func CaptureRemoteRuleSet(deviceSerial string, cardNoAdaptive bool, cardNoBytesLen, cardTimeout int) (*model.Hikvision, error) {
req := &struct {
DeviceSerial string `json:"deviceSerial"`
CardRule model.CaptureRemoteRule `json:"cardRule"`
}{
DeviceSerial: deviceSerial,
CardRule: model.CaptureRemoteRule{
CardNoAdaptive: cardNoAdaptive,
CardNoBytesLen: cardNoBytesLen,
CardTimeout: cardTimeout,
},
}
resp, err := hikvisionRequest("POST", capture_rule+"/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 CaptureRemoteRuleGet(deviceSerial string) (*model.CaptureRemoteRuleGet, error) {
resp, err := hikvisionRequest("GET", capture_rule+"/get?deviceSerial="+deviceSerial, nil)
if err != nil {
return nil, err
}
var result = &model.CaptureRemoteRuleGet{}
if err := json.Unmarshal(resp, &result); err != nil {
return nil, err
}
return result, nil
}
// 采集并获取身份证信息
func CaptureRemoteIDCardGet(deviceSerial string) (*model.CaptureRemoteIDCardGet, error) {
req := &struct {
DeviceSerial string `json:"deviceSerial"`
}{
DeviceSerial: deviceSerial,
}
resp, err := hikvisionRequest("POST", capture_idcard, req)
if err != nil {
return nil, err
}
var result = &model.CaptureRemoteIDCardGet{}
if err := json.Unmarshal(resp, &result); err != nil {
return nil, err
}
return result, nil
}
// 采集并获取卡信息默认5秒左右超时如果配置了采集规则以规则配置接口中cardTimeout的值为准。
func CaptureRemoteCardGet(deviceSerial string) (*model.CaptureRemoteCardGet, error) {
req := &struct {
DeviceSerial string `json:"deviceSerial"`
}{
DeviceSerial: deviceSerial,
}
resp, err := hikvisionRequest("POST", capture_card, req)
if err != nil {
return nil, err
}
var result = &model.CaptureRemoteCardGet{}
if err := json.Unmarshal(resp, &result); err != nil {
return nil, err
}
return result, nil
}
// 采集并获取指纹信息手指需要进行3次感应最好在10秒内完成采集。
func CaptureRemoteFingerPrintGet(deviceSerial string, fingerprintNo int) (*model.CaptureRemoteFingerPrintGet, error) {
req := &struct {
DeviceSerial string `json:"deviceSerial"`
FingerprintNo int `json:"fingerprintNo"` //指纹编号,取值范围:[1~10]
}{
DeviceSerial: deviceSerial,
FingerprintNo: fingerprintNo,
}
resp, err := hikvisionRequest("POST", capture_fingerprint, req)
if err != nil {
return nil, err
}
var result = &model.CaptureRemoteFingerPrintGet{}
if err := json.Unmarshal(resp, &result); err != nil {
return nil, err
}
return result, nil
}
// 采集并获取人脸信息
func CaptureRemoteFaceGet(deviceSerial string, infrared bool) (*model.CaptureRemoteFaceGet, error) {
req := &struct {
DeviceSerial string `json:"deviceSerial"`
Infrared bool `json:"infrared"`
}{
DeviceSerial: deviceSerial,
Infrared: infrared,
}
resp, err := hikvisionRequest("POST", capture_face, req)
if err != nil {
return nil, err
}
var result = &model.CaptureRemoteFaceGet{}
if err := json.Unmarshal(resp, &result); err != nil {
return nil, err
}
return result, nil
}
// 如果采集人脸信息接口采集进度不为100且未返回人脸照片URL时调用该接口查询采集进度以及获取人脸URL。
func CaptureRemoteFaceProcessGet(deviceSerial string) (*model.CaptureRemoteFaceGet, error) {
resp, err := hikvisionRequest("GET", fmt.Sprintf("%s?deviceSerial=%s", capture_face_process, deviceSerial), nil)
if err != nil {
return nil, err
}
var result = &model.CaptureRemoteFaceGet{}
if err := json.Unmarshal(resp, &result); err != nil {
return nil, err
}
return result, nil
}

View File

@ -0,0 +1,63 @@
package model
type CaptureRemoteRule struct {
CardNoAdaptive bool `json:"cardNoAdaptive"` //卡号长度自适应
CardNoBytesLen int `json:"cardNoBytesLen"` //卡号占字节大小
CardTimeout int `json:"cardTimeout"` //设备采集卡超时时长 2000~60000
}
type CaptureRemoteRuleGet struct {
Hikvision
Data CaptureRemoteRule `json:"data"`
}
type CaptureRemoteIDCardGet struct {
Hikvision
Data struct {
ChnName string `json:"chnName"`
EnName string `json:"enName"`
Gender string `json:"gender"`
Birth string `json:"birth"`
Addr string `json:"addr"`
IdcardNo string `json:"idcardNo"`
IssuingAuthority string `json:"issuingAuthority"`
StartDate string `json:"startDate"`
EndDate string `json:"endDate"`
Nation int `json:"nation"`
PassNo string `json:"passNo"`
IssueNumber string `json:"issueNumber"`
CertificateType string `json:"certificateType"`
PermanentResidenceCardNo string `json:"permanentResidenceCardNo"`
NationalityOrAreaCode string `json:"nationalityOrAreaCode"`
Version string `json:"version"`
ReceivingAuthorityCode string `json:"receivingAuthorityCode"`
FaceData string `json:"faceData"`
Fingerprints []string `json:"fingerprints"`
} `json:"data"`
}
type CaptureRemoteCardGet struct {
Hikvision
Data struct {
CardNo string `json:"cardNo"`
CardType string `json:"cardType"`
} `json:"data"`
}
type CaptureRemoteFingerPrintGet struct {
Hikvision
Data struct {
FingerprintNo int `json:"fingerprintNo"`
FingerprintData string `json:"fingerprintData"`
FingerprintQuality int `json:"fingerprintQuality"`
} `json:"data"`
}
type CaptureRemoteFaceGet struct {
Hikvision
Data struct {
Progress int `json:"progress"`
FaceUrl string `json:"faceUrl"`
InfraredUrl string `json:"infraredUrl"`
} `json:"data"`
}

View File

@ -7,26 +7,55 @@ import (
)
func TestOauth(t *testing.T) {
// r0, err := VoiceTalkSet()
deviceserial := "AF8534579"
// r0, err := CaptureRemoteRuleSet(deviceserial, true, 0, 50000)
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r0)
r1, err := VoiceTalkInform("2023-11-23T08:00:00+08:00", 1, 101, 2, "request", 3, "outdoor", "AF8534579", 1, 3)
if err != nil {
log.Fatal(err)
return
}
fmt.Println(r1)
// r1, err := CaptureRemoteRuleGet(deviceserial)
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r1)
// r2, err := VoiceTalkGet()
// r2, err := CaptureRemoteIDCardGet(deviceserial)
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r2)
// r3, err := CaptureRemoteCardGet(deviceserial)
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r3)
// r4, err := CaptureRemoteFingerPrintGet(deviceserial, 1)
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r4)
r5, err := CaptureRemoteFaceGet(deviceserial, false)
if err != nil {
log.Fatal(err)
return
}
fmt.Println(r5)
r6, err := CaptureRemoteFaceProcessGet(deviceserial)
if err != nil {
log.Fatal(err)
return
}
fmt.Println(r6)
}
/*
@ -121,3 +150,26 @@ func TestOauth(t *testing.T) {
// }
// fmt.Println(r8)
*/
/*
// r0, err := VoiceTalkSet()
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r0)
// r1, err := VoiceTalkInform("2023-11-23T08:00:00+08:00", 1, 101, 2, "request", 3, "outdoor", "AF8534579", 1, 3)
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r1)
// r2, err := VoiceTalkGet()
// if err != nil {
// log.Fatal(err)
// return
// }
// fmt.Println(r2)
*/