ecs/servers/game/handler/player_store.go
2025-06-04 18:17:39 +08:00

716 lines
27 KiB
Go

package handler
//func (this *PlayerHandler) StorePoolRefresh(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgStorePoolRefreshReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// var storePool = player.StorePool[req.Type]
// if storePool == nil {
// this.logger.Error("Parameter error, Player 'StorePool' was not found, Type: ", req.Type)
// _ = player.TipNotice(proto.ErrStoreNotFound)
// return
// }
//
// var poolTable = this.tables.ShopPool.Get(int(storePool.Id))
// if poolTable == nil {
// this.logger.Error("Data tables error, Table 'ShopPool' was not found, Id: ", storePool.Id)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// if !player.CheckAdFunction(proto.AdFunctionTypeShopPoolRefresh, 0, storePool.Type, 1) {
// var counter = player.GetCounterDaily(proto.CounterTypeStorePoolRefresh, storePool.Type)
// if poolTable.ManualRefreshLimit > 0 {
// if counter >= uint32(poolTable.ManualRefreshLimit) {
// this.logger.Errorf("Daily times over, CounterType: %d, Id: %d, counter: %d, times: %d", proto.CounterTypeStorePoolRefresh, storePool.Type, counter, poolTable.ManualRefreshLimit)
// _ = player.TipNotice(proto.ErrTodayTimesOver)
// return
// }
// }
//
// err = player.CheckMoney(proto.MoneyType(poolTable.RefreshPriceType), uint32(poolTable.ManualRefreshPrice))
// if err != nil {
// this.logger.Errorf("Money not enough, moneyType: %d, moneyCost: %d", poolTable.RefreshPriceType, poolTable.ManualRefreshPrice)
// _ = player.TipNotice(err)
// return
// }
//
// player.ReduceMoney(proto.MoneyType(poolTable.RefreshPriceType), uint32(poolTable.ManualRefreshPrice), logic.LogTypeItemConsumeByStorePoolRefresh)
// }
//
// player.RefreshStorePool(storePool, true, util.Unix(), poolTable)
//}
//
//func (this *PlayerHandler) StoreBuy(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgStoreBuyReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.Id == 0 || req.Num == 0 {
// this.logger.Errorf("Parameter error, req.Id == 0 || req.Num == 0, req.Id: %d, req.Num: %d", req.Id, req.Num)
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// var shopTable = this.tables.Shop.Get(int(req.Id))
// if shopTable == nil {
// this.logger.Error("Parameter or data tables error, Table 'Shop' was not found, Id: ", req.Id)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// if shopTable.LimitNum > 0 {
// var counter = player.GetCounterDaily(proto.CounterTypeStoreBuy, uint32(shopTable.Id))
// if req.Num+counter > uint32(shopTable.LimitNum) {
// this.logger.Errorf("Store buy times over, CounterType: %d, Id: %d, counter: %d: req.Num: %d, LimitNum: %d", proto.CounterTypeStoreBuy, shopTable.Id, counter, req.Num, shopTable.LimitNum)
// _ = player.TipNotice(proto.ErrStoreBuyTimesOver)
// return
// }
// }
//
// var totalPrice = uint32(shopTable.Price) * req.Num
// var totalItemNum = uint32(shopTable.ItemNum) * req.Num
// err = player.CheckMoney(proto.MoneyType(shopTable.PriceType), totalPrice)
// if err != nil {
// this.logger.Errorf("Money not enough, moneyType: %d, moneyCost: %d", shopTable.PriceType, totalPrice)
// _ = player.TipNotice(err)
// return
// }
//
// err = player.AddItem(uint32(shopTable.ItemId), totalItemNum, logic.LogTypeItemObtainByShop)
// if err != nil {
// this.logger.Errorf("Add item failed, itemId: %d, itemNum: %d, error: %v", uint32(shopTable.ItemId), totalItemNum, err)
// _ = player.TipNotice(err)
// return
// }
//
// player.ReduceMoney(proto.MoneyType(shopTable.PriceType), totalPrice, logic.LogTypeItemConsumeByStoreBuy)
//
// player.AddCounter(proto.CounterTypeStoreBuy, uint32(shopTable.Id), req.Num)
//
// _ = player.Send(proto.ModIdStore, proto.MsgIdStoreBuy, &proto.MsgStoreBuyAck{
// MsgRewardListAck: &proto.MsgRewardListAck{RewardList: []*proto.ItemPair{{ItemId: uint32(shopTable.ItemId), ItemNum: totalItemNum}}},
// })
//
// player.CheckTask(proto.TaskSection1BoughtInSpecificStore, shopTable.ShopType, int(totalItemNum))
//
// this.eventManager.PlayerShopLog(player, logic.LogTypeStoreBuy, uint32(shopTable.ShopType), uint32(shopTable.ItemId), totalItemNum, int32(shopTable.PriceType), totalPrice)
//}
//
//func (this *PlayerHandler) GiftPackBuy(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgGiftPackBuyReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.Id == 0 {
// this.logger.Error("Parameter error, req.Id == 0")
// _ = player.TipNotice(proto.ErrPlatformError)
// return
// }
//
// var chargeTable = this.tables.Charge.Get(int(req.Id))
// if chargeTable == nil {
// this.logger.Error("Parameter or data tables error, Table 'Charge' was not found in extend table, Id: ", req.Id)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// var giftTable = this.tables.ChargeGift.Get(int(req.Id))
// if giftTable == nil {
// this.logger.Error("Parameter or data tables error, Table 'ChargeGift' was not found in extend table, Id: ", req.Id)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// if giftTable.PriceType < 0 {
// this.logger.Error("Parameter error, chargeGiftExtend.PriceType < 0")
// _ = player.TipNotice(proto.ErrPlatformError)
// return
// }
//
// var now = util.Unix()
// if now < giftTable.BeginTime || (giftTable.EndTime > 0 && now >= giftTable.EndTime) {
// this.logger.Errorf("ChargeGift is not buying time, beginTime: %d, endTime: %d, now: %d", giftTable.BeginTime, giftTable.EndTime, now)
// _ = player.TipNotice(proto.ErrStoreNotBuyingTime)
// return
// }
//
// if giftTable.BuyTimes > 0 {
// if player.GetCounterDaily(proto.CounterTypeCharge, uint32(giftTable.Id)) >= uint32(giftTable.BuyTimes) {
// this.logger.Errorf("Store buy times over, id: %d, count: %d", giftTable.Id, player.GetCounterDaily(proto.CounterTypeCharge, uint32(giftTable.Id)))
// _ = player.TipNotice(proto.ErrStoreBuyTimesOver)
// return
// }
// }
//
// if giftTable.PriceType > 0 && giftTable.Price > 0 {
// err = player.CheckMoney(proto.MoneyType(giftTable.PriceType), uint32(giftTable.Price))
// if err != nil {
// this.logger.Errorf("%s, moneyType: %d, moneyNum: %d", err.Error(), giftTable.PriceType, giftTable.Price)
// _ = player.TipNotice(err)
// return
// }
//
// player.ReduceMoney(proto.MoneyType(giftTable.PriceType), uint32(giftTable.Price), logic.LogTypeItemConsumeByGiftPackBuy)
// }
//
// var rewardList = player.OpenGiftPack(giftTable, logic.LogTypeItemObtainByGiftPack)
//
// player.AddCounter(proto.CounterTypeCharge, uint32(giftTable.Id), 1)
//
// _ = player.Send(proto.ModIdStore, proto.MsgIdGiftPackBuy, &proto.MsgGiftPackBuyAck{MsgRewardListAck: &proto.MsgRewardListAck{RewardList: rewardList}})
//}
//
//func (this *PlayerHandler) ChargeCreateOrder(player *logic.Player, msg *net.Message) {
// if !player.CheckRequestTime(logic.RequestTimeTypeChargeCreateOrder) {
// this.logger.Error("Repeated charge create order request")
// _ = player.TipNotice(proto.ErrRepeatedRequest)
// return
// }
//
// var req = new(proto.MsgChargeCreateOrderReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.ChargeId == 0 {
// this.logger.Error("Parameter error, req.ChargeId == 0")
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// if !proto.CheckPaymentType(req.PaymentType) {
// this.logger.Error("Parameter error, check payment type failed, req.PaymentType: ", req.PaymentType)
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// var chargeTable = this.tables.Charge.Get(int(req.ChargeId))
// if chargeTable == nil {
// this.logger.Error("Parameter or data error, Table 'Charge' was not found, req.ChargeId: ", req.ChargeId)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// switch proto.ChargeType(chargeTable.Type) {
// case proto.ChargeTypeGeneral:
// case proto.ChargeTypeMonthliCard:
// var monthlyCardTable = this.tables.MonthlyCard.Get(chargeTable.Id)
// if monthlyCardTable == nil {
// this.logger.Error("Data error, Table 'MonthlyCard' was not found, chargeId: ", chargeTable.Id)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// var monthlyCard = player.MonthlyCard[uint32(monthlyCardTable.Id)]
// if monthlyCard != nil {
// if monthlyCard.TotalDays+uint32(monthlyCardTable.EffectiveDay) > uint32(monthlyCardTable.MaxEffectiveDay) {
// this.logger.Errorf("The monthly card already max days, chargeId: %d, totalDays: %d", chargeTable.Id, monthlyCard.TotalDays)
// _ = player.TipNotice(proto.ErrMonthlyCardAlreadyMaxDays)
// return
// }
// }
// case proto.ChargeTypeGiftPack, proto.ChargeTypeStageGiftPack:
// var giftTable = this.tables.ChargeGift.Get(chargeTable.Id)
// if giftTable == nil {
// this.logger.Error("Parameter or data tables error, Table 'ChargeGift' was not found in extend table, Id: ", chargeTable.Id)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// if giftTable.PriceType >= 0 {
// this.logger.Error("Parameter error, chargeGiftExtend.PriceType >= 0")
// _ = player.TipNotice(proto.ErrPlatformError)
// return
// }
//
// var now = util.Unix()
// if now < giftTable.BeginTime || (giftTable.EndTime > 0 && now >= giftTable.EndTime) {
// this.logger.Errorf("ChargeGift is not buying time, beginTime: %d, endTime: %d, now: %d", giftTable.BeginTime, giftTable.EndTime, now)
// _ = player.TipNotice(proto.ErrStoreNotBuyingTime)
// return
// }
//
// if giftTable.BuyTimes > 0 {
// if player.GetCounterDaily(proto.CounterTypeCharge, uint32(giftTable.Id)) >= uint32(giftTable.BuyTimes) {
// this.logger.Error("Store buy times over, id: %d, count: %d", giftTable.Id, player.GetCounterDaily(proto.CounterTypeCharge, uint32(giftTable.Id)))
// _ = player.TipNotice(proto.ErrStoreBuyTimesOver)
// return
// }
// }
// case proto.ChargeTypeLimitGiftPack:
// var giftTable = this.tables.ChargeGift.Get(chargeTable.Id)
// if giftTable == nil {
// this.logger.Error("Parameter or data tables error, Table 'ChargeGift' was not found in extend table, Id: ", chargeTable.Id)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// if giftTable.PriceType >= 0 {
// this.logger.Error("Parameter error, chargeGiftExtend.PriceType >= 0")
// _ = player.TipNotice(proto.ErrPlatformError)
// return
// }
//
// var now = util.Unix()
// var giftPack = player.GiftPack[uint32(giftTable.Id)]
// if giftPack == nil || now < giftPack.GetTime || now >= giftPack.EndTime {
// _ = player.TipNotice(proto.ErrStoreNotBuyingTime)
// return
// }
//
// if giftTable.BuyTimes > 0 {
// if player.GetCounterDaily(proto.CounterTypeCharge, uint32(giftTable.Id)) >= uint32(giftTable.BuyTimes) {
// this.logger.Error("Store buy times over, id: %d, count: %d", giftTable.Id, player.GetCounterDaily(proto.CounterTypeCharge, uint32(giftTable.Id)))
// _ = player.TipNotice(proto.ErrStoreBuyTimesOver)
// return
// }
// }
// case proto.ChargeTypeBattlePass:
// var battlePass = player.BattlePass[player.Role.BattlePassSeason]
// if battlePass == nil {
// this.logger.Error("Not in battle pass season, battlePassSeason: ", player.Role.BattlePassSeason)
// _ = player.TipNotice(proto.ErrNotInBattlePassSeason)
// return
// }
//
// if battlePass.Advanced {
// this.logger.Error("The advanced battle pass already activited, battlePassSeason: ", player.Role.BattlePassSeason)
// _ = player.TipNotice(proto.ErrBattlePassAdvancedActivated)
// return
// }
// default:
// this.logger.Error("Data error, Unknown charge type, chargeTable.Type: ", chargeTable.Type)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// order, err := this.playerManager.NewChargeOrder(req.PaymentType, player, chargeTable)
// if err != nil {
// this.logger.Error("New charge order failed, ", err)
// _ = player.TipNotice(proto.ErrServerError)
// return
// }
//
// err = this.playerManager.SaveChargeOrder(order)
// if err != nil {
// this.logger.Error("Save charge order failed, ", err)
// _ = player.TipNotice(proto.ErrServerError)
// return
// }
//
// extend, err := json.Marshal(&proto.OrderExtend{Sid: this.server.AppId(), Uid: player.PlayerId})
// if err != nil {
// this.logger.Error("Marshal extend info failed, ", err)
// _ = player.TipNotice(proto.ErrServerError)
// return
// }
//
// var ack = &proto.MsgChargeCreateOrderAck{
// ChargeId: req.ChargeId,
// OrderId: order.Id,
// PaymentType: order.PaymentType,
// Quantity: order.Quantity,
// Price: order.Price,
// Sign: order.Sign,
// Extend: base64.StdEncoding.EncodeToString(extend),
// }
//
// switch proto.PaymentType(order.PaymentType) {
// //case proto.PaymentTypeQuickGameAndroid:
// //case proto.PaymentTypeQuickGameIOS:
// //case proto.PaymentTypeWechatVirtual2:
// case proto.PaymentTypeWechatIOSPayment1:
// ack.CallBackUrl = "https://mnmxw.game.qmhd87.com:9201/callback/charge/wechat/ios"
// }
//
// _ = player.Send(proto.ModIdStore, proto.MsgIdChargeCreateOrder, ack)
//}
//
//func (this *PlayerHandler) wechatPay(charged bool, player *logic.Player, order *logic.PlayerChargeOrder) (string, error) {
// reply, err := this.httpRpcClient.RandGet("center", "/wechat/accessToken/get", nil, new(proto.MsgGetWechatAccessTokenAck))
// if err != nil {
// this.logger.Error("Get access token error, ", err)
// return "", proto.ErrServerError
// }
//
// if reply.Status != errors.StatusSuccessful {
// this.logger.Error("Get access token failed, ", reply.Message)
// return "", proto.ErrServerError
// }
//
// var accessToken = reply.Data.(*proto.MsgGetWechatAccessTokenAck).AccessToken
// if accessToken == "" {
// this.logger.Error("Get access token failed, access token is empty")
// return "", proto.ErrServerError
// }
//
// var tries = 0
// var balanceAck *wechat.MsgGetBalanceAck
// for {
// tries += 1
// balanceAck, err = wechat.GetBalance(accessToken, player.Temp.WechatSessionKey, player.Username, util.IntegerToString(this.server.AppId()))
// if err != nil {
// this.logger.Error("Get wechat virtual payment balance error, ", err)
// return "", proto.ErrServerError
// }
//
// if balanceAck.ErrCode != 0 {
// this.logger.Error("Get wechat virtual payment balance failed, ", balanceAck.ErrMsg)
// return "", proto.ErrServerError
// }
//
// if balanceAck.Balance < int32(order.Price) {
// // 如果未充值过,返回余额不足, 如果充值过则可能是延时, 过10秒后再重新查询余额
// if !charged {
// this.logger.Debugf("Wechat virtual payment insufficient balance but not charged, return result 3, orderId: %s, price: %d, balance: %d", order.Id, order.Price, balanceAck.Balance)
// _ = player.Send(proto.ModIdStore, proto.MsgIdChargeWechatPay, &proto.MsgChargeWechatPayAck{OrderId: order.Id, Result: 3})
// return "", proto.ErrInsufficientBalance
// }
//
// if tries >= 6 {
// this.logger.Errorf("Wechat virtual payment insufficient balance, orderId: %s, price: %d, balance: %d", order.Id, order.Price, balanceAck.Balance)
// return "", proto.ErrServerError
// }
//
// this.logger.Debugf("Wechat virtual payment insufficient balance, will retry after 10 seconds, orderId: %s, price: %d, balance: %d", order.Id, order.Price, balanceAck.Balance)
// time.Sleep(time.Second * 10)
// continue
// }
// break
// }
//
// payAck, err := wechat.Pay(accessToken, player.Temp.WechatSessionKey, player.Username, util.IntegerToString(this.server.AppId()), order.Price, order.Id)
// if err != nil {
// this.logger.Error("Wechat virtual payment pay error, ", err)
// return "", proto.ErrServerError
// }
//
// if balanceAck.ErrCode != 0 {
// this.logger.Error("Wechat virtual payment pay failed, ", payAck.ErrMsg)
// return "", proto.ErrServerError
// }
// return payAck.BillNo, nil
//}
//
//func (this *PlayerHandler) ChargeWechatPay(player *logic.Player, msg *net.Message) {
// if proto.Channel(player.Channel) != proto.ChannelWechatMiniGame {
// this.logger.Error("The channel of player is not wechat, channel: ", player.Channel)
// _ = player.TipNotice(proto.ErrChannelError)
// return
// }
//
// var req = new(proto.MsgChargeWechatPayReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// order, err := this.playerManager.QueryChargeOrder(req.OrderId)
// if err != nil {
// this.logger.Error("Query charge order error, ", err)
// _ = player.TipNotice(proto.ErrServerError)
// return
// }
//
// if order == nil || order.PlayerId != player.PlayerId {
// this.logger.Error("Charge order not found, ", req.OrderId)
// _ = player.TipNotice(proto.ErrOrderNotFound)
// return
// }
//
// if proto.PaymentType(order.PaymentType) != proto.PaymentTypeWechatVirtual2 {
// this.logger.Error("Charge order payment error, ", order.PaymentType)
// _ = player.TipNotice(proto.ErrPaymentTypeError)
// return
// }
//
// if proto.OrderStatus(order.Status) != proto.OrderStatusNotPaid {
// this.logger.Error("Charge order status error, ", order.Status)
// _ = player.TipNotice(proto.ErrOrderStatusError)
// return
// }
//
// var chargeTable = this.tables.Charge.Get(int(order.ChargeId))
// if chargeTable == nil {
// this.logger.Error("Data error, Table 'Charge' was not found, chargeId: ", order.ChargeId)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// billNo, err := this.wechatPay(req.Charged, player, order)
// if err != nil {
// if errors.Is(err, proto.ErrInsufficientBalance) {
// return
// }
//
// this.logger.Error("wechat pay error, ", err)
// _ = player.TipNotice(proto.ErrServerError)
//
// err = this.playerManager.ChangeChargeOrder(order.Id, proto.OrderStatusFailed, billNo)
// if err != nil {
// this.logger.Error("Change charge order status error, ", err)
// return
// }
// return
// }
//
// err = this.playerManager.ChangeChargeOrder(order.Id, proto.OrderStatusHasPaid, billNo)
// if err != nil {
// this.logger.Error("Change charge order status error, ", err)
// _ = player.TipNotice(proto.ErrServerError)
// return
// }
//
// err = player.Charge(chargeTable, logic.LogTypeStoreRecharge)
// if err != nil {
// this.logger.Error("Player do charge failed, ", err)
// _ = player.TipNotice(err)
// return
// }
//
// err = this.playerManager.ChangeChargeOrder(order.Id, proto.OrderStatusHasOver, "")
// if err != nil {
// this.logger.Error("Charge charge order status error, ", err)
// _ = player.TipNotice(proto.ErrServerError)
// return
// }
//
// this.eventManager.ChargeGravityEvent(player, order, chargeTable, this.tables.Language.Get(chargeTable.ItemName))
//}
//
//func (this *PlayerHandler) BattlePassRewardGet(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgBattlePassRewardGetReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.Id == 0 {
// this.logger.Error("Parameter error, req.Id == 0")
// _ = player.TipNotice(proto.ErrPlatformError)
// return
// }
//
// var battlePassRewardTable = this.tables.BattlePassReward.Get(int(req.Id))
// if battlePassRewardTable == nil {
// this.logger.Error("Parameter or data error, Table 'BattlePassReward' was not found, req.Id: ", req.Id)
// _ = player.TipNotice(proto.ErrDataTablesError)
// return
// }
//
// var battlePass = player.BattlePass[player.Role.BattlePassSeason]
// if battlePass == nil {
// this.logger.Error("Not in battle pass season, player.Role.BattlePassSeason: ", player.Role.BattlePassSeason)
// _ = player.TipNotice(proto.ErrNotInBattlePassSeason)
// return
// }
//
// if uint32(battlePassRewardTable.Level) > battlePass.Level {
// this.logger.Errorf("Reward unable, battlePassRewardTable.Level: %d, battlePass.Level: %d", battlePassRewardTable.Level, battlePass.Level)
// _ = player.TipNotice(proto.ErrRewardUnable)
// return
// }
//
// var rewardIndex = battlePassRewardTable.Level - 1
// var battlePassReward = player.BattlePassReward[rewardIndex]
// if battlePassReward == nil {
// this.logger.Error("Reward unable, BattlePassReward not exists, rewardIndex: ", rewardIndex)
// _ = player.TipNotice(proto.ErrRewardUnable)
// return
// }
//
// if !req.Advanced {
// if proto.RewardStatus(battlePassReward.Ordinary) == proto.RewardStatusUnable {
// this.logger.Error("Reward unable, req.Id: ", req.Id)
// _ = player.TipNotice(proto.ErrRewardUnable)
// return
// }
//
// if proto.RewardStatus(battlePassReward.Ordinary) == proto.RewardStatusHasGot {
// this.logger.Error("Reward has got, req.Id: ", req.Id)
// _ = player.TipNotice(proto.ErrRewardHasGot)
// return
// }
//
// var rewardList []*proto.ItemPair
// for i := range battlePassRewardTable.OrdinaryItemList {
// _ = player.AddItem(uint32(battlePassRewardTable.OrdinaryItemList[i]), uint32(battlePassRewardTable.OrdinaryNumList[i]), logic.LogTypeItemObtainByBattlePassReward)
// rewardList = append(rewardList, &proto.ItemPair{ItemId: uint32(battlePassRewardTable.OrdinaryItemList[i]), ItemNum: uint32(battlePassRewardTable.OrdinaryNumList[i])})
// }
// battlePassReward.Ordinary = uint32(proto.RewardStatusHasGot)
//
// player.SaveArray("battle_pass_reward", rewardIndex, battlePassReward)
//
// _ = player.Send(proto.ModIdStore, proto.MsgIdBattlePassRewardGet, &proto.MsgBattlePassRewardGetAck{MsgRewardListAck: &proto.MsgRewardListAck{RewardList: rewardList}})
// } else {
// if !battlePass.Advanced {
// this.logger.Error("Advanced battle pass not activated, req.Id: ", req.Id)
// _ = player.TipNotice(proto.ErrNoBattlePassAdvanced)
// return
// }
//
// if proto.RewardStatus(battlePassReward.Advanced) == proto.RewardStatusUnable {
// this.logger.Error("Reward unable, req.Id: ", req.Id)
// _ = player.TipNotice(proto.ErrRewardUnable)
// return
// }
//
// if proto.RewardStatus(battlePassReward.Advanced) == proto.RewardStatusHasGot {
// this.logger.Error("Reward has got, req.Id: ", req.Id)
// _ = player.TipNotice(proto.ErrRewardHasGot)
// return
// }
//
// var rewardList []*proto.ItemPair
// for i := range battlePassRewardTable.PrivilegeItemList {
// _ = player.AddItem(uint32(battlePassRewardTable.PrivilegeItemList[i]), uint32(battlePassRewardTable.PrivilegeNumList[i]), logic.LogTypeItemObtainByBattlePassReward)
// rewardList = append(rewardList, &proto.ItemPair{ItemId: uint32(battlePassRewardTable.PrivilegeItemList[i]), ItemNum: uint32(battlePassRewardTable.PrivilegeNumList[i])})
// }
// battlePassReward.Advanced = uint32(proto.RewardStatusHasGot)
//
// player.SaveArray("battle_pass_reward", rewardIndex, battlePassReward)
//
// _ = player.Send(proto.ModIdStore, proto.MsgIdBattlePassRewardGet, &proto.MsgBattlePassRewardGetAck{MsgRewardListAck: &proto.MsgRewardListAck{RewardList: rewardList}})
// }
//
// _ = player.Send(proto.ModIdStore, proto.MsgIdBattlePassRewardStatusChange, &proto.MsgBattlePassRewardListAck{StatusList: []*proto.BattlePassRewardStatus{battlePassReward.BuildMsgBattlePassReward()}})
//}
//
//func (this *PlayerHandler) BattlePassRewardGetAll(player *logic.Player, msg *net.Message) {
// var battlePass = player.BattlePass[player.Role.BattlePassSeason]
// if battlePass == nil {
// this.logger.Error("Not in battle pass season, player.Role.BattlePassSeason: ", player.Role.BattlePassSeason)
// _ = player.TipNotice(proto.ErrNotInBattlePassSeason)
// return
// }
//
// var rewardList []*proto.ItemPair
// var statusList []*proto.BattlePassRewardStatus
// for rewardIndex, battlePassReward := range player.BattlePassReward {
// if proto.RewardStatus(battlePassReward.Ordinary) != proto.RewardStatusCanGet && (!battlePass.Advanced || proto.RewardStatus(battlePassReward.Advanced) != proto.RewardStatusCanGet) {
// continue
// }
//
// var battlePassRewardTable = this.tables.BattlePassReward.Get(int(battlePassReward.Id))
// if battlePassRewardTable == nil {
// continue
// }
//
// if uint32(battlePassRewardTable.Level) > battlePass.Level {
// break
// }
//
// for i := range battlePassRewardTable.OrdinaryItemList {
// _ = player.AddItem(uint32(battlePassRewardTable.OrdinaryItemList[i]), uint32(battlePassRewardTable.OrdinaryNumList[i]), logic.LogTypeItemObtainByBattlePassReward)
// rewardList = append(rewardList, &proto.ItemPair{ItemId: uint32(battlePassRewardTable.OrdinaryItemList[i]), ItemNum: uint32(battlePassRewardTable.OrdinaryNumList[i])})
// }
// battlePassReward.Ordinary = uint32(proto.RewardStatusHasGot)
//
// if battlePass.Advanced {
// for i := range battlePassRewardTable.PrivilegeItemList {
// _ = player.AddItem(uint32(battlePassRewardTable.PrivilegeItemList[i]), uint32(battlePassRewardTable.PrivilegeNumList[i]), logic.LogTypeItemObtainByBattlePassReward)
// rewardList = append(rewardList, &proto.ItemPair{ItemId: uint32(battlePassRewardTable.PrivilegeItemList[i]), ItemNum: uint32(battlePassRewardTable.PrivilegeNumList[i])})
// }
// battlePassReward.Advanced = uint32(proto.RewardStatusHasGot)
// }
//
// player.SaveArray("battle_pass_reward", rewardIndex, battlePassReward)
//
// statusList = append(statusList, battlePassReward.BuildMsgBattlePassReward())
// }
//
// if len(rewardList) > 0 {
// _ = player.Send(proto.ModIdStore, proto.MsgIdBattlePassRewardGetAll, &proto.MsgBattlePassRewardGetAck{MsgRewardListAck: &proto.MsgRewardListAck{RewardList: rewardList}})
// }
// if len(statusList) > 0 {
// _ = player.Send(proto.ModIdStore, proto.MsgIdBattlePassRewardStatusChange, &proto.MsgBattlePassRewardListAck{StatusList: statusList})
// }
//}
//
//func (this *PlayerHandler) CdkeyExchange(player *logic.Player, msg *net.Message) {
// var req = new(proto.MsgCdkeyExchangeReq)
// var err = msg.Read(req)
// if err != nil {
// this.logger.Error("Read message failed, ", err)
// _ = player.TipNotice(proto.ErrMessageError)
// return
// }
//
// if req.Key == "" {
// this.logger.Error("Parameter error, req.Key == \"\"")
// _ = player.TipNotice(proto.ErrParameterError)
// return
// }
//
// cdkey, ok := player.Cdkey[req.Key]
// if ok {
// this.logger.Error("Cdkey key has used, key: ", req.Key)
// _ = player.TipNotice(proto.ErrUsedCdkey)
// return
// }
//
// var query = url.Values{}
// query.Add("key", req.Key)
//
// var getAck = new(proto.MsgCdkeyGetAck)
// reply, err := this.httpRpcClient.RandGet("gate", "/cdkey/get", query, getAck)
// if err != nil {
// this.logger.Error("Get cdkey error, ", err)
// _ = player.TipNotice(proto.ErrServerError)
// return
// }
//
// if reply.Status != errors.StatusSuccessful {
// this.logger.Error("Get cdkey failed, ", err)
// _ = player.TipNotice(proto.ErrServerError)
// return
// }
//
// if getAck.Cdkey == nil {
// _ = player.TipNotice(proto.ErrInvalidCdkey)
// return
// }
//
// if getAck.Cdkey.Channel != 0 && player.Channel != getAck.Cdkey.Channel {
// _ = player.TipNotice(proto.ErrInvalidCdkey)
// return
// }
//
// cdkey = &logic.PlayerCdkey{
// Key: getAck.Cdkey.Key,
// ExchangeTime: util.Unix(),
// }
//
// player.Cdkey[cdkey.Key] = cdkey
// player.SaveModel(cdkey)
//
// var rewardList []*proto.ItemPair
// for i := range getAck.Cdkey.ItemId {
// _ = player.AddItem(getAck.Cdkey.ItemId[i], getAck.Cdkey.ItemNum[i], logic.LogTypeItemObtainByCdkey)
// rewardList = append(rewardList, &proto.ItemPair{ItemId: getAck.Cdkey.ItemId[i], ItemNum: getAck.Cdkey.ItemNum[i]})
// }
//
// _ = player.Send(proto.ModIdStore, proto.MsgIdCdkeyExchange, &proto.MsgCdkeyExchangeAck{MsgRewardListAck: &proto.MsgRewardListAck{RewardList: rewardList}})
//}