package dto

// MyPackageListRequest 我的可售套餐列表请求
type MyPackageListRequest 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:"每页数量"`
	SeriesID    *uint   `json:"series_id" query:"series_id" validate:"omitempty" description:"套餐系列ID"`
	PackageType *string `json:"package_type" query:"package_type" validate:"omitempty" description:"套餐类型"`
}

// MyPackageResponse 我的可售套餐响应
type MyPackageResponse struct {
	ID                   uint   `json:"id" description:"套餐ID"`
	PackageCode          string `json:"package_code" description:"套餐编码"`
	PackageName          string `json:"package_name" description:"套餐名称"`
	PackageType          string `json:"package_type" description:"套餐类型"`
	SeriesID             uint   `json:"series_id" description:"套餐系列ID"`
	SeriesName           string `json:"series_name" description:"套餐系列名称"`
	CostPrice            int64  `json:"cost_price" description:"我的成本价（分）"`
	SuggestedRetailPrice int64  `json:"suggested_retail_price" description:"建议售价（分）"`
	ProfitMargin         int64  `json:"profit_margin" description:"利润空间（分）= 建议售价 - 成本价"`
	PriceSource          string `json:"price_source" description:"价格来源 (series_pricing:系列加价, package_override:单套餐覆盖)"`
	Status               int    `json:"status" description:"套餐状态 (0:禁用, 1:启用)"`
	StatusName           string `json:"status_name" description:"状态名称（中文）"`
	ShelfStatus          int    `json:"shelf_status" description:"上架状态 (1:上架, 2:下架)"`
	ShelfStatusName      string `json:"shelf_status_name" description:"上架状态名称（中文）"`
}

// MyPackagePageResult 我的可售套餐分页结果
type MyPackagePageResult struct {
	List     []*MyPackageResponse `json:"items" description:"套餐列表"`
	Total    int64                `json:"total" description:"总数"`
	Page     int                  `json:"page" description:"当前页"`
	PageSize int                  `json:"size" description:"每页数量"`
}

// MyPackageDetailResponse 我的可售套餐详情响应
type MyPackageDetailResponse struct {
	ID                   uint   `json:"id" description:"套餐ID"`
	PackageCode          string `json:"package_code" description:"套餐编码"`
	PackageName          string `json:"package_name" description:"套餐名称"`
	PackageType          string `json:"package_type" description:"套餐类型"`
	Description          string `json:"description" description:"套餐描述"`
	SeriesID             uint   `json:"series_id" description:"套餐系列ID"`
	SeriesName           string `json:"series_name" description:"套餐系列名称"`
	CostPrice            int64  `json:"cost_price" description:"我的成本价（分）"`
	SuggestedRetailPrice int64  `json:"suggested_retail_price" description:"建议售价（分）"`
	ProfitMargin         int64  `json:"profit_margin" description:"利润空间（分）"`
	PriceSource          string `json:"price_source" description:"价格来源 (series_pricing:系列加价, package_override:单套餐覆盖)"`
	Status               int    `json:"status" description:"套餐状态 (0:禁用, 1:启用)"`
	StatusName           string `json:"status_name" description:"状态名称（中文）"`
	ShelfStatus          int    `json:"shelf_status" description:"上架状态 (1:上架, 2:下架)"`
	ShelfStatusName      string `json:"shelf_status_name" description:"上架状态名称（中文）"`
}

// MySeriesAllocationListRequest 我的套餐系列分配列表请求
type MySeriesAllocationListRequest 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:"每页数量"`
}

// MySeriesAllocationResponse 我的套餐系列分配响应
type MySeriesAllocationResponse struct {
	ID                    uint   `json:"id" description:"分配ID"`
	SeriesID              uint   `json:"series_id" description:"套餐系列ID"`
	SeriesCode            string `json:"series_code" description:"系列编码"`
	SeriesName            string `json:"series_name" description:"系列名称"`
	BaseCommissionMode    string `json:"base_commission_mode" description:"基础佣金模式 (fixed:固定金额, percent:百分比)"`
	BaseCommissionValue   int64  `json:"base_commission_value" description:"基础佣金值"`
	AvailablePackageCount int    `json:"available_package_count" description:"可售套餐数量"`
	AllocatorShopName     string `json:"allocator_shop_name" description:"分配者店铺名称"`
	Status                int    `json:"status" description:"状态 (0:禁用, 1:启用)"`
	StatusName            string `json:"status_name" description:"状态名称（中文）"`
}

// MySeriesAllocationPageResult 我的套餐系列分配分页结果
type MySeriesAllocationPageResult struct {
	List     []*MySeriesAllocationResponse `json:"items" description:"分配列表"`
	Total    int64                         `json:"total" description:"总数"`
	Page     int                           `json:"page" description:"当前页"`
	PageSize int                           `json:"size" description:"每页数量"`
}

// PriceSource 价格来源常量
const (
	PriceSourceSeriesPricing   = "series_pricing"
	PriceSourcePackageOverride = "package_override"
)
