feat: 资产套餐接口返回是否开启虚流量字段
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m26s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m26s
current-package 和 packages 两个接口的响应中新增 enable_virtual_data 字段,表示该套餐是否启用虚流量 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -100,7 +100,8 @@ type AssetPackageResponse struct {
|
|||||||
DataUsageMB int64 `json:"data_usage_mb" description:"已用真流量(MB)"`
|
DataUsageMB int64 `json:"data_usage_mb" description:"已用真流量(MB)"`
|
||||||
VirtualUsedMB float64 `json:"virtual_used_mb" description:"已用虚流量(MB),按virtual_ratio换算"`
|
VirtualUsedMB float64 `json:"virtual_used_mb" description:"已用虚流量(MB),按virtual_ratio换算"`
|
||||||
VirtualRemainMB float64 `json:"virtual_remain_mb" description:"剩余虚流量(MB),按virtual_ratio换算"`
|
VirtualRemainMB float64 `json:"virtual_remain_mb" description:"剩余虚流量(MB),按virtual_ratio换算"`
|
||||||
VirtualRatio float64 `json:"virtual_ratio" description:"虚流量比例(real/virtual)"`
|
VirtualRatio float64 `json:"virtual_ratio" description:"虚流量比例(real/virtual)"`
|
||||||
|
EnableVirtualData bool `json:"enable_virtual_data" description:"是否启用虚流量"`
|
||||||
ActivatedAt *time.Time `json:"activated_at,omitempty" description:"激活时间(待生效套餐为空)"`
|
ActivatedAt *time.Time `json:"activated_at,omitempty" description:"激活时间(待生效套餐为空)"`
|
||||||
ExpiresAt *time.Time `json:"expires_at,omitempty" description:"到期时间(待生效套餐为空)"`
|
ExpiresAt *time.Time `json:"expires_at,omitempty" description:"到期时间(待生效套餐为空)"`
|
||||||
MasterUsageID *uint `json:"master_usage_id,omitempty" description:"主套餐ID(加油包时有值)"`
|
MasterUsageID *uint `json:"master_usage_id,omitempty" description:"主套餐ID(加油包时有值)"`
|
||||||
|
|||||||
@@ -654,31 +654,34 @@ func (s *Service) GetPackages(ctx context.Context, assetType string, id uint, pa
|
|||||||
ratio := 1.0
|
ratio := 1.0
|
||||||
pkgName := ""
|
pkgName := ""
|
||||||
pkgType := ""
|
pkgType := ""
|
||||||
|
enableVirtualData := false
|
||||||
if pkg != nil {
|
if pkg != nil {
|
||||||
ratio = safeVirtualRatio(pkg.VirtualRatio)
|
ratio = safeVirtualRatio(pkg.VirtualRatio)
|
||||||
pkgName = pkg.PackageName
|
pkgName = pkg.PackageName
|
||||||
pkgType = pkg.PackageType
|
pkgType = pkg.PackageType
|
||||||
|
enableVirtualData = pkg.EnableVirtualData
|
||||||
}
|
}
|
||||||
|
|
||||||
item := &dto.AssetPackageResponse{
|
item := &dto.AssetPackageResponse{
|
||||||
PackageUsageID: u.ID,
|
PackageUsageID: u.ID,
|
||||||
PackageID: u.PackageID,
|
PackageID: u.PackageID,
|
||||||
PackageName: pkgName,
|
PackageName: pkgName,
|
||||||
PackageType: pkgType,
|
PackageType: pkgType,
|
||||||
UsageType: u.UsageType,
|
UsageType: u.UsageType,
|
||||||
Status: u.Status,
|
Status: u.Status,
|
||||||
StatusName: packageStatusName(u.Status),
|
StatusName: packageStatusName(u.Status),
|
||||||
DataLimitMB: u.DataLimitMB,
|
DataLimitMB: u.DataLimitMB,
|
||||||
VirtualLimitMB: int64(float64(u.DataLimitMB) / ratio),
|
VirtualLimitMB: int64(float64(u.DataLimitMB) / ratio),
|
||||||
DataUsageMB: u.DataUsageMB,
|
DataUsageMB: u.DataUsageMB,
|
||||||
VirtualUsedMB: float64(u.DataUsageMB) / ratio,
|
VirtualUsedMB: float64(u.DataUsageMB) / ratio,
|
||||||
VirtualRemainMB: float64(u.DataLimitMB-u.DataUsageMB) / ratio,
|
VirtualRemainMB: float64(u.DataLimitMB-u.DataUsageMB) / ratio,
|
||||||
VirtualRatio: ratio,
|
VirtualRatio: ratio,
|
||||||
ActivatedAt: nonZeroTimePtr(u.ActivatedAt),
|
EnableVirtualData: enableVirtualData,
|
||||||
ExpiresAt: nonZeroTimePtr(u.ExpiresAt),
|
ActivatedAt: nonZeroTimePtr(u.ActivatedAt),
|
||||||
MasterUsageID: u.MasterUsageID,
|
ExpiresAt: nonZeroTimePtr(u.ExpiresAt),
|
||||||
Priority: u.Priority,
|
MasterUsageID: u.MasterUsageID,
|
||||||
CreatedAt: u.CreatedAt,
|
Priority: u.Priority,
|
||||||
|
CreatedAt: u.CreatedAt,
|
||||||
}
|
}
|
||||||
all = append(all, item)
|
all = append(all, item)
|
||||||
}
|
}
|
||||||
@@ -728,31 +731,34 @@ func (s *Service) GetCurrentPackage(ctx context.Context, assetType string, id ui
|
|||||||
ratio := 1.0
|
ratio := 1.0
|
||||||
pkgName := ""
|
pkgName := ""
|
||||||
pkgType := ""
|
pkgType := ""
|
||||||
|
enableVirtualData := false
|
||||||
if pkgErr == nil && pkg != nil {
|
if pkgErr == nil && pkg != nil {
|
||||||
ratio = safeVirtualRatio(pkg.VirtualRatio)
|
ratio = safeVirtualRatio(pkg.VirtualRatio)
|
||||||
pkgName = pkg.PackageName
|
pkgName = pkg.PackageName
|
||||||
pkgType = pkg.PackageType
|
pkgType = pkg.PackageType
|
||||||
|
enableVirtualData = pkg.EnableVirtualData
|
||||||
}
|
}
|
||||||
|
|
||||||
return &dto.AssetPackageResponse{
|
return &dto.AssetPackageResponse{
|
||||||
PackageUsageID: usage.ID,
|
PackageUsageID: usage.ID,
|
||||||
PackageID: usage.PackageID,
|
PackageID: usage.PackageID,
|
||||||
PackageName: pkgName,
|
PackageName: pkgName,
|
||||||
PackageType: pkgType,
|
PackageType: pkgType,
|
||||||
UsageType: usage.UsageType,
|
UsageType: usage.UsageType,
|
||||||
Status: usage.Status,
|
Status: usage.Status,
|
||||||
StatusName: packageStatusName(usage.Status),
|
StatusName: packageStatusName(usage.Status),
|
||||||
DataLimitMB: usage.DataLimitMB,
|
DataLimitMB: usage.DataLimitMB,
|
||||||
VirtualLimitMB: int64(float64(usage.DataLimitMB) / ratio),
|
VirtualLimitMB: int64(float64(usage.DataLimitMB) / ratio),
|
||||||
DataUsageMB: usage.DataUsageMB,
|
DataUsageMB: usage.DataUsageMB,
|
||||||
VirtualUsedMB: float64(usage.DataUsageMB) / ratio,
|
VirtualUsedMB: float64(usage.DataUsageMB) / ratio,
|
||||||
VirtualRemainMB: float64(usage.DataLimitMB-usage.DataUsageMB) / ratio,
|
VirtualRemainMB: float64(usage.DataLimitMB-usage.DataUsageMB) / ratio,
|
||||||
VirtualRatio: ratio,
|
VirtualRatio: ratio,
|
||||||
ActivatedAt: nonZeroTimePtr(usage.ActivatedAt),
|
EnableVirtualData: enableVirtualData,
|
||||||
ExpiresAt: nonZeroTimePtr(usage.ExpiresAt),
|
ActivatedAt: nonZeroTimePtr(usage.ActivatedAt),
|
||||||
MasterUsageID: usage.MasterUsageID,
|
ExpiresAt: nonZeroTimePtr(usage.ExpiresAt),
|
||||||
Priority: usage.Priority,
|
MasterUsageID: usage.MasterUsageID,
|
||||||
CreatedAt: usage.CreatedAt,
|
Priority: usage.Priority,
|
||||||
|
CreatedAt: usage.CreatedAt,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user