From ae3e9d8fd69a3cce62a3cd648ae12b2b27e304eb Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Tue, 8 Oct 2024 11:07:24 +0800 Subject: [PATCH 1/5] =?UTF-8?q?rabbitmq=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dbproxy/main.go | 3 +- dbproxy/mq/c_apilog.go | 31 ++--- dbproxy/mq/c_coingivelog.go | 27 ++--- dbproxy/mq/c_coinlog.go | 27 ++--- dbproxy/mq/c_customlog.go | 6 + dbproxy/mq/c_friendrecordlog.go | 28 ++--- dbproxy/mq/c_gamegamedetailedlog.go | 26 ++--- dbproxy/mq/c_gameplayerlistlog.go | 27 ++--- dbproxy/mq/c_invite.go | 29 ++--- dbproxy/mq/c_itemlog.go | 27 ++--- dbproxy/mq/c_loginlog.go | 27 ++--- dbproxy/mq/c_onlinelog.go | 29 ++--- dbproxy/mq/c_rank.go | 151 ++++++++----------------- dbproxy/mq/c_scenecoinlog.go | 30 ++--- dbproxy/mq/c_vipgiftlog.go | 30 ++--- dbproxy/mq/c_welfarelog.go | 30 ++--- dbproxy/mq/init.go | 19 ---- gamesrv/base/logchannel.go | 62 ---------- gamesrv/base/player.go | 29 ++--- gamesrv/base/replay_recorder.go | 10 +- gamesrv/base/scene.go | 9 +- gamesrv/main.go | 1 + gamesrv/mq/init.go | 19 ++++ gamesrv/tienlen/scenedata_tienlen.go | 3 +- gamesrv/tienlen/scenepolicy_tienlen.go | 3 +- gatesrv/clientlog.go | 5 +- gatesrv/logchannel.go | 46 -------- gatesrv/main.go | 1 + gatesrv/mq/init.go | 10 ++ mgrsrv/api/logchannel.go | 57 ---------- mgrsrv/api/webapi_gamesrv.go | 3 +- mgrsrv/api/webapi_worldsrv.go | 3 +- mgrsrv/main.go | 1 + mgrsrv/mq/init.go | 10 ++ model/rabbit_mq.go | 13 +-- model/rabbitmqdata.go | 9 +- mq/{messagemgr.go => export.go} | 85 ++++++++++---- mq/internal/constant.go | 20 ++++ mq/{ => internal}/consumer.go | 23 +--- mq/{ => internal}/publisher.go | 37 +----- mq/keyconf.go | 6 +- worldsrv/action_bag.go | 19 ++-- worldsrv/action_phonelottery.go | 12 +- worldsrv/action_player.go | 9 +- worldsrv/action_rankmatch.go | 6 +- worldsrv/action_server.go | 5 +- worldsrv/action_task.go | 6 +- worldsrv/action_welfare.go | 6 +- worldsrv/bagmgr.go | 13 ++- worldsrv/etcd.go | 3 +- worldsrv/invitecode.go | 5 +- worldsrv/logchannel.go | 75 ------------ worldsrv/mq_coinlog.go | 76 +++++++------ worldsrv/permitmgr.go | 5 +- worldsrv/player.go | 56 ++++----- worldsrv/playeronline.go | 3 +- worldsrv/rankmatch.go | 13 ++- worldsrv/shopmgr.go | 12 +- worldsrv/task_login.go | 13 ++- worldsrv/transact_minigameaddcoin.go | 2 +- worldsrv/welfmgr.go | 9 +- 61 files changed, 500 insertions(+), 860 deletions(-) delete mode 100644 dbproxy/mq/init.go delete mode 100644 gamesrv/base/logchannel.go create mode 100644 gamesrv/mq/init.go delete mode 100644 gatesrv/logchannel.go create mode 100644 gatesrv/mq/init.go delete mode 100644 mgrsrv/api/logchannel.go create mode 100644 mgrsrv/mq/init.go rename mq/{messagemgr.go => export.go} (54%) create mode 100644 mq/internal/constant.go rename mq/{ => internal}/consumer.go (83%) rename mq/{ => internal}/publisher.go (79%) delete mode 100644 worldsrv/logchannel.go diff --git a/dbproxy/main.go b/dbproxy/main.go index 4ca7989..8db7452 100644 --- a/dbproxy/main.go +++ b/dbproxy/main.go @@ -12,7 +12,7 @@ import ( _ "mongo.games.com/game" "mongo.games.com/game/common" - dbmq "mongo.games.com/game/dbproxy/mq" + _ "mongo.games.com/game/dbproxy/mq" "mongo.games.com/game/dbproxy/svc" "mongo.games.com/game/model" "mongo.games.com/game/mq" @@ -20,7 +20,6 @@ import ( ) func main() { - dbmq.Init() // 自定义配置文件 model.InitGameParam() // package模块 diff --git a/dbproxy/mq/c_apilog.go b/dbproxy/mq/c_apilog.go index b213a7c..cca9994 100644 --- a/dbproxy/mq/c_apilog.go +++ b/dbproxy/mq/c_apilog.go @@ -1,36 +1,25 @@ package mq import ( - "encoding/json" - - "mongo.games.com/goserver/core/broker" - "mongo.games.com/goserver/core/broker/rabbitmq" - "mongo.games.com/game/dbproxy/svc" "mongo.games.com/game/model" "mongo.games.com/game/mq" ) func init() { - mq.RegisterSubscriber(mq.MgrAPILog, func(e broker.Event) (err error) { - msg := e.Message() - if msg != nil { - defer func() { - e.Ack() - }() - - var log model.APILog - err = json.Unmarshal(msg.Body, &log) - if err != nil { - return + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: mq.DBAPILog, + Data: model.APILog{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.APILog) + if !ok { + return nil } - c := svc.APILogsCollection() if c != nil { err = c.Insert(log) } - return - } - return nil - }, broker.Queue(mq.MgrAPILog), broker.DisableAutoAck(), rabbitmq.DurableQueue()) + return nil + }, + }) } diff --git a/dbproxy/mq/c_coingivelog.go b/dbproxy/mq/c_coingivelog.go index 6dcd606..71abb62 100644 --- a/dbproxy/mq/c_coingivelog.go +++ b/dbproxy/mq/c_coingivelog.go @@ -1,36 +1,25 @@ package mq import ( - "encoding/json" - - "mongo.games.com/goserver/core/broker" - "mongo.games.com/goserver/core/broker/rabbitmq" - "mongo.games.com/game/dbproxy/svc" "mongo.games.com/game/model" "mongo.games.com/game/mq" ) func init() { - mq.RegisterSubscriber(model.CoinGiveLogCollName, func(e broker.Event) (err error) { - msg := e.Message() - if msg != nil { - defer func() { - e.Ack() - }() - - var log model.CoinGiveLog - err = json.Unmarshal(msg.Body, &log) - if err != nil { + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: mq.DBGiveLog, + Data: model.CoinGiveLog{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.CoinGiveLog) + if !ok { return } - c := svc.CoinGiveLogCollection(log.Platform) if c != nil { err = c.Insert(log) } return - } - return nil - }, broker.Queue(model.CoinGiveLogCollName), broker.DisableAutoAck(), rabbitmq.DurableQueue()) + }, + }) } diff --git a/dbproxy/mq/c_coinlog.go b/dbproxy/mq/c_coinlog.go index 80375d6..13a92ce 100644 --- a/dbproxy/mq/c_coinlog.go +++ b/dbproxy/mq/c_coinlog.go @@ -1,30 +1,20 @@ package mq import ( - "encoding/json" - - "mongo.games.com/goserver/core/broker" - "mongo.games.com/goserver/core/broker/rabbitmq" - "mongo.games.com/game/dbproxy/svc" "mongo.games.com/game/model" "mongo.games.com/game/mq" ) func init() { - mq.RegisterSubscriber(model.CoinLogCollName, func(e broker.Event) (err error) { - msg := e.Message() - if msg != nil { - defer func() { - e.Ack() - }() - - var log model.CoinLog - err = json.Unmarshal(msg.Body, &log) - if err != nil { + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: model.CoinLogCollName, + Data: &model.CoinLog{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.CoinLog) + if !ok { return } - if log.Count == 0 { //玩家冲账探针 mq.Send(mq.WorldLogCoinAck, log) } else { @@ -40,7 +30,6 @@ func init() { } } return - } - return nil - }, broker.Queue(model.CoinLogCollName), broker.DisableAutoAck(), rabbitmq.DurableQueue()) + }, + }) } diff --git a/dbproxy/mq/c_customlog.go b/dbproxy/mq/c_customlog.go index 897d1d5..5811610 100644 --- a/dbproxy/mq/c_customlog.go +++ b/dbproxy/mq/c_customlog.go @@ -7,6 +7,12 @@ import ( ) func init() { + // 竞技馆获奖通知 + mq.RegisterMessage(&mq.RegisterMessageParam{ + Name: mq.RankCustomLogAward, + Data: model.CustomLogAward{}, + }) + // 竞技馆对局记录 mq.RegisterHandler(&mq.RegisterHandlerParam{ Name: mq.DBCustomLog, diff --git a/dbproxy/mq/c_friendrecordlog.go b/dbproxy/mq/c_friendrecordlog.go index 862b78b..82b8f3f 100644 --- a/dbproxy/mq/c_friendrecordlog.go +++ b/dbproxy/mq/c_friendrecordlog.go @@ -1,32 +1,22 @@ package mq import ( - "encoding/json" - - "mongo.games.com/goserver/core/broker" - "mongo.games.com/goserver/core/broker/rabbitmq" - "mongo.games.com/game/dbproxy/svc" "mongo.games.com/game/model" "mongo.games.com/game/mq" ) func init() { - mq.RegisterSubscriber(model.FriendRecordLogCollName, func(e broker.Event) (err error) { - msg := e.Message() - if msg != nil { - defer func() { - e.Ack() - }() - - var log model.FriendRecord - err = json.Unmarshal(msg.Body, &log) - if err != nil { + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: model.FriendRecordLogCollName, + Data: &model.FriendRecord{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.FriendRecord) + if !ok { return } - err = svc.InsertFriendRecordLog(log) + err = svc.InsertFriendRecordLog(*log) return - } - return nil - }, broker.Queue(model.FriendRecordLogCollName), broker.DisableAutoAck(), rabbitmq.DurableQueue()) + }, + }) } diff --git a/dbproxy/mq/c_gamegamedetailedlog.go b/dbproxy/mq/c_gamegamedetailedlog.go index c3cdfac..d0a7246 100644 --- a/dbproxy/mq/c_gamegamedetailedlog.go +++ b/dbproxy/mq/c_gamegamedetailedlog.go @@ -1,10 +1,6 @@ package mq import ( - "encoding/json" - - "mongo.games.com/goserver/core/broker" - "mongo.games.com/goserver/core/broker/rabbitmq" "mongo.games.com/goserver/core/logger" "mongo.games.com/game/dbproxy/svc" @@ -13,19 +9,14 @@ import ( ) func init() { - mq.RegisterSubscriber(model.GameDetailedLogCollName, func(e broker.Event) (err error) { - msg := e.Message() - if msg != nil { - defer func() { - e.Ack() - }() - - var log model.GameDetailedLog - err = json.Unmarshal(msg.Body, &log) - if err != nil { + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: model.GameDetailedLogCollName, + Data: &model.GameDetailedLog{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.GameDetailedLog) + if !ok { return } - logger.Logger.Tracef("mq receive GameDetailedLog:%v", log) c := svc.GameDetailedLogsCollection(log.Platform) if c != nil { err = c.Insert(log) @@ -34,7 +25,6 @@ func init() { } } return - } - return nil - }, broker.Queue(model.GameDetailedLogCollName), broker.DisableAutoAck(), rabbitmq.DurableQueue()) + }, + }) } diff --git a/dbproxy/mq/c_gameplayerlistlog.go b/dbproxy/mq/c_gameplayerlistlog.go index bf998fc..d3c5d39 100644 --- a/dbproxy/mq/c_gameplayerlistlog.go +++ b/dbproxy/mq/c_gameplayerlistlog.go @@ -1,36 +1,25 @@ package mq import ( - "encoding/json" - - "mongo.games.com/goserver/core/broker" - "mongo.games.com/goserver/core/broker/rabbitmq" - "mongo.games.com/game/dbproxy/svc" "mongo.games.com/game/model" "mongo.games.com/game/mq" ) func init() { - mq.RegisterSubscriber(model.GamePlayerListLogCollName, func(e broker.Event) (err error) { - msg := e.Message() - if msg != nil { - defer func() { - e.Ack() - }() - - var log model.GamePlayerListLog - err = json.Unmarshal(msg.Body, &log) - if err != nil { + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: model.GamePlayerListLogCollName, + Data: &model.GamePlayerListLog{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.GamePlayerListLog) + if !ok { return } - c := svc.GamePlayerListLogsCollection(log.Platform) if c != nil { err = c.Insert(log) } return - } - return nil - }, broker.Queue(model.GamePlayerListLogCollName), broker.DisableAutoAck(), rabbitmq.DurableQueue()) + }, + }) } diff --git a/dbproxy/mq/c_invite.go b/dbproxy/mq/c_invite.go index b1ff619..9d0ae6d 100644 --- a/dbproxy/mq/c_invite.go +++ b/dbproxy/mq/c_invite.go @@ -2,14 +2,11 @@ package mq import ( "context" - "encoding/json" "errors" "time" "go.mongodb.org/mongo-driver/bson" newMongo "go.mongodb.org/mongo-driver/mongo" - "mongo.games.com/goserver/core/broker" - "mongo.games.com/goserver/core/broker/rabbitmq" "mongo.games.com/goserver/core/logger" "mongo.games.com/game/common" @@ -20,21 +17,14 @@ import ( ) func init() { - mq.RegisterSubscriber(mq.DBInvite, func(e broker.Event) (err error) { - msg := e.Message() - if msg != nil { - defer func() { - e.Ack() - }() - - var log model.EvtInviteMsg - err = json.Unmarshal(msg.Body, &log) - if err != nil { - logger.Logger.Errorf("EvtInvite json.Unmarshal error:%v msg:%v", err, string(msg.Body)) + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: mq.DBInvite, + Data: &model.EvtInviteMsg{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.EvtInviteMsg) + if !ok { return } - logger.Logger.Tracef("EvtInvite log:%+v", log) - var addRechargeScore bool if log.Tp != common.InviteScoreCheckWeek { addRechargeScore, err = svc.CheckInviteScore(&log.InviteScore) @@ -303,8 +293,7 @@ func init() { } mq.Send(mq.WorldInviteAck, msg) } - - } - return nil - }, broker.Queue(mq.DBInvite), broker.DisableAutoAck(), rabbitmq.DurableQueue()) + return + }, + }) } diff --git a/dbproxy/mq/c_itemlog.go b/dbproxy/mq/c_itemlog.go index d241234..21cf0e7 100644 --- a/dbproxy/mq/c_itemlog.go +++ b/dbproxy/mq/c_itemlog.go @@ -1,36 +1,25 @@ package mq import ( - "encoding/json" - - "mongo.games.com/goserver/core/broker" - "mongo.games.com/goserver/core/broker/rabbitmq" - "mongo.games.com/game/dbproxy/svc" "mongo.games.com/game/model" "mongo.games.com/game/mq" ) func init() { - mq.RegisterSubscriber(model.ItemLogCollName, func(e broker.Event) (err error) { - msg := e.Message() - if msg != nil { - defer func() { - e.Ack() - }() - - var log model.ItemLog - err = json.Unmarshal(msg.Body, &log) - if err != nil { + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: model.ItemLogCollName, + Data: &model.ItemLog{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.ItemLog) + if !ok { return } - c := svc.ItemLogsCollection(log.Platform) if c != nil { err = c.Insert(log) } return - } - return nil - }, broker.Queue(model.ItemLogCollName), broker.DisableAutoAck(), rabbitmq.DurableQueue()) + }, + }) } diff --git a/dbproxy/mq/c_loginlog.go b/dbproxy/mq/c_loginlog.go index 2d88baa..2a9958e 100644 --- a/dbproxy/mq/c_loginlog.go +++ b/dbproxy/mq/c_loginlog.go @@ -1,38 +1,27 @@ package mq import ( - "encoding/json" - - "mongo.games.com/goserver/core/broker" - "mongo.games.com/goserver/core/broker/rabbitmq" - "mongo.games.com/game/dbproxy/svc" "mongo.games.com/game/model" "mongo.games.com/game/mq" ) func init() { - mq.RegisterSubscriber(model.LoginLogCollName, func(e broker.Event) (err error) { - msg := e.Message() - if msg != nil { - defer func() { - e.Ack() - }() - - var log model.LoginLog - err = json.Unmarshal(msg.Body, &log) - if err != nil { + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: model.LoginLogCollName, + Data: &model.LoginLog{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.LoginLog) + if !ok { return } - c := svc.LoginLogsCollection(log.Platform) if c != nil { err = c.Insert(log) } return - } - return nil - }, broker.Queue(model.LoginLogCollName), broker.DisableAutoAck(), rabbitmq.DurableQueue()) + }, + }) //for test //RegisterSubscriber(model.LoginLogCollName, func(e broker.Event) (err error) { diff --git a/dbproxy/mq/c_onlinelog.go b/dbproxy/mq/c_onlinelog.go index 3a813e4..a9d1679 100644 --- a/dbproxy/mq/c_onlinelog.go +++ b/dbproxy/mq/c_onlinelog.go @@ -1,37 +1,26 @@ package mq import ( - "encoding/json" - - "mongo.games.com/goserver/core/broker" - "mongo.games.com/goserver/core/broker/rabbitmq" - "mongo.games.com/game/dbproxy/svc" "mongo.games.com/game/model" "mongo.games.com/game/mq" ) func init() { - mq.RegisterSubscriber(model.OnlineLogCollName, func(e broker.Event) (err error) { - msg := e.Message() - if msg != nil { - defer func() { - e.Ack() - }() - - var log model.OnlineLog - err = json.Unmarshal(msg.Body, &log) - if err != nil { + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: model.OnlineLogCollName, + Data: &model.OnlineLog{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.OnlineLog) + if !ok { return } - c := new(svc.OnlineLogSvc) if c != nil { ret := false - err = c.InsertSignleOnlineLog(&log, &ret) + err = c.InsertSignleOnlineLog(log, &ret) } return - } - return nil - }, broker.Queue(model.OnlineLogCollName), broker.DisableAutoAck(), rabbitmq.DurableQueue()) + }, + }) } diff --git a/dbproxy/mq/c_rank.go b/dbproxy/mq/c_rank.go index d7fd7ef..ab0af9f 100644 --- a/dbproxy/mq/c_rank.go +++ b/dbproxy/mq/c_rank.go @@ -1,12 +1,6 @@ package mq import ( - "encoding/json" - - "mongo.games.com/goserver/core" - "mongo.games.com/goserver/core/basic" - "mongo.games.com/goserver/core/broker" - "mongo.games.com/goserver/core/broker/rabbitmq" "mongo.games.com/goserver/core/logger" "mongo.games.com/game/dbproxy/svc" @@ -16,117 +10,70 @@ import ( func init() { // 排位排行榜 - mq.RegisterSubscriber(model.MQRankSeason, func(e broker.Event) (err error) { - msg := e.Message() - if msg != nil { - defer func() { - e.Ack() - }() - - var log model.PlayerRankScore - err = json.Unmarshal(msg.Body, &log) - if err != nil { + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: model.MQRankSeason, + Data: &model.PlayerRankScore{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.PlayerRankScore) + if !ok { return } - - logger.Logger.Tracef("SubscriberPlayerRankScore: %+v", log) - - core.CoreObject().SendCommand(basic.CommandWrapper(func(o *basic.Object) error { - err := svc.RankSeasonUpsert(&log) - if err != nil { - logger.Logger.Errorf("RankSeasonUpsert err: %v", err) - } - return nil - }), true) - + err = svc.RankSeasonUpsert(log) + if err != nil { + logger.Logger.Errorf("RankSeasonUpsert err: %v", err) + } return - } - return nil - }, broker.Queue(model.MQRankSeason), broker.DisableAutoAck(), rabbitmq.DurableQueue()) + }, + }) // 金币榜 - mq.RegisterSubscriber(model.MQRankPlayerCoin, func(e broker.Event) (err error) { - msg := e.Message() - if msg != nil { - defer func() { - e.Ack() - }() - - var log model.RankPlayerCoin - err = json.Unmarshal(msg.Body, &log) - if err != nil { + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: model.MQRankPlayerCoin, + Data: &model.RankPlayerCoin{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.RankPlayerCoin) + if !ok { return } - - logger.Logger.Tracef("SubscriberRankPlayerCoin: %+v", log) - - core.CoreObject().SendCommand(basic.CommandWrapper(func(o *basic.Object) error { - err := svc.RankPlayerCoinUpsert(&log) - if err != nil { - logger.Logger.Errorf("RankPlayerCoinUpsert err: %v", err) - } - return nil - }), true) - + err = svc.RankPlayerCoinUpsert(log) + if err != nil { + logger.Logger.Errorf("RankPlayerCoinUpsert err: %v", err) + } return - } - return nil - }, broker.Queue(model.MQRankPlayerCoin), broker.DisableAutoAck(), rabbitmq.DurableQueue()) + }, + }) //等级榜 - mq.RegisterSubscriber(model.MQRankPlayerLevel, func(e broker.Event) (err error) { - msg := e.Message() - if msg != nil { - defer func() { - e.Ack() - }() - - var log model.PlayerLevelInfo - err = json.Unmarshal(msg.Body, &log) - if err != nil { + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: model.MQRankPlayerLevel, + Data: &model.PlayerLevelInfo{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.PlayerLevelInfo) + if !ok { return } - - logger.Logger.Tracef("SubscriberRankPlayerLevel: %+v", log) - - core.CoreObject().SendCommand(basic.CommandWrapper(func(o *basic.Object) error { - err := svc.RankPlayerLevelUpsert(&log) - if err != nil { - logger.Logger.Errorf("RankPlayerCoinUpsert err: %v", err) - } - return nil - }), true) - + err = svc.RankPlayerLevelUpsert(log) + if err != nil { + logger.Logger.Errorf("RankPlayerLevelUpsert err: %v", err) + } return - } - return nil - }, broker.Queue(model.MQRankPlayerLevel), broker.DisableAutoAck(), rabbitmq.DurableQueue()) + }, + }) + // 赛季通行证积分 - mq.RegisterSubscriber(model.MQRankPlayerPermit, func(e broker.Event) (err error) { - msg := e.Message() - if msg != nil { - defer func() { - e.Ack() - }() - - var log model.PermitScore - err = json.Unmarshal(msg.Body, &log) - if err != nil { + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: model.MQRankPlayerPermit, + Data: &model.PermitScore{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.PermitScore) + if !ok { return } - - logger.Logger.Tracef("SubscriberRankPlayerPermit: %+v", log) - - core.CoreObject().SendCommand(basic.CommandWrapper(func(o *basic.Object) error { - err := svc.RankPlayerPermitUpsert(&log) - if err != nil { - logger.Logger.Errorf("RankPlayerPermitUpsert err: %v", err) - } - return nil - }), true) - + err = svc.RankPlayerPermitUpsert(log) + if err != nil { + logger.Logger.Errorf("RankPlayerPermitUpsert err: %v", err) + } return - } - return nil - }, broker.Queue(model.MQRankPlayerPermit), broker.DisableAutoAck(), rabbitmq.DurableQueue()) + }, + }) } diff --git a/dbproxy/mq/c_scenecoinlog.go b/dbproxy/mq/c_scenecoinlog.go index bffa82d..ea91023 100644 --- a/dbproxy/mq/c_scenecoinlog.go +++ b/dbproxy/mq/c_scenecoinlog.go @@ -1,10 +1,7 @@ package mq import ( - "encoding/json" - - "mongo.games.com/goserver/core/broker" - "mongo.games.com/goserver/core/broker/rabbitmq" + "mongo.games.com/goserver/core/logger" "mongo.games.com/game/dbproxy/svc" "mongo.games.com/game/model" @@ -12,25 +9,22 @@ import ( ) func init() { - mq.RegisterSubscriber(model.SceneCoinLogCollName, func(e broker.Event) (err error) { - msg := e.Message() - if msg != nil { - defer func() { - e.Ack() - }() - - var log model.SceneCoinLog - err = json.Unmarshal(msg.Body, &log) - if err != nil { + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: model.SceneCoinLogCollName, + Data: &model.SceneCoinLog{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.SceneCoinLog) + if !ok { return } - c := svc.SceneCoinLogsCollection(log.Platform) if c != nil { err = c.Insert(log) + if err != nil { + logger.Logger.Errorf("insert SceneCoinLog failed, err: %v", err) + } } return - } - return nil - }, broker.Queue(model.SceneCoinLogCollName), broker.DisableAutoAck(), rabbitmq.DurableQueue()) + }, + }) } diff --git a/dbproxy/mq/c_vipgiftlog.go b/dbproxy/mq/c_vipgiftlog.go index 32b6452..3183dff 100644 --- a/dbproxy/mq/c_vipgiftlog.go +++ b/dbproxy/mq/c_vipgiftlog.go @@ -1,10 +1,7 @@ package mq import ( - "encoding/json" - - "mongo.games.com/goserver/core/broker" - "mongo.games.com/goserver/core/broker/rabbitmq" + "mongo.games.com/goserver/core/logger" "mongo.games.com/game/dbproxy/svc" "mongo.games.com/game/model" @@ -12,25 +9,22 @@ import ( ) func init() { - mq.RegisterSubscriber(mq.DBVipGiftLog, func(e broker.Event) (err error) { - msg := e.Message() - if msg != nil { - defer func() { - e.Ack() - }() - - var log model.DbVip - err = json.Unmarshal(msg.Body, &log) - if err != nil { + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: mq.DBVipGiftLog, + Data: &model.DbVip{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.DbVip) + if !ok { return } - c := svc.DbVipLogCollection(log.Platform) if c != nil { err = c.Insert(log) + if err != nil { + logger.Logger.Errorf("insert DBVipGiftLog error:%v", err) + } } return - } - return nil - }, broker.Queue(mq.DBVipGiftLog), broker.DisableAutoAck(), rabbitmq.DurableQueue()) + }, + }) } diff --git a/dbproxy/mq/c_welfarelog.go b/dbproxy/mq/c_welfarelog.go index e6aa615..68f30e6 100644 --- a/dbproxy/mq/c_welfarelog.go +++ b/dbproxy/mq/c_welfarelog.go @@ -1,10 +1,7 @@ package mq import ( - "encoding/json" - - "mongo.games.com/goserver/core/broker" - "mongo.games.com/goserver/core/broker/rabbitmq" + "mongo.games.com/goserver/core/logger" "mongo.games.com/game/dbproxy/svc" "mongo.games.com/game/model" @@ -12,25 +9,22 @@ import ( ) func init() { - mq.RegisterSubscriber(model.WelfareLogCollName, func(e broker.Event) (err error) { - msg := e.Message() - if msg != nil { - defer func() { - e.Ack() - }() - - var log model.WelfareLog - err = json.Unmarshal(msg.Body, &log) - if err != nil { + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: model.WelfareLogCollName, + Data: &model.WelfareLog{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.WelfareLog) + if !ok { return } - c := svc.WelfareLogsCollection(log.Platform) if c != nil { err = c.Insert(log) + if err != nil { + logger.Logger.Errorf("insert WelfareLog failed: %v", err) + } } return - } - return nil - }, broker.Queue(model.WelfareLogCollName), broker.DisableAutoAck(), rabbitmq.DurableQueue()) + }, + }) } diff --git a/dbproxy/mq/init.go b/dbproxy/mq/init.go deleted file mode 100644 index 1e80f01..0000000 --- a/dbproxy/mq/init.go +++ /dev/null @@ -1,19 +0,0 @@ -package mq - -import ( - "mongo.games.com/game/model" - "mongo.games.com/game/mq" -) - -func Init() { - InitHandler() - // 竞技馆获奖通知 - mq.RegisterMessage(&mq.RegisterMessageParam{ - Name: mq.RankCustomLogAward, - Data: model.CustomLogAward{}, - }) -} - -func InitHandler() { - -} diff --git a/gamesrv/base/logchannel.go b/gamesrv/base/logchannel.go deleted file mode 100644 index 7a997ab..0000000 --- a/gamesrv/base/logchannel.go +++ /dev/null @@ -1,62 +0,0 @@ -package base - -import ( - "reflect" - - "mongo.games.com/goserver/core/logger" - - "mongo.games.com/game/model" - "mongo.games.com/game/mq" -) - -// LogChannelSingleton 日志记录器 -var LogChannelSingleton = &LogChannel{ - cName: make(map[reflect.Type]string), -} - -type LogChannel struct { - cName map[reflect.Type]string -} - -func (c *LogChannel) RegisterLogCName(cname string, log interface{}) { - t := c.getLogType(log) - c.cName[t] = cname -} - -func (c *LogChannel) getLogType(log interface{}) reflect.Type { - return reflect.Indirect(reflect.ValueOf(log)).Type() -} - -func (c *LogChannel) getLogCName(log interface{}) string { - t := c.getLogType(log) - if name, exist := c.cName[t]; exist { - return name - } - return "" -} - -func (c *LogChannel) WriteLog(log interface{}) { - cname := c.getLogCName(log) - if cname == "" { - cname = "_null_" - } - logger.Logger.Tracef("LogChannel ==> %#v", log) - mq.Send(cname, log) -} - -func (c *LogChannel) WriteMQData(data *model.RabbitMQData) { - mq.Send(data.MQName, data.Data) -} - -func init() { - LogChannelSingleton.RegisterLogCName(model.LoginLogCollName, &model.LoginLog{}) - LogChannelSingleton.RegisterLogCName(model.CoinGiveLogCollName, &model.CoinGiveLog{}) - LogChannelSingleton.RegisterLogCName(model.CoinLogCollName, &model.CoinLog{}) - LogChannelSingleton.RegisterLogCName(model.SceneCoinLogCollName, &model.SceneCoinLog{}) - LogChannelSingleton.RegisterLogCName(model.GameDetailedLogCollName, &model.GameDetailedLog{}) - LogChannelSingleton.RegisterLogCName(model.GamePlayerListLogCollName, &model.GamePlayerListLog{}) - LogChannelSingleton.RegisterLogCName(model.FriendRecordLogCollName, &model.FriendRecord{}) - LogChannelSingleton.RegisterLogCName(model.ItemLogCollName, &model.ItemLog{}) - LogChannelSingleton.RegisterLogCName(mq.DBCustomLog, &model.CustomLog{}) - LogChannelSingleton.RegisterLogCName(mq.DBCustomLogAward, &model.CustomLogAward{}) -} diff --git a/gamesrv/base/player.go b/gamesrv/base/player.go index 314ba31..817912f 100644 --- a/gamesrv/base/player.go +++ b/gamesrv/base/player.go @@ -2,21 +2,22 @@ package base import ( "fmt" - rawproto "google.golang.org/protobuf/proto" "math" - "mongo.games.com/game/common" - "mongo.games.com/game/model" - "mongo.games.com/game/proto" - "mongo.games.com/game/protocol/player" - "mongo.games.com/game/protocol/server" - "mongo.games.com/game/srvdata" + "math/rand" + "time" + + rawproto "google.golang.org/protobuf/proto" "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/netlib" "mongo.games.com/goserver/core/timer" - //rawproto "github.com/golang/protobuf/proto" - "math/rand" - "time" + "mongo.games.com/game/common" + "mongo.games.com/game/model" + "mongo.games.com/game/mq" + "mongo.games.com/game/proto" + "mongo.games.com/game/protocol/player" + "mongo.games.com/game/protocol/server" + "mongo.games.com/game/srvdata" ) // 对应到客户端的一个玩家对象. @@ -474,7 +475,7 @@ func (this *Player) AddCoin(num int64, gainWay int32, syncFlag int, oper, remark if log != nil { this.GameCoinTs = log.Time.UnixNano() this.dirty = true - LogChannelSingleton.WriteLog(log) + mq.Write(log) } } //确保金币场金币数量不小于0 @@ -557,7 +558,7 @@ func (this *Player) AddCoinAsync(num int64, gainWay int32, notifyC, broadcast bo if log != nil { this.GameCoinTs = log.Time.UnixNano() this.dirty = true - LogChannelSingleton.WriteLog(log) + mq.Write(log) } } //确保金币场金币数量不小于0 @@ -638,11 +639,11 @@ func (this *Player) ReportGameEvent(tax, taxex, changeCoin, validbet, validFlow, } gamingTime := int32(time.Now().Sub(this.scene.GameNowTime).Seconds()) - LogChannelSingleton.WriteMQData(model.GenerateGameEvent(model.CreatePlayerGameRecEvent(this.SnId, tax, taxex, changeCoin, validbet, validFlow, in, out, + mq.Write(model.CreatePlayerGameRecEvent(this.SnId, tax, taxex, changeCoin, validbet, validFlow, in, out, int32(this.scene.GameId), this.scene.GetGameFreeId(), int32(this.scene.GameMode), this.scene.GetRecordId(), this.Channel, this.BeUnderAgentCode, this.Platform, this.City, this.DeviceOS, this.CreateTime, gamingTime, gameFirstTime, gameFreeFirstTime, gameTimes, gameFreeTimes, this.LastLoginTime, - this.TelephonePromoter, this.DeviceId))) + this.TelephonePromoter, this.DeviceId), mq.BackGameRecord) } // 汇总玩家该次游戏总产生的税收 diff --git a/gamesrv/base/replay_recorder.go b/gamesrv/base/replay_recorder.go index 45c9a37..3e7c605 100644 --- a/gamesrv/base/replay_recorder.go +++ b/gamesrv/base/replay_recorder.go @@ -6,11 +6,13 @@ import ( "encoding/json" "time" - "mongo.games.com/game/model" - "mongo.games.com/game/proto" - "mongo.games.com/game/protocol/server" "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/netlib" + + "mongo.games.com/game/model" + "mongo.games.com/game/mq" + "mongo.games.com/game/proto" + "mongo.games.com/game/protocol/server" ) var _replayIgnorePacketIds = map[int]bool{} @@ -112,7 +114,7 @@ func (this *ReplayRecorder) Fini(s *Scene) { break } } - LogChannelSingleton.WriteMQData(&model.RabbitMQData{MQName: "log_playback", Data: pack}) + mq.Write(pack, "log_playback") } } diff --git a/gamesrv/base/scene.go b/gamesrv/base/scene.go index 6f37806..a0ca96f 100644 --- a/gamesrv/base/scene.go +++ b/gamesrv/base/scene.go @@ -16,6 +16,7 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" + "mongo.games.com/game/mq" "mongo.games.com/game/proto" "mongo.games.com/game/protocol/gamehall" "mongo.games.com/game/protocol/player" @@ -1435,7 +1436,7 @@ func (this *Scene) SaveGameDetailedLog(logid string, gamedetailednote string, ga if this.IsCustom() { log.CycleId = this.CycleID } - LogChannelSingleton.WriteLog(log) + mq.Write(log) } } } @@ -1454,7 +1455,7 @@ func (this *Scene) SaveGameDetailedLog(logid string, gamedetailednote string, ga } newLog := new(model.GameDetailedLog) *newLog = *log - LogChannelSingleton.WriteLog(log) + mq.Write(log) } } } @@ -1514,7 +1515,7 @@ func (this *Scene) SaveFriendRecord(snid int32, isWin int32, billCoin int64, bas } log := model.NewFriendRecordLogEx(this.Platform, snid, isWin, this.GameId, baseScore, billCoin, int64(this.GetMatch().GetMatchType())) if log != nil { - LogChannelSingleton.WriteLog(log) + mq.Write(log) } } @@ -1563,7 +1564,7 @@ func (this *Scene) SaveGamePlayerListLog(snid int32, param *SaveGamePlayerListLo param.BetAmount, param.WinAmountNoAnyTax, this.KeyGameId, Name, this.GetDBGameFree().GetGameClass(), param.IsFirstGame, this.GetMatch().GetMatchSortId(), int64(this.GetMatch().GetMatchType()), param.IsFree, param.WinSmallGame, param.WinTotal, param.CycleId) if log != nil { - LogChannelSingleton.WriteLog(log) + mq.Write(log) } } } diff --git a/gamesrv/main.go b/gamesrv/main.go index 391ee70..ca15e83 100644 --- a/gamesrv/main.go +++ b/gamesrv/main.go @@ -12,6 +12,7 @@ import ( "mongo.games.com/game/common" _ "mongo.games.com/game/gamesrv/action" _ "mongo.games.com/game/gamesrv/base" + _ "mongo.games.com/game/gamesrv/mq" _ "mongo.games.com/game/gamesrv/transact" "mongo.games.com/game/model" "mongo.games.com/game/mq" diff --git a/gamesrv/mq/init.go b/gamesrv/mq/init.go new file mode 100644 index 0000000..903cd26 --- /dev/null +++ b/gamesrv/mq/init.go @@ -0,0 +1,19 @@ +package mq + +import ( + "mongo.games.com/game/model" + "mongo.games.com/game/mq" +) + +func init() { + mq.RegisterMessage(&mq.RegisterMessageParam{Name: model.LoginLogCollName, Data: &model.LoginLog{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.DBGiveLog, Data: &model.CoinGiveLog{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: model.CoinLogCollName, Data: &model.CoinLog{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: model.SceneCoinLogCollName, Data: &model.SceneCoinLog{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: model.GameDetailedLogCollName, Data: &model.GameDetailedLog{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: model.GamePlayerListLogCollName, Data: &model.GamePlayerListLog{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: model.FriendRecordLogCollName, Data: &model.FriendRecord{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: model.ItemLogCollName, Data: &model.ItemLog{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.DBCustomLog, Data: &model.CustomLog{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.DBCustomLogAward, Data: &model.CustomLogAward{}}) +} diff --git a/gamesrv/tienlen/scenedata_tienlen.go b/gamesrv/tienlen/scenedata_tienlen.go index 89d13c7..1a76ae5 100644 --- a/gamesrv/tienlen/scenedata_tienlen.go +++ b/gamesrv/tienlen/scenedata_tienlen.go @@ -16,6 +16,7 @@ import ( rule "mongo.games.com/game/gamerule/tienlen" "mongo.games.com/game/gamesrv/base" "mongo.games.com/game/model" + "mongo.games.com/game/mq" "mongo.games.com/game/proto" "mongo.games.com/game/protocol/tienlen" "mongo.games.com/game/srvdata" @@ -2163,5 +2164,5 @@ func (this *TienLenSceneData) SaveCustomLog() { LogId: this.RoundLogId[k], }) } - base.LogChannelSingleton.WriteLog(log) + mq.Write(log) } diff --git a/gamesrv/tienlen/scenepolicy_tienlen.go b/gamesrv/tienlen/scenepolicy_tienlen.go index 58a9bf6..ce08fed 100644 --- a/gamesrv/tienlen/scenepolicy_tienlen.go +++ b/gamesrv/tienlen/scenepolicy_tienlen.go @@ -14,6 +14,7 @@ import ( rule "mongo.games.com/game/gamerule/tienlen" "mongo.games.com/game/gamesrv/base" "mongo.games.com/game/model" + "mongo.games.com/game/mq" "mongo.games.com/game/proto" "mongo.games.com/game/protocol/tienlen" "mongo.games.com/game/srvdata" @@ -2639,7 +2640,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { GameId: int64(sceneEx.GameId), GameFreeId: int64(sceneEx.GetGameFreeId()), }) - base.LogChannelSingleton.WriteLog(&model.CustomLogAward{ + mq.Write(&model.CustomLogAward{ Platform: p.Platform, CycleId: sceneEx.CycleID, SnId: p.SnId, diff --git a/gatesrv/clientlog.go b/gatesrv/clientlog.go index 92bc608..a9fb700 100644 --- a/gatesrv/clientlog.go +++ b/gatesrv/clientlog.go @@ -13,8 +13,6 @@ import ( ) func init() { - LogChannelSingleton.RegisterLogCName(mq.BackClientLog, &model.ClientLogMysql{}) - // 客户端日志 netlib.Register(int(player.PlayerPacketID_PACKET_CS_CLIENT_LOG), player.CSClientLog{}, CSClientLog) } @@ -55,7 +53,7 @@ func CSClientLog(s *netlib.Session, packetid int, pack interface{}) error { // Ts: time.Now().Unix(), //}) - LogChannelSingleton.WriteLog(&model.ClientLogMysql{ + mq.Write(&model.ClientLogMysql{ Data: msg.GetData(), Platform: platform, Snid: snid, @@ -64,6 +62,5 @@ func CSClientLog(s *netlib.Session, packetid int, pack interface{}) error { AppChannel: appChannel, ChannelId: channelId, }) - return nil } diff --git a/gatesrv/logchannel.go b/gatesrv/logchannel.go deleted file mode 100644 index f5fc1f1..0000000 --- a/gatesrv/logchannel.go +++ /dev/null @@ -1,46 +0,0 @@ -package main - -import ( - "reflect" - - "mongo.games.com/game/model" - "mongo.games.com/game/mq" -) - -// LogChannelSingleton 日志记录器 -var LogChannelSingleton = &LogChannel{ - cName: make(map[reflect.Type]string), -} - -type LogChannel struct { - cName map[reflect.Type]string -} - -func (c *LogChannel) RegisterLogCName(cname string, log interface{}) { - t := c.getLogType(log) - c.cName[t] = cname -} - -func (c *LogChannel) getLogType(log interface{}) reflect.Type { - return reflect.Indirect(reflect.ValueOf(log)).Type() -} - -func (c *LogChannel) getLogCName(log interface{}) string { - t := c.getLogType(log) - if name, exist := c.cName[t]; exist { - return name - } - return "" -} - -func (c *LogChannel) WriteLog(log interface{}) { - cname := c.getLogCName(log) - if cname == "" { - cname = "_null_" - } - mq.Send(cname, log) -} - -func (c *LogChannel) WriteMQData(data *model.RabbitMQData) { - mq.Send(data.MQName, data.Data) -} diff --git a/gatesrv/main.go b/gatesrv/main.go index ff0a7b8..635733f 100644 --- a/gatesrv/main.go +++ b/gatesrv/main.go @@ -6,6 +6,7 @@ import ( _ "mongo.games.com/game" "mongo.games.com/game/common" + _ "mongo.games.com/game/gatesrv/mq" "mongo.games.com/game/model" "mongo.games.com/game/mq" ) diff --git a/gatesrv/mq/init.go b/gatesrv/mq/init.go new file mode 100644 index 0000000..efaad07 --- /dev/null +++ b/gatesrv/mq/init.go @@ -0,0 +1,10 @@ +package mq + +import ( + "mongo.games.com/game/model" + "mongo.games.com/game/mq" +) + +func init() { + mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.BackClientLog, Data: &model.ClientLogMysql{}}) +} diff --git a/mgrsrv/api/logchannel.go b/mgrsrv/api/logchannel.go deleted file mode 100644 index e461788..0000000 --- a/mgrsrv/api/logchannel.go +++ /dev/null @@ -1,57 +0,0 @@ -package api - -import ( - "reflect" - - "mongo.games.com/game/model" - "mongo.games.com/game/mq" -) - -/* - api调用记录写入rabbitmq,然后dbproxy收到rabbitmq数据再写到数据库 -*/ - -const ( - LogChanelBlackHole = "_null_" -) - -var LogChannelSington = &LogChannel{ - cName: make(map[reflect.Type]string), -} - -type LogChannel struct { - cName map[reflect.Type]string -} - -func (c *LogChannel) RegisteLogCName(cname string, log interface{}) { - t := c.getLogType(log) - c.cName[t] = cname -} - -func (c *LogChannel) getLogType(log interface{}) reflect.Type { - return reflect.Indirect(reflect.ValueOf(log)).Type() -} - -func (c *LogChannel) getLogCName(log interface{}) string { - t := c.getLogType(log) - if name, exist := c.cName[t]; exist { - return name - } - return "" -} - -func (c *LogChannel) WriteLog(log interface{}) { - cname := c.getLogCName(log) - if cname == "" { - cname = LogChanelBlackHole - } - mq.Send(cname, log) -} - -func (c *LogChannel) WriteMQData(data *model.RabbitMQData) { - mq.Send(data.MQName, data.Data) -} - -func init() { - LogChannelSington.RegisteLogCName(mq.MgrAPILog, &model.APILog{}) -} diff --git a/mgrsrv/api/webapi_gamesrv.go b/mgrsrv/api/webapi_gamesrv.go index 4a00029..a0d2470 100644 --- a/mgrsrv/api/webapi_gamesrv.go +++ b/mgrsrv/api/webapi_gamesrv.go @@ -20,6 +20,7 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" + "mongo.games.com/game/mq" "mongo.games.com/game/proto" "mongo.games.com/game/protocol/webapi" ) @@ -121,7 +122,7 @@ func GameSrvWebAPI(rw http.ResponseWriter, req *http.Request) { result, err := json.Marshal(rep) if err == nil { log := model.NewAPILog(req.URL.Path, req.URL.RawQuery, string(data[:]), req.RemoteAddr, string(result[:]), startTime, ps) - LogChannelSington.WriteLog(log) + mq.Write(log) } return } diff --git a/mgrsrv/api/webapi_worldsrv.go b/mgrsrv/api/webapi_worldsrv.go index dc9b02e..5ca0a5a 100644 --- a/mgrsrv/api/webapi_worldsrv.go +++ b/mgrsrv/api/webapi_worldsrv.go @@ -21,6 +21,7 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" + "mongo.games.com/game/mq" ) // API @@ -133,7 +134,7 @@ func WorldSrvApi(rw http.ResponseWriter, req *http.Request) { result, err := json.Marshal(rep) if err == nil { log := model.NewAPILog(req.URL.Path, req.URL.RawQuery, string(data[:]), req.RemoteAddr, string(result[:]), startTime, ps) - LogChannelSington.WriteLog(log) + mq.Write(log) } return } diff --git a/mgrsrv/main.go b/mgrsrv/main.go index 6c28fbc..dac2c88 100644 --- a/mgrsrv/main.go +++ b/mgrsrv/main.go @@ -9,6 +9,7 @@ import ( _ "mongo.games.com/game" "mongo.games.com/game/common" _ "mongo.games.com/game/mgrsrv/api" + _ "mongo.games.com/game/mgrsrv/mq" "mongo.games.com/game/model" "mongo.games.com/game/mq" _ "mongo.games.com/game/srvdata" diff --git a/mgrsrv/mq/init.go b/mgrsrv/mq/init.go new file mode 100644 index 0000000..c4d450d --- /dev/null +++ b/mgrsrv/mq/init.go @@ -0,0 +1,10 @@ +package mq + +import ( + "mongo.games.com/game/model" + "mongo.games.com/game/mq" +) + +func init() { + mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.DBAPILog, Data: &model.APILog{}}) +} diff --git a/model/rabbit_mq.go b/model/rabbit_mq.go index 697c52d..902c71e 100644 --- a/model/rabbit_mq.go +++ b/model/rabbit_mq.go @@ -8,7 +8,7 @@ import ( ) // GenerateOnline 在线统计 -func GenerateOnline(online map[string]map[string]int) *RabbitMQData { +func GenerateOnline(online map[string]map[string]int) *mq.RabbitMQData { params := make(map[string]interface{}) params["Online"] = online params["Time"] = time.Now().Unix() @@ -16,17 +16,12 @@ func GenerateOnline(online map[string]map[string]int) *RabbitMQData { } // GenerateLogin 玩家登陆事件 -func GenerateLogin(o *PlayerLoginEvent) *RabbitMQData { +func GenerateLogin(o *PlayerLoginEvent) *mq.RabbitMQData { return NewRabbitMQData(mq.BackLogin, o) } -// GenerateGameEvent 游戏结算事件 -func GenerateGameEvent(o *PlayerGameRecEvent) *RabbitMQData { - return NewRabbitMQData(mq.BackGameRecord, o) -} - // GenerateSystemFreeGive 系统免费赠送 -func GenerateSystemFreeGive(snid int32, name, platform, channel string, givetype, cointype int32, count int64) *RabbitMQData { +func GenerateSystemFreeGive(snid int32, name, platform, channel string, givetype, cointype int32, count int64) *mq.RabbitMQData { params := make(map[string]string) params["snid"] = strconv.Itoa(int(snid)) params["Channel"] = channel @@ -40,7 +35,7 @@ func GenerateSystemFreeGive(snid int32, name, platform, channel string, givetype } // GeneratePhoneLottery 手机抽奖统计 -func GeneratePhoneLottery(snid int32, platform string, items string, lotteryType, count, countType, score int) *RabbitMQData { +func GeneratePhoneLottery(snid int32, platform string, items string, lotteryType, count, countType, score int) *mq.RabbitMQData { params := make(map[string]string) params["Snid"] = strconv.Itoa(int(snid)) params["Platform"] = platform diff --git a/model/rabbitmqdata.go b/model/rabbitmqdata.go index 0ca93ac..98653cc 100644 --- a/model/rabbitmqdata.go +++ b/model/rabbitmqdata.go @@ -1,12 +1,9 @@ package model -type RabbitMQData struct { - MQName string // 是队列名称也是Routing key - Data interface{} -} +import "mongo.games.com/game/mq" -func NewRabbitMQData(mqName string, data interface{}) *RabbitMQData { - log := &RabbitMQData{ +func NewRabbitMQData(mqName string, data interface{}) *mq.RabbitMQData { + log := &mq.RabbitMQData{ MQName: mqName, Data: data, } diff --git a/mq/messagemgr.go b/mq/export.go similarity index 54% rename from mq/messagemgr.go rename to mq/export.go index 9ca1d55..90967c9 100644 --- a/mq/messagemgr.go +++ b/mq/export.go @@ -8,6 +8,8 @@ import ( "mongo.games.com/goserver/core/broker" "mongo.games.com/goserver/core/broker/rabbitmq" "mongo.games.com/goserver/core/logger" + + "mongo.games.com/game/mq/internal" ) type HandlerFunc func(data interface{}) (err error) @@ -48,20 +50,23 @@ func (c *MessageMgr) getName(data interface{}) string { return "" } -// Write 记录消息,需要提前注册 -func (c *MessageMgr) Write(data interface{}) { - name := c.getName(data) - if name == "" { - name = "_null_" - } - logger.Logger.Tracef("==> RabbitMQ(%v): %#v", name, data) - Send(name, data) +type RabbitMQData struct { + MQName string // 是队列名称也是Routing key + Data interface{} } -// WriteMQData rabbitMQ消息 -func (c *MessageMgr) WriteMQData(name string, data interface{}) { - logger.Logger.Tracef("==> RabbitMQ(%v): %#v", name, data) - Send(name, data) +func (c *MessageMgr) Send(data interface{}, name ...string) error { + if msg, ok := data.(*RabbitMQData); ok { + return Send(msg.MQName, msg.Data) + } + if len(name) > 0 && name[0] != "" { + return Send(name[0], data) + } + key := c.getName(data) + if key == "" { + key = "_null_" + } + return Send(key, data) } type RegisterHandlerParam struct { @@ -90,7 +95,7 @@ func (c *MessageMgr) RegisterHandler(param *RegisterHandlerParam) { F: param.Handler, } - RegisterSubscriber(param.Name, func(e broker.Event) (err error) { + internal.RegisterSubscriber(param.Name, func(e broker.Event) (err error) { msg := e.Message() if msg != nil { defer func() { @@ -126,16 +131,56 @@ func RegisterMessage(param *RegisterMessageParam) { // Write 发送消息 // 默认队列名称规则:队列前缀_消息结构体名称 -func Write(data interface{}) { - MessageMgrSingle.Write(data) -} - -// WriteMQData 发送消息 -func WriteMQData(name string, data interface{}) { - MessageMgrSingle.WriteMQData(name, data) +func Write(data interface{}, name ...string) error { + return MessageMgrSingle.Send(data, name...) } // RegisterHandler 注册消息处理函数 func RegisterHandler(param *RegisterHandlerParam) { MessageMgrSingle.RegisterHandler(param) } + +var globalConsumer *internal.RabbitMQConsumer + +// StartConsumer 启动消费者 +func StartConsumer(url string, exchange string, durableExchange bool, opts ...broker.Option) { + StopConsumer() + globalConsumer = internal.NewRabbitMQConsumer(url, rabbitmq.Exchange{Name: exchange, Durable: durableExchange}, opts...) + if err := globalConsumer.Start(); err != nil { + panic(fmt.Sprintf("RabbitMQConsumer.Start() url:%v exchange:%v err:%v", url, exchange, err)) + } +} + +// StopConsumer 停止消费者 +func StopConsumer() { + if globalConsumer != nil { + globalConsumer.Stop() + } +} + +var globalPublisher *internal.RabbitMQPublisher + +// StartPublisher 启动发布者 +func StartPublisher(url string, exchange string, durableExchange bool, queueSize int, opts ...broker.Option) { + StopPublisher() + globalPublisher = internal.NewRabbitMQPublisher(url, rabbitmq.Exchange{Name: exchange, Durable: durableExchange}, queueSize, opts...) + if err := globalPublisher.Start(); err != nil { + panic(fmt.Sprintf("RabbitMQPublisher.Start() url:%v exchange:%v err:%v", url, exchange, err)) + } +} + +// StopPublisher 停止发布者 +func StopPublisher() { + if globalPublisher != nil { + globalPublisher.Stop() + } +} + +func Send(topic string, msg interface{}, opts ...broker.PublishOption) (err error) { + if globalPublisher != nil { + logger.Logger.Tracef("==> RabbitMQ(%v): %#v", topic, msg) + return globalPublisher.Send(topic, msg, opts...) + } + logger.Logger.Errorf("RabbitMQPublisher not start!") + return internal.ErrClosed +} diff --git a/mq/internal/constant.go b/mq/internal/constant.go new file mode 100644 index 0000000..8d0f026 --- /dev/null +++ b/mq/internal/constant.go @@ -0,0 +1,20 @@ +package internal + +import "os" + +const ( + BackupPath = "backup" + TimeFormat = "20060102150405" + FilePathFormat = "%s/%s_%s_%09d_%04d.dat" +) + +func PathExists(path string) (bool, error) { + _, err := os.Stat(path) + if err == nil { + return true, nil + } + if os.IsNotExist(err) { + return false, nil + } + return false, err +} diff --git a/mq/consumer.go b/mq/internal/consumer.go similarity index 83% rename from mq/consumer.go rename to mq/internal/consumer.go index eda1518..8fc1daf 100644 --- a/mq/consumer.go +++ b/mq/internal/consumer.go @@ -1,4 +1,4 @@ -package mq +package internal import ( "fmt" @@ -10,8 +10,6 @@ import ( "mongo.games.com/goserver/core/broker" "mongo.games.com/goserver/core/broker/rabbitmq" "mongo.games.com/goserver/core/logger" - - "mongo.games.com/game/common" ) /* @@ -19,7 +17,6 @@ import ( */ var ( - globalConsumer *RabbitMQConsumer subscriberLock sync.RWMutex subscriber = make(map[string][]*Subscriber) ) @@ -56,7 +53,7 @@ func NewRabbitMQConsumer(url string, exchange rabbitmq.Exchange, opts ...broker. } func (c *RabbitMQConsumer) Start() error { - if ok, _ := common.PathExists(BackupPath); !ok { + if ok, _ := PathExists(BackupPath); !ok { os.MkdirAll(BackupPath, os.ModePerm) } @@ -144,19 +141,3 @@ func GetSubscribers() map[string][]*Subscriber { } return ret } - -// StartConsumer 启动消费者 -func StartConsumer(url string, exchange string, durableExchange bool, opts ...broker.Option) { - StopConsumer() - globalConsumer = NewRabbitMQConsumer(url, rabbitmq.Exchange{Name: exchange, Durable: durableExchange}, opts...) - if err := globalConsumer.Start(); err != nil { - panic(fmt.Sprintf("RabbitMQConsumer.Start() url:%v exchange:%v err:%v", url, exchange, err)) - } -} - -// StopConsumer 停止消费者 -func StopConsumer() { - if globalConsumer != nil { - globalConsumer.Stop() - } -} diff --git a/mq/publisher.go b/mq/internal/publisher.go similarity index 79% rename from mq/publisher.go rename to mq/internal/publisher.go index 666c0cc..5825e42 100644 --- a/mq/publisher.go +++ b/mq/internal/publisher.go @@ -1,4 +1,4 @@ -package mq +package internal import ( "encoding/json" @@ -12,24 +12,14 @@ import ( "mongo.games.com/goserver/core/broker" "mongo.games.com/goserver/core/broker/rabbitmq" "mongo.games.com/goserver/core/logger" - - "mongo.games.com/game/common" ) /* 在发布功能上加上异步发送消息和发送失败备份到本地文件的功能 */ -const ( - BackupPath = "backup" - TimeFormat = "20060102150405" - FilePathFormat = "%s/%s_%s_%09d_%04d.dat" -) - var ErrClosed = errors.New("publisher is closed") -var globalPublisher *RabbitMQPublisher - type item struct { topic string msg interface{} @@ -121,7 +111,7 @@ func (p *RabbitMQPublisher) publishRoutine() { } func (p *RabbitMQPublisher) Start() (err error) { - if ok, _ := common.PathExists(BackupPath); !ok { + if ok, _ := PathExists(BackupPath); !ok { err = os.MkdirAll(BackupPath, os.ModePerm) if err != nil { return @@ -201,26 +191,3 @@ func (p *RabbitMQPublisher) backup(topic string, msg interface{}, err error) { f.WriteString("reason:" + reason + "\n") f.WriteString("data:" + string(buf) + "\n") } - -// StartPublisher 启动发布者 -func StartPublisher(url string, exchange string, durableExchange bool, queueSize int, opts ...broker.Option) { - StopPublisher() - globalPublisher = NewRabbitMQPublisher(url, rabbitmq.Exchange{Name: exchange, Durable: durableExchange}, queueSize, opts...) - if err := globalPublisher.Start(); err != nil { - panic(fmt.Sprintf("RabbitMQPublisher.Start() url:%v exchange:%v err:%v", url, exchange, err)) - } -} - -// StopPublisher 停止发布者 -func StopPublisher() { - if globalPublisher != nil { - globalPublisher.Stop() - } -} - -func Send(topic string, msg interface{}, opts ...broker.PublishOption) (err error) { - if globalPublisher != nil { - return globalPublisher.Send(topic, msg, opts...) - } - return ErrClosed -} diff --git a/mq/keyconf.go b/mq/keyconf.go index 536733f..8ee8556 100644 --- a/mq/keyconf.go +++ b/mq/keyconf.go @@ -21,9 +21,7 @@ const ( // mgrsrv -const ( - MgrAPILog = "mgr_apilog" -) +const () // worldsrv 消息 @@ -39,6 +37,8 @@ const ( DBCustomLog = "db_customlog" // 房卡场对局记录 DBCustomLogAward = "db_customlog_award" // 房卡场对局奖励 DBInvite = "db_invite" + DBAPILog = "db_apilog" + DBGiveLog = "db_givelog" ) // ranksrv 消息 diff --git a/worldsrv/action_bag.go b/worldsrv/action_bag.go index f5d68c7..8b3463f 100644 --- a/worldsrv/action_bag.go +++ b/worldsrv/action_bag.go @@ -3,9 +3,6 @@ package main import ( "fmt" "math/rand" - "mongo.games.com/game/proto" - webapi_proto "mongo.games.com/game/protocol/webapi" - "mongo.games.com/game/webapi" "strconv" "time" @@ -16,8 +13,12 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" + "mongo.games.com/game/mq" + "mongo.games.com/game/proto" "mongo.games.com/game/protocol/bag" + webapiproto "mongo.games.com/game/protocol/webapi" "mongo.games.com/game/srvdata" + "mongo.games.com/game/webapi" ) func CSBagInfo(s *netlib.Session, packetid int, data interface{}, sid int64) error { @@ -193,8 +194,7 @@ func CSUpBagInfo(s *netlib.Session, packetid int, data interface{}, sid int64) e tp1 = model.SystemFreeGive_CoinType_Diamond } if !p.IsRob && tp1 >= 0 { - LogChannelSingleton.WriteMQData( - model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, model.SystemFreeGive_CollectBox, tp1, v.ItemNum)) + mq.Write(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, model.SystemFreeGive_CollectBox, tp1, v.ItemNum)) } } } @@ -579,8 +579,7 @@ func CSPropExchange(s *netlib.Session, packetid int, data interface{}, sid int64 tp1 = model.SystemFreeGive_CoinType_Diamond } if !p.IsRob && tp1 >= 0 { - LogChannelSingleton.WriteMQData( - model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, model.SystemFreeGive_CollectBoxSwap, tp1, v.ItemNum)) + mq.Write(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, model.SystemFreeGive_CollectBoxSwap, tp1, v.ItemNum)) } } @@ -668,13 +667,13 @@ func CSDollChangeLog(s *netlib.Session, packetid int, data interface{}, sid int6 } } task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - msg := &webapi_proto.ASGetDollExchangeOrder{ + msg := &webapiproto.ASGetDollExchangeOrder{ Snid: p.SnId, Platform: p.Platform, } buff, err := webapi.API_DollExchangeRecord(common.GetAppId(), msg) - as := &webapi_proto.SAGetDollExchangeOrder{} + as := &webapiproto.SAGetDollExchangeOrder{} if err != nil { logger.Logger.Error("API_DollExchangeRecord error:", err) return nil @@ -686,7 +685,7 @@ func CSDollChangeLog(s *netlib.Session, packetid int, data interface{}, sid int6 return as }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { if data != nil { - if as := data.(*webapi_proto.SAGetDollExchangeOrder); as != nil { + if as := data.(*webapiproto.SAGetDollExchangeOrder); as != nil { for _, v := range as.OrderList { cdata := ShopMgrSington.GetExchangeData(p.Platform, v.GoodsId) record := &bag.DillChangeLogInfo{ diff --git a/worldsrv/action_phonelottery.go b/worldsrv/action_phonelottery.go index 2c944ba..d839959 100644 --- a/worldsrv/action_phonelottery.go +++ b/worldsrv/action_phonelottery.go @@ -3,13 +3,16 @@ package main import ( "encoding/json" "math/rand" + + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" + "mongo.games.com/game/common" "mongo.games.com/game/model" + "mongo.games.com/game/mq" player_proto "mongo.games.com/game/protocol/player" "mongo.games.com/game/protocol/webapi" "mongo.games.com/game/srvdata" - "mongo.games.com/goserver/core/logger" - "mongo.games.com/goserver/core/netlib" ) type CSPhoneLotteryInfoPacketFactory struct { @@ -195,7 +198,7 @@ func (this *CSPhoneLotteryHandler) Process(s *netlib.Session, packetid int, data if err != nil { return err } - LogChannelSingleton.WriteMQData(model.GeneratePhoneLottery(p.SnId, p.Platform, string(jsonData), 1, 0, 0, 0)) + mq.Write(model.GeneratePhoneLottery(p.SnId, p.Platform, string(jsonData), 1, 0, 0, 0)) for _, v := range items { tp1 := int32(-1) if v.ItemId == common.ItemIDCoin { @@ -204,8 +207,7 @@ func (this *CSPhoneLotteryHandler) Process(s *netlib.Session, packetid int, data tp1 = model.SystemFreeGive_CoinType_Diamond } if !p.IsRob && tp1 >= 0 { - LogChannelSingleton.WriteMQData( - model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, model.SystemFreeGive_PhoneLottery, tp1, v.ItemNum)) + mq.Write(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, model.SystemFreeGive_PhoneLottery, tp1, v.ItemNum)) } } } diff --git a/worldsrv/action_player.go b/worldsrv/action_player.go index 74de92f..a59163d 100644 --- a/worldsrv/action_player.go +++ b/worldsrv/action_player.go @@ -23,6 +23,7 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" + "mongo.games.com/game/mq" "mongo.games.com/game/proto" player_proto "mongo.games.com/game/protocol/player" webapi_proto "mongo.games.com/game/protocol/webapi" @@ -1409,7 +1410,7 @@ func (this *CSPlayerRegisterHandler) Process(s *netlib.Session, packetid int, da err2 := model.UpdatePlayerCoin(pi.Platform, pi.SnId, pi.Coin+int64(model.GameParamData.NewPlayerCoin), 0, 0, time.Now().Unix(), time.Now().Unix(), 0, pi.ShopID) if err2 == nil { if !pi.IsRob { - LogChannelSingleton.WriteMQData(model.GenerateSystemFreeGive(pi.SnId, pi.Name, pi.Platform, pi.Channel, model.SystemFreeGive_GiveType_NewPlayer, model.SystemFreeGive_CoinType_Coin, int64(model.GameParamData.NewPlayerCoin))) + mq.Write(model.GenerateSystemFreeGive(pi.SnId, pi.Name, pi.Platform, pi.Channel, model.SystemFreeGive_GiveType_NewPlayer, model.SystemFreeGive_CoinType_Coin, int64(model.GameParamData.NewPlayerCoin))) } log := model.NewCoinLogEx(&model.CoinLogParam{ Platform: pi.Platform, @@ -1427,7 +1428,7 @@ func (this *CSPlayerRegisterHandler) Process(s *netlib.Session, packetid int, da Remark: "", }) if log != nil { - LogChannelSingleton.WriteLog(log) + mq.Write(log) } } return player_proto.OpResultCode_OPRC_Sucess @@ -2074,7 +2075,7 @@ func CSPlayerData(s *netlib.Session, packetid int, data interface{}, sid int64) player.addLotteryCount(20) player.InitLotteryStatus = true player.dirty = true - LogChannelSingleton.WriteMQData(model.GeneratePhoneLottery(player.SnId, player.Platform, "", 3, 20, 5, 0)) + mq.Write(model.GeneratePhoneLottery(player.SnId, player.Platform, "", 3, 20, 5, 0)) } // rehold player @@ -3082,7 +3083,7 @@ func CSUpdateAttribute(s *netlib.Session, packetId int, data interface{}, sid in N: int64(stepId), } b, _ := json.Marshal(d) - LogChannelSingleton.WriteLog(&model.ClientLogMysql{ + mq.Write(&model.ClientLogMysql{ Data: string(b), Platform: p.Platform, Snid: p.SnId, diff --git a/worldsrv/action_rankmatch.go b/worldsrv/action_rankmatch.go index 44bdef3..1105486 100644 --- a/worldsrv/action_rankmatch.go +++ b/worldsrv/action_rankmatch.go @@ -8,6 +8,7 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" + "mongo.games.com/game/mq" "mongo.games.com/game/protocol/rankmatch" "mongo.games.com/game/srvdata" ) @@ -240,13 +241,14 @@ func CSRMAward(s *netlib.Session, packetId int, data interface{}, sid int64) err case v.Id == 1: //金币 p.AddCoin(int64(v.Num), 0, common.GainWay_RankMatch, "system", "段位奖励") if !p.IsRob { - LogChannelSingleton.WriteMQData(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, + mq.Write(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, model.SystemFreeGive_GiveType_RankMatch, model.SystemFreeGive_CoinType_Coin, int64(v.Num))) + } case v.Id == 2: //钻石 p.AddDiamond(int64(v.Num), 0, common.GainWay_RankMatch, "system", "段位奖励") if !p.IsRob { - LogChannelSingleton.WriteMQData(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, + mq.Write(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, model.SystemFreeGive_GiveType_RankMatch, model.SystemFreeGive_CoinType_Diamond, int64(v.Num))) } default: diff --git a/worldsrv/action_server.go b/worldsrv/action_server.go index e6f5bde..f3f2f91 100644 --- a/worldsrv/action_server.go +++ b/worldsrv/action_server.go @@ -12,6 +12,7 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" + "mongo.games.com/game/mq" loginproto "mongo.games.com/game/protocol/login" playerproto "mongo.games.com/game/protocol/player" serverproto "mongo.games.com/game/protocol/server" @@ -115,7 +116,7 @@ func init() { } } //更新玩家等级排行榜 - LogChannelSingleton.WriteLog(&model.PlayerLevelInfo{ + mq.Write(&model.PlayerLevelInfo{ SnId: p.SnId, Name: p.Name, Level: p.Level, @@ -134,7 +135,7 @@ func init() { logger.Logger.Infof("NewBankruptLogEx: snid:%v GetReturnCoin:%v coin:%v CostCoin:%v", p.SnId, msg.GetReturnCoin(), p.takeCoin, CostCoin) log := model.NewBankruptLogEx(p.SnId, scene.dbGameFree.GetId(), p.CreateTime.Unix(), CostCoin, p.Platform, p.Channel, scene.gameId) if log != nil { - LogChannelSingleton.WriteLog(log) + mq.Write(log) } } } diff --git a/worldsrv/action_task.go b/worldsrv/action_task.go index 22a6981..5fd0218 100644 --- a/worldsrv/action_task.go +++ b/worldsrv/action_task.go @@ -8,6 +8,7 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" + "mongo.games.com/game/mq" taskproto "mongo.games.com/game/protocol/task" "mongo.games.com/game/srvdata" ) @@ -137,8 +138,7 @@ func SendReward(p *Player, m map[int64]int64, tp int32) { tp = model.SystemFreeGive_CoinType_Diamond } if !p.IsRob && tp >= 0 && giveType >= 0 { - LogChannelSingleton.WriteMQData( - model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, giveType, tp, v.ItemNum)) + mq.Write(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, giveType, tp, v.ItemNum)) } } } @@ -245,7 +245,7 @@ func CSTaskReward(s *netlib.Session, packetId int, data interface{}, sid int64) taskLog.ActivityType = data.GetActivityType() taskLog.TaskType = data.GetTaskType() } - LogChannelSingleton.WriteLog(taskLog) + mq.Write(taskLog) ret.OpCode = taskproto.OpResultCode_OPRC_Success } } diff --git a/worldsrv/action_welfare.go b/worldsrv/action_welfare.go index 04ef088..8f1c5b1 100644 --- a/worldsrv/action_welfare.go +++ b/worldsrv/action_welfare.go @@ -12,6 +12,7 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" + "mongo.games.com/game/mq" "mongo.games.com/game/proto" webapiproto "mongo.games.com/game/protocol/webapi" "mongo.games.com/game/protocol/welfare" @@ -578,8 +579,7 @@ func SendPermitReward(p *Player, m map[int64]int64, tp int32) { tp1 = model.SystemFreeGive_CoinType_Diamond } if !p.IsRob && tp1 >= 0 && giveType >= 0 { - LogChannelSingleton.WriteMQData( - model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, giveType, tp1, v.ItemNum)) + mq.Write(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, giveType, tp1, v.ItemNum)) } } } @@ -1122,7 +1122,7 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int }) p.WelfData.PermitExchange[msg.GetId()] = append(p.WelfData.PermitExchange[msg.GetId()], now.Unix()) // 兑换记录 - LogChannelSingleton.WriteLog(&model.BackendPermitExchange{ + mq.Write(&model.BackendPermitExchange{ Platform: p.Platform, StartTs: startTs, SnId: p.SnId, diff --git a/worldsrv/bagmgr.go b/worldsrv/bagmgr.go index 637d0fb..e1d223d 100644 --- a/worldsrv/bagmgr.go +++ b/worldsrv/bagmgr.go @@ -14,6 +14,7 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" + "mongo.games.com/game/mq" "mongo.games.com/game/proto" "mongo.games.com/game/protocol/bag" playerproto "mongo.games.com/game/protocol/player" @@ -99,7 +100,7 @@ func init() { } else { permitScore = param.ItemNum } - LogChannelSingleton.WriteLog(&model.BackendPermitJoin{ + mq.Write(&model.BackendPermitJoin{ Platform: p.Platform, StartTs: PlatformMgrSingleton.GetConfig(p.Platform).PermitStartTs, SnId: p.SnId, @@ -130,7 +131,7 @@ func init() { startTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitStartTs if item != nil && item.ItemNum > 0 && startTs > 0 { // 赛季积分排行榜 - LogChannelSingleton.WriteLog(&model.PermitScore{ + mq.Write(&model.PermitScore{ Platform: p.Platform, SnId: p.SnId, Name: p.Name, @@ -703,7 +704,7 @@ func (this *BagMgr) AddItems(param *model.AddItemParam) (*BagInfo, bag.OpResultC RoomConfigId: param.RoomConfigId, }) if log != nil { - LogChannelSingleton.WriteLog(log) + mq.Write(log) ts = log.Ts newBagInfo.LogId = log.LogId.Hex() } @@ -877,7 +878,7 @@ func (this *BagMgr) VerifyUpJybInfo(p *Player, args *model.VerifyUpJybInfoArgs) if jyb.Award.Coin > 0 { p.AddCoin(jyb.Award.Coin, 0, common.GainWay_ActJybAward, "system", "礼包码兑换") if !p.IsRob { - LogChannelSingleton.WriteMQData(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, model.SystemFreeGive_GiveType_ActJybAward, model.SystemFreeGive_CoinType_Coin, int64(jyb.Award.Coin))) + mq.Write(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, model.SystemFreeGive_GiveType_ActJybAward, model.SystemFreeGive_CoinType_Coin, int64(jyb.Award.Coin))) } jybLog.Award = append(jybLog.Award, &model.JybItem{ Id: common.ItemIDCoin, @@ -887,7 +888,7 @@ func (this *BagMgr) VerifyUpJybInfo(p *Player, args *model.VerifyUpJybInfoArgs) if jyb.Award.Diamond > 0 { p.AddDiamond(jyb.Award.Diamond, 0, common.GainWay_ActJybAward, "system", "礼包码兑换") if !p.IsRob { - LogChannelSingleton.WriteMQData(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, model.SystemFreeGive_GiveType_ActJybAward, model.SystemFreeGive_CoinType_Diamond, int64(jyb.Award.Diamond))) + mq.Write(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, model.SystemFreeGive_GiveType_ActJybAward, model.SystemFreeGive_CoinType_Diamond, int64(jyb.Award.Diamond))) } jybLog.Award = append(jybLog.Award, &model.JybItem{ Id: common.ItemIDDiamond, @@ -895,7 +896,7 @@ func (this *BagMgr) VerifyUpJybInfo(p *Player, args *model.VerifyUpJybInfoArgs) }) } // 领取日志 - LogChannelSingleton.WriteLog(jybLog) + mq.Write(jybLog) p.dirty = true pack.GainItem.Coin = jyb.Award.Coin pack.GainItem.Diamond = jyb.Award.Diamond diff --git a/worldsrv/etcd.go b/worldsrv/etcd.go index 2ec4410..4bf2b08 100644 --- a/worldsrv/etcd.go +++ b/worldsrv/etcd.go @@ -14,6 +14,7 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/etcd" "mongo.games.com/game/model" + "mongo.games.com/game/mq" hallproto "mongo.games.com/game/protocol/gamehall" loginproto "mongo.games.com/game/protocol/login" playerproto "mongo.games.com/game/protocol/player" @@ -265,7 +266,7 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e } f2 := func() { if st.StartTs > 0 { - LogChannelSingleton.WriteLog(&model.BackendPermitCycle{ + mq.Write(&model.BackendPermitCycle{ Platform: config.Platform, StartTs: st.StartTs, EndTs: st.EndTs - 1, diff --git a/worldsrv/invitecode.go b/worldsrv/invitecode.go index 971460c..f0e0380 100644 --- a/worldsrv/invitecode.go +++ b/worldsrv/invitecode.go @@ -5,6 +5,7 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" + "mongo.games.com/game/mq" ) // SaveInviteScore 保存玩家操作 @@ -15,7 +16,7 @@ func SaveInviteScore(data *model.InviteScore) { } cfg := PlatformMgrSingleton.GetConfig(data.Platform).ActInviteConfig data.Rate = cfg.GetRates() - LogChannelSingleton.WriteLog(&model.EvtInviteMsg{ + mq.Write(&model.EvtInviteMsg{ InviteScore: *data, RechargeScore: cfg.GetRechargeScore(), }) @@ -23,7 +24,7 @@ func SaveInviteScore(data *model.InviteScore) { // CheckNewWeek 每周重置积分 func CheckNewWeek(platform string, snid int32) { - LogChannelSingleton.WriteLog(&model.EvtInviteMsg{ + mq.Write(&model.EvtInviteMsg{ InviteScore: model.InviteScore{ Platform: platform, SnId: snid, diff --git a/worldsrv/logchannel.go b/worldsrv/logchannel.go deleted file mode 100644 index cc44a15..0000000 --- a/worldsrv/logchannel.go +++ /dev/null @@ -1,75 +0,0 @@ -package main - -import ( - "reflect" - - "mongo.games.com/goserver/core/logger" - - "mongo.games.com/game/model" - "mongo.games.com/game/mq" -) - -// LogChannelSingleton 日志记录器 -var LogChannelSingleton = &LogChannel{ - cName: make(map[reflect.Type]string), -} - -type LogChannel struct { - cName map[reflect.Type]string -} - -func (c *LogChannel) RegisterLogCName(cname string, log interface{}) { - t := c.getLogType(log) - c.cName[t] = cname -} - -func (c *LogChannel) getLogType(log interface{}) reflect.Type { - return reflect.Indirect(reflect.ValueOf(log)).Type() -} - -func (c *LogChannel) getLogCName(log interface{}) string { - t := c.getLogType(log) - if name, exist := c.cName[t]; exist { - return name - } - return "" -} - -// WriteLog 记录日志,需要提前注册 -func (c *LogChannel) WriteLog(log interface{}) { - cname := c.getLogCName(log) - if cname == "" { - cname = "_null_" - } - logger.Logger.Tracef("==> RabbitMQ(%v): %#v", cname, log) - mq.Send(cname, log) -} - -// WriteMQData rabbitMQ消息 -func (c *LogChannel) WriteMQData(data *model.RabbitMQData) { - mq.Send(data.MQName, data.Data) -} - -func init() { - LogChannelSingleton.RegisterLogCName(model.LoginLogCollName, &model.LoginLog{}) - LogChannelSingleton.RegisterLogCName(model.CoinGiveLogCollName, &model.CoinGiveLog{}) - LogChannelSingleton.RegisterLogCName(model.CoinLogCollName, &model.CoinLog{}) - LogChannelSingleton.RegisterLogCName(model.ItemLogCollName, &model.ItemLog{}) - LogChannelSingleton.RegisterLogCName(model.WelfareLogCollName, &model.WelfareLog{}) - LogChannelSingleton.RegisterLogCName(model.OnlineLogCollName, &model.OnlineLog{}) - LogChannelSingleton.RegisterLogCName(model.MQRankSeason, &model.PlayerRankScore{}) - LogChannelSingleton.RegisterLogCName(model.MQRankPlayerCoin, &model.RankPlayerCoin{}) - LogChannelSingleton.RegisterLogCName(mq.BackBankrupt, &model.BankruptLog{}) - LogChannelSingleton.RegisterLogCName(mq.BackReliefund, &model.ReliefFundLog{}) - LogChannelSingleton.RegisterLogCName(mq.DBInvite, &model.EvtInviteMsg{}) - LogChannelSingleton.RegisterLogCName(model.MQRankPlayerLevel, &model.PlayerLevelInfo{}) - LogChannelSingleton.RegisterLogCName(model.MQRankPlayerPermit, &model.PermitScore{}) - LogChannelSingleton.RegisterLogCName(mq.BackSystemPermitCycle, &model.BackendPermitCycle{}) - LogChannelSingleton.RegisterLogCName(mq.BackSystemPermitRank, &model.BackendPermitRank{}) - LogChannelSingleton.RegisterLogCName(mq.BackSystemPermitExchange, &model.BackendPermitExchange{}) - LogChannelSingleton.RegisterLogCName(mq.BackSystemPermitJoin, &model.BackendPermitJoin{}) - LogChannelSingleton.RegisterLogCName(mq.BackSystemPermitTask, &model.BackendPermitTask{}) - LogChannelSingleton.RegisterLogCName(mq.BackClientLog, &model.ClientLogMysql{}) - LogChannelSingleton.RegisterLogCName(mq.BackSystemJyb, &model.JybLog{}) - LogChannelSingleton.RegisterLogCName(mq.DBVipGiftLog, &model.DbVip{}) -} diff --git a/worldsrv/mq_coinlog.go b/worldsrv/mq_coinlog.go index d5528d2..076c157 100644 --- a/worldsrv/mq_coinlog.go +++ b/worldsrv/mq_coinlog.go @@ -1,13 +1,8 @@ package main import ( - "encoding/json" - "mongo.games.com/goserver/core" "mongo.games.com/goserver/core/basic" - "mongo.games.com/goserver/core/broker" - "mongo.games.com/goserver/core/broker/rabbitmq" - "mongo.games.com/goserver/core/logger" "mongo.games.com/game/common" "mongo.games.com/game/model" @@ -15,19 +10,39 @@ import ( ) func init() { - mq.RegisterSubscriber(mq.WorldLogCoinAck, func(e broker.Event) (err error) { - msg := e.Message() - if msg != nil { - defer func() { - e.Ack() - }() + mq.RegisterMessage(&mq.RegisterMessageParam{Name: model.LoginLogCollName, Data: &model.LoginLog{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.DBGiveLog, Data: &model.CoinGiveLog{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: model.CoinLogCollName, Data: &model.CoinLog{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: model.ItemLogCollName, Data: &model.ItemLog{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: model.WelfareLogCollName, Data: &model.WelfareLog{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: model.OnlineLogCollName, Data: &model.OnlineLog{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: model.MQRankSeason, Data: &model.PlayerRankScore{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: model.MQRankPlayerCoin, Data: &model.RankPlayerCoin{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.BackBankrupt, Data: &model.BankruptLog{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.BackReliefund, Data: &model.ReliefFundLog{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.DBInvite, Data: &model.EvtInviteMsg{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: model.MQRankPlayerLevel, Data: &model.PlayerLevelInfo{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: model.MQRankPlayerPermit, Data: &model.PermitScore{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.BackSystemPermitCycle, Data: &model.BackendPermitCycle{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.BackSystemPermitRank, Data: &model.BackendPermitRank{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.BackSystemPermitExchange, Data: &model.BackendPermitExchange{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.BackSystemPermitJoin, Data: &model.BackendPermitJoin{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.BackSystemPermitTask, Data: &model.BackendPermitTask{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.BackClientLog, Data: &model.ClientLogMysql{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.BackSystemJyb, Data: &model.JybLog{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.DBVipGiftLog, Data: &model.DbVip{}}) +} - var log model.CoinLog - err = json.Unmarshal(msg.Body, &log) - if err != nil { +func init() { + // 金币对账 + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: mq.WorldLogCoinAck, + Data: &model.CoinLog{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.CoinLog) + if !ok || log == nil { return } - //通知主线程执行后续操作 core.CoreObject().SendCommand(basic.CommandWrapper(func(o *basic.Object) error { player := PlayerMgrSington.GetPlayerBySnId(log.SnId) @@ -38,26 +53,19 @@ func init() { return nil }), true) return - } - return nil - }, broker.Queue(mq.WorldLogCoinAck), rabbitmq.DurableQueue()) + }, + }) // 邀请数据同步 - mq.RegisterSubscriber(mq.WorldInviteAck, func(e broker.Event) error { - msg := e.Message() - if msg != nil { - defer func() { - e.Ack() - }() - - var log model.EvtInviteAckMsg - err := json.Unmarshal(msg.Body, &log) - if err != nil { - return err + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: mq.WorldInviteAck, + Data: &model.EvtInviteAckMsg{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.EvtInviteAckMsg) + if !ok || log == nil { + return } - logger.Logger.Tracef("EvtInviteAckMsg: %+v", log) - //通知主线程执行后续操作 core.CoreObject().SendCommand(basic.CommandWrapper(func(o *basic.Object) error { player := PlayerMgrSington.GetPlayerBySnId(log.Snid) @@ -84,7 +92,7 @@ func init() { } return nil }), true) - } - return nil - }, broker.Queue(mq.WorldInviteAck), rabbitmq.DurableQueue()) + return + }, + }) } diff --git a/worldsrv/permitmgr.go b/worldsrv/permitmgr.go index 88d55ae..759bde8 100644 --- a/worldsrv/permitmgr.go +++ b/worldsrv/permitmgr.go @@ -11,6 +11,7 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" + "mongo.games.com/game/mq" ) var PermitMgrInst = new(PermitMgr) @@ -109,7 +110,7 @@ func (r *PermitMgr) OnDayTimer() { } logger.Logger.Infof("PermitMgr rank award snid:%v rank:%v", player.SnId, rank) // 领奖记录 - LogChannelSingleton.WriteLog(&model.BackendPermitRank{ + mq.Write(&model.BackendPermitRank{ Platform: platform, StartTs: startTs, SnId: curPlayer.SnId, @@ -168,7 +169,7 @@ func (r *PermitMgr) OnDayTimer() { return nil }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { if se.StartTs > 0 { - LogChannelSingleton.WriteLog(&model.BackendPermitCycle{ + mq.Write(&model.BackendPermitCycle{ Platform: platform, StartTs: se.StartTs, EndTs: se.EndTs - 1, diff --git a/worldsrv/player.go b/worldsrv/player.go index fba1f6c..531bbf7 100644 --- a/worldsrv/player.go +++ b/worldsrv/player.go @@ -25,6 +25,7 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" + "mongo.games.com/game/mq" "mongo.games.com/game/proto" "mongo.games.com/game/protocol/bag" hallproto "mongo.games.com/game/protocol/gamehall" @@ -346,7 +347,7 @@ func (this *Player) OnLogined() { this.addLotteryCount(20) this.InitLotteryStatus = true this.dirty = true - LogChannelSingleton.WriteMQData(model.GeneratePhoneLottery(this.SnId, this.Platform, "", 3, 20, 5, 0)) + mq.Write(model.GeneratePhoneLottery(this.SnId, this.Platform, "", 3, 20, 5, 0)) } //登录日志 @@ -355,7 +356,7 @@ func (this *Player) OnLogined() { if logState != nil { clog = logState.clog } - LogChannelSingleton.WriteLog(model.NewLoginLog(this.SnId, common.LoginLogTypeLogin, this.Tel, this.Ip, + mq.Write(model.NewLoginLog(this.SnId, common.LoginLogTypeLogin, this.Tel, this.Ip, this.Platform, this.Channel, this.BeUnderAgentCode, this.PackageID, this.City, clog, this.GetTotalCoin(), 0, 0, this.DeviceName, this.PackageName, this.AppVersion, this.BuildVersion, this.AppChannel, this.ChannelId)) @@ -428,7 +429,7 @@ func (this *Player) OnRehold() { if logState != nil { clog = logState.clog } - LogChannelSingleton.WriteLog(model.NewLoginLog(this.SnId, common.LoginLogTypeRehold, this.Tel, this.Ip, + mq.Write(model.NewLoginLog(this.SnId, common.LoginLogTypeRehold, this.Tel, this.Ip, this.Platform, this.Channel, this.BeUnderAgentCode, this.PackageID, this.City, clog, this.GetTotalCoin(), gameid, 0, this.DeviceName, this.PackageName, this.AppVersion, this.BuildVersion, this.AppChannel, this.ChannelId)) @@ -1117,9 +1118,8 @@ func (this *Player) GetMessageAttach(id string) { tp = model.SystemFreeGive_CoinType_Diamond } if tp != -1 { - LogChannelSingleton.WriteMQData( - model.GenerateSystemFreeGive(this.SnId, this.Name, this.Platform, this.Channel, - model.SystemFreeGive_GiveType_TaskPermitRank, tp, int64(msg.Params[i+1]))) + mq.Write(model.GenerateSystemFreeGive(this.SnId, this.Name, this.Platform, this.Channel, + model.SystemFreeGive_GiveType_TaskPermitRank, tp, int64(msg.Params[i+1]))) } } } @@ -1202,7 +1202,7 @@ func (this *Player) GetMessageAttach(id string) { this.AddPayCoinLog(msg.Coin, model.PayCoinLogType_Coin, "mail") if msg.Oper == 0 { //系统赠送 if !this.IsRob { - LogChannelSingleton.WriteMQData(model.GenerateSystemFreeGive(this.SnId, this.Name, this.Platform, this.Channel, model.SystemFreeGive_GiveType_MailSystemGive, + mq.Write(model.GenerateSystemFreeGive(this.SnId, this.Name, this.Platform, this.Channel, model.SystemFreeGive_GiveType_MailSystemGive, model.SystemFreeGive_CoinType_Coin, int64(msg.Coin))) } } @@ -1219,7 +1219,7 @@ func (this *Player) GetMessageAttach(id string) { this.AddDiamond(msg.Diamond, 0, gainWay, msg.Id.Hex(), remark) if msg.Oper == 0 { //系统赠送 if !this.IsRob { - LogChannelSingleton.WriteMQData(model.GenerateSystemFreeGive(this.SnId, this.Name, this.Platform, this.Channel, model.SystemFreeGive_GiveType_MailSystemGive, + mq.Write(model.GenerateSystemFreeGive(this.SnId, this.Name, this.Platform, this.Channel, model.SystemFreeGive_GiveType_MailSystemGive, model.SystemFreeGive_CoinType_Diamond, int64(msg.Diamond))) } } @@ -1281,7 +1281,7 @@ func (this *Player) DropLine() { if this.scene != nil && this.scene.gameSess != nil { gameid = this.scene.gameId } - LogChannelSingleton.WriteLog(model.NewLoginLog(this.SnId, common.LoginLogTypeDrop, this.Tel, this.Ip, + mq.Write(model.NewLoginLog(this.SnId, common.LoginLogTypeDrop, this.Tel, this.Ip, this.Platform, this.Channel, this.BeUnderAgentCode, this.PackageID, this.City, clog, this.GetTotalCoin(), gameid, this.LastGameId, this.DeviceName, this.PackageName, this.AppVersion, this.BuildVersion, this.AppChannel, this.ChannelId)) @@ -1406,7 +1406,7 @@ func (this *Player) OnLogouted() { } //排除掉机器人 if !this.IsRob { - LogChannelSingleton.WriteLog(model.NewLoginLog(this.SnId, common.LoginLogTypeLogout, this.Tel, this.Ip, + mq.Write(model.NewLoginLog(this.SnId, common.LoginLogTypeLogout, this.Tel, this.Ip, this.Platform, this.Channel, this.BeUnderAgentCode, this.PackageID, this.City, clog, this.GetTotalCoin(), 0, 0, this.DeviceName, this.PackageName, this.AppVersion, this.BuildVersion, this.AppChannel, this.ChannelId)) this.OnlineLogLogout() @@ -1712,7 +1712,7 @@ func (this *Player) AddDiamond(num, add int64, gainWay int32, oper, remark strin Remark: remark, }) if log != nil { - LogChannelSingleton.WriteLog(log) + mq.Write(log) } } } @@ -1767,7 +1767,7 @@ func (this *Player) AddCoin(num, add int64, gainWay int32, oper, remark string) Remark: remark, }) if log != nil { - LogChannelSingleton.WriteLog(log) + mq.Write(log) } } } @@ -1822,7 +1822,7 @@ func (this *Player) AddCoinAsync(num, add int64, gainWay int32, oper, remark str Remark: remark, }) if log != nil { - LogChannelSingleton.WriteLog(log) + mq.Write(log) } } } @@ -2908,7 +2908,7 @@ func (this *Player) ReportLoginEvent() { this.UpgradeTime = this.CreateTime } } - LogChannelSingleton.WriteMQData(model.GenerateLogin(model.CreatePlayerLoginEvent(this.SnId, + mq.Write(model.GenerateLogin(model.CreatePlayerLoginEvent(this.SnId, this.Channel, this.BeUnderAgentCode, this.Platform, this.City, this.DeviceOS, this.Ip, this.CreateTime, this.UpgradeTime, isBindPhone, this.TelephonePromoter, this.DeviceId, this.ChannelId))) //登录通知 @@ -3255,7 +3255,7 @@ func (this *Player) TryRetrieveLostGameCoin(sceneid int) { logProbe.RestCount = 0 //this.Coin logProbe.SeqNo = this.GameCoinTs logProbe.RoomId = int32(sceneid) - LogChannelSingleton.WriteLog(logProbe) + mq.Write(logProbe) this.SendDiffData() } @@ -3484,7 +3484,7 @@ func (this *Player) VIPDraw(id, vip int32) { var item []model.ItemInfo item = append(item, model.ItemInfo{ItemId: 1, ItemNum: money}) log := model.NewDbVip(this.Platform, this.SnId, this.VIP, 0, 0, 0, item, 0, "Vip每日礼包") - LogChannelSingleton.WriteLog(log) + mq.Write(log) case 1: var items []*model.Item @@ -3508,7 +3508,7 @@ func (this *Player) VIPDraw(id, vip int32) { logger.Logger.Tracef("玩家领取VIP等级礼包成功!snid = %v,Vip = %v,items %#v", this.SnId, this.VIP, items) //VIP礼包统计数据 log := model.NewDbVip(this.Platform, this.SnId, this.VIP, 9, 0, 0, itemInfo, 0, "Vip等级礼包") - LogChannelSingleton.WriteLog(log) + mq.Write(log) } } send() @@ -3653,7 +3653,7 @@ func (this *Player) DoShopInfo(info *model.DbShop, isLogin bool) { // 通行证 if info.PageId == ShopPagePermit { this.Permit = info.CreateTs.Local() - LogChannelSingleton.WriteLog(&model.BackendPermitJoin{ + mq.Write(&model.BackendPermitJoin{ Platform: this.Platform, StartTs: PlatformMgrSingleton.GetConfig(this.Platform).PermitStartTs, SnId: this.SnId, @@ -3767,7 +3767,7 @@ func (this *Player) OnlineLogLogin() { } if this.onlineLog == nil { this.onlineLog = model.NewOnlineLog(bson.NewObjectId(), this.SnId, common.LoginLogTypeLogin, this.Platform) - LogChannelSingleton.WriteLog(*this.onlineLog) + mq.Write(*this.onlineLog) } } @@ -3777,7 +3777,7 @@ func (this *Player) OnlineLogRehold() { } if this.onlineLog == nil { this.onlineLog = model.NewOnlineLog(bson.NewObjectId(), this.SnId, common.LoginLogTypeRehold, this.Platform) - LogChannelSingleton.WriteLog(*this.onlineLog) + mq.Write(*this.onlineLog) } } @@ -3788,7 +3788,7 @@ func (this *Player) OnlineLogDrop() { if this.onlineLog != nil && this.onlineLog.OfflineTs == 0 { this.onlineLog.OfflineType = common.LoginLogTypeDrop this.onlineLog.OfflineTs = time.Now().Unix() - LogChannelSingleton.WriteLog(*this.onlineLog) + mq.Write(*this.onlineLog) this.onlineLog = nil } } @@ -3800,7 +3800,7 @@ func (this *Player) OnlineLogLogout() { if this.onlineLog != nil && this.onlineLog.OfflineTs == 0 { this.onlineLog.OfflineType = common.LoginLogTypeLogout this.onlineLog.OfflineTs = time.Now().Unix() - LogChannelSingleton.WriteLog(*this.onlineLog) + mq.Write(*this.onlineLog) this.onlineLog = nil } } @@ -3879,7 +3879,7 @@ func (this *Player) SendRankSeason() { } func (this *Player) SendPlayerCoin() { - LogChannelSingleton.WriteLog(&model.RankPlayerCoin{ + mq.Write(&model.RankPlayerCoin{ Platform: this.Platform, SnId: this.SnId, Name: this.Name, @@ -3969,7 +3969,7 @@ func (this *Player) UpdatePlayerVipBag(shopId int32) { item = append(item, model.ItemInfo{ItemId: shopInfo.Type, ItemNum: shopInfo.Amount}) log := model.NewDbVip(this.Platform, this.SnId, shopInfo.VipLevel, shopInfo.Type, shopInfo.ConstType, int64(shopInfo.CostArea[0]), item, shopInfo.Id, shopInfo.Name) - LogChannelSingleton.WriteLog(log) + mq.Write(log) } //判断是否是礼包周卡 if shopInfo.Page == ShopPageGift { @@ -4193,7 +4193,7 @@ func (this *Player) PhoneLotteryTask(taskId int32, num int64) { count := this.WelfData.PhoneLotteryTask[taskId].N / 20 this.addLotteryCount(int32(count)) this.WelfData.PhoneLotteryTask[taskId].N = this.WelfData.PhoneLotteryTask[taskId].N % 20 - LogChannelSingleton.WriteMQData(model.GeneratePhoneLottery(this.SnId, this.Platform, "", 3, int(count), 4, 0)) + mq.Write(model.GeneratePhoneLottery(this.SnId, this.Platform, "", 3, int(count), 4, 0)) } case common.TaskTypeWinOrLose: @@ -4202,7 +4202,7 @@ func (this *Player) PhoneLotteryTask(taskId int32, num int64) { count := this.WelfData.PhoneLotteryTask[taskId].N / 200000000 this.addLotteryCount(int32(count)) this.WelfData.PhoneLotteryTask[taskId].N = this.WelfData.PhoneLotteryTask[taskId].N % 200000000 - LogChannelSingleton.WriteMQData(model.GeneratePhoneLottery(this.SnId, this.Platform, "", 3, int(count), 3, 0)) + mq.Write(model.GeneratePhoneLottery(this.SnId, this.Platform, "", 3, int(count), 3, 0)) } case common.TaskTypeTienlenCount: @@ -4211,11 +4211,11 @@ func (this *Player) PhoneLotteryTask(taskId int32, num int64) { count := this.WelfData.PhoneLotteryTask[taskId].N / 20 this.addLotteryCount(int32(count)) this.WelfData.PhoneLotteryTask[taskId].N = this.WelfData.PhoneLotteryTask[taskId].N % 20 - LogChannelSingleton.WriteMQData(model.GeneratePhoneLottery(this.SnId, this.Platform, "", 3, int(count), 2, 0)) + mq.Write(model.GeneratePhoneLottery(this.SnId, this.Platform, "", 3, int(count), 2, 0)) } case common.TaskTypeFirstLogin: this.addLotteryCount(5) - LogChannelSingleton.WriteMQData(model.GeneratePhoneLottery(this.SnId, this.Platform, "", 3, 5, 1, 0)) + mq.Write(model.GeneratePhoneLottery(this.SnId, this.Platform, "", 3, 5, 1, 0)) default: logger.Logger.Errorf("手机抽奖任务未找到对应的任务ID: %d", taskId) return diff --git a/worldsrv/playeronline.go b/worldsrv/playeronline.go index 2018d43..14ef76d 100644 --- a/worldsrv/playeronline.go +++ b/worldsrv/playeronline.go @@ -6,6 +6,7 @@ import ( "mongo.games.com/goserver/core/module" "mongo.games.com/game/model" + "mongo.games.com/game/mq" ) var PlayerOnlineSington = &PlayerOnlineEvent{ @@ -58,7 +59,7 @@ func (p *PlayerOnlineEvent) Update() { here: p.OnlineCh = onlineCh - LogChannelSingleton.WriteMQData(model.GenerateOnline(p.OnlineCh)) + mq.Write(model.GenerateOnline(p.OnlineCh)) } func (p *PlayerOnlineEvent) Shutdown() { diff --git a/worldsrv/rankmatch.go b/worldsrv/rankmatch.go index f81f5a6..dfdccf7 100644 --- a/worldsrv/rankmatch.go +++ b/worldsrv/rankmatch.go @@ -4,7 +4,6 @@ import ( "encoding/json" "errors" "fmt" - "mongo.games.com/game/common" "sort" "strings" "time" @@ -16,8 +15,10 @@ import ( "mongo.games.com/goserver/core/module" "mongo.games.com/goserver/core/task" + "mongo.games.com/game/common" "mongo.games.com/game/model" - hall_proto "mongo.games.com/game/protocol/gamehall" + "mongo.games.com/game/mq" + hallproto "mongo.games.com/game/protocol/gamehall" "mongo.games.com/game/protocol/rankmatch" "mongo.games.com/game/srvdata" "mongo.games.com/game/worldsrv/internal" @@ -213,9 +214,9 @@ here: p := PlayerMgrSington.GetPlayerBySnId(this.SnId) if p != nil { if has { - p.SendShowRed(hall_proto.ShowRedCode_RankReward, rankType, 1) + p.SendShowRed(hallproto.ShowRedCode_RankReward, rankType, 1) } else { - p.SendShowRed(hall_proto.ShowRedCode_RankReward, rankType, 0) + p.SendShowRed(hallproto.ShowRedCode_RankReward, rankType, 0) } } } @@ -241,7 +242,7 @@ func (this *PlayerRankSeason) rankLog(rankType int32) { UpdateTs: time.Now().Unix(), ModId: p.PlayerData.GetRoleId(), } - LogChannelSingleton.WriteLog(log) + mq.Write(log) } type RankMatchMgr struct { @@ -472,7 +473,7 @@ func (r *RankMatchMgr) UpdateRobotSeason(platform string, snid int32, rankType i UpdateTs: time.Now().Unix(), ModId: roleId, } - LogChannelSingleton.WriteLog(log) + mq.Write(log) } func (r *RankMatchMgr) SetPlayerSeason(config *PlayerRankSeason) { diff --git a/worldsrv/shopmgr.go b/worldsrv/shopmgr.go index a77511b..993051f 100644 --- a/worldsrv/shopmgr.go +++ b/worldsrv/shopmgr.go @@ -4,7 +4,6 @@ import ( "encoding/json" "fmt" "math/rand" - "mongo.games.com/game/protocol/bag" "slices" "strconv" "time" @@ -17,7 +16,9 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" + "mongo.games.com/game/mq" "mongo.games.com/game/proto" + "mongo.games.com/game/protocol/bag" hall_proto "mongo.games.com/game/protocol/gamehall" "mongo.games.com/game/protocol/shop" webapi_proto "mongo.games.com/game/protocol/webapi" @@ -595,7 +596,7 @@ func (this *ShopMgr) createPhoneScore(p *Player, shopInfo *model.ShopInfo, costN }) jsonData, err := json.Marshal(items) if err == nil { - LogChannelSingleton.WriteMQData(model.GeneratePhoneLottery(p.SnId, p.Platform, string(jsonData), 2, 0, 0, int(costNum))) + mq.Write(model.GeneratePhoneLottery(p.SnId, p.Platform, string(jsonData), 2, 0, 0, int(costNum))) } for _, v := range items { tp1 := int32(-1) @@ -605,8 +606,7 @@ func (this *ShopMgr) createPhoneScore(p *Player, shopInfo *model.ShopInfo, costN tp1 = model.SystemFreeGive_CoinType_Diamond } if !p.IsRob && tp1 >= 0 { - LogChannelSingleton.WriteMQData( - model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, model.SystemFreeGive_PhoneLotterySwap, tp1, v.ItemNum)) + mq.Write(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, model.SystemFreeGive_PhoneLotterySwap, tp1, v.ItemNum)) } } } @@ -749,7 +749,7 @@ func (this *ShopMgr) GainShop(shopInfo *model.ShopInfo, p *Player, vipShopId, po p.AddCoin(addTotal, 0, common.GainWay_Shop_Buy, "system", shopName) if shopInfo.Ad > 0 { //观看广告 if !p.IsRob { - LogChannelSingleton.WriteMQData(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, model.SystemFreeGive_GiveType_ShopAd, model.SystemFreeGive_CoinType_Coin, addTotal)) + mq.Write(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, model.SystemFreeGive_GiveType_ShopAd, model.SystemFreeGive_CoinType_Coin, addTotal)) } } // 记录钻石兑换金币的金币数量,个人水池调控使用 @@ -766,7 +766,7 @@ func (this *ShopMgr) GainShop(shopInfo *model.ShopInfo, p *Player, vipShopId, po p.AddDiamond(addTotal, 0, common.GainWay_Shop_Buy, "system", shopName) if shopInfo.Ad > 0 { //观看广告 if !p.IsRob { - LogChannelSingleton.WriteMQData(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, model.SystemFreeGive_GiveType_ShopAd, model.SystemFreeGive_CoinType_Diamond, addTotal)) + mq.Write(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, model.SystemFreeGive_GiveType_ShopAd, model.SystemFreeGive_CoinType_Diamond, addTotal)) } } default: diff --git a/worldsrv/task_login.go b/worldsrv/task_login.go index fb0a466..fffe1f2 100644 --- a/worldsrv/task_login.go +++ b/worldsrv/task_login.go @@ -17,6 +17,7 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" + "mongo.games.com/game/mq" "mongo.games.com/game/proto" login_proto "mongo.games.com/game/protocol/login" server_proto "mongo.games.com/game/protocol/server" @@ -133,7 +134,7 @@ func (t *TaskLogin) Call(o *basic.Object) interface{} { if err == nil { // 新号赠送日志 if !playerData.IsRob { - LogChannelSingleton.WriteMQData(model.GenerateSystemFreeGive( + mq.Write(model.GenerateSystemFreeGive( playerData.SnId, playerData.Name, playerData.Platform, playerData.Channel, model.SystemFreeGive_GiveType_NewPlayer, model.SystemFreeGive_CoinType_Coin, int64(model.GameParamData.NewPlayerCoin))) @@ -155,7 +156,7 @@ func (t *TaskLogin) Call(o *basic.Object) interface{} { Remark: "", }) if log != nil { - LogChannelSingleton.WriteLog(log) + mq.Write(log) } } @@ -167,7 +168,7 @@ func (t *TaskLogin) Call(o *basic.Object) interface{} { // 金币 if coin > 0 { if !playerData.IsRob { - LogChannelSingleton.WriteMQData(model.GenerateSystemFreeGive( + mq.Write(model.GenerateSystemFreeGive( playerData.SnId, playerData.Name, playerData.Platform, playerData.Channel, model.SystemFreeGive_GiveType_BindTel, model.SystemFreeGive_CoinType_Coin, coin)) } @@ -188,13 +189,13 @@ func (t *TaskLogin) Call(o *basic.Object) interface{} { Remark: "", }) if log != nil { - LogChannelSingleton.WriteLog(log) + mq.Write(log) } } // 钻石 if diamond > 0 { if !playerData.IsRob { - LogChannelSingleton.WriteMQData(model.GenerateSystemFreeGive( + mq.Write(model.GenerateSystemFreeGive( playerData.SnId, playerData.Name, playerData.Platform, playerData.Channel, model.SystemFreeGive_GiveType_BindTel, model.SystemFreeGive_CoinType_Diamond, diamond)) } @@ -215,7 +216,7 @@ func (t *TaskLogin) Call(o *basic.Object) interface{} { Remark: "", }) if log != nil { - LogChannelSingleton.WriteLog(log) + mq.Write(log) } } //todo道具 diff --git a/worldsrv/transact_minigameaddcoin.go b/worldsrv/transact_minigameaddcoin.go index 7f8b1a3..dbf85fe 100644 --- a/worldsrv/transact_minigameaddcoin.go +++ b/worldsrv/transact_minigameaddcoin.go @@ -55,7 +55,7 @@ package main // log := model.NewCoinLogEx(p.SnId, ctx.Coin, p.Coin, p.SafeBoxCoin, p.Ver, ctx.GainWay, 0, // ctx.Oper, ctx.Remark, p.Platform, p.Channel, p.BeUnderAgentCode, 0, p.PackageID, 0) // if log != nil { -// LogChannelSingleton.WriteLog(log) +// mq.Write(log) // } // } // tNode.TransRep.RetFiels = p.Coin diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index 2b75c66..96921b2 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -10,6 +10,7 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" + "mongo.games.com/game/mq" hall_proto "mongo.games.com/game/protocol/gamehall" player_proto "mongo.games.com/game/protocol/player" "mongo.games.com/game/protocol/shop" @@ -109,7 +110,7 @@ func (this *WelfareMgr) GetReliefFund(p *Player, isVideo bool) { log := model.NewReliefFundLogEx(p.SnId, getType, model.SystemFreeGive_CoinType_Coin, coin, p.CreateTime.Unix(), p.Platform, p.Channel) if log != nil { - LogChannelSingleton.WriteLog(log) + mq.Write(log) logger.Logger.Tracef("NewReliefFundLogEx WriteLog snid: %v Coin:%v", p.SnId, pack.Coin) } } @@ -556,14 +557,14 @@ func DrawWelfareDate(dates []*webapi_proto.WelfareDate, p *Player, gainWay int32 p.AddCoin(coin, add, gainWay, oper, remark) if giveType != -1 { if !p.IsRob { - LogChannelSingleton.WriteMQData(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, giveType, model.SystemFreeGive_CoinType_Coin, int64(coin))) + mq.Write(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, giveType, model.SystemFreeGive_CoinType_Coin, int64(coin))) } } case 2: //钻石 p.AddDiamond(int64(v.Grade), 0, gainWay, oper, remark) if giveType != -1 { if !p.IsRob { - LogChannelSingleton.WriteMQData(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, giveType, model.SystemFreeGive_CoinType_Diamond, int64(v.Grade))) + mq.Write(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, giveType, model.SystemFreeGive_CoinType_Diamond, int64(v.Grade))) } } case 3: //道具 @@ -1154,7 +1155,7 @@ func (this *WelfareMgr) RecordWelfareLog(p *Player, num, takenum, discount int64 if log != nil { //logger.Logger.Trace("RecordItemLog 开始记录 道具操作") - LogChannelSingleton.WriteLog(log) + mq.Write(log) } } From 1f8f7b0f2285c9771809acaace0de48e5e22ca3c Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Tue, 8 Oct 2024 14:51:45 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E8=B5=9B=E5=AD=A3=E7=A7=AF=E5=88=86?= =?UTF-8?q?=E9=87=8D=E7=BD=AE=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/constant.go | 1 + model/gameparam.go | 1 + worldsrv/customroommgr.go | 4 ++-- worldsrv/player.go | 30 +++++++++++++++++++++++++++++- 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/common/constant.go b/common/constant.go index fdc1687..9798add 100644 --- a/common/constant.go +++ b/common/constant.go @@ -319,6 +319,7 @@ const ( GainWayItemBagChangeDoll = 111 // 背包内兑换娃娃 GainWayClawdollCatch = 112 // 娃娃机抓取到娃娃获取卡 GainWayItemBagChangeDollRevocation = 113 //娃娃兑换后台撤销 + GainWayPermitReset = 114 //赛季通行证积分重置 ) // 后台选择 金币变化类型 的充值 类型id号起始 diff --git a/model/gameparam.go b/model/gameparam.go index bfaf9a1..b45983a 100644 --- a/model/gameparam.go +++ b/model/gameparam.go @@ -89,6 +89,7 @@ type GameParam struct { CustomAwardMaxAddTime int // 竞技馆假奖励方法周期,单位秒 AdminPassword string // 管理员密码 UseAdminPassword bool // 是否使用管理员密码 + CloseCustomRoomCreate bool // 关闭自定义房间创建 } var GameParamPath = "../data/gameparam.json" diff --git a/worldsrv/customroommgr.go b/worldsrv/customroommgr.go index 75add0a..84e4c44 100644 --- a/worldsrv/customroommgr.go +++ b/worldsrv/customroommgr.go @@ -133,9 +133,9 @@ func (c *CustomRoomMgr) GetRoomList(plt string) []*gamehall.PrivateRoomInfo { } func (c *CustomRoomMgr) tryCreate(plt string, configId int32) { - logger.Logger.Tracef("尝试创建竞技馆系统房间 %v", configId) + logger.Logger.Tracef("尝试创建竞技馆系统房间 %v CloseCustomRoomCreate:%v", configId, model.GameParamData.CloseCustomRoomCreate) cfg := PlatformMgrSingleton.GetConfig(plt).RoomConfigSystem[configId] - if cfg == nil || cfg.GetOn() == common.Off { + if model.GameParamData.CloseCustomRoomCreate || cfg == nil || cfg.GetOn() == common.Off { return } diff --git a/worldsrv/player.go b/worldsrv/player.go index 531bbf7..067e9bc 100644 --- a/worldsrv/player.go +++ b/worldsrv/player.go @@ -2033,7 +2033,20 @@ func (this *Player) ResetPermit() { // 清理数据 bag := BagMgrSingleton.GetBagInfo(this.SnId) if bag != nil { - delete(bag.BagItem, common.ItemIDPermit) + BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: this.Platform, + SnId: this.SnId, + Change: []*model.Item{ + { + ItemId: common.ItemIDPermit, + ItemNum: -bag.BagItem[common.ItemIDPermit].ItemNum, + }, + }, + GainWay: common.GainWayPermitReset, + Operator: "system", + Remark: "赛季积分清理", + }) + if model.GameParamData.PermitInitScore > 0 { bagInfo := BagMgrSingleton.GetBagInfo(this.SnId) if bagInfo != nil { @@ -2042,6 +2055,21 @@ func (this *Player) ResetPermit() { ItemNum: model.GameParamData.PermitInitScore, ObtainTime: time.Now().Unix(), } + + BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: this.Platform, + SnId: this.SnId, + Change: []*model.Item{ + { + ItemId: common.ItemIDPermit, + ItemNum: model.GameParamData.PermitInitScore, + }, + }, + GainWay: common.GainWayPermitReset, + Operator: "system", + Remark: "初始赛季积分", + }) + this.Permit = time.Now() } } From 7ac2bf59bd034964db8ca7d2e1312dad3fcfb723 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Tue, 8 Oct 2024 15:38:45 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E9=81=93=E5=85=B7=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/bagmgr.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/worldsrv/bagmgr.go b/worldsrv/bagmgr.go index e1d223d..6e9fb45 100644 --- a/worldsrv/bagmgr.go +++ b/worldsrv/bagmgr.go @@ -359,7 +359,7 @@ func (this *BagMgr) CallbackAfter(ret *internal.PlayerLoadReplay) { this.OnChangeFuncs(&model.ChangeItemParam{ SnId: p.SnId, ItemId: v.ItemId, - ItemNum: num, + ItemNum: v.Count, GainWay: v.TypeId, RoomConfigId: v.RoomConfigId, GameId: v.GameId, @@ -712,7 +712,7 @@ func (this *BagMgr) AddItems(param *model.AddItemParam) (*BagInfo, bag.OpResultC this.OnChangeFuncs(&model.ChangeItemParam{ SnId: p.SnId, ItemId: v.ItemId, - ItemNum: num, + ItemNum: v.ItemNum, GainWay: param.GainWay, RoomConfigId: param.RoomConfigId, GameId: param.GameId, From e224d2a4bd7733cb4bc2b9f545fa616c45bfd4ef Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Tue, 8 Oct 2024 15:44:16 +0800 Subject: [PATCH 4/5] no message --- shell/update_deploy.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shell/update_deploy.bat b/shell/update_deploy.bat index c96763a..9d1ec6c 100644 --- a/shell/update_deploy.bat +++ b/shell/update_deploy.bat @@ -2,11 +2,11 @@ set deployDir="..\deploy" xcopy .\data\* %deployDir%\data\ /s /e /y -for /f "tokens=*" %%a in (programs.txt) do ( +for /f "tokens=*" %%a in (shell/programs.txt) do ( xcopy .\%%a\%%a %deployDir% /y del .\%%a\%%a ) -for /f "tokens=*" %%f in (exclude.txt) do ( +for /f "tokens=*" %%f in (shell/exclude.txt) do ( if exist "%deployDir%\data\%%f" (del "%deployDir%\data\%%f") ) \ No newline at end of file From d5332ddb3463aa2d3361b8e1cb7c55b5017d3bcd Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Tue, 8 Oct 2024 16:05:47 +0800 Subject: [PATCH 5/5] no message --- worldsrv/player.go | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/worldsrv/player.go b/worldsrv/player.go index 067e9bc..cd1d6bd 100644 --- a/worldsrv/player.go +++ b/worldsrv/player.go @@ -2033,19 +2033,21 @@ func (this *Player) ResetPermit() { // 清理数据 bag := BagMgrSingleton.GetBagInfo(this.SnId) if bag != nil { - BagMgrSingleton.AddItems(&model.AddItemParam{ - Platform: this.Platform, - SnId: this.SnId, - Change: []*model.Item{ - { - ItemId: common.ItemIDPermit, - ItemNum: -bag.BagItem[common.ItemIDPermit].ItemNum, + if bag.BagItem[common.ItemIDPermit] != nil { + BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: this.Platform, + SnId: this.SnId, + Change: []*model.Item{ + { + ItemId: common.ItemIDPermit, + ItemNum: -bag.BagItem[common.ItemIDPermit].ItemNum, + }, }, - }, - GainWay: common.GainWayPermitReset, - Operator: "system", - Remark: "赛季积分清理", - }) + GainWay: common.GainWayPermitReset, + Operator: "system", + Remark: "赛季积分清理", + }) + } if model.GameParamData.PermitInitScore > 0 { bagInfo := BagMgrSingleton.GetBagInfo(this.SnId)