fix(realname): DTO 更新 expiry_base 替换 enable_realname_activation REALNAME-05

- package_dto.go: CreatePackageRequest/UpdatePackageRequest/PackageResponse 三处替换
- service.go: 同步更新 DTO 映射逻辑使用 ExpiryBase
This commit is contained in:
2026-03-28 10:37:51 +08:00
parent 8f62496250
commit 244a2742c1
2 changed files with 98 additions and 98 deletions

View File

@@ -15,7 +15,7 @@ type CreatePackageRequest struct {
CalendarType *string `json:"calendar_type" validate:"omitempty,oneof=natural_month by_day" description:"套餐周期类型 (natural_month:自然月, by_day:按天)"` CalendarType *string `json:"calendar_type" validate:"omitempty,oneof=natural_month by_day" description:"套餐周期类型 (natural_month:自然月, by_day:按天)"`
DurationDays *int `json:"duration_days" validate:"omitempty,min=1,max=3650" minimum:"1" maximum:"3650" description:"套餐天数(calendar_type=by_day时必填)"` DurationDays *int `json:"duration_days" validate:"omitempty,min=1,max=3650" minimum:"1" maximum:"3650" description:"套餐天数(calendar_type=by_day时必填)"`
DataResetCycle *string `json:"data_reset_cycle" validate:"omitempty,oneof=daily monthly yearly none" description:"流量重置周期 (daily:每日, monthly:每月, yearly:每年, none:不重置)"` DataResetCycle *string `json:"data_reset_cycle" validate:"omitempty,oneof=daily monthly yearly none" description:"流量重置周期 (daily:每日, monthly:每月, yearly:每年, none:不重置)"`
EnableRealnameActivation *bool `json:"enable_realname_activation" description:"是否启用实名激活 (true:需实名激活, false:立即激活)"` ExpiryBase string `json:"expiry_base" validate:"omitempty,oneof=from_activation from_purchase" description:"到期时间基准 (from_activation:实名激活时起算, from_purchase:购买时起算)" example:"from_activation"`
} }
// UpdatePackageRequest 更新套餐请求 // UpdatePackageRequest 更新套餐请求
@@ -32,7 +32,7 @@ type UpdatePackageRequest struct {
CalendarType *string `json:"calendar_type" validate:"omitempty,oneof=natural_month by_day" description:"套餐周期类型 (natural_month:自然月, by_day:按天)"` CalendarType *string `json:"calendar_type" validate:"omitempty,oneof=natural_month by_day" description:"套餐周期类型 (natural_month:自然月, by_day:按天)"`
DurationDays *int `json:"duration_days" validate:"omitempty,min=1,max=3650" minimum:"1" maximum:"3650" description:"套餐天数(calendar_type=by_day时必填)"` DurationDays *int `json:"duration_days" validate:"omitempty,min=1,max=3650" minimum:"1" maximum:"3650" description:"套餐天数(calendar_type=by_day时必填)"`
DataResetCycle *string `json:"data_reset_cycle" validate:"omitempty,oneof=daily monthly yearly none" description:"流量重置周期 (daily:每日, monthly:每月, yearly:每年, none:不重置)"` DataResetCycle *string `json:"data_reset_cycle" validate:"omitempty,oneof=daily monthly yearly none" description:"流量重置周期 (daily:每日, monthly:每月, yearly:每年, none:不重置)"`
EnableRealnameActivation *bool `json:"enable_realname_activation" description:"是否启用实名激活 (true:需实名激活, false:立即激活)"` ExpiryBase *string `json:"expiry_base" validate:"omitempty,oneof=from_activation from_purchase" description:"到期时间基准 (from_activation:实名激活时起算, from_purchase:购买时起算)"`
} }
// PackageListRequest 套餐列表请求 // PackageListRequest 套餐列表请求
@@ -95,7 +95,7 @@ type PackageResponse struct {
CalendarType string `json:"calendar_type" description:"套餐周期类型 (natural_month:自然月, by_day:按天)"` CalendarType string `json:"calendar_type" description:"套餐周期类型 (natural_month:自然月, by_day:按天)"`
DurationDays *int `json:"duration_days,omitempty" description:"套餐天数(calendar_type=by_day时有值)"` DurationDays *int `json:"duration_days,omitempty" description:"套餐天数(calendar_type=by_day时有值)"`
DataResetCycle string `json:"data_reset_cycle" description:"流量重置周期 (daily:每日, monthly:每月, yearly:每年, none:不重置)"` DataResetCycle string `json:"data_reset_cycle" description:"流量重置周期 (daily:每日, monthly:每月, yearly:每年, none:不重置)"`
EnableRealnameActivation bool `json:"enable_realname_activation" description:"是否启用实名激活 (true:需实名激活, false:立即激活)"` ExpiryBase string `json:"expiry_base" description:"到期时间基准 (from_activation:实名激活时起算, from_purchase:购买时起算)"`
} }
// UpdatePackageParams 更新套餐聚合参数 // UpdatePackageParams 更新套餐聚合参数

View File

@@ -123,10 +123,10 @@ func (s *Service) Create(ctx context.Context, req *dto.CreatePackageRequest) (*d
// 默认月重置 // 默认月重置
pkg.DataResetCycle = constants.PackageDataResetMonthly pkg.DataResetCycle = constants.PackageDataResetMonthly
} }
if req.EnableRealnameActivation != nil { if req.ExpiryBase != "" {
pkg.EnableRealnameActivation = *req.EnableRealnameActivation pkg.ExpiryBase = req.ExpiryBase
} else { } else {
pkg.EnableRealnameActivation = true pkg.ExpiryBase = "from_activation"
} }
pkg.VirtualRatio = calculateVirtualRatio(pkg.EnableVirtualData, pkg.RealDataMB, pkg.VirtualDataMB) pkg.VirtualRatio = calculateVirtualRatio(pkg.EnableVirtualData, pkg.RealDataMB, pkg.VirtualDataMB)
pkg.Creator = currentUserID pkg.Creator = currentUserID
@@ -225,8 +225,8 @@ func (s *Service) Update(ctx context.Context, id uint, req *dto.UpdatePackageReq
if req.DataResetCycle != nil { if req.DataResetCycle != nil {
pkg.DataResetCycle = *req.DataResetCycle pkg.DataResetCycle = *req.DataResetCycle
} }
if req.EnableRealnameActivation != nil { if req.ExpiryBase != nil {
pkg.EnableRealnameActivation = *req.EnableRealnameActivation pkg.ExpiryBase = *req.ExpiryBase
} }
// 校验套餐周期类型和时长配置 // 校验套餐周期类型和时长配置
@@ -556,7 +556,7 @@ func (s *Service) toResponse(ctx context.Context, pkg *model.Package) *dto.Packa
CalendarType: pkg.CalendarType, CalendarType: pkg.CalendarType,
DurationDays: durationDays, DurationDays: durationDays,
DataResetCycle: pkg.DataResetCycle, DataResetCycle: pkg.DataResetCycle,
EnableRealnameActivation: pkg.EnableRealnameActivation, ExpiryBase: pkg.ExpiryBase,
Status: pkg.Status, Status: pkg.Status,
ShelfStatus: pkg.ShelfStatus, ShelfStatus: pkg.ShelfStatus,
CreatedAt: pkg.CreatedAt.Format(time.RFC3339), CreatedAt: pkg.CreatedAt.Format(time.RFC3339),
@@ -621,7 +621,7 @@ func (s *Service) toResponseWithAllocation(_ context.Context, pkg *model.Package
CalendarType: pkg.CalendarType, CalendarType: pkg.CalendarType,
DurationDays: durationDays, DurationDays: durationDays,
DataResetCycle: pkg.DataResetCycle, DataResetCycle: pkg.DataResetCycle,
EnableRealnameActivation: pkg.EnableRealnameActivation, ExpiryBase: pkg.ExpiryBase,
Status: pkg.Status, Status: pkg.Status,
ShelfStatus: pkg.ShelfStatus, ShelfStatus: pkg.ShelfStatus,
CreatedAt: pkg.CreatedAt.Format(time.RFC3339), CreatedAt: pkg.CreatedAt.Format(time.RFC3339),