Files
junhong_cmp_fiber/internal/model/dto/package_expiry_dto.go
break 73f5125d3d
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m26s
七月迭代短暂完结,还有很多后端的关键东西没有弄,这是一版赶时间做的东西
2026-07-25 17:06:58 +08:00

60 lines
4.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package dto
import "time"
// PackageExpiryEstimate 资产全部有效主套餐连续使用后的最终到期推算结果。
type PackageExpiryEstimate struct {
EstimatedFinalExpiresAt *time.Time `json:"estimated_final_expires_at" description:"预计套餐到期时间,无法精确推算时为 null"`
DaysUntilFinalExpiry *int `json:"days_until_final_expiry" description:"距预计套餐到期的上海自然日天数,无法精确推算时为 null"`
ExpiryEstimateStatus string `json:"expiry_estimate_status" description:"预计套餐到期推算状态 (exact:可精确推算, waiting_activation:待激活后起算, none:无参与套餐, invalid_data:数据异常)"`
ExpiryEstimateStatusName string `json:"expiry_estimate_status_name" description:"预计套餐到期推算状态名称(中文)"`
IsExpiring bool `json:"is_expiring" description:"是否临期(仅精确推算且剩余 0 至 15 个上海自然日时为 true"`
}
// ExpiringAssetListRequest 临期资产分页查询参数。
type ExpiringAssetListRequest struct {
AssetType string `query:"asset_type" validate:"omitempty,oneof=iot_card device" enums:"iot_card,device" description:"资产类型 (iot_card:物联网卡, device:设备)"`
Keyword string `query:"keyword" validate:"omitempty,max=100" description:"资产标识关键词,匹配卡 ICCID/MSISDN/虚拟号或设备虚拟号/IMEI"`
ShopID *uint `query:"shop_id" validate:"omitempty,gt=0" description:"店铺 ID只能缩小当前账号的数据权限范围"`
PackageID *uint `query:"package_id" validate:"omitempty,gt=0" description:"最终排队套餐 ID"`
DaysMin *int `query:"days_min" validate:"omitempty,min=0,max=15" description:"最小剩余上海自然日天数,范围 0 至 15"`
DaysMax *int `query:"days_max" validate:"omitempty,min=0,max=15" description:"最大剩余上海自然日天数,范围 0 至 15"`
ExpiresFrom string `query:"expires_from" validate:"omitempty,datetime=2006-01-02" description:"预计到期开始日期(上海自然日,格式 YYYY-MM-DD"`
ExpiresTo string `query:"expires_to" validate:"omitempty,datetime=2006-01-02" description:"预计到期结束日期(上海自然日,格式 YYYY-MM-DD"`
Page int `query:"page" validate:"omitempty,min=1" default:"1" description:"页码"`
PageSize int `query:"page_size" validate:"omitempty,min=1,max=100" default:"20" description:"每页数量,最大 100"`
}
// ExpiringAssetItem 临期资产列表项。
type ExpiringAssetItem struct {
AssetType string `json:"asset_type" description:"资产类型 (iot_card:物联网卡, device:设备)"`
AssetID uint `json:"asset_id" description:"资产 ID"`
Identifier string `json:"identifier" description:"稳定资产标识,卡返回 ICCID设备优先返回虚拟号、为空时返回 IMEI"`
ShopID *uint `json:"shop_id" description:"所属店铺 ID平台库存为 null"`
ShopName string `json:"shop_name" description:"所属店铺名称,平台库存为空字符串"`
PackageUsageID uint `json:"package_usage_id" description:"最终到期队列末条主套餐使用记录 ID"`
PackageID uint `json:"package_id" description:"最终到期队列末条套餐 ID"`
PackageName string `json:"package_name" description:"最终到期队列末条套餐名称"`
PackageExpiryEstimate
ExpiryLevel string `json:"expiry_level" description:"临期高亮等级 (pink:8至15天, purple:4至7天, red:0至3天)"`
ExpiryLevelName string `json:"expiry_level_name" description:"临期高亮等级名称(中文)"`
IsPriority bool `json:"is_priority" description:"是否优先展示,剩余 0 至 3 天时为 true"`
}
// ExpiringAssetSummary 临期资产数量汇总。
type ExpiringAssetSummary struct {
CardCount int64 `json:"card_count" description:"临期物联网卡数量"`
DeviceCount int64 `json:"device_count" description:"临期设备数量"`
TotalCount int64 `json:"total_count" description:"临期资产总数"`
WindowDays int `json:"window_days" description:"临期统计窗口天数,固定为 15"`
}
// ExpiringAssetListResponse 临期资产分页响应。
type ExpiringAssetListResponse struct {
Items []ExpiringAssetItem `json:"items" description:"临期资产列表"`
Total int64 `json:"total" description:"符合条件的总数量"`
Page int `json:"page" description:"当前页码"`
Size int `json:"size" description:"每页数量"`
Summary ExpiringAssetSummary `json:"summary" description:"同一筛选与权限范围内的卡、设备数量汇总"`
}