diff --git a/common/utils/go-sensitive-word-1.3.3/go.mod b/common/utils/go-sensitive-word-1.3.3/go.mod index 99d9523cc..9dbf5c8e6 100644 --- a/common/utils/go-sensitive-word-1.3.3/go.mod +++ b/common/utils/go-sensitive-word-1.3.3/go.mod @@ -2,33 +2,4 @@ module github.com/zmexing/go-sensitive-word go 1.20 -require ( - - github.com/orcaman/concurrent-map/v2 v2.0.1 -) - -require ( - github.com/andybalholm/brotli v1.1.0 // indirect - github.com/cloudflare/circl v1.3.7 // indirect - github.com/go-logr/logr v1.4.2 // indirect - github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect - github.com/google/pprof v0.0.0-20240227163752-401108e1b7e7 // indirect - github.com/hashicorp/errwrap v1.1.0 // indirect - github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/klauspost/compress v1.17.9 // indirect - github.com/onsi/ginkgo/v2 v2.16.0 // indirect - github.com/quic-go/qpack v0.4.0 // indirect - github.com/quic-go/qtls-go1-20 v0.4.1 // indirect - github.com/quic-go/quic-go v0.40.1 // indirect - github.com/refraction-networking/utls v1.6.3 // indirect - github.com/stretchr/testify v1.11.1 // indirect - go.uber.org/mock v0.4.0 // indirect - golang.org/x/crypto v0.31.0 // indirect - golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect - golang.org/x/mod v0.17.0 // indirect - golang.org/x/net v0.33.0 // indirect - golang.org/x/sys v0.30.0 // indirect - golang.org/x/text v0.22.0 // indirect - golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect - google.golang.org/protobuf v1.31.0 // indirect -) +require github.com/orcaman/concurrent-map/v2 v2.0.1 diff --git a/common/utils/go-sensitive-word-1.3.3/go.sum b/common/utils/go-sensitive-word-1.3.3/go.sum index 76a3437a1..9f1dcef32 100644 --- a/common/utils/go-sensitive-word-1.3.3/go.sum +++ b/common/utils/go-sensitive-word-1.3.3/go.sum @@ -1,55 +1,2 @@ -github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= -github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= -github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= -github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/pprof v0.0.0-20240227163752-401108e1b7e7 h1:y3N7Bm7Y9/CtpiVkw/ZWj6lSlDF3F74SfKwfTCer72Q= -github.com/google/pprof v0.0.0-20240227163752-401108e1b7e7/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= -github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= -github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/imroc/req/v3 v3.42.3 h1:ryPG2AiwouutAopwPxKpWKyxgvO8fB3hts4JXlh3PaE= -github.com/imroc/req/v3 v3.42.3/go.mod h1:Axz9Y/a2b++w5/Jht3IhQsdBzrG1ftJd1OJhu21bB2Q= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/onsi/ginkgo/v2 v2.16.0 h1:7q1w9frJDzninhXxjZd+Y/x54XNjG/UlRLIYPZafsPM= -github.com/onsi/ginkgo/v2 v2.16.0/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3HigUjbIBOs= -github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8= github.com/orcaman/concurrent-map/v2 v2.0.1 h1:jOJ5Pg2w1oeB6PeDurIYf6k9PQ+aTITr/6lP/L/zp6c= github.com/orcaman/concurrent-map/v2 v2.0.1/go.mod h1:9Eq3TG2oBe5FirmYWQfYO5iH1q0Jv47PLaNK++uCdOM= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= -github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= -github.com/quic-go/qtls-go1-20 v0.4.1 h1:D33340mCNDAIKBqXuAvexTNMUByrYmFYVfKfDN5nfFs= -github.com/quic-go/qtls-go1-20 v0.4.1/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k= -github.com/quic-go/quic-go v0.40.1 h1:X3AGzUNFs0jVuO3esAGnTfvdgvL4fq655WaOi1snv1Q= -github.com/quic-go/quic-go v0.40.1/go.mod h1:PeN7kuVJ4xZbxSv/4OX6S1USOX8MJvydwpTx31vx60c= -github.com/refraction-networking/utls v1.6.3 h1:MFOfRN35sSx6K5AZNIoESsBuBxS2LCgRilRIdHb6fDc= -github.com/refraction-networking/utls v1.6.3/go.mod h1:yil9+7qSl+gBwJqztoQseO6Pr3h62pQoY1lXiNR/FPs= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= -go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= -golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= -golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/logic/controller/action_大师杯.go b/logic/controller/action_大师杯.go index 18b8aeb31..8170f167d 100644 --- a/logic/controller/action_大师杯.go +++ b/logic/controller/action_大师杯.go @@ -72,26 +72,30 @@ func (h Controller) DASHIbeiR(req *C2s_MASTER_REWARDSR, c *player.Player) (resul } result.ItemList = make([]data.ItemInfo, 0, len(taskInfo.ItemList)) - c.Service.Task.Exec(masterCupTaskID, func(te *model.Task) bool { - progress := bitset32.From(te.Data) - if progress.Test(uint(req.ElementType)) { - err = errorcode.ErrorCode(errorcode.ErrorCodes.ErrAwardAlreadyClaimed) - return false - } + taskData, taskErr := c.Service.Task.GetTask(masterCupTaskID) + if taskErr != nil { + return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError) + } - consumeMasterCupItems(c, requiredItems) - progress.Set(uint(req.ElementType)) - te.Data = progress.Bytes() + progress := bitset32.From(taskData.Data) + if progress.Test(uint(req.ElementType)) { + return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrAwardAlreadyClaimed) + } - if taskInfo.Pet != nil { - c.Service.Pet.PetAdd(taskInfo.Pet, 0) - result.CaptureTime = taskInfo.Pet.CatchTime - result.PetTypeId = taskInfo.Pet.ID - } + consumeMasterCupItems(c, requiredItems) + progress.Set(uint(req.ElementType)) + taskData.Data = progress.Bytes() + if taskErr = c.Service.Task.SetTask(taskData); taskErr != nil { + return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError) + } - appendMasterCupRewardItems(c, result, taskInfo.ItemList) - return true - }) + if taskInfo.Pet != nil { + c.Service.Pet.PetAdd(taskInfo.Pet, 0) + result.CaptureTime = taskInfo.Pet.CatchTime + result.PetTypeId = taskInfo.Pet.ID + } + + appendMasterCupRewardItems(c, result, taskInfo.ItemList) return } diff --git a/logic/controller/pet_收集计划.go b/logic/controller/pet_收集计划.go index 993b95e10..d3226c093 100644 --- a/logic/controller/pet_收集计划.go +++ b/logic/controller/pet_收集计划.go @@ -17,15 +17,13 @@ func (h Controller) IsCollect( ID: data.Type, } - c.Service.Task.Exec(uint32(1335), func(te *model.Task) bool { - - r := bitset32.From(te.Data) - // 分支未完成时,标记完成并发放奖励 + taskData, taskErr := c.Service.Task.GetTask(uint32(1335)) + if taskErr == nil { + r := bitset32.From(taskData.Data) if r.Test(uint(data.Type)) { result.IsCom = 1 } - return false - }) + } _, ok := lo.Find([]uint32{1, 2, 3, 4, 301}, func(item uint32) bool { return data.Type == item @@ -59,14 +57,17 @@ func (h Controller) Collect( return data.Type == item }) if res == model.Completed && ok { //这块是为了兼容旧版本 - c.Service.Task.Exec(uint32(1335), func(te *model.Task) bool { + taskData, taskErr := c.Service.Task.GetTask(uint32(1335)) + if taskErr != nil { + return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError) + } - r := bitset32.From(te.Data) - - r.Set(uint(data.Type)) - te.Data = r.Bytes() - return true - }) + r := bitset32.From(taskData.Data) + r.Set(uint(data.Type)) + taskData.Data = r.Bytes() + if taskErr = c.Service.Task.SetTask(taskData); taskErr != nil { + return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError) + } return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError) } @@ -80,21 +81,22 @@ func (h Controller) Collect( if !lo.Contains(validIDs, data.ID) { return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError) } - c.Service.Task.Exec(uint32(1335), func(te *model.Task) bool { + taskData, taskErr := c.Service.Task.GetTask(uint32(1335)) + if taskErr != nil { + return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError) + } - r := bitset32.From(te.Data) - // 分支未完成时,标记完成并发放奖励 - if !r.Test(uint(data.Type)) { - r.Set(uint(data.Type)) - te.Data = r.Bytes() - r := model.GenPetInfo(int(data.ID), -1, -1, 0, 1, nil, 0) - c.Service.Pet.PetAdd(r, 0) - result.CatchTime = r.CatchTime - - return true + r := bitset32.From(taskData.Data) + if !r.Test(uint(data.Type)) { + r.Set(uint(data.Type)) + taskData.Data = r.Bytes() + if taskErr = c.Service.Task.SetTask(taskData); taskErr != nil { + return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError) } - return false - }) + petInfo := model.GenPetInfo(int(data.ID), -1, -1, 0, 1, nil, 0) + c.Service.Pet.PetAdd(petInfo, 0) + result.CatchTime = petInfo.CatchTime + } if result.CatchTime == 0 { return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrAwardAlreadyClaimed) diff --git a/logic/main.go b/logic/main.go index 1aa0bbb42..34620c10e 100644 --- a/logic/main.go +++ b/logic/main.go @@ -52,7 +52,7 @@ func PprofWeb() { } // 所有端口都失败时的兜底 - errMsg := fmt.Sprintf("[FATAL] 端口9909/9910均监听失败,pprof服务启动失败") + errMsg := "[FATAL] 端口9909/9910均监听失败,pprof服务启动失败" fmt.Println(errMsg) // 可选:根据业务需求决定是否panic // panic(errMsg) @@ -148,7 +148,7 @@ func monitorMemAndQuit() { // 4. 超70%阈值,执行优雅退出 if usedRatio >= memThresholdRatio { - log.Fatalf("内存占比达%.1f%%,超过90%阈值,程序开始退出", usedRatio*100) + log.Fatalf("内存占比达%.1f%%,超过90%%阈值,程序开始退出", usedRatio*100) // ########## 可选:这里添加你的优雅清理逻辑 ########## // 如:关闭数据库连接、释放文件句柄、保存业务状态、推送退出告警等 cleanup() diff --git a/logic/service/player/boss.go b/logic/service/player/boss.go index b6bb852e1..de8f040cc 100644 --- a/logic/service/player/boss.go +++ b/logic/service/player/boss.go @@ -56,29 +56,24 @@ func (p *Player) TawerCompletedTask(taskID int, ot int) { } // 处理指定分支(ot):仅奖励存在时才标记分支完成并发奖 - p.Service.Task.Exec(uint32(taskID), func(te *model.Task) bool { + taskData, err := p.Service.Task.GetTask(uint32(taskID)) + if err != nil { + return + } - // 核心检查:指定分支的奖励是否存在 - branchGift := p.getTaskGift(taskID, ot) - if branchGift == nil { - return false - } + // 核心检查:指定分支的奖励是否存在 + branchGift := p.getTaskGift(taskID, ot) + if branchGift == nil { + return + } - // 初始化分支数据 - if te.Data == nil { - te.Data = []uint32{} - } - - r := bitset32.From(te.Data) - // 分支未完成时,标记完成并发放奖励 - if !r.Test(uint(ot)) { - r.Set(uint(ot)) - p.bossgive(taskID, ot) - te.Data = r.Bytes() - return true - } - return false - }) + r := bitset32.From(taskData.Data) + if !r.Test(uint(ot)) { + r.Set(uint(ot)) + p.bossgive(taskID, ot) + taskData.Data = r.Bytes() + _ = p.Service.Task.SetTask(taskData) + } } // bossgive 发放任务奖励(逻辑保持不变,仅补充注释)