game_sync/worldsrv/action_datasrv.go

282 lines
10 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main
//type DWThirdRebateMessagePacketFactory struct {
//}
//type DWThirdRebateMessageHandler struct {
//}
//
//func (this *DWThirdRebateMessagePacketFactory) CreatePacket() interface{} {
// pack := &server.DWThirdRebateMessage{}
// return pack
//}
//func (this *DWThirdRebateMessageHandler) Process(s *netlib.Session, packetid int, data interface{}) error {
// logger.Logger.Trace("DWThirdRebateMessageHandler Process recv ", data)
// if msg, ok := data.(*server.DWThirdRebateMessage); ok {
// //TODO
// SendAckToDataSrv(msg.GetTag(), 2)
// if msg.GetAvailableBet() <= 0 {
// logger.Logger.Warn("DWThirdRebateMessageHandler is error: AvailableBet= ", msg.GetAvailableBet())
// return nil
// }
//
// //p := PlayerMgrSington.GetPlayerBySnId(msg.GetSnid())
// //if p != nil {
// // p.dirty = true
// // //actRandCoinMgr.OnPlayerLiuShui(p, msg.GetAvailableBet())
// //}
// //
// //thirdId := strconv.Itoa(int(ThirdPltGameMappingConfig.FindThirdIdByThird(msg.GetThird())))
// //rebateTask := RebateInfoMgrSington.rebateTask[strconv.Itoa(int(msg.GetPlt()))]
// //if rebateTask != nil {
// // Third := rebateTask.RebateGameThirdCfg[thirdId]
// // if Third != nil {
// // p := PlayerMgrSington.GetPlayerBySnId(msg.GetSnid())
// // if p == nil {
// // logger.Logger.Trace("DWThirdRebateMessageHandler p == nil ", msg.GetSnid())
// // OfflinePlayerMgrSington.GetOfflinePlayer(msg.GetSnid(), func(op *OfflinePlayer, asyn bool) {
// // if op == nil {
// // return
// // }
// // if op.IsRob {
// // return
// // }
// //
// // if data, ok := op.RebateData[thirdId]; ok {
// // data.ValidBetTotal += msg.GetAvailableBet()
// // } else {
// // op.RebateData[thirdId] = &model.RebateData{
// // ValidBetTotal: msg.GetAvailableBet(),
// // }
// // }
// // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
// // //注意流控防止该任务过渡占用登陆队列可以在datasrv上配置心跳和maxdone来控制
// // return model.SavePlayerRebate(op.PlayerData, thirdId)
// // }), task.CompleteNotifyWrapper(func(data interface{}, tt *task.Task) {
// // if data != nil {
// // logger.Logger.Errorf("SavePlayerRebate error:%v snid:%v platform:%v AvailableBet:%v", data, msg.GetSnid(), msg.GetThird(), msg.GetAvailableBet())
// // } else {
// // p = PlayerMgrSington.GetPlayerBySnId(msg.GetSnid()) //说明更新任务排在了玩家登陆的后面(造成了脏读,重新应用下该次下注)
// // if p != nil {
// // if data, ok := p.RebateData[thirdId]; ok {
// // data.ValidBetTotal += msg.GetAvailableBet()
// // } else {
// // p.RebateData[thirdId] = &model.RebateData{
// // ValidBetTotal: msg.GetAvailableBet(),
// // }
// // }
// // p.dirty = true
// // }
// // }
// // }), "SavePlayerRebate").StartByExecutor(op.AccountId) //保证和玩家存取在一条线程内(避免脏读或者脏写)
// // }, false)
// // return nil
// // }
// // if p.IsRob {
// // logger.Logger.Trace("DWThirdRebateMessageHandler p is rob ", msg.GetSnid())
// // return nil
// // }
// // if data, ok := p.RebateData[thirdId]; ok {
// // data.ValidBetTotal += msg.GetAvailableBet()
// // } else {
// // p.RebateData[thirdId] = &model.RebateData{
// // ValidBetTotal: msg.GetAvailableBet(),
// // }
// // }
// //
// // p.dirty = true
// // //p.CountRebate(thirdId, 1)
// // } else {
// // logger.Logger.Trace("DWThirdRebateMessageHandler Third is nil. ", msg.GetPlt(), msg.GetThird())
// // }
// //} else {
// // logger.Logger.Trace("DWThirdRebateMessageHandler rebateTask is nil. ", msg.GetPlt(), msg.GetThird())
// //}
// }
// return nil
//}
//
//type DWThirdRoundMessagePacketFactory struct {
//}
//type DWThirdRoundMessageHandler struct {
//}
//
//func (this *DWThirdRoundMessagePacketFactory) CreatePacket() interface{} {
// pack := &server.DWThirdRoundMessage{}
// return pack
//}
//func (this *DWThirdRoundMessageHandler) Process(s *netlib.Session, packetid int, data interface{}) error {
// logger.Logger.Trace("DWThirdRoundMessageHandler Process recv ", data)
//
// if msg, ok := data.(*server.DWThirdRoundMessage); ok {
// //todo
// //获取到对应的gamefreeid,三方的特殊处理了只寻找对应大类的第一个gamefreeid,因为这个游戏都在不停的变,很多都不一致
// if thirdID := ThirdPltGameMappingConfig.FindThirdIdByThird(msg.GetThird()); thirdID != 0 {
// var dbGamefreeInfo *server.DB_GameFree
// platform := msg.GetPlatform()
// if platform != 0 {
// pltGameInfo := PlatformMgrSingleton.GetGameFree(strconv.Itoa(int(platform)), thirdID)
// if pltGameInfo != nil {
// dbGamefreeInfo = pltGameInfo.DbGameFree
// }
// }
//
// player := PlayerMgrSington.GetPlayerBySnId(msg.GetSnid())
// if player != nil {
// str := strconv.Itoa(int(thirdID))
// //处理三方全民流水问题
// totalOut := int32(0)
// totalIn := int32(0)
// if dbGamefreeInfo != nil {
// isBind := int32(0)
// if player.Tel != "" {
// isBind = 1
// }
//
// if msg.GetProfitCoinInTime() < 0 {
// totalIn = msg.GetBetCoinInTime()
// } else {
// totalOut = msg.GetBetCoinInTime()
// }
// isQuMin := false
// //pt := PlatformMgrSingleton.GetPackageTag(player.PackageID)
// //if pt != nil && pt.SpreadTag == 1 {
// // isQuMin = true
// //}
// if isQuMin || !model.GameParamData.QMOptimization {
// QMFlowMgr.AddPlayerStatement(player.SnId, isBind, totalOut, totalIn, thirdID,
// player.Platform, player.PackageID, dbGamefreeInfo)
// }
//
// availableBet := int64(totalOut + totalIn)
// availableBet = availableBet * int64(dbGamefreeInfo.GetBetWaterRate()) / 100
// if availableBet > 0 {
// player.TotalConvertibleFlow += availableBet
// player.TotalFlow += availableBet
// player.dirty = true
// //今日流水增加
// player.TodayGameData.TodayConvertibleFlow += availableBet
// }
// }
// if gd, ok := player.GDatas[str]; ok {
// gd.Statics.GameTimes += int64(msg.GetAccRoundsInTime())
// gd.Statics.TotalOut += int64(totalOut)
// gd.Statics.TotalIn += int64(totalIn)
// if gd.Statics.MaxSysOut < int64(msg.GetOneroundMaxwin()) {
// gd.Statics.MaxSysOut = int64(msg.GetOneroundMaxwin())
// }
// } else {
// gs := model.NewPlayerGameStatics()
// gs.GameTimes = int64(msg.GetAccRoundsInTime())
// gs.MaxSysOut = int64(msg.GetOneroundMaxwin())
// gs.TotalOut = int64(totalOut)
// gs.TotalIn = int64(totalIn)
// player.GDatas[str] = &model.PlayerGameInfo{
// FirstTime: time.Now(),
// Statics: *gs,
// }
// }
//
// if player.TotalGameData == nil {
// player.TotalGameData = make(map[int][]*model.PlayerGameTotal)
// }
// showId := 9
// if len(player.TotalGameData[showId]) == 0 {
// player.TotalGameData[showId] = []*model.PlayerGameTotal{new(model.PlayerGameTotal)}
// }
// cnt := len(player.TotalGameData[showId])
// if cnt > 0 {
// td := player.TotalGameData[showId][cnt-1]
// if td == nil {
// td = &model.PlayerGameTotal{}
// player.TotalGameData[showId][cnt-1] = td
// }
// if td != nil {
// td.ProfitCoin += int64(msg.GetProfitCoinInTime())
// td.BetCoin += int64(msg.GetBetCoinInTime())
// td.FlowCoin += int64(msg.GetFlowCoinInTime())
// }
// }
//
// //洗码
// //三方游戏,通过进出场的营收差洗码
// washingCoin := msg.GetProfitCoinInTime()
// if washingCoin < 0 {
// washingCoin = -washingCoin
// }
// washedCoin := player.WashingCoin(int64(washingCoin))
// if washedCoin > 0 {
// logger.Logger.Tracef("三方游戏洗码:snid=%v,washingCoin=%v,gamefreeid=%v", player.SnId, washedCoin, thirdID)
// }
// //五福红包游戏局数检测
// //actRandCoinMgr.OnPlayerGameTimes(player, int64(msg.GetAccRoundsInTime()))
// } else {
// if dbGamefreeInfo != nil {
// totalOut := int32(0)
// totalIn := int32(0)
// if msg.GetProfitCoinInTime() < 0 {
// totalIn = msg.GetBetCoinInTime()
// } else {
// totalOut = msg.GetBetCoinInTime()
// }
// QMFlowMgr.AddOffPlayerStatement(msg.GetSnid(), totalOut, totalIn, thirdID, dbGamefreeInfo)
// availableBet := int64(totalOut + totalIn)
// availableBet = availableBet * int64(dbGamefreeInfo.GetBetWaterRate()) / 100
// if availableBet > 0 {
// PlayerCacheMgrSingleton.Get(strconv.Itoa(int(msg.GetPlatform())), msg.GetSnid(), func(op *PlayerCacheItem, asyn, isnew bool) {
// if op == nil {
// return
// }
// if op.IsRob {
// return
// }
// //总流水累加
// op.TotalConvertibleFlow += availableBet
// op.TotalFlow += availableBet
// //今日流水增加,todo 这个地方没有考虑彩票导致的跨天,或者注单延迟导致的今日流水问题
// op.TodayGameData.TodayConvertibleFlow += availableBet
// task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
// //注意流控防止该任务过渡占用登陆队列可以在datasrv上配置心跳和maxdone来控制
// return model.UpdatePlayerExchageFlow(op.Platform, op.SnId, op.TotalConvertibleFlow, op.TotalFlow)
// }), nil).StartByExecutor(strconv.Itoa(int(op.SnId)))
// }, false)
// }
// }
// }
// }
// }
//
// return nil
//}
//func init() {
// netlib.RegisterHandler(int(server.SSPacketID_PACKET_DW_ThirdRebateMessage), &DWThirdRebateMessageHandler{})
// netlib.RegisterFactory(int(server.SSPacketID_PACKET_DW_ThirdRebateMessage), &DWThirdRebateMessagePacketFactory{})
// netlib.RegisterHandler(int(server.SSPacketID_PACKET_DW_ThirdRoundMessage), &DWThirdRoundMessageHandler{})
// netlib.RegisterFactory(int(server.SSPacketID_PACKET_DW_ThirdRoundMessage), &DWThirdRoundMessagePacketFactory{})
//}
// 暂时约定为result=1正常result=-1错误
//func SendAckToDataSrv(snid uint64, result int32) bool {
// datasrvSess := srvlib.ServerSessionMgrSington.GetSession(common.GetSelfAreaId(), common.DataServerType, common.DataServerId)
// if datasrvSess != nil {
// pack := &server.WDACKThirdRebateMessage{
// Tag: proto.Uint64(snid),
// Result: proto.Int32(result),
// }
// proto.SetDefaults(pack)
// datasrvSess.Send(int(server.SSPacketID_PACKET_WD_ACKThirdRebateMessage), pack)
// return true
// } else {
// logger.Logger.Error("datasrv server not found.")
// }
// return false
//}
//func init() {
// go func() {
// for {
// time.Sleep(time.Second)
// SendAckToDataSrv(205656,1)
// }
// }()
//}