53 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			53 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
|  | package entities | |||
|  | 
 | |||
|  | import ( | |||
|  | 	"time" | |||
|  | 
 | |||
|  | 	"github.com/google/uuid" | |||
|  | 	"gorm.io/gorm" | |||
|  | ) | |||
|  | 
 | |||
|  | // ProductParameter 产品参数配置实体 | |||
|  | type ProductParameter struct { | |||
|  | 	ID          string         `gorm:"primaryKey;type:varchar(36)" comment:"参数配置ID"` | |||
|  | 	ProductID   string         `gorm:"type:varchar(36);not null;index" comment:"产品ID"` | |||
|  | 	Name        string         `gorm:"type:varchar(100);not null" comment:"参数名称"` | |||
|  | 	Field       string         `gorm:"type:varchar(50);not null" comment:"参数字段名"` | |||
|  | 	Type        string         `gorm:"type:varchar(20);not null;default:'string'" comment:"参数类型"` | |||
|  | 	Required    bool           `gorm:"default:true" comment:"是否必填"` | |||
|  | 	Description string         `gorm:"type:text" comment:"参数描述"` | |||
|  | 	Example     string         `gorm:"type:varchar(200)" comment:"参数示例"` | |||
|  | 	Validation  string         `gorm:"type:text" comment:"验证规则"` | |||
|  | 	SortOrder   int            `gorm:"default:0" comment:"排序"` | |||
|  | 	 | |||
|  | 	// 关联关系 | |||
|  | 	Product *Product `gorm:"foreignKey:ProductID" comment:"产品"` | |||
|  | 	 | |||
|  | 	CreatedAt time.Time      `gorm:"autoCreateTime" comment:"创建时间"` | |||
|  | 	UpdatedAt time.Time      `gorm:"autoUpdateTime" comment:"更新时间"` | |||
|  | 	DeletedAt gorm.DeletedAt `gorm:"index" comment:"软删除时间"` | |||
|  | } | |||
|  | 
 | |||
|  | // BeforeCreate GORM钩子:创建前自动生成UUID | |||
|  | func (pp *ProductParameter) BeforeCreate(tx *gorm.DB) error { | |||
|  | 	if pp.ID == "" { | |||
|  | 		pp.ID = uuid.New().String() | |||
|  | 	} | |||
|  | 	return nil | |||
|  | } | |||
|  | 
 | |||
|  | // IsValid 检查参数配置是否有效 | |||
|  | func (pp *ProductParameter) IsValid() bool { | |||
|  | 	return pp.DeletedAt.Time.IsZero() | |||
|  | } | |||
|  | 
 | |||
|  | // GetValidationRules 获取验证规则 | |||
|  | func (pp *ProductParameter) GetValidationRules() map[string]interface{} { | |||
|  | 	if pp.Validation == "" { | |||
|  | 		return nil | |||
|  | 	} | |||
|  | 	 | |||
|  | 	// 这里可以解析JSON格式的验证规则 | |||
|  | 	// 暂时返回空map,后续可以扩展 | |||
|  | 	return make(map[string]interface{}) | |||
|  | }  |