feat: 资产套餐接口返回是否开启虚流量字段
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:
2026-04-10 14:33:05 +08:00
parent 23e12d8a73
commit ef8ec025bd
2 changed files with 44 additions and 37 deletions

View File

@@ -654,31 +654,34 @@ func (s *Service) GetPackages(ctx context.Context, assetType string, id uint, pa
ratio := 1.0
pkgName := ""
pkgType := ""
enableVirtualData := false
if pkg != nil {
ratio = safeVirtualRatio(pkg.VirtualRatio)
pkgName = pkg.PackageName
pkgType = pkg.PackageType
enableVirtualData = pkg.EnableVirtualData
}
item := &dto.AssetPackageResponse{
PackageUsageID: u.ID,
PackageID: u.PackageID,
PackageName: pkgName,
PackageType: pkgType,
UsageType: u.UsageType,
Status: u.Status,
StatusName: packageStatusName(u.Status),
DataLimitMB: u.DataLimitMB,
VirtualLimitMB: int64(float64(u.DataLimitMB) / ratio),
DataUsageMB: u.DataUsageMB,
VirtualUsedMB: float64(u.DataUsageMB) / ratio,
VirtualRemainMB: float64(u.DataLimitMB-u.DataUsageMB) / ratio,
VirtualRatio: ratio,
ActivatedAt: nonZeroTimePtr(u.ActivatedAt),
ExpiresAt: nonZeroTimePtr(u.ExpiresAt),
MasterUsageID: u.MasterUsageID,
Priority: u.Priority,
CreatedAt: u.CreatedAt,
PackageUsageID: u.ID,
PackageID: u.PackageID,
PackageName: pkgName,
PackageType: pkgType,
UsageType: u.UsageType,
Status: u.Status,
StatusName: packageStatusName(u.Status),
DataLimitMB: u.DataLimitMB,
VirtualLimitMB: int64(float64(u.DataLimitMB) / ratio),
DataUsageMB: u.DataUsageMB,
VirtualUsedMB: float64(u.DataUsageMB) / ratio,
VirtualRemainMB: float64(u.DataLimitMB-u.DataUsageMB) / ratio,
VirtualRatio: ratio,
EnableVirtualData: enableVirtualData,
ActivatedAt: nonZeroTimePtr(u.ActivatedAt),
ExpiresAt: nonZeroTimePtr(u.ExpiresAt),
MasterUsageID: u.MasterUsageID,
Priority: u.Priority,
CreatedAt: u.CreatedAt,
}
all = append(all, item)
}
@@ -728,31 +731,34 @@ func (s *Service) GetCurrentPackage(ctx context.Context, assetType string, id ui
ratio := 1.0
pkgName := ""
pkgType := ""
enableVirtualData := false
if pkgErr == nil && pkg != nil {
ratio = safeVirtualRatio(pkg.VirtualRatio)
pkgName = pkg.PackageName
pkgType = pkg.PackageType
enableVirtualData = pkg.EnableVirtualData
}
return &dto.AssetPackageResponse{
PackageUsageID: usage.ID,
PackageID: usage.PackageID,
PackageName: pkgName,
PackageType: pkgType,
UsageType: usage.UsageType,
Status: usage.Status,
StatusName: packageStatusName(usage.Status),
DataLimitMB: usage.DataLimitMB,
VirtualLimitMB: int64(float64(usage.DataLimitMB) / ratio),
DataUsageMB: usage.DataUsageMB,
VirtualUsedMB: float64(usage.DataUsageMB) / ratio,
VirtualRemainMB: float64(usage.DataLimitMB-usage.DataUsageMB) / ratio,
VirtualRatio: ratio,
ActivatedAt: nonZeroTimePtr(usage.ActivatedAt),
ExpiresAt: nonZeroTimePtr(usage.ExpiresAt),
MasterUsageID: usage.MasterUsageID,
Priority: usage.Priority,
CreatedAt: usage.CreatedAt,
PackageUsageID: usage.ID,
PackageID: usage.PackageID,
PackageName: pkgName,
PackageType: pkgType,
UsageType: usage.UsageType,
Status: usage.Status,
StatusName: packageStatusName(usage.Status),
DataLimitMB: usage.DataLimitMB,
VirtualLimitMB: int64(float64(usage.DataLimitMB) / ratio),
DataUsageMB: usage.DataUsageMB,
VirtualUsedMB: float64(usage.DataUsageMB) / ratio,
VirtualRemainMB: float64(usage.DataLimitMB-usage.DataUsageMB) / ratio,
VirtualRatio: ratio,
EnableVirtualData: enableVirtualData,
ActivatedAt: nonZeroTimePtr(usage.ActivatedAt),
ExpiresAt: nonZeroTimePtr(usage.ExpiresAt),
MasterUsageID: usage.MasterUsageID,
Priority: usage.Priority,
CreatedAt: usage.CreatedAt,
}, nil
}