赛季通行证数据记录

This commit is contained in:
sk 2024-07-03 10:08:04 +08:00
parent 2e34c33768
commit 8117f1af54
11 changed files with 1284 additions and 1196 deletions

38
model/permit.go Normal file
View File

@ -0,0 +1,38 @@
package model
// BackendPermitCycle 赛季周期
type BackendPermitCycle struct {
Platform string // 平台
StartTs, EndTs int64 // 活动开始时间
}
type AwardItem struct {
Id int32 // 道具id
Num int64
}
// BackendPermitRank 玩家排名奖励
type BackendPermitRank struct {
Platform string // 平台
StartTs int64 // 活动开始时间
SnId int32 // 玩家id
Rank int32 // 排名 1~100
Awards []AwardItem // 奖励
}
// BackendPermitExchange 玩家兑换
type BackendPermitExchange struct {
Platform string // 平台
StartTs int64 // 活动开始时间
SnId int32 // 玩家id
Cost []AwardItem // 消耗
Gain []AwardItem // 获得
Ts int64 // 时间戳
}
// BackendPermitJoin 玩家参与活动
type BackendPermitJoin struct {
Platform string // 平台
StartTs int64 // 活动开始时间
SnId int32 // 玩家id
}

View File

@ -2,14 +2,18 @@ package mq
// 后台消息
const (
BackBankrupt = "log_bankrupt"
BackClientLog = "log_clientlog_mysql"
BackGameRecord = "evt_gamerec"
BackLogin = "evt_login"
BackOnline = "evt_online"
BackPhoneLottery = "evt_phonelottery"
BackReliefund = "log_relieffund"
BackSystemFreeGive = "evt_systemfreegive"
BackBankrupt = "log_bankrupt"
BackClientLog = "log_clientlog_mysql"
BackGameRecord = "evt_gamerec"
BackLogin = "evt_login"
BackOnline = "evt_online"
BackPhoneLottery = "evt_phonelottery"
BackReliefund = "log_relieffund"
BackSystemFreeGive = "evt_systemfreegive"
BackSystemPermitCycle = "back_permitcycle"
BackSystemPermitRank = "back_permitrank"
BackSystemPermitExchange = "back_permitexchange"
BackSystemPermitJoin = "back_permitjoin"
)
// dbproxy 消息

File diff suppressed because it is too large Load Diff

View File

@ -318,7 +318,6 @@ message PlayerData {
int32 Age = 47; //
repeated WeekInfo WeekCard = 48;//
repeated int32 RequestAddFriend = 49;//
int64 Long = 50; //
}
//
@ -361,7 +360,6 @@ message SCPlayerDataUpdate {
map<int32,int64> RankScore = 12; //
int64 PhoneScore = 13; //
int64 InviteScore = 14; //
int64 Long = 15; //
}
//

View File

@ -940,11 +940,15 @@ func CSPermitExchangeList(s *netlib.Session, packetid int, data interface{}, sid
times := int32(v.GetTimes()) - int32(GetPermitExchangeNum(p, v.GetId()))
exchangeTimes := v.GetTimes()
if exchangeTimes == 0 {
exchangeTimes = -1
}
pack.List = append(pack.List, &welfare.ShopInfo{
Id: v.GetId(),
Gain: gain,
Cost: cost,
ExchangeTimes: int32(v.GetTimes()),
ExchangeTimes: int32(exchangeTimes),
RemainTimes: times,
Level: v.GetLevel(),
NeedPermit: v.GetIsPermit(),
@ -1018,6 +1022,7 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int
// 检查背包是否足够
var items []*Item
var costItems []*Item
var cost, gain []model.AwardItem
for _, v := range exchangeConfig.GetCost() {
item := BagMgrSingleton.GetItem(p.SnId, v.GetItemId())
if item == nil || item.ItemNum < v.GetItemNum() {
@ -1031,6 +1036,10 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int
ItemNum: v.GetItemNum(),
Name: info.Name,
})
cost = append(cost, model.AwardItem{
Id: v.GetItemId(),
Num: v.GetItemNum(),
})
}
}
for _, v := range exchangeConfig.GetGain() {
@ -1041,6 +1050,10 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int
ItemNum: v.GetItemNum(),
Name: info.Name,
})
gain = append(gain, model.AwardItem{
Id: v.GetItemId(),
Num: v.GetItemNum(),
})
}
}
// 扣除背包物品
@ -1050,6 +1063,15 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int
// 增加背包物品
BagMgrSingleton.AddItems(p, items, 0, common.GainWayPermitExchangeGain, "system", "赛季通行证兑换获得", 0, 0, false)
p.WelfData.PermitExchange[msg.GetId()] = append(p.WelfData.PermitExchange[msg.GetId()], now.Unix())
// 兑换记录
LogChannelSingleton.WriteLog(&model.BackendPermitExchange{
Platform: p.Platform,
StartTs: startTs,
SnId: p.SnId,
Cost: cost,
Gain: gain,
Ts: now.Unix(),
})
}
}

View File

@ -149,6 +149,7 @@ func (this *BagMgr) GetItem(snid, itemId int32) *Item {
// noLog 是否不记录日志
func (this *BagMgr) AddItems(p *Player, addItems []*Item, add int64, gainWay int32, operator, remark string,
gameId, gameFreeId int64, noLog bool) (*BagInfo, bag.OpResultCode, bool) {
longItem := this.GetItem(p.SnId, common.ItemIDPermit)
var items []*Item
for _, v := range addItems {
if v == nil || v.ItemNum == 0 {
@ -312,6 +313,14 @@ func (this *BagMgr) AddItems(p *Player, addItems []*Item, add int64, gainWay int
ModId: p.Roles.ModId,
StartTs: startTs,
})
// 参与赛季通行证活动
if longItem == nil || longItem.ItemNum == 0 {
LogChannelSingleton.WriteLog(&model.BackendPermitJoin{
Platform: p.Platform,
StartTs: PlatformMgrSingleton.GetConfig(p.Platform).PermitStartTs,
SnId: p.SnId,
})
}
}
}
if v == common.ItemIDLong {

View File

@ -8,6 +8,7 @@ import (
"go.etcd.io/etcd/client/v3"
"mongo.games.com/goserver/core/basic"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/core/task"
"mongo.games.com/game/common"
@ -17,7 +18,6 @@ import (
loginproto "mongo.games.com/game/protocol/login"
playerproto "mongo.games.com/game/protocol/player"
"mongo.games.com/game/protocol/webapi"
"mongo.games.com/goserver/core/logger"
)
func init() {
@ -308,6 +308,11 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e
if err != nil {
logger.Logger.Errorf("permit startts update error:%v", err)
}
LogChannelSingleton.WriteLog(&model.BackendPermitCycle{
Platform: config.Platform,
StartTs: common.GetDayStartTs(1719646575),
EndTs: common.GetDayStartTs(1719646575) + int64(actConfig.GetDays()*24*3600),
})
}
return nil
}), nil).StartByExecutor("permit_start_ts")
@ -352,7 +357,15 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e
}
}
return nil
}), nil).StartByExecutor("permit_start_ts")
}), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) {
if st.StartTs > 0 {
LogChannelSingleton.WriteLog(&model.BackendPermitCycle{
Platform: config.Platform,
StartTs: st.StartTs,
EndTs: st.EndTs,
})
}
})).StartByExecutor("permit_start_ts")
default:
logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey)

View File

@ -61,4 +61,8 @@ func init() {
LogChannelSingleton.RegisterLogCName(model.EvtInvite, &model.EvtInviteMsg{})
LogChannelSingleton.RegisterLogCName(model.MQRankPlayerLevel, &model.PlayerLevelInfo{})
LogChannelSingleton.RegisterLogCName(model.MQRankPlayerPermit, &model.PermitScore{})
LogChannelSingleton.RegisterLogCName(mq.BackSystemPermitCycle, &model.BackendPermitCycle{})
LogChannelSingleton.RegisterLogCName(mq.BackSystemPermitRank, &model.BackendPermitRank{})
LogChannelSingleton.RegisterLogCName(mq.BackSystemPermitExchange, &model.BackendPermitExchange{})
LogChannelSingleton.RegisterLogCName(mq.BackSystemPermitJoin, &model.BackendPermitJoin{})
}

View File

@ -95,14 +95,27 @@ func (r *PermitMgr) OnDayTimer() {
for r := rankInfo.GetStart(); r <= rankInfo.GetEnd(); r++ {
if rank == int(r) {
has = true
var awards []model.AwardItem
for _, item := range rankInfo.GetItemId() {
items = append(items, item.GetItemId())
items = append(items, int32(item.GetItemNum()))
awards = append(awards, model.AwardItem{
Id: item.GetItemId(),
Num: item.GetItemNum(),
})
}
if len(items) == 0 {
break
}
logger.Logger.Infof("PermitMgr rank award snid:%v rank:%v", player.SnId, rank)
// 领奖记录
LogChannelSingleton.WriteLog(&model.BackendPermitRank{
Platform: platform,
StartTs: startTs,
SnId: curPlayer.SnId,
Rank: int32(rank),
Awards: awards,
})
// 发邮件
var newMsg *model.Message
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
@ -149,7 +162,15 @@ func (r *PermitMgr) OnDayTimer() {
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
model.UptStrKVGameData(common.PermitStartTsKey+platform, string(b))
return nil
}), nil).StartByExecutor("permit_start_ts")
}), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) {
if se.StartTs > 0 {
LogChannelSingleton.WriteLog(&model.BackendPermitCycle{
Platform: platform,
StartTs: se.StartTs,
EndTs: se.EndTs,
})
}
})).StartByExecutor("permit_start_ts")
}
}
}

View File

@ -60,7 +60,6 @@ const (
UpdateField_RankScore
UpdateField_PhoneScore
UpdateField_InviteScore
UpdateField_Long
)
const (
@ -2563,14 +2562,6 @@ func (this *Player) SendDiffData() {
if len(pack.RankScore) == 0 {
pack.RankScore = nil
}
// 龙币
itemLong := BagMgrSingleton.GetItem(this.SnId, common.ItemIDLong)
if itemLong != nil && this.diffData.Long != itemLong.ItemNum {
dirty = true
pack.Long = proto.Int64(itemLong.ItemNum)
this.diffData.Long = itemLong.ItemNum
pack.UpdateField += UpdateField_Long
}
if dirty {
FriendMgrSington.UpdateInfo(this.Platform, this.SnId)
@ -3012,10 +3003,6 @@ func (this *Player) SendPlayerInfo() {
if item := BagMgrSingleton.GetItem(this.SnId, VCard); item != nil {
scPlayerData.Data.VCoin = item.ItemNum //V卡
}
// 龙币
if item := BagMgrSingleton.GetItem(this.SnId, common.ItemIDLong); item != nil {
scPlayerData.Data.Long = item.ItemNum
}
// 排位积分
scPlayerData.Data.RankScore = RankMgrSingleton.GetPlayerRankScore(this.SnId)
@ -3935,6 +3922,11 @@ func (this *Player) GetPayGoodsInfo() {
}
if info.PageId == ShopPagePermit {
this.Permit = info.CreateTs.Local()
LogChannelSingleton.WriteLog(&model.BackendPermitJoin{
Platform: this.Platform,
StartTs: PlatformMgrSingleton.GetConfig(this.Platform).PermitStartTs,
SnId: this.SnId,
})
}
switch info.Remark {
case "BlindBox":

View File

@ -4126,6 +4126,11 @@ func init() {
}
if info.PageId == ShopPagePermit {
player.Permit = info.CreateTs.Local()
LogChannelSingleton.WriteLog(&model.BackendPermitJoin{
Platform: player.Platform,
StartTs: PlatformMgrSingleton.GetConfig(player.Platform).PermitStartTs,
SnId: player.SnId,
})
}
switch info.Remark {
case "BlindBox":