package dto

// CreatePackageSeriesRequest 创建套餐系列请求
type CreatePackageSeriesRequest struct {
	SeriesCode  string `json:"series_code" validate:"required,min=1,max=100" required:"true" minLength:"1" maxLength:"100" description:"系列编码"`
	SeriesName  string `json:"series_name" validate:"required,min=1,max=255" required:"true" minLength:"1" maxLength:"255" description:"系列名称"`
	Description string `json:"description" validate:"omitempty,max=500" maxLength:"500" description:"描述"`
}

// UpdatePackageSeriesRequest 更新套餐系列请求
type UpdatePackageSeriesRequest struct {
	SeriesName  *string `json:"series_name" validate:"omitempty,min=1,max=255" minLength:"1" maxLength:"255" description:"系列名称"`
	Description *string `json:"description" validate:"omitempty,max=500" maxLength:"500" description:"描述"`
}

// PackageSeriesListRequest 套餐系列列表请求
type PackageSeriesListRequest struct {
	Page       int     `json:"page" query:"page" validate:"omitempty,min=1" minimum:"1" description:"页码"`
	PageSize   int     `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100" minimum:"1" maximum:"100" description:"每页数量"`
	SeriesName *string `json:"series_name" query:"series_name" validate:"omitempty,max=255" maxLength:"255" description:"系列名称（模糊搜索）"`
	Status     *int    `json:"status" query:"status" validate:"omitempty,oneof=1 2" description:"状态 (1:启用, 2:禁用)"`
}

// UpdatePackageSeriesStatusRequest 更新套餐系列状态请求
type UpdatePackageSeriesStatusRequest struct {
	Status int `json:"status" validate:"required,oneof=1 2" required:"true" description:"状态 (1:启用, 2:禁用)"`
}

// PackageSeriesResponse 套餐系列响应
type PackageSeriesResponse struct {
	ID          uint   `json:"id" description:"系列ID"`
	SeriesCode  string `json:"series_code" description:"系列编码"`
	SeriesName  string `json:"series_name" description:"系列名称"`
	Description string `json:"description" description:"描述"`
	Status      int    `json:"status" description:"状态 (1:启用, 2:禁用)"`
	CreatedAt   string `json:"created_at" description:"创建时间"`
	UpdatedAt   string `json:"updated_at" description:"更新时间"`
}

// UpdatePackageSeriesParams 更新套餐系列聚合参数
type UpdatePackageSeriesParams struct {
	IDReq
	UpdatePackageSeriesRequest
}

// UpdatePackageSeriesStatusParams 更新套餐系列状态聚合参数
type UpdatePackageSeriesStatusParams struct {
	IDReq
	UpdatePackageSeriesStatusRequest
}

// PackageSeriesPageResult 套餐系列分页结果
type PackageSeriesPageResult struct {
	List       []*PackageSeriesResponse `json:"list" description:"套餐系列列表"`
	Total      int64                    `json:"total" description:"总数"`
	Page       int                      `json:"page" description:"当前页"`
	PageSize   int                      `json:"page_size" description:"每页数量"`
	TotalPages int                      `json:"total_pages" description:"总页数"`
}
