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{})
|
|||
|
|
}
|