Compare commits

...

3 Commits

Author SHA1 Message Date
sk 1f8b7e1d70 打印rabbitmq日志 2024-07-03 14:47:07 +08:00
sk 8117f1af54 赛季通行证数据记录 2024-07-03 10:08:04 +08:00
sk 2e34c33768 赛季通行证账变记录 2024-07-02 20:51:10 +08:00
15 changed files with 1299 additions and 1204 deletions

View File

@ -287,8 +287,8 @@ const (
GainWaySign7Add = 91 // 累计签到进阶奖励获得
GainWayItemChange = 92 //背包内使用道具兑换话费
GainWayPetSkillLevelUp = 93 //宠物技能升级
GainWayPermitAward = 94 // 赛季通行证普通奖励
GainWayPermitAwardSupper = 95 // 赛季通行证典藏奖励
GainWayPermitAward = 94 // 赛季通行证奖励
GainWayItemPermitRank = 95 // 赛季通行证排行奖励
GainWayPermitExchangeCost = 96 // 赛季通行证兑换消耗
GainWayPermitExchangeGain = 97 // 赛季通行证兑换获得
GainWayItemTaskPermit = 98 // 赛季通行证任务

View File

@ -38,6 +38,7 @@ const (
MSGTYPE_ITEM //获取道具
MSGTYPE_RANK_REWARD //排行榜奖励
MSGTYPE_ITEM_CHANGE //背包使用兑换
MSGTYPE_RANK_PermitReward // 通行证排行奖励
)
const (

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

@ -110,8 +110,7 @@ const (
SystemFreeGive_GiveType_TaskAchievement // 成就任务
SystemFreeGive_GiveType_TaskEveryDay // 每日任务
SystemFreeGive_GiveType_TaskWeekActive // 周活跃奖励
SystemFreeGive_GiveType_PermitAward // 赛季通行证普通奖励
SystemFreeGive_GiveType_PermitAwardSupper // 赛季通行证典藏奖励
SystemFreeGive_GiveType_PermitAward // 赛季通行证奖励
SystemFreeGive_GiveType_TaskPermit // 赛季通行证任务
)
const (

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; //
}
//

2
public

@ -1 +1 @@
Subproject commit 63eadb869736b9d3e16c993cd99675c0e0de638c
Subproject commit 3f6ae474769f33050525f59aed42321b93a788cc

View File

@ -539,8 +539,8 @@ func SendPermitReward(p *Player, m map[int64]int64, tp int32) {
gain = common.GainWayPermitAward
giveType = model.SystemFreeGive_GiveType_PermitAward
case 2:
gain = common.GainWayPermitAwardSupper
giveType = model.SystemFreeGive_GiveType_PermitAwardSupper
gain = common.GainWayPermitAward
giveType = model.SystemFreeGive_GiveType_PermitAward
}
BagMgrSingleton.AddItems(p, items, 0, gain, "system", "通行证奖励", 0, 0, false)
for _, v := range items {
@ -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

@ -3,6 +3,8 @@ package main
import (
"reflect"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
)
@ -39,6 +41,7 @@ func (c *LogChannel) WriteLog(log interface{}) {
if cname == "" {
cname = "_null_"
}
logger.Logger.Tracef("==> RabbitMQ(%v): %#v", cname, log)
mq.Send(cname, log)
}
@ -61,4 +64,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,20 +95,33 @@ 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{} {
title := i18n.Tr("languages", "PermitAwardTitle")
content := i18n.Tr("languages", "PermitAward", []int{rank, rank, rank, rank})
newMsg = model.NewMessage("", 0, "", curPlayer.SnId, model.MSGTYPE_RANK_REWARD,
newMsg = model.NewMessage("", 0, "", curPlayer.SnId, model.MSGTYPE_RANK_PermitReward,
title, content, 0, 0, model.MSGSTATE_UNREAD, time.Now().Unix(), 0, "", items, platform, model.HallTienlen, nil)
err := model.InsertMessage(platform, newMsg)
if err != nil {
@ -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 (
@ -1216,6 +1215,10 @@ func (this *Player) GetMessageAttach(id string) {
remark = "排位赛段位奖励"
gainWay = common.GainWay_RankMatch
addItem()
case model.MSGTYPE_RANK_PermitReward:
remark = "通行证排行奖励"
gainWay = common.GainWayItemPermitRank
addItem()
}
if msg.Coin > 0 {
this.AddCoin(msg.Coin, 0, gainWay, msg.Id.Hex(), remark)
@ -2559,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)
@ -3008,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)
@ -3931,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":