package models import ( "time" "gorm.io/gorm" ) // ShippingTemplate 运费模板 type ShippingTemplate struct { ID uint `gorm:"primaryKey" json:"id"` Name string `gorm:"size:255;not null" json:"name"` // 模板名称(如"江浙沪包邮"、"偏远地区") CalcType string `gorm:"size:20;not null;default:'weight'" json:"calc_type"` // 计费方式:weight=按重量, piece=按件数 FirstUnit float64 `gorm:"type:decimal(10,2);not null" json:"first_unit"` // 首重/首件数量 FirstFee float64 `gorm:"type:decimal(10,2);not null" json:"first_fee"` // 首重/首件价格 AdditionalUnit float64 `gorm:"type:decimal(10,2);not null" json:"additional_unit"` // 续重/续件数量 AdditionalFee float64 `gorm:"type:decimal(10,2);not null" json:"additional_fee"` // 续重/续件价格 FreeAmount float64 `gorm:"type:decimal(10,2);default:0" json:"free_amount"` // 包邮金额(0表示不包邮) Provinces string `gorm:"type:text" json:"provinces"` // 适用省份列表(JSON数组,为空表示全国) IsDefault bool `gorm:"default:false" json:"is_default"` // 是否默认模板 SortOrder int `gorm:"default:0" json:"sort_order"` // 排序 CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` DeletedAt gorm.DeletedAt `gorm:"index" json:"-"` } func (ShippingTemplate) TableName() string { return "shipping_templates" } // 计费方式常量 const ( CalcTypeWeight = "weight" // 按重量计费 CalcTypePiece = "piece" // 按件数计费 )