refactor(config): 移除怪物刷新相关代码并优化地图坑位配置 移除 modules/config/controller/admin/monster_refresh.go 中的 TaskInfoController 及其相关路由注册逻辑 移除 modules/config/model/map_monster.go 中的 MonsterRefresh 模型定义及相关常量、方法 重构 modules/config/model/map_pit.go 中的 MapPit 结
This commit is contained in:
@@ -1,22 +0,0 @@
|
|||||||
package admin
|
|
||||||
|
|
||||||
import (
|
|
||||||
"blazing/cool"
|
|
||||||
"blazing/modules/config/service"
|
|
||||||
)
|
|
||||||
|
|
||||||
type TaskInfoController struct {
|
|
||||||
*cool.Controller
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
var task_info_controller = &TaskInfoController{
|
|
||||||
&cool.Controller{
|
|
||||||
Prefix: "/admin/monster/refresh",
|
|
||||||
Api: []string{"Add", "Delete", "Update", "Info", "List", "Page"},
|
|
||||||
Service: service.NewMonsterService(),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
// 注册路由
|
|
||||||
cool.RegisterController(task_info_controller)
|
|
||||||
}
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
package model
|
|
||||||
|
|
||||||
import (
|
|
||||||
"blazing/cool"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
TableNameMonsterRefresh = "config_monster_refresh" // 怪物刷新规则表(地图-精灵等级-刷新脚本配置)
|
|
||||||
)
|
|
||||||
|
|
||||||
// MonsterRefresh 怪物刷新规则模型(对应前端配置的地图/精灵/等级/脚本配置)
|
|
||||||
type MonsterRefresh struct {
|
|
||||||
*BaseConfig
|
|
||||||
|
|
||||||
MapID int32 `gorm:"not null;comment:'地图ID'" json:"map_id"`
|
|
||||||
|
|
||||||
PitID1 []int32 `gorm:"type:int[];not null;comment:'坑位1绑定的坑位ID列表(多绑,循环刷)'" json:"pit_id_1"`
|
|
||||||
PitID2 []int32 `gorm:"type:int[];not null;comment:'坑位2绑定的坑位ID列表(多绑,循环刷)'" json:"pit_id_2"`
|
|
||||||
PitID3 []int32 `gorm:"type:int[];not null;comment:'坑位3绑定的坑位ID列表(多绑,循环刷)'" json:"pit_id_3"`
|
|
||||||
PitID4 []int32 `gorm:"type:int[];not null;comment:'坑位4绑定的坑位ID列表(多绑,循环刷)'" json:"pit_id_4"`
|
|
||||||
PitID5 []int32 `gorm:"type:int[];not null;comment:'坑位5绑定的坑位ID列表(多绑,循环刷)'" json:"pit_id_5"`
|
|
||||||
PitID6 []int32 `gorm:"type:int[];not null;comment:'坑位6绑定的坑位ID列表(多绑,循环刷)'" json:"pit_id_6"`
|
|
||||||
PitID7 []int32 `gorm:"type:int[];not null;comment:'坑位7绑定的坑位ID列表(多绑,循环刷)'" json:"pit_id_7"`
|
|
||||||
PitID8 []int32 `gorm:"type:int[];not null;comment:'坑位8绑定的坑位ID列表(多绑,循环刷)'" json:"pit_id_8"`
|
|
||||||
PitID9 []int32 `gorm:"type:int[];not null;comment:'坑位9绑定的坑位ID列表(多绑,循环刷)'" json:"pit_id_9"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type MonsterRefreshEX struct {
|
|
||||||
MonsterRefresh
|
|
||||||
MonsterID []uint32 `json:"monster_id"`
|
|
||||||
ShinyID []uint32 `json:"shiny_id"`
|
|
||||||
// 扩展:便于批量处理9个坑位
|
|
||||||
PitIDs [9][]uint32 `json:"pit_ids"` // 整合所有坑位ID,前端/业务层批量处理用
|
|
||||||
}
|
|
||||||
|
|
||||||
// TableName 指定MonsterRefresh对应的数据库表名
|
|
||||||
func (*MonsterRefresh) TableName() string {
|
|
||||||
return TableNameMonsterRefresh
|
|
||||||
}
|
|
||||||
|
|
||||||
// GroupName 指定表所属的分组(保持和参考示例一致)
|
|
||||||
func (*MonsterRefresh) GroupName() string {
|
|
||||||
return "default"
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewMonsterRefresh 创建一个新的MonsterRefresh实例(初始化通用Model)
|
|
||||||
func NewMonsterRefresh() *MonsterRefresh {
|
|
||||||
return &MonsterRefresh{
|
|
||||||
BaseConfig: NewBaseConfig(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// init 初始化表结构(程序启动时自动创建/同步表)
|
|
||||||
func init() {
|
|
||||||
cool.CreateTable(&MonsterRefresh{})
|
|
||||||
}
|
|
||||||
@@ -21,13 +21,13 @@ type Event struct {
|
|||||||
|
|
||||||
// MapPit 地图坑位核心配置模型(参照MonsterRefresh实现风格)
|
// MapPit 地图坑位核心配置模型(参照MonsterRefresh实现风格)
|
||||||
type MapPit struct {
|
type MapPit struct {
|
||||||
*cool.Model // 保留通用Model(ID/创建时间/更新时间等)
|
*BaseConfig
|
||||||
|
|
||||||
Remark string `gorm:"type:varchar(255);default:'';comment:'性别配置备注(如:默认性别规则)'" json:"remark"` // 调整注释 // 复用通用基础配置(ID/创建时间/更新时间等)
|
|
||||||
MapID []int32 `gorm:"type:int[];comment:'绑定地图地图ID'" json:"map_id"`
|
|
||||||
*Event
|
*Event
|
||||||
|
// 复用通用基础配置(ID/创建时间/更新时间等)
|
||||||
|
MapID []int32 `gorm:"type:int[];comment:'绑定地图地图ID'" json:"map_id"`
|
||||||
|
|
||||||
RefreshID []int `gorm:"type:int[];comment:'精灵ID列表'" json:"refresh_id"`
|
RefreshID []int `gorm:"type:int[];comment:'精灵ID列表'" json:"refresh_id"`
|
||||||
|
Pos []int `gorm:"type:int[];comment:'坑位位置'" json:"pos"`
|
||||||
//最小等级
|
//最小等级
|
||||||
MinLevel int `gorm:"type:int;default:0;comment:'最小等级'" json:"min_level"`
|
MinLevel int `gorm:"type:int;default:0;comment:'最小等级'" json:"min_level"`
|
||||||
//最大等级
|
//最大等级
|
||||||
@@ -49,8 +49,8 @@ func (*MapPit) GroupName() string {
|
|||||||
// NewMapPit 创建一个新的MapPit实例(初始化通用BaseConfig)
|
// NewMapPit 创建一个新的MapPit实例(初始化通用BaseConfig)
|
||||||
func NewMapPit() *MapPit {
|
func NewMapPit() *MapPit {
|
||||||
return &MapPit{
|
return &MapPit{
|
||||||
Model: cool.NewModel(),
|
BaseConfig: NewBaseConfig(),
|
||||||
Event: &Event{},
|
Event: &Event{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,98 +1,95 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
// import (
|
||||||
"blazing/cool"
|
// "blazing/cool"
|
||||||
"blazing/modules/config/model"
|
// "blazing/modules/config/model"
|
||||||
|
|
||||||
"fmt"
|
// "fmt"
|
||||||
"strconv"
|
// "strconv"
|
||||||
"time"
|
// "time"
|
||||||
|
|
||||||
"github.com/dop251/goja"
|
// "github.com/dop251/goja"
|
||||||
"github.com/gogf/gf/v2/database/gdb"
|
// "github.com/gogf/gf/v2/database/gdb"
|
||||||
"github.com/gogf/gf/v2/frame/g"
|
// "github.com/gogf/gf/v2/frame/g"
|
||||||
"github.com/gogf/gf/v2/util/gconv"
|
// "github.com/gogf/gf/v2/util/gconv"
|
||||||
)
|
// )
|
||||||
|
|
||||||
type MonsterService struct {
|
// type MonsterService struct {
|
||||||
*cool.Service
|
// *cool.Service
|
||||||
}
|
// }
|
||||||
|
|
||||||
func NewMonsterService() *MonsterService {
|
// func NewMonsterService() *MonsterService {
|
||||||
return &MonsterService{
|
// return &MonsterService{
|
||||||
&cool.Service{
|
// &cool.Service{
|
||||||
Model: model.NewMonsterRefresh(),
|
// Model: model.NewMonsterRefresh(),
|
||||||
},
|
// },
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
func (s *MonsterService) ModifyAfter(ctx g.Ctx, method string, param g.MapStrAny) (err error) {
|
// func (s *MonsterService) ModifyAfter(ctx g.Ctx, method string, param g.MapStrAny) (err error) {
|
||||||
|
|
||||||
gconv.String(param["map_id"])
|
// gconv.String(param["map_id"])
|
||||||
cool.DBM(s.Model).Cache((gdb.CacheOption{
|
// cool.DBM(s.Model).Cache((gdb.CacheOption{
|
||||||
Duration: -1,
|
// Duration: -1,
|
||||||
Name: model.TableNameMonsterRefresh + gconv.String(param["map_id"]),
|
// Name: model.TableNameMonsterRefresh + gconv.String(param["map_id"]),
|
||||||
Force: false,
|
// Force: false,
|
||||||
}))
|
// }))
|
||||||
|
|
||||||
return nil
|
// return nil
|
||||||
}
|
// }
|
||||||
|
|
||||||
func (s *MonsterService) GetId(mapid uint32) []model.MonsterRefresh {
|
// func (s *MonsterService) GetId(mapid uint32) []model.MonsterRefresh {
|
||||||
|
|
||||||
m := cool.DBM(s.Model).Where("map_id", mapid).Cache(
|
// m := cool.DBM(s.Model).Where("map_id", mapid).Cache(
|
||||||
gdb.CacheOption{
|
// gdb.CacheOption{
|
||||||
Duration: time.Hour,
|
// Duration: time.Hour,
|
||||||
Name: model.TableNameMonsterRefresh + strconv.Itoa(int(mapid)),
|
// Name: model.TableNameMonsterRefresh + strconv.Itoa(int(mapid)),
|
||||||
Force: false,
|
// Force: false,
|
||||||
},
|
// },
|
||||||
)
|
// )
|
||||||
var tt []model.MonsterRefresh
|
// var tt []model.MonsterRefresh
|
||||||
m.Scan(&tt)
|
// m.Scan(&tt)
|
||||||
|
|
||||||
// for _, v := range tt {
|
// // for _, v := range tt {
|
||||||
|
|
||||||
// if v.MapID == int32(mapid) {
|
// // if v.MapID == int32(mapid) {
|
||||||
// return uint32(v.MonsterID)
|
// // return uint32(v.MonsterID)
|
||||||
|
|
||||||
// }
|
// // }
|
||||||
|
|
||||||
// }
|
// // }
|
||||||
return tt
|
// return tt
|
||||||
|
|
||||||
}
|
// }
|
||||||
func Test_kick() {
|
// func Test_kick() {
|
||||||
const SCRIPT = `
|
// const SCRIPT = `
|
||||||
function shouldRefresh(userId, day, dayOfWeek, hour, minute) {
|
// function shouldRefresh(userId, day, dayOfWeek, hour, minute) {
|
||||||
return true;
|
// return true;
|
||||||
|
|
||||||
|
// }
|
||||||
|
// `
|
||||||
|
// t, _ := goja.Compile("test.js", SCRIPT, false)
|
||||||
|
// vm := goja.New()
|
||||||
|
// _, err := vm.RunProgram(t)
|
||||||
|
// if err != nil {
|
||||||
|
// panic(err)
|
||||||
|
// }
|
||||||
|
// sum, ok := goja.AssertFunction(vm.Get("shouldRefresh"))
|
||||||
|
// if !ok {
|
||||||
|
// panic("Not a function")
|
||||||
|
// }
|
||||||
|
|
||||||
|
// res, err := sum(
|
||||||
|
// goja.Undefined(),
|
||||||
}
|
// vm.ToValue(1),
|
||||||
`
|
// vm.ToValue(time.Now().Day()),
|
||||||
t, _ := goja.Compile("test.js", SCRIPT, false)
|
// vm.ToValue(time.Now().Weekday()),
|
||||||
vm := goja.New()
|
// vm.ToValue(time.Now().Hour()),
|
||||||
_, err := vm.RunProgram(t)
|
// vm.ToValue(time.Now().Minute()),
|
||||||
if err != nil {
|
// )
|
||||||
panic(err)
|
// if err != nil {
|
||||||
}
|
// panic(err)
|
||||||
sum, ok := goja.AssertFunction(vm.Get("shouldRefresh"))
|
// }
|
||||||
if !ok {
|
// fmt.Println(res)
|
||||||
panic("Not a function")
|
// // Output: 42
|
||||||
}
|
// }
|
||||||
|
|
||||||
res, err := sum(
|
|
||||||
goja.Undefined(),
|
|
||||||
vm.ToValue(1),
|
|
||||||
vm.ToValue(time.Now().Day()),
|
|
||||||
vm.ToValue(time.Now().Weekday()),
|
|
||||||
vm.ToValue(time.Now().Hour()),
|
|
||||||
vm.ToValue(time.Now().Minute()),
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
fmt.Println(res)
|
|
||||||
// Output: 42
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user