All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m52s
182 lines
11 KiB
Go
182 lines
11 KiB
Go
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:"冷却秒数"`
|
||
}
|