``feat(model): 新增精灵奖励表(MonBonus)和物品奖励表(ItemBonus)模型,包含核心属性和通用配置字段``

This commit is contained in:
1
2025-12-12 17:26:20 +00:00
parent 75bcbb89c5
commit 3242207f95

View File

@@ -0,0 +1,111 @@
package model
import (
"blazing/cool"
)
// ---------------- 精灵奖励表MonBonus----------------
// 表名常量(遵循小写+下划线命名规范)
const TableNameMonBonus = "mon_bonus"
// MonBonus 精灵奖励表
// 存储打赢BOSS/野怪后奖励的精灵属性配置(包含核心战斗属性、特性、闪光、性格等)
type MonBonus struct {
*cool.Model // 嵌入基础Model主键ID、创建/更新时间等通用字段)
// 核心唯一标识
MonBonusID uint32 `gorm:"not null;uniqueIndex:idx_mon_bonus_id;comment:'精灵奖励唯一标识ID对应XML中的MonBonusOutID'" json:"mon_bonus_id"`
// 你指定的精灵核心属性字段
MonID int32 `gorm:"not null;index:idx_mon_id;comment:'BOSS对应的精灵ID'" json:"mon_id"`
Hp int32 `gorm:"not null;comment:'BOSS血量值LvHpMatchUser非0时此配置无效'" json:"hp"`
Lv int32 `gorm:"not null;comment:'BOSS等级LvHpMatchUser非0时此配置无效'" json:"lv"`
Atk int32 `gorm:"not null;comment:'BOSS物理攻击'" json:"atk"`
Def int32 `gorm:"not null;comment:'BOSS物理防御'" json:"def"`
Spatk int32 `gorm:"not null;comment:'BOSS特殊攻击'" json:"spatk"`
Spdef int32 `gorm:"not null;comment:'BOSS特殊防御'" json:"spdef"`
Spd int32 `gorm:"not null;comment:'BOSS速度'" json:"spd"`
// 精灵扩展属性(贴合游戏业务)
Trait string `gorm:"type:varchar(64);default:'';comment:'精灵特性(例:猛火、蓄水)'" json:"trait"`
IsShiny bool `gorm:"not null;default:false;comment:'是否为闪光精灵true-是false-否)'" json:"is_shiny"`
Personality string `gorm:"type:varchar(64);default:'';comment:'精灵性格(例:固执、保守)'" json:"personality"`
// 通用配置字段
IsEnabled bool `gorm:"not null;default:true;comment:'该精灵奖励配置是否启用'" json:"is_enabled"`
Desc string `gorm:"type:varchar(512);default:'';comment:'精灵奖励描述击败火焰BOSS奖励闪光喷火龙'" json:"desc"`
}
// TableName 指定精灵奖励表名(遵循现有规范)
func (*MonBonus) TableName() string {
return TableNameMonBonus
}
// GroupName 指定表分组(与其他表保持一致的默认分组)
func (*MonBonus) GroupName() string {
return "default"
}
// NewMonBonus 创建精灵奖励表实例初始化基础Model
func NewMonBonus() *MonBonus {
return &MonBonus{
Model: cool.NewModel(),
}
}
// ---------------- 物品奖励表ItemBonus----------------
// 表名常量(遵循小写+下划线命名规范)
const TableNameItemBonus = "item_bonus"
// ItemBonus 物品奖励表
// 存储打赢BOSS/野怪后奖励的物品配置物品ID+数量,支持单条记录对应单个物品,便于灵活配置)
type ItemBonus struct {
*cool.Model // 嵌入基础Model主键ID、创建/更新时间等通用字段)
// 核心唯一标识
ItemBonusID uint32 `gorm:"not null;uniqueIndex:idx_item_bonus_id;comment:'物品奖励唯一标识ID对应XML中的ItemBonusOutID/ItemBonusID'" json:"item_bonus_id"`
// 物品核心配置字段
ItemID uint32 `gorm:"not null;index:idx_item_id;comment:'奖励物品ID'" json:"item_id"`
Count int32 `gorm:"not null;default:1;comment:'奖励物品数量(支持正数,负数表示扣减)'" json:"count"`
// 通用配置字段
IsEnabled bool `gorm:"not null;default:true;comment:'该物品奖励配置是否启用'" json:"is_enabled"`
Desc string `gorm:"type:varchar(512);default:'';comment:'物品奖励描述击败岩石BOSS奖励高级伤药x5'" json:"desc"`
}
// TableName 指定物品奖励表名(遵循现有规范)
func (*ItemBonus) TableName() string {
return TableNameItemBonus
}
// GroupName 指定表分组(与其他表保持一致的默认分组)
func (*ItemBonus) GroupName() string {
return "default"
}
// NewItemBonus 创建物品奖励表实例初始化基础Model
func NewItemBonus() *ItemBonus {
return &ItemBonus{
Model: cool.NewModel(),
}
}
// ---------------- 可选辅助方法(提升易用性)----------------
// AdjustCount 调整物品奖励数量(支持增量/减量)
func (i *ItemBonus) AdjustCount(delta int32) {
i.Count += delta
// 防止数量为负数(根据业务需求可选,若允许扣减则注释此行)
if i.Count < 0 {
i.Count = 0
}
}
// ---------------- 表初始化逻辑(与现有表保持一致)----------------
// init 程序启动时自动创建精灵奖励表和物品奖励表(若不存在)
func init() {
cool.CreateTable(&MonBonus{})
cool.CreateTable(&ItemBonus{})
}