diff --git a/bin/build.bat b/bin/build.bat index aca3c17..fda23fe 100644 --- a/bin/build.bat +++ b/bin/build.bat @@ -1,5 +1,4 @@ @echo off -setlocal enabledelayedexpansion xcopy ..\data\* .\data\ /s /e /y /exclude:..\shell\exclude.txt @@ -8,5 +7,4 @@ for /f %%i in (../shell/programs.txt) do ( go build -o ./%%i/%%i.exe ../%%i/ ) -endlocal pause \ No newline at end of file diff --git a/bin/clean.bat b/bin/clean.bat index fbae9f4..d620cb2 100644 --- a/bin/clean.bat +++ b/bin/clean.bat @@ -1,5 +1,4 @@ @echo off -setlocal enabledelayedexpansion for /f "tokens=*" %%a in (../shell/programs.txt) do ( if exist "%%a\*.log" del /q "%%a\*.log" diff --git a/shell/build.bat b/shell/build.bat index da00f16..e803d1f 100644 --- a/shell/build.bat +++ b/shell/build.bat @@ -1,10 +1,7 @@ @echo off -setlocal enabledelayedexpansion for /f %%i in (shell/programs.txt) do ( call shell/build_sub.bat %%i ) -endlocal - echo "build complete!" \ No newline at end of file diff --git a/shell/clean.bat b/shell/clean.bat index ced09a3..c53aa6c 100644 --- a/shell/clean.bat +++ b/shell/clean.bat @@ -1,5 +1,4 @@ @echo off -setlocal enabledelayedexpansion for /f "tokens=*" %%a in (shell/programs.txt) do ( if exist "%%a\*.log" del /q "%%a\*.log" diff --git a/shell/close.bat b/shell/close.bat index 57c22d9..25709d5 100644 --- a/shell/close.bat +++ b/shell/close.bat @@ -1,10 +1,7 @@ @echo off -setlocal enabledelayedexpansion for /f %%i in (shell/programs.txt) do ( taskkill /F /IM %%i.exe ) -endlocal - echo "close complete!" \ No newline at end of file diff --git a/worldsrv/action_login.go b/worldsrv/action_login.go index 1f2c66f..4ab6b14 100644 --- a/worldsrv/action_login.go +++ b/worldsrv/action_login.go @@ -361,47 +361,6 @@ func (this *CSLoginHandler) Process(s *netlib.Session, packetid int, data interf return nil } -type CSCustomServicePacketFactory struct { -} - -type CSCustomServiceHandler struct { -} - -func (this *CSCustomServicePacketFactory) CreatePacket() interface{} { - pack := &login_proto.CSCustomService{} - return pack -} - -func (this *CSCustomServiceHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { - logger.Logger.Trace("CSCustomService Process recv ", data) - if _, ok := data.(*login_proto.CSCustomService); ok { - p := PlayerMgrSington.GetPlayer(sid) - if p == nil { - logger.Logger.Warn("CSCustomServiceHandler p == nil") - return nil - } - var Url string - var customType int32 - flag := int32(0) - platform := PlatformMgrSingleton.GetPlatform(p.Platform) - if platform != nil { - Url = platform.ServiceUrl - customType = platform.CustomType - if platform.ServiceFlag { - flag = 1 - } - } - pack := &login_proto.SCCustomService{ - Url: proto.String(Url), - OpenFlag: proto.Int32(flag), - CustomType: proto.Int32(customType), - } - p.SendToClient(int(login_proto.LoginPacketID_PACKET_SC_CUSTOMSERVICE), pack) - logger.Logger.Trace("SCCustomService:", pack) - } - return nil -} - type CSPlatFormPacketFactory struct { } @@ -673,9 +632,6 @@ func init() { //登录 common.RegisterHandler(int(login_proto.LoginPacketID_PACKET_CS_LOGIN), &CSLoginHandler{}) netlib.RegisterFactory(int(login_proto.LoginPacketID_PACKET_CS_LOGIN), &CSLoginPacketFactory{}) - //客服地址 - common.RegisterHandler(int(login_proto.LoginPacketID_PACKET_CS_CUSTOMSERVICE), &CSCustomServiceHandler{}) - netlib.RegisterFactory(int(login_proto.LoginPacketID_PACKET_CS_CUSTOMSERVICE), &CSCustomServicePacketFactory{}) //平台配置信息 common.RegisterHandler(int(login_proto.LoginPacketID_PACKET_CS_PLATFORMCFG), &CSPlatFormHandler{}) netlib.RegisterFactory(int(login_proto.LoginPacketID_PACKET_CS_PLATFORMCFG), &CSPlatFormPacketFactory{}) diff --git a/worldsrv/action_pets.go b/worldsrv/action_pets.go index 48db50d..09ee758 100644 --- a/worldsrv/action_pets.go +++ b/worldsrv/action_pets.go @@ -36,7 +36,7 @@ func (this *CSRoleInfoHandler) Process(s *netlib.Session, packetid int, data int if platform == nil { return nil } - roleInfos := PetMgrSington.GetRoleInfos(p) + roleInfos := ModelMgrSingleton.GetRoleInfos(p) pack := &pets.SCRoleInfo{ Infos: roleInfos, } @@ -71,7 +71,7 @@ func (this *CSPetInfoHandler) Process(s *netlib.Session, packetid int, data inte return nil } - petInfos := PetMgrSington.GetPetInfos(p) + petInfos := ModelMgrSingleton.GetPetInfos(p) pack := &pets.SCPetInfo{ Infos: petInfos, } @@ -122,21 +122,21 @@ func (this *CSRisingStarHandler) Process(s *netlib.Session, packetid int, data i } if msg.RisingModId == 0 { logger.Logger.Warn("CSRisingStarHandler UseModId:", msg.RisingModId) - SendInfoRole(pets.OpResultCode_OPRC_Error, PetMgrSington.GetRoleInfo(p, msg.RisingModId)) + SendInfoRole(pets.OpResultCode_OPRC_Error, ModelMgrSingleton.GetRoleInfo(p, msg.RisingModId)) return nil } if msg.RisingType == 0 { - roleInfo := PetMgrSington.GetIntroductionByModId(msg.RisingModId) + roleInfo := ModelMgrSingleton.GetIntroductionByModId(msg.RisingModId) if roleInfo == nil { - SendInfoRole(pets.OpResultCode_OPRC_Error, PetMgrSington.GetRoleInfo(p, msg.RisingModId)) + SendInfoRole(pets.OpResultCode_OPRC_Error, ModelMgrSingleton.GetRoleInfo(p, msg.RisingModId)) return nil } if roleInfo.MaxLevel == p.Roles.ModUnlock[msg.RisingModId] { logger.Logger.Trace("人物已经达到最大等级") - SendInfoRole(pets.OpResultCode_OPRC_Error, PetMgrSington.GetRoleInfo(p, msg.RisingModId)) + SendInfoRole(pets.OpResultCode_OPRC_Error, ModelMgrSingleton.GetRoleInfo(p, msg.RisingModId)) return nil } - role := PetMgrSington.GetRoleInfo(p, msg.RisingModId) + role := ModelMgrSingleton.GetRoleInfo(p, msg.RisingModId) if role != nil { if role.HaveAmount < role.Amount { logger.Logger.Trace("人物碎片道具数量不够", role.HaveAmount, role.Amount) @@ -170,21 +170,21 @@ func (this *CSRisingStarHandler) Process(s *netlib.Session, packetid int, data i FriendMgrSington.UpdateInfo(p.Platform, p.SnId) p.dirty = true //人物 - SendInfoRole(pets.OpResultCode_OPRC_Sucess, PetMgrSington.GetRoleInfo(p, msg.RisingModId)) + SendInfoRole(pets.OpResultCode_OPRC_Sucess, ModelMgrSingleton.GetRoleInfo(p, msg.RisingModId)) } } else if msg.RisingType == 1 { - petInfo := PetMgrSington.GetIntroductionByModId(msg.RisingModId) + petInfo := ModelMgrSingleton.GetIntroductionByModId(msg.RisingModId) if petInfo == nil { - SendInfoPet(pets.OpResultCode_OPRC_Error, PetMgrSington.GetPetInfo(p, msg.RisingModId)) + SendInfoPet(pets.OpResultCode_OPRC_Error, ModelMgrSingleton.GetPetInfo(p, msg.RisingModId)) return nil } if petInfo.MaxLevel == p.Pets.ModUnlock[msg.RisingModId] { logger.Logger.Trace("宠物已经达到最大等级") - SendInfoPet(pets.OpResultCode_OPRC_Error, PetMgrSington.GetPetInfo(p, msg.RisingModId)) + SendInfoPet(pets.OpResultCode_OPRC_Error, ModelMgrSingleton.GetPetInfo(p, msg.RisingModId)) return nil } - pet := PetMgrSington.GetPetInfo(p, msg.RisingModId) + pet := ModelMgrSingleton.GetPetInfo(p, msg.RisingModId) if pet != nil { if pet.HaveAmount < pet.Amount { logger.Logger.Trace("宠物碎片道具数量不够", pet.HaveAmount, pet.Amount) @@ -216,7 +216,7 @@ func (this *CSRisingStarHandler) Process(s *netlib.Session, packetid int, data i FriendMgrSington.UpdateInfo(p.Platform, p.SnId) p.dirty = true //宠物 - SendInfoPet(pets.OpResultCode_OPRC_Sucess, PetMgrSington.GetPetInfo(p, msg.RisingModId)) + SendInfoPet(pets.OpResultCode_OPRC_Sucess, ModelMgrSingleton.GetPetInfo(p, msg.RisingModId)) } } } @@ -321,7 +321,7 @@ func (this *CSRolePetUnlockHandler) Process(s *netlib.Session, packetid int, dat } if msg.UseModType == 0 { if _, ok1 := p.Roles.ModUnlock[msg.UseModId]; !ok1 { - roleInfo := PetMgrSington.GetRoleInfo(p, msg.UseModId) + roleInfo := ModelMgrSingleton.GetRoleInfo(p, msg.UseModId) if roleInfo != nil { item := BagMgrSingleton.GetItem(p.SnId, roleInfo.Fragment) if item != nil && item.ItemNum >= int64(roleInfo.Amount) { @@ -349,14 +349,14 @@ func (this *CSRolePetUnlockHandler) Process(s *netlib.Session, packetid int, dat FriendMgrSington.UpdateInfo(p.Platform, p.SnId) p.dirty = true logger.Logger.Trace("解锁人物", msg.UseModId) - SendMsg(pets.OpResultCode_OPRC_Sucess, PetMgrSington.GetRoleInfo(p, msg.UseModId), nil) + SendMsg(pets.OpResultCode_OPRC_Sucess, ModelMgrSingleton.GetRoleInfo(p, msg.UseModId), nil) return nil } } } } else if msg.UseModType == 1 { if _, ok1 := p.Pets.ModUnlock[msg.UseModId]; !ok1 { - petInfo := PetMgrSington.GetPetInfo(p, msg.UseModId) + petInfo := ModelMgrSingleton.GetPetInfo(p, msg.UseModId) if petInfo != nil { item := BagMgrSingleton.GetItem(p.SnId, petInfo.Fragment) if item != nil && item.ItemNum >= int64(petInfo.Amount) { @@ -384,7 +384,7 @@ func (this *CSRolePetUnlockHandler) Process(s *netlib.Session, packetid int, dat FriendMgrSington.UpdateInfo(p.Platform, p.SnId) p.dirty = true logger.Logger.Trace("解锁宠物", msg.UseModId) - SendMsg(pets.OpResultCode_OPRC_Sucess, nil, PetMgrSington.GetPetInfo(p, msg.UseModId)) + SendMsg(pets.OpResultCode_OPRC_Sucess, nil, ModelMgrSingleton.GetPetInfo(p, msg.UseModId)) return nil } } @@ -493,7 +493,7 @@ func CSSkinInfo(s *netlib.Session, packetid int, data interface{}, sid int64) er return nil } pack := &pets.SCSkinInfo{ - Infos: PetMgrSington.GetSkinInfos(p), + Infos: ModelMgrSingleton.GetSkinInfos(p), } p.SendToClient(int(pets.PetsPacketID_PACKET_SC_SKIN_INFO), pack) logger.Logger.Tracef("SCSkinInfo: %v", pack) @@ -530,7 +530,7 @@ func CSSkinUse(s *netlib.Session, packetid int, data interface{}, sid int64) err } // 已解锁的 - info := PetMgrSington.GetSkinInfo(p, msg.GetId()) + info := ModelMgrSingleton.GetSkinInfo(p, msg.GetId()) if !info.GetIsUnlock() { logger.Logger.Errorf("CSSkinUse unlock") pack.RetCode = pets.OpResultCode_OPRC_Unlock @@ -567,7 +567,7 @@ func CSSkinUpgrade(s *netlib.Session, packetid int, data interface{}, sid int64) } // 是否已经解锁 - info := PetMgrSington.GetSkinInfo(p, msg.GetId()) + info := ModelMgrSingleton.GetSkinInfo(p, msg.GetId()) if !info.GetIsUnlock() { logger.Logger.Errorf("CSSkinUpgrade not unlock") send() @@ -611,7 +611,7 @@ func CSSkinUpgrade(s *netlib.Session, packetid int, data interface{}, sid int64) } p.Skin.ModUnlock[msg.GetId()] = info.GetLevel() + 1 pack.RetCode = pets.OpResultCode_OPRC_Sucess - pack.Info = PetMgrSington.GetSkinInfo(p, msg.GetId()) + pack.Info = ModelMgrSingleton.GetSkinInfo(p, msg.GetId()) send() // 任务加成变更 @@ -627,7 +627,7 @@ func SkinUnLock(p *Player, id int32) (*pets.SkinInfo, pets.OpResultCode) { return nil, pets.OpResultCode_OPRC_Error } - info := PetMgrSington.GetSkinInfo(p, id) + info := ModelMgrSingleton.GetSkinInfo(p, id) if info.GetIsUnlock() { return nil, pets.OpResultCode_OPRC_Error } @@ -673,7 +673,7 @@ func SkinUnLock(p *Player, id int32) (*pets.SkinInfo, pets.OpResultCode) { pack := &pets.SCSkinUnLock{ Id: id, RetCode: pets.OpResultCode_OPRC_Sucess, - Info: PetMgrSington.GetSkinInfo(p, id), + Info: ModelMgrSingleton.GetSkinInfo(p, id), } p.SendToClient(int(pets.PetsPacketID_PACKET_SC_SKIN_UNLOCK), pack) logger.Logger.Tracef("SCSkinUnlock: %v", pack) diff --git a/worldsrv/action_player.go b/worldsrv/action_player.go index c84e5d2..86bd311 100644 --- a/worldsrv/action_player.go +++ b/worldsrv/action_player.go @@ -2229,7 +2229,7 @@ func CSQueryPlayer(s *netlib.Session, packetid int, data interface{}, sid int64) Id: id, Level: level, } - roleData := PetMgrSington.GetIntroductionByModId(id) + roleData := ModelMgrSingleton.GetIntroductionByModId(id) if roleData != nil { role.Name = roleData.Name } @@ -2244,7 +2244,7 @@ func CSQueryPlayer(s *netlib.Session, packetid int, data interface{}, sid int64) Id: id, Level: level, } - petData := PetMgrSington.GetIntroductionByModId(id) + petData := ModelMgrSingleton.GetIntroductionByModId(id) if petData != nil { pet.Name = petData.Name } diff --git a/worldsrv/action_server.go b/worldsrv/action_server.go index acd1c1a..bcf07f0 100644 --- a/worldsrv/action_server.go +++ b/worldsrv/action_server.go @@ -624,7 +624,6 @@ func (this *CSPMCmdHandler) Process(s *netlib.Session, packetid int, data interf p.CoinPayTotal += int64(coin) p.dirty = true p.AddCoin(coin, 0, common.GainWay_ByPMCmd, p.GetName(), cmd) - p.ReportSystemGiveEvent(int32(coin), common.GainWay_ByPMCmd, true) p.SendDiffData() } } diff --git a/worldsrv/actmgr.go b/worldsrv/actmgr.go deleted file mode 100644 index 5c1eddf..0000000 --- a/worldsrv/actmgr.go +++ /dev/null @@ -1,113 +0,0 @@ -package main - -import ( - "time" - - "mongo.games.com/goserver/core/module" -) - -const ACT_LOGGER = "actmgr" - -var ActMgrSington = &ActMgr{ - ConfigByPlateform: make(map[string]*ActGivePlateformConfig), -} - -// config -------------------------------------------------------- -type ActGiveConfig struct { - Tag int32 //赠与类型 - IsStop int32 //是否阻止 1阻止 0放开 - NeedFlow int32 //需要流水的倍数 0 不计算 其他计算 -} - -type ActGivePlateformConfig struct { - ActInfo map[string]*ActGiveConfig //奖励信息 - findInfo map[int32]*ActGiveConfig //奖励信息 - Platform string //平台 -} - -type ActMgr struct { - ConfigByPlateform map[string]*ActGivePlateformConfig - LastTicket int64 -} - -func (this *ActMgr) AddGiveConfig(actComeConfig *ActGivePlateformConfig, plateFrom string) { - actComeConfig.findInfo = make(map[int32]*ActGiveConfig) - for _, v := range actComeConfig.ActInfo { - actComeConfig.findInfo[v.Tag] = v - } - this.ConfigByPlateform[plateFrom] = actComeConfig - - this.OnConfigChanged(actComeConfig) -} - -func (this *ActMgr) RemovePlateFormConfig(plateFrom string) { - _, ok := this.ConfigByPlateform[plateFrom] - if ok { - delete(this.ConfigByPlateform, plateFrom) - } -} - -func (this *ActMgr) GetIsNeedGive(plateFrom string, tag int32) bool { - info := this.GetGiveConfig(plateFrom) - if info == nil { - return true - } - - if v, ok := info.findInfo[tag]; ok { - if v.IsStop == 1 { - return false - } - } - return true -} - -func (this *ActMgr) GetExchangeFlow(plateFrom string, tag int32) int32 { - info := this.GetGiveConfig(plateFrom) - if info == nil { - return 0 - } - - if v, ok := info.findInfo[tag]; ok { - return v.NeedFlow - } - return 0 -} - -func (this *ActMgr) GetGiveConfig(plateForm string) *ActGivePlateformConfig { - plateFormConfig, ok := this.ConfigByPlateform[plateForm] - if ok { - return plateFormConfig - } - return nil -} - -func (this *ActMgr) OnConfigChanged(actComeConfig *ActGivePlateformConfig) { - -} - -// ////////////////////////////////////////////////////////////////// -// / Module Implement [beg] -// ////////////////////////////////////////////////////////////////// -func (this *ActMgr) ModuleName() string { - return "ActMgr" -} - -func (this *ActMgr) Init() { - this.LastTicket = time.Now().Unix() - - if this.ConfigByPlateform == nil { - this.ConfigByPlateform = make(map[string]*ActGivePlateformConfig) - } -} - -func (this *ActMgr) Update() { - -} - -func (this *ActMgr) Shutdown() { - module.UnregisteModule(this) -} - -func init() { - module.RegisteModule(ActMgrSington, time.Minute, 0) -} diff --git a/worldsrv/bagmgr.go b/worldsrv/bagmgr.go index 9891255..01a13e0 100644 --- a/worldsrv/bagmgr.go +++ b/worldsrv/bagmgr.go @@ -79,7 +79,7 @@ func init() { Num: param.ItemNum, }) case common.ItemIDPetSkill: - PetMgrSington.CheckShowRed(p) + ModelMgrSingleton.CheckShowRed(p) case common.ItemIDPermit, common.ItemIDLong: var permitScore, long int64 @@ -101,7 +101,7 @@ func init() { switch itemData.GetType() { case common.ItemTypeSkinChip: - PetMgrSington.CheckSkinRed(p) + ModelMgrSingleton.CheckSkinRed(p) } } diff --git a/worldsrv/coinscenemgr.go b/worldsrv/coinscenemgr.go index f0ad3fa..c29ebfb 100644 --- a/worldsrv/coinscenemgr.go +++ b/worldsrv/coinscenemgr.go @@ -61,6 +61,10 @@ func (m *CoinSceneMgr) GetCoinScenePool(plt string, id int32) *CoinScenePool { return pool } +// findCoinScenePool 查找指定平台和ID的场景池 +// platform 平台ID +// id 场次ID +// 返回场景池map和对应的游戏场次配置 func (m *CoinSceneMgr) findCoinScenePool(platform string, id int32) (pools map[int32]*CoinScenePool, dbGameFree *server.DB_GameFree) { gf := PlatformMgrSingleton.GetGameFree(platform, id) if gf == nil || gf.GetDbGameFree() == nil { @@ -76,9 +80,19 @@ func (m *CoinSceneMgr) findCoinScenePool(platform string, id int32) (pools map[i } // PlayerEnter 玩家进入房间池 +// 参数: +// - p: 玩家对象 +// - id: 场次ID +// - roomId: 房间ID,为0时随机分配房间 +// - exclude: 排除的房间ID列表 +// - isChangeRoom: 是否为换房操作 +// +// 返回值: +// - hallproto.OpResultCode: 操作结果代码 func (m *CoinSceneMgr) PlayerEnter(p *Player, id int32, roomId int32, exclude []int32, isChangeRoom bool) hallproto.OpResultCode { logger.Logger.Tracef("CoinSceneMgr PlayerEnter snid:%v id:%v roomid:%v exclude:%v", p.SnId, id, roomId, exclude) - if p.isDelete { //删档用户不让进游戏 + //删档用户不让进游戏 + if p.isDelete { return hallproto.OpResultCode_OPRC_RoomHadClosed } // 玩家已经在房间里了 @@ -98,9 +112,19 @@ func (m *CoinSceneMgr) PlayerEnter(p *Player, id int32, roomId int32, exclude [] } // AudienceEnter 观众进入房间 +// 参数: +// - p: 玩家对象 +// - id: 场次ID +// - roomId: 房间ID,为0时随机分配房间 +// - exclude: 排除的房间ID列表 +// - ischangeroom: 是否为换房操作 +// +// 返回值: +// - hallproto.OpResultCode: 操作结果代码 func (m *CoinSceneMgr) AudienceEnter(p *Player, id int32, roomId int32, exclude []int32, ischangeroom bool) hallproto.OpResultCode { logger.Logger.Tracef("CoinSceneMgr AudienceEnter snid:%v id:%v roomid:%v exclude:%v", p.SnId, id, roomId, exclude) - if p.isDelete { //删档用户不让进游戏 + //删档用户不让进游戏 + if p.isDelete { return hallproto.OpResultCode_OPRC_RoomHadClosed } if m.InCoinScene(p) { @@ -191,7 +215,7 @@ func (m *CoinSceneMgr) GetPlayerNums(p *Player, gameId, gameMode int32) []int32 return nums[:] } -// InCoinScene 是否在场次中 +// InCoinScene 检查玩家是否在场次中 func (m *CoinSceneMgr) InCoinScene(p *Player) bool { if p == nil { logger.Logger.Tracef("(m *CoinSceneMgr) InCoinScene p == nil") @@ -230,18 +254,18 @@ func (m *CoinSceneMgr) PlayerTryLeave(p *Player, isAudience bool) hallproto.OpRe return hallproto.OpResultCode_OPRC_OpYield } -// PlayerInChanging 换房中 +// PlayerInChanging 检查玩家是否正在换房中 func (m *CoinSceneMgr) PlayerInChanging(p *Player) bool { _, exist := m.playerChanging[p.SnId] return exist } -// ClearPlayerChanging 换房结束 +// ClearPlayerChanging 清除玩家换房状态 func (m *CoinSceneMgr) ClearPlayerChanging(p *Player) { delete(m.playerChanging, p.SnId) } -// PlayerTryChange 换房 +// PlayerTryChange 玩家尝试换房 // id 场次id // excludeRoomId 排除的房间id // isAudience 是否是观众 @@ -258,6 +282,7 @@ func (m *CoinSceneMgr) PlayerTryChange(p *Player, id int32, excludeRoomId []int3 return m.PlayerEnter(p, id, 0, excludeRoomId, true) } +// StartChangeCoinSceneTransact 开始换房事务 func (m *CoinSceneMgr) StartChangeCoinSceneTransact(p *Player, id int32, exclude []int32, isAudience bool) hallproto.OpResultCode { if p == nil || p.scene == nil { logger.Logger.Warnf("(m *CoinSceneMgr) StartChangeCoinSceneTransact p == nil || p.scene == nil snid:%v id:%v", p.SnId, id) diff --git a/worldsrv/coinscenepool.go b/worldsrv/coinscenepool.go index 9beabf2..a8c6526 100644 --- a/worldsrv/coinscenepool.go +++ b/worldsrv/coinscenepool.go @@ -182,6 +182,23 @@ func (csp *CoinScenePool) canEnter(p *Player) gamehallproto.OpResultCode { } } + // 具体场次的入场规则 + canEnterFunc := GetCoinSceneCanEnterFunc(int(dbGameFree.GetGameId())) + if canEnterFunc != nil { + ret := canEnterFunc(csp, p) + if ret != gamehallproto.OpResultCode_OPRC_Sucess { + return ret + } + } + + // 通用入场检测 + if dbGameFree.GetLimitCoin() != 0 && dbGameFree.GetLimitCoin() > p.Coin && !p.IsRob { + return gamehallproto.OpResultCode_OPRC_CoinNotEnough + } + if dbGameFree.GetMaxCoinLimit() != 0 && dbGameFree.GetMaxCoinLimit() < p.Coin && !p.IsRob { + return gamehallproto.OpResultCode_OPRC_CoinTooMore + } + return csp.policy.CanEnter(csp, p) } @@ -224,13 +241,12 @@ func (csp *CoinScenePool) playerEnter(p *Player, roomId int32, exclude []int32, if s.IsFull() { return gamehallproto.OpResultCode_OPRC_RoomIsFull } - if sp, ok := s.sp.(*ScenePolicyData); ok { - if !s.starting || sp.EnterAfterStart { - scene = s - } else { - logger.Logger.Warnf("(csp *CoinScenePool) PlayerEnter[!s.starting || sp.EnterAfterStart] snid:%v sceneid:%v starting:%v EnterAfterStart:%v", p.SnId, s.sceneId, s.starting, sp.EnterAfterStart) - return gamehallproto.OpResultCode_OPRC_Error - } + if s.sp.CanEnter(s, p.SnId) == 0 { + scene = s + } else { + logger.Logger.Warnf("(csp *CoinScenePool) PlayerEnter[!s.starting || sp.EnterAfterStart] snid:%v sceneid:%v starting:%v EnterAfterStart:%v", + p.SnId, s.sceneId, s.starting, s.sp.CanEnter(s, p.SnId)) + return gamehallproto.OpResultCode_OPRC_Error } } } else { diff --git a/worldsrv/coinscenepool_base.go b/worldsrv/coinscenepool_base.go index 0888bbc..e1df2c9 100644 --- a/worldsrv/coinscenepool_base.go +++ b/worldsrv/coinscenepool_base.go @@ -22,23 +22,6 @@ func (this *BaseCoinScenePool) New() interface{} { // CanEnter 检查入场条件 func (this *BaseCoinScenePool) CanEnter(pool *CoinScenePool, p *Player) gamehall.OpResultCode { - // 具体场次的入场规则 - canEnterFunc := GetCoinSceneCanEnterFunc(int(pool.dbGameFree.GetGameId())) - if canEnterFunc != nil { - ret := canEnterFunc(pool, p) - if ret != gamehall.OpResultCode_OPRC_Sucess { - return ret - } - } - - // 通用入场检测 - if pool.dbGameFree.GetLimitCoin() != 0 && pool.dbGameFree.GetLimitCoin() > p.Coin && !p.IsRob { - return gamehall.OpResultCode_OPRC_CoinNotEnough - } - if pool.dbGameFree.GetMaxCoinLimit() != 0 && int64(pool.dbGameFree.GetMaxCoinLimit()) < p.Coin && !p.IsRob { - return gamehall.OpResultCode_OPRC_CoinTooMore - } - return gamehall.OpResultCode_OPRC_Sucess } @@ -86,11 +69,10 @@ func (this *BaseCoinScenePool) PlayerEnter(pool *CoinScenePool, p *Player, exclu continue } // 牌局开始后禁止进入 - if sp, ok := s.sp.(*ScenePolicyData); ok { - if s.starting && !sp.EnterAfterStart { - continue - } + if s.sp.CanEnter(s, p.SnId) != 0 { + continue } + } scenes[sceneId] = s } diff --git a/worldsrv/etcd.go b/worldsrv/etcd.go index 686c3a9..240d460 100644 --- a/worldsrv/etcd.go +++ b/worldsrv/etcd.go @@ -55,8 +55,6 @@ func init() { etcd.Register(etcd.ETCDKEY_BLACKLIST_PREFIX, BlackInfoApi{}, handlerEvent) // 代理 etcd.Register(etcd.ETCDKEY_PROMOTER_PREFIX, PromoterConfig{}, handlerEvent) - // 赠送 - etcd.Register(etcd.ETCDKEY_ACT_GIVE_PREFIX, ActGivePlateformConfig{}, handlerEvent) // 7日签到 etcd.Register(etcd.ETCDKEY_ACT_7SIGN, webapi.Welfare7SignDateList{}, platformConfigEvent) // 转盘 @@ -442,18 +440,6 @@ func handlerEvent(ctx context.Context, completeKey string, isInit bool, event *c } } - case equalFunc(etcd.ETCDKEY_ACT_GIVE_PREFIX): - var config *ActGivePlateformConfig - if data != nil { - config = data.(*ActGivePlateformConfig) - } - if config == nil { - return - } - if isInit || event.Type == clientv3.EventTypePut { - ActMgrSington.AddGiveConfig(config, config.Platform) - } - case equalFunc(etcd.ETCDKEY_MatchAudience): switch event.Type { case clientv3.EventTypePut: diff --git a/worldsrv/petmgr.go b/worldsrv/petmgr.go index ce09243..ccb380f 100644 --- a/worldsrv/petmgr.go +++ b/worldsrv/petmgr.go @@ -1,13 +1,9 @@ package main import ( - "time" - - "mongo.games.com/goserver/core/module" - "mongo.games.com/game/common" "mongo.games.com/game/model" - hall_proto "mongo.games.com/game/protocol/gamehall" + "mongo.games.com/game/protocol/gamehall" "mongo.games.com/game/protocol/pets" "mongo.games.com/game/srvdata" ) @@ -17,13 +13,12 @@ const ( ItemConsume //消耗 ) -var PetMgrSington = &PetMgr{ - //RPInfos: make(map[int32]*RoleAndPetInfo), -} +var ModelMgrSingleton = &ModelMgr{} -type PetMgr struct { +type ModelMgr struct { //RPInfos map[int32]*RoleAndPetInfo } + type RoleAndPetInfo struct { ModId int32 //模型id Name string //名字 @@ -32,12 +27,9 @@ type RoleAndPetInfo struct { MaxLevel int32 //最大等级 } -func (this *PetMgr) ModuleName() string { - return "PetMgr" -} - // 人物 -func (this *PetMgr) GetRoleInfos(p *Player) []*pets.RoleInfo { + +func (this *ModelMgr) GetRoleInfos(p *Player) []*pets.RoleInfo { rolesInfo := srvdata.RolePetMgrSington.Roles if rolesInfo != nil { var newRoles = make([]*pets.RoleInfo, 0) @@ -89,7 +81,8 @@ func (this *PetMgr) GetRoleInfos(p *Player) []*pets.RoleInfo { } return nil } -func (this *PetMgr) GetRoleInfo(p *Player, modId int32) *pets.RoleInfo { + +func (this *ModelMgr) GetRoleInfo(p *Player, modId int32) *pets.RoleInfo { level := p.Roles.ModUnlock[modId] roleInfo := srvdata.RolePetMgrSington.GetRoleByRoleIdAndLevel(modId, level) if roleInfo != nil { @@ -130,9 +123,9 @@ func (this *PetMgr) GetRoleInfo(p *Player, modId int32) *pets.RoleInfo { return nil } -// //////////////////////////////////////////////////////////////////////// // 宠物 -func (this *PetMgr) GetPetInfos(p *Player) []*pets.PetInfo { + +func (this *ModelMgr) GetPetInfos(p *Player) []*pets.PetInfo { petsInfo := srvdata.RolePetMgrSington.Pets if petsInfo != nil { var newPets = make([]*pets.PetInfo, 0) @@ -195,7 +188,8 @@ func (this *PetMgr) GetPetInfos(p *Player) []*pets.PetInfo { } return nil } -func (this *PetMgr) GetPetInfo(p *Player, modId int32) *pets.PetInfo { + +func (this *ModelMgr) GetPetInfo(p *Player, modId int32) *pets.PetInfo { level := p.Pets.ModUnlock[modId] petInfo := srvdata.RolePetMgrSington.GetPetByPetIdAndLevel(modId, level) if petInfo != nil { @@ -247,7 +241,8 @@ func (this *PetMgr) GetPetInfo(p *Player, modId int32) *pets.PetInfo { } // 皮肤 -func (this *PetMgr) GetSkinInfos(p *Player) []*pets.SkinInfo { + +func (this *ModelMgr) GetSkinInfos(p *Player) []*pets.SkinInfo { var ret []*pets.SkinInfo for _, v := range PlatformMgrSingleton.GetConfig(p.Platform).SkinConfig.GetItems() { ret = append(ret, this.GetSkinInfo(p, v.GetId())) @@ -255,7 +250,7 @@ func (this *PetMgr) GetSkinInfos(p *Player) []*pets.SkinInfo { return ret } -func (this *PetMgr) GetSkinInfo(p *Player, id int32) *pets.SkinInfo { +func (this *ModelMgr) GetSkinInfo(p *Player, id int32) *pets.SkinInfo { cfg := PlatformMgrSingleton.GetSkinInfo(p.Platform, id) if cfg == nil { return nil @@ -336,7 +331,8 @@ func (this *PetMgr) GetSkinInfo(p *Player, id int32) *pets.SkinInfo { return ret } -func (this *PetMgr) CheckSkinRed(p *Player) { +// CheckSkinRed 皮肤红点 +func (this *ModelMgr) CheckSkinRed(p *Player) { if p == nil || p.IsRob { return } @@ -356,12 +352,12 @@ func (this *PetMgr) CheckSkinRed(p *Player) { } } if ok && len(info.GetCost()) > 0 { - p.SendShowRed(hall_proto.ShowRedCode_Skin, v.Id, 1) + p.SendShowRed(gamehall.ShowRedCode_Skin, v.Id, 1) continue } // vip等级解锁 if info.GetUnLockType() == common.SkinGetVip && p.VIP >= info.GetNeedVip() { - p.SendShowRed(hall_proto.ShowRedCode_Skin, v.Id, 1) + p.SendShowRed(gamehall.ShowRedCode_Skin, v.Id, 1) continue } } @@ -376,15 +372,16 @@ func (this *PetMgr) CheckSkinRed(p *Player) { } } if ok && len(info.GetCost()) > 0 { - p.SendShowRed(hall_proto.ShowRedCode_Skin, v.Id, 1) + p.SendShowRed(gamehall.ShowRedCode_Skin, v.Id, 1) continue } } } } -// 商品人物总加成 人物功能变动需要修改 -func (this *PetMgr) GetShopAward(shopInfo *model.ShopInfo, p *Player) (award, roleId int32) { +// GetShopAward 角色加成 +// 商品人物加成,角色id 人物功能变动需要修改 +func (this *ModelMgr) GetShopAward(shopInfo *model.ShopInfo, p *Player) (award, roleId int32) { if shopInfo.Ad > 0 && shopInfo.Type == ShopTypeCoin { id, add := srvdata.RolePetMgrSington.GetRoleAdd(p.PlayerData, common.RoleAddADV) award += add @@ -404,15 +401,18 @@ func (this *PetMgr) GetShopAward(shopInfo *model.ShopInfo, p *Player) (award, ro return award, roleId } +// GetAwardPetByWelf 宠物加成 // 宠物加成 宠物功能变动需要修改 -func (this *PetMgr) GetAwardPetByWelf(p *Player) (award int64) { +func (this *ModelMgr) GetAwardPetByWelf(p *Player) (award int64) { petChick := this.GetPetInfo(p, 1000001) if petChick != nil && petChick.Level > 0 { award = int64(petChick.Award) } return } -func (this *PetMgr) GetIntroductionByModId(modId int32) *RoleAndPetInfo { + +// GetIntroductionByModId 模型介绍 +func (this *ModelMgr) GetIntroductionByModId(modId int32) *RoleAndPetInfo { mod := srvdata.PBDB_Game_IntroductionMgr.GetData(modId) if mod == nil { return &RoleAndPetInfo{} @@ -425,7 +425,10 @@ func (this *PetMgr) GetIntroductionByModId(modId int32) *RoleAndPetInfo { MaxLevel: mod.LevelMax, } } -func (this *PetMgr) CheckShowRed(p *Player) { + +// CheckShowRed 检查红点 +// 人物,宠物,宠物技能 +func (this *ModelMgr) CheckShowRed(p *Player) { if p == nil || p.IsRob { return } @@ -517,26 +520,9 @@ func (this *PetMgr) CheckShowRed(p *Player) { } if roleRed { - p.SendShowRed(hall_proto.ShowRedCode_Role, 0, 1) + p.SendShowRed(gamehall.ShowRedCode_Role, 0, 1) } if petRed { - p.SendShowRed(hall_proto.ShowRedCode_Pet, 0, 1) + p.SendShowRed(gamehall.ShowRedCode_Pet, 0, 1) } } - -////////////////////////////////// - -func (this *PetMgr) Init() { - -} -func (this *PetMgr) Update() { - -} - -func (this *PetMgr) Shutdown() { - module.UnregisteModule(this) -} - -func init() { - module.RegisteModule(PetMgrSington, time.Second, 0) -} diff --git a/worldsrv/platform.go b/worldsrv/platform.go index d71d19f..96c0fcf 100644 --- a/worldsrv/platform.go +++ b/worldsrv/platform.go @@ -48,15 +48,12 @@ type ClubConfig struct { GiveCoinRate []int64 //会长充值额外赠送比例 } type Platform struct { - Id int32 // 平台ID - IdStr string // 字符id + Id int32 // 平台ID,数值 + IdStr string // 字符id,字符串 Name string // 平台名称 Isolated bool // 是否孤立(别的平台看不到) Disable bool // 是否禁用 - dirty bool // - ServiceUrl string //客服地址 BindOption int32 //绑定选项 - ServiceFlag bool //客服标记 是否支持浏览器跳转 false否 true是 UpgradeAccountGiveCoin int32 //升级账号奖励金币 NewAccountGiveCoin int32 //新账号奖励金币 PerBankNoLimitAccount int32 //同一银行卡号绑定用户数量限制 diff --git a/worldsrv/platformmgr.go b/worldsrv/platformmgr.go index c9769e9..9f21517 100644 --- a/worldsrv/platformmgr.go +++ b/worldsrv/platformmgr.go @@ -124,9 +124,7 @@ func (pm *PlatformMgr) UpsertPlatform(name string, isolated, disable bool, id in p.Id = id p.Name = name p.IdStr = pltId - p.ServiceUrl = url p.BindOption = bindOption - p.ServiceFlag = serviceFlag p.CustomType = customType p.UpgradeAccountGiveCoin = upgradeAccountGiveCoin p.NewAccountGiveCoin = newAccountGiveCoin diff --git a/worldsrv/player.go b/worldsrv/player.go index 0802a18..307b643 100644 --- a/worldsrv/player.go +++ b/worldsrv/player.go @@ -33,7 +33,6 @@ import ( playerproto "mongo.games.com/game/protocol/player" "mongo.games.com/game/protocol/rankmatch" serverproto "mongo.games.com/game/protocol/server" - shopproto "mongo.games.com/game/protocol/shop" "mongo.games.com/game/srvdata" "mongo.games.com/game/worldsrv/internal" ) @@ -443,9 +442,9 @@ func (this *Player) CheckShowRed() { //商城红点 ShopMgrSington.ShopCheckShowRed(this) //数据依赖于背包数据 放入加载背包数据之后执行 - PetMgrSington.CheckShowRed(this) + ModelMgrSingleton.CheckShowRed(this) // 皮肤红点 - PetMgrSington.CheckSkinRed(this) + ModelMgrSingleton.CheckSkinRed(this) //福利红点 WelfareMgrSington.WelfareShowRed(this) // 排行赛红点 @@ -1097,7 +1096,6 @@ func (this *Player) GetMessageAttach(id string) { attachMsg, ok := data.(*model.Message) if ok && attachMsg != nil { msg.AttachState = model.MSGATTACHSTATE_GOT - notifyClient := true var remark string var gainWay int32 = common.GainWay_MessageAttach @@ -1150,15 +1148,12 @@ func (this *Player) GetMessageAttach(id string) { case model.MSGTYPE_GOLDCOMERANK: remark = "财神降临奖励" gainWay = common.GainWay_GoldCome - notifyClient = false case model.MSGTYPE_RANDCOIN: remark = "红包雨" gainWay = common.GainWay_OnlineRandCoin - notifyClient = false case model.MSGTYPE_REBATE: remark = "流水返利" gainWay = common.GainWay_RebateTask - notifyClient = false //邮件领取 添加日志 task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { return model.InsertRebateLog(this.Platform, &model.Rebate{ @@ -1184,10 +1179,8 @@ func (this *Player) GetMessageAttach(id string) { //dirtyCoin = msg.Coin case model.MSGTYPE_MATCH_SIGNUPFEE: gainWay = common.GainWay_MatchBreakBack - notifyClient = false case model.MSGTYPE_MATCH_TICKETREWARD: gainWay = common.GainWay_MatchSystemSupply - notifyClient = false this.TicketTotal += msg.Ticket case model.MSGTYPE_MATCH_SHOPEXCHANGE: remark = "积分商城兑换" @@ -1206,12 +1199,6 @@ func (this *Player) GetMessageAttach(id string) { } if msg.Coin > 0 { this.AddCoin(msg.Coin, 0, gainWay, msg.Id.Hex(), remark) - //俱乐部获取不算系统赠送 - if msg.MType != model.MSGTYPE_ClubGet { - this.ReportSystemGiveEvent(int32(msg.Coin), gainWay, notifyClient) //邮件附件算是系统赠送 - } else { //俱乐部获取算充值 - this.AddCoinGiveLog(msg.Coin, 0, 0, gainWay, model.COINGIVETYPE_PAY, "club", "club") - } this.AddPayCoinLog(msg.Coin, model.PayCoinLogType_Coin, "mail") if msg.Oper == 0 { //系统赠送 if !this.IsRob { @@ -2953,97 +2940,6 @@ func (this *Player) ReportBindAlipayEvent() { //} } -func (this *Player) AddCoinGiveLog(payCoin, giveCoin int64, coinType, logType, recType int32, remark, oper string) { - plt := PlatformMgrSingleton.GetPlatform(this.Platform) - curVer := int32(0) - if plt != nil { - curVer = plt.ExchangeVer - } - - log := model.NewCoinGiveLogEx(this.SnId, this.Name, payCoin, giveCoin, coinType, logType, this.PromoterTree, - recType, curVer, this.Platform, this.Channel, this.BeUnderAgentCode, remark, oper, this.PackageID, 0, 0) - if log != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - err := model.InsertGiveCoinLog(log) - if err == nil { - if this.LastExchangeOrder != "" && this.TotalConvertibleFlow > 0 { - err = model.UpdateGiveCoinLastFlow(log.Platform, this.LastExchangeOrder, this.TotalConvertibleFlow) - } - } - return err - }), task.CompleteNotifyWrapper(func(ud interface{}, t task.Task) { - if ud == nil { - //清空流水,更新id - this.TotalConvertibleFlow = 0 - this.LastExchangeOrder = log.LogId.Hex() - } - }), "UpdateGiveCoinLastFlow").StartByGroupFixExecutor(log.Platform, "UpdateGiveCoinLastFlow") - } -} - -func ReportSystemGiveEvent(pd *model.PlayerData, amount, tag int32, notifyClient bool) { - //系统赠送 - if !pd.IsRob { - //插入本地表 - if amount > 0 { - if ActMgrSington.GetIsNeedGive(pd.Platform, tag) { - plt := PlatformMgrSingleton.GetPlatform(pd.Platform) - curVer := int32(0) - if plt != nil { - curVer = plt.ExchangeVer - } - - log := model.NewCoinGiveLogEx(pd.SnId, pd.Name, 0, int64(amount), 0, tag, pd.PromoterTree, - model.COINGIVETYPE_SYSTEM, curVer, pd.Platform, pd.Channel, pd.BeUnderAgentCode, "", - "system", pd.PackageID, 0, 0) - if log != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - err := model.InsertGiveCoinLog(log) - if err == nil { - if pd.LastExchangeOrder != "" && pd.TotalConvertibleFlow > 0 { - err = model.UpdateGiveCoinLastFlow(log.Platform, pd.LastExchangeOrder, pd.TotalConvertibleFlow) - } - } - return err - }), task.CompleteNotifyWrapper(func(ud interface{}, t task.Task) { - if ud == nil { - //清空流水,更新id - pd.TotalConvertibleFlow = 0 - pd.LastExchangeOrder = log.LogId.Hex() - player := PlayerMgrSington.GetPlayerBySnId(pd.SnId) - if player == nil { - //需要回写数据库 - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - model.UpdatePlayerExchageFlowAndOrder(pd.Platform, pd.SnId, 0, pd.LastExchangeOrder) - return nil - }), nil, "UpdatePlayerExchageFlowAndOrder").StartByGroupFixExecutor(log.Platform, pd.AccountId) - } - } - }), "UpdateGiveCoinLastFlow").StartByGroupFixExecutor(log.Platform, "UpdateGiveCoinLastFlow") - } - } - - if notifyClient { - player := PlayerMgrSington.GetPlayerBySnId(pd.SnId) - if player != nil { - //通知客户端 - sendPack := &shopproto.SCNotifyGiveCoinInfo{ - GiveCoin: proto.Int64(int64(amount)), - GiveTag: proto.Int32(tag), - } - - proto.SetDefaults(sendPack) - player.SendToClient(int(shopproto.SPacketID_SHOP_SC_GIVECOIN_INFO), sendPack) - } - } - } - } -} - -func (this *Player) ReportSystemGiveEvent(amount, tag int32, notifyClient bool) { - ReportSystemGiveEvent(this.PlayerData, amount, tag, notifyClient) -} - // 破产事件 func (this *Player) ReportBankRuptcy(gameid, gamemode, gamefreeid int32) { //if !this.IsRob { @@ -3695,7 +3591,7 @@ func (this *Player) GetVIPLevel() int32 { //玩家VIP升级 this.SCVIPInfo() if b { - PetMgrSington.CheckSkinRed(this) + ModelMgrSingleton.CheckSkinRed(this) } return this.VIP } diff --git a/worldsrv/scene.go b/worldsrv/scene.go index 52774c3..59fc908 100644 --- a/worldsrv/scene.go +++ b/worldsrv/scene.go @@ -888,6 +888,7 @@ func (this *Scene) IsPreCreateScene() bool { return this.dbGameFree.GetCreateRoomNum() > 0 } +// todo 删除 func (this *Scene) TryForceDeleteMatchInfo() { if !this.IsMatchScene() { return diff --git a/worldsrv/shopmgr.go b/worldsrv/shopmgr.go index 8e32367..a77511b 100644 --- a/worldsrv/shopmgr.go +++ b/worldsrv/shopmgr.go @@ -223,7 +223,7 @@ func (this *ShopMgr) GetShopInfo(shopId int32, p *Player) *model.ShopInfo { } } } - award, roleId := PetMgrSington.GetShopAward(shopInfo, p) + award, roleId := ModelMgrSingleton.GetShopAward(shopInfo, p) firstBuy := false if shopInfo.FirstSwitch { firstBuy = !slices.Contains(p.ShopID, int(shopInfo.Id)) @@ -312,7 +312,7 @@ func (this *ShopMgr) GetShopInfos(p *Player, nowLocation int) []*shop.ShopInfo { ItemNum: i2.ItemNum, }) } - award, roleId := PetMgrSington.GetShopAward(shopInfo, p) + award, roleId := ModelMgrSingleton.GetShopAward(shopInfo, p) firstBuy := false if shopInfo.FirstSwitch { firstBuy = !slices.Contains(p.ShopID, int(shopInfo.Id)) @@ -384,7 +384,7 @@ func (this *ShopMgr) GetShopInfos(p *Player, nowLocation int) []*shop.ShopInfo { ItemNum: i2.ItemNum, }) } - award, roleId := PetMgrSington.GetShopAward(shopInfo, p) + award, roleId := ModelMgrSingleton.GetShopAward(shopInfo, p) firstBuy := false if shopInfo.FirstSwitch { firstBuy = !slices.Contains(p.ShopID, int(shopInfo.Id)) @@ -649,7 +649,7 @@ func (this *ShopMgr) GetAmountFinal(p *Player, shopId, vipShopId int32) int64 { switch shopInfo.Type { case ShopTypeCoin: var addCoin int64 - award, _ := PetMgrSington.GetShopAward(shopInfo, p) + award, _ := ModelMgrSingleton.GetShopAward(shopInfo, p) if award > 0 { addCoin = int64(float64(addTotal) * float64(award) / 100.0) } diff --git a/worldsrv/trascate_webapi.go b/worldsrv/trascate_webapi.go index 79cac8a..5732296 100644 --- a/worldsrv/trascate_webapi.go +++ b/worldsrv/trascate_webapi.go @@ -1,12 +1,8 @@ package main import ( - "crypto/md5" - "encoding/hex" - "encoding/json" "errors" "fmt" - "io" "reflect" "slices" "sort" @@ -23,15 +19,12 @@ import ( "mongo.games.com/goserver/core/transact" "mongo.games.com/game/common" - "mongo.games.com/game/gamerule/crash" "mongo.games.com/game/model" "mongo.games.com/game/proto" "mongo.games.com/game/protocol/bag" loginproto "mongo.games.com/game/protocol/login" playerproto "mongo.games.com/game/protocol/player" - "mongo.games.com/game/protocol/qpapi" "mongo.games.com/game/protocol/server" - "mongo.games.com/game/protocol/telegramapi" webapiproto "mongo.games.com/game/protocol/webapi" "mongo.games.com/game/srvdata" ) @@ -174,832 +167,7 @@ func (this *WebAPIHandlerMgr) GetWebAPIHandler(name string) WebAPIHandler { } func init() { - //API用户加减币 - //WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Game/QPAPIAddSubCoinById", WebAPIHandlerWrapper( - // func(tNode *transact.TransNode, params []byte) (int, proto.Message) { - // pack := &qpapi.SAAddCoinById{} - // msg := &qpapi.ASAddCoinById{} - // err1 := proto.Unmarshal(params, msg) - // if err1 != nil { - // pack.Tag = qpapi.TagCode_FAILED - // pack.Msg = "数据序列化失败" + err1.Error() - // return common.ResponseTag_ParamError, pack - // } - // - // username := msg.GetUsername() - // coin := msg.GetGold() - // billNo := int(msg.GetBillNo()) - // platform := msg.GetMerchantTag() - // curplatform := PlatformMgrSingleton.GetPlatform(platform) - // - // if curplatform == nil { - // pack.Tag = qpapi.TagCode_FAILED - // pack.Msg = "没有对应的平台" - // return common.ResponseTag_ParamError, pack - // } - // merchantkey := curplatform.MerchantKey - // - // sign := msg.GetSign() - // - // raw := fmt.Sprintf("%v%v%v%v%v%v", username, coin, billNo, platform, merchantkey, msg.GetTs()) - // h := md5.New() - // io.WriteString(h, raw) - // newsign := hex.EncodeToString(h.Sum(nil)) - // - // if newsign != sign { - // pack.Tag = qpapi.TagCode_FAILED - // pack.Msg = "商户验签失败" - // return common.ResponseTag_ParamError, pack - // } - // - // if CacheDataMgr.CacheBillCheck(billNo, platform) { - // pack.Tag = qpapi.TagCode_FAILED - // pack.Msg = "Bill number repeated!" - // return common.ResponseTag_ParamError, pack - // } - // CacheDataMgr.CacheBillNumber(billNo, platform) //防止手抖点两下 - // - // var err error - // var pd *model.PlayerData - // oldGold := int64(0) - // var timeStamp = time.Now().UnixNano() - // acc, accerr := model.GetAccountByName(platform, username) - // if accerr != nil { - // CacheDataMgr.ClearCacheBill(billNo, platform) - // pack.Tag = qpapi.TagCode_FAILED - // pack.Msg = accerr.Error() - // return common.ResponseTag_ParamError, pack - // } - // member_snid := acc.SnId - // player := PlayerMgrSington.GetPlayerBySnId(int32(member_snid)) - // if player != nil { //在线玩家处理 - // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - // if player.scene != nil && coin < 0 { - // //player.Kickout(common.KickReason_CheckCodeErr) - // - // leavemsg := &server.WGPlayerLeave{ - // SnId: proto.Int32(player.SnId), - // } - // proto.SetDefaults(leavemsg) - // player.SendToGame(int(server.SSPacketID_PACKET_WG_PlayerLEAVE), leavemsg) - // - // select { - // case <-player.leavechan: - // case <-time.After(time.Second * 1): - // } - // - // } - // //player = PlayerMgrSington.GetPlayerBySnId(int32(member_snid)) - // if player.scene != nil { - // CacheDataMgr.ClearCacheBill(billNo, platform) - // //pack.Tag = qpapi.TagCode_FAILED - // //pack.Msg = "Unsupported!!! because player in scene!" - // //return common.ResponseTag_ParamError, pack - // return errors.New("Unsupported!!! because player in scene!") - // } - // pd = player.PlayerData - // if len(platform) > 0 && player.Platform != platform { - // CacheDataMgr.ClearCacheBill(billNo, platform) - // //pack.Tag = qpapi.TagCode_FAILED - // //pack.Msg = "player platform forbit!" - // //return common.ResponseTag_ParamError, pack - // return errors.New("player platform forbit!") - // } - // - // opcode := int32(common.GainWay_Api_In) - // - // if coin < 0 { - // opcode = int32(common.GainWay_Api_Out) - // if player.Coin+coin < 0 { - // CacheDataMgr.ClearCacheBill(billNo, platform) - // //pack.Tag = qpapi.TagCode_FAILED - // //pack.Msg = "coin not enough!" - // //return common.ResponseTag_ParamError, pack - // return errors.New("coin not enough!") - // } - // } - // - // //if logType != 0 { - // // opcode = logType - // //} - // - // oldGold = player.Coin - // coinLog := model.NewPayCoinLog(int64(billNo), int32(member_snid), coin, opcode, - // "qpsystem", model.PayCoinLogType_Coin, 0) - // timeStamp = coinLog.TimeStamp - // //增加帐变记录 - // coinlogex := model.NewCoinLogEx(&model.CoinLogParam{ - // Platform: pd.Platform, - // SnID: member_snid, - // Channel: pd.Channel, - // ChangeType: common.BillTypeCoin, - // ChangeNum: coin, - // RemainNum: oldGold + coin, - // Add: 0, - // LogType: opcode, - // GameID: 0, - // GameFreeID: 0, - // BaseCoin: 0, - // Operator: "oper", - // Remark: "online", - // }) - // - // err = model.InsertPayCoinLogs(platform, coinLog) - // if err != nil { - // logger.Logger.Errorf("model.InsertPayCoinLogs err:%v log:%v", err, coinLog) - // return err - // } - // err = model.InsertCoinLog(coinlogex) - // if err != nil { - // //回滚到对账日志 - // model.RemovePayCoinLog(platform, coinLog.LogId) - // logger.Logger.Errorf("model.InsertCoinLogs err:%v log:%v", err, coinlogex) - // return err - // } - // return err - // }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { - // CacheDataMgr.ClearCacheBill(billNo, platform) - // if data != nil { - // pack.Tag = qpapi.TagCode_FAILED - // pack.Msg = data.(error).Error() - // } else { - // //player.Coin += coin + coinEx - // player.AddCoinAsync(coin, 0, common.GainWay_Api_In, "oper", "Async", true, 0, false) - // //增加相应的泥码量 - // player.AddDirtyCoin(coin, 0) - // player.SetPayTs(timeStamp) - // - // if player.TodayGameData == nil { - // player.TodayGameData = model.NewPlayerGameCtrlData() - // } - // //actRandCoinMgr.OnPlayerRecharge(player, coin) - // /* - // if isAccTodayRecharge { - // - // player.AddCoinPayTotal(coin) - // player.TodayGameData.RechargeCoin += coin //累加当天充值金额 - // if coin >= 0 { - // plt := PlatformMgrSingleton.GetPlatform(pd.Platform) - // curVer := int32(0) - // if plt != nil { - // curVer = plt.ExchangeVer - // } - // log := model.NewCoinGiveLogEx(pd.SnId, pd.Name, coin, 0, 0, opcode, pd.PromoterTree, - // model.COINGIVETYPE_PAY, curVer, pd.Platform, pd.Channel, pd.BeUnderAgentCode, - // "", "system", pd.PackageID, int32(needFlowRate), int32(needGiveFlowRate)) - // if log != nil { - // err := model.InsertGiveCoinLog(log) - // if err == nil { - // if pd.LastExchangeOrder != "" && pd.TotalConvertibleFlow > 0 { - // err = model.UpdateGiveCoinLastFlow(platform, pd.LastExchangeOrder, pd.TotalConvertibleFlow) - // } - // } - // //清空流水,更新id - // pd.TotalConvertibleFlow = 0 - // pd.LastExchangeOrder = log.LogId.Hex() - // if player == nil { - // //需要回写数据库 - // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - // model.UpdatePlayerExchageFlowAndOrder(platform, member_snid, 0, pd.LastExchangeOrder) - // return nil - // }), nil, "UpdateGiveCoinLogs").StartByExecutor(pd.AccountId) - // } - // } - // } - // } - // */ - // player.dirty = true - // player.Time2Save() - // if player.scene == nil { //如果在大厅,那么同步下金币 - // player.SendDiffData() - // } - // player.SendPlayerRechargeAnswer(coin) - // pack.Tag = qpapi.TagCode_SUCCESS - // pack.Msg = "" - // } - // tNode.TransRep.RetFiels = pack - // tNode.Resume() - // if err != nil { - // logger.Logger.Error("AddSubCoinById task marshal data error:", err) - // } - // }), "APIAddSubCoinById").Start() - // return common.ResponseTag_TransactYield, pack - // } else { - // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - // pd, _ = model.GetPlayerDataBySnId(platform, int32(member_snid), false, true) - // if pd == nil { - // return errors.New("Player not find.") - // } - // if len(platform) > 0 && pd.Platform != platform { - // return errors.New("player platform forbit.") - // } - // oldGold = pd.Coin - // opcode := int32(common.GainWay_Api_In) - // if coin < 0 { - // opcode = int32(common.GainWay_Api_Out) - // if pd.Coin+coin < 0 { - // return errors.New("coin not enough!") - // } - // } - // - // //if logType != 0 { - // // opcode = logType - // //} - // coinLog := model.NewPayCoinLog(int64(billNo), int32(member_snid), coin, opcode, - // "not online", model.PayCoinLogType_Coin, 0) - // timeStamp = coinLog.TimeStamp - // err = model.InsertPayCoinLogs(platform, coinLog) - // if err != nil { - // logger.Logger.Errorf("model.InsertPayCoinLogs err:%v log:%v", err, coinLog) - // return err - // } - // //增加帐变记录 - // coinlogex := model.NewCoinLogEx(&model.CoinLogParam{ - // Platform: pd.Platform, - // SnID: member_snid, - // Channel: pd.Channel, - // ChangeType: common.BillTypeCoin, - // ChangeNum: coin, - // RemainNum: oldGold + coin, - // Add: 0, - // LogType: opcode, - // GameID: 0, - // GameFreeID: 0, - // BaseCoin: 0, - // Operator: "oper", - // Remark: "not online", - // }) - // err = model.InsertCoinLog(coinlogex) - // if err != nil { - // //回滚到对账日志 - // model.RemovePayCoinLog(platform, coinLog.LogId) - // logger.Logger.Errorf("model.InsertCoinLogs err:%v log:%v", err, coinlogex) - // return err - // } - // return err - // }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { - // CacheDataMgr.ClearCacheBill(billNo, platform) - // if data != nil { - // pack.Tag = qpapi.TagCode_FAILED - // pack.Msg = data.(error).Error() - // } else { - // pack.Tag = qpapi.TagCode_SUCCESS - // pack.Msg = "" - // /* - // if isAccTodayRecharge && coin >= 0 { - // OnPlayerPay(pd, coin) - // } - // if isAccTodayRecharge && coin >= 0 && coinEx >= 0 { - // - // plt := PlatformMgrSingleton.GetPlatform(pd.Platform) - // curVer := int32(0) - // if plt != nil { - // curVer = plt.ExchangeVer - // } - // log := model.NewCoinGiveLogEx(pd.SnId, pd.Name, coin, coinEx, 0, common.GainWay_Api_In, pd.PromoterTree, - // model.COINGIVETYPE_PAY, curVer, pd.Platform, pd.Channel, pd.BeUnderAgentCode, - // "", "system", pd.PackageID, int32(needFlowRate), int32(needGiveFlowRate)) - // if log != nil { - // err := model.InsertGiveCoinLog(log) - // if err == nil { - // if pd.LastExchangeOrder != "" && pd.TotalConvertibleFlow > 0 { - // err = model.UpdateGiveCoinLastFlow(platform, pd.LastExchangeOrder, pd.TotalConvertibleFlow) - // } - // } - // //清空流水,更新id - // pd.TotalConvertibleFlow = 0 - // pd.LastExchangeOrder = log.LogId.Hex() - // if player == nil { - // //需要回写数据库 - // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - // model.UpdatePlayerExchageFlowAndOrder(platform, int32(member_snid), 0, pd.LastExchangeOrder) - // return nil - // }), nil, "UpdateGiveCoinLogs").StartByExecutor(pd.AccountId) - // } - // } - // - // } - // */ - // } - // - // tNode.TransRep.RetFiels = pack - // tNode.Resume() - // if err != nil { - // logger.Logger.Error("AddSubCoinById task marshal data error:", err) - // } - // }), "APIAddSubCoinById").Start() - // return common.ResponseTag_TransactYield, pack - // } - // })) - - //获取用户金币数量 - WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Member/QPGetMemberGoldById", WebAPIHandlerWrapper( - func(tNode *transact.TransNode, params []byte) (int, proto.Message) { - pack := &qpapi.SAMemberGold{} - msg := &qpapi.ASMemberGold{} - - err1 := proto.Unmarshal(params, msg) - if err1 != nil { - pack.Tag = qpapi.TagCode_FAILED - pack.Msg = "数据序列化失败" + err1.Error() - return common.ResponseTag_ParamError, pack - } - username := msg.GetUsername() - platform := msg.GetMerchantTag() - curplatform := PlatformMgrSingleton.GetPlatform(platform) - //platform := PlatformMgrSingleton.GetPlatform(strconv.Itoa(int(platformID))) - if curplatform == nil { - pack.Tag = qpapi.TagCode_FAILED - pack.Msg = "没有对应的平台" - return common.ResponseTag_ParamError, pack - } - merchantkey := curplatform.MerchantKey - - sign := msg.GetSign() - - raw := fmt.Sprintf("%v%v%v%v", username, platform, merchantkey, msg.GetTs()) - h := md5.New() - io.WriteString(h, raw) - newsign := hex.EncodeToString(h.Sum(nil)) - - if newsign != sign { - pack.Tag = qpapi.TagCode_FAILED - pack.Msg = "商户验签失败" - return common.ResponseTag_ParamError, pack - } - - //platform := PlatformMgrSingleton.GetPlatform(msg.GetPlatform()) - //if platform == nil { - // pack.Tag = qpapi.TagCode_FAILED - // pack.Msg = "没有对应的包标识" - // return common.ResponseTag_ParamError, pack - //} - //platform_param := msg.GetPlatform() - //member_snid := msg.GetSnid() - - var err error - gold := int64(0) - bank := int64(0) - - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - acc, accerr := model.GetAccountByName(platform, msg.GetUsername()) - if accerr != nil { - //pack.Tag = qpapi.TagCode_FAILED - //pack.Msg = accerr.Error() - //return common.ResponseTag_ParamError, pack - return accerr - } - member_snid := acc.SnId - p := PlayerMgrSington.GetPlayerBySnId(member_snid) - if p != nil { - if len(platform) > 0 && p.Platform != platform { - return errors.New("Platform error.") - } - bank = p.SafeBoxCoin - gold = p.GetCoin() - return nil - } else { - pbi, _ := model.GetPlayerDataBySnId(platform, member_snid, true, true) - if pbi == nil { - return errors.New("snid error") - } - if len(platform) > 0 && pbi.Platform != platform { - return errors.New("Platform error.") - } - bank = pbi.SafeBoxCoin - gold = pbi.Coin - return nil - } - }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { - if data != nil { - pack.Tag = qpapi.TagCode_FAILED - pack.Msg = data.(error).Error() - } else { - - pd := &qpapi.PlayerCoinData{ - Username: msg.GetUsername(), - Gold: gold, - Bank: bank, - } - pack.Tag = qpapi.TagCode_SUCCESS - //pack.Msg = data.(error).Error() - pack.Data = pd - } - tNode.TransRep.RetFiels = pack - tNode.Resume() - if err != nil { - logger.Logger.Error("AddSubCoinById task marshal data error:", err) - } - }), "GetMemberGoldById").Start() - - return common.ResponseTag_TransactYield, pack - })) - - //获取用户注单记录游戏记录 - WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Member/QPGetGameHistory", WebAPIHandlerWrapper( - func(tNode *transact.TransNode, params []byte) (int, proto.Message) { - pack := &qpapi.SAPlayerHistory{} - msg := &qpapi.ASPlayerHistory{} - - err1 := proto.Unmarshal(params, msg) - if err1 != nil { - pack.Tag = qpapi.TagCode_FAILED - pack.Msg = "数据序列化失败" + err1.Error() - return common.ResponseTag_ParamError, pack - } - - historyModel := msg.GetGameHistoryModel() - username := msg.GetUsername() - platform := msg.GetMerchantTag() - curplatform := PlatformMgrSingleton.GetPlatform(platform) - starttime := msg.GetStartTime() - endtime := msg.GetEndTime() - pageno := msg.GetPageNo() - pagesize := msg.GetPageSize() - if pagesize == 0 { - pagesize = 50 - } - //platform := PlatformMgrSingleton.GetPlatform(strconv.Itoa(int(platformID))) - if curplatform == nil { - pack.Tag = qpapi.TagCode_FAILED - pack.Msg = "没有对应的平台" - return common.ResponseTag_ParamError, pack - } - merchantkey := curplatform.MerchantKey - - sign := msg.GetSign() - - raw := fmt.Sprintf("%v%v%v%v%v%v%v%v%v", username, platform, historyModel, starttime, endtime, pageno, pagesize, merchantkey, msg.GetTs()) - h := md5.New() - io.WriteString(h, raw) - newsign := hex.EncodeToString(h.Sum(nil)) - - if newsign != sign { - pack.Tag = qpapi.TagCode_FAILED - pack.Msg = "商户验签失败" - return common.ResponseTag_ParamError, pack - } - - searchsnid := int32(0) - if username != "" { - acc, accerr := model.GetAccountByName(platform, username) - if accerr != nil { - pack.Tag = qpapi.TagCode_FAILED - pack.Msg = accerr.Error() - return common.ResponseTag_ParamError, pack - } - member_snid := acc.SnId - - p := PlayerMgrSington.GetPlayerBySnId(member_snid) - if p == nil { - pi, _ := model.GetPlayerDataBySnId(platform, member_snid, true, true) - p = &Player{PlayerData: pi} - } - searchsnid = p.SnId - } - - //if p != nil { - - //gameid := 112 - switch int(historyModel) { - case common.PlayerHistoryModel: // 历史记录 - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - var genPlayerHistoryInfo = func(logid string, gameid int32, spinID, username string, isFree bool, createdTime, totalBetValue, totalPriceValue, totalBonusValue, multiple int64, player *qpapi.PlayerHistoryInfo) { - player.SpinID = proto.String(spinID) - player.CreatedTime = proto.Int64(createdTime) - player.TotalBetValue = proto.Int64(totalBetValue) - player.TotalPriceValue = proto.Int64(totalPriceValue) - player.IsFree = proto.Bool(isFree) - player.TotalBonusValue = proto.Int64(totalBonusValue) - player.Multiple = proto.Int64(multiple) - player.Gameid = proto.Int32(gameid) - player.Logid = proto.String(logid) - player.UserName = proto.String(username) - } - - var genPlayerHistoryInfoMsg = func(v *model.NeedGameRecord, gdl *model.GameDetailedLog, player *qpapi.PlayerHistoryInfo) { - switch gdl.GameId { - case common.GameId_Crash: - data, err := model.UnMarshalGameNoteByHUNDRED(gdl.GameDetailedNote) - if err != nil { - logger.Logger.Errorf("World UnMarshalAvengersGameNote error:%v", err) - } - jsonString, _ := json.Marshal(data) - - // convert json to struct - gnd := model.CrashType{} - json.Unmarshal(jsonString, &gnd) - - //gnd := data.(*model.CrashType) - for _, curplayer := range gnd.PlayerData { - if curplayer.UserId == v.SnId { - genPlayerHistoryInfo(gdl.LogId, gdl.GameId, strconv.FormatInt(int64(curplayer.UserId), 10), v.Username, false, int64(v.Ts), int64(curplayer.UserBetTotal), curplayer.ChangeCoin, 0, int64(curplayer.UserMultiple), player) - break - } - } - default: - logger.Logger.Errorf("World CSHundredSceneGetGameHistoryInfoHandler receive gameid(%v) error", gdl.GameId) - } - } - - gpl := model.GetPlayerListByHallExAPI(searchsnid, curplatform.IdStr, starttime, endtime, int(pageno), int(pagesize)) - //pack := &gamehall.SCPlayerHistory{} - for _, v := range gpl.Data { - if v.GameDetailedLogId == "" { - logger.Logger.Error("World PlayerHistory GameDetailedLogId is nil") - break - } - gdl := model.GetPlayerHistory(curplatform.IdStr, v.GameDetailedLogId) - player := &qpapi.PlayerHistoryInfo{} - genPlayerHistoryInfoMsg(v, gdl, player) - pack.PlayerHistory = append(pack.PlayerHistory, player) - } - pack.PageNo = proto.Int32(int32(gpl.PageNo)) - pack.PageSize = proto.Int32(int32(gpl.PageSize)) - pack.PageSum = proto.Int32(int32(gpl.PageSum)) - proto.SetDefaults(pack) - //logger.Logger.Infof("World gameid:%v PlayerHistory:%v ", gdl.GameId, pack) - return pack - }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { - if data != nil { - pack.Tag = qpapi.TagCode_SUCCESS - tNode.TransRep.RetFiels = data - tNode.Resume() - } - }), "CSGetPlayerHistoryHandlerWorld").Start() - return common.ResponseTag_TransactYield, pack - case common.GameHistoryModel: - - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - var genGameHistoryInfo = func(gameNumber string, createdTime, multiple int64, hash string, gamehistory *qpapi.GameHistoryInfo) { - gamehistory.GameNumber = proto.String(gameNumber) - gamehistory.CreatedTime = proto.Int64(createdTime) - gamehistory.Hash = proto.String(hash) - gamehistory.Multiple = proto.Int64(multiple) - } - - gls := model.GetPlayerHistoryAPI(searchsnid, curplatform.IdStr, starttime, endtime, int(pageno), int(pagesize)) - - //pack := &gamehall.SCPlayerHistory{} - for _, v := range gls.Data { - - gamehistory := &qpapi.GameHistoryInfo{} - - data, err := model.UnMarshalGameNoteByHUNDRED(v.GameDetailedNote) - if err != nil { - logger.Logger.Errorf("World UnMarshalAvengersGameNote error:%v", err) - } - jsonString, _ := json.Marshal(data) - - // convert json to struct - gnd := model.CrashType{} - json.Unmarshal(jsonString, &gnd) - - genGameHistoryInfo(v.LogId, int64(v.Ts), int64(gnd.Rate), gnd.Hash, gamehistory) - pack.GameHistory = append(pack.GameHistory, gamehistory) - } - proto.SetDefaults(pack) - //logger.Logger.Infof("World gameid:%v History:%v ", gameid, pack) - return pack - }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { - if data != nil { - pack.Tag = qpapi.TagCode_SUCCESS - tNode.TransRep.RetFiels = data - tNode.Resume() - } - }), "CSGetGameHistoryHandlerWorld").Start() - return common.ResponseTag_TransactYield, pack - - default: - pack.Tag = qpapi.TagCode_FAILED - pack.Msg = "GameHistoryModel 有误" - return common.ResponseTag_ParamError, pack - //logger.Logger.Errorf("World CSHundredSceneGetGameHistoryInfoHandler receive historyModel(%v) error", historyModel) - } - //} - })) - - //Cresh游戏Hash校验 - WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Game/CrashVerifier", WebAPIHandlerWrapper( - func(tNode *transact.TransNode, params []byte) (int, proto.Message) { - logger.Logger.Trace("WebAPIHandler:/api/Game/CrashVerifier", params) - resp := &telegramapi.SACrachHash{} - msg := &telegramapi.ASCrachHash{} - err := proto.Unmarshal(params, msg) - if err != nil { - resp.Tag = telegramapi.TagCode_FAILED - resp.Msg = "数据序列化失败" - return common.ResponseTag_ParamError, resp - } - - hash := msg.GetHash() - wheel := msg.GetWheel() - if hash != "" { - result := crash.HashToMultiple(hash, int(wheel)) - resp.Tag = telegramapi.TagCode_SUCCESS - resp.Msg = "" - resp.Multiple = result - return common.ResponseTag_Ok, resp - } else { - resp.Tag = telegramapi.TagCode_FAILED - resp.Msg = "Hash错误" - return common.ResponseTag_ParamError, resp - } - })) - - //----------------------------------传输数据改成protobuf结构--------------------------------------------------- - //后台修改平台数据后推送给游服 - WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/game_srv/platform_config", WebAPIHandlerWrapper( - func(tNode *transact.TransNode, params []byte) (int, proto.Message) { - resp := &webapiproto.SAUpdatePlatform{} - msg := &webapiproto.ASUpdatePlatform{} - err := proto.Unmarshal(params, msg) - if err != nil { - resp.Tag = webapiproto.TagCode_FAILED - resp.Msg = "数据序列化失败" - return common.ResponseTag_ParamError, resp - } - - platforms := msg.GetPlatforms() - if platforms == nil { - logger.Logger.Error("Get platform data error") - resp.Tag = webapiproto.TagCode_FAILED - resp.Msg = "Get platform data error!" - return common.ResponseTag_ParamError, resp - } else { - for _, ptf := range platforms { - platformName := ptf.GetPlatformName() - isolated := ptf.GetIsolated() - disable := ptf.GetDisabled() - id := ptf.GetId() - url := ptf.GetCustomService() - bindOption := ptf.GetBindOption() - serviceFlag := ptf.GetServiceFlag() - upgradeAccountGiveCoin := ptf.GetUpgradeAccountGiveCoin() - newAccountGiveCoin := ptf.GetNewAccountGiveCoin() - perBankNoLimitAccount := ptf.GetPerBankNoLimitAccount() - exchangeMin := ptf.GetExchangeMin() - exchangeLimit := ptf.GetExchangeLimit() - exchangeTax := ptf.GetExchangeTax() - exchangeFlow := ptf.GetExchangeFlow() - exchangeFlag := ptf.GetExchangeFlag() - spreadConfig := ptf.GetSpreadConfig() - vipRange := ptf.GetVipRange() - otherParams := "" //未传递 - ccf := &ClubConfig{} //未传递 - verifyCodeType := ptf.GetVerifyCodeType() - thirdGameMerchant := ptf.GetThirdGameMerchant() - ths := make(map[int32]int32) - for _, v := range thirdGameMerchant { - ths[v.Id] = v.Merchant - } - customType := ptf.GetCustomType() - needDeviceInfo := false //未传递 - needSameName := ptf.GetNeedSameName() - exchangeForceTax := ptf.GetExchangeForceTax() - exchangeGiveFlow := ptf.GetExchangeGiveFlow() - exchangeVer := ptf.GetExchangeVer() - exchangeBankMax := ptf.GetExchangeBankMax() - exchangeAlipayMax := ptf.GetExchangeAlipayMax() - dbHboCfg := 0 //未传递 - PerBankNoLimitName := ptf.GetPerBankNoLimitName() - IsCanUserBindPromoter := ptf.GetIsCanUserBindPromoter() - UserBindPromoterPrize := ptf.GetUserBindPromoterPrize() - SpreadWinLose := false //未传递 - exchangeMultiple := ptf.GetExchangeMultiple() - registerVerifyCodeSwitch := false //未传递 - merchantKey := ptf.GetMerchantKey() - bindTelReward := ptf.GetBindTelReward() - - platform := PlatformMgrSingleton.UpsertPlatform(platformName, isolated, disable, id, url, - int32(bindOption), serviceFlag, int32(upgradeAccountGiveCoin), int32(newAccountGiveCoin), - int32(perBankNoLimitAccount), int32(exchangeMin), int32(exchangeLimit), int32(exchangeTax), - int32(exchangeFlow), int32(exchangeFlag), int32(spreadConfig), vipRange, otherParams, ccf, - int32(verifyCodeType), ths, int32(customType), needDeviceInfo, needSameName, int32(exchangeForceTax), - int32(exchangeGiveFlow), int32(exchangeVer), int32(exchangeBankMax), int32(exchangeAlipayMax), - int32(dbHboCfg), int32(PerBankNoLimitName), IsCanUserBindPromoter, int32(UserBindPromoterPrize), - SpreadWinLose, int32(exchangeMultiple), registerVerifyCodeSwitch, merchantKey, bindTelReward) - - if platform != nil { - //通知客户端 - scPlatForm := &loginproto.SCPlatFormConfig{ - Platform: platform.IdStr, - OpRetCode: loginproto.OpResultCode_OPRC_Sucess, - UpgradeAccountGiveCoin: upgradeAccountGiveCoin, - ExchangeMin: exchangeMin, - ExchangeLimit: exchangeLimit, - VipRange: vipRange, - OtherParams: otherParams, - SpreadConfig: spreadConfig, - ExchangeTax: platform.ExchangeTax, - ExchangeFlow: platform.ExchangeFlow, - ExchangeBankMax: platform.ExchangeBankMax, - ExchangeAlipayMax: platform.ExchangeAlipayMax, - ExchangeMultiple: platform.ExchangeMultiple, - } - - proto.SetDefaults(scPlatForm) - PlayerMgrSington.BroadcastMessageToPlatform(platform.IdStr, int(loginproto.LoginPacketID_PACKET_SC_PLATFORMCFG), scPlatForm) - } - } - - resp.Tag = webapiproto.TagCode_SUCCESS - resp.Msg = "" - return common.ResponseTag_Ok, resp - } - //return common.ResponseTag_ParamError, resp - })) - //======= 全局游戏开关 ======= - WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/game_srv/update_global_game_status", WebAPIHandlerWrapper( - func(tNode *transact.TransNode, params []byte) (int, proto.Message) { - pack := &webapiproto.SAUpdateGameConfigGlobal{} - msg := &webapiproto.ASUpdateGameConfigGlobal{} - err := proto.Unmarshal(params, msg) - if err != nil { - pack.Tag = webapiproto.TagCode_FAILED - pack.Msg = fmt.Sprintf("err:%v", err.Error()) - return common.ResponseTag_ParamError, pack - } - - gcGlobal := msg.GetGameStatus() - gameStatus := gcGlobal.GetGameStatus() - if len(gameStatus) == 0 { - pack.Tag = webapiproto.TagCode_FAILED - pack.Msg = "Get game status data error" - return common.ResponseTag_ParamError, pack - } else { - //更改所有游戏平台下,游戏的状态 - for _, s := range gameStatus { - gameId := s.GetGameId() - status := s.GetStatus() - PlatformMgrSingleton.GetGlobalConfig().GameStatus[gameId] = status - } - pack.Tag = webapiproto.TagCode_SUCCESS - pack.Msg = "" - return common.ResponseTag_Ok, pack - } - //pack.Tag = webapi_proto.TagCode_FAILED - //pack.Msg = "error" - //return common.ResponseTag_ParamError, pack - })) - //======= 更新游戏配置 ======= - WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/game_srv/update_game_configs", WebAPIHandlerWrapper( - func(tNode *transact.TransNode, params []byte) (int, proto.Message) { - pack := &webapiproto.SAUpdateGameConfig{} - msg := &webapiproto.ASUpdateGameConfig{} - err := proto.Unmarshal(params, msg) - if err != nil { - pack.Tag = webapiproto.TagCode_FAILED - pack.Msg = fmt.Sprintf("err:%v", err.Error()) - return common.ResponseTag_ParamError, pack - } - - platformConfig := msg.GetConfig() - platformId := int(platformConfig.GetPlatformId()) - platform := PlatformMgrSingleton.GetPlatform(strconv.Itoa(platformId)) - dbGameFrees := platformConfig.GetDbGameFrees() - if len(dbGameFrees) == 0 { - pack.Tag = webapiproto.TagCode_FAILED - pack.Msg = "Not have DbGameFrees" - return common.ResponseTag_ParamError, pack - } else { - //更改所有游戏平台下,游戏的状态 - for _, v := range dbGameFrees { - dbGameFree := v.GetDbGameFree() - logicId := dbGameFree.GetId() - platform.GameConfig.gameFreeId[logicId] = v - } - platform.GameConfig.Init() - pack.Tag = webapiproto.TagCode_SUCCESS - pack.Msg = "" - return common.ResponseTag_Ok, pack - } - //pack.Tag = webapi_proto.TagCode_FAILED - //pack.Msg = "error" - //return common.ResponseTag_ParamError, pack - })) - //======= 更新游戏分组配置 ======= - WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/game_srv/game_config_group", WebAPIHandlerWrapper( - func(tNode *transact.TransNode, params []byte) (int, proto.Message) { - pack := &webapiproto.SAUpdateGameConfigGroup{} - msg := &webapiproto.ASUpdateGameConfigGroup{} - err := proto.Unmarshal(params, msg) - if err != nil { - pack.Tag = webapiproto.TagCode_FAILED - pack.Msg = fmt.Sprintf("err:%v", err.Error()) - return common.ResponseTag_ParamError, pack - } - - value := msg.GetGameConfigGroup() - PlatformGameGroupMgrSington.UpsertGameGroup(value) - logger.Logger.Trace("PlatformGameGroup data:", value) - pack.Tag = webapiproto.TagCode_SUCCESS - pack.Msg = "" - return common.ResponseTag_Ok, pack - })) - - //---------------------------------------------------------------------------------------------------------- - //加币加钻石 + // 后台加币加钻石 WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Game/AddCoinByIdAndPT", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { pack := &webapiproto.SAAddCoinByIdAndPT{} @@ -1206,278 +374,7 @@ func init() { return common.ResponseTag_TransactYield, pack })) - // //------------------------------------------------------------------------------------------------------- - // //钱包操作接口 - //WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Game/AddCoinById", WebAPIHandlerWrapper( - // func(tNode *transact.TransNode, params []byte) (int, proto.Message) { - // pack := &webapiproto.SAAddCoinById{} - // msg := &webapiproto.ASAddCoinById{} - // err1 := proto.Unmarshal(params, msg) - // if err1 != nil { - // pack.Tag = webapiproto.TagCode_FAILED - // pack.Msg = "数据序列化失败" + err1.Error() - // return common.ResponseTag_ParamError, pack - // } - // - // member_snid := msg.GetID() - // coin := msg.GetGold() - // coinEx := msg.GetGoldEx() - // oper := msg.GetOper() - // gold_desc := msg.GetDesc() - // billNo := int(msg.GetBillNo()) - // platform := msg.GetPlatform() - // logType := msg.GetLogType() - // isAccTodayRecharge := msg.GetIsAccTodayRecharge() - // needFlowRate := msg.GetNeedFlowRate() - // needGiveFlowRate := msg.GetNeedGiveFlowRate() - // - // if CacheDataMgr.CacheBillCheck(billNo, platform) { - // pack.Tag = webapiproto.TagCode_FAILED - // pack.Msg = "Bill number repeated!" - // return common.ResponseTag_ParamError, pack - // } - // CacheDataMgr.CacheBillNumber(billNo, platform) //防止手抖点两下 - // - // var err error - // var pd *model.PlayerData - // oldGold := int64(0) - // var timeStamp = time.Now().UnixNano() - // player := PlayerMgrSington.GetPlayerBySnId(int32(member_snid)) - // if player != nil { //在线玩家处理 - // if player.scene != nil { - // CacheDataMgr.ClearCacheBill(billNo, platform) - // pack.Tag = webapiproto.TagCode_FAILED - // pack.Msg = "Unsupported!!! because player in scene!" - // return common.ResponseTag_ParamError, pack - // } - // pd = player.PlayerData - // if len(platform) > 0 && player.Platform != platform { - // CacheDataMgr.ClearCacheBill(billNo, platform) - // pack.Tag = webapiproto.TagCode_FAILED - // pack.Msg = "player platform forbit!" - // return common.ResponseTag_ParamError, pack - // } - // - // if coin < 0 { - // if player.Coin+coin < 0 { - // CacheDataMgr.ClearCacheBill(billNo, platform) - // pack.Tag = webapiproto.TagCode_FAILED - // pack.Msg = "coin not enough!" - // return common.ResponseTag_ParamError, pack - // } - // } - // - // opcode := int32(common.GainWay_API_AddCoin) - // if logType != 0 { - // opcode = logType - // } - // - // oldGold = player.Coin - // coinLog := model.NewPayCoinLog(int64(billNo), int32(member_snid), coin, opcode, - // gold_desc, model.PayCoinLogType_Coin, coinEx) - // timeStamp = coinLog.TimeStamp - // //增加帐变记录 - // coinlogex := model.NewCoinLogEx(&model.CoinLogParam{ - // Platform: pd.Platform, - // SnID: member_snid, - // Channel: pd.Channel, - // ChangeType: common.BillTypeCoin, - // ChangeNum: coin + coinEx, - // RemainNum: oldGold + coin + coinEx, - // Add: 0, - // LogType: opcode, - // GameID: 0, - // GameFreeID: 0, - // BaseCoin: 0, - // Operator: oper, - // Remark: gold_desc, - // }) - // - // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - // err = model.InsertPayCoinLogs(platform, coinLog) - // if err != nil { - // logger.Logger.Errorf("model.InsertPayCoinLogs err:%v log:%v", err, coinLog) - // return err - // } - // err = model.InsertCoinLog(coinlogex) - // if err != nil { - // //回滚到对账日志 - // model.RemovePayCoinLog(platform, coinLog.LogId) - // logger.Logger.Errorf("model.InsertCoinLogs err:%v log:%v", err, coinlogex) - // return err - // } - // return err - // }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { - // CacheDataMgr.ClearCacheBill(billNo, platform) - // if data != nil { - // pack.Tag = webapiproto.TagCode_FAILED - // pack.Msg = data.(error).Error() - // } else { - // //player.Coin += coin + coinEx - // player.AddCoinAsync(coin+coinEx, 0, common.GainWay_API_AddCoin, oper, gold_desc, true, 0, false) - // //增加相应的泥码量 - // player.AddDirtyCoin(coin, coinEx) - // player.SetPayTs(timeStamp) - // - // if player.TodayGameData == nil { - // player.TodayGameData = model.NewPlayerGameCtrlData() - // } - // //actRandCoinMgr.OnPlayerRecharge(player, coin) - // if isAccTodayRecharge { - // - // player.AddCoinPayTotal(coin) - // player.TodayGameData.RechargeCoin += coin //累加当天充值金额 - // if coin >= 0 && coinEx >= 0 { - // plt := PlatformMgrSingleton.GetPlatform(pd.Platform) - // curVer := int32(0) - // if plt != nil { - // curVer = plt.ExchangeVer - // } - // log := model.NewCoinGiveLogEx(pd.SnId, pd.Name, coin, coinEx, 0, opcode, pd.PromoterTree, - // model.COINGIVETYPE_PAY, curVer, pd.Platform, pd.Channel, pd.BeUnderAgentCode, - // "", "system", pd.PackageID, int32(needFlowRate), int32(needGiveFlowRate)) - // if log != nil { - // err := model.InsertGiveCoinLog(log) - // if err == nil { - // if pd.LastExchangeOrder != "" && pd.TotalConvertibleFlow > 0 { - // err = model.UpdateGiveCoinLastFlow(platform, pd.LastExchangeOrder, pd.TotalConvertibleFlow) - // } - // } - // //清空流水,更新id - // pd.TotalConvertibleFlow = 0 - // pd.LastExchangeOrder = log.LogId.Hex() - // if player == nil { - // //需要回写数据库 - // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - // model.UpdatePlayerExchageFlowAndOrder(platform, member_snid, 0, pd.LastExchangeOrder) - // return nil - // }), nil, "UpdateGiveCoinLogs").StartByExecutor(pd.AccountId) - // } - // } - // } - // } - // - // player.dirty = true - // player.Time2Save() - // if player.scene == nil { //如果在大厅,那么同步下金币 - // player.SendDiffData() - // } - // player.SendPlayerRechargeAnswer(coin) - // pack.Tag = webapiproto.TagCode_SUCCESS - // pack.Msg = "" - // } - // tNode.TransRep.RetFiels = pack - // tNode.Resume() - // if err != nil { - // logger.Logger.Error("AddCoinById task marshal data error:", err) - // } - // }), "AddCoinById").Start() - // return common.ResponseTag_TransactYield, pack - // } else { - // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - // pd, _ = model.GetPlayerDataBySnId(platform, int32(member_snid), false, true) - // if pd == nil { - // return errors.New("Player not find.") - // } - // if len(platform) > 0 && pd.Platform != platform { - // return errors.New("player platform forbit.") - // } - // oldGold = pd.Coin - // if coin < 0 { - // if pd.Coin+coin < 0 { - // return errors.New("coin not enough!") - // } - // } - // - // opcode := int32(common.GainWay_API_AddCoin) - // if logType != 0 { - // opcode = logType - // } - // coinLog := model.NewPayCoinLog(int64(billNo), int32(member_snid), coin, opcode, - // gold_desc, model.PayCoinLogType_Coin, coinEx) - // timeStamp = coinLog.TimeStamp - // err = model.InsertPayCoinLogs(platform, coinLog) - // if err != nil { - // logger.Logger.Errorf("model.InsertPayCoinLogs err:%v log:%v", err, coinLog) - // return err - // } - // //增加帐变记录 - // coinlogex := model.NewCoinLogEx(&model.CoinLogParam{ - // Platform: pd.Platform, - // SnID: member_snid, - // Channel: pd.Channel, - // ChangeType: common.BillTypeCoin, - // ChangeNum: coin + coinEx, - // RemainNum: oldGold + coin + coinEx, - // Add: 0, - // LogType: opcode, - // GameID: 0, - // GameFreeID: 0, - // BaseCoin: 0, - // Operator: oper, - // Remark: gold_desc, - // }) - // err = model.InsertCoinLog(coinlogex) - // if err != nil { - // //回滚到对账日志 - // model.RemovePayCoinLog(platform, coinLog.LogId) - // logger.Logger.Errorf("model.InsertCoinLogs err:%v log:%v", err, coinlogex) - // return err - // } - // return err - // }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { - // CacheDataMgr.ClearCacheBill(billNo, platform) - // if data != nil { - // pack.Tag = webapiproto.TagCode_FAILED - // pack.Msg = data.(error).Error() - // } else { - // pack.Tag = webapiproto.TagCode_SUCCESS - // pack.Msg = "" - // if isAccTodayRecharge && coin >= 0 { - // OnPlayerPay(pd, coin) - // } - // if isAccTodayRecharge && coin >= 0 && coinEx >= 0 { - // - // plt := PlatformMgrSingleton.GetPlatform(pd.Platform) - // curVer := int32(0) - // if plt != nil { - // curVer = plt.ExchangeVer - // } - // log := model.NewCoinGiveLogEx(pd.SnId, pd.Name, coin, coinEx, 0, common.GainWay_API_AddCoin, pd.PromoterTree, - // model.COINGIVETYPE_PAY, curVer, pd.Platform, pd.Channel, pd.BeUnderAgentCode, - // "", "system", pd.PackageID, int32(needFlowRate), int32(needGiveFlowRate)) - // if log != nil { - // err := model.InsertGiveCoinLog(log) - // if err == nil { - // if pd.LastExchangeOrder != "" && pd.TotalConvertibleFlow > 0 { - // err = model.UpdateGiveCoinLastFlow(platform, pd.LastExchangeOrder, pd.TotalConvertibleFlow) - // } - // } - // //清空流水,更新id - // pd.TotalConvertibleFlow = 0 - // pd.LastExchangeOrder = log.LogId.Hex() - // if player == nil { - // //需要回写数据库 - // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - // model.UpdatePlayerExchageFlowAndOrder(platform, int32(member_snid), 0, pd.LastExchangeOrder) - // return nil - // }), nil, "UpdateGiveCoinLogs").StartByExecutor(pd.AccountId) - // } - // } - // - // } - // } - // - // tNode.TransRep.RetFiels = pack - // tNode.Resume() - // if err != nil { - // logger.Logger.Error("AddCoinById task marshal data error:", err) - // } - // }), "AddCoinById").Start() - // return common.ResponseTag_TransactYield, pack - // } - // })) - //重置水池 + // 后台重置游戏池 WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Game/ResetGamePool", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { pack := &webapiproto.SAResetGamePool{} @@ -1515,7 +412,7 @@ func init() { return common.ResponseTag_Ok, pack })) - //更新水池 + // 更新水池 // 修改本地缓存,修改数据库,同步到gamesrv WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Game/UpdateGamePool", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { @@ -1695,6 +592,7 @@ func init() { } return common.ResponseTag_Ok, pack })) + WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Cache/ListRoom", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { pack := &webapiproto.SAListRoom{} @@ -1730,6 +628,7 @@ func init() { pack.TotalList = roomSum return common.ResponseTag_Ok, pack })) + WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Cache/DestroyRoom", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { pack := &webapiproto.SADestroyRoom{} @@ -1755,7 +654,6 @@ func init() { } if s != nil && !s.deleting && len(s.players) == 0 { logger.Logger.Warnf("WebService SpecailEmptySceneId destroyroom scene:%v", s.sceneId) - s.TryForceDeleteMatchInfo() s.SendGameDestroy(false) } } @@ -1795,6 +693,7 @@ func init() { } return common.ResponseTag_Ok, pack })) + ///////////////////////////玩家信息/////////////////////////// WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Player/PlayerData", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { @@ -2099,6 +998,7 @@ func init() { return common.ResponseTag_TransactYield, pack } })) + WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Player/KickPlayer", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { pack := &webapiproto.SAKickPlayer{} @@ -2196,6 +1096,7 @@ func init() { //pack.OnlineReport.GameCount = onlineGameCnt return common.ResponseTag_Ok, pack })) + WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Report/QueryOnlineReportList", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { pack := &webapiproto.SAQueryOnlineReportList{} @@ -2356,102 +1257,7 @@ func init() { pack.PageSize = pageSize return common.ResponseTag_Ok, pack })) - ////黑白名单 - //WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Player/WhiteBlackControl", WebAPIHandlerWrapper( - // func(tNode *transact.TransNode, params []byte) (int, proto.Message) { - // pack := &webapi_proto.SAWhiteBlackControl{} - // msg := &webapi_proto.ASWhiteBlackControl{} - // err := proto.Unmarshal(params, msg) - // pack.Tag = webapi_proto.TagCode_FAILED - // if err != nil { - // pack.Msg = "数据序列化失败" + err.Error() - // return common.ResponseTag_ParamError, pack - // } - // if msg.SnId == 0 { - // pack.Msg = "snid is zero" - // return common.ResponseTag_ParamError, pack - // } - // idMap := make(map[int32]struct{}) - // if msg.SnId > 0 { - // idMap[msg.SnId] = struct{}{} - // } - // for _, id := range msg.SnIds { - // idMap[id] = struct{}{} - // } - // wbCoinLimit := msg.WBCoinLimit - // maxNum := msg.MaxNum - // resetTotalCoin := msg.ResetTotalCoin - // tNow := time.Now() - // var errMsg interface{} - // wg := new(sync.WaitGroup) - // wg.Add(len(idMap)) - // for id := range idMap { - // snid := id - // player := PlayerMgrSington.GetPlayerBySnId(snid) - // if player != nil { - // if len(msg.Platform) == 0 || player.Platform == msg.Platform { - // player.WBLevel = msg.WBLevel - // player.WBCoinLimit = wbCoinLimit - // player.WBMaxNum = maxNum - // if resetTotalCoin == 1 { - // player.WBCoinTotalIn = 0 - // player.WBCoinTotalOut = 0 - // } - // player.WBTime = tNow - // //出去比赛场 - // if player.scene != nil && !player.scene.IsMatchScene() { - // //同步刷到游服 - // wgpack := &server.WGSetPlayerBlackLevel{ - // SnId: proto.Int(int(snid)), - // WBLevel: proto.Int32(msg.WBLevel), - // WBCoinLimit: proto.Int64(wbCoinLimit), - // MaxNum: proto.Int32(maxNum), - // ResetTotalCoin: proto.Bool(resetTotalCoin != 0), - // } - // player.SendToGame(int(server.SSPacketID_PACKET_WG_SETPLAYERBLACKLEVEL), wgpack) - // } - // } - // } - // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - // if resetTotalCoin == 1 { - // //后台sql有统计这里屏蔽掉 - // //log := model.NewBlackWhiteCoinLog(snid, msg.WBLevel, 0, int32(resetTotalCoin), msg.Platform) - // //if log != nil { - // // model.InsertBlackWhiteCoinLog(log) - // //} - // return model.SetBlackWhiteLevel(snid, msg.WBLevel, int32(maxNum), 0, 0, wbCoinLimit, msg.Platform, tNow) - // } else { - // //后台sql有统计这里屏蔽掉 - // //log := model.NewBlackWhiteCoinLog(snid, msg.WBLevel, wbCoinLimit, int32(resetTotalCoin), msg.Platform) - // //if log != nil { - // // model.InsertBlackWhiteCoinLog(log) - // //} - // return model.SetBlackWhiteLevelUnReset(snid, msg.WBLevel, int32(maxNum), wbCoinLimit, msg.Platform, tNow) - // } - // }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { - // defer wg.Done() - // if data == nil { - // delete(idMap, snid) - // } else { - // errMsg = data - // } - // }), "SetBlackWhiteLevel").Start() - // } - // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - // wg.Wait() - // if errMsg != nil || len(idMap) > 0 { - // pack.Tag = webapi_proto.TagCode_FAILED - // pack.Msg = fmt.Sprintf("数据库写入错误:%v , 玩家id:%v", errMsg, idMap) - // } else { - // pack.Tag = webapi_proto.TagCode_SUCCESS - // } - // tNode.TransRep.RetFiels = pack - // tNode.Resume() - // return nil - // }), nil).Start() - // return common.ResponseTag_TransactYield, pack - // })) - //黑白名单 + WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Player/WhiteBlackControl", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { pack := &webapiproto.SAWhiteBlackControl{} @@ -2552,6 +1358,7 @@ func init() { }), nil).Start() return common.ResponseTag_TransactYield, pack })) + WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Ctrl/ListServerStates", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { pack := &webapiproto.SAListServerStates{} @@ -2566,6 +1373,7 @@ func init() { pack.ServerInfo = GameSessMgrSington.ListServerState(int(msg.SrvId), int(msg.SrvType)) return common.ResponseTag_Ok, pack })) + //邮件 WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Game/CreateShortMessage", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { @@ -2703,6 +1511,7 @@ func init() { return common.ResponseTag_TransactYield, pack })) + //查询邮件 WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Game/QueryShortMessageList", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { @@ -2775,6 +1584,7 @@ func init() { }), "QueryShortMessageList").Start() return common.ResponseTag_TransactYield, pack })) + //删除邮件 WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Game/DeleteShortMessage", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { @@ -2837,6 +1647,7 @@ func init() { }), "DeleteShortMessage").Start() return common.ResponseTag_TransactYield, pack })) + //删除玩家已经删除的邮件 WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Game/DeleteAllShortMessage", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { @@ -2871,6 +1682,7 @@ func init() { }), "DeleteShortMessage").Start() return common.ResponseTag_TransactYield, pack })) + //黑名单 WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Player/BlackBySnId", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { @@ -2921,6 +1733,7 @@ func init() { return common.ResponseTag_TransactYield, pack } })) + WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Message/QueryHorseRaceLampList", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { pack := &webapiproto.SAQueryHorseRaceLampList{} @@ -2980,6 +1793,7 @@ func init() { }), "QueryHorseRaceLampList").Start() return common.ResponseTag_TransactYield, pack })) + WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Message/CreateHorseRaceLamp", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { pack := &webapiproto.SACreateHorseRaceLamp{} @@ -3022,6 +1836,7 @@ func init() { }), "CreateHorseRaceLamp").Start() return common.ResponseTag_TransactYield, pack })) + WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Message/GetHorseRaceLampById", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { pack := &webapiproto.SAGetHorseRaceLampById{} @@ -3056,6 +1871,7 @@ func init() { } return common.ResponseTag_Ok, pack })) + WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Message/EditHorseRaceLamp", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { pack := &webapiproto.SAEditHorseRaceLamp{} @@ -3143,6 +1959,7 @@ func init() { return common.ResponseTag_TransactYield, pack })) + WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Message/RemoveHorseRaceLampById", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { pack := &webapiproto.SARemoveHorseRaceLampById{} @@ -3183,6 +2000,7 @@ func init() { }), "ResponseTag_TransactYield").Start() return common.ResponseTag_TransactYield, pack })) + WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Ctrl/ResetEtcdData", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { pack := &webapiproto.SAResetEtcdData{} @@ -3198,52 +2016,7 @@ func init() { pack.Msg = "Etcd Reset success" return common.ResponseTag_Ok, nil })) - //WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Game/SinglePlayerAdjust", WebAPIHandlerWrapper( - // func(tNode *transact.TransNode, params []byte) (int, proto.Message) { - // pack := &webapi_proto.SASinglePlayerAdjust{} - // msg := &webapi_proto.ASSinglePlayerAdjust{} - // err2 := proto.Unmarshal(params, msg) - // if err2 != nil { - // fmt.Printf("err:%v", err2) - // pack.Tag = webapi_proto.TagCode_FAILED - // pack.Msg = "数据序列化失败" - // return common.ResponseTag_ParamError, pack - // } - // ////////////////////验证玩家/////////////////// - // snid := msg.PlayerSingleAdjust.SnId - // platform := msg.PlayerSingleAdjust.Platform - // p := PlayerMgrSington.GetPlayerBySnId(snid) - // if p == nil { - // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - // pb, _ := model.GetPlayerDataBySnId(platform, snid, false, false) - // return pb - // }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { - // if data == nil || data.(*model.PlayerData) == nil { - // pack.Tag = webapi_proto.TagCode_FAILED - // pack.Msg = "not find player." - // } else { - // pack.Tag = webapi_proto.TagCode_SUCCESS - // pack.Msg = "success" - // sa := PlayerSingleAdjustMgr.WebData(msg, &Player{PlayerData: data.(*model.PlayerData)}) - // if sa != nil { - // pack.PlayerSingleAdjust = sa - // } - // } - // tNode.TransRep.RetFiels = pack - // tNode.Resume() - // }), "SinglePlayerAdjust").Start() - // return common.ResponseTag_TransactYield, pack - // } else { - // pack.Tag = webapi_proto.TagCode_SUCCESS - // pack.Msg = "success" - // sa := PlayerSingleAdjustMgr.WebData(msg, p) - // if sa != nil { - // pack.PlayerSingleAdjust = sa - // } - // } - // return common.ResponseTag_Ok, pack - // })) - // CreateJYB 创建礼包码 + WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Game/CreateJYB", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { pack := &webapiproto.SACreateJYB{} @@ -3312,6 +2085,7 @@ func init() { }), "webCreateJybInfo").Start() return common.ResponseTag_TransactYield, pack })) + WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Game/UpdateJYB", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { pack := &webapiproto.SAUpdateJYB{} @@ -3347,6 +2121,7 @@ func init() { return common.ResponseTag_Ok, pack })) + WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Customer/UpExchangeStatus", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { pack := &webapiproto.SAUpExchangeStatus{} diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index 56996be..2b75c66 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -67,13 +67,13 @@ func (this *WelfareMgr) GetReliefFund(p *Player, isVideo bool) { var add int64 coin := int64(sdata.Get) // 增加金币 p.WelfData.ReliefFundTimes += 1 - award := PetMgrSington.GetAwardPetByWelf(p) + award := ModelMgrSingleton.GetAwardPetByWelf(p) if award > 0 { if isVideo { // 双倍领取,蝶女视频加成 gainWay = common.GainWay_ReliefFund2 rate = 2 add = int64(float64(coin*award*2) / 100.0) - roleGirl := PetMgrSington.GetRoleInfo(p, 2000001) + roleGirl := ModelMgrSingleton.GetRoleInfo(p, 2000001) if roleGirl != nil && roleGirl.Level > 0 { //蝶女加成 add += int64(float64(coin*int64(roleGirl.Award)*2) / 100.0) @@ -491,7 +491,7 @@ func (this *WelfareMgr) GetTurnplteVideo(p *Player) { for _, d := range drawdates { coin := d.Grade * 2 if d.Type == 1 { // 蝶女金币加成 - roleGirl := PetMgrSington.GetRoleInfo(p, 2000001) + roleGirl := ModelMgrSingleton.GetRoleInfo(p, 2000001) if roleGirl != nil && roleGirl.Level > 0 { coin = int32(float64(coin) * float64(100+roleGirl.Award) / 100.0) } @@ -545,7 +545,7 @@ func DrawWelfareDate(dates []*webapi_proto.WelfareDate, p *Player, gainWay int32 coin := int64(v.Grade) add := int64(0) if isVideo { - roleGirl := PetMgrSington.GetRoleInfo(p, 2000001) + roleGirl := ModelMgrSingleton.GetRoleInfo(p, 2000001) if roleGirl != nil && roleGirl.Level > 0 /*|| !role.IsUsing*/ { //蝶女加成 add = int64(float64(coin) * float64(roleGirl.Award) * 2 / 100.0)