feat: 后台管理查询接口 DTO 新增 realname_policy 字段

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
2026-04-17 17:27:10 +08:00
parent 9bd1d60e85
commit 2d6456c4a3
3 changed files with 53 additions and 32 deletions

View File

@@ -21,6 +21,7 @@ type AssetResolveResponse struct {
// 状态聚合字段 // 状态聚合字段
RealNameStatus int `json:"real_name_status" description:"实名状态0未实名 1已实名"` RealNameStatus int `json:"real_name_status" description:"实名状态0未实名 1已实名"`
RealNameAt *time.Time `json:"real_name_at" description:"最近一次完成实名的时间,未实名时为 null"` RealNameAt *time.Time `json:"real_name_at" description:"最近一次完成实名的时间,未实名时为 null"`
RealnamePolicy string `json:"realname_policy" description:"实名认证策略 (none:无需实名, before_order:先实名后充值/购买, after_order:先充值/购买后实名)"`
CurrentPackage string `json:"current_package" description:"当前套餐名称(无套餐时为空)"` CurrentPackage string `json:"current_package" description:"当前套餐名称(无套餐时为空)"`
PackageTotalMB int64 `json:"package_total_mb" description:"当前套餐总虚流量(MB)已按virtual_ratio换算"` PackageTotalMB int64 `json:"package_total_mb" description:"当前套餐总虚流量(MB)已按virtual_ratio换算"`
PackageUsedMB float64 `json:"package_used_mb" description:"当前已用虚流量(MB)已按virtual_ratio换算"` PackageUsedMB float64 `json:"package_used_mb" description:"当前已用虚流量(MB)已按virtual_ratio换算"`
@@ -73,6 +74,7 @@ type BoundCardInfo struct {
CarrierID uint `json:"carrier_id,omitempty" description:"运营商ID"` CarrierID uint `json:"carrier_id,omitempty" description:"运营商ID"`
CarrierType string `json:"carrier_type,omitempty" description:"运营商类型"` CarrierType string `json:"carrier_type,omitempty" description:"运营商类型"`
CarrierName string `json:"carrier_name,omitempty" description:"运营商名称"` CarrierName string `json:"carrier_name,omitempty" description:"运营商名称"`
RealnamePolicy string `json:"realname_policy" description:"实名认证策略 (none:无需实名, before_order:先实名后充值/购买, after_order:先充值/购买后实名)"`
} }
// AssetRealtimeStatusResponse 资产实时状态只读DB/Redis // AssetRealtimeStatusResponse 资产实时状态只读DB/Redis
@@ -81,6 +83,7 @@ type AssetRealtimeStatusResponse struct {
AssetID uint `json:"asset_id" description:"资产ID"` AssetID uint `json:"asset_id" description:"资产ID"`
NetworkStatus int `json:"network_status,omitempty" description:"网络状态asset_type=card时有效0停机 1开机"` 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已实名"` RealNameStatus int `json:"real_name_status,omitempty" description:"实名状态asset_type=card时有效0未实名 1已实名"`
RealnamePolicy string `json:"realname_policy,omitempty" description:"实名认证策略 (none:无需实名, before_order:先实名后充值/购买, after_order:先充值/购买后实名)"`
CurrentMonthUsageMB float64 `json:"current_month_usage_mb,omitempty" description:"系统累计的自然月流量MBasset_type=card时有效"` CurrentMonthUsageMB float64 `json:"current_month_usage_mb,omitempty" description:"系统累计的自然月流量MBasset_type=card时有效"`
LastSyncTime *time.Time `json:"last_sync_time,omitempty" description:"最后同步时间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"` DeviceProtectStatus string `json:"device_protect_status,omitempty" description:"保护期状态asset_type=device时有效none/stop/start"`
@@ -279,3 +282,16 @@ type UpdateAssetPollingStatusResponse struct {
AssetID uint `json:"asset_id" description:"资产ID"` AssetID uint `json:"asset_id" description:"资产ID"`
EnablePolling bool `json:"enable_polling" description:"更新后的轮询状态 (true:已启用, false:已禁用)"` EnablePolling bool `json:"enable_polling" description:"更新后的轮询状态 (true:已启用, false:已禁用)"`
} }
// UpdateAssetRealnamePolicyRequest 更新资产实名认证策略请求
type UpdateAssetRealnamePolicyRequest struct {
Identifier string `path:"identifier" description:"资产标识符ICCID 或 VirtualNo" required:"true"`
RealnamePolicy string `json:"realname_policy" description:"实名认证策略 (none:无需实名, before_order:先实名后充值/购买, after_order:先充值/购买后实名)" required:"true" enum:"none,before_order,after_order"`
}
// UpdateAssetRealnamePolicyResponse 更新资产实名认证策略响应
type UpdateAssetRealnamePolicyResponse struct {
AssetType string `json:"asset_type" description:"资产类型 (card:IoT卡, device:设备)"`
AssetID uint `json:"asset_id" description:"资产ID"`
RealnamePolicy string `json:"realname_policy" description:"更新后的实名认证策略 (none:无需实名, before_order:先实名后充值/购买, after_order:先充值/购买后实名)"`
}

View File

@@ -36,6 +36,7 @@ type DeviceResponse struct {
SeriesID *uint `json:"series_id" description:"套餐系列ID"` SeriesID *uint `json:"series_id" description:"套餐系列ID"`
SeriesName string `json:"series_name" description:"套餐系列名称"` SeriesName string `json:"series_name" description:"套餐系列名称"`
ActivatedAt *time.Time `json:"activated_at" description:"激活时间"` ActivatedAt *time.Time `json:"activated_at" description:"激活时间"`
RealnamePolicy string `json:"realname_policy" description:"实名认证策略 (none:无需实名, before_order:先实名后充值/购买, after_order:先充值/购买后实名)"`
CreatedAt time.Time `json:"created_at" description:"创建时间"` CreatedAt time.Time `json:"created_at" description:"创建时间"`
UpdatedAt time.Time `json:"updated_at" description:"更新时间"` UpdatedAt time.Time `json:"updated_at" description:"更新时间"`
// 设备实时同步字段(由 sync-info 接口写入) // 设备实时同步字段(由 sync-info 接口写入)
@@ -71,16 +72,17 @@ type ListDeviceCardsRequest struct {
} }
type DeviceCardBindingResponse struct { type DeviceCardBindingResponse struct {
ID uint `json:"id" description:"绑定记录ID"` ID uint `json:"id" description:"绑定记录ID"`
SlotPosition int `json:"slot_position" description:"插槽位置 (1-4)"` SlotPosition int `json:"slot_position" description:"插槽位置 (1-4)"`
IotCardID uint `json:"iot_card_id" description:"IoT卡ID"` IotCardID uint `json:"iot_card_id" description:"IoT卡ID"`
ICCID string `json:"iccid" description:"ICCID"` ICCID string `json:"iccid" description:"ICCID"`
MSISDN string `json:"msisdn" description:"接入号"` MSISDN string `json:"msisdn" description:"接入号"`
CarrierName string `json:"carrier_name" description:"运营商名称"` CarrierName string `json:"carrier_name" description:"运营商名称"`
Status int `json:"status" description:"卡状态 (1:在库, 2:已分销, 3:已激活, 4:已停用)"` Status int `json:"status" description:"卡状态 (1:在库, 2:已分销, 3:已激活, 4:已停用)"`
StatusName string `json:"status_name" description:"卡状态名称(中文)"` StatusName string `json:"status_name" description:"卡状态名称(中文)"`
BindTime *time.Time `json:"bind_time" description:"绑定时间"` BindTime *time.Time `json:"bind_time" description:"绑定时间"`
IsCurrent bool `json:"is_current" description:"是否为当前使用的卡"` IsCurrent bool `json:"is_current" description:"是否为当前使用的卡"`
RealnamePolicy string `json:"realname_policy" description:"实名认证策略 (none:无需实名, before_order:先实名后充值/购买, after_order:先充值/购买后实名)"`
} }
type ListDeviceCardsResponse struct { type ListDeviceCardsResponse struct {

View File

@@ -53,6 +53,7 @@ type StandaloneIotCardResponse struct {
SeriesID *uint `json:"series_id" description:"套餐系列ID"` SeriesID *uint `json:"series_id" description:"套餐系列ID"`
SeriesName string `json:"series_name" description:"套餐系列名称"` SeriesName string `json:"series_name" description:"套餐系列名称"`
DeviceVirtualNo string `json:"device_virtual_no" description:"绑定设备的虚拟号(未绑定时为空字符串)"` DeviceVirtualNo string `json:"device_virtual_no" description:"绑定设备的虚拟号(未绑定时为空字符串)"`
RealnamePolicy string `json:"realname_policy" description:"实名认证策略 (none:无需实名, before_order:先实名后充值/购买, after_order:先充值/购买后实名)"`
CreatedAt time.Time `json:"created_at" description:"创建时间"` CreatedAt time.Time `json:"created_at" description:"创建时间"`
UpdatedAt time.Time `json:"updated_at" description:"更新时间"` UpdatedAt time.Time `json:"updated_at" description:"更新时间"`
} }
@@ -65,10 +66,11 @@ type ListStandaloneIotCardResponse struct {
} }
type ImportIotCardRequest struct { type ImportIotCardRequest struct {
CarrierID uint `json:"carrier_id" validate:"required,min=1" required:"true" minimum:"1" description:"运营商ID"` CarrierID uint `json:"carrier_id" validate:"required,min=1" required:"true" minimum:"1" description:"运营商ID"`
BatchNo string `json:"batch_no" validate:"omitempty,max=100" maxLength:"100" description:"批次号"` BatchNo string `json:"batch_no" validate:"omitempty,max=100" maxLength:"100" description:"批次号"`
FileKey string `json:"file_key" validate:"required,min=1,max=500" required:"true" minLength:"1" maxLength:"500" description:"对象存储文件路径(通过 /storage/upload-url 获取)"` FileKey string `json:"file_key" validate:"required,min=1,max=500" required:"true" minLength:"1" maxLength:"500" description:"对象存储文件路径(通过 /storage/upload-url 获取)"`
CardCategory string `json:"card_category" validate:"omitempty,oneof=normal industry" description:"卡业务类型 (normal:普通卡, industry:行业卡),默认 normal"` CardCategory string `json:"card_category" validate:"omitempty,oneof=normal industry" description:"卡业务类型 (normal:普通卡, industry:行业卡),默认 normal"`
RealnamePolicy string `json:"realname_policy" validate:"omitempty,oneof=none before_order after_order" description:"实名认证策略 (none:无需实名, before_order:先实名后充值/购买, after_order:先充值/购买后实名),默认 none"`
} }
type ImportIotCardResponse struct { type ImportIotCardResponse struct {
@@ -88,24 +90,25 @@ type ListImportTaskRequest struct {
} }
type ImportTaskResponse struct { type ImportTaskResponse struct {
ID uint `json:"id" description:"任务ID"` ID uint `json:"id" description:"任务ID"`
TaskNo string `json:"task_no" description:"任务编号"` TaskNo string `json:"task_no" description:"任务编号"`
Status int `json:"status" description:"任务状态 (1:待处理, 2:处理中, 3:已完成, 4:失败)"` Status int `json:"status" description:"任务状态 (1:待处理, 2:处理中, 3:已完成, 4:失败)"`
StatusText string `json:"status_text" description:"任务状态文本"` StatusText string `json:"status_text" description:"任务状态文本"`
CarrierID uint `json:"carrier_id" description:"运营商ID"` CarrierID uint `json:"carrier_id" description:"运营商ID"`
CarrierType string `json:"carrier_type,omitempty" description:"运营商类型 (CMCC:中国移动, CUCC:中国联通, CTCC:中国电信, CBN:中国广电)"` CarrierType string `json:"carrier_type,omitempty" description:"运营商类型 (CMCC:中国移动, CUCC:中国联通, CTCC:中国电信, CBN:中国广电)"`
CarrierName string `json:"carrier_name,omitempty" description:"运营商名称"` CarrierName string `json:"carrier_name,omitempty" description:"运营商名称"`
BatchNo string `json:"batch_no,omitempty" description:"批次号"` BatchNo string `json:"batch_no,omitempty" description:"批次号"`
CardCategory string `json:"card_category" description:"卡业务类型 (normal:普通卡, industry:行业卡)"` CardCategory string `json:"card_category" description:"卡业务类型 (normal:普通卡, industry:行业卡)"`
FileName string `json:"file_name,omitempty" description:"文件名"` RealnamePolicy string `json:"realname_policy" description:"实名认证策略 (none:无需实名, before_order:先实名后充值/购买, after_order:先充值/购买后实名)"`
TotalCount int `json:"total_count" description:"总数"` FileName string `json:"file_name,omitempty" description:"文件名"`
SuccessCount int `json:"success_count" description:"成功数"` TotalCount int `json:"total_count" description:"数"`
SkipCount int `json:"skip_count" description:"跳过数"` SuccessCount int `json:"success_count" description:"成功数"`
FailCount int `json:"fail_count" description:"失败数"` SkipCount int `json:"skip_count" description:"跳过数"`
StartedAt *time.Time `json:"started_at,omitempty" description:"开始处理时间"` FailCount int `json:"fail_count" description:"失败数"`
CompletedAt *time.Time `json:"completed_at,omitempty" description:"完成时间"` StartedAt *time.Time `json:"started_at,omitempty" description:"开始处理时间"`
ErrorMessage string `json:"error_message,omitempty" description:"错误信息"` CompletedAt *time.Time `json:"completed_at,omitempty" description:"完成时间"`
CreatedAt time.Time `json:"created_at" description:"创建时间"` ErrorMessage string `json:"error_message,omitempty" description:"错误信息"`
CreatedAt time.Time `json:"created_at" description:"创建时间"`
} }
type ListImportTaskResponse struct { type ListImportTaskResponse struct {