Files
bl/modules/player/model/done.go
昔念 180d735706
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
11
2026-02-14 07:36:05 +08:00

97 lines
3.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package model
import (
"blazing/cool"
"github.com/tnnmigga/enum"
)
var MilestoneEnum = enum.New[struct {
// CollectElfCount EnumMilestone `enum:"3515"` // 收集精灵数量
DailyTaskCount EnumMilestone `enum:"3510"` // 日常任务次数
MaxLevelCount EnumMilestone `enum:"3511"` // 满级数量
SingleAttrCount EnumMilestone `enum:"3512"` // 单属性数量
DoubleAttrCount EnumMilestone `enum:"3513"` // 双属性数量
Arena EnumMilestone `enum:"3508"` // 擂台
Brawl EnumMilestone `enum:"3504"` // 乱斗
ElfKing EnumMilestone `enum:"3503"` // 精灵王
BaseVisit EnumMilestone `enum:"3506"` // 基地拜访
BaseVisitedCount EnumMilestone `enum:"3520"` // 基地被拜访次数
WinSPTType EnumMilestone `enum:"3521"` // 战胜spt种类
CollectElfType EnumMilestone `enum:"3522"` // 收集精灵种类
DefeatWildElfCount EnumMilestone `enum:"3523"` // 击败野生精灵次数
//炫彩数量3524 不同种类的炫彩精灵3525
}]()
type EnumMilestone int
var MilestoneMode = enum.New[struct {
BOSS EnumMilestone //boss类 地图ID->BOSSID ,胜利次数 mapid bossid petid防止换boss后数据不可用
ITEM EnumMilestone //物品类 物品ID 使用精灵
Fight EnumMilestone //挑战类 对战模式->对战类型->1是赢,0是总局数
Moster EnumMilestone //野怪统计 地图ID->怪物ID
Task EnumMilestone
Pet EnumMilestone //宠物 属性->属性值->ID 击杀-捕捉-炫彩击杀-炫彩捕捉
Room EnumMilestone
}]()
const TableNameMilestone = "player_milestone"
// Milestone 数据库存储结构体映射milestone表
type Milestone struct {
Base
PlayerID uint64 `gorm:"not null;index:idx_milestone_by_player_id;comment:'所属玩家ID'" json:"player_id"`
DoneType EnumMilestone `gorm:"not null;comment:'里程碑类型'" json:"done_type"`
Args []int32 `gorm:"type:jsonb;not null;comment:'里程碑ID'" json:"args"`
// 注:不单独设置"里程碑ID",通过 PlayerID + DoneType + IDs 组合唯一标识一个里程碑(更灵活)
Results []uint32 `gorm:"type:jsonb;not null;comment:'里程碑参数'" json:"results"`
}
// // MilestoneEX 里程碑扩展结构体,用于业务层解析后的数据操作
// type MilestoneEX struct {
// Milestone
// Args []uint32 // 解析后的里程碑详细数据
// Results []uint32 `json:"results"` // 解析后的里程碑详细数据
// }
// // 检查是否触发过,成功返回触发的次数,失败返回0
// func (m *MilestoneEX) CheakNoNumber(count uint32) bool {
// // if v.DoneType == model.MilestoneMode.BOSS && IsPrefixBasicSlice(v.Args, []uint32{mapid, bossid}) && v.Count == count {
// _, ok := lo.Find(m.Results, func(v1 uint32) bool { //寻找是否触发过
// //大于触发值就触发然后1的返回false因为没有奖励这样就可以一直触发
// return v1 == count //大于等于就触发
// })
// //没找到且次数满足才能返回真
// if !ok && m.Count >= count {
// return true
// }
// //已经触发过
// return false
// // }
// }
// TableName 返回表名
func (*Milestone) TableName() string {
return TableNameMilestone
}
// GroupName 返回表组名
func (*Milestone) GroupName() string {
return "default"
}
// NewMilestone 创建新里程碑实例
func NewMilestone() *Milestone {
return &Milestone{
Base: *NewBase(),
}
}
// init 初始化表
func init() {
cool.CreateTable(&Milestone{})
}