```
feat(pet): 实现宠物展示功能和稀有宠物塔配置 - 添加PetDisplay字段到Player结构体,用于管理宠物展示状态 - 实现PlayerShowPet方法,支持宠物展示逻辑,包括设置展示标识、 检查宠物存在性并返回相应错误码 - 在Space中添加RefreshUserInfo方法,用于刷新用户信息并应用 宠物展示信息到SimpleInfo - 扩展SimpleInfo结构体,添加PetRide字段用于宠物骑乘标识
This commit is contained in:
@@ -38,7 +38,7 @@ func (s *ItemService) GetItemCount(id uint32) data.ItemInfo {
|
||||
}
|
||||
return res
|
||||
}
|
||||
func (s *ItemService) AllEgg( ) []model.ItemGift {
|
||||
func (s *ItemService) AllEgg() []model.ItemGift {
|
||||
var item []model.ItemGift
|
||||
dbm_notenable(s.Model).Where("is_egg", 1).Scan(&item)
|
||||
|
||||
@@ -68,7 +68,7 @@ func NewItemService() *ItemService {
|
||||
|
||||
Model: model.NewItemGift(),
|
||||
ListQueryOp: &cool.QueryOp{
|
||||
FieldEQ: []string{"is_egg", "is_light"},
|
||||
FieldEQ: []string{"is_egg"},
|
||||
},
|
||||
PageQueryOp: &cool.QueryOp{
|
||||
KeyWordField: []string{"remark"},
|
||||
|
||||
@@ -14,37 +14,36 @@ func NewPetRewardService() *PetRewardService {
|
||||
&cool.Service{
|
||||
Model: model.NewPetReward(),
|
||||
ListQueryOp: &cool.QueryOp{
|
||||
FieldEQ: []string{"is_egg", "is_light"},
|
||||
FieldEQ: []string{"is_egg"},
|
||||
},
|
||||
|
||||
PageQueryOp: &cool.QueryOp{
|
||||
|
||||
FieldEQ: []string{"is_egg", "is_light"},
|
||||
FieldEQ: []string{"is_egg"},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (s *PetRewardService) GetEgg() model.PetReward {
|
||||
var item model.PetReward
|
||||
dbm_nocache_noenable(s.Model).Where("is_egg", 1).OrderRandom().Limit(1).Scan(&item)
|
||||
|
||||
return item
|
||||
|
||||
}
|
||||
|
||||
func (s *PetRewardService) AllEgg() []model.PetReward {
|
||||
var item []model.PetReward
|
||||
dbm_nocache_noenable(s.Model).Where("is_egg", 1).Scan(&item)
|
||||
|
||||
return item
|
||||
|
||||
}
|
||||
|
||||
func (s *PetRewardService) Get(id uint32) *model.PetReward {
|
||||
if id == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
var item *model.PetReward
|
||||
dbm_notenable(s.Model).Where("id", id).Scan(&item)
|
||||
|
||||
return item
|
||||
|
||||
}
|
||||
|
||||
@@ -7,26 +7,27 @@ import (
|
||||
"github.com/gogf/gf/v2/database/gdb"
|
||||
)
|
||||
|
||||
// 定义塔类型枚举,方便区分不同塔的业务逻辑
|
||||
type TowerType uint32
|
||||
|
||||
const (
|
||||
TowerType110 TowerType = 110 // 110塔
|
||||
TowerType500 TowerType = 500 // 500塔
|
||||
TowerType600 TowerType = 600 // 600塔
|
||||
TowerType1 TowerType = 1
|
||||
TowerType110 TowerType = 110
|
||||
TowerType500 TowerType = 500
|
||||
TowerType600 TowerType = 600
|
||||
)
|
||||
|
||||
// TowerService 统一的塔配置服务,整合110/500/600塔的逻辑
|
||||
type TowerService struct {
|
||||
*cool.Service
|
||||
towerType TowerType // 标记当前服务对应的塔类型
|
||||
tableName string // 存储当前塔类型对应的表名
|
||||
towerType TowerType
|
||||
tableName string
|
||||
}
|
||||
|
||||
// NewTowerService 创建指定类型的塔配置服务
|
||||
func NewTowerService(towerType TowerType) *TowerService {
|
||||
var tableName string
|
||||
|
||||
switch towerType {
|
||||
case TowerType1:
|
||||
tableName = model.TableNameRarePetTowerConfig
|
||||
case TowerType110:
|
||||
tableName = model.TableNamedARKTowerConfig
|
||||
case TowerType500:
|
||||
@@ -34,10 +35,9 @@ func NewTowerService(towerType TowerType) *TowerService {
|
||||
case TowerType600:
|
||||
tableName = model.TableNameBraveTowerConfig
|
||||
default:
|
||||
panic("unsupported tower type: " + string(rune(towerType))) // 非支持类型直接panic,也可返回error
|
||||
panic("unsupported tower type")
|
||||
}
|
||||
|
||||
// 创建一个统一的模型,设置对应的表名
|
||||
unifiedModel := &UnifiedTowerModel{
|
||||
tableName: tableName,
|
||||
}
|
||||
@@ -49,37 +49,33 @@ func NewTowerService(towerType TowerType) *TowerService {
|
||||
}
|
||||
}
|
||||
|
||||
// UnifiedTowerModel 统一的塔模型,通过设置不同的表名来区分不同类型的塔
|
||||
type UnifiedTowerModel struct {
|
||||
*cool.Model
|
||||
tableName string
|
||||
}
|
||||
|
||||
// TableName 返回当前模型对应的表名
|
||||
func (m *UnifiedTowerModel) TableName() string {
|
||||
return m.tableName
|
||||
}
|
||||
|
||||
// GroupName 返回模型所属组
|
||||
func (m *UnifiedTowerModel) GroupName() string {
|
||||
return "default"
|
||||
}
|
||||
|
||||
// Boss 根据塔等级获取对应的Boss配置(统一入口)
|
||||
func (s *TowerService) Boss(towerLevel ...uint32) []model.BaseTowerConfig {
|
||||
// 构建基础查询条件
|
||||
query := dbm_enable(s.Model).WhereIn("tower_level", towerLevel).OrderAsc("tower_level")
|
||||
|
||||
// 600塔专属的缓存配置
|
||||
var config []model.BaseTowerConfig
|
||||
query.Cache(gdb.CacheOption{
|
||||
// Duration: time.Hour, // 可根据需要开启缓存时长
|
||||
Force: false,
|
||||
}).Scan(&config)
|
||||
return config
|
||||
}
|
||||
|
||||
// 兼容原有调用方式的快捷构造函数(可选,保证代码平滑迁移)
|
||||
func NewTower1Service() *TowerService {
|
||||
return NewTowerService(TowerType1)
|
||||
}
|
||||
|
||||
func NewTower110Service() *TowerService {
|
||||
return NewTowerService(TowerType110)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user