fonchain-fiee/pkg/service/account/turnstile.go
2025-02-19 14:24:15 +08:00

1835 lines
49 KiB
Go

package account
import (
"errors"
"fmt"
"github.com/fonchain_enterprise/fonchain-main/api/account"
"github.com/fonchain_enterprise/fonchain-main/pkg/cache"
"github.com/fonchain_enterprise/fonchain-main/pkg/config"
"github.com/fonchain_enterprise/fonchain-main/pkg/e"
"github.com/fonchain_enterprise/fonchain-main/pkg/model/request"
"github.com/fonchain_enterprise/fonchain-main/pkg/model/vo/turnstile"
"github.com/fonchain_enterprise/fonchain-main/pkg/service"
"github.com/fonchain_enterprise/fonchain-main/pkg/utils"
"github.com/gin-gonic/gin"
"github.com/go-redis/redis"
"github.com/google/uuid"
"strconv"
"strings"
"sync"
)
func DeviceNumToJobNums(data []*account.ClockUserDeviceBatch) map[string][]uint64 {
deviceNumToJobNums := make(map[string][]uint64)
for _, batch := range data {
if _, exists := deviceNumToJobNums[batch.DeviceNum]; exists {
deviceNumToJobNums[batch.DeviceNum] = append(deviceNumToJobNums[batch.DeviceNum], batch.UserId)
} else {
deviceNumToJobNums[batch.DeviceNum] = []uint64{batch.UserId}
}
}
return deviceNumToJobNums
}
func getUserInfo(c *gin.Context, userIDs []uint64) (*account.ListResponse, error) {
idsRequest := account.ListByIDsRequest{IDs: userIDs}
userInfo, err := service.AccountProvider.ListByIDs(c, &idsRequest)
if err != nil {
return nil, err
}
for _, i := range userInfo.Data {
if i.NickName == "" || i.RecentImg == "" {
return nil, errors.New("请完善员工信息")
}
}
return userInfo, nil
}
func SelectTheUserToBeDelivered(device *account.ClockDeviceListResponse, userInfo *account.ListResponse) (*account.ClockBatchListResponse, []turnstile.DeviceUserData) {
nonMatchingData := account.ClockBatchListResponse{Data: []*account.ClockUserDeviceBatch{}}
dataSet := make([]turnstile.DeviceUserData, 0, len(device.Data))
deviceInfoMap := make(map[uint64]*account.ClockDeviceInfo)
// 创建设备信息的映射
for _, info := range device.Data {
deviceInfoMap[info.Id] = info
}
// 遍历用户信息
for _, user := range userInfo.Data {
// 创建一个 map 以存储用户已匹配的设备
userMatchedDevices := make(map[uint64]bool)
// 遍历用户已经匹配的设备并记录在 userMatchedDevices 中
for _, clock := range user.Clocks {
if deviceInfo, exists := deviceInfoMap[clock.DeviceID]; exists {
userMatchedDevices[deviceInfo.Id] = true
}
}
// 遍历所有设备,查找未匹配的设备并添加到结果中
for _, deviceInfo := range deviceInfoMap {
if !userMatchedDevices[deviceInfo.Id] {
data := &account.ClockUserDeviceBatch{
UserId: user.ID,
DeviceId: deviceInfo.Id,
DeviceNum: deviceInfo.DeviceNum,
DeviceName: deviceInfo.DeviceName,
}
nonMatchingData.Data = append(nonMatchingData.Data, data)
// 构造 DeviceUserData 并添加到 dataSet 中
userData := turnstile.DeviceUserData{
JobNum: user.ID,
RecentImg: user.RecentImg,
DeviceNum: deviceInfo.DeviceNum,
NickName: user.NickName,
Phone: user.TelNum,
DeviceName: deviceInfo.DeviceName,
IcNum: user.ICNum,
}
dataSet = append(dataSet, userData)
}
}
}
return &nonMatchingData, dataSet
}
func CheckDeviceIsOnline(dataSet map[string]string) string {
offlineMap := make(map[string]bool)
var redisClient *redis.Client
if config.IsOut == true && config.Env == "prod" {
redisClient = utils.GetNewRedisClient()
} else {
redisClient = cache.RedisClient
}
for deviceNum, deviceName := range dataSet {
deviceRes, _ := redisClient.Get(cache.GetPushDeviceSnInfo(deviceNum)).Result()
if deviceRes == "" {
offlineMap[deviceName] = true
}
}
// 如果有离线设备,返回错误消息
if len(offlineMap) != 0 {
offlineDevices := make([]string, 0, len(offlineMap))
for deviceName := range offlineMap {
offlineDevices = append(offlineDevices, deviceName)
}
errorMessage := fmt.Sprintf("以下设备已离线: %v", strings.Join(offlineDevices, ", "))
return errorMessage
}
return ""
}
func ConcurrentUpdateDeviceUser(ctx *gin.Context, dataSet []turnstile.DeviceUserData, concurrency int) error {
var wg sync.WaitGroup
errCh := make(chan error, len(dataSet))
// 创建一个带有缓冲的通道,以控制并发度
semaphore := make(chan struct{}, concurrency)
for _, data := range dataSet {
wg.Add(1)
semaphore <- struct{}{} // 获取信号量,限制并发度
go func(data turnstile.DeviceUserData) {
defer wg.Done()
err := UpdateDeviceUser(ctx, data)
if err != nil {
errCh <- err
}
<-semaphore // 释放信号量
}(data)
}
go func() {
wg.Wait()
close(errCh)
}()
var errors []error
for err := range errCh {
errors = append(errors, err)
}
if len(errors) > 0 {
return fmt.Errorf("更新设备用户时发生错误: %v", errors)
}
return nil
}
// UpdateDeviceUser 绑定打卡机
func UpdateDeviceUser(_ *gin.Context, data turnstile.DeviceUserData) (err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
Extra: uuidObj.String(),
To: data.DeviceNum,
Data: turnstile.TurnData{
Cmd: e.AddUser,
UserId: strconv.FormatUint(data.JobNum, 10),
Name: data.NickName,
FaceTemplate: data.RecentImg,
TtsName: data.NickName,
Phone: data.Phone,
VlfaceTemplate: "",
IdValid: "",
Ic: data.IcNum,
},
}
err, _ = utils.IssueTheCardPunchData(synReq, data.DeviceNum, uuidObj)
if err != nil {
return errors.New("下发数据失败")
}
return err
}
// DelSingleDeviceAccount 单人解绑打卡机
func DelSingleDeviceAccount(_ *gin.Context, deviceNum string, jobNum uint64) (err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: deviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.DelUser,
UserId: strconv.FormatUint(jobNum, 10),
},
}
err, _ = utils.IssueTheCardPunchData(synReq, deviceNum, uuidObj)
if err != nil {
return errors.New("下发数据失败")
}
return err
}
// DelBatchDeviceAccount 批量解绑打卡机
func DelBatchDeviceAccount(req map[string][]uint64) (err error) {
for deviceNum, jobNums := range req {
uuidObj := uuid.New()
stringSlice := make([]string, len(jobNums))
for i, num := range jobNums {
stringSlice[i] = strconv.FormatUint(num, 10)
}
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: deviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.DelMultiUser,
UserIds: stringSlice,
UserType: 0,
},
}
err, _ = utils.IssueTheCardPunchData(synReq, deviceNum, uuidObj)
if err != nil {
return errors.New("下发数据失败")
}
}
return err
}
// SnapPhotosOfTheScene 抓拍现场照片
func SnapPhotosOfTheScene(_ *gin.Context, deviceNum string) (image string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: deviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.OnlineAuthorization,
},
}
err, s := utils.IssueTheCardPunchData(synReq, deviceNum, uuidObj)
if err != nil {
return "", errors.New("下发数据失败")
}
return s.Data.VlFaceTemplate, err
}
// CheckPictureQuality 检测图片质量
func CheckPictureQuality(_ *gin.Context, deviceNum string, faceImage string) (data turnstile.WebsocketDeviceData, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: deviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.VerifyPhoto,
FaceTemplate: faceImage,
},
}
err, s := utils.IssueTheCardPunchData(synReq, deviceNum, uuidObj)
if err != nil {
return data, errors.New("下发数据失败")
}
return s.Data, err
}
// GeneralRuleIssuance 通行规则下发
func GeneralRuleIssuance(_ *gin.Context, req turnstile.RuleIssuance) (err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.AddPassRule,
Rule: req.Data.Rule,
},
}
err, _ = utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return errors.New("下发数据失败")
}
return err
}
// AccessRule 获取通行规则
func AccessRule(_ *gin.Context, req turnstile.RuleIssuance) (image []turnstile.Rule, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.GetPassRule,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return nil, errors.New("下发数据失败")
}
return s.Data.Rule, err
}
// DeleteRule 删除通行规则
func DeleteRule(_ *gin.Context, req request.DeleteRule) (err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.DelPassRule,
RuleIds: req.RuleIds,
IsDeleteAll: req.IsDeleteAll,
},
}
err, _ = utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return errors.New("下发数据失败")
}
return err
}
// PasswordSwitch 设置密码开门开关
func PasswordSwitch(_ *gin.Context, req request.DeviceReq) (err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetPasswordVerify,
Value: req.Switch,
},
}
err, _ = utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return errors.New("下发数据失败")
}
return err
}
// PasswordSet 设置设备开门密码
func PasswordSet(_ *gin.Context, req request.DeviceReq) (err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetOpenDoorPassword,
Value: req.Value,
},
}
err, _ = utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return errors.New("下发数据失败")
}
return err
}
// PersonSync 通知设备同步人员数据
func PersonSync(_ *gin.Context, req request.DeviceReq) (err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.UploadFaceInfo,
},
}
err, _ = utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return errors.New("下发数据失败")
}
return err
}
// PersonTotal 查询设备人员数量和id
func PersonTotal(_ *gin.Context, req request.DeviceReq) (res turnstile.WebsocketDeviceRes, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.GetUserInfo,
Value: req.Value,
},
}
err, res = utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return res, errors.New("下发数据失败")
}
return res, err
}
// PersonInfo 根据userid读取用户数据
func PersonInfo(_ *gin.Context, req request.DeviceReq) (res turnstile.UserDetails, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.GetUserDetails,
UserId: req.UserId,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Details, errors.New("下发数据失败")
}
return s.Data.Details, err
}
// SetAcquire 获取设备设置
func SetAcquire(_ *gin.Context, req request.DeviceReq) (res turnstile.Settings, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.GetDeviceSettings,
Settings: req.Settings,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Settings, errors.New("下发数据失败")
}
return s.Data.Settings, err
}
// SetLogo 设置设备logo
func SetLogo(_ *gin.Context, req request.DeviceReq) (res turnstile.Settings, err error) {
uuidObj := uuid.New()
turnData := turnstile.TurnData{}
if req.Type == 0 {
turnData = turnstile.TurnData{
Cmd: e.CustomHomeLogo,
Type: req.Type,
}
} else {
turnData = turnstile.TurnData{
Cmd: e.CustomHomeLogo,
Type: req.Type,
Text: req.Text,
Image: req.Image,
}
}
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnData,
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Settings, errors.New("下发数据失败")
}
return s.Data.Settings, err
}
// SetSlogan 设置广告语
func SetSlogan(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.AetAd,
Advertising: req.Advertising,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, err
}
func SetTime(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetTime,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetDoor(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetDoor,
Value: req.Value,
UserId: req.UserId,
Type: req.Type,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetInterval(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetRecognitionInterval,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetDistance(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetRecognitionDistance,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetMask(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetMaskDetection,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetLiving(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetLivenessDetection,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetLivingClass(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetLivenessLevel,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetStranger(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetStrangerRecognition,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetVolume(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetVolume,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetUsername(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetPlayUserName,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetHint(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetVoice,
Type: req.Type,
VoiceCode: req.VoiceCode,
VoiceText: req.VoiceText,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetPassword(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetPassword,
OldPassword: req.OldPassword,
NewPassword: req.NewPassword,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetRestart(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.Reboot,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetRelay(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetRelayState,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetCapture(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetRecordPictureQuality,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetCallout(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetVisitorCallStatus,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetPrinter(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetPrinterStatus,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetVisitor(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetVisitorApplyValue,
Value: req.Value,
Url: req.Url,
Photo: req.Photo,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetToken(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetHttpToken,
TokenKey: req.TokenKey,
TokenValue: req.TokenValue,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetVerify(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetVerifyTimeout,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetDelay(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetOpenDoorDelay,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetPressTime(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetAdminLongPressTime,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetDesensitization(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetDesensitizationName,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetSection(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetReadCardInfo,
Value: req.Value,
Sector: req.Sector,
Block: req.Block,
Password: req.Password,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
func SetRail(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetGeofence,
Latitude: req.Latitude,
Longitude: req.Longitude,
Radius: req.Radius,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// ScreensaverState 设备节能屏保开关
func ScreensaverState(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetScreensaverState,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// Screensaver 设置设备屏保
func Screensaver(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.AddCarousePicture,
ID: req.ID,
Value: req.Value,
Duration: req.Duration,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// DelScreensaver 删除屏保
func DelScreensaver(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.DelCarouselPic,
IsDeleteAll: req.IsDeleteAll,
ID: req.ID,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// ScreensaverInterval 设置屏保显示时长
func ScreensaverInterval(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetScreensaverInterval,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// TemperatureDetection 体温检测开关
func TemperatureDetection(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetTemperatureDetection,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// TemperatureMode 体温检测模式
func TemperatureMode(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetTemperatureMode,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// TemperatureStandard 初筛模式标准
func TemperatureStandard(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetPreliminaryScreeningStandard,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// TemperatureCalibration 设置体温校准模式
func TemperatureCalibration(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetTemperatureCalibrationMode,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// TemperatureLowPass 低温可通行开关
func TemperatureLowPass(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetLowTemperaturePass,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// TemperaturePlay 播报体温开关
func TemperaturePlay(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetPlayTemperature,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// TemperatureReflectivity 设置体温反射率
func TemperatureReflectivity(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetReflectivity,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// TemperatureCorrection 设置体温校准值
func TemperatureCorrection(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetTemperatureCorrection,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// TemperatureDistance 设置设备体温检测距离
func TemperatureDistance(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetTemperatureDetectDistance,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// TemperatureMeasure 设置测温时间段
func TemperatureMeasure(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetMeasureTemperatureTime,
Value: req.Value,
Time: req.Time,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// VersionAuto 开机自动更新
func VersionAuto(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetAutoUpdate,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// VersionInfo 获取设备版本信息
func VersionInfo(_ *gin.Context, req request.DeviceReq) (res turnstile.WebsocketDeviceData, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.GetVersionInfo,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data, errors.New("下发数据失败")
}
return s.Data, nil
}
// VersionPush 发送设备版本信息给服务端
func VersionPush(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.PushVersionInfo,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// VersionCheck 通知设备在线检查更新
func VersionCheck(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.CheckForUpdates,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// ApplyValue 设置设备首页二维码
func ApplyValue(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetVisitorApplyValue,
Value: req.Value,
Url: req.Url,
Photo: req.Photo,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// ApplyPrefix 设置访客二维码前缀
func ApplyPrefix(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetVisitorQRCodePrefix,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// CameraPanoramic 全景相机开关
func CameraPanoramic(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetPanoramicCamera,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// CameraParams 设置全景相机的参数
func CameraParams(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetPanoramicCameraParams,
IP: req.IP,
Port: req.Port,
Username: req.Username,
Password: req.Password,
Channel: req.Channel,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// RecognitionStyle 识别结果样式
func RecognitionStyle(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetRecognitionResultStyle,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// OnlineVerify 识别后在线验证
func OnlineVerify(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetOnlineVerifyAfterRecognition,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// OnlineCard 在线验证卡号
func OnlineCard(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetOnlineVerifyCard,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// OnlineIdCard 在线验证身份证号
func OnlineIdCard(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetOnlineVerifyIdCard,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// Online 设置在线识别间隔
func Online(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetOnlineRecognitionInterval,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// OnlineState 在线识别开关
func OnlineState(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetOnlineRecognitionState,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// OnlineTemporary 临时启用在线识别
func OnlineTemporary(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetOnlineRecognition,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// DiscernSettings 设置可通行人员类型
func DiscernSettings(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetPassType,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// DiscernClass 设置设备识别置信度
func DiscernClass(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetRecognitionLevel,
Value: req.Value,
IrisValue: req.IrisValue,
FusionValue: req.FusionValue,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// ForbiddenSwitch 开启/关闭设备识别
func ForbiddenSwitch(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetSwitch,
Value: req.Value,
OffTime: req.OffTime,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// ForbiddenNumber 停用状态通行人数
func ForbiddenNumber(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetDisablePass,
Value: req.Value,
Duration: req.Duration,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// AdvertisingAdd 下发广告 - 图片
func AdvertisingAdd(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.AddImageAd,
Value: req.Value,
ID: req.ID,
Duration: req.Duration,
Priority: req.Priority,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// AdvertisingDel 删除广告
func AdvertisingDel(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.DelAd,
IsDelAll: req.IsDeleteAll,
ID: req.ID,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// AdvertisingChange 启用停用广告
func AdvertisingChange(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.ChangeADStatus,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}
// DoorLock 获取(上报)门锁状态
func DoorLock(_ *gin.Context, req request.DeviceReq) (res int, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.GetDoorLockState,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Value, errors.New("下发数据失败")
}
return s.Data.Value, nil
}
// DoorListener 设置门锁实时监听开关
func DoorListener(_ *gin.Context, req request.DeviceReq) (res string, err error) {
uuidObj := uuid.New()
fmt.Println(uuidObj.String())
synReq := turnstile.TurnStile{
Cmd: "to_device",
From: "Message1",
To: req.DeviceNum,
Extra: uuidObj.String(),
Data: turnstile.TurnData{
Cmd: e.SetDoorLockListener,
Value: req.Value,
},
}
err, s := utils.IssueTheCardPunchData(synReq, req.DeviceNum, uuidObj)
if err != nil {
return s.Data.Msg, errors.New("下发数据失败")
}
return s.Data.Msg, nil
}