package schemas

// CreateShippingTemplateRequest 创建运费模板请求
type CreateShippingTemplateRequest struct {
	Name           string   `json:"name" binding:"required"`
	CalcType       string   `json:"calc_type" binding:"required,oneof=weight piece"`
	FirstUnit      float64  `json:"first_unit" binding:"required,gt=0"`
	FirstFee       float64  `json:"first_fee" binding:"gte=0"`
	AdditionalUnit float64  `json:"additional_unit" binding:"required,gt=0"`
	AdditionalFee  float64  `json:"additional_fee" binding:"gte=0"`
	FreeAmount     float64  `json:"free_amount"`
	Provinces      []string `json:"provinces"` // 省份列表
	IsDefault      bool     `json:"is_default"`
	SortOrder      int      `json:"sort_order"`
}

// UpdateShippingTemplateRequest 更新运费模板请求
type UpdateShippingTemplateRequest struct {
	Name           *string  `json:"name"`
	CalcType       *string  `json:"calc_type" binding:"omitempty,oneof=weight piece"`
	FirstUnit      *float64 `json:"first_unit" binding:"omitempty,gt=0"`
	FirstFee       *float64 `json:"first_fee" binding:"omitempty,gte=0"`
	AdditionalUnit *float64 `json:"additional_unit" binding:"omitempty,gt=0"`
	AdditionalFee  *float64 `json:"additional_fee" binding:"omitempty,gte=0"`
	FreeAmount     *float64 `json:"free_amount"`
	Provinces      []string `json:"provinces"`
	IsDefault      *bool    `json:"is_default"`
	SortOrder      *int     `json:"sort_order"`
}

// CalculateShippingRequest 计算运费请求
type CalculateShippingRequest struct {
	TemplateID *uint   `json:"template_id"`
	Weight     float64 `json:"weight"`
	Quantity   int     `json:"quantity"`
	Subtotal   float64 `json:"subtotal"`
	Province   string  `json:"province"`
}