赛季通行证数据记录
This commit is contained in:
parent
2e34c33768
commit
8117f1af54
|
@ -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
|
||||||
|
}
|
|
@ -10,6 +10,10 @@ const (
|
||||||
BackPhoneLottery = "evt_phonelottery"
|
BackPhoneLottery = "evt_phonelottery"
|
||||||
BackReliefund = "log_relieffund"
|
BackReliefund = "log_relieffund"
|
||||||
BackSystemFreeGive = "evt_systemfreegive"
|
BackSystemFreeGive = "evt_systemfreegive"
|
||||||
|
BackSystemPermitCycle = "back_permitcycle"
|
||||||
|
BackSystemPermitRank = "back_permitrank"
|
||||||
|
BackSystemPermitExchange = "back_permitexchange"
|
||||||
|
BackSystemPermitJoin = "back_permitjoin"
|
||||||
)
|
)
|
||||||
|
|
||||||
// dbproxy 消息
|
// dbproxy 消息
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -318,7 +318,6 @@ message PlayerData {
|
||||||
int32 Age = 47; // 年龄
|
int32 Age = 47; // 年龄
|
||||||
repeated WeekInfo WeekCard = 48;//周卡
|
repeated WeekInfo WeekCard = 48;//周卡
|
||||||
repeated int32 RequestAddFriend = 49;//请求添加好友信息
|
repeated int32 RequestAddFriend = 49;//请求添加好友信息
|
||||||
int64 Long = 50; // 龙币
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//周卡数据
|
//周卡数据
|
||||||
|
@ -361,7 +360,6 @@ message SCPlayerDataUpdate {
|
||||||
map<int32,int64> RankScore = 12; // 排位积分
|
map<int32,int64> RankScore = 12; // 排位积分
|
||||||
int64 PhoneScore = 13; //手机积分
|
int64 PhoneScore = 13; //手机积分
|
||||||
int64 InviteScore = 14; // 邀请积分
|
int64 InviteScore = 14; // 邀请积分
|
||||||
int64 Long = 15; // 龙币
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//获取第三方玩家信息
|
//获取第三方玩家信息
|
||||||
|
|
|
@ -940,11 +940,15 @@ func CSPermitExchangeList(s *netlib.Session, packetid int, data interface{}, sid
|
||||||
|
|
||||||
times := int32(v.GetTimes()) - int32(GetPermitExchangeNum(p, v.GetId()))
|
times := int32(v.GetTimes()) - int32(GetPermitExchangeNum(p, v.GetId()))
|
||||||
|
|
||||||
|
exchangeTimes := v.GetTimes()
|
||||||
|
if exchangeTimes == 0 {
|
||||||
|
exchangeTimes = -1
|
||||||
|
}
|
||||||
pack.List = append(pack.List, &welfare.ShopInfo{
|
pack.List = append(pack.List, &welfare.ShopInfo{
|
||||||
Id: v.GetId(),
|
Id: v.GetId(),
|
||||||
Gain: gain,
|
Gain: gain,
|
||||||
Cost: cost,
|
Cost: cost,
|
||||||
ExchangeTimes: int32(v.GetTimes()),
|
ExchangeTimes: int32(exchangeTimes),
|
||||||
RemainTimes: times,
|
RemainTimes: times,
|
||||||
Level: v.GetLevel(),
|
Level: v.GetLevel(),
|
||||||
NeedPermit: v.GetIsPermit(),
|
NeedPermit: v.GetIsPermit(),
|
||||||
|
@ -1018,6 +1022,7 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int
|
||||||
// 检查背包是否足够
|
// 检查背包是否足够
|
||||||
var items []*Item
|
var items []*Item
|
||||||
var costItems []*Item
|
var costItems []*Item
|
||||||
|
var cost, gain []model.AwardItem
|
||||||
for _, v := range exchangeConfig.GetCost() {
|
for _, v := range exchangeConfig.GetCost() {
|
||||||
item := BagMgrSingleton.GetItem(p.SnId, v.GetItemId())
|
item := BagMgrSingleton.GetItem(p.SnId, v.GetItemId())
|
||||||
if item == nil || item.ItemNum < v.GetItemNum() {
|
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(),
|
ItemNum: v.GetItemNum(),
|
||||||
Name: info.Name,
|
Name: info.Name,
|
||||||
})
|
})
|
||||||
|
cost = append(cost, model.AwardItem{
|
||||||
|
Id: v.GetItemId(),
|
||||||
|
Num: v.GetItemNum(),
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for _, v := range exchangeConfig.GetGain() {
|
for _, v := range exchangeConfig.GetGain() {
|
||||||
|
@ -1041,6 +1050,10 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int
|
||||||
ItemNum: v.GetItemNum(),
|
ItemNum: v.GetItemNum(),
|
||||||
Name: info.Name,
|
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)
|
BagMgrSingleton.AddItems(p, items, 0, common.GainWayPermitExchangeGain, "system", "赛季通行证兑换获得", 0, 0, false)
|
||||||
p.WelfData.PermitExchange[msg.GetId()] = append(p.WelfData.PermitExchange[msg.GetId()], now.Unix())
|
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(),
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -149,6 +149,7 @@ func (this *BagMgr) GetItem(snid, itemId int32) *Item {
|
||||||
// noLog 是否不记录日志
|
// noLog 是否不记录日志
|
||||||
func (this *BagMgr) AddItems(p *Player, addItems []*Item, add int64, gainWay int32, operator, remark string,
|
func (this *BagMgr) AddItems(p *Player, addItems []*Item, add int64, gainWay int32, operator, remark string,
|
||||||
gameId, gameFreeId int64, noLog bool) (*BagInfo, bag.OpResultCode, bool) {
|
gameId, gameFreeId int64, noLog bool) (*BagInfo, bag.OpResultCode, bool) {
|
||||||
|
longItem := this.GetItem(p.SnId, common.ItemIDPermit)
|
||||||
var items []*Item
|
var items []*Item
|
||||||
for _, v := range addItems {
|
for _, v := range addItems {
|
||||||
if v == nil || v.ItemNum == 0 {
|
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,
|
ModId: p.Roles.ModId,
|
||||||
StartTs: startTs,
|
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 {
|
if v == common.ItemIDLong {
|
||||||
|
|
|
@ -8,6 +8,7 @@ import (
|
||||||
|
|
||||||
"go.etcd.io/etcd/client/v3"
|
"go.etcd.io/etcd/client/v3"
|
||||||
"mongo.games.com/goserver/core/basic"
|
"mongo.games.com/goserver/core/basic"
|
||||||
|
"mongo.games.com/goserver/core/logger"
|
||||||
"mongo.games.com/goserver/core/task"
|
"mongo.games.com/goserver/core/task"
|
||||||
|
|
||||||
"mongo.games.com/game/common"
|
"mongo.games.com/game/common"
|
||||||
|
@ -17,7 +18,6 @@ import (
|
||||||
loginproto "mongo.games.com/game/protocol/login"
|
loginproto "mongo.games.com/game/protocol/login"
|
||||||
playerproto "mongo.games.com/game/protocol/player"
|
playerproto "mongo.games.com/game/protocol/player"
|
||||||
"mongo.games.com/game/protocol/webapi"
|
"mongo.games.com/game/protocol/webapi"
|
||||||
"mongo.games.com/goserver/core/logger"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -308,6 +308,11 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Logger.Errorf("permit startts update error:%v", err)
|
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
|
return nil
|
||||||
}), nil).StartByExecutor("permit_start_ts")
|
}), nil).StartByExecutor("permit_start_ts")
|
||||||
|
@ -352,7 +357,15 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
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:
|
default:
|
||||||
logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey)
|
logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey)
|
||||||
|
|
|
@ -61,4 +61,8 @@ func init() {
|
||||||
LogChannelSingleton.RegisterLogCName(model.EvtInvite, &model.EvtInviteMsg{})
|
LogChannelSingleton.RegisterLogCName(model.EvtInvite, &model.EvtInviteMsg{})
|
||||||
LogChannelSingleton.RegisterLogCName(model.MQRankPlayerLevel, &model.PlayerLevelInfo{})
|
LogChannelSingleton.RegisterLogCName(model.MQRankPlayerLevel, &model.PlayerLevelInfo{})
|
||||||
LogChannelSingleton.RegisterLogCName(model.MQRankPlayerPermit, &model.PermitScore{})
|
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{})
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,14 +95,27 @@ func (r *PermitMgr) OnDayTimer() {
|
||||||
for r := rankInfo.GetStart(); r <= rankInfo.GetEnd(); r++ {
|
for r := rankInfo.GetStart(); r <= rankInfo.GetEnd(); r++ {
|
||||||
if rank == int(r) {
|
if rank == int(r) {
|
||||||
has = true
|
has = true
|
||||||
|
var awards []model.AwardItem
|
||||||
for _, item := range rankInfo.GetItemId() {
|
for _, item := range rankInfo.GetItemId() {
|
||||||
items = append(items, item.GetItemId())
|
items = append(items, item.GetItemId())
|
||||||
items = append(items, int32(item.GetItemNum()))
|
items = append(items, int32(item.GetItemNum()))
|
||||||
|
awards = append(awards, model.AwardItem{
|
||||||
|
Id: item.GetItemId(),
|
||||||
|
Num: item.GetItemNum(),
|
||||||
|
})
|
||||||
}
|
}
|
||||||
if len(items) == 0 {
|
if len(items) == 0 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
logger.Logger.Infof("PermitMgr rank award snid:%v rank:%v", player.SnId, rank)
|
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
|
var newMsg *model.Message
|
||||||
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
|
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{} {
|
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
|
||||||
model.UptStrKVGameData(common.PermitStartTsKey+platform, string(b))
|
model.UptStrKVGameData(common.PermitStartTsKey+platform, string(b))
|
||||||
return nil
|
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")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,6 @@ const (
|
||||||
UpdateField_RankScore
|
UpdateField_RankScore
|
||||||
UpdateField_PhoneScore
|
UpdateField_PhoneScore
|
||||||
UpdateField_InviteScore
|
UpdateField_InviteScore
|
||||||
UpdateField_Long
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -2563,14 +2562,6 @@ func (this *Player) SendDiffData() {
|
||||||
if len(pack.RankScore) == 0 {
|
if len(pack.RankScore) == 0 {
|
||||||
pack.RankScore = nil
|
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 {
|
if dirty {
|
||||||
FriendMgrSington.UpdateInfo(this.Platform, this.SnId)
|
FriendMgrSington.UpdateInfo(this.Platform, this.SnId)
|
||||||
|
@ -3012,10 +3003,6 @@ func (this *Player) SendPlayerInfo() {
|
||||||
if item := BagMgrSingleton.GetItem(this.SnId, VCard); item != nil {
|
if item := BagMgrSingleton.GetItem(this.SnId, VCard); item != nil {
|
||||||
scPlayerData.Data.VCoin = item.ItemNum //V卡
|
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)
|
scPlayerData.Data.RankScore = RankMgrSingleton.GetPlayerRankScore(this.SnId)
|
||||||
|
|
||||||
|
@ -3935,6 +3922,11 @@ func (this *Player) GetPayGoodsInfo() {
|
||||||
}
|
}
|
||||||
if info.PageId == ShopPagePermit {
|
if info.PageId == ShopPagePermit {
|
||||||
this.Permit = info.CreateTs.Local()
|
this.Permit = info.CreateTs.Local()
|
||||||
|
LogChannelSingleton.WriteLog(&model.BackendPermitJoin{
|
||||||
|
Platform: this.Platform,
|
||||||
|
StartTs: PlatformMgrSingleton.GetConfig(this.Platform).PermitStartTs,
|
||||||
|
SnId: this.SnId,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
switch info.Remark {
|
switch info.Remark {
|
||||||
case "BlindBox":
|
case "BlindBox":
|
||||||
|
|
|
@ -4126,6 +4126,11 @@ func init() {
|
||||||
}
|
}
|
||||||
if info.PageId == ShopPagePermit {
|
if info.PageId == ShopPagePermit {
|
||||||
player.Permit = info.CreateTs.Local()
|
player.Permit = info.CreateTs.Local()
|
||||||
|
LogChannelSingleton.WriteLog(&model.BackendPermitJoin{
|
||||||
|
Platform: player.Platform,
|
||||||
|
StartTs: PlatformMgrSingleton.GetConfig(player.Platform).PermitStartTs,
|
||||||
|
SnId: player.SnId,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
switch info.Remark {
|
switch info.Remark {
|
||||||
case "BlindBox":
|
case "BlindBox":
|
||||||
|
|
Loading…
Reference in New Issue