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" "mongo.games.com/game/mq" ) func init() { mq.RegisterSubscriber(model.TopicProbeCoinLogAck, 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 { return } //通知主线程执行后续操作 core.CoreObject().SendCommand(basic.CommandWrapper(func(o *basic.Object) error { player := PlayerMgrSington.GetPlayerBySnId(log.SnId) if player != nil { player.Coin += log.RestCount player.SyncGameCoin(int(log.RoomId), log.SeqNo) } return nil }), true) return } return nil }, broker.Queue(model.TopicProbeCoinLogAck), rabbitmq.DurableQueue()) // 邀请数据同步 mq.RegisterSubscriber(model.EvtInviteAck, 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 } logger.Logger.Tracef("EvtInviteAckMsg: %+v", log) //通知主线程执行后续操作 core.CoreObject().SendCommand(basic.CommandWrapper(func(o *basic.Object) error { player := PlayerMgrSington.GetPlayerBySnId(log.Snid) if player != nil { // 邀请数量 player.INum = log.Num player.ResetTaskN(common.TaskTypeInviteNum) TaskSubjectSingleton.Touch(common.TaskTypeInviteNum, &TaskData{SnId: player.SnId, Num: player.INum}) // 邀请积分 player.IScore = log.Score player.ResetTaskN(common.TaskTypeInviteScore) TaskSubjectSingleton.Touch(common.TaskTypeInviteScore, &TaskData{ SnId: player.SnId, Num: log.Score, }) // 充值金额 player.IMoney = log.Money player.ResetTaskN(common.TaskTypeInviteRecharge) TaskSubjectSingleton.Touch(common.TaskTypeInviteRecharge, &TaskData{ SnId: player.SnId, Num: log.Money, }) } return nil }), true) } return nil }, broker.Queue(model.EvtInviteAck), rabbitmq.DurableQueue()) }