Files
bl/modules/config/service/tower.go
昔念 971abd29ab ```
feat(config): 添加服务器调试模式配置和塔配置重构

- 在ServerList结构体中添加IsDebug字段用于调试模式标识
- 修改GetServerInfoList函数增加isdebug参数支持
- 移除硬编码的rpcaddr本地地址配置
- 重构塔配置模型,将tower_500和tower_600合并到tower_110
2026-01-08 23:57:22 +08:00

89 lines
2.3 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 service
import (
"blazing/cool"
"blazing/modules/config/model"
"github.com/gogf/gf/v2/database/gdb"
)
// 定义塔类型枚举,方便区分不同塔的业务逻辑
type TowerType uint32
const (
TowerType110 TowerType = 110 // 110塔
TowerType500 TowerType = 500 // 500塔
TowerType600 TowerType = 600 // 600塔
)
// TowerService 统一的塔配置服务整合110/500/600塔的逻辑
type TowerService struct {
*cool.Service
towerType TowerType // 标记当前服务对应的塔类型
}
// NewTowerService 创建指定类型的塔配置服务
func NewTowerService(towerType TowerType) *TowerService {
// 根据塔类型初始化对应的Model
var modelInstance cool.IModel
switch towerType {
case TowerType110:
modelInstance = model.New110TowerConfig()
case TowerType500:
modelInstance = model.New500TowerConfig()
case TowerType600:
modelInstance = model.New600TowerConfig()
default:
panic("unsupported tower type: " + string(rune(towerType))) // 非支持类型直接panic也可返回error
}
return &TowerService{
Service: &cool.Service{Model: modelInstance},
towerType: towerType,
}
}
// Boss 根据塔等级获取对应的Boss配置统一入口
func (s *TowerService) Boss(towerLevel uint32) *model.BaseTowerConfig {
// 构建基础查询条件
query := cool.DBM(s.Model).Where("tower_level = ?", towerLevel)
// 根据塔类型处理不同的配置结构体和缓存逻辑
switch s.towerType {
case TowerType110:
var config model.Tower110Config
query.Scan(&config)
return &config.BaseTowerConfig
case TowerType500:
var config model.Tower500Config
query.Scan(&config)
return &config.BaseTowerConfig
case TowerType600:
var config model.Tower600Config
// 600塔专属的缓存配置
query.Cache(gdb.CacheOption{
// Duration: time.Hour, // 可根据需要开启缓存时长
Force: false,
}).Scan(&config)
return &config.BaseTowerConfig
default:
return nil // 非支持类型返回nil也可根据业务需求调整
}
}
// 兼容原有调用方式的快捷构造函数(可选,保证代码平滑迁移)
func NewTower110Service() *TowerService {
return NewTowerService(TowerType110)
}
func NewTower500Service() *TowerService {
return NewTowerService(TowerType500)
}
func NewTower600Service() *TowerService {
return NewTowerService(TowerType600)
}