// Package ws // @Author 铁憨憨[cory] 2025/2/12 15:20:00 package ws import "github.com/gorilla/websocket" /* ============================================常量============================================ ============================================常量============================================ ============================================常量============================================ */ const ( DECLARE = "declare" //设备初上线 PING = "ping" //心跳 ToClient = "to_client" // 服务器消息下发到客户端的响应 ) /* ============================================公共============================================ ============================================公共============================================ ============================================公共============================================ */ // DeviceInfo 存储连接设备信息 type DeviceInfo struct { IP string `json:"ip"` Port string `json:"port"` Conn *websocket.Conn `json:"conn"` } // GenericMessage 通用消息结构,用于解析初始的 cmd 字段 type GenericMessage struct { CMD string `json:"cmd"` } // CommonResponse 公共响应结构 type CommonResponse struct { Cmd string `json:"cmd"` From string `json:"from"` To string `json:"to"` //Extra string `json:"extra"` Data CommonResponseData `json:"data"` } type CommonResponseData struct { Cmd string `json:"cmd"` UserIds []string `json:"userIds" dc:"用户IDS"` UserID string `json:"user_id"` Code int `json:"code"` Msg string `json:"msg"` DelFailed []DelMultiUserData `json:"delFailed"` } type DelMultiUserData struct { UserID string `json:"user_id"` Code int `json:"code"` Msg string `json:"msg"` } /* ============================================基础============================================ ============================================基础============================================ ============================================基础============================================ */ // DeclareMessage 设备上线消息 type DeclareMessage struct { Cmd string `json:"cmd"` Type string `json:"type"` SN string `json:"sn"` VersionCode string `json:"version_code"` VersionName string `json:"version_name"` Token string `json:"token"` Ip string `json:"ip"` Timestamp float64 `json:"timestamp"` } type PongMessage struct { Cmd string `json:"cmd"` From string `json:"from"` To string `json:"to"` Data PongMessageData `json:"data"` } // PongMessageData 心跳回复消息结构 type PongMessageData struct { Cmd string `json:"cmd"` } /* ============================================ws请求============================================ ============================================ws请求============================================ ============================================ws请求============================================ */ // PeopleInformation 人员信息下发 type PeopleInformation struct { Cmd string `json:"cmd"` //该接口固定为to_device From string `json:"from"` //可不填写,填写uuid来做为发送请求或响应的标识 To string `json:"to"` //设备号(请查看公共设置中的设备号) //Extra string `json:"extra"` //给服务端预留的补充字段,设备端不处理这个字段内容。设备在响应这条指令时原样返回 Data PeopleInData `json:"data"` } type PeopleInData struct { Cmd string `json:"cmd"` UserID string `json:"user_id"` Name string `json:"name"` FaceTemplate string `json:"face_template"` // http 链接图 IDValid string `json:"id_valid"` // 人员有效期(人员在这个时间点后,无法通行)格式:yyyy-MM-dd 或者 yyyy-MM-dd HH:mm,为 “” 则为永久 } // DeletionOfPersonnel 删除人员 type DeletionOfPersonnel struct { Cmd string `json:"cmd"` From string `json:"from"` To string `json:"to"` Data DeletionOfPersonnelData `json:"data"` } type DeletionOfPersonnelData struct { Cmd string `json:"cmd"` UserID string `json:"user_id"` UserType int `json:"user_type"` // 删除的用户类型:0-人脸接口下发的数据 1-人证比对接口下发的数据 } // BatchDeletion 批量删除 type BatchDeletion struct { Cmd string `json:"cmd"` From string `json:"from"` To string `json:"to"` Data BatchDeletionData `json:"data"` } type BatchDeletionData struct { Cmd string `json:"cmd"` UserIds []string `json:"user_ids"` UserType int `json:"user_type"` // 删除的用户类型:0-人脸接口下发的数据 1-人证比对接口下发的数据 } // DeletionALlOfPersonnel 删除全部人员 type DeletionALlOfPersonnel struct { Cmd string `json:"cmd"` From string `json:"from"` To string `json:"to"` Data DeletionALlOfPersonnelData `json:"data"` } type DeletionALlOfPersonnelData struct { Cmd string `json:"cmd"` UserType int `json:"user_type"` // 删除的用户类型:0-人脸接口下发的数据 1-人证比对接口下发的数据 } // PersonnelInformationAcquisition 人员信息获取 type PersonnelInformationAcquisition struct { Cmd string `json:"cmd"` //该接口固定为to_device From string `json:"from"` //可不填写,填写uuid来做为发送请求或响应的标识 To string `json:"to"` //设备号(请查看公共设置中的设备号) Data PersonnelInformationAcquisitionTwo `json:"data"` } type PersonnelInformationAcquisitionTwo struct { Cmd string `json:"cmd"` Value int `json:"value"` } /* ============================================http请求============================================ ============================================http请求============================================ ============================================http请求============================================ */ //loggerMiddlewareloggerMiddlewareloggerMiddleware