feat(03.1-01): 补全 Gateway SyncDeviceInfoResp 缺失字段及 B 端 DeviceGatewayInfo DTO
- SyncDeviceInfoResp 新增 Rsrp/Rsrq/Sinr/WifiPassword/IPAddress/WANIP/LANIP/MaxClients/ConnectTime/Status/IMSI/ULStats/DLStats/LimitSpeed/SyncInterval 共 15 个字段 - asset_dto.go 新增 DeviceGatewayInfo B 端实时状态结构体(49 字段,全部含 description tag) - AssetRealtimeStatusResponse 新增 DeviceRealtime *DeviceGatewayInfo 字段 - AssetResolveResponse 新增 5 个设备 DB 缓存字段(online_status/last_online_time/software_version/switch_mode/last_gateway_sync_at)
This commit is contained in:
@@ -158,4 +158,29 @@ type SyncDeviceInfoResp struct {
|
||||
LastOnlineTime string `json:"last_online_time" description:"设备最后在线时间(ISO 8601)"`
|
||||
RunTime string `json:"run_time" description:"本次开机运行时间(秒)"`
|
||||
DailyUsage string `json:"daily_usage" description:"日使用流量(字节)"`
|
||||
|
||||
// 信号相关(D-10 补全)
|
||||
Rsrp int `json:"rsrp" description:"参考信号接收功率(dBm)"`
|
||||
Rsrq int `json:"rsrq" description:"参考信号接收质量(dB)"`
|
||||
Sinr int `json:"sinr" description:"信噪比(dB)"`
|
||||
|
||||
// WiFi 相关(D-10 补全)
|
||||
WifiPassword string `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地址"`
|
||||
|
||||
// 连接相关(D-10 补全)
|
||||
MaxClients int `json:"max_clients" description:"最大连接客户端数"`
|
||||
ConnectTime string `json:"connect_time" description:"设备本次联网时间(秒)"`
|
||||
|
||||
// 设备属性(D-10 补全)
|
||||
Status int `json:"status" description:"设备状态:1=正常,0=禁用"`
|
||||
IMSI string `json:"imsi" description:"IMSI用户标识码"`
|
||||
ULStats string `json:"ul_stats" description:"本次开机上传流量(字节)"`
|
||||
DLStats string `json:"dl_stats" description:"本次开机下载流量(字节)"`
|
||||
LimitSpeed int `json:"limit_speed" description:"限速速率(KB/s)"`
|
||||
SyncInterval int `json:"sync_interval" description:"信息上报周期(秒)"`
|
||||
}
|
||||
|
||||
@@ -40,6 +40,12 @@ type AssetResolveResponse struct {
|
||||
DeviceType string `json:"device_type,omitempty" description:"设备类型"`
|
||||
MaxSimSlots int `json:"max_sim_slots,omitempty" description:"最大插槽数"`
|
||||
Manufacturer string `json:"manufacturer,omitempty" description:"制造商"`
|
||||
// 设备 DB 缓存字段(Phase 3 sync-info 写入,展示上次同步快照)
|
||||
OnlineStatus int `json:"online_status,omitempty" description:"在线状态:0未知 1在线 2离线(设备类型时有效)"`
|
||||
LastOnlineTime *time.Time `json:"last_online_time,omitempty" description:"最后在线时间(设备类型时有效)"`
|
||||
SoftwareVersion string `json:"software_version,omitempty" description:"固件版本号(设备类型时有效)"`
|
||||
SwitchMode string `json:"switch_mode,omitempty" description:"切卡模式:0=自动,1=手动(设备类型时有效)"`
|
||||
LastGatewaySyncAt *time.Time `json:"last_gateway_sync_at,omitempty" description:"最后 sync-info 同步时间(设备类型时有效)"`
|
||||
// 卡专属字段(device类型时为零值)
|
||||
CarrierID uint `json:"carrier_id,omitempty" description:"运营商ID"`
|
||||
CarrierType string `json:"carrier_type,omitempty" description:"运营商类型"`
|
||||
@@ -66,14 +72,15 @@ type BoundCardInfo struct {
|
||||
|
||||
// AssetRealtimeStatusResponse 资产实时状态(只读DB/Redis)
|
||||
type AssetRealtimeStatusResponse struct {
|
||||
AssetType string `json:"asset_type" description:"资产类型:card 或 device"`
|
||||
AssetID uint `json:"asset_id" description:"资产ID"`
|
||||
NetworkStatus int `json:"network_status,omitempty" description:"网络状态(asset_type=card时有效):0停机 1开机"`
|
||||
RealNameStatus int `json:"real_name_status,omitempty" description:"实名状态(asset_type=card时有效):0未实名 1已实名"`
|
||||
CurrentMonthUsageMB float64 `json:"current_month_usage_mb,omitempty" description:"本月已用流量MB(asset_type=card时有效)"`
|
||||
LastSyncTime *time.Time `json:"last_sync_time,omitempty" description:"最后同步时间(asset_type=card时有效)"`
|
||||
DeviceProtectStatus string `json:"device_protect_status,omitempty" description:"保护期状态(asset_type=device时有效):none/stop/start"`
|
||||
Cards []BoundCardInfo `json:"cards,omitempty" description:"绑定卡状态列表(asset_type=device时有效)"`
|
||||
AssetType string `json:"asset_type" description:"资产类型:card 或 device"`
|
||||
AssetID uint `json:"asset_id" description:"资产ID"`
|
||||
NetworkStatus int `json:"network_status,omitempty" description:"网络状态(asset_type=card时有效):0停机 1开机"`
|
||||
RealNameStatus int `json:"real_name_status,omitempty" description:"实名状态(asset_type=card时有效):0未实名 1已实名"`
|
||||
CurrentMonthUsageMB float64 `json:"current_month_usage_mb,omitempty" description:"本月已用流量MB(asset_type=card时有效)"`
|
||||
LastSyncTime *time.Time `json:"last_sync_time,omitempty" description:"最后同步时间(asset_type=card时有效)"`
|
||||
DeviceProtectStatus string `json:"device_protect_status,omitempty" description:"保护期状态(asset_type=device时有效):none/stop/start"`
|
||||
Cards []BoundCardInfo `json:"cards,omitempty" description:"绑定卡状态列表(asset_type=device时有效)"`
|
||||
DeviceRealtime *DeviceGatewayInfo `json:"device_realtime,omitempty" description:"设备实时状态(来自 Gateway sync-info,Gateway 失败时为 null)"`
|
||||
}
|
||||
|
||||
// AssetPackageResponse 资产套餐信息
|
||||
@@ -134,3 +141,54 @@ type DeviceIDRequest struct {
|
||||
type CardICCIDRequest struct {
|
||||
ICCID string `path:"iccid" description:"卡ICCID" required:"true"`
|
||||
}
|
||||
|
||||
// DeviceGatewayInfo B端设备实时状态信息(来自 Gateway sync-info)
|
||||
// 与 C 端 DeviceRealtimeInfo 独立,未来可展示更多技术字段
|
||||
// 所有字段均为可选,Gateway 调用失败时整体为 null
|
||||
type DeviceGatewayInfo struct {
|
||||
// 设备状态
|
||||
OnlineStatus *int `json:"online_status,omitempty" description:"在线状态:1=在线,2=离线"`
|
||||
BatteryLevel *int `json:"battery_level,omitempty" description:"电池电量百分比(无电池时为null)"`
|
||||
Status *int `json:"status,omitempty" description:"设备状态:1=正常,0=禁用"`
|
||||
RunTime *string `json:"run_time,omitempty" description:"本次开机运行时间(秒)"`
|
||||
ConnectTime *string `json:"connect_time,omitempty" description:"本次联网时间(秒)"`
|
||||
LastOnlineTime *string `json:"last_online_time,omitempty" description:"设备最后在线时间"`
|
||||
LastUpdateTime *string `json:"last_update_time,omitempty" description:"设备信息最后更新时间"`
|
||||
|
||||
// 信号相关
|
||||
Rsrp *int `json:"rsrp,omitempty" description:"参考信号接收功率(dBm)"`
|
||||
Rsrq *int `json:"rsrq,omitempty" description:"参考信号接收质量(dB)"`
|
||||
Rssi *string `json:"rssi,omitempty" description:"接收信号强度"`
|
||||
Sinr *int `json:"sinr,omitempty" description:"信噪比(dB)"`
|
||||
|
||||
// WiFi 相关
|
||||
SSID *string `json:"ssid,omitempty" description:"WiFi热点名称"`
|
||||
WifiEnabled *bool `json:"wifi_enabled,omitempty" description:"WiFi开关状态"`
|
||||
WifiPassword *string `json:"wifi_password,omitempty" description:"WiFi密码"`
|
||||
|
||||
// 网络相关
|
||||
IPAddress *string `json:"ip_address,omitempty" description:"IP地址"`
|
||||
WANIP *string `json:"wan_ip,omitempty" description:"基站分配IPv4地址"`
|
||||
LANIP *string `json:"lan_ip,omitempty" description:"局域网网关IP地址"`
|
||||
MACAddress *string `json:"mac_address,omitempty" description:"MAC地址"`
|
||||
|
||||
// 流量与速率
|
||||
DailyUsage *string `json:"daily_usage,omitempty" description:"日使用流量(字节)"`
|
||||
DLStats *string `json:"dl_stats,omitempty" description:"本次开机下载流量(字节)"`
|
||||
ULStats *string `json:"ul_stats,omitempty" description:"本次开机上传流量(字节)"`
|
||||
LimitSpeed *int `json:"limit_speed,omitempty" description:"限速速率(KB/s)"`
|
||||
|
||||
// 设备属性
|
||||
CurrentIccid *string `json:"current_iccid,omitempty" description:"当前使用的ICCID"`
|
||||
MaxClients *int `json:"max_clients,omitempty" description:"最大连接客户端数"`
|
||||
SoftwareVersion *string `json:"software_version,omitempty" description:"软件版本号"`
|
||||
SwitchMode *string `json:"switch_mode,omitempty" description:"切卡模式:0=自动,1=手动"`
|
||||
SyncInterval *int `json:"sync_interval,omitempty" description:"信息上报周期(秒)"`
|
||||
|
||||
// Gateway 标识字段
|
||||
DeviceID *string `json:"device_id,omitempty" description:"Gateway设备ID(IMEI/SN)"`
|
||||
DeviceName *string `json:"device_name,omitempty" description:"Gateway返回的设备名称"`
|
||||
DeviceType *string `json:"device_type,omitempty" description:"Gateway返回的设备类型"`
|
||||
IMEI *string `json:"imei,omitempty" description:"IMEI号"`
|
||||
IMSI *string `json:"imsi,omitempty" description:"IMSI用户标识码"`
|
||||
}
|
||||
|
||||
@@ -35,7 +35,8 @@ func (s *Service) GetWallet(ctx context.Context, assetType string, assetID uint)
|
||||
wallet, err := s.assetWalletStore.GetByResourceTypeAndID(ctx, resourceType, assetID)
|
||||
if err != nil {
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
return nil, errors.New(errors.CodeNotFound, "该资产暂无钱包记录")
|
||||
// 暂无钱包记录属于正常业务状态(企业卡/未充值资产),返回 nil 而非错误
|
||||
return nil, nil
|
||||
}
|
||||
return nil, errors.Wrap(errors.CodeDatabaseError, err, "查询钱包失败")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user