This commit is contained in:
@@ -46,6 +46,33 @@ func (i *FlexInt) UnmarshalJSON(data []byte) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// FlexString 灵活字符串类型
|
||||
// Gateway 部分字段会在 string / number / bool 之间漂移,此类型统一转为字符串避免解析失败。
|
||||
type FlexString string
|
||||
|
||||
// UnmarshalJSON 实现 json.Unmarshaler 接口
|
||||
// 支持:"text", 123, true, null
|
||||
func (s *FlexString) UnmarshalJSON(data []byte) error {
|
||||
raw := strings.TrimSpace(string(data))
|
||||
if raw == "" || raw == "null" {
|
||||
*s = ""
|
||||
return nil
|
||||
}
|
||||
|
||||
// 标准 JSON 字符串,优先做反转义,保持原始内容语义
|
||||
if strings.HasPrefix(raw, "\"") && strings.HasSuffix(raw, "\"") {
|
||||
unquoted, err := strconv.Unquote(raw)
|
||||
if err == nil {
|
||||
*s = FlexString(unquoted)
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// number/bool/object/array 等类型直接保留原始文本
|
||||
*s = FlexString(raw)
|
||||
return nil
|
||||
}
|
||||
|
||||
// GatewayResponse 是 Gateway API 的通用响应结构
|
||||
type GatewayResponse struct {
|
||||
Code int `json:"code" description:"业务状态码(200 = 成功)"`
|
||||
@@ -191,23 +218,23 @@ type SyncDeviceInfoReq struct {
|
||||
// SyncDeviceInfoResp sync-info 同步查询设备信息响应(对应 Gateway data 字段)
|
||||
// 注意:所有字段均可能为 null/零值,表示暂无数据
|
||||
type SyncDeviceInfoResp struct {
|
||||
DeviceID string `json:"device_id" description:"设备ID(IMEI/SN)"`
|
||||
DeviceName string `json:"device_name" description:"设备名称"`
|
||||
IMEI string `json:"imei" description:"IMEI号"`
|
||||
CurrentIccid string `json:"current_iccid" description:"当前使用的ICCID"`
|
||||
DeviceType string `json:"device_type" description:"设备类型:1=诺行,2=玺龙,3=迎势达"`
|
||||
SoftwareVersion string `json:"software_version" description:"软件版本号"`
|
||||
MacAddress string `json:"mac_address" description:"MAC地址"`
|
||||
SSID string `json:"ssid" description:"WiFi热点名称"`
|
||||
WifiEnabled FlexBool `json:"wifi_enabled" description:"WiFi开关状态"`
|
||||
SwitchMode string `json:"switch_mode" description:"切卡模式:0=自动,1=手动"`
|
||||
RSSI string `json:"rssi" description:"接收信号强度"`
|
||||
BatteryLevel *FlexInt `json:"battery_level" description:"电池电量百分比(无电池时为null)"`
|
||||
OnlineStatus FlexInt `json:"online_status" description:"在线状态:1=在线,2=离线"`
|
||||
LastUpdateTime string `json:"last_update_time" description:"设备信息最后更新时间(ISO 8601)"`
|
||||
LastOnlineTime string `json:"last_online_time" description:"设备最后在线时间(ISO 8601)"`
|
||||
RunTime string `json:"run_time" description:"本次开机运行时间(秒)"`
|
||||
DailyUsage string `json:"daily_usage" description:"日使用流量(字节)"`
|
||||
DeviceID FlexString `json:"device_id" description:"设备ID(IMEI/SN)"`
|
||||
DeviceName FlexString `json:"device_name" description:"设备名称"`
|
||||
IMEI FlexString `json:"imei" description:"IMEI号"`
|
||||
CurrentIccid FlexString `json:"current_iccid" description:"当前使用的ICCID"`
|
||||
DeviceType FlexString `json:"device_type" description:"设备类型:1=诺行,2=玺龙,3=迎势达"`
|
||||
SoftwareVersion FlexString `json:"software_version" description:"软件版本号"`
|
||||
MacAddress FlexString `json:"mac_address" description:"MAC地址"`
|
||||
SSID FlexString `json:"ssid" description:"WiFi热点名称"`
|
||||
WifiEnabled FlexBool `json:"wifi_enabled" description:"WiFi开关状态"`
|
||||
SwitchMode FlexString `json:"switch_mode" description:"切卡模式:0=自动,1=手动"`
|
||||
RSSI FlexString `json:"rssi" description:"接收信号强度"`
|
||||
BatteryLevel *FlexInt `json:"battery_level" description:"电池电量百分比(无电池时为null)"`
|
||||
OnlineStatus FlexInt `json:"online_status" description:"在线状态:1=在线,2=离线"`
|
||||
LastUpdateTime FlexString `json:"last_update_time" description:"设备信息最后更新时间(ISO 8601 或 Unix 时间戳)"`
|
||||
LastOnlineTime FlexString `json:"last_online_time" description:"设备最后在线时间(ISO 8601 或 Unix 时间戳)"`
|
||||
RunTime FlexString `json:"run_time" description:"本次开机运行时间(秒)"`
|
||||
DailyUsage FlexString `json:"daily_usage" description:"日使用流量(字节)"`
|
||||
|
||||
// 信号相关(D-10 补全)
|
||||
Rsrp FlexInt `json:"rsrp" description:"参考信号接收功率(dBm)"`
|
||||
@@ -215,23 +242,23 @@ type SyncDeviceInfoResp struct {
|
||||
Sinr FlexInt `json:"sinr" description:"信噪比(dB)"`
|
||||
|
||||
// WiFi 相关(D-10 补全)
|
||||
WifiPassword string `json:"wifi_password" description:"WiFi密码"`
|
||||
WifiPassword FlexString `json:"wifi_password" description:"WiFi密码"`
|
||||
|
||||
// 网络相关(D-10 补全)
|
||||
IPAddress string `json:"ip_address" description:"IP地址"`
|
||||
WANIP string `json:"wan_ip" description:"基站分配IPv4地址"`
|
||||
LANIP string `json:"lan_ip" description:"局域网网关IP地址"`
|
||||
IPAddress FlexString `json:"ip_address" description:"IP地址"`
|
||||
WANIP FlexString `json:"wan_ip" description:"基站分配IPv4地址"`
|
||||
LANIP FlexString `json:"lan_ip" description:"局域网网关IP地址"`
|
||||
|
||||
// 连接相关(D-10 补全)
|
||||
MaxClients FlexInt `json:"max_clients" description:"最大连接客户端数"`
|
||||
ClientNumber FlexInt `json:"client_number" description:"当前已连接客户端数"`
|
||||
ConnectTime string `json:"connect_time" description:"设备本次联网时间(秒)"`
|
||||
MaxClients FlexInt `json:"max_clients" description:"最大连接客户端数"`
|
||||
ClientNumber FlexInt `json:"client_number" description:"当前已连接客户端数"`
|
||||
ConnectTime FlexString `json:"connect_time" description:"设备本次联网时间(秒)"`
|
||||
|
||||
// 设备属性(D-10 补全)
|
||||
Status FlexInt `json:"status" description:"设备状态:1=正常,0=禁用"`
|
||||
IMSI string `json:"imsi" description:"IMSI用户标识码"`
|
||||
ULStats string `json:"ul_stats" description:"本次开机上传流量(字节)"`
|
||||
DLStats string `json:"dl_stats" description:"本次开机下载流量(字节)"`
|
||||
LimitSpeed FlexInt `json:"limit_speed" description:"限速速率(KB/s)"`
|
||||
SyncInterval FlexInt `json:"sync_interval" description:"信息上报周期(秒)"`
|
||||
Status FlexInt `json:"status" description:"设备状态:1=正常,0=禁用"`
|
||||
IMSI FlexString `json:"imsi" description:"IMSI用户标识码"`
|
||||
ULStats FlexString `json:"ul_stats" description:"本次开机上传流量(字节)"`
|
||||
DLStats FlexString `json:"dl_stats" description:"本次开机下载流量(字节)"`
|
||||
LimitSpeed FlexInt `json:"limit_speed" description:"限速速率(KB/s)"`
|
||||
SyncInterval FlexInt `json:"sync_interval" description:"信息上报周期(秒)"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user