From c3dc4be0f106ceebfb4a3bf734020cb15fc44d68 Mon Sep 17 00:00:00 2001 From: 王家文 Date: Mon, 22 Apr 2024 15:22:20 +0800 Subject: [PATCH] feat✨:房间排行活动:操作日志记录到数据库 --- routers/router.go | 2 +- service-common/svconst/mysql.go | 8 +++++--- service/cardholder/dto-record.go | 68 ++++++++++++++++++++++++++++++++++---------------------------------- service/cardholder/logic.go | 14 +++++++------- service/init.go | 8 +++++--- service/roomrank/dto-record.go | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ service/roomrank/handle.go | 16 +++++++++++++++- service/roomrank/logic.go | 6 +++++- 8 files changed, 147 insertions(+), 50 deletions(-) create mode 100644 service/roomrank/dto-record.go diff --git a/routers/router.go b/routers/router.go index 8ddab8f..30481aa 100644 --- a/routers/router.go +++ b/routers/router.go @@ -29,7 +29,7 @@ func init() { beego.Router(prefix+"/roomrank/info", &controllers.RoomRankController{}, "post:Info") // 领取上期结算奖励 beego.Router(prefix+"/roomrank/getsettleaward", &controllers.RoomRankController{}, "post:GetSettleAward") - // 房间排行增加积分 + // 增加积分 beego.Router(prefix+"/roomrank/addscore", &controllers.RoomRankController{}, "post:AddScore") beego.Router(prefix+"/demo", &controllers.DemoController{}, "post:Demo") diff --git a/service-common/svconst/mysql.go b/service-common/svconst/mysql.go index ffaf4bc..27201a4 100644 --- a/service-common/svconst/mysql.go +++ b/service-common/svconst/mysql.go @@ -17,7 +17,9 @@ const ( MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDALBUM = "s_cardholder_record_rewardalbum" // 开卡包活动日志领取卡组奖励 MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDROUND = "s_cardholder_record_rewardround" // 开卡包活动日志领取轮次奖励 - MYSQL_TABLE_S_ROOMRANK_CONFIG = "s_beach_rank_activity" // 房间排行活动配置 - MYSQL_TABLE_S_ROOMRANK_PLAYER = "s_roomrank_player" // 房间排行玩家数据 - MYSQL_TABLE_S_ROOMRANK_ROOM = "s_roomrank_room" // 房间排行房间数据 + MYSQL_TABLE_S_ROOMRANK_CONFIG = "s_beach_rank_activity" // 房间排行活动配置 + MYSQL_TABLE_S_ROOMRANK_PLAYER = "s_roomrank_player" // 房间排行玩家数据 + MYSQL_TABLE_S_ROOMRANK_ROOM = "s_roomrank_room" // 房间排行房间数据 + MYSQL_TABLE_S_ROOMRANK_RECORD_SETTLEAWARD = "s_roomrank_record_getsettleaward" // 房间排行领取上期结算奖励 + MYSQL_TABLE_S_ROOMRANK_RECORD_ADDSCORE = "s_roomrank_record_addscore" // 房间排行增加积分 ) diff --git a/service/cardholder/dto-record.go b/service/cardholder/dto-record.go index e21d792..9ae2651 100644 --- a/service/cardholder/dto-record.go +++ b/service/cardholder/dto-record.go @@ -7,8 +7,8 @@ import ( "fmt" ) -// RecordCardHolderBase 开卡包活动日志公共 -type RecordCardHolderBase struct { +// RecordBase 日志公共 +type RecordBase struct { Id int64 `gorm:"primaryKey;comment:日志ID"` Uid int64 `gorm:"comment:玩家唯一ID"` SequenceId string `gorm:"type:varchar(255);comment:用户序列组ID"` @@ -19,9 +19,9 @@ type RecordCardHolderBase struct { UpdateTime int64 `gorm:"comment:修改时间戳"` } -func NewRecordCardHolderBase(uid int64, sequenceId string, cohort string, activityId int64, round int) RecordCardHolderBase { +func NewRecordBase(uid int64, sequenceId string, cohort string, activityId int64, round int) RecordBase { secNow := lxtime.NowUninx() - return RecordCardHolderBase{ + return RecordBase{ CreateTime: secNow, UpdateTime: secNow, Uid: uid, @@ -32,15 +32,15 @@ func NewRecordCardHolderBase(uid int64, sequenceId string, cohort string, activi } } -// RecordCardHolderOpen 开卡包活动日志开卡包 -type RecordCardHolderOpen struct { - RecordCardHolderBase +// RecordOpen 打开卡包 +type RecordOpen struct { + RecordBase OpenMode int `gorm:"comment:开包类型0客户端驱动1星星商店购买2剩余星星兑换"` CardholderId int `gorm:"comment:卡包ID"` CardList string `gorm:"type:varchar(255);comment:开卡内容"` } -func (d *RecordCardHolderOpen) MysqlInfo(suffix string) *svmysql.MysqlInfo { +func (d *RecordOpen) MysqlInfo(suffix string) *svmysql.MysqlInfo { tableName := svconst.MYSQL_TABLE_S_CARDHOLDER_RECORD_OPEN return &svmysql.MysqlInfo{ DbMysql: svconst.DbCommon, @@ -48,24 +48,24 @@ func (d *RecordCardHolderOpen) MysqlInfo(suffix string) *svmysql.MysqlInfo { } } -func NewRecordCardHolderOpen(recordBase RecordCardHolderBase, - openMode int, cardholderId int, cardList string) *RecordCardHolderOpen { - return &RecordCardHolderOpen{ - RecordCardHolderBase: recordBase, - OpenMode: openMode, - CardholderId: cardholderId, - CardList: cardList, +func NewRecordOpen(recordBase RecordBase, + openMode int, cardholderId int, cardList string) *RecordOpen { + return &RecordOpen{ + RecordBase: recordBase, + OpenMode: openMode, + CardholderId: cardholderId, + CardList: cardList, } } -// RecordCardHolderRewardAlbum 开卡包活动日志领取卡组奖励 -type RecordCardHolderRewardAlbum struct { - RecordCardHolderBase +// RecordRewardAlbum 领取卡组奖励 +type RecordRewardAlbum struct { + RecordBase AlbumId int `gorm:"comment:卡组ID"` Award string `gorm:"type:varchar(255);comment:奖励内容"` } -func (d *RecordCardHolderRewardAlbum) MysqlInfo(suffix string) *svmysql.MysqlInfo { +func (d *RecordRewardAlbum) MysqlInfo(suffix string) *svmysql.MysqlInfo { tableName := svconst.MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDALBUM return &svmysql.MysqlInfo{ DbMysql: svconst.DbCommon, @@ -73,22 +73,22 @@ func (d *RecordCardHolderRewardAlbum) MysqlInfo(suffix string) *svmysql.MysqlInf } } -func NewRecordCardHolderRewardAlbum(recordBase RecordCardHolderBase, - albumId int, award string) *RecordCardHolderRewardAlbum { - return &RecordCardHolderRewardAlbum{ - RecordCardHolderBase: recordBase, - AlbumId: albumId, - Award: award, +func NewRecordRewardAlbum(recordBase RecordBase, + albumId int, award string) *RecordRewardAlbum { + return &RecordRewardAlbum{ + RecordBase: recordBase, + AlbumId: albumId, + Award: award, } } -// RecordCardHolderRewardRound 开卡包活动日志领取轮次奖励 -type RecordCardHolderRewardRound struct { - RecordCardHolderBase +// RecordRewardRound 领取轮次奖励 +type RecordRewardRound struct { + RecordBase Award string `gorm:"type:varchar(255);comment:奖励内容"` } -func (d *RecordCardHolderRewardRound) MysqlInfo(suffix string) *svmysql.MysqlInfo { +func (d *RecordRewardRound) MysqlInfo(suffix string) *svmysql.MysqlInfo { tableName := svconst.MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDROUND return &svmysql.MysqlInfo{ DbMysql: svconst.DbCommon, @@ -96,10 +96,10 @@ func (d *RecordCardHolderRewardRound) MysqlInfo(suffix string) *svmysql.MysqlInf } } -func NewRecordCardHolderRewardRound(recordBase RecordCardHolderBase, - award string) *RecordCardHolderRewardRound { - return &RecordCardHolderRewardRound{ - RecordCardHolderBase: recordBase, - Award: award, +func NewRecordRewardRound(recordBase RecordBase, + award string) *RecordRewardRound { + return &RecordRewardRound{ + RecordBase: recordBase, + Award: award, } } diff --git a/service/cardholder/logic.go b/service/cardholder/logic.go index b2e77b1..b46485b 100644 --- a/service/cardholder/logic.go +++ b/service/cardholder/logic.go @@ -40,7 +40,7 @@ func CheckGameData(d *Player, conf *confcardholder.ActivityConfig) string { // GetUserSequenceIdAndCohort 获取 用户序列组ID(sequenceId) 用户分组(cohort) func GetUserSequenceIdAndCohort(uid int64) (sequenceId, cohort string) { - // todo 这里后续要对接 + // todo 这里后续要对接 用户序列组ID(sequenceId) 用户分组(cohort) sequenceId = "1" cohort = "1" return @@ -195,8 +195,8 @@ func DoOpen(gameId string, } // 记录开卡包日志 { - recordBase := NewRecordCardHolderBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) - _ = svmysql.Create(NewRecordCardHolderOpen(recordBase, + recordBase := NewRecordBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) + _ = svmysql.Create(NewRecordOpen(recordBase, openMode, utstring.StringToInt(confCardholder.Id), zjson.Str(newCards)), gameId) } @@ -244,8 +244,8 @@ func DoOpenCheckAward(gameId string, awardAlbum[albumId] = award { // 记录日志 - recordBase := NewRecordCardHolderBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) - _ = svmysql.Create(NewRecordCardHolderRewardAlbum(recordBase, + recordBase := NewRecordBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) + _ = svmysql.Create(NewRecordRewardAlbum(recordBase, albumId, award), gameId) } @@ -256,8 +256,8 @@ func DoOpenCheckAward(gameId string, awardRound = config.Awards[utstring.IntToString(player.Details.Round)] // 记录日志 - recordBase := NewRecordCardHolderBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) - _ = svmysql.Create(NewRecordCardHolderRewardRound(recordBase, + recordBase := NewRecordBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) + _ = svmysql.Create(NewRecordRewardRound(recordBase, awardRound), gameId) diff --git a/service/init.go b/service/init.go index c396e24..b61bb60 100644 --- a/service/init.go +++ b/service/init.go @@ -13,13 +13,15 @@ func Init() { // 卡牌卡包 for _, gameId := range svconst.GameListCardHolder { svmysql.InitTable(new(cardholder.Player), gameId, true) - svmysql.InitTable(new(cardholder.RecordCardHolderOpen), gameId, true) - svmysql.InitTable(new(cardholder.RecordCardHolderRewardAlbum), gameId, true) - svmysql.InitTable(new(cardholder.RecordCardHolderRewardRound), gameId, true) + svmysql.InitTable(new(cardholder.RecordOpen), gameId, true) + svmysql.InitTable(new(cardholder.RecordRewardAlbum), gameId, true) + svmysql.InitTable(new(cardholder.RecordRewardRound), gameId, true) } // 房间排行 for _, gameId := range svconst.GameListRoomRank { svmysql.InitTable(new(roomrank.Player), gameId, true) + svmysql.InitTable(new(roomrank.RecordGetSettleAward), gameId, true) + svmysql.InitTable(new(roomrank.RecordAddScore), gameId, true) } } diff --git a/service/roomrank/dto-record.go b/service/roomrank/dto-record.go new file mode 100644 index 0000000..b9ed9f7 --- /dev/null +++ b/service/roomrank/dto-record.go @@ -0,0 +1,75 @@ +package roomrank + +import ( + "apigame/service-common/svconst" + "apigame/service-common/svmysql" + "apigame/util/util-lx/lxtime" + "fmt" +) + +// RecordBase 日志公共 +type RecordBase struct { + Id int64 `gorm:"primaryKey;comment:日志ID"` + Uid int64 `gorm:"comment:玩家唯一ID"` + ActivityId int64 `gorm:"comment:当前活动ID"` + CreateTime int64 `gorm:"comment:创建时间戳"` + UpdateTime int64 `gorm:"comment:修改时间戳"` +} + +func NewRecordBase(uid int64, activityId int64) RecordBase { + secNow := lxtime.NowUninx() + return RecordBase{ + CreateTime: secNow, + UpdateTime: secNow, + Uid: uid, + ActivityId: activityId, + } +} + +// RecordGetSettleAward 领取上期结算奖励 +type RecordGetSettleAward struct { + RecordBase + Award string `gorm:"type:varchar(255);comment:奖励内容"` +} + +func (d *RecordGetSettleAward) MysqlInfo(suffix string) *svmysql.MysqlInfo { + tableName := svconst.MYSQL_TABLE_S_ROOMRANK_RECORD_SETTLEAWARD + return &svmysql.MysqlInfo{ + DbMysql: svconst.DbCommon, + TableName: fmt.Sprintf("%s_%s", tableName, suffix), + } +} + +func NewRecordGetSettleAward(recordBase RecordBase, + award string) *RecordGetSettleAward { + return &RecordGetSettleAward{ + RecordBase: recordBase, + Award: award, + } +} + +// RecordAddScore 房间排行增加积分 +type RecordAddScore struct { + RecordBase + AddScore int64 `gorm:"comment:增加积分"` + OldScore int64 `gorm:"comment:旧积分"` + NewScore int64 `gorm:"comment:新积分"` +} + +func (d *RecordAddScore) MysqlInfo(suffix string) *svmysql.MysqlInfo { + tableName := svconst.MYSQL_TABLE_S_ROOMRANK_RECORD_ADDSCORE + return &svmysql.MysqlInfo{ + DbMysql: svconst.DbCommon, + TableName: fmt.Sprintf("%s_%s", tableName, suffix), + } +} + +func NewRecordAddScore(recordBase RecordBase, + addScore, oldScore, newScore int64) *RecordAddScore { + return &RecordAddScore{ + RecordBase: recordBase, + AddScore: addScore, + OldScore: oldScore, + NewScore: newScore, + } +} diff --git a/service/roomrank/handle.go b/service/roomrank/handle.go index cbc65d8..a23751d 100644 --- a/service/roomrank/handle.go +++ b/service/roomrank/handle.go @@ -3,6 +3,7 @@ package roomrank import ( "apigame/configs/confroomrank" "apigame/models" + "apigame/service-common/svmysql" "apigame/service/code-msg" "fmt" ) @@ -112,6 +113,7 @@ func HandleGetSettleAward(req *models.ReqRoomRankGetSettleAward) (code string, r code = code_msg.RECODE_MERGE_ROOMRANK_NOTHASSETTLE_ERROR return } + oldActivityId := player.ActivityId // 领取奖励 rsp.AwardText = player.SettleAward @@ -119,6 +121,12 @@ func HandleGetSettleAward(req *models.ReqRoomRankGetSettleAward) (code string, r player.SettleAward = "" SavePlayer(gameId, player) + // 记录日志 + recordBase := NewRecordBase(player.Uid, oldActivityId) + _ = svmysql.Create(NewRecordGetSettleAward(recordBase, + rsp.AwardText), + gameId) + return } @@ -164,7 +172,7 @@ func HandleAddScore(req *models.ReqRoomRankAddScore) (code string, rsp models.Rs room, hasRoom := TryGetRoom(gameId, player, config, playerLevel) // 房间排行增加积分 - ChangePlayerScore(room, player, req.AddScore) + oldScore, newScore := ChangePlayerScore(room, player, req.AddScore) if hasRoom { TryReSort(room, config) @@ -175,5 +183,11 @@ func HandleAddScore(req *models.ReqRoomRankAddScore) (code string, rsp models.Rs rsp.RoomRankInfo = GetInfoFromRoom(player, room) + // 记录日志 + recordBase := NewRecordBase(player.Uid, config.Id) + _ = svmysql.Create(NewRecordAddScore(recordBase, + req.AddScore, oldScore, newScore), + gameId) + return } diff --git a/service/roomrank/logic.go b/service/roomrank/logic.go index 1f08dbb..ecb9878 100644 --- a/service/roomrank/logic.go +++ b/service/roomrank/logic.go @@ -55,11 +55,15 @@ func TrySettle(gameId string, player *Player, config *confroomrank.ActivityConfi } // ChangePlayerScore 房间排行增加积分 -func ChangePlayerScore(room *Room, player *Player, addScore int64) { +func ChangePlayerScore(room *Room, player *Player, addScore int64) (oldScore, newScore int64) { for i := 0; i < len(room.Details.Players); i++ { p := room.Details.Players[i] if player.Uid == p.Uid { + oldScore = p.Score p.Score += addScore + newScore = p.Score + return } } + return } -- libgit2 0.21.0