From a95e6b84917b49a5b8928f0b5ab0b5e07cea41fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <1@72wo.cn> Date: Mon, 17 Nov 2025 12:59:46 +0800 Subject: [PATCH] =?UTF-8?q?```=20feat(common):=20=E5=8D=87=E7=BA=A7=20gf?= =?UTF-8?q?=20=E6=A1=86=E6=9E=B6=E7=89=88=E6=9C=AC=E8=87=B3=20v2.8.0=20?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96=E6=A8=A1=E5=9E=8B=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 `github.com/gogf/gf/contrib/drivers/pgsql/v2` 和 redis 依赖从 v2.6.3 升级到 v2.8.0 - 使用 `*gtime.Time` 替代标准库 `time.Time` 以支持更灵活的时间处理 - 移除 Model 结构体中 CreateTime、UpdateTime 等字段的默认初始化逻辑 - 注释掉已弃用的 GDBM 函数,推荐使用 DBM - 在 DBM 中添加 OnConflict("id") 配置以增强写入安全性 - 调整部分代码结构与调用方式以适配新版框架行为 ``` --- common/contrib/drivers/pgsql/go.mod | 2 +- common/contrib/drivers/pgsql/go.sum | 3 +- common/cool/db.go | 10 ++-- common/cool/model.go | 17 +++---- common/data/xmlres/file.go | 2 +- logic/go.mod | 2 +- logic/go.sum | 3 +- logic/service/fight/effect/effect_41.go | 5 +- logic/service/fight/effect/effect_status.go | 4 +- login/go.mod | 2 +- login/go.sum | 2 - modules/blazing/go.sum | 3 +- modules/blazing/service/done.go | 2 + modules/blazing/service/info.go | 2 +- modules/blazing/service/login.go | 2 - modules/blazing/service/task.go | 51 ++++++++++----------- 16 files changed, 51 insertions(+), 61 deletions(-) diff --git a/common/contrib/drivers/pgsql/go.mod b/common/contrib/drivers/pgsql/go.mod index bb1011e28..969b9bee4 100644 --- a/common/contrib/drivers/pgsql/go.mod +++ b/common/contrib/drivers/pgsql/go.mod @@ -3,7 +3,7 @@ module blazing/contrib/drivers/pgsql go 1.18 require ( - github.com/gogf/gf/contrib/drivers/pgsql/v2 v2.6.3 + github.com/gogf/gf/contrib/drivers/pgsql/v2 v2.8.0 github.com/gogf/gf/v2 v2.8.0 gorm.io/driver/postgres v1.5.6 gorm.io/gorm v1.25.7 diff --git a/common/contrib/drivers/pgsql/go.sum b/common/contrib/drivers/pgsql/go.sum index 3de8d1d00..029900a2a 100644 --- a/common/contrib/drivers/pgsql/go.sum +++ b/common/contrib/drivers/pgsql/go.sum @@ -11,8 +11,7 @@ github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbV github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/gogf/gf/contrib/drivers/pgsql/v2 v2.6.3 h1:Q5wh3EHLksi0ej/KnBZBgr2MU6r3MISaEF341RjsBeI= -github.com/gogf/gf/contrib/drivers/pgsql/v2 v2.6.3/go.mod h1:4vzOwG+fZ76cGssHEhwao0Uto1nPpARPqgyZQ9ost/4= + github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= diff --git a/common/cool/db.go b/common/cool/db.go index 3e0685f41..9ae4c5aa4 100644 --- a/common/cool/db.go +++ b/common/cool/db.go @@ -5,12 +5,12 @@ import ( "github.com/gogf/gf/v2/frame/g" ) -// Deprecated 请使用 cool.DBM 替代 -func GDBM(m IModel) *gdb.Model { - return g.DB(m.GroupName()).Model(m.TableName()) -} +// // Deprecated 请使用 cool.DBM 替代 +// func GDBM(m IModel) *gdb.Model { +// return g.DB(m.GroupName()).Model(m.TableName()) +// } // DBM 根据model获取 *gdb.Model func DBM(m IModel) *gdb.Model { - return g.DB(m.GroupName()).Model(m.TableName()) + return g.DB(m.GroupName()).Model(m.TableName()).OnConflict("id") } diff --git a/common/cool/model.go b/common/cool/model.go index 08df9df2a..cdab70790 100644 --- a/common/cool/model.go +++ b/common/cool/model.go @@ -1,7 +1,7 @@ package cool import ( - "time" + "github.com/gogf/gf/v2/os/gtime" ) type IModel interface { @@ -16,10 +16,10 @@ type UserModel interface { GroupName() string } type Model struct { - ID uint `gorm:"primaryKey" json:"id"` - CreateTime time.Time `gorm:"column:createTime;not null;index,priority:1;autoCreateTime:nano;comment:创建时间" json:"createTime"` // 创建时间 - UpdateTime time.Time `gorm:"column:updateTime;not null;index,priority:1;autoUpdateTime:nano;comment:更新时间" json:"updateTime"` // 更新时间 - DeletedAt time.Time `gorm:"index" json:"deletedAt"` + ID uint `gorm:"primaryKey" json:"id"` + CreateTime *gtime.Time ` gorm:"column:createTime;not null;index,priority:1;autoCreateTime:nano;comment:创建时间" json:"createTime"` // 创建时间 + UpdateTime *gtime.Time ` gorm:"column:updateTime;not null;index,priority:1;autoUpdateTime:nano;comment:更新时间" json:"updateTime"` // 更新时间 + DeletedAt *gtime.Time `gorm:"index" json:"deletedAt"` } // 返回表名 @@ -33,10 +33,5 @@ func (m *Model) GroupName() string { } func NewModel() *Model { - return &Model{ - ID: 0, - CreateTime: time.Time{}, - UpdateTime: time.Time{}, - DeletedAt: time.Time{}, - } + return &Model{} } diff --git a/common/data/xmlres/file.go b/common/data/xmlres/file.go index 730549530..49c47a4a2 100644 --- a/common/data/xmlres/file.go +++ b/common/data/xmlres/file.go @@ -158,7 +158,7 @@ func init() { glog.Debug(ctx, "修改权限 : ", event.Path) } glog.Debug(ctx, event) - }, true) + }) if err != nil { glog.Fatal(ctx, err) diff --git a/logic/go.mod b/logic/go.mod index 56808c9bd..04950ed87 100644 --- a/logic/go.mod +++ b/logic/go.mod @@ -8,7 +8,7 @@ require ( github.com/brunoga/deep v1.2.5 github.com/creasty/defaults v1.8.0 github.com/gobwas/ws v1.4.0 - github.com/gogf/gf/contrib/nosql/redis/v2 v2.6.3 + github.com/gogf/gf/contrib/nosql/redis/v2 v2.8.0 github.com/jinzhu/copier v0.4.0 github.com/lunixbochs/struc v0.0.0-20241101090106-8d528fa2c543 github.com/panjf2000/ants/v2 v2.11.3 diff --git a/logic/go.sum b/logic/go.sum index a14e25108..ab83796e5 100644 --- a/logic/go.sum +++ b/logic/go.sum @@ -40,8 +40,7 @@ github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.4.0 h1:CTaoG1tojrh4ucGPcoJFiAQUAsEWekEWvLy7GsVNqGs= github.com/gobwas/ws v1.4.0/go.mod h1:G3gNqMNtPppf5XUz7O4shetPpcZ1VJ7zt18dlUeakrc= -github.com/gogf/gf/contrib/nosql/redis/v2 v2.6.3 h1:tbN3rYVSi5MfCS5qAaZ1Xg3fSsyHeT++tJZqEiH1s4c= -github.com/gogf/gf/contrib/nosql/redis/v2 v2.6.3/go.mod h1:2+evGu1xAlamaYuDdSqa7QCiwPTm1RrGsUFSMc8PyLc= + github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= diff --git a/logic/service/fight/effect/effect_41.go b/logic/service/fight/effect/effect_41.go index f50991f0a..27bb0efcf 100644 --- a/logic/service/fight/effect/effect_41.go +++ b/logic/service/fight/effect/effect_41.go @@ -23,8 +23,11 @@ type Effect41 struct { } func (e *Effect41) SetArgs(t *input.Input, a ...int) { - n := e.Input.FightC.GetRand().Int31n(int32(e.Args()[1]-e.Args()[0]+1)) + int32(e.Args()[0]) e.EffectNode.SetArgs(t, a...) + t1 := e.Input.FightC + t2 := t1.GetRand() + n := t2.Int31n(int32(e.Args()[1]-e.Args()[0]+1)) + int32(e.Args()[0]) + e.EffectNode.Duration(int(n)) } diff --git a/logic/service/fight/effect/effect_status.go b/logic/service/fight/effect/effect_status.go index 0cfdb2ea2..b604ff8fa 100644 --- a/logic/service/fight/effect/effect_status.go +++ b/logic/service/fight/effect/effect_status.go @@ -66,7 +66,7 @@ type ContinuousDamage struct { } // 技能命中前触发伤害(1/8最大生命值真实伤害) -func (e *ContinuousDamage) Skill_Hit_Pre_ex(attacker, defender *action.SelectSkillAction) bool { +func (e *ContinuousDamage) Skill_Hit_Pre(attacker, defender *action.SelectSkillAction) bool { damage := e.calculateDamage() e.Ctx().Our.Damage(e.Input, &info.DamageZone{ Type: info.DamageType.True, @@ -87,7 +87,7 @@ type ParasiticSeed struct { } // 技能命中前触发寄生效果 -func (e *ParasiticSeed) Skill_Hit_Pre(attacker, defender *action.SelectSkillAction) bool { +func (e *ParasiticSeed) Skill_Hit_Pre_ex(attacker, defender *action.SelectSkillAction) bool { // 过滤特定类型单位(假设1是植物类型,使用枚举替代魔法数字) if gconv.Int(e.Ctx().Our.CurrentPet.Type) == int(element.ElementTypeGrass) { return true diff --git a/login/go.mod b/login/go.mod index b91317147..3ddbc920a 100644 --- a/login/go.mod +++ b/login/go.mod @@ -3,7 +3,7 @@ module blazing/login go 1.19 require ( - github.com/gogf/gf/contrib/nosql/redis/v2 v2.6.3 + github.com/gogf/gf/contrib/nosql/redis/v2 v2.8.0 github.com/gogf/gf/v2 v2.8.0 ) diff --git a/login/go.sum b/login/go.sum index 2c6b199c4..2fb272a15 100644 --- a/login/go.sum +++ b/login/go.sum @@ -30,8 +30,6 @@ github.com/go-redis/redis/v8 v8.11.4/go.mod h1:2Z2wHZXdQpCDXEGzqMockDpNyYvi2l4Px github.com/go-resty/resty/v2 v2.6.0 h1:joIR5PNLM2EFqqESUjCMGXrWmXNHEU9CEiK813oKYS4= github.com/go-resty/resty/v2 v2.6.0/go.mod h1:PwvJS6hvaPkjtjNg9ph+VrSD92bi5Zq73w/BIH7cC3Q= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/gogf/gf/contrib/nosql/redis/v2 v2.6.3 h1:tbN3rYVSi5MfCS5qAaZ1Xg3fSsyHeT++tJZqEiH1s4c= -github.com/gogf/gf/contrib/nosql/redis/v2 v2.6.3/go.mod h1:2+evGu1xAlamaYuDdSqa7QCiwPTm1RrGsUFSMc8PyLc= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= diff --git a/modules/blazing/go.sum b/modules/blazing/go.sum index 462748836..541307761 100644 --- a/modules/blazing/go.sum +++ b/modules/blazing/go.sum @@ -22,8 +22,7 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyLFfuisuzeidWPMPWmECqU= github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= -github.com/gogf/gf/v2 v2.8.0 h1:CjxhbMiE7oqf6K8ZtGuKt3dQEwK4vL6LhiI+dI7tJGU= -github.com/gogf/gf/v2 v2.8.0/go.mod h1:Qu8nimKt9aupJQcdUL85tWF4Mfxocz97zUt8UC4abVI= + github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/pprof v0.0.0-20230207041349-798e818bf904 h1:4/hN5RUoecvl+RmJRE2YxKWtnnQls6rQjjW5oV7qg2U= github.com/google/pprof v0.0.0-20230207041349-798e818bf904/go.mod h1:uglQLonpP8qtYCYyzA+8c/9qtqgA3qsXGYqCPKARAFg= diff --git a/modules/blazing/service/done.go b/modules/blazing/service/done.go index 18bac15ad..55e37ae92 100644 --- a/modules/blazing/service/done.go +++ b/modules/blazing/service/done.go @@ -18,6 +18,8 @@ func (s *DoneService) Exec(data model.EnumMilestone, id []uint32, fn func(*model if !ook { //不需要保存 return } + tt.PlayerID = uint64(s.userid) + _, err := m.Save(tt) if err != nil { panic(err) diff --git a/modules/blazing/service/info.go b/modules/blazing/service/info.go index 9f0f4f674..497e9994f 100644 --- a/modules/blazing/service/info.go +++ b/modules/blazing/service/info.go @@ -54,7 +54,7 @@ func (s *InfoService) Reg(nick string, color uint32) { func (s *InfoService) Person(userid uint32) *model.PlayerInfo { - m := cool.GDBM(s.Model).Where("player_id", userid) + m := cool.DBM(s.Model).Where("player_id", userid) var tt model.PlayerEX err := m.Scan(&tt) if err != nil { diff --git a/modules/blazing/service/login.go b/modules/blazing/service/login.go index a83269798..abac7122a 100644 --- a/modules/blazing/service/login.go +++ b/modules/blazing/service/login.go @@ -84,8 +84,6 @@ func (s *LoginService) SetServerID(OnlineID uint16, Port uint16) error { tttt.Port = Port tttt.OnlineID = OnlineID - //t.Quit(int32(tttt.Port)) - //m.Data(&model.ServerList{OnlineID: OnlineID, Port: Port}).Where("online_id", OnlineID).Update() m.Save(tttt) return nil diff --git a/modules/blazing/service/task.go b/modules/blazing/service/task.go index 4d38ba362..c0d8053af 100644 --- a/modules/blazing/service/task.go +++ b/modules/blazing/service/task.go @@ -3,44 +3,41 @@ package service import ( "blazing/cool" "blazing/modules/blazing/model" - "encoding/json" "time" ) -func Exec[T cool.UserModel, F any](userid uint32, s *cool.Service, processFunc func(F) F) bool { - //todo待测试 - var player T +// func Exec[T cool.UserModel, F any](userid uint32, s *cool.Service, processFunc func(F) F) bool { +// //todo待测试 +// var player T - m1 := cool.DBM(s.Model).Where("player_id", userid) - m1.Scan(&player) - // 方法2:使用反射获取 - // 获取反射值对象 +// m1 := cool.DBM(s.Model).Where("player_id", userid) +// m1.Scan(&player) +// // 方法2:使用反射获取 +// // 获取反射值对象 - ttt := player +// ttt := player - //fmt.Println(dataField.Interface().(string)) - var tt F - err := json.Unmarshal([]byte(ttt.GetData()), &tt) - if err != nil { - panic(err) - } - tt1 := processFunc(tt) - tmep, err := json.Marshal(tt1) - if err != nil { - panic(err) - } +// //fmt.Println(dataField.Interface().(string)) +// var tt F +// err := json.Unmarshal([]byte(ttt.GetData()), &tt) +// if err != nil { +// panic(err) +// } +// tt1 := processFunc(tt) +// tmep, err := json.Marshal(tt1) +// if err != nil { +// panic(err) +// } - ttt.SetData(string(tmep)) - m1.Save(player) - return false -} +// ttt.SetData(string(tmep)) +// m1.Save(player) +// return false +// } // 获取任务信息 func (s *TaskService) Exec(id uint32, t func(*model.TaskEX) bool) { var gg model.TaskEX - m1 := cool.GDBM(s.Model). - Where("player_id", s.userid). - Where("task_id", id) + m1 := s.GModel(s.Model).Where("task_id", id) m1.Scan(&gg) tre := t(&gg) if !tre { //不需要更新