Files
sale/backend/internal/models/product.go
T
admin 33f5d242e9 feat: 商品添加克重字段,订单添加通道费,运费按重量计算
- 商品模型: 添加weight字段(克重)
- 订单模型: 添加channel_fee字段(支付通道费)
- 后台商品管理: 添加克重输入框
- 后台订单详情: 显示通道费
- 订单创建: 根据商品重量计算运费,添加通道费计算
- 购物车: 根据商品重量计算运费,显示通道费

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 20:01:45 +08:00

50 lines
1.9 KiB
Go

package models
import (
"time"
"gorm.io/gorm"
)
type Product struct {
ID uint `gorm:"primaryKey" json:"id"`
Name string `gorm:"size:255;not null" json:"name"`
Description string `json:"description"`
Price float64 `gorm:"type:decimal(10,2);not null" json:"price"`
Weight float64 `gorm:"type:decimal(10,2);default:0" json:"weight"` // 商品克重(克)
MinPurchase int `gorm:"default:1" json:"min_purchase"`
MaxPurchase *int `json:"max_purchase"`
MinWeight *float64 `json:"min_weight"`
MaxWeight *float64 `json:"max_weight"`
MinAmount *float64 `json:"min_amount"`
MaxAmount *float64 `json:"max_amount"`
RequireCredit bool `gorm:"default:false" json:"require_credit"`
CreditCost int `gorm:"default:0" json:"credit_cost"`
CreditReward int `gorm:"default:0" json:"credit_reward"`
Images string `gorm:"type:text" json:"images"`
IsActive bool `gorm:"default:true" json:"is_active"`
BrandID *uint `json:"brand_id"`
Brand *Brand `json:"brand,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
Categories []Category `gorm:"many2many:product_categories;" json:"categories,omitempty"`
CustomFields []ProductCustomField `json:"custom_fields,omitempty"`
}
func (Product) TableName() string {
return "products"
}
type ProductCustomField struct {
ID uint `gorm:"primaryKey" json:"id"`
ProductID uint `gorm:"index;not null" json:"product_id"`
FieldName string `gorm:"size:100;not null" json:"field_name"`
FieldValue string `json:"field_value"`
CreatedAt time.Time `json:"created_at"`
}
func (ProductCustomField) TableName() string {
return "product_custom_fields"
}