91 lines
2.3 KiB
Go
91 lines
2.3 KiB
Go
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())
|
|
}
|