282 lines
10 KiB
Go
282 lines
10 KiB
Go
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)
|
||
// }
|
||
// }()
|
||
//}
|