Files
bl/modules/player/model/Barge.go

93 lines
3.3 KiB
Go
Raw Normal View History

package model
import (
"blazing/cool"
"errors"
)
// 表名常量定义:精灵捕捉击杀数量记录表
const (
TableNamePetCatchKillCount = "player_catch_kill_count" // 精灵捕捉击杀数量表(记录每个精灵的捕捉总数量、击杀总数量)
)
// PetBargeListInfo 精灵捕捉击杀数量核心模型(简化版,直接记录数量,摒弃状态判断)
type PetBargeListInfo struct {
Base
PlayerID uint64 `gorm:"not null;index:idx_milestone_by_player_id;comment:'所属玩家ID'" json:"player_id"`
PetId uint32 `gorm:"not null;default:0;comment:'精灵ID关联config_pet_boss表主键'" json:"pet_id" description:"精灵ID"`
EnCntCnt uint32 `gorm:"not null;default:0;comment:'预留未知字段,暂未使用'" json:"en_cnt_cnt" description:"未知"`
CatchedCount uint32 `gorm:"not null;default:0;comment:'精灵捕捉总数量'" json:"catched_count" description:"捕捉数量"` // 替换原IsCatched记录捕捉总数
KilledCount uint32 `gorm:"not null;default:0;comment:'精灵击杀总数量'" json:"killed_count" description:"击杀数量"` // 替换原IsKilled记录击杀总数
}
// -------------------------- 核心配套方法 --------------------------
// TableName 指定模型对应的数据库表名(遵循项目规范)
func (*PetBargeListInfo) TableName() string {
return TableNamePetCatchKillCount
}
// GroupName 指定表所属分组(与其他精灵表保持一致)
func (*PetBargeListInfo) GroupName() string {
return "default"
}
// NewPetBargeListInfo 创建精灵捕捉击杀数量实例(初始化默认值)
func NewPetBargeListInfo() *PetBargeListInfo {
return &PetBargeListInfo{
Base: *NewBase(),
}
}
// AddCatchedCount 增加捕捉数量支持批量累加默认累加1
// addNum要增加的数量需大于0
func (p *PetBargeListInfo) AddCatchedCount(addNum uint32) error {
if addNum <= 0 {
return errors.New("增加的捕捉数量必须大于0")
}
if p.PetId == 0 {
return errors.New("精灵ID不能为空无法累加捕捉数量")
}
p.CatchedCount += addNum
return nil
}
// AddKilledCount 增加击杀数量支持批量累加默认累加1
// addNum要增加的数量需大于0
func (p *PetBargeListInfo) AddKilledCount(addNum uint32) error {
if addNum <= 0 {
return errors.New("增加的击杀数量必须大于0")
}
if p.PetId == 0 {
return errors.New("精灵ID不能为空无法累加击杀数量")
}
p.KilledCount += addNum
return nil
}
// SetCatchedCount 直接设置捕捉数量(适用于批量初始化/重置)
// count目标捕捉数量非负数
func (p *PetBargeListInfo) SetCatchedCount(count uint32) error {
if p.PetId == 0 {
return errors.New("精灵ID不能为空无法设置捕捉数量")
}
p.CatchedCount = count
return nil
}
// SetKilledCount 直接设置击杀数量(适用于批量初始化/重置)
// count目标击杀数量非负数
func (p *PetBargeListInfo) SetKilledCount(count uint32) error {
if p.PetId == 0 {
return errors.New("精灵ID不能为空无法设置击杀数量")
}
p.KilledCount = count
return nil
}
// -------------------------- 表结构自动同步 --------------------------
func init() {
// 程序启动时自动创建/同步精灵捕捉击杀数量表
cool.CreateTable(&PetBargeListInfo{})
}