game_sync/worldsrv/mq.go

126 lines
5.0 KiB
Go

package main
import (
"mongo.games.com/goserver/core"
"mongo.games.com/goserver/core/basic"
"mongo.games.com/game/common"
"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.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{}})
mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.BackSystemFreeGive, Data: &model.SystemFreeGive{}})
mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.DBLotteryCode, Data: &model.LotteryCode{}})
mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.DBLotteryLog, Data: &model.LotteryLog{}})
}
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)
if player != nil {
player.Coin += log.RestCount
player.SyncGameCoin(int(log.RoomId), log.SeqNo)
}
return nil
}), true)
return
},
})
// 邀请数据同步
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
}
//通知主线程执行后续操作
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
},
})
// 竞技馆奖励记录
mq.RegisterHandler(&mq.RegisterHandlerParam{
Name: mq.WorldCustomAward,
Data: &model.CustomLogAward{},
Handler: func(data interface{}) (err error) {
log, ok := data.(*model.CustomLogAward)
if !ok {
return
}
core.CoreObject().SendCommand(basic.CommandWrapper(func(o *basic.Object) error {
for _, v := range LotteryMgrInst.GetList(log.Platform) {
if v.GetState() != 2 { // 进行中的活动
continue
}
d := LotteryMgrInst.GetData(log.Platform, v.GetId())
d.CustomAward += log.Price
}
return nil
}), true)
return
},
})
}