package model import ( "blazing/cool" ) // -------------------------- 表名常量定义(统一管理所有塔配置表名)-------------------------- const ( TableNamedARKTowerConfig = "config_tower_110" // 勇者之塔110配置表 TableNameTrialTowerConfig = "config_tower_500" // 试炼之塔500配置表 TableNameBraveTowerConfig = "config_tower_600" // 勇者之塔600配置表 ) // -------------------------- 核心基类:所有塔配置的通用结构 -------------------------- type BaseTowerConfig struct { *cool.Model `json:"-" gorm:"embedded"` // 嵌入通用Model(ID/创建时间/更新时间,不参与json序列化) // 核心必填字段(所有塔类型通用) TowerLevel uint32 `gorm:"not null;default:0;uniqueIndex;comment:'塔层数(唯一标识每层配置)'" json:"tower_level" description:"塔层数"` BossIds []uint32 `gorm:"not null;type:json;default:'[]';comment:'绑定BOSS ID数组,关联config_pet_boss表主键'" json:"boss_ids" description:"绑定BOSS数组"` TaskIds []uint32 `gorm:"not null;type:json;default:'[]';comment:'绑定任务ID数组,关联config_task表主键'" json:"task_ids" description:"绑定任务数组"` // 通用辅助字段(所有塔类型通用) IsEnabled uint32 `gorm:"not null;default:1;comment:'是否启用该层配置(0-禁用 1-启用)'" json:"is_enabled" description:"是否启用"` Remark string `gorm:"size:512;default:'';comment:'塔层备注'" json:"remark" description:"备注信息"` // ItemGift []ItemGift `orm:"with:item_id=id"` } // NewBaseTowerConfig 创建基础塔配置实例(所有塔类型共用) func NewBaseTowerConfig() BaseTowerConfig { return BaseTowerConfig{ Model: cool.NewModel(), } } // -------------------------- 各塔类型专属配置模型(无额外字段,仅绑定不同表名)-------------------------- // Tower110Config 勇者之塔110配置模型 type Tower110Config struct { BaseTowerConfig } // Tower500Config 试炼之塔500配置模型 type Tower500Config struct { BaseTowerConfig } // Tower600Config 勇者之塔600配置模型 type Tower600Config struct { BaseTowerConfig } // -------------------------- 各塔模型的核心配套方法(统一规范)-------------------------- // ===== Tower110Config 专属方法 ===== func (*Tower110Config) TableName() string { return TableNamedARKTowerConfig } func (*Tower110Config) GroupName() string { return "default" } func New110TowerConfig() *Tower110Config { return &Tower110Config{ BaseTowerConfig: NewBaseTowerConfig(), } } // ===== Tower500Config 专属方法 ===== func (*Tower500Config) TableName() string { return TableNameTrialTowerConfig } func (*Tower500Config) GroupName() string { return "default" } func New500TowerConfig() *Tower500Config { return &Tower500Config{ BaseTowerConfig: NewBaseTowerConfig(), } } // ===== Tower600Config 专属方法 ===== func (*Tower600Config) TableName() string { return TableNameBraveTowerConfig } func (*Tower600Config) GroupName() string { return "default" } func New600TowerConfig() *Tower600Config { return &Tower600Config{ BaseTowerConfig: NewBaseTowerConfig(), } } // -------------------------- 表结构自动同步(初始化所有塔配置表)-------------------------- func init() { // 依次创建所有塔配置表,保持原有自动同步逻辑 cool.CreateTable(&Tower110Config{}) cool.CreateTable(&Tower500Config{}) cool.CreateTable(&Tower600Config{}) }