feat(cache): 添加复合键缓存操作支持 添加了基于 uint32+string 组合键的缓存操作方法,包括 GetByCompoundKey、SetByCompoundKey、DelByCompoundKey 和 ContainsByCompoundKey 方法,用于处理用户ID和会话ID的组合缓存场景 fix(vscode): 添加 cSpell 配置支持 struc 词汇 refactor(session): 移除过时的会话管理方法 移除了基于单一字符串键的会话管理方法,因为已迁移到使用 复合键的缓存操作方式 ```
107 lines
3.4 KiB
Go
107 lines
3.4 KiB
Go
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{})
|
||
}
|