Files
bl/modules/config/service/tower.go

90 lines
1.7 KiB
Go
Raw Normal View History

package service
import (
"blazing/cool"
"blazing/modules/config/model"
"github.com/gogf/gf/v2/database/gdb"
)
type TowerType uint32
const (
TowerType1 TowerType = 1
TowerType110 TowerType = 110
TowerType500 TowerType = 500
TowerType600 TowerType = 600
)
type TowerService struct {
*cool.Service
towerType TowerType
tableName string
}
func NewTowerService(towerType TowerType) *TowerService {
var tableName string
switch towerType {
case TowerType1:
tableName = model.TableNameRarePetTowerConfig
case TowerType110:
tableName = model.TableNamedARKTowerConfig
case TowerType500:
tableName = model.TableNameTrialTowerConfig
case TowerType600:
tableName = model.TableNameBraveTowerConfig
default:
panic("unsupported tower type")
}
unifiedModel := &UnifiedTowerModel{
tableName: tableName,
}
return &TowerService{
Service: &cool.Service{Model: unifiedModel},
towerType: towerType,
tableName: tableName,
}
}
type UnifiedTowerModel struct {
2026-02-01 00:39:36 +08:00
*cool.Model
tableName string
}
func (m *UnifiedTowerModel) TableName() string {
return m.tableName
}
func (m *UnifiedTowerModel) GroupName() string {
return "default"
}
func (s *TowerService) Boss(towerLevel ...uint32) []model.BaseTowerConfig {
query := dbm_enable(s.Model).WhereIn("tower_level", towerLevel).OrderAsc("tower_level")
var config []model.BaseTowerConfig
query.Cache(gdb.CacheOption{
Force: false,
}).Scan(&config)
return config
}
func NewTower1Service() *TowerService {
return NewTowerService(TowerType1)
}
func NewTower110Service() *TowerService {
return NewTowerService(TowerType110)
}
func NewTower500Service() *TowerService {
return NewTowerService(TowerType500)
}
func NewTower600Service() *TowerService {
return NewTowerService(TowerType600)
}