package model import ( "blazing/cool" ) const ( TableNamePetFusion = "config_fusion_pet" // 宠物融合配方表(主表) ) // PetFusion 宠物融合配方主模型(核心配方规则) type PetFusion struct { *BaseConfig MainPetID int32 `gorm:"not null;comment:'主宠物ID(如:尼尔)'" json:"main_pet_id"` SubPetIDs []int32 `gorm:"type:int[];comment:'副宠物IDs(如:1,2,3)'" json:"sub_pet_ids"` Probability int32 `gorm:"not null;comment:'融合成功率(百分比,如80代表80%)'" json:"probability"` ResultPetID int32 `gorm:"not null;comment:'融合结果宠物ID(如:卡鲁、闪尼)'" json:"result_pet_id"` IsDefault int32 `gorm:"not null;default:0;comment:'是否默认配方(1:默认配方,0:非默认;所有配方不匹配时随机选默认配方)'" json:"is_default"` // 关联:一个配方对应多个材料(gorm 一对多关联,查询时可预加载) //Materials []*PetFusionMaterial `gorm:"foreignKey:PetFusionID;references:ID" json:"materials,omitempty"` } // TableName 指定主表名 func (*PetFusion) TableName() string { return TableNamePetFusion } // GroupName 表分组(与原逻辑一致) func (*PetFusion) GroupName() string { return "default" } // NewPetFusion 创建主表实例 func NewPetFusion() *PetFusion { return &PetFusion{ BaseConfig: NewBaseConfig(), } } // init 初始化主表结构 func init() { cool.CreateTable(&PetFusion{}) }