package dto import "time" // ======================================== // B1 资产信息 // ======================================== // AssetInfoRequest B1 资产信息请求 type AssetInfoRequest struct { Identifier string `json:"identifier" query:"identifier" validate:"required,min=1,max=50" required:"true" minLength:"1" maxLength:"50" description:"资产标识符(SN/IMEI/虚拟号/ICCID/MSISDN)"` } // AssetInfoResponse B1 资产信息响应 // 根据 asset_type 不同,设备专属字段或卡专属字段会分别填充(另一侧为零值/omit) type AssetInfoResponse struct { // === 基础信息(通用) === AssetType string `json:"asset_type" description:"资产类型(card:卡, device:设备)"` AssetID uint `json:"asset_id" description:"资产ID"` Identifier string `json:"identifier" description:"资产标识符"` VirtualNo string `json:"virtual_no" description:"虚拟号"` Status int `json:"status" description:"状态(1:在库, 2:已分销, 3:已激活, 4:已停用)"` RealNameStatus int `json:"real_name_status" description:"实名状态(0:未实名, 1:已实名)"` CarrierName string `json:"carrier_name" description:"运营商名称"` Generation string `json:"generation" description:"世代"` WalletBalance int64 `json:"wallet_balance" description:"钱包余额(分)"` ActivatedAt *time.Time `json:"activated_at,omitempty" description:"激活时间"` // === 套餐信息(通用) === CurrentPackage string `json:"current_package" description:"当前套餐名称(无套餐时为空)"` PackageTotalMB int64 `json:"package_total_mb" description:"当前套餐总虚流量(MB),已按虚流量比例换算"` PackageUsedMB float64 `json:"package_used_mb" description:"当前已用虚流量(MB),已按虚流量比例换算"` PackageRemainMB float64 `json:"package_remain_mb" description:"当前剩余虚流量(MB),已按虚流量比例换算"` // === 设备专属字段(asset_type=device 时有效) === DeviceName string `json:"device_name,omitempty" description:"设备名称"` IMEI string `json:"imei,omitempty" description:"设备IMEI"` SN string `json:"sn,omitempty" description:"设备序列号"` DeviceModel string `json:"device_model,omitempty" description:"设备型号"` DeviceType string `json:"device_type,omitempty" description:"设备类型"` Manufacturer string `json:"manufacturer,omitempty" description:"制造商"` MaxSimSlots int `json:"max_sim_slots,omitempty" description:"最大插槽数"` BoundCardCount int `json:"bound_card_count,omitempty" description:"绑定卡数量"` Cards []BoundCardInfo `json:"cards,omitempty" description:"绑定卡列表(含每张卡的ICCID/MSISDN/网络状态/实名状态/插槽位置)"` DeviceProtectStatus string `json:"device_protect_status,omitempty" description:"设备保护期状态(none:无, stop:停机保护, start:开机保护)"` // === 卡专属字段(asset_type=card 时有效) === ICCID string `json:"iccid,omitempty" description:"卡ICCID"` MSISDN string `json:"msisdn,omitempty" description:"手机号"` CarrierID uint `json:"carrier_id,omitempty" description:"运营商ID"` CarrierType string `json:"carrier_type,omitempty" description:"运营商类型(CMCC/CUCC/CTCC/CBN)"` NetworkStatus int `json:"network_status,omitempty" description:"网络状态(0:停机, 1:开机)"` ActivationStatus int `json:"activation_status,omitempty" description:"激活状态(0:未激活, 1:已激活)"` CardCategory string `json:"card_category,omitempty" description:"卡业务类型(normal:普通卡, industry:行业卡)"` // === 卡绑定设备信息(asset_type=card 且绑定了设备时有效) === BoundDeviceID *uint `json:"bound_device_id,omitempty" description:"绑定的设备ID"` BoundDeviceNo string `json:"bound_device_no,omitempty" description:"绑定的设备虚拟号"` BoundDeviceName string `json:"bound_device_name,omitempty" description:"绑定的设备名称"` // === 设备实时状态(来自 Gateway,同步接口对接后自动填充,当前返回 null) === DeviceRealtime *DeviceRealtimeInfo `json:"device_realtime,omitempty" description:"设备实时状态(Gateway 同步接口对接后填充,当前为 null)"` } // DeviceRealtimeInfo 设备实时状态信息 // 全量映射 Gateway DeviceInfoDetail 结构,所有字段均为可选 // 当前 Gateway 同步接口尚未对接,预留结构待后续填充 type DeviceRealtimeInfo struct { // === 设备状态 === OnlineStatus *int64 `json:"online_status,omitempty" description:"在线状态(1:在线, 2:离线)"` BatteryLevel *int64 `json:"battery_level,omitempty" description:"电池电量百分比"` Status *int64 `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 *int64 `json:"rsrp,omitempty" description:"参考信号接收功率(dBm)"` Rsrq *int64 `json:"rsrq,omitempty" description:"参考信号接收质量(dB)"` Rssi *string `json:"rssi,omitempty" description:"接收信号强度"` Sinr *int64 `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 *int64 `json:"limit_speed,omitempty" description:"限速速率(KB/s)"` // === 设备属性 === CurrentIccid *string `json:"current_iccid,omitempty" description:"当前使用的ICCID"` MaxClients *int64 `json:"max_clients,omitempty" description:"最大连接客户端数"` SoftwareVersion *string `json:"software_version,omitempty" description:"软件版本号"` SwitchMode *int `json:"switch_mode,omitempty" description:"切卡模式(0:自动, 1:手动)"` SyncInterval *int64 `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:"Gateway返回的IMEI号"` Imsi *string `json:"imsi,omitempty" description:"Gateway返回的IMSI"` CreatedAt *int64 `json:"created_at,omitempty" description:"Gateway创建时间(Unix时间戳)"` UpdatedAt *int64 `json:"updated_at,omitempty" description:"Gateway更新时间(Unix时间戳)"` } // ======================================== // B2 资产可购套餐列表 // ======================================== // AssetPackageListRequest B2 资产可购套餐列表请求 type AssetPackageListRequest struct { Identifier string `json:"identifier" query:"identifier" validate:"required,min=1,max=50" required:"true" minLength:"1" maxLength:"50" description:"资产标识符(SN/IMEI/虚拟号/ICCID/MSISDN)"` } // ClientPackageItem B2 客户端套餐项 type ClientPackageItem struct { PackageID uint `json:"package_id" description:"套餐ID"` PackageName string `json:"package_name" description:"套餐名称"` PackageType string `json:"package_type" description:"套餐类型 (formal:正式套餐, addon:加油包)"` RetailPrice int64 `json:"retail_price" description:"零售价(分)"` CostPrice int64 `json:"cost_price" description:"成本价(分)"` ValidityDays int `json:"validity_days" description:"有效天数"` IsAddon bool `json:"is_addon" description:"是否加油包"` DataAllowance int64 `json:"data_allowance" description:"流量额度"` DataUnit string `json:"data_unit" description:"流量单位"` Description string `json:"description" description:"套餐说明"` } // AssetPackageListResponse B2 资产可购套餐列表响应 type AssetPackageListResponse struct { Packages []ClientPackageItem `json:"packages" description:"套餐列表"` } // ======================================== // B3 资产套餐历史 // ======================================== // AssetPackageHistoryRequest B3 资产套餐历史请求 type AssetPackageHistoryRequest struct { Identifier string `json:"identifier" query:"identifier" validate:"required,min=1,max=50" required:"true" minLength:"1" maxLength:"50" description:"资产标识符(SN/IMEI/虚拟号/ICCID/MSISDN)"` PackageType *string `json:"package_type" query:"package_type" validate:"omitempty,oneof=formal addon" description:"套餐类型 (formal:正式套餐, addon:加油包)"` Status *int `json:"status" query:"status" validate:"omitempty,min=0,max=4" minimum:"0" maximum:"4" description:"套餐状态 (0:待生效, 1:生效中, 2:已用完, 3:已过期, 4:已失效)"` Page int `json:"page" query:"page" validate:"required,min=1" required:"true" minimum:"1" description:"页码"` PageSize int `json:"page_size" query:"page_size" validate:"required,min=1,max=100" required:"true" minimum:"1" maximum:"100" description:"每页数量"` } // AssetPackageHistoryResponse B3 资产套餐历史响应 type AssetPackageHistoryResponse struct { List []AssetPackageResponse `json:"list" description:"套餐历史列表"` Total int64 `json:"total" description:"总数"` Page int `json:"page" description:"页码"` PageSize int `json:"page_size" description:"每页数量"` } // ======================================== // B4 资产刷新 // ======================================== // AssetRefreshRequest B4 资产刷新请求 type AssetRefreshRequest struct { Identifier string `json:"identifier" validate:"required,min=1,max=50" required:"true" minLength:"1" maxLength:"50" description:"资产标识符(SN/IMEI/虚拟号/ICCID/MSISDN)"` } // AssetRefreshResponse B4 资产刷新响应 type AssetRefreshResponse struct { RefreshType string `json:"refresh_type" description:"刷新类型 (card:卡, device:设备)"` Accepted bool `json:"accepted" description:"是否已受理"` CooldownSeconds int `json:"cooldown_seconds" description:"冷却秒数"` }