game_sync/ranksrv/mq/init.go

80 lines
1.9 KiB
Go

package mq
import (
"mongo.games.com/goserver/core"
"mongo.games.com/goserver/core/basic"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/srvlib"
"mongo.games.com/goserver/srvlib/action"
"mongo.games.com/game/common"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
rankproto "mongo.games.com/game/protocol/rank"
"mongo.games.com/game/ranksrv/rank"
)
// Init 初始化
func Init() {
InitHandler()
// 注册消息
mq.RegisterMessage(&mq.RegisterMessageParam{
Name: mq.DBCustomLogAward,
Data: model.CustomLogAward{},
})
}
// InitHandler 注册消息处理方法
func InitHandler() {
mq.RegisterHandler(&mq.RegisterHandlerParam{
Name: mq.RankCustomLogAward,
Data: model.CustomLogAward{},
Handler: func(data interface{}) (err error) {
log, ok := data.(*model.CustomLogAward)
if !ok {
return nil
}
core.CoreObject().SendCommand(basic.CommandWrapper(func(o *basic.Object) error {
rank.CustomAwardMgrInstance.UpdateCache(log.Platform, 0)
var awards []*rankproto.Item
for _, v := range log.Awards {
awards = append(awards, &rankproto.Item{
Id: v.ItemId,
N: v.ItemNum,
})
}
pack := &rankproto.UserAward{
Snid: log.SnId,
Name: log.Name,
Awards: awards,
Ts: log.EndTs,
}
action.BroadcastMessage(common.GetSelfAreaId(), srvlib.GateServerType, int(rankproto.Rank_PACKET_SCRoomAwardOne), pack, nil)
logger.Logger.Tracef("SCRoomAwardOne %v", pack)
return nil
}), true)
return nil
},
})
mq.RegisterHandler(&mq.RegisterHandlerParam{
Name: mq.RankLotteryLog,
Data: &model.LotteryLog{},
Handler: func(data interface{}) (err error) {
log, ok := data.(*model.LotteryLog)
if !ok {
return nil
}
core.CoreObject().SendCommand(basic.CommandWrapper(func(o *basic.Object) error {
rank.LotteryLogMgrInstance.UpdateCache(log.Platform, 0)
return nil
}), true)
return nil
},
})
}