package dto import "time" // AssetResolveResponse 统一资产解析响应 type AssetResolveResponse struct { AssetType string `json:"asset_type" description:"资产类型:card 或 device"` AssetID uint `json:"asset_id" description:"资产数据库ID"` VirtualNo string `json:"virtual_no" description:"虚拟号"` Status int `json:"status" description:"资产状态"` BatchNo string `json:"batch_no" description:"批次号"` ShopID *uint `json:"shop_id,omitempty" description:"所属店铺ID"` ShopName string `json:"shop_name,omitempty" description:"所属店铺名称"` SeriesID *uint `json:"series_id,omitempty" description:"套餐系列ID"` SeriesName string `json:"series_name,omitempty" description:"套餐系列名称"` FirstCommissionPaid bool `json:"first_commission_paid" description:"一次性佣金是否已发放"` AccumulatedRecharge int64 `json:"accumulated_recharge" description:"累计充值金额(分)"` ActivatedAt *time.Time `json:"activated_at,omitempty" description:"激活时间"` CreatedAt time.Time `json:"created_at" description:"创建时间"` UpdatedAt time.Time `json:"updated_at" description:"更新时间"` // 状态聚合字段 RealNameStatus int `json:"real_name_status" description:"实名状态:0未实名 1实名中 2已实名"` CurrentPackage string `json:"current_package" description:"当前套餐名称(无套餐时为空)"` PackageTotalMB int64 `json:"package_total_mb" description:"当前套餐总虚流量(MB),已按virtual_ratio换算"` PackageUsedMB float64 `json:"package_used_mb" description:"当前已用虚流量(MB),已按virtual_ratio换算"` PackageRemainMB float64 `json:"package_remain_mb" description:"当前套餐剩余虚流量(MB),已按virtual_ratio换算"` DeviceProtectStatus string `json:"device_protect_status,omitempty" description:"设备保护期状态:none/stop/start(仅asset_type=device时有效)"` // 绑定关系字段 ICCID string `json:"iccid,omitempty" description:"卡ICCID(asset_type=card时有效)"` BoundDeviceID *uint `json:"bound_device_id,omitempty" description:"绑定的设备ID(asset_type=card时有效)"` BoundDeviceNo string `json:"bound_device_no,omitempty" description:"绑定的设备虚拟号(asset_type=card时有效)"` BoundDeviceName string `json:"bound_device_name,omitempty" description:"绑定的设备名称(asset_type=card时有效)"` BoundCardCount int `json:"bound_card_count,omitempty" description:"绑定的卡数量(asset_type=device时有效)"` Cards []BoundCardInfo `json:"cards,omitempty" description:"绑定的卡列表(asset_type=device时有效)"` // 设备专属字段(card类型时为零值) 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:"设备类型"` MaxSimSlots int `json:"max_sim_slots,omitempty" description:"最大插槽数"` Manufacturer string `json:"manufacturer,omitempty" description:"制造商"` // 卡专属字段(device类型时为零值) CarrierID uint `json:"carrier_id,omitempty" description:"运营商ID"` CarrierType string `json:"carrier_type,omitempty" description:"运营商类型"` CarrierName string `json:"carrier_name,omitempty" description:"运营商名称"` MSISDN string `json:"msisdn,omitempty" description:"手机号"` IMSI string `json:"imsi,omitempty" description:"IMSI"` CardCategory string `json:"card_category,omitempty" description:"卡业务类型"` Supplier string `json:"supplier,omitempty" description:"供应商"` ActivationStatus int `json:"activation_status,omitempty" description:"激活状态"` EnablePolling bool `json:"enable_polling,omitempty" description:"是否参与轮询"` NetworkStatus int `json:"network_status,omitempty" description:"网络状态:0停机 1开机(asset_type=card时有效)"` } // BoundCardInfo 设备绑定的卡信息 type BoundCardInfo struct { CardID uint `json:"card_id" description:"卡ID"` ICCID string `json:"iccid" description:"ICCID"` MSISDN string `json:"msisdn,omitempty" description:"手机号"` NetworkStatus int `json:"network_status" description:"网络状态:0停机 1开机"` RealNameStatus int `json:"real_name_status" description:"实名状态"` SlotPosition int `json:"slot_position,omitempty" description:"插槽位置"` } // 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时有效)"` 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时有效)"` } // AssetPackageResponse 资产套餐信息 type AssetPackageResponse struct { PackageUsageID uint `json:"package_usage_id" description:"套餐使用记录ID"` PackageID uint `json:"package_id" description:"套餐ID"` PackageName string `json:"package_name" description:"套餐名称"` PackageType string `json:"package_type" description:"套餐类型:formal/addon"` UsageType string `json:"usage_type" description:"使用类型:single_card/device"` Status int `json:"status" description:"状态:0待生效 1生效中 2已用完 3已过期 4已失效"` StatusName string `json:"status_name" description:"状态名称"` DataLimitMB int64 `json:"data_limit_mb" description:"套餐真流量总量(MB)"` VirtualLimitMB int64 `json:"virtual_limit_mb" description:"套餐虚流量总量(MB),按virtual_ratio换算"` DataUsageMB int64 `json:"data_usage_mb" description:"已用真流量(MB)"` VirtualUsedMB float64 `json:"virtual_used_mb" description:"已用虚流量(MB),按virtual_ratio换算"` VirtualRemainMB float64 `json:"virtual_remain_mb" description:"剩余虚流量(MB),按virtual_ratio换算"` VirtualRatio float64 `json:"virtual_ratio" description:"虚流量比例(real/virtual)"` ActivatedAt time.Time `json:"activated_at" description:"激活时间"` ExpiresAt time.Time `json:"expires_at" description:"到期时间"` MasterUsageID *uint `json:"master_usage_id,omitempty" description:"主套餐ID(加油包时有值)"` Priority int `json:"priority" description:"优先级"` CreatedAt time.Time `json:"created_at" description:"创建时间"` } // AssetResolveRequest 资产解析请求(路径参数) type AssetResolveRequest struct { Identifier string `path:"identifier" description:"资产标识符(虚拟号/ICCID/IMEI/SN/MSISDN)" required:"true"` } // AssetTypeIDRequest 资产类型+ID请求(路径参数) type AssetTypeIDRequest struct { AssetType string `path:"asset_type" description:"资产类型:card 或 device" required:"true"` ID uint `path:"id" description:"资产ID" required:"true"` } // DeviceIDRequest 设备ID请求(路径参数) type DeviceIDRequest struct { DeviceID uint `path:"device_id" description:"设备ID" required:"true"` } // CardICCIDRequest 卡ICCID请求(路径参数) type CardICCIDRequest struct { ICCID string `path:"iccid" description:"卡ICCID" required:"true"` }